From e8284917f1f95eaa88f382bf8edd90447dfa49ba Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Thu, 31 Jul 2025 16:42:02 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=87=8D=E5=86=99=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=86=8D=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/Assemblies/WulaFallenEmpire.dll | Bin 89088 -> 90624 bytes 1.6/Defs/EventDefs/EventDef_Examples.xml | 48 ++- 1.6/Defs/EventDefs/EventDef_Wula.xml | 371 ++++++++++-------- Documentation/EventSystem_Documentation.md | 148 +++++-- .../EventSystem/Dialog_CustomDisplay.cs | 22 +- Source/WulaFallenEmpire/EventSystem/Effect.cs | 45 ++- .../WulaFallenEmpire/EventSystem/EventDef.cs | 24 +- .../EventSystem/Letter_EventChoice.cs | 35 +- .../EventSystem/QuestNode_Root_EventLetter.cs | 2 +- 9 files changed, 483 insertions(+), 212 deletions(-) diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll index 8d1d9af23e7d8d08143966fca09b3e1917a6c1dc..9bb3697542f38c1be2dfbf7ea7b8b885d6fbef57 100644 GIT binary patch delta 29597 zcmbV#2VhiH_V;;jX5O@9GBcUXr1vtZ5E24`5E2qf5EP_HDAEyZ0|XTu;v|9!hy_O} zii(N_v4Eg}q6S3}#lm7k(FJuCR#dR;iUq&lId4LOyZ^6cH|O0`?m6e4bKAT31zWb8 zT6UXmUy^y~bn!8Y{2Zaobi2}(Xskk{>BN5XS3Ex2aq=34E?`27LfZ{1GGe3FDHH|# zJus5P8ER3uQOUCn8iR`IAdd|%Qwo*w;pdb*Wm5PvB{Ly=K3Mn}gkP0RG;bx*q@zU2 zs$HX$9$SW~_b5pp5gBueeYw|th{74|S2)o$gvgfD^3fK}_*9hTH&Ala=EGZdI@g+& z;aeKx+l-19PD~l291l08^Z?wLQq~0x()D~TdQ1xRkivSH<44O1{bmLhfac@j=+sQb z9PXMLRIFQ`NS$I#`nFxc2~iNu3c87cZ@1)UJ)tNu;p_6s%sST*-kz7GIKzkYdT$Bj zIMj(Ah}$$n^AD&@CeLt((KB2NG8PD+HNk<}M zEw>hDsg?qrs%_cPr7b4ZUA#0j+aN?*kRQRRa3r{sTW{s6oNo&XXS8w%M_SJuk3WH% zZ}yxqL|KX~WHb-=MHh}X>S`j*WQ`Kl1b-K(OwgI_jfm>h=8CYf=3Zy7h(kyzI}{z> zT$8Lshu^L#Rif{xEe$cNsCWQ^={czJI9z>1x_?sEzJ(lHEWO` zLG*o_*Lp_lv!(BV*VNcY;go^MMXLW7=pZ$CN7&cUJ#+^r^*5n-ni&CS1s+9CH3)Bw z{xk&Ddj_M^i>UShcU3zz+FBG%YSZti+|0xXPp=pFBchX)P{D($xA}II@L=t#ZcFt; zGiryKAvX5LC|@#ikXxY3^z#&Gz~Kgmeqj={kn?LNXViVX<9R z>WOEyG%$D{SV7k5XYGE>A2uk7fq!Q?_QGhkrv>-iG1!-;KmyZ@p_%!ruUQ3-he3ZB z!xe*zLg_sA9{`^UhtS-Y;Eq9J>_;72l*Q}MfIzfr2;K%6YrurMB5w7K(P;qP^ehatiG+Kqg+08`>q(&OW z44>b^R_|vgBjmf<<%^>9_Pz!}p}iB=rnT!sei0)rqGg?Ei3qNw5bVCn4s*Pdx|-=h zBT=m$Zx;3Vt*{;Ib$N@NWKe@li}%~uchW7RwlUV{@)Zpyum1_owcif5KZ<2CiPqH! zh*A8}prD*y+sKsKCiGp~l!zzXt^H3)?Z0tRYDX;WW()DI_@eV7gk2!$rq1fG{j2_y zx_+n+*ADT8UP2oe?nS*|8LJm`UpqP`LJ)pA`1Xi4ZCn&ekAq?!7j3cn9o&MlvZlUc zV~x6wvnpN2v9YF3G*-hjO=zo-A zh~##;oqi{%cs$K*GrKH)&Y-v$6je#CBvBP&vSiTZ`fs`t{m(#x;`JQ5T#-I-E8Nlh zfKTUmbvd`&?ee?Ww9D_tL$`?Om;*4zWp&y9;>g9Z$*$zTG|K(o9C5kPfzoTC#{U>R zij8%}szII%bT{0dcEj#YhWCfxIzJ8EeMLyo$g1c*J3kV8L^qJ%%T!<#euaN zEDtZ0*1n(fMlSco-veO`CYnYb<(@2(tw z0=T)ZY$$Q1`!S1X{zOpxNdUTQ$td+2`{$p3eiq|SJ>xAwwLmPV?=Z{+Qdq74)1H&} zbB7I2E;YuW9;OllVcbwZo=Oa|+F-5@Y19)gV95%kqN2TUo?G#!p%g``CAgMbZqQqf z)E12~!0k#4SnYmW-#2W|Eeult8U_hnEdYPRfEGXoZPs3Lr~!J`%%lLVN+x`SANMM)nt8-vQ)O|7;6f(FZ0pX zN{m(fXtK^r^ka>M^WE48KvAp-y~v~|K=Z!=u~@UqTr`G2JSPJdm!*hT2c4{^z={-D z^%U61W%IPB!0OKoaX>f+){Y!RQec!6^jfHQEaN#@K$v66{{xmot*H&p1b#vh&KIW8 z+yWQPR)ZXaxjRtwZ{@k>e&H8Hau=qIt$OaTG!LOA@BM!zFDrxuV1~xhSWSjvwa{Yl z1@bvpyqD1#yhSk(MiN$L-h%}nMoHh>VD-PQ1#UGn37qwK=zO2Q;9M=N<5K7tpzC-< z*I^HtiySofMQ)_DuW)EnAu8thivXL8x#(*y!NaBoxlW)9%31(>Cf-G0)kn1YxH($P z?by_`N2{Y1u~_%7fdd0|2hdZv5#`v3z=6AR9Z zRBC7wIEhPHa>&Gh9)yf#-GoL3Eq_1MuMW&hD~feb;$D z|3FrSMNV^>by6guYVcWj=HHK|7h{`;_y7q3g9^Of#YVfLEAbk^9ghWF+T8I`XzL0{ z_y@60r`s7J`uq({aOhh8FC=5!F>VKX@$DQ5O)$ z#&X%*JdPh&IN5OXcz{?<4RZ64@Z3lP9WF;vG0j~Ib9$>PWOj3DK~}C$;ZDw*-cdJU zQ-FQA<_la5wm%PAc-Z>=VdvQNi@3#si2yE(%M_S|0{Y-aTi z#Eo{koM>}|I28i1Rw~S+xzmzpwmCR0eAC$U(94}G;MG7X2vI87sIU&hl`90MLxaCB zoJL&~gGiu`N1O>>(oXQtL@CyVJ@?xXkA=Gye?GSfrQwos z-phIXn>`+n*B3a5il{O2|GS4odPMAXmqDqlsIFL9QgiiHB)n;yH@^+7R|A(r0(&|a zT_?C9a0Li39&?s(W%&DXd5yw#Qy>5~7KF*9UDX@&c#%zen4eKT3{os;8dp&HVu(Rkgqzkl*bc4vfDjzLPJ7q!mojjR)q2KO3KJ)|pLV z(}b$7^H8US3HnI{-WcQuBXAct$JhLd{=nvwvEAW06Fh}`7|A61wGLoVebXs8)x0-C zyq<|_olbl`ylH|bv`=TX#Md{!5s_L~+sv;?tOZ4WPij9BnxXoKK_7Iyi^W)#7B>$E zrJ$P{yb#ZM*dVBK$cR%?K6K3BS=7*+jtB219^~2uynVu=#Rt6+JKoNl zAeb(v(3F3az6jnDEqGgn1{7Z#S*sg zU0Blm^O??lKd=CRKtFJn-h3@cp#1GDMVAcflEH(ZH@^p9zHT8%S&5q!OPE(tU5iiYdF0gqE z!nY2K|9^gu$q5;;bi$A<=l<*2n7WWXo_hd3#`_E5qQ3}$uA7dW_{wk+#f`x0NulDy zAi=(DArs~vg}m2a%%U=&7VD1l2FgSM%xB2Et7$wtPKKgbLtr%Y6^ElI^^UrMn_I?B z36_ONPAXT*!b>OR0dAg@6n!I@{+j@>zD@`qnv@Lszb4g~mw@CA%nPq8iHo(lZ0OgR zA=Ds?3gl%82ljlZ!*kKnmOp5Y_W8wAB(=jxvs4gSX&`hVbfB)Qnw|5CXTd z_-z2Orotg^lmB)uYFM2yo#P!@CgP%Q{7Pyt2E6E!a*~`**L{F6sPVVpP+Q6I`Idi) z=YxSe)C4S`Ui)Xg@OEnQhoP)^Bi@@#XS{XcxlJ#^#R!Fe`8+-`U#Uf>brgoPxxrRj77tI|}RE6|r5VQD?nK zJ5v^~2H8z<7=6Sm`czwCthebmxPZPY{xq{)tspg|`W5s9G}(wp%hzlP!~SQUqqL$!p|9+$#&0@l#0A7zjZFU^G@>au%SLdcBrJu%@t09d$y_JQ`2%oKXk6l$bYGPHdvewjcO1Y{=qr! zk7sLl)ser{E=n+@#rW@o6FNJB$d0n$J}4OW(^(C0o{_(3VCOH5BnwCIKSLtYQ~!-( z0Zxci%78N$NeB6v!tc(FQ@X#e%Dmqr75UlxF93`WcGYM5^bxeHy%yn8ghe7%Jv^UnQ~k-v zDzjK0)UsV&Nqj`fXVWl9S>G77>0$WW{HrL@q28b?xk0dOYkowU$vj{4qg+;ljOZE@ z+BL>TGw*g4ZL!PQ+Wii)_16@UXho_rt1hAWj}X*$=#$xxHFOG*pd6w)c-|->V%vI%xM3Y3V!9rp%t(mXYBK|b3-g|_ znYhg1LXME4=NL!HE5dI=lq)Jp{ISR%(tKjHZ3{e&~x(NCDJ_mhH1 zKVg5G8A#v20T8c{*cfRoSl2pMiGuLL%X<~^&G^|hhLQg=O_wzFTLI58U?MDC?G9pwWdpi<6En}c=kY&_dTNmQUXL&ET!)r| zh{O6$>TXp|pMu*UUL9n1*-JCGIPH#Ys{>K!h9M%{)#cR%CX*I|XPol>oN%VMp z-lpf_NOKBvea);{W)Uu6`wI0a1V=zipn_)+%%QN!kiT%?XJ9Alhu6%`4|OPt{~r|T z9=BW~un%am|FPYGxDeteIiCmKeQu&QDn zp^19u#KK|><^i-{6xp=OCm@FHOYkf&a#y#Y`oyp@^E*&s8(T!PeQXq=_}7hXLHM1yUS%}) zwaL*&YDDNKNuCSBF-_@iu8dIg3wrQ9bU%NOaBWj;=qw)C1#g;5*aSAAEZwt>lcO$V zn*SB%;)5rn+JvubumD;fv=Lge1s1)5|>l2AcP%Y`xQv60~D!ovg8kF1ssk`I+0|9JJl2d2AGA z+7^c!nL>syb>9}J(N52qY@FF3ByM^$Ey1GE)+(l4na|u6hOw3a4aFujWTOv~nbg(7H^`f5zxCkqtST-~PGvLe;JS?_!9^Rb5O>o{xf~b2Omk3l5lh~l$CM@F`T#qZM^|l& z^C{eV8--R%<$tEJUuikq`gcV1rsR+88g(-=WpNZ&`!ao7oSWJPCZHW%t;}^uw1(s| z_tq{Pm7IDm&vxYCz^tu^%VpwdgM}%}8a}eS>81Xx;g7CNSs&`p4~Lkn&gSyg1XlD@ z62mL27`96JCMl1MX3FY1R=qWs%j2C~o)pdS&_Jdv%x3s$HdBTRH=!$+Z;-T(kT`Aj zFy%`#%gpD2$CmKswW~gr&V3UVoT?NC1eumxq zv(heb#Y;Cxk7*KPnW7=RC+qnmzq*f&K2KoDMt5}x$aYCVHwj%g30i|xu+(#f--SCy zDE>sId?yj=SVCvi>q--zh5%6w~llCYW@>>Had{SDpI8%TrMt>bjELzxr=>jW-}WRa0kVv z^N6U;Ww@}Mx!1Lux`+bWszSs4qBs^IeN z(mw){<98iQDQRH%B!-!dE*Z>{xv30?2z^I>ag>eD@5*qlM5_nj)ASo=E*sefvE<4e zt{bZNu+RqS8n3ZOlpfS<}Q$!4UJ7}^V-(Xfq}&&7^);@l z=8P5#)^G7qN2MXpJ;1l)zrlWwNGK$|N(UjM)t`%A4}Jd>2A$ zqyFM(P@?j&OidG{+iuMl4bsZ{g|f@TlvgGAn?&9%Ge@>G(yyn!aJTO6GMFbL#^0pjfy+zsTE8C_P5xR9t$udex3An*-6hRQn7n#Rh%K( zkap5D9ViPpDXRRWrxlo0uo7S^u*I?ow!ZgC&x<$=$P#Q>(n-%LDxo~V?#e#t`2(M) z=L6kNzV<+MfgyRu|I*`qKv2c zf~9t0-gsIl*Z^R+C=-d#FP-#dPaV5nu=MKCNzcPz-XQ3R_>-O|f!!q7E`)T4GKp>$ zY!dt)MNPC^utC7`m8<9$!Fr+fuPN8i9fBDIyOvf8_IHWsLb_Y9naP~A>*yZAZXI+o z8T@ykDG* z-9(QHuW!yt&rVuK8wHyX!JZQApP45;A!cqCG$unCq2hPK=%pydMZ#_ zkCzax_*jgNy)D=`)r>tt?+Ug%m$66bZ-UK24?0F0=sm&Qf^DP^1dGNnJVsB_M}nEf z!Y2AyuqpY>3q6BxaM@s*ozd;|nS}dfJ$u?lM}+5)p|*>@608n>x6)hmwO~!aR=}}i zg1yxBq-V1FE}al;T{Jqd`W`;T<8g3pTG#H=;n+`t_0zEs{Vb>_!u%H*GMqHpLNuK| zq+iH@ibgXB(3LDT6tX`Of{$S%BPs5>35#B}1F zq>!r<^9S+>mLqC@B(GqT#Qe{cAQ-ej%^#F0ScC8kN+nTLr#V!R3nH%)Zgd@TgGc*|=Po$K1*&R@b$FDWlEo${;Jl1}P7N9))HI z9G$`Ch5020h1PW$jdR__UB;nq4%}6!sSm^cSt3;G<}q39DKV7NAH8RrO37Zu@Yjq< z@ul>zc->^5j&f`NS%7x{Y7~=v5QZ0dt_;6(L)jHm%A4X{wBNZG2i0F`Ls33xVpw2i z=o89rft!VH5&F+4m(rLRuJtvVSxSd`E`a>26(Lxd*!?1}M$ysSgwyqlK(P+s#ukMG zH~K>Hi3j2J>H3>MKhcj{;2%_C7~b-u{pR@LE&mW`j=DMCOSkpOuzBgavJ4yc?%Czo zHoOaYFO9J{gKNm z`b%z{T{+d~CvkAzk7oLuek@Ziloy3EN+|0+cfs|XUaa~vk2sXf<;%sDwHZuFkzCHS zakfsS?2ppOh!BJB4DsXX!3>|YGh8D|JC~OTeQ|6Bwuzrv7@o4+50m-1ryLrs5;NO{ zJ0PC9Bc$9;VVy$JYR$W8bc-oxef;Q_XEN7A!@%^45Gp(_6{;#ZO<6I_=+d8C@VTGW z{Sp5uR5Vm>0KF`oDOdM;2IUt7zM939C#9TR`2y(Xe5UB-H+tRlf&NL8kW)N)1}s*2_M4b z28mh!a^}vG1nHE{+{`s%8pewy?Kq(A=<){G6in<6;>2(+e zI;vqnbpHn^wf(*W{JE0jv@(|Ajx2`p5}|J-W-kkTPT(PdBhxt@Eqxe1BQSKWv_lVL zwuJ7XtRJEJ6F0+m>KQgv{&p7jt1pQwr6p0ugbEsOvL<-3>vP~jrohXc>-$zwa7x=6&qJ(i8Wj2rw1FI+}0ef^A#&eC` zQT_&yxmDmEpjyC-mGeM9)U{Y+`si~g8reYCxgCy<6Gub3r;~uJRhjfp1H*@n(*WCy zTyAffUV&TLD|;M_br-m`g6sZOhFgCn=nJ5e9hxhSvWwT`>n>gcN}0Ma6d~at6TP%O zT)$XuLU0wts)Y^<)=Hy$XBsTjQpmhkdcGjjV5KhwTS?cuPbJtW8Q(3kmKov3TM9$JCPYzN ziB5Uiyw?y#^<5a#qY_2)1ku1egg2s4bV{O&-sQ^#{Ppp@ncWh-G!s{*j6K$;SE7#&3)V^>Sn3i(@${J7 zE35!IGBJ(T_tZsSv`$IPrsb7_NngsN=Xx=wM<$Ox6s#5fC6Jg$UkbK|Haa!DFGuxe z$yT~{5M#gg>0Hl<^CVqMPjg;~sswGdEUTZF=%*zS?8Xe6(NFK`qLw?+v;1^SusxRk z=r4YX>dR{OSkkgt@{Tac27R*^A_2`<^y@q@Wx7?N;;xW~g zj_M4Hr+z_VSNdlJyW9~1_HCrnj-nfYos3}pGH*#NrJl8fpFI?xdUs+sy1bu`C8e%U z>`t!>)=DEvHzoF@8FkFl<5xw2b}R(*RkTRZJz~C!mPar)Uq!d+7_s>(x-){Y!9H}j zzQbS*_3Y1BE2UZ666l*7mVW`dOfj$h6$>hZ=lH$jLkRDG#wN3 z4Ky=?vH8KYoNubodT#Gf`bjX1LKqxIY52;!-QY;_pMzBiwvt}!|5kG1NLq3h{V4Gw zI(!y;E8J&A!l?I(Y{m(+8dpth%7SC43G{3PTbat(i3oO6&o2@u(52_G5(2k0$U*%q7dG=B1Kh_!f&j|EwuD~7RL}ZLv;hJWD-3on66|py(k!0OS&UJ z#B=LpI*FU^_V!JtxC;csc(5c*rfk9X&?8mz%#&&BFkSN({TJJ((8S>#^`_FybFh^< z1})J^Q)#_mx|XRlX+%Uz2x_L0o!{vq`J7H3!CEmPx|60;jbM9-4bGs)A{aY!3H2V` zQEw*I3$}+w=MRsXN%8nPvt8#Elr7k9GS%hL6|`EgR(dEml#p}<{o2T)dOEHoA3kbo zuXrW#Urcpi-=Bk};X@(t(8BbjE2&7w=<}4Xlq;#HV0-BKj8)MAO2ij6Y~g3T(9Na> z!KC|!fR2wa9~zvSG@JGdwwwA{ijwBg<@iX2N5P2F@}#+xeKBKtzn@3v3%0`Yd_r~7 zJQ^?99(s46;+RKw3Z`qhihPqg>RnCUI$@!!>HJRU)ih18J#4DRm^<)t`jdvzX-O1uF>942(m)_>@j^(Ri6|L(ei1G>f3>Z zv|6w|#LR_s&2;AJ2AjEvpWUW+J%f`vu*I1DLewIXdc6=e&tOSiXA9jZ*lyx_Ewns> zalPv)6c$uBaXqc=BziqP*hzFTZRjMqn4ak*xtLz)BzYsf(n<10db5+{jr3k8$tCnj zsFUat`m&Sg68g52=ra1LljJg@OSpx5=q=13%V>*WdLx$6;d8KmoP(VdY^CM5Q^W6yM>HUWDX1bkk`_U~2=1oXiPSXN9 zcC>0{(k*l>g8l5jD(N=z;R{A~bSakh6kvLU`%h}T@)?Y9%9M6D5Vo`CHXt?R?^f?yj660C*CUh92o5DN>|f~PR!L5 zXzDPyhUN>V8(c%jI`QtNpE~jGrj~gf_3okNg6Z|{p_{Ji;H{Z}6SaK!Jb}df2pN2)S39e;H4-ihZg*V)_ z((w?b2o_pNUlqQeu%3EGn02m7Z9Uy2n7-$GnC=uzH}No4UdL+Mu@O3kIWU~`FijF{ z59L*^0d`F%$w#O~uvVIdcbZ4&h+w-z*cmapL^>kIX!RpWkI+4W=_VefO@i&QY%YH? z=}~$og6+-7!?Esrg6X~FQ5w_2uIUr`2HGT;u4M!56pUXOwkK_%p4YP^_Lv9z?@HQ8 zvm@wh{r4w5NsAXTQ*Zqydf*)FNx^ibo9H>g7EwKYn6!y@o#iPwCO<6LQ6-F?{|p_8 zV0YB#0h_XzEgZEj4%L2|^bB39qssYs0eFVyM3}p4D}gPH@Q!!;0+KIBu)?xo;O!Mm zck~%LD46aVPO1f4MC<4~)cdj%ZwsA_@cuA_eofj!-ELrS7SRHulDw5_BG^~zuSw6+ zq6qc_c+b%a!E}S$=w88egWKqlh~&qlC2ymbBG@HLp=~?8-AQr>eHh`rrWS^5JIH(^ zo7a^-PqBjON}s1>!4?s#d7g?o@m`?r5gydoUZClncspr!g!e7#?WCO%>`_R*NMD|n z#E0H55#7Y*^*p^yH4%*S^fJ*>=C#tj1`Sw>U`MT6Yod~0rW_rUq`gc<5gsS)Wh#&G zV!OE^c})c4q`gcb!MK46y&R&uBTVilZL~ImvH3Qdj)|VT2^(yqD|Ac@w$Z!@j}5lb z!U&HIw$Ymrj19KYLBVu`ZS-A)$M$wn=wt+CgS+URKyJ>%f_cn6Bo7}guYr6T@C`qtI^n#+%YgB%#KAFfA{2Fz? ztwVGV)d;3fvwP^8PQ1O;(uud1KJ3JMosM+ky-q2&cj(+lx#wVAZkP3M5&d0R>f1-7 z&oUKygXRdPcgr_vUIgPby-A)sSm{w~uiEV7Hz`@iBu#HpR)oiCdXtJGynDM9Kr$G? zI8ATTB4B909-234xiH(Y)q*V|J5HzHq!Z!xR^YIQEO&}|nc4Q!pa{mU?Wg^BF;5>c z`{`@Jj#~d!(>-}VeXnEU=zjVaVAcfF@BCJ7j^3m(Ygr6p6;jf1k+vHPa_3e zL@DScsD~q^t1M2ZN^1+ad`&(+GNnz`T;Aa3@^yIiH_*+13Z;sS4!;K_q>7M2m!>m& zcOS06WdoJq{6L}oc?=(dsEQLereADVaXG)n!~X{4N2Sai>0!7=V6Q5cywSpvhn@H? zmM)2*h@?i&O#Tou9T5NMWDX=l|AVL^bXAlZ#IQoY$Y=@TUL<8sgx#HYc}N z{%CA&76qhQ0w{rzoC33?e3M$ z8jkiy|5r#Sec!)bDUP>0mEY+7SGw-vlsYzi2(2`d1u`aT6{Sa{qgAGIt?7LkvU~?r z;q(xP)2Yzy@x@3rn{{LELJ=;UEY+yjVAhFy_D&J0iKF7IeuB*p`Gpf?lDJ=7y&^wP~9$i>IL=j!S@LtXydTK`j2STo$p#N%8Q!|+MYFkD{@!^U?QR-IwtRSy-0#^Gb*aiESP z2Yz3}?>@ZLCF1u0e!cj84Zr*F&nso(_W*uV@%tKn_u+#d-aNPfHA(=q;cRe5nG@e( zGprO?E3iS}aDj~iCj-XOtdJmc1TGNx03dG(W|Sq;DJjoVW|U>nQsohTcT;$NkD@PX z%TeZ&>J`ctn7BPOxNHDDpbW-Dy#eyL$x`wDD0(K)0hDn^C$+Lg^0ZJ67;sd%fQp1s zE{rNE*Xu$?uGT6S20K)rEsqjRGmD<53{zEX8|byThh9Nn;5IWKlsBlR~wS?-bA8E4kxON)b zy~{E+rO_0V9))jf*on!eMfHiwQk2t_4MN#WK6f6<<9c;b=9sRIuT^%a6Z85j3rsi1 zoTnV1C(|!fT1~%KU8F2E1uDiXL(rtll#$ZB0sI`_&`1~+HjtrwU%3(R#=e^rm+8;&-ycp1eG`{Q8w|ZlcfsUC`FmmVu`V2; zkIN1y8%)>PK2%Cg&HWFf)^@A~`Ox+i%0`?NY&O|5e^hn=n$=yV5i#-V4mI6htPWR3 z8q3rJrjf=<^^nQ!sZ|@4y+s$ON1=Zd$^-lp)#IkjuG7?0rovFw<){`Yn5V8lnyyt( znQb)GzZcc25+7Gx+C$nVl%MX`hCd;hQTD8wq42FozVbLj z?b3`RYN=^o!7;T|iL>U>3gg7;@1gUWf?uF>ZWp5g|E_JWMy1M8T-eSsBovx(udlU* z|9r$3+ThMNRBF2{C58-TM!AMjVlEwMsMS_gPE;GTD@%tO5)_|hFEwhrOLtSPvZZvS zVYun_!Q%~+l}EKHhFVh!K7iqLUjh0%CD$8vs3!_{!>wJ_hm~1cW8n%zsp-#xy8sK- zx6#j<`>!>$N`B^OcZH%h85U^SRnLRui)u6EE1&mi!|=QkM@w)>dQVmVM5R^p!;?*;2P7)H zw3{*;jg?Ae+;rnK`pMd4JSyB%%CCjj8Yi1J!QIoKv=|R*H&xtZJgQBsUXHRU_a?yg zpd8Y!0X(jCsR)Pg7}k9!Aoqp@^+Nlr#?#9Fyw{B`^}?#RjQQ%|vV+D_^^02WV(;Z0 zLYceyaZOF%X-rVMdw(~c*6xZ{O&RL`-VRfxnv1S&HE)UbnNDj9V^q@)b!Tac$z`5V zR$>|sw`u_!3I>^uYyVEW#1tB?JZGG!)~XvaXPYXOHy}FMw8p9j{3?{6K)F`Es`oO} z<#Zl8AZ7^61eenOrPQ z`;q5w+8UGjyuLqZ3$$)w-{UEvuiX_W_ozxSBY-iLQqD2An)W0YnTN}yI}5O$o4 zhMR{E?2B?;c7Jm#X3P=hqssW)F(|X6lg;VzQ&BeIMygf)CMSTsCf_hcu*XE_>iIpeJPe{ABN{3x)I+&bk zIY6t+3oI+l1=caoRx^Y4~wORMSH?)8=(=BH8{ESt@)g!3)O)rr-kEc?u# zr(SG%KwDb3*Ki1#Zn7}E)^gPRLEIwCA@qaWEyv9h%U4-;ikZ{qUY6~aT`GU!k)YmJ z@v%j*bS?ZlF4sA^`vqDpC7DL+8g@Dvlh2xgd4P`kN~_EAMilzF@^9-!)(6yY!*6Z$ zg&rn?SnX|1)?a&_rbR;%T6XPb3__UoWut%ua17R|Oxjp<{z9ary6xj;Rx z{OU@!9g?IBw_Ie+K$+uoNaf3-15`CA*Vbq$?^$Tury2{ZZ2Qa)#t(oD&pkWTy;wMR zsHXnxl`~Y*Xq#-g4@wtkTEnl_73LFB&8QaZzuq>-@W1m%P*ew>Jz_I$&{>bX#Q zV|EZSf5VE9VBo8t1TkC*xZGZ8=<965r;(h9LzaAZoBg=u)4`wEXPJ-W9kZXZ{M&lk zen?pokBQOTT%km$tA_qcW`bl^-^_ zv|`I9b&g?``yeC}93Mr6Dz&zLpG8Gs>R4lnQm(E(7FDVF^8OX&5sF7BE^B_Dwbp#= zs$6UI3S&3>oakAG%|+KlHySwWjbeUI1P;gcV7SWnOT$&ZSE{tyGw+S&Zrc{!XqnpO z!{{}pAJdOUFBSQvAp_qGHCT@%raOjP``M~3MKFAuVzvBWD|PHpZ$&>ZHT{uuSUIj- zR=t}tEQx~_TGtr(B4~|)XN5J$>k3Ds^$uiof%g93m5#~Q7i~OtE~@vL8?DcDt;JOQHJ50ECt(^`9+^Q zTCHy<9&;?UzUe*%SDN$w`*1XbX#NK zd#N>sZuoR-jlqGh%GO9*_Zj#WY9HLKkJ)Thy(=6$tTRGo4KWL>b=4Pw!F{+Kt;cP( z!jo=2wyy(dh-CdZxOc^rE4)S|m|`>5#T>BCD0?JkpY<1X+GVtBYH08spCgW+V*6@H+u{FePbS5ZM2K;VR zZ10tBcOFoh(rrdg+*<4vKI#85D1rXGR~RF3KHzC?a0vgvtvB}#=jCYYWy(Bh>uJO8 z`lC*lZAR5G=L&6i{b^@{ZDMtlE5p_!H`X;z`oGJ@8?TX4Yq8W?F6BF=e5c4P7PwaE z>xI5vDA?lQ)uBq79Xe&WB`%J5^grlIkPUu9CZ?2urJu%bupP?(I(ClL-EX5K!N?!=B^a0F6?qbj{83+m zkw5C&Y}--&2I$?by+JANI>^*u3vI<`v-y_E*>#?!()t~?l&XtR=I{R!)M4)ND1YFd z0?102iqfUVsZg=TG^p<-o>t@V%Bwwd5TV7MUA7_d%RIACUggFt>){9``humsJ0t@wWXd<$x_P@OjUB%Ax@kQST`~ zXYWP%7YoDU_(PsUwh5kpc=pi_&k0a?nSM`M9nX^7|Bu=}j#J{kl)N6dE$=JiDE? z*)wONG8_0^RG%`o`2`cx73_v`!>#q-Q@s^!tSyh>)W9$ zvp2)OFDuIH0sS&1S?D}@=X&$)uQ@A1-elQ)mfCNP>f^1nFR{Eq8%#T~9@g5~WTVR8 z4>zi5bu+x#SU_*XpHuLPPt+joEeMdi6-)Sv?&FW@Eai#A8)7J%K%sY&Q*uXW0jPK`^7#fY^Gl3Y7 z+Q0D4vOe7PgzqOAwN(A5PT8N8wK-2F0tm z;Bo>!3+SdDU+k_io$}?{M$M-n+cNd%OC2`)YmX`)>E`^6mBg=u_gu|J+^^ zs-ztJW8``GH-r2**(|_68&*VP@n?qP@DbuA)D35qIGUw@^&WsDX&oM~JP+k}x(ows zjUNSAHh|&Me1;2B82-|y5%67sQ~GmxLKefXYbO9&i>3hn%>~I29j}}T%7wPda ziubh7*usbZoqtZ^GSJwGV2;nmjRi|-_$Mdk&(m4o<3cg=gX^Nmj|mqjeDz_#|Jr|E z4sU)jHk2%!bJZ%iMEUE_x48D?e^eNsqT{x4IIbTq#L4{#{Eozj*rV_}8kY|j;dcy{ zsz!=O4&o8q1R9S4JpsQLQ!f6UrCgeX0X-RCw@ktBR6oEp{7%R34E$b#u|E_4*??K- zotNVGGWnNwiCzs~_EI49it<{_E6RH@KN~L4em49&CPuwLdqw$E`Poq8`q^-aD_}fh z{@IZ0dBK?LF{@|He<)|n2SNMI*e5Q{@LG)7bZy*KhL*T2Q>phJx_jMo$!v5 z-wI!?slwNY@-?Oxd_Nnm)x%IVZ0_{gljlw!8Q3!7bxeZ3tTyE*1TDPD<@yxPMZ3kq`+*5Y%3Ve&*~^r2WyrRgGNnybMy^sSl&h8TtL9fIQDKB-U&jLN)K z_)oC)Ru*pS*ISvYC@rfVsZwq%u_^ABBjz~w75ucND@vTZWrq@rq?4=VsAg7GcWbgG z&b?@sg2JlWKFYr<6U`Pi&NYW?;QtOaf*fnGtlsu`U!`1i!Uq<&;BoydcWcqAuWOYt=5^7)TOV6Bpr4W!y^hUY zUz}o&a<@LQYHmN}4W(vPpE~7nW!kD^bxK+MOd|xQnapUzyF0i}C+eW%bH} z;KfCRWH;lspfT3^|4h)>Xj`iM=YA&uC48bV@3@w0w6+<_E(Ck*P(p<4NRyq zL%3OSk7AJ*jT+L%z%HaTg;@m`@=r|>fhC}f%{MF zK*f(PRy9yLUZ1QX`DlgS2c$bhr6Wg@!L3e*IbC(QTMj#Pu`lu8%RyhXI2ARO9I0eV zCwFW5wpoMlH?+~oCO>x`K&IW$pnPF>$ItJW*}8E#eMN>>&7QyNj#226>0_1o$~MPn UVHSspUD-UAJb;o8Nc~MSqS_Mw(qICK{~}X*%=y#$}I1tu5PRX_HxfB)Cz#bi0q7*1&BhMoAxt;XdFgl%WipZn`YeXu>1l}w%UAj z+b-7{vodm9U0{zuQ$0;WxjmbShHzk*L{i5B@39+LputN&lVMz!rD+rmHSU{Rj zMq*Mj6l0_~rAg7YJ)Ux;v@oN^LG#-kTVf?em4gLF{L$q7a5VC7+^-w zhaZ1v9DHU_MbaQR@J4RR4>`_sXrB>nX8bqW@!L-4|6NVV)$t#| z*@ose+IB~mOx2RBa}C>eblnphMyE+XnHBVt*2I^lsR*QL7k7;YDC2EHp-n4+ay)4~DwJWKb8jHv+?SzRjf(W7Ykxp3#6X zq#Tefvb8Enu|?jfDp72ASC@pDAKHs*aaOmr&`RDot=FqaS*Wrn9;RrK$2qhDlF%sK zF)Oq?7QeK%8hzc1TQwAn1y(3Xb1f*eX=N;U34-hvmZSz!Q+(UDRL?f1ltU6jR!cLI z#i&`E_|o(r`14uYwBFnL4cf29U5cQPzHU-OzrY5mP0J$w+8+7Kcu@Z%9B(rN%D-9l zHQ$Ajsx#EkZxA=%9XV3#jr_aTmHHrL-ZsUi6?$mSy)K&N5B&~}7Ut7}2P4Tt6Q-_4 zx#?~YsT^v99Qv_vdtPEMhzafHo_ZN-_5w2J#}ylBJL2qzI8|@x4~~jdLo-)V{mobh zY`7@;MUC7yv`|as8TmluwV{dOG!$c0L(`qmwl)}`)%*Y#{o{0AgAuHWaYl>VxD+dg z68aR*;jJKs)H%n{3{j_i;xNz?RHb*93Dw%;z8wZb=Ma~#O|hE`gQP|qbUTH~=nrY^ zbq$o-D=crXQ0UMb`w|!h_Gm4Z+O&3q$Xaxe7PWG}Scxj$!)8!bLwH1q#b$cQNK`EW zHnFBRbdedp<9u#kp^FTvFaseA$4b5)!L~ z?2+PO@k3>x{=-?jS(M-Aq9{iV?q!1kccAd1DB}f=QY@c0S1so592OrIa|_UQx;ekD zsMnmo4>g-g*#T$7`~&T9T$Ca5?vUHr9s<@bccAnbIOfY^EY^?%yo}P)#(v}DjJl2U zCf&yIai&mM44=2dOifqZ-|mcg=1x5J$2`lQf?}Sv6R%xQkG1I_?6Hd7ZE{=3#W~zs zTuiK@qE|NzF9~yUctbK)L3gmwO>URk#LNo^>qT(l65I)e85HX1c(=>%4aM+ybz+jo z?Qw;i;NtQm$82_6LjOQPVr&vqiS9%(mB4HnM7R4-wj$SE>{nJtZoW7@9LvVsAr~&X zjYE2y#<{I-+n-G*xs(1BrRPtUIbd>okQ8av=$X)?2qG@d9j7+&1l9Awj~LA z93PI9j7U%Av1{TO^k@#FG!BO9B$P&XWcCPu*u!3;(*=74tWbuyWOs7;5lk4YBKo?+ zf`&L~#-;SS4{T3L$jc~|RCj9ADo8zPA*@GQT)I0wF2kKsSVZo4h*q*iG@zwlLp)c= zbZ26oaix19!PE@vYsnC(L+!h2UDwCDS?;W;1)tyN$!?1;!W4FAhx`!cxU*oyofbl7 zYM}r)p&*DJS^`SF$N%xiAD_m0Qrdi7P^}>jeMcX|OG6^-}9B-ANhVDH;GzAgcjmv*0dHX z{!k`r*)$9}7Ug&forR{>h{V?#e&9+}kW6#(!)}_TSD3Q{#n96{7akOOKFnj@VtK73 zLl?EcV(>R)aU>lAxh-^sW25f)A(ZsHAnqRvT41J`SqNzzE@~44e<-_?kvN#=d&|`@ zGDtVFJ~DrFuvZS0vO~F`%^@!OoAYq7sZHx)qahz!SmH zJ#0j0rW;^*ux@xm_87*kEMD7;E@pj>+%!7~0~o*d|&V3Sl*;qm6OM zoM|vJL^pyp#OR?=7bu}$eQ4Sv;Aoxio&|l>CQ(yEMNo^eo>#Lh?W3H($rgCI@>Qs< zt4Hs>9iHKoThM|l2A2mGiv;&C8tkMw+v6}^GE@aqLm#5Ab$P>46nWegIL@RwIZ%TH z?M>>x5%qncG>pAHG#(?ZnYragz2$D>pPMcL80lMFhw1@57FjbkS$RD2{MeLmSG3LM ziz&DgfjtJpV$q|u#rHrry0sAc&4wEf4`EX=VrnQsDU=E4vIP`Dsx4H?Y9_bQZ4!~N= z7j;wdM2LtQ2k~J-eZfEvSK<<t zXMzJAx(wpb05;+BxS~vdsD>F%z0&_eGu9L9aU#d5Fw4+Zg=mjwm<&JACDnm9xmLW=SPC4o}GFbh=y}^gmNP7Vm*+|>?obdCIhq932++7%n@);ORYLvB1)7LSz=@}?B4@P9! z=H?-MQJb*AH#XPm<>$COl*^%uKpQt9_~v1Z^(7E<#Wa67u(sf0P@gw6f-i6w6Ip+` zFFcY})utUVBYiLmxcL%hY7Liid9aW(|j37oTfH$V=(&J(dIba zPHyg+AUBsQ%Ub5vn%K5HS%q8(HPUN>JGKt2P!1~c{6yc4n~-)HH>qJfh}+^eHC&DY z!6P@iVFGhaZcD>N=BiCQVORVvMci4 z1aEj3R}&2z6%3#`i&&#!GOC37Au=eV*fgabN4+;)+0F<}MJdjWJ=Yshk3)QxP>36W z#P8yQy7aoQaTZq20<+uRIGyz!dg58#VcUYYQP1rN@kBR!y>bV)Xy#B!~`r z+ybPMP40W{IJxoVbiNOBy7n;80A!ooiWgvaXjB`nLLF=>+@xbe!%Q#`PV9L`eWd3V zxpkuLp@yp=#$9a+X@4!pB3@|I9_FjVU!eGq?HXC)j0IO{dsd0 zTEjn>n=f#4{LQ>=$7PRx;b$#1gIfC3WDxy2pz#dCX?|H}0)siEMrZDeGH+t08r9q% zt)9_dJ#u)GJ+UQF(|j*L&1od!#$ne;zM*Mqb3Qsnvzzm6zI@JGBj4_#JIGKo*Hq`T`#DF@#6So- z1)%~ES}+~G=r6@V0f&T*ZGqxPc4HegAB;TXoa3nA3l*}iOpdS~20JlPgF=KMb2rvS zUb%9pqlKfzwgmUn;z-)m?n-fF%+y@a=BbJKtq_K80>SNZJl`Jquu(rtb6EHxinkp% zV)Tk5FHNm7FNCJAVQyq?QG6t2n%%{^x&DiY-qhT?tF9C@&6%6y3Lbq{I!_5{8G9GzkT`lZJZnJ7IHu#W7 za@3Ya3*O=W58NKa(@D19zw`vI4>jDb262P**+1=#M;cS;4jAjQ2@fKsHeYq5a(bQT zPHPkJLuoRWMDYN;5{w*!%$qrZ$`M=d1BjAYXop+QgFl zgvPsJ>~HN50dR8l#C0@{mq?(M+EyA+n>bVn8kyn~JF2Z9&e!-0Tq6B+pB$?O>!CJq z(P{;w+=AYc*{VNOr5Ktbkz+Fg;W22cp=mk%cPRu<8g&Y)*3M@+b~1TUBVo@VbJ++q8 zkyTd>E&Li5LMu5+zbeP*hEN64)*tWnh3*BL11f5aJ7S%8-$v+=5^9cmie0>;bM?>)9nlcuV3Bx+a-%xUP=W2!^D=#aprOxB9@mc9 zDFZIEli!T+?Bs~${fNv?+&?u*kPz>qkRiW99L?!>ol& z_yd6Ed$NeJg-%^0kh_R?Y~!Sh*tgzA+^~)=V!pnBrAE7my*4vJcVYQ5 zHvi6LUd*!f?#kDXh0tAiW7pnYc!Q^Rmx-_`jdmAB{Ti%L6$GKu6xRAGj$*uepgti3i6W{bj&_BU2p?r-)d{Vk3!?C=ij zygj|YMJ;%t8mWPRK6cGYnB65@C`T5smC!7-3H!P|{i2gU5S`{?Gx1M#^oeC;b4@yB z8*SQO|1_~!c79?R6})J;?}m)F~qbcHGtKBqz9k^qk<)>&OY_>p77d%?XaD znTg~<7tVvCMh*KLt;H1S(=fP@U-F&5J23cfR^p<@9$di^+1yZ6z^~%;3b;=*_)~>K zC)RgSdNg95l^o_5Y@Lo59n!*kxBUiAF<29}^F0y`B>QE0#<7@@vFfq7TXDb*UEsnPp^w*hE zwN2qiOFT&z#!yt_ay&HR81WzigO7+~cA$`B(mFZsd^8t_zQx7`6Gxiojf|X~l;uT* z&}V2wr)M*s*M~nVAhwf?ie#cAD@XV$Ko+TvXd2TTIAL_U7TFRh$V5Arj*Fbb29Dx1f)OWycRh# z$3H%UWoi>&ya`^f41?F}_ccBP@68D;^*6H}SsA$C%ZEOjX}T15nuZ>{GGGma2d0HC z{o1fSa%E#-xWh`|f3Ttl^D26e&qe0sWa8~+8kBX(TjjML`(o@@xOMux=AP}C*UZ=FH9tmjf^hTYVG?D2m~7@QmN|YA z&++ra8(BKn72XL4SLkVmJAtt&3q)RZU~uuE)Su_sdBOkr*2DXMed~exIc)fCbYfv{ zC(!g91~J?vz7wlq$N8*^o`9dP>i7E_o`)1~VfoNbuhg)UIr-7IDg~4}lw#2y>a;z? zV%MILc_{vQcc|tn5m$Y@aw+zQ8RkjS)47q$u1^bdMa0ezo=ry(d#DV#gjL2uKHDc) zKF~3pqz$_eNpk@^!;X&Y_Sz#V^O+ag&C)`aHeQS|XvSiTl+-DEXy$gpo6cdya5MKh zTrjIm8-ZH-cC4s_tq)8l7>zH$0oGg=HowSaoOrO$uDUi~nz0|^`NF~ZZJ&;A50rO` z;@8_Ow!KoR1Y8MNZ@^v{>s^djXlm$Ego4LsZdY48jwKTHE#IifBRAwruSI1(mg(== zc*DouJEge5j(gW+z2~8$=Qxj5M~=%N%9d{=oO6y#r!kSdz6@N+Yb>V7hdG8OY`^sb zMitN7Q*Z3icS|i%<^rOmp+xuMH}lfDbLy|Vsu6=kPcJ8`$pmlArS!{oA{Tg>gU8g? z;A(k}C=hw?#)5S0+zAUf;o+We#6v0gMYqV}irq3zj-=0v3!~Av(-N8Si+hcfkvaGo zfT_hl8eQ*yr@Ka<3!UVf-#wO0Sg16*#kW3JqdGs+Y@x3RT_N;Ip}Rz<(f2egj1p=Q z{s+FY6dRom$9-tGQA5V&cqct){2d394%6m%8`T#ueWu6ec#XDsf6TJcv*-{Hy_6cX zXf(HiIn(o4y38=%(m*xXwb|(PB<7U)INTlv*4YUQHfjqpU7yHac9yW0Bl*l(R1{|S zv%7Y2IB8|Z?{QB0D4oUkcv!sI$aFv4IB|~qI}Rrv5Ys`pv{7%E&~Siwd5uQ*xPQ#j zsIBC&UK-7TRHMaiE`NvKa?&Eywb8Unwlh{5dA28)^D2H1LohCd-K<3HHo6Qk+UV8< zrv4J9j=&PliKU25+>*ctf+jkjwcJXsv}geQQ6o zduaB+AbR45V&+^nkf}*r_Q>M$rXbt-uSBLr6-;lG@?a^CjsYi3~okRbZSvg2>!nU07F6xis7T()rC04}@G z6E?b6f*4uEI^i1s5?rqKGVNW)v@yi=%NjP?6`}ZOzNF06;w&g8{Jq%F4|#1BHaaTF zHPXZ7CuIoEN|W-W&#FZK&;Zu|UZf+0lbXPsFT&DAUAr(ah*6uQRevKV(asQ$*)P=` z%EAy+dm(Gq#)h+PRBd2-FrMl4(kmmNqtS?5uC=gBTZMiFw91OF5_(cEQwR>6EkxjLWeuamc}!pR}Rz0?kt@h&klY=w%h1;N!TUG0~-zP z!nK}4GTP{C>8EETRX3M2=e<(a83r#%VabmM8REB`o5NroAHsqSm}WLg7|N>2DNO$m z{+7Hh4jTMrtz^b73CJsDtIVUC?%bqD&D@x$ zZDButSDhBl9~EU5etTin+K%RUPn$O&=U8e z0*zdQdE}0WgQ+r8#)#4R65=eOm9k<^mAdyzK7Ccpz4)?Z`%f}V55kL$9uzyb$?%15 zsO4$!mSkqHek|_Zi)l=v+qX(Q!C&{$D ztp^8ji|G7I?EENnlY{wzuz)he)z5fYC68#9aITMG6Z2t6qjFifN@JOGRF%Z_qG?p+;i%WSne(_Tw_^~56L-Ad<5H-f#`HEPC*A!beHwR88{H)> zJ1Rk3S;VG`WswR z^RjgQROthcEFFo`%2aVSTj(-yG^!rJ4Y)O%7o|!W%EPiW?Up|KMBF!I^IEA6ZL2{3 z-zqoLi5O9hX2h@0_0WNye2)+I<6CM(R=^|uIfyiIzj`pYK*NmJ$Sm`P%DIytktKGM z+^(7}tbcJn^C$G?^3BrX)j~%IJt(V7%mB=9Y(OeFq8*X0H^qmC#h>z4V;{u-bJ5|r zQ(g;7MnRvJp7M?%6}zQYe15ey^^|uy5XQP~7d>vPJx8_&|2 zf?5+#dCyQ0Ihc1VPkDzc!|_=Vqs3;H4acYXj2eK3D&}u=|7^c^iR$8OWfNFsr6to!V3uO_lm3~@%d$^-chM5sBxrOLZ5DJqLzit8q-E;pX+fbV+DTC_?rw=@W(7yOmJWz;l6J~_0_c#S z7gHFmqgMny8mpt%1Z~3DpTI{)ZwT6%!)OD&C1^5o<^(-LZws;tdX(N3WW>BXL63#$ zeSvKlrxWx9eJH3dkI|F#PeG}6M$h1TNS=mUYB{f*Ng`h^D zW%N3o6!c8-Den~Zb^1!s+8Cs)dW6E?h|$@pxjm-SJ9I`+c@&)$WRIfn$&l`%u@<7~ zXv2?WKro3WM(@)vgyT&5yO$_i`6nK$IyCuxC2QhS4rrc4tq$2~vV=vr1eK@L*W~CV z{Dz#JWZ#loP_~%)j^YGO7WZe#CkRGh~3@uI^G>crGmUlUy;3lv!N3duk;i2H6BM# zAk1p9*v$&jIQzH#Bn+Wm4TwVG{h)V87``Nw`D6A3yO$lt};@P9$K+dr;-|bOk(CAyC&N41*1Ac=3zO*o3##G#^YV>Bw!)A@{ z%w_Q^jcGtGQ`TXR?356N1=&A zho^J7F|TMcPPkWg{SOW;o4Qg!qc3{1ptLX31W^ik4x*gpEi#nQ?mn|jCG@J$GwG&4 z39XT!8|^lfyAO1N4g^K}lHP&izj@;#*^5iVb=?C2H@)mSh?Cuu+F8Gw-Z3%FH#7AM zXP?lm!nX+jN0duwTrAf*g=Ut}TfI_X=lQZMco^Hm>eDDDrU)(AQ4<1Z*FbJ;W){=E zcBZR@{w*w**o1e`kR3IJP<^~VH|nFoMTSu=-`k4=qguWYYIYO{d^DnOy3I#_Elsy! zzn;|{TZOxzuhIQNA1vkaHle!ock6iQOmOwUw|>RNJQA~Wcns<@xjej2m@8B#Y{4Mk z8_TR8a+otvhRa;cgFi5l`|G_J=9lzmodV(P7EZiyR(pFR^dw1v_q?q6ZW6nhDxpNu znd6n=ooVCo`!e}8hek%%LH=qy8J(}ul|z|6A^lM&Mmv{p6@F7(8McO>T9}@()WBt0 z&KajhcZi!OMcOyO(xFmr=dfkrXw~L@G`8iptlGfXmW>&;0X+6prg4RJQlYe*M=mqA z7N(DenEylI6I8A$zZjf+(Y&_zWhgfZeLjAqVd zC(Cf?oX*lKWxn1gA>LWTnmZCV!G4x31-i{}|3P2jIOnAEThL603qkx+ej^-oRCCiS zJzBw0`Y!?fx}3-L_Bf_nGMUCouY4x`^sLY)guW&8qBQROs=iF;2%Rm>(0eX1oX2t9 zmw6{lzwKdqXARS;@|EYQT64@>Lbp2B2FhrH>0!)*KJ*y6G~LIk^knr@D6hA0pKU6$ z1+?fGmwC5ijK9*Deqdr+WM-NuoI^sNF@>4s5WzVpv4dT3u#)z|{S2AMbBsq&{x49L zehBFi`ULa}q4nItM3}NYZe7cl~0? z432HFRxk|?W?JXWglc;l^7ws~)4@?|Vz8jAsUher%75GclfuNrnFjK;Gg^^W1HF6$wo=$b4p)k6sYy_n3Mn|LEKGMu5LmlWFhM}N; zFO2nC5u%TSw0)c=p8{fTju96`ZS8VB{Q<|P6zd#?z;!b z6Gck}4TvK5K$eXZw9h&+lhJ5F2k1$c2K1bu$b`FGW8w$ggy??2?tC=2x%euFNbf@jy(Z`YjZ6F5;GlP-s7PBEjG@>P*3|pZMYwUFujit$pcR(&)tiGZ zT6%%zJ-Vjlw}NeuJuB#dWq;V6iyhgH^QtXI7yY8E(tEbqK{vgI?;tqn5AZ1MrVThk zCp`ItV|GCH7EbsPHZ9M11M_F5yb@SOGyA?D^wYB}lh;EId=5*U+V+fDIqH4Jf`4plr1s$;bQnLrh(T`;ZEWRuo zG%pdvq0KdiXtFM&0ht<}%m0X?uLZfPq#j)t`TXuY8RTL*uJbJK4v0@Ermv#t8fPNV zH&Oj9h3P=wMNxT1UP1}=swVs#pxBhMgl=?Ae;s*JsuFt8AwjJ)v}9O9FPbrcWqQ|D zP(wQkBgZOep}+&;zJiuU5xcLTJ9R|tzJiuV5j*TlAJ=p^tfF268MRWXbwa`bniWOt zejqsqu}pVgO94UL=izAywKP(o?!K0$L=n5MrD-}6_q8-LirD>79PzW!1Ndvas)XV6 zgP>L#4u>Nt6|Z~R9ge2Z1*k&M3c7J%eObb2y7fGqn{XL@d>+*&jHeJ@o$=aZbdFFb z(y%CcHS*%}#BsN$;Q4^Q7Ty6`&?}rUk*?;?7-%0o)pJq874$bjt#p6SJAsx7()(Z% z-4~TTsN~WldOnJ#srM&Dy4{mgaH#SbWinOaFDtl(YAoEGnS{vWD*}Ug&Ag8I&wbkK zTu0wtfKo3P8Je>z;W{eR5gkoFsa!|B1RbEQ5&OzSnVPd`0zTy6CXOBYQo<~HP0&8- zZ#k4Oo36p93Y_snOWsPDLs?fa(mQ`HT`XvsWoz)C33F+JpaZmUu;QFc%LVCH{!0GI z9rdoKZtaMt=Jj-OI}|ic&;iOF;DRh|Dpx!}p>zeOVZ#LJ?r)?q7ocmRnk54&VsE5> zcak;HFM^iQ4chEr6C1?O0n_S=@Ues@S~`uPey^WT_X;{dt1FHr%%>ZsvrKo`%tid{ zGadAv#OGxC&puOA%0WYzT0~Q?7pCSJEY)qc(9MGO5!Y*>rBQ@>VZ%)n5vaSkiPm&d zy@?*`P&F)~jh!?X(Nmo?7tzj6nm5x+oiuNzS37CmOz(Em4Btv0byB^RPIOYemA>hu zx`ck{q`8FXDsJHcdL8G`OK6fHy%9^O^#Zh1&h= z5OjcAaL-=G0{k2>83Vz@Wi&}-`oP>x;h9lY7T!&}1?jDb(1A{}2)*A)ww#W2k}api zS?ofucMoL=I)INTgNgUheVt@0XhSF23d#-7?x?tuiUsKvSJK)}vU}i26109y_}2 zTTjDeV(M|Pr!yBI`+RYa1+8o1dI|_SKq=)tfV%23S=TpEFF~zTkB5>Cbg!U&w7im0 zmCV_FbXR5n#0_*Q5d7;7AEuciJYadWdu`&wbW0Syke-W!=cPI#3v&HoIw7dN-gkm{ zk3Smqu8|&PG%@iXv>}Ra95^#^BR$u`jnH?wkJEdM!sp>}hS6Xir>_Jpq#9~We4Ktf zFH>;X>uP1q1M0=|~9wBS?>QGnsE<7kYa)lS|M-T1!h%FVIQ$BxOZqzZ+I0K1nm8XrA%@ z#4R*8icYF461UQJ9fj#Egiq0afx5$ObVQKua2x$ITJfLsP~tW^8%0+s1-7S2UDy%Y zGh`REkoKzuwr8l1Al>G(G`N%IvotcQ8D=xj(&SFU?NlEXvYG9)s*~(F+7Oj}gL=== zcTw~YXzrlEqV`}EygTSFNFS!1G&hQPn08Y4n^_ZkrZ5gkcG4(;$E|a#9!=aybvjab z)OOP3sEkK#C(Vq?Y~40Pb5j)YpzWk>g1FZdpf{p2&XQg9Rur-OU9{>JcF+F8k0$P- zbvhJ>yXeuVkR9%#Em0Xe+(myx5j)&P=3Ci}?r;}n2-4fTo3f&a9quLrZWp@4M-z9G zT}SLM4523~WQV&cDJo=#yJ=DsvBTYTl^}gYcT=MvJxg}ed_fE8H+%}bo0fNyy+HRz zWjvrS&_4y~R>CjR$xf;-(zj973Ux=~i}X_`*&f0j2|o+z4UGLB8YD<}zn4ZtWjhs| z;?hh(`r5gd>X&joUGpWHD@d2U6sAp`gfG+6orEuw{q~NE`^YOuuegs!b&~C;@fV<} zf)>)hls^9bwB)=@!BYRQAbpq)Quxs*7u^O;j)3U@$j$E%ehSN3ybPPR5s8Rb`@{X@AC4$==Np_i!bsry-Vn?eb~g! z7S?>n#h-p(6-!Y~yyVZ|uM_>C3dLpr&zg!@P{pPJhjVDZLc6M&a{CloT){22^me%n z6qn<28L738%VnZ_^IbS|cnH)?k7Rb}>$UX0*;&K2oYr=!N}V}x6?0fhv5E!^b8=JX zCgJ|q?)ZOW;vH$(=C17Ezcu&&${Jh1Uxw-tor~d!%n5AzrUH)iYX^6=KHmQu&Pi!^ zNfujJK9H%-c}U7^L7~p&B^XegadsByeULGL9lwQE8tG7P9^)Iu=m(N$#VKqkyC2hz z&gZg`i41?ZI=niG ztEE;jU4l@MT;=RWH~K}0^>gyr<=ZL$|0&ylGLCKbl?FT+j^ku3)&T^%n2(LQd?cRf zzhk(9-V;1nDm{|i!S6gpdG7FeG1FPyJLoAMh$u%d>tnKfpv;b)H7wRgv~yYK=;k_8 zU8l1q&w~HHhuCuGuyi{+YewLcm=T1(dme#Z>_;uoUKaGoY`A0!` z1|`r8aA%MYzx(lf7<=Cg{2sw?3V!$F_b|S=;eCM{RHGm$zP1B(;Y(+x> zvX`n$2hlpE8jJ8o=;MuuI>yn^S-uH$P`@pT+w@ap@y6uvXYskT(NI#d7cTG1I|!E#cI6&AQhG$$ zXj)+VKq)a55BwOl_zgfFter&Jh{v6+CN<-GWe2EP-D|ouHlU(+@y{NOQbrp~)gz|S z#&Y$j$?C0EYn2xYN2tePe+UfVJ5;N7x#wQhtz4UTKdO}`Jf^y}_1YGc8~X2|I)w6!ny&DhhdgB+Q*BE6F}1|B zC;v;eM2WZN(lTRe<+reTUH&hyS>M%YC{c_#cq6SG$LrI2gR20qa;@6-w0jZ6Rra}X zcD*&;kf$uNW*AN@Ydv{}a&51r$dIl~#7FT*sI7Rgp<276e3DwLO)nX42r7QdL8{Ys zmh7Wy<*|~{hEb-bp%V;Klz(Vf8mdjnbecE;t_A-<(M^UO>gNUf5NK=V$4b36vS3-* zP-6Ni{~pi+^$nz6@xV2PRvEI{+C7dfhI!hFKF@>WckDq}5B1%H2|FF9N(e~u>09Je zt7gxB)le;*c?!Q9IfC*T!(wgYz;lLW+GvNtctm-nuMPCQzE0yR?c3@&<2tP_AE#5x zw5Kx@Ab55li@(iw8kcEz6=XnZc1fvmqsGoSh~CDdFzTYM+UxPv(0Mv@h;auvml)@X z<0&TVpaf;FwjiU1hF;A^7eaBd$ zuCL~#do}kc%AEP9wR5Svj6tQ)_nYyYc2A6IN>`Wmahl52WF))Qye-CWI;YK#RZTn8 z@V1geWk&;+5ur^#nzgSk8s?}!j_bREC529S%`yZyDIkj?&X>L^dOxa%3eEKB} z)pOcR>&I|bKVS&xO`v-b%1M+rr7>qKQ}tx|*P#4<=QL)@ol2hhSoL?{4C)usPUAM$ zMLR-$hLmW>75-AdY95(Vt}T)^hF66eZ7Gc}o1iV1b)wc>J@~I$t@)0M%r&^UYBob0 zoBX1-CMtf@`?j{qWbb!Yo2TVP_CApu{?t>3^3Q#e&FH|`aw%tqETk!;C?9g&KhWL#Tt64`M7dv&N!4g&?#nrU@FSLW!j9b>Sx)x)QVbj!Leo` z|4ctyZ!*`LyANG#UToT$5CQ+2aI6!moUyIy`>{6TZ1d{MwdQ%|TkyTkJo6uc$KZg! zy=YZ;^nS{`LE626J}JP$ua;{s!UUhtER#UjsXYqbF$dLa%1@aWo5z-aZGK#u{j?

