From 59663653a4e367de7dc616fb7e4d13d54f030ac3 Mon Sep 17 00:00:00 2001 From: iisaev Date: Thu, 29 Oct 2026 09:26:07 +0100 Subject: [PATCH] Add mod documentation in seven languages --- docs/assets/elder-choice.jpg | Bin 0 -> 56650 bytes docs/assets/journal-after.jpg | Bin 0 -> 23199 bytes docs/assets/journal-before.jpg | Bin 0 -> 10482 bytes docs/en.md | 81 +++++++++++++++++++++++++++++++++ docs/es.md | 81 +++++++++++++++++++++++++++++++++ docs/ja.md | 81 +++++++++++++++++++++++++++++++++ docs/ko.md | 81 +++++++++++++++++++++++++++++++++ docs/ru.md | 81 +++++++++++++++++++++++++++++++++ docs/vi.md | 81 +++++++++++++++++++++++++++++++++ docs/zh.md | 81 +++++++++++++++++++++++++++++++++ locale/en.properties | 2 +- locale/es.properties | 2 +- locale/ja.properties | 2 +- locale/ko.properties | 2 +- locale/ru.properties | 2 +- locale/vi.properties | 2 +- locale/zh.properties | 2 +- manifest.json | 2 +- 18 files changed, 575 insertions(+), 8 deletions(-) create mode 100644 docs/assets/elder-choice.jpg create mode 100644 docs/assets/journal-after.jpg create mode 100644 docs/assets/journal-before.jpg create mode 100644 docs/en.md create mode 100644 docs/es.md create mode 100644 docs/ja.md create mode 100644 docs/ko.md create mode 100644 docs/ru.md create mode 100644 docs/vi.md create mode 100644 docs/zh.md diff --git a/docs/assets/elder-choice.jpg b/docs/assets/elder-choice.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0eaf911cff69210687057ba64e9e3c04e31578bb GIT binary patch literal 56650 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 Yiv{*xpLDoxocp_SIRDS;rT;qi59enrxc~qF literal 0 HcmV?d00001 diff --git a/docs/assets/journal-after.jpg b/docs/assets/journal-after.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45b1b3c6a415718f919f5f4be282e6a57814e37f GIT binary patch literal 23199 zcmeIabyQr-wl~_iy9W>M!6ir_!Gmki1Of!N;L-^M2<{Tx-QC>@ZlUo8LVy6>1Zk{! zz3-8|$2Y!fXWV<<8Sm}IsP#wHVs_24X}?(y-yXIAgenTk3IHS|000T`2Y6ToJO`kn zARgr3-l(XkXz1AJ=xAu@xR_WN*!Z{v`1rVZcmzb`Bm{(HM0j{4k4VTUD55FtGb0_YL_ zL__+w2k_Si2^j^^NeoOZY#hV~O@shsq<`x@8X77p;_CoJI{=jkjhK;N7M(=v4aQ?v zQh|^0d6-Ocb$w*ovk+!M3%4LFY;pt_k62jQ*f}_bghfQf#3i1;kXKMtQdZH?)zddH zd}U<$*2>!Eovoewdk;@9Zy(>_Pa&aUpTi>(5|ffsQq#Vq=NA+f6_=EjmDe{kHZ`}j zwzc;U3=R#CjE;@Z%`Yr2Eq_}9ZG(4q_rCA{I5>o!{W`z6ynMys z?Em142*DRJDk=&p#&3KfA$uVT3K1$ABR@K^tQN)_SCYp9A2CVg;`8eIu$Tn3A!HVA zv)JU!Lfb6R-&p%M&i-qR1^q*u{hhJj`2qoOQIHUmhe8C90lzKl_1IS_&wcfY$=sdu}j`b@met}wc9{+Yey||jO&yQ!sKHVvHhY#`bL`G9LStKv3&qs zTu{KHj83f|0I_AjqXM9y31$1Q66XA$?`KM=Sa;oXAYl)H1kuD5L9ICT{wW$6ISf?aIP3?I*IdvK28Rg^fCQJ);_U zXq`a8palnBp)PHEoZN1Q7s#4>hJ=_5SEz)*M-|2!0uO-r@f~<;-vc0DyWWA@sYyzE zQ@#H4guCnGA!3y1uj+tlyG!=Tsm!-mwlrjq3s~dLBGw)NpEUHd?~jFm4M)z8PLdl( z1S*02nv`*!31TSX$LTzsRN#pTrRpkwnE-AAr5}?zWZ)JYG%S=ag^bJ{e#a{Yvm2 zFJls$wgdF%Hx)oeJ{QHT?95iLJDE>>Di7{z8-4;@aniuB?E@DqovU^s-{3qw&i8S& zXk*9VKc&JB7-=Cz%8)13MEYkHjnq@V+sM1Jr0c-52S97jcp4=r_3o491E3nXu;^P? z1{_t8x!J#0GpKA&BBe{x^wmUl)Njmz-6!5pA97acRk6Wk-aY`_Zz5FRGdb~fZk~vq z73+X+C*eClPAfZx{0Mfyzd%8P0xM-sTHrypNwA(J`YYoHfUM9sfCIsFCH+YaJcuLd z8n{GoWq_zBMY2>zthr!~2S80}&$-2NfY<{-C5`CLF&>uw>%CWue1Zt);d3th+!)#F zG}y+C0-tnZkt&zl8EL#~_HKxaKtPC##Situ#2|@xdQl|WQYLqLP@067E&8B<$%44Y z4e^wU&h!a0jatc!L5&W&yNSIFyZR1+Lg|~TsyJ!{FIytmYk0QUt$1(^RGVK=xyKQF z#Tpwuis709ZVR_P0CHIquhkv^BkYJ(zO)bjkgl;O`T(G*5x0tVBp88XEnf^?#UF)3 z?FS3A?b~>Mz9q0HYZyeywT`~)6VdxfOu>>C9HgP1Jg_#+vbeUa!*9##89&CH@Ku?O zZEYDr3ae`R9!V%?+!-#ec*oizbB;O(JpBTM?deIj>#lF(1oWry3alsJSv>%ll1J`c zgC77dimVRWLzWUNjSfB4iNAyN(nXk#dl{%M(((rtw1raetCMNVYY<8S1e;|>^=Sqhv z^6}B3cR_@o#+nU-Brw;U`jFmQO`H2Kq1RPN*ZH7M+B(0BGgh=E6}fFLS9sFnotWvj z6hI2llKl2oR*WuE^Z;O_d;lEfTnL+0+L@mb#ljJbMMv+5 zw+IcR2(f#SsQ<8E%NOkt%RF{PW(}U7u#UMJc`AAvjW`Kl-M@gXo8w=MKC|aX0R9z< zzxfftZ53kKr&~$$U4-2)Jpg9Z1U_K<_Z(r|Rv_vl5QA_Le7}gOmj?(`i^Ny3G*aLd znOBP9l4GfLgrsGE#D6k)gS#jl#`4^cE)3Kq;Y{%k2&rElQU==}@bGpHlAGHkNvC$N z7Z^NKA3htST$z%vsIL%L+%{Ni9g%sz9uT)Nt!+I3w&|C@YK;r=XcpG&4L<--2VIk^b-T;zXt$>G~DzoNL-;W)cTsA;aiRspqgYDcv{Bt}B znJ^R(Ed}85v+Fk#A`g1y7PNeX?+zI#+{B+Wn zYeHN$iPAz#goP7xjkKMf{eDZM$i02hF;L^^xw?|svSd@Gv#z*3S27my*WJMZ2gm4Y z?`?Gjg6Hv?2Bu}Os_O1Xt3PDylxy^%JK68U<0jwbNMaizR($*(qi<}g6q=jxJeG2e zkKvRuPf!GV1@r$~N6>%s*oo*UFdpy%n~KbBdkskK@+-9s>lNxTF_oY$=N`d{AQ!Qb zP4?8rDME!E`(fnmVW@`C_Dgq zs^CJve$o5~z;pp{6LIuCn!Z&?wYm47lrEED3d--;gejbxU!ObQ-fZqD-ZA;|-Q9@Z z-#bGK{_@$tVd9w>=YK*{rqR|Dxcv1`ihqvdpR4EI|Ia=1?;bw?k|%{Q*+}SlY`u!* z$Ju^jN~IB00(UiQ(v1`g?^l^pf7Opm`^JM0IhFrv=5|b3QvX4q>kI!;)Te3(1oCUuB@Bt#6q$j0AGio6rmn9*xvO!1HQ+( z%?nj4df->&^4A}%I1iOxKSznzvCk%4_80f^vaOIs^%6-vE>=S|z~YXS$aO<5W3I-$ z4nu`5wbRpiHwed*7h15YD(|sH%1e@W3`v3R$rm^kDbq>!*u;Oygje=WL=|sX$*Wn8Q0rzWhQjRW>@+1 z)NH&(-@MSQ?<$#-el}(tOtRoI_Hhzjhpu2Qs6V+K35Hk(8o4R zK;P<(X$k@Ngr~FimPoX$Pwhs4N$#yY_us68xj85gD=hM?L3f8 z0J%tpH z46}9ifiuj26<@LdkQ zQw+$nTT*y>MBHPm^!bbBcqnT9t|h8_`p<42?`but<5VPhMqqn_q2d$KdinQkZLCLQ5FZ1xS z@vw`LlhjTQ9lrL3JGYV~?5 z@2ePfaRte|e6&%zJpaQ;<1;s}u&Ko1(@)B*#+KNTXmOZtLnx^{^BCf)vXfO3?5e?wpQ6-<^A}*6h+=M@wKVJ-2@G7W#;rL zS5<3U@{J!>q*|Jq|9~H6u|0e0GB}BMm$9=wX+@g)?Jxo>2HqHva()!nr-aU%R&)6%uLZdSR zzSqhf(Ng=Cvrg)OAo@%qLM`%sR$=j+6ws*cNSD-#h_4~KjpTRx_yKVH^ms%2nobcU z>P)rr-N$F-c7XEEUIYj`PequL3M~(SmI8!@;B_nbv!>&x-2B%K{v64P4$7-xF66&` z^m*eZJo|NzYhW^Sj}LIod{3)p&AdqYFGjAxLN-VA@2=g7M}KhnPL#coJ&?yJ0x0~! zKUCgiGzZ+d)VPuO|NUQtmPOjiF4NCJN2yZJ6Wo%+}7u=UQ#0_}alztwxIKk2sXw_7rIib~9uL6GP z!9915cmR;pND5cmQCy15*islpOjzjncn2lxbQwB6jq#pttueUIy?dJL9eHU6A&8Y^ z0Uw!DvW3LnJ#LSwvv+1jR_YJN-*rvq>c8>7x6izfmf78E(zqoTroTty^vQ_s2W6Y` zg?5VcG*oBo2&E1d42nur7%5X9d~G*RAc`GxZ?RYH9d}}@8Rt(gDDfAAg;(0T+W9Je z@Ye!bJy|DPtWI?0)+W&Nki)!rbg?d{8wtk>*lJ^mQYH2V8+fNdw&XcD13r)5+5eCs zxqCSiNC%(s1rElN-03egIx=?h;S52(u1@ds!bA$+=v*;<9*J*O=EzBEvGwgO}H zl(9B|_SHh^?^rp&@!P+01LAi1lFV6ovYo#i&(l^+F+;o}-#|@ULU|?mD~*o~URI!I zNhQ@yv+jI&VdX`18Z+FTG#AM1Js|f02=cVg=9=}Gl$$nM^mn;DEyGFiE1i3RyJ{`& z`0ZInLng_jF*GdlPPP1w=srWztMsU)2K>syFN32go*gCTUCEjXd4ytsD|)Co<6WDVgUffyuD4p=IRjql8)dxV_QIW)?G7#Yj(L{I zcL!8Ybu(KSyreHGZpBU3f0#G44A)S=p1Z+THRh{!>a)q#rJ5S}f6+-}VT4KoT?07E zgsJO{b@sb#2D%v_duOk_!(OKL$v zRU=6zfInC@D`pht5>)vdxsZm?dt|AL^LEQ%(3mgyhHsF6`(EMugl+=xT-A>%+uqQE z>h{Gq6J`ei-RuD=JekXgrsjtG%5FwuqduA^(bjTI^8G>MQEPrFY|t7rSiz3QqoG^O zJKF9>sC9dyoq)NK`83(jyy_WrEz(MYDUl%LObBMVo3C+cg5>-Vg1!BDIHkWJ6eH+o zr#u)>W60uH|s;PkV|DjChX#kcc(4!l)01wf8t>yQLJ z;7Jk_!@m4vD1emdpypmQ`#}ry?*nql?_Q>_q7LrMAi&jyfEC6{|6>nX5@( zNW+|P4vf7fsHw|(gQ`jS4vDUU;$&HH6ZJJcM$lnK#Em0eGPWaE5C1pVQzJ-Nq`#;= z-t^~Ao~i@FDbFF^JWHPTQP)fk4?w1`ff_`kH{E7%GnS4HBGTaFV`Eu1@mN*rixwwZ z_?qJy=3%ZIo}YO*T+AE)Xj^g69L3y@p2A zP&zlxQlGPK5c$3h2FV2ryh+7Nj0qU>G5ff!LFQdDNk;`4Zm6Pk{T?kcY@EXhz{OyYsg#V2X$KF@IbHqW%j+}V4FpR3d zp%fL|Jq&Rkl)?75LL6(+2kBWUc|H}kkEA0x575uEQblLwL`@WNG8ttA@sU_i9_>hK zKu3CY`~_i&ThS^H0Pt0W2cFr+i(8pU#^w}SPAKKiWI5>{&jJcQMj?GXbngK5S?*Ix z;_cX%6@)JLZ7^gj^T?ku8@>N(wsxKd=p1%&xyP4SLJM$(?tpt@I>{iB+XSKhjMdZm zeWfsIoXCS?(_a(WkI zBzpger{~D;;=Dqv&wHp;>8ND3Wgbc~`Z**dRZk`6x zL!KYytV^k7WlfARJ#EqVRma8m@oRFaM9T@+ZOn)s^zEKfGF|O7Y*mo*b4lIV1#Bd_`!; z*R$92uN-rR5Icxu=o+)fCE)LFu`hqcgH$YteRWiY%ke(|mSqm@x(pY3cA4n!-QmR* zOQtH=1S*K|7qZCT172i$e{htsv=g;ZY&c(0BVuXLfbWP{T2Hb-6QO}>1?&MZl)gXE zh0~j!QbY{{%K5O&|IBYux_r9t-ocK?M3ZfpU9!|x&W=(%C(QtBk%M{Fc$26tSZEL& zeT^-BHQ`9pZOJN9-+(+@+qqm8~>s(&R}_S)|C~jVg z0%6IJ@?I=K`95{>?HwSz5T~8;A{~~60SRItHVe7tEm3w*;FcKGfyrgr&L-KBG!g_M zhnnz|&0j#y6DEqE#XS}xU~+Q*j?~sBPQ^xBk&$1<%rqnE3he;{2Xk;h-oW7vrdYkY zrexMw5zP@Ui84K#WKzLQK@X{4hSJ#3{YW?stVmLRtIBgnc|i|Xjrq02cv!ho6m~lV zA5$`F`Kdg)el6`tY~YhSC0NEKDYPb>?q;K}1q6ETOxx6{b`K@BtLSJ}n&K?(f{G4r zu)+%Lp%li87Oha00^?3mdwUwYVqD4|&s>gS46SM3-O~I~JZBPEsu46c%7c&0JL15p z$x+49)kES%9Tq*{E$0UefD4*OHWh3Ss)|5v5%5al<$5PG&ae^(+el@K(wV1YCQjIB zk7Z3>DeWej`N`w4Vmt@a(|G3$nUO%QLYvm*o@NOSG}qV^_17|6W9B&RapzLpR!qEI zymtqe#NNs8@K6k;$9^tSbAHhrI<4N_5Y3al!5;n%y;neCXKYHgZ?sxEg8Rb-J$c}) zIiXGA3xf!#BVyx^d=Zik>-Xp9lkoe z#GQ70+F$>PyGUbvD|mn|zm7eRx$&82H$JQlO3_QlvT(79<(;A?eWYjO2m8uDfi`As z&9d#Hc{Uj%Hii6OcT$d&J07tZL~@meyd=7x{Rw9EnACy2+(c zYrLh_|rAo`!1 z+gUi<21BPvFbcy>Za7;D)ZdXgm4f+04d(mzM91{~x##-~%cBc#V?vAi_}8u;03Zr* zU}UBLGl*H;7Lf4UI;=vrcC{Q&Y@>$ z{|e=Ake$DScwSrn0j_g6T=WMZPyL~$rmvRl!84-YeK6%!e}~|4@XSQF{uQyK@mB~> za%oVP`2d`7MmRRijLhelXFEXdzUl%`mg(y(NBcL-xUptQ)+e|&()peF>6THMX)}py zrIYR!rRt5^pRSF(?jGGcp9vRe$+obsT^RFWc=KNMdr5>uNkq+?81+d$nG7IIS-=@% zNQP-rI?6j(GKlWzo!(JxB{x9jPjX5R?FqtIQ$X*ty|YffbgSA#m46^B!liUSiy;vH zE>D=Pr4cA^247qV{dgbB$Nb1S>oT^!6bU!2*Yab+Gd3zQDzR$kGJWk%J46^9Pv~gY zwz>NI#zuy|i*caL@-^-3Os9x6UbN27lpIjbw{hR`FJ&`MeZ$KY1W2RQ|Hgz0%ld1&6w6iH3sc zdP%ue%^}aT+I=sMO!hj1Y`i)ZFFQvpvAs4(z5WKK@U%gtZ?=C?P$wSW-hI(x3p zflwhNJSKtC34ziJHZrb8G=3UwF5kwFVS69VQX%wakdm-Kwl#Cu@L~U|hNFaG@~Ooy zov(aUDAdN8==*d{(~;Fbw2}>n#)|6K(`Spz)nq%&%k~b(2RO$E7HH;{OYeM_@7Tb6 z;UWeb_#L%vwQ9nTtzqo9&@9An8Et$xz`Sn#Q93Bg2jsBgF9|DZ|MeB};5kOe*JqWaEc!5XH9W)UR zCxEklc${DO$I)5GxI0UP-y$-*h-S5&!r(qK_m?vLiSH33{s8#fkXs-I7C|on0j)0+ zr2oSdS;@5iUncIi=|rINj1svJ^9)eo2sD3wJ^S1IBe5eE!<_4XC|3v~@83KCJbKPa z5O6Sf?E|2F^9HL}6GOTC{b#lRT{!)TF#SIfrvKsT@K3}p z{_kTJP0@;qGd#9E$tx^b?p&35rnBd;EH%B~^KiS(Ql0_Jogz80gZOcVmh} zwNXBs)uP1hgUbp=-a-0z=O#5pZA`vX=2on%JZPVk21-JJ?|kv%h4}GT60=cgqZ~3O zO)f(S8x_;XYfTKfZtPFOBN>&$pX;wR+n(iSeLTBna>nfv)D<$vmo4j)8U$6k43JdH z#|!=v@jU_Y4{1L7UR}c#&@E>*d_P`^k3Qp~h(YsKm)tk{B->y4W{jQzgw7+jn_4>k!wAqmur+{xut=;p6!M=>(3vutgc(jXNU@!^-Ro~pQ zJz>i92EH8gQe{@9GR=yq3`u#X#^im)^j6vqONN1I#NM~h;g8oi9-Ehe6eRqXMSaT5 z?U1Bb-R2#}(2`~M%b0Pqvkn!Og!L8ld(uK%$fE?rKfhPcVy9|i`*h6n^LVd)Ik&~; zEZv;{ncl0XHR58UQ_n~nVD8F|O$(Cu3OoK>SRr2x^*59-f}V3QQDJPtF~- zTvj%j5y$EobMjV3Ic|39BdTdnjhqaP}S|3k9->>)tBceBA?Qf zpV0Gew2p1XPuXD#Qy;x?;yE#sX=soX8yPhO47zS2e-J*;5>#rNaW3iU!m2maV~b$( zR2z(P6vL1V)O!t6*mxRSH(iO=k)mACEdL=1$R)nEIWWJ`HhNOc*pvX``0^$`c^yN6 z>q=ugz3slM@@K2YF%{J1>)H8rq{~PN)oGOVM~a+*W@ttbsGf7c9${*S*GkS6WJ}TgeP6bvK20Co%O2ldT4P{n+TfXT}AD^X>a(-fXuaitQ ztb~fI6Vp{m9WUOK=>432-Lyk_jM_D(^Ze-9u=xRG#eB`^0bskTyvMKg7=y73{~6Oo zb@ngCxtN~&98}+z@8SiI6~63&X*b2DFeD)X66e(l;LF29MzX=-7x;5%3;?Qb=$6-z z*RK=v%19d2%7h=tPH8O1A4d!a*ytzBaoH@e@yqGOyP;#>Z}?_iX0|*hwHMJ!p!Z}1p@UGK1`t> zjGu^oXK*7aQAYzfBQg$g)*H3#`Vu$@zYagfmYY2#wp>OEm9U}t_3AR+DV{H^31{Vk zf>;h(DbM8CBl6P;)oa8lnZ|c_tYnkxOJQe6xMQ}b3+W5~vtyJR$|+wxYWt%JC7TG4 zXN>r=LpgwP#9`Mj9dPLE&sMT-pD0^o_n4<8e{tJ8joUb>7JKDsE$PLO)#eXR5sBnN zAn1UZWGk^jfNwGg(Zah1R7FF2Bv%;VT=BmS_f>bRha&qk3-c|U1Y}R z=mCaL$GWDgpDh$LCVIsxKR2ygU^y{|X?>yF{+dub@^!!B{nnWeWvPxqQt1T^5J?+F`G3XYrpPW3yQthQG?dR90(w!)+o=jtub@%9f3X!SA zs*>`%TFkMds2ByHe0 zTq!wBrfa#!m5m`uEIw_7ZYLUA8JfI3E;5kjtgDP7|L!O7u2XbCg{&)iergkC|iNZn35Y3BSqAMmNsZIIq?R6FEP9 z!K$oMr>*&<4}-S1f}qmQnREQAp5j%?7XJt_JCbpUCV)OfR%&r*G|J@V9Og&eDQQh* z%bNt?BRR(ZLeAxXD<={#&Yu4P`(L5>{{_#4Fqy7W?}y;Jy~Do;Cl;gs5VWvb$jv>^ z51#wL^atp!p3&bkcC?N2s9paSpvd`a$bw7jU&2F(@KXM1HU9f~i7n0!ckDTMjkiZq zW``Oi%3hpihC<$mRO6?##xx1fPJFY`IoY&i3+ESCou})6aq@TFMG=mxqaX($71dPo zohx+IHqKn|A-@~j@_<><)wow8E`yPGxJ=ET+z?;7(BzLVCSvU$@%%N!lG=M3DoqIm ze$>A4J2pDm(Vt~Xz~ZIaT1+|CD`X6uB4$>wV)P&RMfl{YhWs(1TMkyS?g2pDq#EA%>U4K8q#i`38t`O=Hm?8j@-mNkLo>x<*3m%c*Xu<00dv3| zW3gQ~PCL{*)B~+Unr*&O%|Ip9fWl>sI>R%O`voQwXvP;O)q9mh`uFZLp#iswLafh8k zBKyqogpd%aT9-wos%5K(suoA?f?rc>Gk}7}C|8*Av^&VcJ_6MxUg#Z>^ea8vOZm+$ zarVCLMjM56%t7M3I=(+}aCzPje)?{eV4&xKblcEZ0OB&?_AgUzbCZ5Et?s)#r@x7I zM@11<r2f z$O}kFRx%>Kc5FRtycM#wZZz#YVjITSPNu% zpa=W3(Ui_OvPw~>v#Y%;b)ro(OyyUQ5m|qxGACCz`~w*{J^hX4SUU|}cap)9nE(XX ze~LE&)t~yc-Cbo>V0hHdQdQ}>tV%k?V%wJh@?m5ZOM9J6-I8>>22FSXG%OF?iw<-% z<>)UrX$UMEEuB~REymZ`UOv{R7r@*C3Kxp;q{iB1M*ULOeZD7cncpSTzkxo>3$*E& zrr(754R$m21Zb=Aa;cHK65IAUcAhqxSa9HQuptF%eR59k5(e6wq91I~&$2*2JsJ-7 zX1)Ancd)sJt4Eic@mYjScpa$-5WLUuB0z*S-{{Se0~yqD+POm<$)(U z8k;{rRIx08e{~5EhT~LPcEMv=VFBMd@+6A6hJTE_6BKiav4^rxRz}nZUdFs1I^< z`3q(v z4Jdj`p_54dk{6O3vn9Hb^ftu7k#hGkVi|{?U&~zE7T9n);Fo2tx8Tet+%&sHOYF_9 zc3>PSR&xxpW%h~zJr|iQ(sX#XA2c!Sf4gndKaJzvG9)b#rnj)a!0j(gertGKVlUEz zzCT7xPNec9FVF(@?OqaX0c(gBS}aX|cfvf-W)sg$9-L5Cp;0_|(>Bwz4crqdv%yG1 zO|f1}47;Yv+L>~zFbX7xNkMjDVg2b*bR^3j>(tt{-4Rv`d}bS7J&`Z%W0^t1?e&D? zLsXCC9rDJQ(EMJ|luYOv%$)g?L2%7csw543yee$lQ}RkCOM4qkCHq0T9sD>{Oys@f z-wK7Q9uw~RrxgqW@d61Ei^7~VPeLZDy7CT%w!NL!h<&#^#rPxr#u;WfnIV3ZvI#U3 z>| z!f9HUq%pm@%??r;>@Fo}ho({~LU_!Kqffl1mQN~`#lDN^<3-VY50m00m)0#{5*wW^ z^4smf38Y_x$tk7q5z2#=I~hx1Eyv$a_-#mxH`E9}_dcFlGK^7r(^4yi-ZHouMn?gm z@2#P+O;-$U`g|g^?xoml3N*lCSU?%zYD}qQ(xG{&G>-oInVhN9F#+~Et~^}1xd7uLy7EMD-uOlPL^KI4lsKQwhrg@H9)Iz$2Bj{9~0(L zA=k}9e57?i0&`bg%9|}&aCIeW&sHk5ZjD))$oF{>^+I3@iBr7jH?bwCWmdDD6KZ5# z0Sz9OkSgk$4wn?)o_*RhXP(6aVtf+AL7B$lqWl^g^H|Gkur%A`&NZLIaH={~l*}ZNuR4IN}EQ8ydhLN%W&I zAKAMNLMVDkiM=%T0`Iayw)cs%W%{aC4DIEw&n{8pNTYJP{%a<-NXZ*4XwF*1m zU40I}5@VhMljQa};=?f~nklB1xXH(Yj+pvS`ly-dIQ(>JO2&nd37)5)^L?hHftZH` zQp1$rA356X3>q!P3EM|rSH~GW4#)@7)(z~PO!zR?o9`V2XG>WQ_TYBY!J02mHu`Z8 zU9`I~OWhXj=q4WIrgbi84w7Ra3W}1PWpvwjKN+Q()Jc%F{BFc`03`88g*avHqzT=l zuj+Qkj0tlHI|}UUd(-k9M{s+|?Ntu1HAXyQj*-Knw7|C)1k3cBhduys@A$!8mRb!^ zg;GahV<{Q+mS9a)Ah!tuJz{r%)X3c3Pl-&Xiu;yNDEY-e()CHiMNO<3P8|X_GL+@x z&$4A|{v2|d2^nENqexka`dlokz@A6e{Tkhvn=*I`BVm!v!xf>&zWlFb(PR7`lF$Jo zE+_)7JKv+uv;W`kEkgO9Mk4;B^!}cvk4R?wOX5Dt|4KritqCk_P_$jrSAPGquwRx0 zw~wdJ#so7~Oj=Z(R?IgVO-V&COKoGFIpGoV(v*D4(we#I-fH_<)uWUCCu4n@n8&Xg zwO;eB+P5EPg)ByAx0M@%%!r*Fw>#sRT1Wd3Y9m4R?Z-)FnQ%#EcTyq~SnR7Tgu8~= z_&W22&Iu`6w|1M@Fn>1xt0V-KXfG2};H`&8*Gsz&L>9<9oHn#!*Qo1`mVFwJ1GNB4 z!}u?SOTrX9NKF>Y+Qe_zSea7xuy#x2e1^31Kk%&|rElaFuO2MlY?OG}Ac9|Xm&>AV zs-%*Zy9yQ*F=EK+=~E4lhU<-hKt4s1{%1Q3?Df<&Tot1)RYE2M>?fdxA? zl&WAnl?~8B8e?NiLnAKY9m-FmIZT<@r1xw$L0x%wSw@}&u^%)=W5wEw_l#vxUGC2UCuGo8e4L78F0tAc_G3k;PIkTb(yZ5))P?t+mv9 zO>38gqd9Rt3w4=m)kf?|c6>hOEex?X%P`?U3S$e-Zem&Lso6A=xA&{DTh@GDE023s zKN|mYYO?(6v(?0?_hZ9c5)pv;7AXDaD&a3pej0>Fh%omeSIDwpxW zw$FOw``FyK;#+sOF3RxRs%d$I=Bo~^hs8k5O`-`tD$&uSB%U)>ALFBFa2K)JQPh_Q zvzhC9Zarc@Ut}29usFhJoqG{zb=+0g69n%WxcGq?8-*e7w zZ>MJWNW`sO?WdQ?lcQ+)tAVXT!DLY0#=5o9xv5~yH14SZ+$qsFX)##h%r5Uz2RB%= z!Bb!$@sai><0ZVRg;4uQ_W-`s zr-=zC9koA|P!q65Ck;|{7uoEGb9B3tYh0YZrs5CpV=zsQ-G3)w^7JWB(nM=0KP=I8 ze0iAq{kl)TLzLJ0wSg`A%M*sO)#Vae4uzVEXwr8B1`Fuv^*;H7rpmh*Q(l-2E#muP zlREhygm^BFedmo54I7s|j003mu2W|=R1&*?n~t6AYstB3Fae>-ftzir1iVT(DuJr7 zG3C-Ae3#ADQ*Kq2WQ_T3w(pV$sUaTDv7hO}Hou+kNm&3DyNaoqszAbrPt1b!?N}%? z#AtHu*~Kj>E%s#_k&*Jc&1oiLejeuSOb&a1pA?kGdhc>^fFMxKJsKi{zaU(5=ihUa z!rW*YxXrC>_9;Q>dtuwM$Hcmbl*E1m{(I+T9A`Q%ZjZ#{w5-I&su}q2_dW&l?}K_0X;gBNJJImAv$g zOT!KJ_G`QG-g02Q*k$D*do4wkN0r@(PO5g@k_VUZN(+`#)yZzmD^a)AEJMM!7i0Tf zVn?8ZEH;Uga;q3%V`1o-_LvCrb?(WiKR^`U1u(^h0M(&~6!+8^V#p)+M5}hwnPeFwl+Pd?Htk0?Bslgrq!}1+dE2$fn2t3 z2WmR!BfG3BH61>wmoPCI<80tO)@KYy4Y`&*#GvKO`fZB4fMz`nJ9?1pgJhhloDV|2-*Q<9A?2F2Tdf{{zODB literal 0 HcmV?d00001 diff --git a/docs/assets/journal-before.jpg b/docs/assets/journal-before.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdb4975079712d408d3ac7b57c845cdf13ebd1b8 GIT binary patch literal 10482 zcmeHM2Ut_twmyMSr3FHXz(l1NsS1KXKm;bD(ghJkniNF{paP;n5S1t*O{55d6ltP? zND++)0*ca$bOq^65C|b8dB?E~_r1Au-#Bx<^S$TEw@yy>$v%6pb@uw#+W(@zroRDr zb{V1#0SE*DAm9g}_W=3;lo31_KAxdaC=)X~GcywtGY2ah3p*DFHy0NNCnq;dfRCGp zAI8bax1Nt*PzZrQaPta_3JZw}2qA<%J_G`GWoBYt$IQG=h=-F$=no(CCjg8U=!D*5 zglqyBU=T(agkB9G!Fe)4emQ{82ZVtUoFoe?8~Zx&4+I{70rJc2nV6tZ@ZV>^`v4Ti z#Jf>hkD1TRfn^g0u5vCaja6*N{YrlG=J(>Njy@r5>;j+`>m?+mq-A8cY*ka=rlG07 z)4Hv4UzoL!E%y19G!`kgp=%0D15^nBQbi@%*}sTSX?44 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 2" -> :lantern +``` + +- `.IsActive` — the quest is in progress; +- `.Status` — `0` not started, `1` in progress, `2` completed; +- `.DataStatus` — the current step; +- `.hasTag("tag")`, `.notHasTag("tag")` — Cthangover uses these to pick which scenario of a scene plays, for example `AwakeningQuest.hasTag("book_taken")`. + +## If something goes wrong + +1. **The quest is not in the journal.** Its state must be `Progress` (or `End` for the Completed tab); setting only the step is not enough. +2. **The journal shows a key instead of text.** Add the step's key to the mod's `locale` files. +3. **A condition is always false.** The quest id is spelled differently from the `Id` in the quest file; the log warns about an unknown quest. diff --git a/docs/es.md b/docs/es.md new file mode 100644 index 0000000..6340bd9 --- /dev/null +++ b/docs/es.md @@ -0,0 +1,81 @@ +# Quests Engine — misiones, sus pasos y el diario + +Quests Engine lleva la cuenta de las tareas del jugador. Una misión tiene un nombre y una lista de pasos numerados; los escenarios la inician, la llevan al paso siguiente, le ponen etiquetas y la completan. El panel **Diario** muestra las misiones que el jugador ha tomado, y el juego guarda su estado. + +Lo usan Cthangover (el despertar del prólogo y la casa vieja) y RPG Plus (las misiones del bosque). + +## El diario + +Se abre con el icono del diario en la barra de herramientas. Mientras el jugador no haya tomado ninguna misión, está vacío: + +![El diario de RPG Plus al empezar: pestañas Activas y Completadas, «No hay misiones» en ambas páginas.](assets/journal-before.jpg) + +En RPG Plus, el anciano del pueblo da la primera misión. Pregúntale dónde buscar: + +![La casa del anciano: el héroe frente al anciano, dos respuestas a la derecha — «¿Puede un lobo apagar faroles?» y «¿Dónde lo encuentro?».](assets/elder-choice.jpg) + +Tras la respuesta, la misión aparece en el diario: + +![El diario tras la charla: «Una luz en el libro de cuentas» en la lista de activas; a la derecha «Entrada II de V», el primer paso tachado y el paso actual «Vence al lobo de la cueva del bosque del este. Encuentra el corazón de ámbar».](assets/journal-after.jpg) + +- **Activas** reúne las misiones en curso y **Completadas** las terminadas. Las misiones aún no empezadas no aparecen nunca. +- La página derecha muestra la misión seleccionada: los pasos hechos van tachados, el paso actual queda marcado y los futuros siguen ocultos, así el diario no adelanta la historia. +- Las etiquetas que la misión ha ganado se muestran como pequeñas placas doradas bajo la entrada. + +## Una definición de misión + +Las misiones son archivos JSON de tipo `quest` en la carpeta `quests/` de un mod. Esta es la misión de las imágenes (de RPG Plus): + +```json +{ + "Kind": "quest", + "Items": [ + { + "Id": "woodland_ward", + "Name": "rpg_plus/quest/ward/name", + "StatusToDescription": { + "0": "rpg_plus/quest/ward/0", + "1": "rpg_plus/quest/ward/1", + "2": "rpg_plus/quest/ward/2", + "3": "rpg_plus/quest/ward/3", + "4": "rpg_plus/quest/ward/4" + } + } + ] +} +``` + +`Name` y cada paso son claves de traducción. Los números son el **paso** de la misión: en el paso 1 se muestra el texto de `1` como actual y el de `0` tachado — «Entrada II de V» en la imagen. + +## Mover una misión desde un escenario + +La respuesta del anciano en RPG Plus inicia la misión y la pone en el paso 1: + +```scenario +action quest.set_status quest_id=woodland_ward status=Progress +action quest.set_data_status quest_id=woodland_ward level=1 +``` + +- `quest.set_status` — el estado de la misión: `NotStarted`, `Progress` (activa) o `End` (completada). +- `quest.set_data_status` — el paso actual; `level` es su número. +- `quest.add_tag` / `quest.remove_tag` con `tag=…` — recordar algo que ocurrió, por ejemplo qué objeto cogió primero el jugador. +- `quest.send_notification` — muestra al jugador un aviso sobre la misión; cambiar una misión no lo hace por sí solo. + +## Comprobar una misión + +Las comprobaciones de misiones funcionan dondequiera que el juego admita una condición: `when`, condiciones de respuesta, condiciones de escena y eventos de mapa. + +```scenario +when "woodland_ward.DataStatus >= 2" -> :lantern +``` + +- `.IsActive` — la misión está en curso; +- `.Status` — `0` no empezada, `1` en curso, `2` completada; +- `.DataStatus` — el paso actual; +- `.hasTag("tag")`, `.notHasTag("tag")` — Cthangover las usa para elegir qué escenario de una escena se reproduce, por ejemplo `AwakeningQuest.hasTag("book_taken")`. + +## Si algo falla + +1. **La misión no está en el diario.** Su estado debe ser `Progress` (o `End` para la pestaña de completadas); fijar solo el paso no basta. +2. **El diario muestra una clave en vez de texto.** Añade la clave del paso a los archivos `locale` del mod. +3. **Una condición siempre es falsa.** El id de la misión está escrito distinto del `Id` del archivo de la misión; el registro avisa de una misión desconocida. diff --git a/docs/ja.md b/docs/ja.md new file mode 100644 index 0000000..3a89eb1 --- /dev/null +++ b/docs/ja.md @@ -0,0 +1,81 @@ +# Quests Engine — クエスト、そのステップ、ジャーナル + +Quests Engine はプレイヤーのタスクを管理します。クエストには名前と番号付きのステップ一覧があり、シナリオがクエストを開始し、次のステップへ進め、タグを付け、完了させます。**ジャーナル**パネルにはプレイヤーが受けたクエストが表示され、その状態はゲームのセーブに保存されます。 + +Cthangover(プロローグの目覚めと古い家)と RPG Plus(森のクエスト)がこれを使っています。 + +## ジャーナル + +ツールバーのジャーナル・アイコンで開きます。プレイヤーがまだクエストを一つも受けていなければ、空です。 + +![RPG Plus の開始時点のジャーナル: 進行中と完了のタブ、どちらのページにも「クエストはありません」。](assets/journal-before.jpg) + +RPG Plus では村の長老が最初のクエストを出します。どこへ探しに行けばいいか尋ねてみましょう。 + +![長老の家: 長老を前にした主人公、右側に二つの選択肢「狼に灯を消せるのか?」と「どこで探せばいい?」。](assets/elder-choice.jpg) + +答えると、クエストがジャーナルに現れます。 + +![会話後のジャーナル: 進行中の一覧に「台帳に載った灯り」。右側は「項目 II / V」で、最初のステップは打ち消し線、現在のステップは「東の森の洞窟のそばの狼を倒し、琥珀の心臓を見つけよう」。](assets/journal-after.jpg) + +- **進行中**には進行中のクエスト、**完了**には終わったクエストが並びます。まだ始めていないクエストは決して表示されません。 +- 右のページには選んだクエストが出ます。済んだステップには打ち消し線、現在のステップには印が付き、先のステップは隠れたまま。ジャーナルが物語を先にばらすことはありません。 +- クエストが獲得したタグは、項目の下に小さな金色の札として表示されます。 + +## クエストの定義 + +クエストは、mod の `quests/` フォルダーに入る kind `quest` の JSON ファイルです。こちらは画像のクエスト(RPG Plus のもの)です。 + +```json +{ + "Kind": "quest", + "Items": [ + { + "Id": "woodland_ward", + "Name": "rpg_plus/quest/ward/name", + "StatusToDescription": { + "0": "rpg_plus/quest/ward/0", + "1": "rpg_plus/quest/ward/1", + "2": "rpg_plus/quest/ward/2", + "3": "rpg_plus/quest/ward/3", + "4": "rpg_plus/quest/ward/4" + } + } + ] +} +``` + +`Name` と各ステップは翻訳キーです。番号がクエストの**ステップ**になります。ステップ 1 では `1` のテキストが現在のステップとして表示され、`0` には打ち消し線が付きます。画像でいう「項目 II / V」です。 + +## シナリオからクエストを進める + +RPG Plus で長老の答えがクエストを開始し、ステップ 1 に置きます。 + +```scenario +action quest.set_status quest_id=woodland_ward status=Progress +action quest.set_data_status quest_id=woodland_ward level=1 +``` + +- `quest.set_status` — クエストの状態。`NotStarted`、`Progress`(進行中)、`End`(完了)。 +- `quest.set_data_status` — 現在のステップ。`level` がその番号です。 +- `quest.add_tag` / `quest.remove_tag` と `tag=…` — 起こったことを記録します。たとえばプレイヤーがどのアイテムを先に取ったか。 +- `quest.send_notification` — クエストについての通知をプレイヤーに表示します。クエストを変えただけでは通知は出ません。 + +## クエストの確認 + +クエストの判定は、ゲームが条件を受け付ける場所ならどこでも機能します。`when`、選択肢の条件、シーンの条件、マップイベントです。 + +```scenario +when "woodland_ward.DataStatus >= 2" -> :lantern +``` + +- `.IsActive` — クエストが進行中。 +- `.Status` — `0` 未開始、`1` 進行中、`2` 完了。 +- `.DataStatus` — 現在のステップ。 +- `.hasTag("tag")`、`.notHasTag("tag")` — Cthangover はこれでシーンのどのシナリオを再生するか決めます。例は `AwakeningQuest.hasTag("book_taken")`。 + +## うまく動かないとき + +1. **クエストがジャーナルに出ない。** 状態が `Progress`(完了タブに出すなら `End`)である必要があります。ステップだけ設定しても足りません。 +2. **ジャーナルがテキストではなくキーを表示する。** ステップのキーを mod の `locale` ファイルに追加してください。 +3. **条件が常に偽になる。** クエスト id のつづりがクエストファイルの `Id` と違います。ログには未知のクエストの警告が出ます。 diff --git a/docs/ko.md b/docs/ko.md new file mode 100644 index 0000000..c515cc1 --- /dev/null +++ b/docs/ko.md @@ -0,0 +1,81 @@ +# Quests Engine — 퀘스트, 단계, 그리고 저널 + +Quests Engine은 플레이어의 과제를 관리합니다. 퀘스트는 이름과 번호가 붙은 단계 목록을 가지며, 시나리오가 퀘스트를 시작하고 다음 단계로 진행하고 태그를 달고 완료합니다. **저널** 패널은 플레이어가 수락한 퀘스트를 보여 주고, 게임은 그 상태를 저장합니다. + +Cthangover(프롤로그의 각성과 낡은 집)와 RPG Plus(숲의 퀘스트)가 이를 사용합니다. + +## 저널 + +툴바의 저널 아이콘으로 엽니다. 플레이어가 아직 퀘스트를 하나도 수락하지 않았다면 비어 있습니다. + +![RPG Plus 시작 시점의 저널: 진행 중과 완료 탭, 두 페이지 모두 "퀘스트가 없습니다".](assets/journal-before.jpg) + +RPG Plus에서는 마을 원로가 첫 퀘스트를 줍니다. 어디를 찾아야 하는지 물어 보세요. + +![원로의 집: 원로 앞에 선 주인공, 오른쪽의 두 선택지 "늑대가 등불을 끌 수 있나요?"와 "어디서 찾죠?".](assets/elder-choice.jpg) + +답을 고르면 퀘스트가 저널에 나타납니다. + +![대화 후의 저널: 진행 중 목록의 "장부에 오른 등불"; 오른쪽은 "항목 II / V", 첫 단계는 취소선, 현재 단계는 "동쪽 숲 동굴의 늑대를 물리치고, 호박 심장을 찾으세요".](assets/journal-after.jpg) + +- **진행 중**에는 진행 중인 퀘스트가, **완료**에는 끝난 퀘스트가 들어갑니다. 아직 시작하지 않은 퀘스트는 결코 나타나지 않습니다. +- 오른쪽 페이지는 선택한 퀘스트를 보여 줍니다. 끝낸 단계에는 취소선이, 현재 단계에는 표시가 붙고, 이후 단계는 감춰져 있어 저널이 이야기를 미리 까발리지 않습니다. +- 퀘스트가 얻은 태그는 항목 아래에 작은 금색 꼬리표로 표시됩니다. + +## 퀘스트 정의 + +퀘스트는 mod의 `quests/` 폴더에 있는 kind `quest` JSON 파일입니다. 사진 속 퀘스트(RPG Plus 것)입니다. + +```json +{ + "Kind": "quest", + "Items": [ + { + "Id": "woodland_ward", + "Name": "rpg_plus/quest/ward/name", + "StatusToDescription": { + "0": "rpg_plus/quest/ward/0", + "1": "rpg_plus/quest/ward/1", + "2": "rpg_plus/quest/ward/2", + "3": "rpg_plus/quest/ward/3", + "4": "rpg_plus/quest/ward/4" + } + } + ] +} +``` + +`Name`과 각 단계는 번역 키입니다. 숫자가 퀘스트의 **단계**입니다. 단계 1에서는 `1`의 텍스트가 현재 단계로 표시되고 `0`에는 취소선이 그려집니다. 사진으로 말하면 "항목 II / V"입니다. + +## 시나리오에서 퀘스트 진행하기 + +RPG Plus에서 원로의 대답이 퀘스트를 시작하고 단계 1에 놓습니다. + +```scenario +action quest.set_status quest_id=woodland_ward status=Progress +action quest.set_data_status quest_id=woodland_ward level=1 +``` + +- `quest.set_status` — 퀘스트의 상태: `NotStarted`, `Progress`(진행 중) 또는 `End`(완료). +- `quest.set_data_status` — 현재 단계, `level`이 그 번호입니다. +- `quest.add_tag` / `quest.remove_tag`와 `tag=…` — 일어난 일을 기억합니다. 예를 들어 플레이어가 어떤 아이템을 먼저 가져갔는지. +- `quest.send_notification` — 퀘스트에 대한 알림을 플레이어에게 보여 줍니다. 퀘스트를 바꾸는 것만으로는 알림이 뜨지 않습니다. + +## 퀘스트 확인하기 + +퀘스트 판정은 게임이 조건을 받아들이는 곳이라면 어디서든 작동합니다. `when`, 선택지 조건, 장면 조건, 맵 이벤트입니다. + +```scenario +when "woodland_ward.DataStatus >= 2" -> :lantern +``` + +- `.IsActive` — 퀘스트가 진행 중. +- `.Status` — `0` 시작 안 함, `1` 진행 중, `2` 완료. +- `.DataStatus` — 현재 단계. +- `.hasTag("tag")`, `.notHasTag("tag")` — Cthangover는 이것으로 장면의 어떤 시나리오를 재생할지 고릅니다. 예: `AwakeningQuest.hasTag("book_taken")`. + +## 문제가 생겼을 때 + +1. **퀘스트가 저널에 없습니다.** 상태가 `Progress`(완료 탭이라면 `End`)여야 합니다. 단계만 설정해서는 부족합니다. +2. **저널이 텍스트 대신 키를 보여 줍니다.** 단계의 키를 mod의 `locale` 파일에 추가하세요. +3. **조건이 항상 거짓입니다.** 퀘스트 id의 철자가 퀘스트 파일의 `Id`와 다릅니다. 로그에 알 수 없는 퀘스트 경고가 기록됩니다. diff --git a/docs/ru.md b/docs/ru.md new file mode 100644 index 0000000..f1659dd --- /dev/null +++ b/docs/ru.md @@ -0,0 +1,81 @@ +# Quests Engine — задания, их шаги и журнал + +Quests Engine ведёт счёт задачам игрока. У задания есть название и нумерованный список шагов; сценарии берут его в работу, переводят на следующий шаг, отмечают тегами и завершают. Панель **Журнал** показывает задания, которые взял игрок, а их состояние игра сохраняет. + +Его используют Cthangover (пробуждение в прологе и старый дом) и RPG Plus (лесные задания). + +## Журнал + +Открывается иконкой журнала на панели инструментов. Пока игрок не взял ни одного задания, журнал пуст: + +![Журнал в RPG Plus на старте: вкладки «Активные» и «Завершённые», на обеих страницах «Заданий нет».](assets/journal-before.jpg) + +В RPG Plus первое задание даёт староста деревни. Спросите его, куда идти: + +![Дом старосты: герой перед старостой, справа два варианта — «Волк умеет гасить фонари?» и «Где его искать?».](assets/elder-choice.jpg) + +После ответа задание появляется в журнале: + +![Журнал после разговора: «Свет по ведомости» в списке активных; справа «Запись II из V», первый шаг зачёркнут, текущий шаг — «Прогони волка у пещеры на востоке леса. Найди янтарное сердце».](assets/journal-after.jpg) + +- **Активные** — список заданий в работе, **Завершённые** — законченных. Ещё не начатые задания не появляются никогда. +- Правая страница показывает выбранное задание: выполненные шаги зачёркнуты, текущий отмечен, а будущие скрыты — журнал не раскрывает сюжет заранее. +- Заработанные заданием теги показаны под записью маленькими золотыми метками. + +## Описание задания + +Задания — это JSON-файлы вида `quest` в папке `quests/` мода. Вот задание с картинок (из RPG Plus): + +```json +{ + "Kind": "quest", + "Items": [ + { + "Id": "woodland_ward", + "Name": "rpg_plus/quest/ward/name", + "StatusToDescription": { + "0": "rpg_plus/quest/ward/0", + "1": "rpg_plus/quest/ward/1", + "2": "rpg_plus/quest/ward/2", + "3": "rpg_plus/quest/ward/3", + "4": "rpg_plus/quest/ward/4" + } + } + ] +} +``` + +`Name` и каждый шаг — ключи перевода. Числа — это **шаги** задания: на шаге 1 текст `1` показан как текущий, а `0` — зачёркнутым; на картинке это «Запись II из V». + +## Как сценарий двигает задание + +Ответ старосты в RPG Plus запускает задание и ставит его на шаг 1: + +```scenario +action quest.set_status quest_id=woodland_ward status=Progress +action quest.set_data_status quest_id=woodland_ward level=1 +``` + +- `quest.set_status` — состояние задания: `NotStarted`, `Progress` (активно) или `End` (завершено). +- `quest.set_data_status` — текущий шаг, `level` — его номер. +- `quest.add_tag` / `quest.remove_tag` с `tag=…` — запомнить случившееся, например, какой предмет игрок взял первым. +- `quest.send_notification` — показывает игроку уведомление о задании; само по себе изменение задания уведомления не даёт. + +## Как проверить задание + +Проверки задания работают везде, где игра принимает условие: в `when`, в условиях ответов, условиях сцен и событиях карты. + +```scenario +when "woodland_ward.DataStatus >= 2" -> :lantern +``` + +- `.IsActive` — задание в работе; +- `.Status` — `0` не начато, `1` в работе, `2` завершено; +- `.DataStatus` — текущий шаг; +- `.hasTag("tag")`, `.notHasTag("tag")` — так Cthangover выбирает, какой сценарий сцены играть, например `AwakeningQuest.hasTag("book_taken")`. + +## Если что-то пошло не так + +1. **Задания нет в журнале.** Его состояние должно быть `Progress` (или `End` для вкладки завершённых); одной установки шага мало. +2. **Журнал показывает ключ вместо текста.** Добавьте ключ шага в файлы `locale` мода. +3. **Условие всегда ложно.** Идентификатор задания написан иначе, чем `Id` в файле задания; в логе будет предупреждение о неизвестном задании. diff --git a/docs/vi.md b/docs/vi.md new file mode 100644 index 0000000..98862bb --- /dev/null +++ b/docs/vi.md @@ -0,0 +1,81 @@ +# Quests Engine — nhiệm vụ, các bước và nhật ký + +Quests Engine quản lý các việc người chơi phải làm. Một nhiệm vụ có tên và danh sách các bước được đánh số; kịch bản khởi đầu nhiệm vụ, đưa nó sang bước tiếp, gắn thẻ và kết thúc nó. Bảng **Nhật ký** hiển thị những nhiệm vụ người chơi đã nhận, và game lưu trạng thái của chúng. + +Cthangover (tỉnh dậy trong prologue và ngôi nhà cũ) và RPG Plus (các nhiệm vụ trong rừng) đều dùng mod này. + +## Nhật ký + +Mở bằng biểu tượng nhật ký trên thanh công cụ. Khi người chơi chưa nhận nhiệm vụ nào, nhật ký còn trống: + +![Nhật ký của RPG Plus lúc đầu: hai thẻ Đang làm và Đã xong, cả hai trang đều ghi "Chưa có nhiệm vụ".](assets/journal-before.jpg) + +Trong RPG Plus, trưởng làng giao nhiệm vụ đầu tiên. Hỏi ông xem nên đi tìm ở đâu: + +![Nhà trưởng làng: anh hùng đứng trước trưởng làng, hai lựa chọn bên phải — "Sói tắt được đèn sao?" và "Tìm nó ở đâu?".](assets/elder-choice.jpg) + +Sau câu trả lời, nhiệm vụ xuất hiện trong nhật ký: + +![Nhật ký sau cuộc trò chuyện: "Ngọn đèn trên sổ sách" nằm trong danh sách đang làm; bên phải là "Mục II trên V", bước đầu đã bị gạch, bước hiện tại là "Đánh bại con sói bên hang trong rừng phía đông. Tìm trái tim hổ phách".](assets/journal-after.jpg) + +- **Đang làm** liệt kê nhiệm vụ đang tiến hành, **Đã xong** liệt kê nhiệm vụ hoàn thành. Nhiệm vụ chưa bắt đầu không bao giờ hiện ra. +- Trang bên phải hiển thị nhiệm vụ đang chọn: các bước đã làm bị gạch ngang, bước hiện tại được đánh dấu, các bước sau còn ẩn — nhật ký không tiết lộ trước câu chuyện. +- Các thẻ nhiệm vụ đã giành được hiện dưới mục nhỏ, dạng nhãn vàng nhỏ. + +## Định nghĩa nhiệm vụ + +Nhiệm vụ là tệp JSON kind `quest` trong thư mục `quests/` của mod. Đây là nhiệm vụ trong các hình trên (thuộc RPG Plus): + +```json +{ + "Kind": "quest", + "Items": [ + { + "Id": "woodland_ward", + "Name": "rpg_plus/quest/ward/name", + "StatusToDescription": { + "0": "rpg_plus/quest/ward/0", + "1": "rpg_plus/quest/ward/1", + "2": "rpg_plus/quest/ward/2", + "3": "rpg_plus/quest/ward/3", + "4": "rpg_plus/quest/ward/4" + } + } + ] +} +``` + +`Name` và từng bước đều là khóa dịch. Các con số chính là **bước** của nhiệm vụ: ở bước 1, văn bản của `1` hiện là bước hiện tại và `0` bị gạch ngang — tức "Mục II trên V" trong hình. + +## Đưa nhiệm vụ đi từ kịch bản + +Câu trả lời của trưởng làng trong RPG Plus khởi đầu nhiệm vụ và đặt nó ở bước 1: + +```scenario +action quest.set_status quest_id=woodland_ward status=Progress +action quest.set_data_status quest_id=woodland_ward level=1 +``` + +- `quest.set_status` — trạng thái nhiệm vụ: `NotStarted`, `Progress` (đang làm) hoặc `End` (hoàn thành). +- `quest.set_data_status` — bước hiện tại, `level` là số của nó. +- `quest.add_tag` / `quest.remove_tag` kèm `tag=…` — ghi nhớ chuyện đã xảy ra, chẳng hạn người chơi lấy vật phẩm nào trước. +- `quest.send_notification` — hiện thông báo về nhiệm vụ cho người chơi; thay đổi nhiệm vụ thì tự nó không thông báo. + +## Kiểm tra nhiệm vụ + +Phép kiểm nhiệm vụ dùng được ở mọi nơi game nhận điều kiện: `when`, điều kiện lựa chọn, điều kiện cảnh và sự kiện bản đồ. + +```scenario +when "woodland_ward.DataStatus >= 2" -> :lantern +``` + +- `.IsActive` — nhiệm vụ đang tiến hành; +- `.Status` — `0` chưa bắt đầu, `1` đang làm, `2` đã hoàn thành; +- `.DataStatus` — bước hiện tại; +- `.hasTag("tag")`, `.notHasTag("tag")` — Cthangover dùng chúng để chọn kịch bản nào của cảnh sẽ chạy, ví dụ `AwakeningQuest.hasTag("book_taken")`. + +## Khi có trục trặc + +1. **Nhiệm vụ không có trong nhật ký.** Trạng thái của nó phải là `Progress` (hoặc `End` để vào thẻ đã xong); chỉ đặt bước là chưa đủ. +2. **Nhật ký hiện khóa thay vì văn bản.** Thêm khóa của bước vào các tệp `locale` của mod. +3. **Điều kiện luôn sai.** Id nhiệm vụ viết khác với `Id` trong tệp nhiệm vụ; log sẽ cảnh báo về nhiệm vụ lạ. diff --git a/docs/zh.md b/docs/zh.md new file mode 100644 index 0000000..14c2afe --- /dev/null +++ b/docs/zh.md @@ -0,0 +1,81 @@ +# Quests Engine — 任务、任务步骤与日志 + +Quests Engine 替玩家记账。每个任务都有名称和编号的步骤列表;剧本负责开启任务、推进到下一步、打上标记并完成任务。**日志**面板显示玩家已领取的任务,游戏会保存它们的状态。 + +Cthangover(序章的苏醒和旧宅)与 RPG Plus(森林任务)都用到了它。 + +## 日志 + +用工具栏上的日志图标打开。玩家还没领取任何任务时,日志是空的: + +![RPG Plus 开局时的日志:「进行中」和「已完成」两个页签,两页都写着「暂无任务」。](assets/journal-before.jpg) + +在 RPG Plus 里,村庄的长老给出第一个任务。向他问问去哪里找: + +![长老的家:主角站在长老面前,右侧有两个选项——「狼会熄灯吗?」和「去哪儿找它?」。](assets/elder-choice.jpg) + +回答之后,任务就出现在日志里: + +![对话后的日志:「账簿上的一盏灯」出现在进行中列表;右侧是「第 II 条,共 V 条」,第一步已划掉,当前步骤为「击退东部森林洞窟旁的狼。找到琥珀之心」。](assets/journal-after.jpg) + +- **进行中**列出正在做的任务,**已完成**列出做完的。还没开始的任务永远不会出现。 +- 右页显示选中的任务:已完成的步骤划掉,当前步骤做了标记,后续步骤保持隐藏——日志不会剧透后面的故事。 +- 任务获得的标记会以小小的金色标签显示在条目下方。 + +## 任务的定义 + +任务是 mod 的 `quests/` 文件夹里类型为 `quest` 的 JSON 文件。这就是截图中的任务(来自 RPG Plus): + +```json +{ + "Kind": "quest", + "Items": [ + { + "Id": "woodland_ward", + "Name": "rpg_plus/quest/ward/name", + "StatusToDescription": { + "0": "rpg_plus/quest/ward/0", + "1": "rpg_plus/quest/ward/1", + "2": "rpg_plus/quest/ward/2", + "3": "rpg_plus/quest/ward/3", + "4": "rpg_plus/quest/ward/4" + } + } + ] +} +``` + +`Name` 和每个步骤都是翻译键。数字就是任务的**步骤**:在第 1 步时,`1` 的文本显示为当前步骤,`0` 则划掉——即截图中的「第 II 条,共 V 条」。 + +## 从剧本推进任务 + +RPG Plus 中长老的回答会开启任务并把它放到第 1 步: + +```scenario +action quest.set_status quest_id=woodland_ward status=Progress +action quest.set_data_status quest_id=woodland_ward level=1 +``` + +- `quest.set_status` — 任务的状态:`NotStarted`、`Progress`(进行中)或 `End`(已完成)。 +- `quest.set_data_status` — 当前步骤,`level` 是它的编号。 +- `quest.add_tag` / `quest.remove_tag` 配合 `tag=…` — 记下发生过的事,比如玩家先拿了哪个物品。 +- `quest.send_notification` — 向玩家弹出任务通知;改变任务本身不会触发通知。 + +## 检查任务 + +凡是游戏接受条件的地方都能用任务检查:`when`、选项条件、场景条件和地图事件。 + +```scenario +when "woodland_ward.DataStatus >= 2" -> :lantern +``` + +- `.IsActive` — 任务正在进行; +- `.Status` — `0` 未开始,`1` 进行中,`2` 已完成; +- `.DataStatus` — 当前步骤; +- `.hasTag("tag")`、`.notHasTag("tag")` — Cthangover 用它们决定场景播放哪段剧本,例如 `AwakeningQuest.hasTag("book_taken")`。 + +## 出问题时 + +1. **任务不在日志里。** 它的状态必须是 `Progress`(或在「已完成」页签显示则用 `End`);只设置步骤是不够的。 +2. **日志显示的是键而不是文本。** 把步骤的键加进 mod 的 `locale` 文件。 +3. **条件永远为假。** 写的任务 id 与任务文件里的 `Id` 不一致;日志会警告存在未知任务。 diff --git a/locale/en.properties b/locale/en.properties index 7b03299..4823f34 100644 --- a/locale/en.properties +++ b/locale/en.properties @@ -1,4 +1,4 @@ mod_quests_base_name = Quests Engine -mod_quests_base_desc = Engine quests subsystem: the quest factory and runtime state, the IQuestService implementation, quest scenario actions, quest scene conditions and the quest journal UI. +mod_quests_base_desc = Quests engine: quests with numbered steps that scenarios start, advance and finish, and the journal panel that shows them. ui/journal/new = New journal entry ui/journal/updated = Quest updated diff --git a/locale/es.properties b/locale/es.properties index 43b1f33..aed7f4c 100644 --- a/locale/es.properties +++ b/locale/es.properties @@ -1,4 +1,4 @@ mod_quests_base_name = Motor de misiones -mod_quests_base_desc = Subsistema de misiones del motor: la fábrica de misiones y su estado en ejecución, la implementación de IQuestService, acciones de escenario de misiones, condiciones de escena de misiones y la interfaz del diario. +mod_quests_base_desc = Motor de misiones: misiones con pasos numerados que los escenarios inician, avanzan y completan, y el panel del diario que las muestra. ui/journal/new = Nueva entrada en el diario ui/journal/updated = Misión actualizada diff --git a/locale/ja.properties b/locale/ja.properties index 06b7606..f909a29 100644 --- a/locale/ja.properties +++ b/locale/ja.properties @@ -1,4 +1,4 @@ mod_quests_base_name = クエストエンジン -mod_quests_base_desc = エンジンのクエストサブシステム:クエストファクトリーと実行時の状態、IQuestService の実装、クエストのシナリオアクション、クエストのシーン条件、クエスト日誌の UI。 +mod_quests_base_desc = クエストエンジン: シナリオが開始・進行・完了させる番号付きステップのクエストと、それらを表示するジャーナルパネル。 ui/journal/new = 日誌に新しい記録 ui/journal/updated = クエストが更新されました diff --git a/locale/ko.properties b/locale/ko.properties index 2d9dc13..9bb9297 100644 --- a/locale/ko.properties +++ b/locale/ko.properties @@ -1,4 +1,4 @@ mod_quests_base_name = 퀘스트 엔진 -mod_quests_base_desc = 엔진 퀘스트 하위 시스템: 퀘스트 팩토리와 실행 상태, IQuestService 구현, 퀘스트 시나리오 액션, 퀘스트 장면 조건, 퀘스트 일지 UI. +mod_quests_base_desc = 퀘스트 엔진: 시나리오가 시작하고 진행하고 완료하는 번호 붙은 단계의 퀘스트와 이를 보여 주는 저널 패널. ui/journal/new = 새 일지 항목 ui/journal/updated = 퀘스트 갱신됨 diff --git a/locale/ru.properties b/locale/ru.properties index 9fcd6fe..b8b7174 100644 --- a/locale/ru.properties +++ b/locale/ru.properties @@ -1,4 +1,4 @@ mod_quests_base_name = Движок квестов -mod_quests_base_desc = Подсистема квестов движка: фабрика квестов и их состояние, реализация IQuestService, сценарные действия, условия квестов в сценах и журнал квестов. +mod_quests_base_desc = Движок заданий: задания с пронумерованными шагами, которые сценарии запускают, ведут дальше и завершают, и панель журнала, где они видны. ui/journal/new = Новая запись в журнале ui/journal/updated = Задание обновлено diff --git a/locale/vi.properties b/locale/vi.properties index f48b9a4..f9e92dd 100644 --- a/locale/vi.properties +++ b/locale/vi.properties @@ -1,4 +1,4 @@ mod_quests_base_name = Engine nhiệm vụ -mod_quests_base_desc = Hệ thống con nhiệm vụ của engine: factory nhiệm vụ và trạng thái khi chạy, triển khai IQuestService, hành động kịch bản nhiệm vụ, điều kiện cảnh nhiệm vụ và giao diện nhật ký nhiệm vụ. +mod_quests_base_desc = Engine nhiệm vụ: các nhiệm vụ có bước đánh số mà kịch bản khởi đầu, đưa tiến và kết thúc, cùng bảng nhật ký hiển thị chúng. ui/journal/new = Mục nhật ký mới ui/journal/updated = Nhiệm vụ đã cập nhật diff --git a/locale/zh.properties b/locale/zh.properties index e1f5006..42c68d2 100644 --- a/locale/zh.properties +++ b/locale/zh.properties @@ -1,4 +1,4 @@ mod_quests_base_name = 任务引擎 -mod_quests_base_desc = 引擎任务子系统:任务工厂和运行时状态、IQuestService 实现、任务剧本动作、任务场景条件以及任务日志界面。 +mod_quests_base_desc = 任务引擎:由剧本开启、推进并完成的分步任务,以及展示它们的日志面板。 ui/journal/new = 新的日志条目 ui/journal/updated = 任务已更新 diff --git a/manifest.json b/manifest.json index 8d071be..6b45335 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Quests Engine", "version": "1.0.0", "author": "ct", - "description": "Engine quests subsystem: the quest factory and runtime state (QuestFactory, QuestBase/QuestData), the IQuestService implementation, quest scenario actions, quest scene conditions with the QuestParser leaf parser and the quest journal UI. Replaces the former Core/Quests state, Core/Actions quest services and actions, Core/Scenes quest conditions and Core/UI/Quests - QuestsModInitializer publishes the kernel contract (IQuestService via QuestServiceRegistry), registers the quest leaf parser and the new-game resettable; QuestsSaveable persists quest state through the generic mod save slot.", + "description": "Quests engine: quests with numbered steps that scenarios start, advance and finish, and the journal panel that shows them.", "category": "engine, library", "sources": [ "src/**/*.cs"