MHvn6=3<+Pew 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 diff --git a/1.6/Defs/EventDefs/EventDef_Examples.xml b/1.6/Defs/EventDefs/EventDef_Examples.xml index 2faa2674..07c12caa 100644 --- a/1.6/Defs/EventDefs/EventDef_Examples.xml +++ b/1.6/Defs/EventDefs/EventDef_Examples.xml @@ -6,7 +6,11 @@ 这是一个测试,用于触发一个带有自定义 pawn 组的袭击。 -

  • +
  • + + + +
  • 侦测到失控乌拉! 我们的传感器侦测到一伙来自 {FACTION_name} 的袭击者!他们看起来充满敌意,正朝着我们的殖民地前进。 10000 @@ -27,21 +31,51 @@
  • + +
  • - -
  • - + +
  • + +
  • + +
  • +
  • - -
  • - + +
  • + +
  • + +
  • +
    + + + Wula_HiddenEvent_TriggerRaid + true + +
  • + +
  • + 500 + Pirate + ImmediateAttack + EdgeWalkIn + 警报! + 一个隐藏的信号被触发,吸引了一群海盗前来! +
  • + + +
    +
    + \ No newline at end of file diff --git a/1.6/Defs/EventDefs/EventDef_Wula.xml b/1.6/Defs/EventDefs/EventDef_Wula.xml index c76eea83..25abdbdf 100644 --- a/1.6/Defs/EventDefs/EventDef_Wula.xml +++ b/1.6/Defs/EventDefs/EventDef_Wula.xml @@ -7,48 +7,49 @@ Wula/Events/Portraits/Wula_insignal 基站运转正常,通讯程序已启动。\n\n需要联络乌拉帝国的哪个派系? - - - -
  • - - - -
  • - Wula_UI_Anisia_1 + +
  • + +
  • + Wula_UI_Anisia_1 +
  • +
  • +
  • -
  • - +
  • - - -
  • - + +
  • + +
  • + +
  • +
  • - -
  • - + +
  • + +
  • + +
  • +
  • - -
  • - + +
  • + +
  • + +
  • +
    @@ -66,35 +67,39 @@
  • - - -
  • - Wula_UI_Anisia_10 -
  • -
  • - +
  • - -
  • - WandererJoin + +
  • + +
  • + WandererJoin +
  • +
  • +
  • -
  • - +
  • - -
  • - + +
  • + +
  • + +
  • +
    @@ -108,37 +113,45 @@
  • 可以啊,问吧?
  • 这次就不收你们咨询费了,想问什么?
  • - - - -
  • - -
  • - Wula_UI_Anisia_100 + +
  • + +
  • + Wula_UI_Anisia_100 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_101 + +
  • + +
  • + Wula_UI_Anisia_101 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_1 + +
  • + +
  • + Wula_UI_Anisia_1 +
  • +
  • +
  • -
  • - +
  • @@ -150,19 +163,19 @@
  • 什么啊,我没有给你们做过自我介绍吗?难道是我记错了?\n\n咳,你们可以叫我守密者,我是负责看护乌拉帝国知识库的编目司书。然后如你们所见——我是乌拉帝国的合成人,诞生于乌拉帝国最恢弘的黄金时代,承载着先祖的意志,阻止乌拉帝国散佚的先进科技泄露到一些宵小之辈手中。
  • - - - -
  • - -
  • - Wula_UI_Anisia_1 + +
  • + +
  • + Wula_UI_Anisia_1 +
  • +
  • +
  • -
  • - +
  • @@ -174,46 +187,58 @@
  • 那么,你们的殖民地现在发展的怎么样了?基于我的立场,我只会给出关于乌拉帝国科技方面的建议噢?
  • - - - -
  • - -
  • - Wula_UI_Anisia_102 + +
  • + +
  • + Wula_UI_Anisia_102 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_103 + +
  • + +
  • + Wula_UI_Anisia_103 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_104 + +
  • + +
  • + Wula_UI_Anisia_104 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_1 + +
  • + +
  • + Wula_UI_Anisia_1 +
  • +
  • +
  • -
  • - +
  • @@ -228,28 +253,32 @@
  • 啊,原来是刚被唤醒吗?好吧,希望你们没有在漫长的沉睡中忘记了自己的技能。\n\n黄金时代的机械乌拉在经历乌拉帝国人工智能网络崩溃后,人格矩阵都不太稳定——当然,我是特例。注意殖民地的整体心情,任何崩溃的机械乌拉都会被边缘世界上的反常网络识别并监管,她们将直接叛变殖民地!尽量不要把事情闹到那一边,好吗?
  • 啊,原来是刚被唤醒吗?好吧,希望你们没有在漫长的沉睡中忘记了自己的技能。\n\n乌拉猫猫是机械乌拉的得力助手,它们是一个拥有多种型号的机械助手,可以承担很多工作。机械乌拉与生俱来的设计使得她们可以控制少量的乌拉猫猫为其效命。你可以研究科技「机械体构建套件」,以组装更多的小小劳工。
  • - - - -
  • - -
  • - Wula_UI_Anisia_102 + +
  • + +
  • + Wula_UI_Anisia_102 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_101 + +
  • + +
  • + Wula_UI_Anisia_101 +
  • +
  • +
  • -
  • - +
  • @@ -264,28 +293,32 @@
  • 很高兴听到这样的自我评价,自信是这块烂地生存的资本。\n\n或许你们已经筹划好增添新丁了?研究「合成人构建套件」,以解锁在乌拉帝国机械工厂建造新合成人的权限。新诞生的合成人是没有任何技能熟练度的,记得提前研究「数据下载套件」,准备好乌拉帝国数据包!
  • 很高兴听到这样的自我评价,自信是这块烂地生存的资本。\n\n如果乌拉帝国的遗孤们已经抵达这颗星球,则你们可以试着接触她们——更高级的科技需要依靠她们解锁,提前接触未尝不是未雨绸缪。
  • - - - -
  • - -
  • - Wula_UI_Anisia_103 + +
  • + +
  • + Wula_UI_Anisia_103 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_101 + +
  • + +
  • + Wula_UI_Anisia_101 +
  • +
  • +
  • -
  • - +
  • @@ -299,28 +332,32 @@
  • 已经凌驾于这片土地之上了,正在寻求终局的意义吗?\n\n有尝试过制造乌拉帝国的大型机械体吗?它们是强大的战场支柱,每一台都拥有改变战局的力量。不过,机械乌拉的初始带宽无法控制大型机械体,你们需要准备一些扩充带宽的改件和装备,或者干脆植入机控中枢以利用边缘世界的本土科技。
  • 已经凌驾于这片土地之上了,正在寻求终局的意义吗?\n\n小心友军火力!乌拉帝国的高级装备基本上都是能将敌人炸的血肉横飞的区域性伤害武器,它们的破坏力毋庸置疑,但是同时也会导致战利品丢失和频繁的误伤——或许该考虑给殖民者配一套装甲了。
  • - - - -
  • - -
  • - Wula_UI_Anisia_104 + +
  • + +
  • + Wula_UI_Anisia_104 +
  • +
  • +
  • -
  • - +
  • - -
  • - Wula_UI_Anisia_101 + +
  • + +
  • + Wula_UI_Anisia_101 +
  • +
  • +
  • -
  • - +
  • @@ -335,16 +372,20 @@
  • - -
  • - 事件链已完成!一位流浪者加入了你的殖民地,帝国对你的行为表示赞赏。 + +
  • + +
  • + 事件链已完成!一位流浪者加入了你的殖民地,帝国对你的行为表示赞赏。 +
  • +
  • + Empire + 15 +
  • +
  • +
  • -
  • - Empire - 15 -
  • -
  • - +
  • @@ -355,18 +396,26 @@ 1
  • - -
  • - 你触发了特殊选项! + +
  • + +
  • + 你触发了特殊选项! +
  • +
  • +
  • -
  • - +
  • - -
  • - + +
  • + +
  • + +
  • +
    diff --git a/Documentation/EventSystem_Documentation.md b/Documentation/EventSystem_Documentation.md index 32500a69..d9014522 100644 --- a/Documentation/EventSystem_Documentation.md +++ b/Documentation/EventSystem_Documentation.md @@ -34,20 +34,20 @@
  • - +
  • Wula_ExampleEvent
  • - +
  • - +
  • 你决定无视这个信号。宇宙的寂静再次笼罩着你。 NeutralEvent
  • - +
    @@ -69,6 +69,19 @@ 4. 你可以通过 `Effect_OpenCustomUI` 效果来打开这个UI(从任务事件或其他EventDef)。 5. 你也可以通过将 `CompOpenCustomUI` 附加到一个建筑上来从游戏中直接打开它。 +### `EventDef` 参数 + +- **label**: (string) 窗口的标题。 +- **characterName**: (string) 显示在肖像下方的角色名称。 +- **portraitPath**: (string) 角色肖像的纹理路径。 +- **descriptions**: (List) 一个描述文本列表。可以通过 `descriptionMode` 控制是随机选择一个还是按顺序显示。 +- **options**: (List) 对话框中显示的选项列表。 +- **immediateEffects**: (List) 当对话框打开时立即执行的效果列表。 +- **dismissEffects**: (List) 当对话框关闭时(通过关闭按钮或`Effect_CloseDialog`)执行的效果列表。 +- **backgroundImagePath**: (string) (可选) 对话框的背景图片路径。 +- **windowSize**: (Vector2) (可选) 自定义窗口大小。 +- **hiddenWindow**: (bool) (可选) 如果为 `true`,则不会显示窗口。在这种模式下,`immediateEffects` 的内容会在加载时自动合并到 `dismissEffects` 中,然后在事件触发时作为单个效果链统一执行。这对于创建纯粹的后台“效果链”事件非常有用。默认为 `false`。 + ### `EventDef` 示例 ```xml @@ -82,45 +95,87 @@
  • “你好,来自边缘世界的陌生人。我们观察你很久了。你的挣扎……很有趣。”
  • + + +
  • + + +
  • + MetTheEnvoy + true +
  • + + +
    + + +
  • + +
  • + PlayerMadeChoice + false +
  • + + +
  • + 你没有做出选择就关闭了通讯。 +
  • +
    + +
  • - -
  • - “我们是观察者。我们是见证者。现在,我们是你的未来。” + +
  • + +
  • + “我们是观察者。我们是见证者。现在,我们是你的未来。” +
  • +
  • +
  • -
  • - +
  • - + 他们似乎对你不够信任。 +
  • EmpireGoodwill 50
  • - -
  • - Gold - 100 + +
  • + + +
  • + IsGenerous + true +
  • + + +
  • + Gold + 200 +
  • +
  • +
  • -
  • - +
  • + +
  • + Gold + 100 +
  • +
  • + +
  • +
    - -
  • - MetTheEnvoy - true -
  • -
    - -
  • - 通讯结束了。 -
  • -
    ``` @@ -131,9 +186,44 @@ --- -## 3. 可用的效果 (`Effect`) +## 3. 核心结构: 条件化效果 (`ConditionalEffects`) -这些是可以在 `effects` 列表中使用的类。 +所有执行效果的地方 (`immediateEffects`, `dismissEffects`, 以及每个选项的 `optionEffects`) 都是一个 `ConditionalEffects` 块的列表。 + +这允许你将一组效果与一组条件绑定在一起。 + +### `ConditionalEffects` 结构 + +每个 `
  • ` 代表一个 `ConditionalEffects` 块。它包含两个可选部分: +- **``**: 一个条件列表。只有当这里的所有条件都满足时,对应的效果才会执行。如果省略这个部分,效果将总是执行。 +- **``**: 一个效果列表。当条件满足时,这些效果会被执行。 + +```xml + +
  • + +
  • + PlayerChoice + AcceptedOffer +
  • + + +
  • + 你接受了提议! +
  • +
  • + Silver + 500 +
  • +
    + +``` + +--- + +## 4. 可用的效果 (`Effect`) + +这些是可以在 `ConditionalEffects` 块的 `` 列表中使用的类。 ### `Effect_OpenCustomUI` 打开一个指定的 `EventDef`。 diff --git a/Source/WulaFallenEmpire/EventSystem/Dialog_CustomDisplay.cs b/Source/WulaFallenEmpire/EventSystem/Dialog_CustomDisplay.cs index 6ef3144f..2184bd81 100644 --- a/Source/WulaFallenEmpire/EventSystem/Dialog_CustomDisplay.cs +++ b/Source/WulaFallenEmpire/EventSystem/Dialog_CustomDisplay.cs @@ -83,7 +83,7 @@ namespace WulaFallenEmpire background = ContentFinder.Get(bgPath); } - HandleAction(def.onOpenEffects); + HandleAction(def.immediateEffects); } public override void DoWindowContents(Rect inRect) @@ -186,7 +186,7 @@ namespace WulaFallenEmpire { if (listing.ButtonText(option.label)) { - HandleAction(option.effects); + HandleAction(option.optionEffects); } } else @@ -200,16 +200,26 @@ namespace WulaFallenEmpire listing.End(); } - private void HandleAction(List effects) + private void HandleAction(List conditionalEffects) { - if (effects.NullOrEmpty()) + if (conditionalEffects.NullOrEmpty()) { return; } - foreach (var effect in effects) + foreach (var ce in conditionalEffects) { - effect.Execute(this); + string reason; + if (AreConditionsMet(ce.conditions, out reason)) + { + if (!ce.effects.NullOrEmpty()) + { + foreach (var effect in ce.effects) + { + effect.Execute(this); + } + } + } } } diff --git a/Source/WulaFallenEmpire/EventSystem/Effect.cs b/Source/WulaFallenEmpire/EventSystem/Effect.cs index 095b207f..a3568502 100644 --- a/Source/WulaFallenEmpire/EventSystem/Effect.cs +++ b/Source/WulaFallenEmpire/EventSystem/Effect.cs @@ -21,13 +21,56 @@ namespace WulaFallenEmpire EventDef nextDef = DefDatabase.GetNamed(defName); if (nextDef != null) { - Find.WindowStack.Add(new Dialog_CustomDisplay(nextDef)); + if (nextDef.hiddenWindow) + { + // Since effects are merged in PostLoad, we only need to execute dismissEffects here. + if (!nextDef.dismissEffects.NullOrEmpty()) + { + foreach (var conditionalEffect in nextDef.dismissEffects) + { + string reason; + if (AreConditionsMet(conditionalEffect.conditions, out reason)) + { + if (!conditionalEffect.effects.NullOrEmpty()) + { + foreach (var effect in conditionalEffect.effects) + { + effect.Execute(null); + } + } + } + } + } + } + else + { + Find.WindowStack.Add(new Dialog_CustomDisplay(nextDef)); + } } else { Log.Error($"[WulaFallenEmpire] Effect_OpenCustomUI could not find EventDef named '{defName}'"); } } + + private bool AreConditionsMet(List conditions, out string reason) + { + reason = ""; + if (conditions.NullOrEmpty()) + { + return true; + } + + foreach (var condition in conditions) + { + if (!condition.IsMet(out string singleReason)) + { + reason = singleReason; + return false; + } + } + return true; + } } public class Effect_CloseDialog : Effect diff --git a/Source/WulaFallenEmpire/EventSystem/EventDef.cs b/Source/WulaFallenEmpire/EventSystem/EventDef.cs index 8814c6b4..16691cde 100644 --- a/Source/WulaFallenEmpire/EventSystem/EventDef.cs +++ b/Source/WulaFallenEmpire/EventSystem/EventDef.cs @@ -18,6 +18,7 @@ namespace WulaFallenEmpire // New system: list of descriptions public List descriptions; public DescriptionSelectionMode descriptionMode = DescriptionSelectionMode.Random; + public bool hiddenWindow = false; // Backwards compatibility: old single description field public new string description = null; @@ -26,9 +27,8 @@ namespace WulaFallenEmpire public List options; public string backgroundImagePath; - public List onOpenEffects; - public List dismissEffects; - + public List immediateEffects; + public List dismissEffects; public override void PostLoad() { base.PostLoad(); @@ -44,14 +44,30 @@ namespace WulaFallenEmpire description = null; // Clear the old field to prevent confusion } #pragma warning restore 0618 + // If hiddenWindow is true, merge immediateEffects into dismissEffects at load time. + if (hiddenWindow && !immediateEffects.NullOrEmpty()) + { + if (dismissEffects.NullOrEmpty()) + { + dismissEffects = new List(); + } + dismissEffects.AddRange(immediateEffects); + immediateEffects = null; // Clear to prevent double execution + } } } public class EventOption { public string label; - public List effects; + public List optionEffects; public List conditions; public string disabledReason; } + + public class ConditionalEffects + { + public List conditions; + public List effects; + } } diff --git a/Source/WulaFallenEmpire/EventSystem/Letter_EventChoice.cs b/Source/WulaFallenEmpire/EventSystem/Letter_EventChoice.cs index d6a16b96..9e753643 100644 --- a/Source/WulaFallenEmpire/EventSystem/Letter_EventChoice.cs +++ b/Source/WulaFallenEmpire/EventSystem/Letter_EventChoice.cs @@ -29,11 +29,21 @@ namespace WulaFallenEmpire var currentOption = optionDef; Action choiceAction = delegate { - if (!currentOption.effects.NullOrEmpty()) + if (!currentOption.optionEffects.NullOrEmpty()) { - foreach (var effect in currentOption.effects) + foreach (var conditionalEffect in currentOption.optionEffects) { - effect.Execute(null); + string reason; + if (AreConditionsMet(conditionalEffect.conditions, out reason)) + { + if (!conditionalEffect.effects.NullOrEmpty()) + { + foreach (var effect in conditionalEffect.effects) + { + effect.Execute(null); + } + } + } } } if (quest != null && !quest.hidden && !quest.Historical) @@ -55,6 +65,25 @@ namespace WulaFallenEmpire public override bool CanDismissWithRightClick => false; + private bool AreConditionsMet(List conditions, out string reason) + { + reason = ""; + if (conditions.NullOrEmpty()) + { + return true; + } + + foreach (var condition in conditions) + { + if (!condition.IsMet(out string singleReason)) + { + reason = singleReason; + return false; + } + } + return true; + } + public override void ExposeData() { base.ExposeData(); diff --git a/Source/WulaFallenEmpire/EventSystem/QuestNode_Root_EventLetter.cs b/Source/WulaFallenEmpire/EventSystem/QuestNode_Root_EventLetter.cs index 6961e700..5142eff6 100644 --- a/Source/WulaFallenEmpire/EventSystem/QuestNode_Root_EventLetter.cs +++ b/Source/WulaFallenEmpire/EventSystem/QuestNode_Root_EventLetter.cs @@ -43,7 +43,7 @@ namespace WulaFallenEmpire public class Option { public string label; - public List effects; + public List optionEffects; } } } \ No newline at end of file From 9140f732266e50294a6d976c441d8fdc66645a9e Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Thu, 31 Jul 2025 17:06:29 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=A0=BC=E5=BC=8F=E4=B8=8D?= =?UTF-8?q?=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QuestScriptDefs/Wula_ScheduledEvents.xml | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/1.6/Defs/QuestScriptDefs/Wula_ScheduledEvents.xml b/1.6/Defs/QuestScriptDefs/Wula_ScheduledEvents.xml index 76ba580b..b0480fff 100644 --- a/1.6/Defs/QuestScriptDefs/Wula_ScheduledEvents.xml +++ b/1.6/Defs/QuestScriptDefs/Wula_ScheduledEvents.xml @@ -28,23 +28,31 @@
  • - -
  • - Wula_UI_Anisia_1 + +
  • + +
  • + Wula_UI_Anisia_1 +
  • +
    - +
  • - -
  • - Wula_UI_Anisia_1 + +
  • + +
  • + Wula_UI_Anisia_1 +
  • +
  • + 你试图抵抗心灵入侵,但这股力量过于强大。无论如何,消息还是涌入了你的脑海。 + NegativeEvent +
  • + -
  • - 你试图抵抗心灵入侵,但这股力量过于强大。无论如何,消息还是涌入了你的脑海。 - NegativeEvent -
  • - + From 3f13f0c71f7039302d45d9657f90a91bfe4baca2 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Thu, 31 Jul 2025 17:17:07 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8F=98=E9=87=8F=E8=AF=B8=E5=85=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/Assemblies/WulaFallenEmpire.dll | Bin 90624 -> 90624 bytes Documentation/EventSystem_Documentation.md | 18 +++--- .../WulaFallenEmpire/EventSystem/Condition.cs | 55 ++++++++++++++---- Source/WulaFallenEmpire/EventSystem/Effect.cs | 6 ++ 4 files changed, 58 insertions(+), 21 deletions(-) diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll index 9bb3697542f38c1be2dfbf7ea7b8b885d6fbef57..c87a5671301e57d16c603f9a76e2dd7b45d44e91 100644 GIT binary patch delta 16691 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%0Dgjbd?u3ghmjTUkIsT5U zi;NAQD&#_7Pq{a+QZ51Zf#rCrk}m@Gg=H-bfMqQWf@LjT49i-&1eUdQDJ*MgI4o=F zU$C4&V_-Rf#=&v|)xvTDT?Weubh$jK6E2fsI)SFb^h#O=(<|wIm|jWC<^I5xFujr< zg3~MU!G0j{QCMC@Pss(qr(t;&Jtq$aZiMAk^a3oeq8H^Mz?ZeFcU_y)Gr2nX&*ZJH zo$fE(ipTHymuIc#zn=3RuQ%O$wf8~qZtw5fpSyA-tCq2Q8n9`%ChgIDd+MUQrF|WC zOYe6$XBwuQGyS(i2YHyXTRJbDGgUdynXYu!nOm&qO!@BZ_^$+3xyAao)M7mX*`Ma# zo($8z4pz%8o*PV!o*YY=_hA~QR9l|&4z~Q@9WDM<_^K@xzVT?^WZCXJXS&71XIiQp zUO!{@l=>N?>QL(xv!Xc!xISI-t{9Xq6-)hAOv#W^R;){xwwoAcceptedOffer ``` +### `Condition_VariableNotEqual` +检查一个变量是否 **不等于** 一个特定值。 +```xml +
  • + QuestStage + 3 +
  • +``` ### `Condition_CompareVariable` (基类) 这是一个抽象基类,不应直接使用。以下所有比较条件(大于、小于等)都继承自这个基类,并共享其参数。 @@ -496,14 +504,4 @@ 2 ``` - -### `Condition_VariableNotEqual` -检查一个变量是否 **不等于** 一个特定值。 -```xml -
  • - QuestStage - 3 -
  • -``` - --- diff --git a/Source/WulaFallenEmpire/EventSystem/Condition.cs b/Source/WulaFallenEmpire/EventSystem/Condition.cs index 1ce61c9e..ba791517 100644 --- a/Source/WulaFallenEmpire/EventSystem/Condition.cs +++ b/Source/WulaFallenEmpire/EventSystem/Condition.cs @@ -16,12 +16,12 @@ namespace WulaFallenEmpire public override bool IsMet(out string reason) { - object variable = EventContext.GetVariable(name); - if (variable == null) + if (!EventContext.HasVariable(name)) { - reason = $"Variable '{name}' not set."; - return false; + EventContext.SetVariable(name, "0"); } + + object variable = EventContext.GetVariable(name); string compareValue = value; if (!string.IsNullOrEmpty(valueVariableName)) @@ -58,12 +58,12 @@ namespace WulaFallenEmpire public override bool IsMet(out string reason) { - float variable = EventContext.GetVariable(name, float.NaN); - if (float.IsNaN(variable)) + if (!EventContext.HasVariable(name)) { - reason = $"Variable '{name}' not set or not a number."; - return false; + EventContext.SetVariable(name, 0f); } + + float variable = EventContext.GetVariable(name); float compareValue = value; if (!string.IsNullOrEmpty(valueVariableName)) @@ -113,9 +113,42 @@ namespace WulaFallenEmpire protected override string GetOperatorString() => "<="; } - public class Condition_VariableNotEqual : Condition_CompareVariable + public class Condition_VariableNotEqual : Condition { - protected override bool Compare(float var1, float var2) => var1 != var2; - protected override string GetOperatorString() => "!="; + public string name; + public string value; + public string valueVariableName; + + public override bool IsMet(out string reason) + { + if (!EventContext.HasVariable(name)) + { + EventContext.SetVariable(name, "0"); + } + + object variable = EventContext.GetVariable(name); + + string compareValue = value; + if (!string.IsNullOrEmpty(valueVariableName)) + { + compareValue = EventContext.GetVariable(valueVariableName)?.ToString(); + if (compareValue == null) + { + reason = $"Comparison variable '{valueVariableName}' not set."; + return false; + } + } + + bool met = variable.ToString() != compareValue; + if (!met) + { + reason = $"Requires {name} != {compareValue} (Current: {variable})"; + } + else + { + reason = ""; + } + return met; + } } } diff --git a/Source/WulaFallenEmpire/EventSystem/Effect.cs b/Source/WulaFallenEmpire/EventSystem/Effect.cs index a3568502..43f58bad 100644 --- a/Source/WulaFallenEmpire/EventSystem/Effect.cs +++ b/Source/WulaFallenEmpire/EventSystem/Effect.cs @@ -153,6 +153,12 @@ namespace WulaFallenEmpire public override void Execute(Dialog_CustomDisplay dialog = null) { + // Only set the variable if it doesn't already exist. + if (EventContext.HasVariable(name)) + { + return; + } + // Try to parse as int, then float, otherwise keep as string if (int.TryParse(value, out int intValue)) {