From d18e70f2e45111ac479460f64937c4d2f459831f Mon Sep 17 00:00:00 2001 From: Tourswen <565033799@qq.com> Date: Tue, 9 Sep 2025 11:05:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=89=80=E6=9C=89=E7=9A=84verb?= =?UTF-8?q?=E4=BB=8E=E4=B9=8C=E6=8B=89=E8=BF=81=E7=A7=BB=EF=BC=88=E4=B8=8D?= =?UTF-8?q?=E5=8C=85=E6=8B=AC=E5=92=96=E5=96=B1=E6=A3=92=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 116224 -> 143360 bytes .../ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo | Bin 98816 -> 78336 bytes .../.vs/ArachnaeSwarm/v17/DocumentLayout.json | 35 +- Source/ArachnaeSwarm/ArachnaeSwarm.csproj | 12 + Source/ArachnaeSwarm/Verb/CompCleave.cs | 23 + Source/ArachnaeSwarm/Verb/CompMultiStrike.cs | 20 + .../Verb/VerbPropertiesExplosiveBeam.cs | 50 ++ .../Verb/VerbProperties_Excalibur.cs | 15 + .../Verb/VerbProperties_WeaponStealBeam.cs | 18 + .../Verb/Verb_MeleeAttack_Cleave.cs | 180 ++++++ .../Verb/Verb_MeleeAttack_MultiStrike.cs | 53 ++ Source/ArachnaeSwarm/Verb/Verb_ShootArc.cs | 401 ++++++++++++ .../Verb/Verb_ShootBeamExplosive.cs | 93 +++ .../ArachnaeSwarm/Verb/Verb_ShootMeltBeam.cs | 585 ++++++++++++++++++ .../ArachnaeSwarm/Verb/Verb_ShootShotgun.cs | 63 ++ .../Verb/Verb_ShootWeaponStealBeam.cs | 174 ++++++ 16 files changed, 1713 insertions(+), 9 deletions(-) create mode 100644 Source/ArachnaeSwarm/Verb/CompCleave.cs create mode 100644 Source/ArachnaeSwarm/Verb/CompMultiStrike.cs create mode 100644 Source/ArachnaeSwarm/Verb/VerbPropertiesExplosiveBeam.cs create mode 100644 Source/ArachnaeSwarm/Verb/VerbProperties_Excalibur.cs create mode 100644 Source/ArachnaeSwarm/Verb/VerbProperties_WeaponStealBeam.cs create mode 100644 Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_Cleave.cs create mode 100644 Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_MultiStrike.cs create mode 100644 Source/ArachnaeSwarm/Verb/Verb_ShootArc.cs create mode 100644 Source/ArachnaeSwarm/Verb/Verb_ShootBeamExplosive.cs create mode 100644 Source/ArachnaeSwarm/Verb/Verb_ShootMeltBeam.cs create mode 100644 Source/ArachnaeSwarm/Verb/Verb_ShootShotgun.cs create mode 100644 Source/ArachnaeSwarm/Verb/Verb_ShootWeaponStealBeam.cs diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 9b22b4cf2c4b1c1e916396fd2ab40f9d3836f7e3..81bed62d143a50783512b03fe7591757b63a4e2f 100644 GIT binary patch literal 143360 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

f5)!Di+3x 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

$kVw`(!)CXA@Ymdz4VzN z^$btZSv~GX%m_~*dyPITWBPk+;RfiLfgG-hWjZg0>3rXK(zDo!(ZVEw93=w%pq4U!WI09M5HS_C+98^++gHy>@+nmOnR` z+Xok=5nd$qd`R!3^V^MO>PB-7=g714v`SdyKg;Ft*<611QGMd#BIxspad9TPEj2C< zH;XDcZJ_r#=l7*Ya?Wdc)&5;FMj4F0ZVH++ilDaEIP zPHR)hWSE9rOJ}LNM zr30Rga`CwhpPu;KgwG~wMA}C18j-dUyhiYvkhTfDCZufwuL-@>YG=sS@&8?A=dtGgM`Qo@WR;{nsK_)OzrQ@^-eqfOgC zu)uiKq*6UyTx8s48qx1l!+Ut@>Bf_$M`P=ZXG~G)R~XNNv(R`BVXtwx#{1lwc|_lK zqZM>LINZO(HQw=FuW{e4*N#PPH@0gxm+Uacn;*%19DJ79rk&0{V$3l=GvsyST+{PI zK0#W(hq8gLj*gDlj5aBY$Tx3HtpYtbr8(k&@#20tG~B$ex;cn zi2Mfnw%@%G!_BdkJ3$APJsUC3?2q|N#BeRP^sR_JQtk$NwBneyM{DTuuZSx1<}%I1 ztzCGFs}g3yU5O=+2Z=I;w0Fdr~4o$@F1ae5-}BT#OEQ&QU_LQm1XLpf)r+qCg` z_vs7pFN!=ReF2{sH_FdywcVDP51Y>zuZTQq_7*lpzGv?nvfD7v z47F@C9qa#zQH#8;PXT0p#3{gV^IyuQS`MIA7h9}`dlMF0W*OubO(goxVlzY+-(`tF zZew3c*CA+j3jjdda#$zp0o;pV3vC~Hn zZ_Avd%`)&E602cx9!`D?eDj1`J|fCy$jy$Anj2Z1n;JFCz;{sCGK`5@ueTfD5^0zF zd)qW_C0pce6^^JykvAt^8D)#S4&gHzp9AeQpYC-lIPNM()T&6nrLjKp)x1AM9WcL| z_eRt_(epv_ylIAayL}q9HS*@-FQQn(e~5}VKb%R?I}Jw?lcRS=KG8oTdSB$tQQ6Uh ze#P2My2EFKg+T;rP?qoh?2M1GP{8$C)|vQTm^6!|>{zF&b>9p;SQL^Q%3eK>MU zqA&VrP{-g@a9s`flJ%%xpI>6zZ9eWIXqr*vW zV7#0(JBB$nh1E6tqCbGKv#pnZufA@PO`fOzTm?Oyl$DG%r zON>v%yaQ_Q_D=MBB9Hf+U@fbKZo&=sq?mH4f1T9-T;!I#{xN3^{(kVTh&mQC$$v*eZT0RP$O zLy>8Q&xh4?cUqo|&!I(@xPm#|(+ttwFYDfJd7yYcBrCF6(p~24zRKe3-_||eSX;G2 z?EQ=gSkZT5iR=DLkKk(%ot~-RmDn+mQPW zX!-OXklU8xpS!nf^QVr|(!@vFX)&fJ#qPB1>Yf4GE%OuOd*-`hOJdic{U^`{Y5z0k z>STW2e|B3CyT`Jle^ac@Xr6I(>{;5;eJ#S>GB<*zWNwY!EPa}9{wDA7*s~EQ2eCKx z0X(Qh#wSWYi#=euZ^Box9R4o$Ze4O*)llmL+SeI5G}kz+s9W56W5%F;+5=j8*+5!v ze4%WV<}_Z}Gcm3NR%xXZDbU@UONIgJk|wIbC~yfLuecr#|P^+x}w z9SCoi@D&K3Ls={1@=eBq>p-9Bc5B=@EqeGJadVA4vUZE6?Ug6pD;l-PxD@jpX6KsI zaXb>O@pFxQcVMox*ly%zM%|d6#5rkV{CZ;v?w;?~c*a?8@Q^}n~q33zbU2Xo5xj6wLGWIH9s4F95T@nM=d{1|8x9F zOJ={Xk;83~Kg6>y@e{%$Em}gAxiami_*0s>WJ%0Esn0&+i?Ag7jJ6c$p0N~j!2x;3 z1IB5X5e^uagL7Og-WO8hSxfQ2iiC5Pe`icfIBCALY*6$8V*@0uhBLh`PWVDvW1q1b zJT&pj5;W@*rS1f_u}c#68Gq@^^Fn-{X4+>wGQA^upRpZpWgU>3pat?{EyFc#x9`OM z|13}aowRm@f#;V91N&4l7@K7g-^sl2o!HML;baqbgJJkiR5a4O6;L*3t}zMoosiIq%Ixo5?)G zo3x3(Pgx53pOocERgr&=T?=|F_D0ZeC9K79_}NLfCZ$>T;Ju$w2KHD+p+0LO3Z*`2 z)`v^?Bo#{itp>w@eM#pc*A>2$R4$U`B3UhxXE5{fI5id=Pda0mRklw%W7v;(ea;y8 zU7vFNrLO3RYRP94`3gQysxw?Q{>P+w^6YlW;XPwRYGQJZwOeK?=+}dKB@d5Gi_1$M zZhd&tpyYAZqH)8MORU4kjY)P%=`JbVFKJ7x^QO;A_UrklO}I3<%KB=inU+Z@YowG7 zBDsl%#!mtK(C(maq@eS zWisE59Q=85yES+4SD*t2e-D1M@E@u9IeC@!s%$OgZh5Y|<+&b^+MYG?n^}#Iy@Qg&5y?S|INj^!6fGhT{_`fQGygX!NA&i5di32X+pKd&ZBN;0 zeX+(&TP;r}<4A~%seD=nVaO}RbxSby#{vWL^SGY>EUE3o+Vtmn!Jq}ohRNex*KA-8+c;jkZgte?A z`aon<{MH`xU@I?C{`+y!Y#63#SoxQ~Qg!XIS(VC<%}QAT&gj-PA0J=P5 zY{sm}`GdL{Pe$aZqajnskX-}=mPu>T7)Hz8FS_}t@rB!_)b zeK9xfi|P^0^icmTnR}u}54bDya8zCYhcb^wjm`O8Cf;I4SzEOi^6x@8FX83P4aDn? z2c(p{rIfoR&wO**l&O|4=Uj?)?&Q#{hU0V3HycDWSOuVxFX9y>**Fy?6-k)H>iQ$ z0w;m0v~>v2)j0MVp{q2GT`S@BLT?k!J_)}f^ev$$K~3~EVokKva7~tlem1NEO){m32hL%TIl^k zUl#hYP-Az=S!kKi2BE8k-Y@iJp&tu1#)`bqGNBDZR|~yg=*vPs7HW(Wd7))O8-%VF z+L1DWGWwlJVVM&t((9I|(EUPB2&J(iBXp(E4x#&no)Ag}ER!vCzR;CI zJB02RdP0TAOX)(3@nd=DS)nV1b_m@s^n_3<6d9o_g?0$tFZ6^^nkc0UoiB8y&<>&d zg`N<4CmqGFcT^Z(Hl8qkV~meD9&xkjtjS~^Y93>L-29pOY-GCSCd+e{1D201KU#ja zq*`;W7g;Z}Hd^nsK4yK_`hztuYG_n()Z8dv)a_9_qJ~G0jjoTrCVE5kzUVKbXUA-h zIT3S3x4XLiuA4Qsf9#0ZMX{S>?~DCY?9te?xU1qGjC()spK)37ed5Q)7slTce=NRx zLV7~4gw+Wf5*|$WS3+vysKmz;f0y`D;xCCiQud}S=<#Wfds4@yeVk@a@0mU(eM9;) z>HE|Fl>U$OpVKF2yqeK1GcB_+^Onqx%s*znoq0O*@0tJ1OvxIYH8QIrt2%3T))iTH z*l!KLm}P*4j==BOMB;443OkM8>!KJ+#W__vPH8eImNH?Mmr930|a zTJ$Z>Rxd635p;IWza^~o#xI)=F@xSUBnI@-q6E;(2K4~_O;)CGazSs;RPuSk86BfZipsYpfhzp4OFfY0-G_O)--|FD)t)ItA2Q%$#18Ojl>k0PSDRX)i6R1@-AA z&PDjI@%6%YfIc^IA?WTLPIX|UAM~Q4t3W@P&Yb%OsCuqMSUuO4>~#qLCuRfarA4<0 z-6HgE(9maBlI8O37Y*AkG7p1h_u{&pN#q;?HF->8_X>RmG_#y*o<4a$=pE$;gW{q3LL+M zeJSPUZvd# zx=gzX^jd8r=o+ls@zmOHKp)U<1ARif9dxg@74%u{F3{(-dq7{t?}{1d6`VWbPK0(p z=yB~q(2unppr>)-XrRAqkAVI|dlXh=u^|z3sUaD3nV|>hazh&EN<#+dwRl5x9<4F- zLaW>i$$Gj4lJ&INkOR5}lJ#^4B4%K!1j0GcIT(f*Op; zpbXm1th&R1(IHxYRm$yhU8+p z0+NeqJ|q{D-IxQ~2+76N49UfGrLi}t3zAEy6_QKH3&|z4*w`0zDI}NBRghdl%Zz!T z%OSaxu7%`MS_8?Yv<~%LioYV226_V|m(m8*b1B^n$!q8_NM1vaL-HEhi_)*5-$C*k zdK!|~&@(9g8hQ?r%V|F(m(xp-Tuz5j`f~asB$v~lAi125p!DVR7f7z4*CDxr-h|`| zdK;y$pm!m;g5HPZ3ObI`SJ2;#y)f2!rkYKcVbr+Dk6)t8)C#n#wM;`F!vMnwLqx>* zh?^s}M8ud%O;b(3H|3cZnBO-SMOH^{j64_lgr(lP-uegYU$K)?9er{1-=aT>?iDjO z#vSu?Oh&if-DbsJ8v9V}zhfig4#yphv&CN>zajp%_*ddh2@@0UNq9HmvxKt=^Ai^( zUX^%#Vn@=$Nv|fok@OY*=wWnnaq^Vp`sC*1MalOhN2esFOiY=a(vosb%GwljkJKKA zd+bgOB z2yes%o81E2>xQ-U;M0oFB7D5~HBBF^t{mr*zDChQ7e(N8?#)h=6sC z_yHfI)(~OBr-wGol!ou#+7+fe`M%1OudO$|MW318pnsS?rS9hIv?n8fi~aO(so3%Z zK2K@ImglwWEoTv4O#PyZ6SY z%6Pry41WK~W;_^cguDme_Zz>CbJD?BCtVi*vT<$v5BTn(t&Klyye$4xdNKYCB_+It z=gZe_PdG~-C47sIQTr&tgijCc%EUB$=izgPu1(C>zQyNU;#pdf@-063+Mv|8XhdqB zR*?Fn;P-mf;FHIpLWEpz-KK!H{!Diakr;BOmC!qOXaC8rqnctX-L|) zbUX5T11rY&@cA(9Q#zR*Y5q3DiqBZ{p3Ew9L&R9~+03!#aaot)^8@NxW&S8(tof2G zs8M0jxcd4L!|I1oVVS3;waV>lbu{?ZujWr)>i61;76js1QUvR~Hn*?Q;jQ(wxj0&w zMGf`!GB1cT{9oSl3btRBY(Y=&bT^f!$QtWahe?d`Z|x_=9+0+;x4nb+8Uhx_Ri?86_66T zRzNYi0;2*IxNy^{cr?LepWoSH^E>Rb+H5WqSnlxK^hZ=OC5??}d568s;Zjeo*wxO( zj@nk#)M4lP`pP_QZokx4O72=Qm8k18Tu}6a%;BShO*`hlJekCwSH5t|y|yJ&oK4Lx ze5A5UmfLGA=lWmTLu9(TmNp%58p8QN`?<=2y7m0?#OcI&XWa(`_$t zxk?tJOIRJty&kti)K4UMWSp%3{eI42rp@d3UF7t*9PS1OcNgL+ zP)eE0<3pm0J>G>ZR@aQbPH}#8h12D4*4e0@^gs8$&f@x1xI8xhbcegGrq%ECxTUfv zqs-ov5N7Y~uMz4?DbGk5>t>60gHXJOUivu3Xmzx!jC(&ejlr3xn@M zZkVvc%`!FH{0%&RRC;Z#&CUiM)r5|9z2l3>G2f&Gbt=JP4qz^$+II9)%aAgU%LNtYIdn*+12)dtKz2u?tbghZEjnW!(P{nZnjt1k&COo-syJwooLellPgt@c=9@Y?6;wVN*bXM)gJJ; zAxrFbenS3g^mrQ_cKjj@ywMqL_)}F}jTsJy9n30U9Uce)ZViW@xzy}wL3XvR9G>m* zG~%nm(}XHXhjHf99bSf9i7Fo&&*^IhoZ<018{6xpzns9e&<|fDhggtJu5XUp<#aCu z2bvRt!klzsx23MV)luaO`0Zr3wV+LAI=r0A#mx@)9Cu?I8r)7|NNd~`@Tq_>9{7u& z#MXj9u;5zEo9qWQEJWkmX}Z%b_36TP`ewH|Iev=GSB>uHAZH=7r5=U{$4}@B<&}Hb zbB2BO`E6W|r*=`B4Rf9(4mNo$4+1nfkG+xwPWI0yi#uN9p4!&Z%50YdzPY4=bBq2& zXE^PS=^np>9~uoDVApwci&)$26gfQd#Wq+4fdb$l zdOhtra(lcjSTS6s!zv%<4X3I}l^b>l;VNIPhreZ>uJj`0S9Sp*sI+kE&>c3X3PT%% z;Yychi3l_W0<~_P;|m1%`Dc1Ptq!l>>G0L-EmYg;wPA!WYC|dfJa`Pz-zg6KMin!r z+gc^u;PJTZ=m+UnJSeIGEv|5~oYRdF$NmPGY&4lC!$x23C=QxX1@y%e4>n&ja>auN zLbIJMP*1Sxyv~-%ZaYnGYO1w0R3XG#F%8ZPhfCX>E<1|naFz1dJYEJBJQk~M2+d}K zXKvwdpTpJ215qrIsv1%Ua#V~UYSjy(g(ywhpcbYVK{at;!Hlr81xrr93eUFLVLMnm zF$(jy4dc+~(@_O%ml~K7$w~?99xxwN2Fvevz`GP{LTvr@-~|_cR8?n# zJx1p?p}(PD9R*OU;Q0?(7lmMnowp|itbzV4w%bd)Pq6#f_`X$i9e0~<+BJXrt6DH9% zoq_p8N9-TNB0#wEDb0IX^aRF729}J+k^T8yq4v<6bCt_Gq94#F{`QOPKOw zPHBT}b~%9>UG1n)iJSM<*mv@H{mm7aVqE7%VQ~Fg)MQlR!ig%pa8_nwRAHUm=v=A` z@i-`HZG|5J*E%qO>0+C*chsUAzOD^4+rgd@_o2juKz^pl7=KgXbxORS=jWhgX!i%# z-<*wKtP87AHR}Vk3~Q@4S^iTMj8>~hc2|*xeR-9$vjsbkoVW_c!R@c}RC+y2Y8`6Z zijC!k*qBUIBD)&jlEG~3L?SnK2&X`okR?(xs_=SRbPi_eCGg8Y+Wa2%#C7mkAqxkO zzm%e4Xw|_@BrY3yaFG4R8h2@%mz{;GmKG1R1Oi^qmF%q}I6JtMAyi-1G&Bd6qkXa) zs}lztdoLR&tm#B&WY(-icM4)BRHjG?s7hdGL?QiKALVT@ixt>8bC8=!7mbr_QGL-A z;sszmuLPBvasY|~_n{g!qFPM3ehG!tlN;?)Y&VKdgbx_rmXxhXUITOjR=*J2qNnMM zSM{!+g3%6dTF)WGWc^x1NS@&$<=8}OlJ%>qjh(kgvDD;MCHFVgG|Ja(NO{~6ENjEg zXv-xIx5v){@c7FxTwqJEWMxAjE})Efwkxp1vpE{BG-#_A%8czNuM-XDYOipD7hJ3% z9P%h3mOg|X@*trCSUc6)8XaLQ+tTw`PB$7DD>G5}F2cVO6ZFhFrzKHJ8D zd(llWE$srZFfR8(FTC}-?+djPmxi-*`&^vBgI&BT>=9x%!^p#Q0$yR!@cMe61bLTm zG4t4HEosIs8u2QKT9{03S>Ui^(OTk%r@EjG99CA0Rz#yV>$AY$| zCN?phJnV^Ky7zdcI@94$Vmx)m&hP}Q-^o<2myAo^dhLu*`NP^eQB`**ALfab!QVa` zHpAD+m(9D$E(cGxY#>6S)YHk-gPFj#R6-%~x`|{lM5%eMGh=$GZe}IE!o5!Umhh1!Q+0_zQ zvgY;*W8zo??yAF!1YPVeA2rotbqpUA5=P&$2P zWx3ADl@SkK{tj=R;C2v41x&pX$8z24^D9GL)5ttIafP}yER+*W#Z&?u9au`%*_uR} z_b)gg8yOs6r;5J=y+Hbg2J^VJdHAu-V;pn`87R*eZau;db;c@T-pk^}qX4B`l0mf% zt}Y96=kV^2_`b}5=BXHcv@wqd5Px$9Hg5y`L}^84aqFtMprZmmp+)h^Y_10Qde}XZ zts(KbIMI@DSO@>A#OHH1x!L%zKw;6y`g(Rf6%4c+N0p*+`8*P5%V+~-Y&dAgr?wTF zS~ZQ}+wH2=i5+V_XjfbJI#L5s2Uv*eAyudjnq|F?Jp9d#*u;T##)SZf?_#IFnKveR zz@aNKGuUxr&0Z<-K;=D+Hs5UYt+F64wH58d-pg!knFjcQJsMh|Z`SaXw?I0BZ6&<* z8aMCMuzU?4ah2kceGTvym{W_XJB+~{DdQMj(vFsv?M4W411NsTE;FkIj}H}rr^l1j zxD~=M&;uU7M};_V2z7!g-xPgYUf-=HHZyGB*^dQ*I(tE?u4!)4OGP+2$$mUZ=p{VoTJ1C<^Ya;cwa;m0jn$a_{!Q8OCE_ACtdj5 zk~jt6RO~U=^U5WV1x6_cF&@2sJ&f_ntZGjaH9%*0M#Naq15mlia3gT)5tvz^T2R6O zivu<+dho^lQUx`3;Y4G)1B_}Lj`o`2Sz+%J`^JH>kG*L*^$;f)1`CVQww5Ul8@Aeb zuH`1`MAL0cb0|c`2Im6#2W(PVvqO(RKl5-I9yGpY>^oqF z=i@0PYYqB9bFj)(JlPoTgsdh3*(Mkt*`RSC6gZ9`th~_r?J&FLVSF_?f-T8K-Qa)= zkj{4FSk?_qMLm?gW088S+!jKcJPT!SO?I|0USV{2-m$r)GhE7TDfa|MJlm81jl8bQ zBCcN&5u;L%4f+K(7Y+&dNFJNTEFm#IJqF#P_KGiDjK1ay*|&x7uNqo3TXqk4Aws-6 zA?H1^E@Ays0n8tK8m53tL>FL3lK1#r!7QK$yzX#tcEUuDN?0xWg(aI5V#`#B+gkV1 z16vqaDK<1$IG4iW@X2MT9Pfwm9)~i80kE`H&WWlqyj84AWKeZ>)a|ucd0-)lodjj< zv9F1lnonA=C!rdK1DF=Dux*u~zQ*(1wr?ZHA-AcHRPS!sa%& zhuBdy)3S-gCWfoM#w{M7I8F6|77;y%iNZ}Mn;V(B^^F@$$b1^&u=DMd8ZXT40$FaM zew|@%#2O4z!rq*mT)?g26F{z9DNj-S?4Z2Aqt2|*kMK5_hgvl_TvZJoH#wQW(}70f zj-kWNQy6CvhS^i=jMXPP=m2IcNVn?WYPj=R7OrVYOt~inNVDimXHM2=gJ0TS+Kx%i zgLy!?pg3*Bq8s*pNzf~0w@Yz5g|NAf101YsIU^WW?3iG6j2Xl`6Ye%?HNYkIoIK>F7D+O`F#fXc28 z26Z|P8XR_>Gx<)a;_F*77~lH&Iro0&X*${A@WCj!)!{nMy19jLI-st)P$S#vppoZc zgtO`p20u}iJA}d0EIfk1(l}%REWHvE<7veSmom#Ng-Yn4LM|kB;>IpmW`a&%N|`Pm zNWqh0neHyc=juXHWG*1bQnXPJb-AFzr}4FIt*vlVaW!ix9|E%mprUN3;DY#ouqne| z%CN(sfUZDE8k~0C5EUc9{m5!1-)MQ>AHh~Nn4$~f`v{a31CB8T@X&6BkN~u3FdSSL zU=u+i8!#hchLo^}PogBmd9zsvf$H!)gb5c6Vj^Cy?yid4g=3)_bvcn0MQYL2^C-s% z!nwCT);mQm#4q=RiJ?YpD&UZ|avRk1A_?C(8pi={ZF8HSPoTNI>O2^qKK(X;ej0`o zMmBovf{B01d$epj!R80%?G3g;@{O}L0CqER&R^wj^uUHJabIlnVS&Tv{lb#dY6;1z zUqaSgOz}_29vQeR` zutRlWRr3uzHP;HpN(q88+sh+f?H`OX9uK{jeFTxv*N;m9vP0&U6l^M zMCnUi3730#$xfI8(HyS!!DY2LtKuqPc4})?Tc^0dH3aS!Acm-4^aY&@h+g$O8(0Cpvv`1GS zswAhBSfk@80YY3CSi8WAPrNy{$%}P+>NrnC6bqV(L2?1X|2g(TsnqIEmgy+0O5D*Y zxQ+q9;{_`nxLrB}V_os(OO@4Wt7Z94K`w7%Di+=$@T-uASNPIg)8+n^myo?J5axwo zAbeFwnCrpAED*<-Pk(~OKM)bvAHuZ}EOhZ=7dt^-5|h_;MHSd=#7dVJPS{g{WS8#X z6(Y_$aCmWE6rX{0jlK{sR0d{&_bKpV8QMXGc)MMNl((Y7(g}JH<5-2*RMaC2xKX%Y zCW|kO zqjpNW@|2eq&ee@+XsvNEqS5IO%a8l73!|-RChkr(w1=^IN(<-co7Vv;xNF!(a^n`y z64~EC)3So`+6+Nu>2<(-%tFmJ*dxTjOmp7Y@y4qW>X20L7MVYwp141Ot8#ds(6d0f z+G4!G;L~BOAOe@Aq{MJjFZ&!J_o+hs_1Xp-&kE$zzeQc-PIp%Y)(0arM@%Equ!f({ zg~MIbhznk@L!wu+WuOCK@MFXxp!QExF807U3+J+`2V;D#DAZv;pBEy5t&1SC%Z#g< zUR_4UEZ&B-7aKaY-!AqWfO|o?C^VV3x%IH_?gx%Lr;BG3GF1f+QO}DBF~D6?H>gaw zfz=*Cpd-6Bv?^TsSfWBPE02n)UlI%=BXxQwkHgB0Ckx~*yJ5h=lmSKwEEQj_k&SKH zhE;w*@C6;-v{jL81F(69Tv*pi_+AmRhucqlNm)7aa?maZD_Bb|z(rzQKW^7CT%;!4 zSHwMND0%RzU46L+s1n;*{4IB|umr_65*(kvQ4J=iG7LIi@5wPFf*~&&1hy$VR~Ny% zx{Hms>B3$S7>#sg=)_UZB%Y#>je8+nTdqe-9^629C|9{F$JhlHt4k4}4 z5Y3$pRnWq4udcBY20}haDRII<+s*q~%Ur z*@7$OZ1Bkmn2&JDmM_r;?`itrla})Nmru^4z4(S>g+VzRW;B>jU>BP04WAj;VmlDm z_7E?Z1aVZxhYVQu`>=~6$A=*tb*hV5iua{_n>8rXT$UAo}N31KPY5bkRP4tct8Wv@LXsh_8BUd5vEgGW(l6wLMNfw1w# zZj_JLKzxk^IQT4bK_IS?TH^$Ht+M0^Lc6yOsS1lm)z|x*ojz=0 zHF!NfPop2#knD~UY!A2lz{bqTPAS?`UkqZR(s#U}vY491+YWL9$1CaP>tl;j9{-m&mSO@D)5BmaKBC5heqZ2j=lSeIE z79U~Dc!3HrFJQm){>C~-#X&tG+iAP_6>+tS6$O($Uwt@+ocPGP4>gdQq839brDWCmr!xLgzFDZl35^^iU7;m5qQs zE5~hhX+(9aou_ZU505QsWdS8#RIbF&V;t`Ra9``msx~`+J=elZeNLrc$4eC`&yXqp|MO4cn9b?jS zvIC$)v^h^>I#SBd14(D#=|a=-ewB_<4?U#c<y zi-vQnK;SrcibMEax`Zu|nuk8}I3VYbP-+Yn99nxg#I-14MQ1$|r6yc-P=Qt+pX8NS z+fY;9QotOb=BNP1VP7k6?qj`#gCYGqTO@HKo%fq@;*AbM%GppnPs?O=QxQw7#ZGu_ zJl=yxeCn7!zyEFO zE~~BoQ|d0WW6_ZRQ!e@n>wicaI$r(Ep|-iTR^-kk8ObfD#cY*3{mhUIpzX?*KJw3<15z+MMn03 zL{4mhijav(1uyuE3S#Y4e1oLr(gM>|NsF)ohqSU7R^wlfQSQ7Bc;3^4uuf$Bp{w2RF-*o~PzgDIUoWKPI&gY_hiRFn2xyV&?7l+_9IZAQO zZ=s+C!O;2M8t*ulVdJ7}6?Bgw7|qvuMUD?erP*aN2zg*J=RVkVwJ_#D__Ye`M#EiU zucOM{iZF)1{#uE;r9jhhD}@yyU^)3k0n`glEFXv>jOUeaZko=vhePD&*b=Y*d?q+N ztIDRI+BM}Hbxy|;cB+>6n``Bi8NL>~T++fEE~yH-D0-AqC9KUDcWyA2prz$j47ia4HGCd7BUO?Dqvs%$PC#;;D9W`_~0w_I*njxinOg{!nM|y1yxu;Ee*Wbj*S5s z5qJ|84~S`zr`l4eBsMdHcjN+5U6u=7UhxWE;#2v^QlzvU9+12~g=;~!Ai$zgPCOKo z7lrWa(IO6e4OT}O_2?ArjVimPEFGVRsPhK7zoX9qAzZ#Cp$n8_OF<9v?t&iVF|Q}X z+66PU>-_w}Be32I5erFwenOptI|z1FZTw7$RG(k;>dx=y-ud(1jNd%ZyMql59{ah*iyb^>24)saa3X_Em|gte1}ww6+Z7i+TAZ@C;iK|5|Qc#@;q#&)O(8kfa z!d<-E&-ZukdH2m9o6^uqt@7--_ndRj`JLbS{X4(kx%Zy?EN=+NwuJky_Sm+6YfhWP zWXm4@71S{+!Jo_Sr9mz|Wn_U3h6>w#=s4NNqEFLG990jUbp6?yojns2(lS@9a`8CO z81L;LIf*-!Z?1v{>J6o}Jn6}!QaFuAPwF-Se%JlD@B6qh!~GfUhjT!0D>cf@R5fzh zJLrx4XlR<<)Y4-*W%E0lZp1$u z>TqYZ8_W)7FLjq~c@VO8_h2~WgzdVK<0BzY@W!)XA*cJAA?;(Okn@kHg`6UkY^5a> zdA<<-g#yJ=A#E4!23IK2HV4N-#*9kH0Q-1IXG95EbYb+#Y}BEQRp@No7}&=9)TYtf zvS;bCCE-R^k81JoW+T60EbQDxEXN`;G(>+IX_(VU!(&~xrCZMadAjwy;f3su9mfb| z`@gU!$5G0htNrLfwti%z0XBbpf-Q0nv(e)bHi`TqCC_lB`6>(ZYyr8Its{AEh-=%a zt=uT-Dw{@*uo+~PqtZFdDv%CQc7*LB4|7zVFH?gLS8=S;_hD+Qlt=s6O4378-yT*o z204D~XwM1<@QzS(1lY$IOd2X|qj-dF4!O9zvCUGEW#{q2zaIb;w!?mJmO|9+?N&gWJ{q?31BzKb;)npC9>b-LIkp4dN(> z9x^n(!dBp4qcn6ry{#Y6VOmt-rf8JcZ6JF1li~RQaP~9AW@1SO4)Mp$TksOU0)eWG z=LzypH3;Qyu2SN0dV>0+wAfExlHoc60bL6u{1h;ojgD2eBK33=w#p4aMX~H(e=<_6 zXTTC=k$04%#7~2fQdE&IUD?aNwuh0Myi;FaDsqgv`=}jSM^ti;ixyNV>9f{?lv6rd;?3J$u*#{r$s|Fv#yH)4 z?a{hQkbwq0=dmXev>AaGfeXM`B54yP_XATD+saXJWgcWs-3pDHz=F0LsYifAU2#)1 z3R0k!ZjLu6qPAPJi=BBT5&Nv(eo{PJO{-_wH@NCPyYKh+^lzmORLGwVATrW_FGONf>+mk}kT%*KRG&xzA0lFQX-$-rF=v$?qP@_nJ(4tdGlR z+&-Q1`SdkPeNCb=mR_!@-@?YucLn*~4xT(g$W?JixJpAcKG_wSRPJw*Izbvvt+`%1 z*)CC0Ek!x;wiynaNw-xUpG9XMZr2gyH|k=~u|{8R{VurXEy9yP8v)8T)4-#QL=rG{ zn%ZMni#9nF=y{u{D&2er2;!k?1j*LiD!CLzpvTfMrU$8~$zHtBXmi{h8Yh{%wtMjL zFs8a9^!r7@Tnl!RK3OQ)8gbauI`{#Sf9a7NnJ|qCf1iVzZ7Vd2zK^3@J{stAf0%|v zo$L3np8fQ$2|V;nkGFqZj~klm)8~-rE}Nv;M7r@rreV{^J%y8Z$@P-;kR$>f3lSFurN;W~$zt?6zH%{rJ@Y#Jo`=eJzqh;6PV)IB`k7W2OPo3JBY(Di*|NEG@ z7_~jX6zP$MXP3Pb7(+6z9ts@d8QZ2R=Y88G3auXG4>O*z=@>@wPCi z`|NtND(yy{n}y)|b%U=b^F8L=KbBHVca(DzAb-D^vB6oso?qYW)9)t6m}&x=8PB+S zH-NiTU^`>w={#^^p_H^75I4|lnwo1ULQqU2mGu*i;2vo*!?V$8su^y^(+ypZzEe#~ zlkr}Cy;kb2d9+jdTX2vO96)Rz$W+!(47dRcWGrXB(k8`ltNj$TindbP!%$CVSSEm{ zw@6Jj^*q61We1sX^(mmkO{HaC|Dx@_N$m7_=pJFZ%XCHzuSKixd*>MFSQV#F) zXz=^_3W0h?kofMDM}M0QQ8^7RAJ%>3WalJqY*a%}vI4#r_k~Z^T6RKoP#~oK-BOiE zVR@hqyu=ofnGH4>skf7^Bg~d=LGE#@P7rsP-zVm3u9t#I1!VEO_p}vwGBch6G7+v< zX$cNb=2BnG^Ve147N~4Gtb^2cEr=2Rk?6sD&$Lm@Bg=l&JeA|-t83O2b=2=M;K*S3 zdB)AnF*cDbRQY}cFqd}D>OcFdKE8<%G*Qm`(%#g$ibg5S9^#L!9`J?N)8}z3^&O!|HaeJ+z?h*sX@%-+T=wb{(V(HyfX-^U0s9y1zI-iXQ0>@c=+RU8KI`-6!I z{{3`cPIKNi@DmrgeM`IP(UZGv2j#b$j)nMCV-#hMQSN15ygh(lExC{{p?HD4o%oYi z;bS=@y`vv(TgpGjH}E8L?D{}WPcO~D!oyntnKrc(SEY+UuXx`_WAhsC7S9%2ugv^rzL|;vGQHYdwt9` zeiL#NWc5I%iSm?GCJF)n&g0*n8 zY?o4TWMe>87u%U?bIA2-qtPk7>)yC2)OsdMAsp4|J#^2q%<#dKGo z*?(@H9D!VWZZo8l7EQcX=E^hqEfmWUnij=g)qxdr#EK1@4&mh~ z-MUk)NVm{taWj6iOdm@`fo4iRn9)&zx~S-Od&3bXX!(&cTM9#_j#=W^JcWc{+#4-# zEJFCyv?TO7P1&B4`GQ(b$C>@*{U2G z_mPHz8rK`@O_f7$TJl9exgC;SANEeIEA7dnf@ZEwt*2?nXtFpTuiO2jo%{AY^oMc( zStPNoCSFEe3IPA>GleHDcXM9*SC8)){qyl)Ca5`A68QC9$Hy|0(UaHh-t+QSGc=1; zM{N#oUAgbkU1M9O8H3)ujj$=usSDq-W=Bur#H5XC=5s-sVZ7q-8-T zyt7nA)?{;hwCUY5ARn6z@_mM-AjoBud`eD4H9rMO9uyZzdyi%1T7p&i15LJgW@}sY zetfn*r$)6)fV7s0R!eUu8(1Hq&wQ2$_Z;N1$OdV#mJzW4Hk0mC1DDz12wOpUN>FMq z?s5;46$5s22SAF-`^5~IJ;IGV$B8Nq;q8b#nxI5jv3NUexJ741Q$AXAZIMuUc@XlU z0z16F?H2(AYm_>gO8i8X`&er4YR~_As0DA9sv8ZAA@XY&fNkAX}1yqf4NSQ6@H zSYOKIK+egNa9Ij9$`QlFjV}+u^+=H9NAj%z`d0MgdSs~O5Xd9W%DVi-AiC&`X>aw zR_|_9ba)bo-s|Q;S|Brqf?T5~xU->r7ELU9mcF;qpEpO+Jeksm@*4R0Dic>UDmT|d z*+{9z=4yX5bBW`A>r!GNW%o|-%tebJ`MJMRZG_4P3_+1IU!n5ucJBQJuSo(Nmi7^v z8^tOgU_3y1uyoD0J5(MPF1C}hfxsH?O&vEQH43vdRF&S(Sv|O35krd#j~G$pek%y| zX2mTHS7i;@ya&i)>RPTpLfRlyz62TfSSapq_qpGd=O{6jVG3gkHwOd6Fz9Jp@4-t4O#tKeyqG&?5UN-$YlnHZ;=qXZb^(S{T z)MF6h@JNAH*PFz9vjca1vijl!FAZTe15RrZcz?e^ zD^6Y+GQ4kVrrb8@Aqmx@_AGeRUcSEgtOdB@m<@EHNkpLY#X7MokX(u&vnWv&3uGoe z%M@+NmR0%Ff`-2ZFAdbBH4~|PKrp*;domx0*x>~!Oi$`}*5P$+r0=i{Zl-lFn$81-_TGbZeP{L#Nzf5&s{UhcSX&wp6=mls@X zHHwNXd`4{~DivkRmRzD^a*|7N+q`5$RBo;Eb#t-{+vg><$*5ecI+gdhwyH~N&li+Q zYA+S-Dv7M%Oei>$6`T(R=i93>Jy>_W<$@z!sh?G*v6v{!ISav5m?{fobD(Bf%-S1MXt3oN`~lZh-)+(f=00spi;Zi z;o=e}{ujCZUw?saJF0Q4RQ*MvI8dm@pgs^A0)6cs{iNEe!X)j>^7URZp;VyTMK0N* zE_cT5Hpn(*cCiNLxSSNz6GQWLO2%%H^cKBdKSshtT!2M(_IBr2b}7|Dn&kS*p~} z0qFf$rTaY&uVyFuFBW47)o>*}8@HDsM;ZAj_m(TJRU(nL!72oyQh%r2wJ_d=?a;ka z|7pQNk(0?uYA;Mq&Z9Q8srQLUX_rTQ*py?q;9AvgVSAx9F2?0{@%@8xhiflGb$%t+ zQmJ1lQ^B6wpfiSwYMs@ zbBQY=;iOeqOvbwyW}zjiQsTv`4M38c)MTaFRshB?+xjE7$h85Pv`XH#^xHOyr@br> zD%0bZ7ZRiHAOo6Lsl6E`gUKK~&C{{+#aLPlKP$RB8=f^_Sj@GbMa)xx}F%$m46~CF5&V;HiduXAO!1e~>OqZG{#Dv$ef4KFrYL za*K13Bxt21NVQfXaN`?v*n#=-V)qt+w(hgyYRkHD*(8X9irj=fS=P%ZQe2G6xH`*}d zbRGshU0^*?4QtQ@v!hWHLrU({wTbLKb|0G?8gp8krcFVAGJ$y1= z7O-3v`<6+eOQjnM#bg~hNbBj^7gt7@`UWH<>&!+%c-fJ(58GNQncXpEKvAk?!7i0b z;$Ygx{5w8LQq+4pjtl5sy|*&b5#-+_Z@8-fX5aPtl=jW9wuWS7{2P_==aX^f)V>ZQ z5sA1JOSZYQ08qNZ4`3wBued3=0NAn^4d+T<8&Ds@O5x4eWcmjz9E8vGjo&niFRx0hDoorKwY{hdeb`G z11)Rs#ATCQoQ>gf*;McpjMJP@89$YoJ~=PruRz^0R^n6#7#;ystg$5n<(mo}@C_j! z4#rvD5H)0kG|Oftj8PR@8=WC8@{{JkR-a0?lnTXi@+`In%Z}&8EGFi|%V+V)Vq6pm zST1)!Gv5NK5fKiw+nE^-x5nnRL>B7^*YxvsMd|L65!c#y;+`(L7JQWP)A9U5w@5&% z1J)`#pfkuRHV6WoEyA&`^Azzqf(4*Rt~)%L-+o;}NgD zmegJY+=)iP8%gaAxFIaBnuG9~H{R640ikA+K5gZ1gz`5!sx4gD4^-JaQt{1&E~9;$ z_+rdyBs77`=uAZI4!5~%9?L`@@=lfAlQl-q%6#-1p5%{!i zkz>5Z)Y=P~uLylYcapwx-p6HS@A`MF?J<-z1 zY^>>Ic8Qv>!Dflt6?_&iKb7?P%7kWzi3QNa%C5xs78X#OVF?MHrs0tcO-02hC4Eq0 zZb5y3F17UQg!e;M(lu7N7yF(Jc}y{|&q1RXMHt!{5Xq1lWhYC$qykm6BewJH;dg6K&wLV|)fPDM3jrO>Hf+-?Nib&Ew;wpqT zn9uz|Q5Z#7HuHZbwv=3JgQ79>2(4=0hZ6E4Cw3?r;8Zq&|9%IT?IPx~l?ic!yde#2 zu4_TsCbMkG++xciK2}Mc?)07%WO}s&o%bdj@`CZ}{O2mia%JLikXyJ=X2F6x1s1Av zI-B!q7m7XJ4Q`%)Y!0qnplXu-MR9(iBT0XtpbH;2_QDagD6IL#oS8@i6(*R3^ z&lEwQ#0@{heixIWdkZ%t>0c5$0ZPDBA%tgU?rN`s8l7Y^XaIr?skhpxVgW)DIt}B- z`xvzcUmq+HSUd;CAy>_GrEhj(Mm$Ruyb>~JE@b@$(#53(!kl2WF3{=p97D@Y9Qc^3 z*DiDxe4k0}3}O<3665BXq)@=y&ngS)T$(9+Jz1ARh71~COq+BYK zlFUw=z~r5SC(Lt(_|GMUrQQOA%{ZJfz_?c`${Wf^XsR~eJIA$}w>RD!7o|J!c&=;B z`~)8YBYDY0$`$J343NYhC>Gkw1eJTuV(2wUcbZ+=T@eszRa}0PQXECh0m;zz5GVzIHwmg5x5xm zchS2U7vrMb4HjjFL)8;m)f1uW39G_P@HDe~y&|~JLuQM5KIm}XA`lvStxG@181ezN zCtd&qR~r@}Lu< zb=miG*=DF$vk}z?Jn;H}`uv^-fgf9`uU7VTquClyvo$I?Z6#}c$y$}1v6A(^WW7qx zTFJ04QK&KTW@9K#WRT#{j1=gh$24B3J$ z-SxpY&1aHE9NO-ls3P?x5Xl#FKZCW<6k4CBV3;_S$d|6Mt8%m_ek#wp&Vb~vOuPr6 zlCriqQ|dBJW^v>#jhxj)b>_9b1KXelgozI{VG=4L##jx^Ko7Q+bBV%68Abvi9u6{8 zdyD3Zw)k&UzBE7hvB|_G&|vY0OUaPB1Q!44)tI)-jw{T3T(oqbrTgu8Xs;_g z%Vk>X;=kFx%Vz5815`wk?YLTv>TB${){g7#IILqjST1xXb*=6A-y9nbd`;5+Y>AEq zI6uobmKzsEMHyPv3H2|dV8ISwE-veC!DADC(W2ONzp1VD0OD~+CyuBZ76TM0FleBa zSi;g`-J8Su2D(GPEA=gw$dE7MAT7d@Ye#)uWv;i#+55idBy<)S zsfNXJT7g3X&l%z*=Uc#IK9rX^rgjoxEu5s#tAK+-3iBV&b`<2H2*deWBG{ayk0$jI zvO?}X?f@7yHiJFcGRrVlMfI757+rc=#^G^7g4o>RN=AfUjkk7I9WF8F7?g2QCztu! zMvWETYInse3-b*Jzo3U#F`|^w26xaLCI$AapYdPaOmffU1!-_nKS+jD)>Ic!x3rSD zu=r)MZQ2zg3&24y11lZ&(1qseZjEj)dYYt9+W4}0WPC%HExudKkknoo@&Wx7z9mPNY zM~^+cVDR1NA{HrIAB~-Bb^KZ*4v}MtwJ$?TcN*97cQDJ}l%4mtv{!VW^lSXxBy)Z) zyU?GV2f5G>{c69|;ccp<|J+N1DN&{ND&^_wtoAUq4`gZi8tMK_a#;59)TzCp;;-qD za;W`4DTDEPsBxj)?q?Q5{=<;?NDV$zgLA^;?W{bNualnEL3bSL%XC-~F7}7SrA{!& zOrvVZ)v3$7smr0MH@v?=a_KsCuwCU6p87#$D-3QSxS=w{I^1lf-f<4xs0LvZUKKs7 zqBH7M0o)no&QtvsUHiihiV;$7A*q7hnQ9ajsigs=UnembV2b$ZH+A?H#dj<5FS|Vy z!U}&2LQZ9B6t<&i++3`De{BEaTr@+Tcsf5;O z6+@N}PpR@?_W-?yjK>;UU{#4QI@rexFkL`H^Op8HJ%{{OE1PqGFet}HSh!k2q zeN$H4x_!5#**}DxDoS;iEUEn>P$R3E+Cvv+*bgf z45M3Y`Xc8iXi-!2V7l@cKV1Evsf+&9?@yQfX|Q#$b3vEz3+A}E&radEj{S@v*GTj5Xa_^yuWI{+(L{uh>acC?c8 zeM{eB$A|3rs2zpLLZu+Jj%Vz6z8JZprW8DIW|Zym{6~(C9ARtg#>dq7?!e(MAB(70 z(5&NzBlnqA8`p1dd<=f2w$o%Mur<#NuDTl#rQHW)I@EnjVo2^J`lOJ zjScSXW02GKx}C94;cfReZ$bU}y}Nhc<=p*|`}|BWv$mbN`*#N8zKF-P!VY{5RIUMo z&82L=&SUHK0Y5<)xYId?e& zVcOom?kP0L2VmcNGiWo1aL2WVz z?Vk2!rkQ*kbZ&NWU~{zTAKJPOC5Enr%QeBwq{SVO^9zx?=UTL|-4XM>OXU+4tgBR)c*QSoPbhR^NHoz^Z|}?-&?dS-qc4p4o_b z&7rXq=+S|d)y*gNuo*RbBW^$Z)Yzdlhu9mjhjC2bd=ezm|Eow;*vy?x8ujt7Y->#C zek*c#mU2d0wCb}D3FN6!BT2zKK%@Y~s( zek&U=I`?$sMjM#e{)qmQV4pI_iYDKDcEh=UK!^g33fT^b9eYNOjcprc6V?K+vT5^e z0?EkD(X2A<*F7!&?tihl$4dW)($#4dvg|LK>gnyu!$;R0;PY*K;`ZP%bv$O@8&>7N zUj~fn-OLX3H>LldQXnz`xCwhQb%64Ooc21HQLcIq^7rVwk$X(~pZy+-F^%qFw~coq z9(L<_jb$7A1#IFm?A@FceeGv{hcEB>Ax>z1+AQ$z*^}#juBAx*t%XR(PQa) zfLw0@>354$EB{`HULDpZB#o!^t;TDue?gZKIO)-KJ+`iwcc(-8w$I4s4>-ab6T&dto5XN?$okrpm5U0h9mb`cy$1BZ z)aRg$bLu1b(?^?+Q{%-!v^Hy@hu#4@2zC8#Q6JZiroZ`pS`_%J$d!Oqy7$up_!~I? IFHzus0QdGQ9uJEJSu7e!3XkGQBf2_0AWNx2#Ba9c3P*c_Cbz% zyRB_4TAg;(sS+XZ=w(wu?U zlQi-q^8wvf&07>L>;V5pk*C&xFbUwcX|cT7V_RFD((a>d9R|`wz#lLJ;lN$MA^^il z;{>3L1A>59AOuJQLID$isYp*G>Jb19H5MQu4LKSZ2NVF&z(_z1j1q)aVIV4V0bjri zFajfh34kXM3{XcIu9E5tQBQWgPjQtxl;eQ`z!(>8sH>zldeq~AJRlR8222-txXLF! z6;)!PCkORhARTA`egez}8UgxVh*IQ*s;MlSZ&8gh)#AMlSP3)(#A8L755xegf$N~P zpj-p21J(j}1M7i%0RA1zcZo03+Ar~WZEGa~&|v));BfGF7a+Bj1xN}-f{6sW3os1t zw+fKjL4d821c!j3F98xGJu2{!z!CuxKoUT75?~5I0-OwJf$jpN9V7wLF3tf+fYgqj zOo0ce0wlqaA?86*b$ z6u1|-57+?w47eY7fVcUCwmyQ|qd*&A2RN`9*aB$0NH1w$`DK%h zmGZ{ST%NIB@8ttBeQA4QgkyNnXr;I0X35Hk8E%<3h25=K&G?nD*-A1xsSoQAn{PA5 z^q{tQ>J5Sw^%}u~zb2pw z_N*0Rd!+~BIWkMX>dPVik9XK6*gWh$n_Fo)V*w2?4p;@m0I|Tszyx3- zpatRq8ZQy04$uQhE?Nr8RNyXPl8ZJOHqeym8 zE6@8;`BLE560_9gjLFYCbz5iiT!WW#AAU_YlT?_k;f?y%$>env06n$PF(dTAf&{<< zjWhdh9NBqf)RvZU0goOXS(JNX-yGi)Yp+_D4O?XV{eAn5LR&$gn&Ol^jGqZF%2Mh} z5I*C^!e>k7Ng7-#6bo{#M92ZH8YstTR{S$#wB93`REZdf01G$Y{+A zhC`nQeeu+ZRYKT}_YUk{u;%c9le_#@(+v1ysT%en4VEnr(S5K?qy`oYQ4J$1MJiG6 z>iW$$ez7CpB z8xIvu-ur%R-05!(ln}Xt9=Eyu3A}>B2ydm)cJm_z;H9)q@*~qQsc^}Uq`Dmq34n4& ziD4EPA|-}IH$yQ#&T}z%=7S-O@oV}hcHA*6DU^jB#itK|4*`a+WG`olJ$ur}j%dS4 zW{=Jw72?+Dd?lp`vS;R(qx02)Adp5m^=@>&ni7yG7r~eMLS1?e&VGw2XQ4{0o-d%1 zz#P{yJrxH7nwjFEo~o^qRNHZNrkBDVZcTYzsTwrAm}KIfu#7 zdgz4&*$b-*v0F-Mv$gVOE6M4~L-{O}HX9UYaB#^iP3KdB51xSQgDWT`s+CKKg#8IB z!&kM$(M?sj(T?J z)IX8Vv&-miFOLikI9PL;sUE_JN`5ux9dDM0naBpgFXw*X&1Qo#*EK(WId2m?PgAMv znu=WO+ve|NGWX$f*+g~4jp!DS5R{uHN>&(%YhBSoyGT`Nu(v0&jj^d~DgZb== zVeDfJJGH%DVNZ(qejQFe^#6g0{Z|F1pxXlz5~qcddtgg=1@1#jxz%RO16#tKUBMtEmmIttuWAW4!*=z^G-hf|=}GDKsRpq#o!NNj z)G{8OHo}{XODF0 zA6JiLPsk0tr3Une+tMrM_B~fJKWDCLy+!3jwtLT^J@f7xb>{ueX%`M`eEqL4rEFXA z%GnZO_^gSW6V@X#h49xRwCn_JN9&!3aBhrMScd$u#%0lpuXF4dK0B^Cdw6BU`r4C! z3HH8`_4#j723;8%->Ghy6i@0xzNB{#c#DdPucWh~KdeLCU{Gi@m=pOIO8zSUa&cyD zd$9hbeMb7s%Dwg>e~h~J>*;HdmEn(?LQbiDH`6F;p8;EXQce5}aA+1NlztXJ&ya9)vOJQst9%E{A$D7x#ox z8g2%Ejf7>wDmamPVL5;5!U)AX#In?KO>(**xwN4#vGwX+Kcvqa!^y#9HMt?ZC?EUl&A8o-7Yy~J0HXbP0 z!Bkmzdla_A4fDcOL^crla5U>=>h3WuLmW7Z4GwMUJ4nW`qZItM_)9z%7?_0&Onf?v z#j=O!le3TBzH`GAe|AD@e&->i_}Y)TC_Mzz_xBfaOB5=$v8^^{5dE^)5NW+3y|1^! zW@9$Sq}(7TESRkMw&2dH?aK^sivh{>x%UJhyzfu$<_UfC^wnJa6CBuJ2-f{jE|MUo z<*+1$=|3-}L4G~lCM$ETaI7@N9^Y&mvmpvnjd&+jPdDD zO~>?4dK5*SO?;&#IJ3HF)3uAI;wVR8dfqm0jQxJ4AKf<6L%)l7;2;+=u={-^ro;z+ zGudmw2U7CF3p!J`<}xim_m+>iw32y>1}O0E&e4pi($K*L{%Ys5v*tP7Ouz0y?sO)? zUA}`|ZdJ11QMd73-S+1e0{3i=b$|0_xGq6smDJdA^F^kN>3KoZl@oNo4ssr&KNBxC zv8Vaz5s{8**Frqnf2$Cq{Mm#2bW9{SWJEbMH*_BDN0eOgyJqoXF*Au_3U(O>Lk!q^ zemCy+d_&GeoOy@ycaSKSDPHnqpYq6zba8?wOA{5%>_PDqV>-ug-!m~@_TW-z7g^U=*7W|?chtt__Uu;aP4MY$Eg9#(}NwS-Y53fJN4DuwHK~gJI?sCHx=w1 zY8%tlR#u?fuMM0(2)-c+zGFrJ`%J;Uq{f+DjpbVR-R<8drF2}cWy6?g3V~K0tJbjH zvR{dGyNs@bncHQM|F|V1+#xrN=%rx~rzg3loie-D&F=JH^UKY3wKa3B<>qSFDbekm zv~lF5+DncAh`+>KZtF=|Hy+6k33#4?h0c`IGSU*y<7i?zHN(c3I`!n z;Q;dY(B$EF)?{~7-X^QQls9!tj1Zcw%Nlt>ku${iVu~f*6M`NGE~yEhUcveHx6}E) z6B?d9F@(oXix$rhVMo~&Z0JM$lZq(zoILs{_jJ1qyyO<^bI)0nTlq_^+^G)bBfjwo zv56_pB<5+EFVx+8&%_Wtj^kxTLnJ5ggYLwOKk!nY?AKClM=D{$6QP+CxbYuf;hpar zcunvG(1wHd9mKNOZ{6B>eXQPnYDxV5Q;YrltiRvUOyA_rrsP^bj%M6`X~_?B_0!Rr ziNo6W-(m9348!3W|0m9MG0b@n+hNGXdjEGG=?1}mgdf3?PCDcE^HR-WtFtj~e>OCAJ?|kN9nB0K O5o6g-w!3o-Q~W!_d~f?AYLq1YI+c8-N@>G0rSz~VJ-Y*yo%`CmuW#7IeroKlTSDVr${U66znw1v zEe6J{J!VWkBB?cHQ$MBX@jo&jJ!>_eu1`M37d3;v??sA<1|-*@?UVhX4Oy8QrO7%LF( z9M6ZsUwZF__ZZ+{0Lyv`fb};KurFW_!2Wg!W_{v)kS9 ztpe{q1XKa40doLz0rLRI0geZ-%Ps&c1S|q92Alw>0n`GP0G0xl0hR+!1e^qj0`>%) z1~?T^2dD?E05kx010(=(KqFuypb4-N&epAO*oC+#qnONJXB|Ds;T>UARjOeFdi@gFcB~bz_iS84E(2R-wNmudhoza_)CBnuU5I>IQW?!@EY~t$jNosyCcE>vW`e=`LqwIe_@}Kzs&d-AQ!E` z%5}(cEiXx>Tj`JyOwXynPri$|=}ez3f093A96B?8fwKerKl6}KBH*;z!SyB8^?~pe zF~$Ed@K3=j*9czmlSkw{NY|#;eFFIU=l0O*A7s!oe)6WAAL-2HA8voH0(YGDuf+_Q!h9y_Za>(4XM@5tlP`N1Dk z+oc?NjRAjyx;~oS5Bz5VFV~TD3$S`ys^n*sH(#ZMEvOAU$|K@~{`JuwujBvQh>Lcln}rx{__xala|mNwC@_V&Fiq{WiRN~dO!n8{@TZDS{^!W z<87C;?;d#f&0Dv;^@BGzth(azn#ax_v+?PRM#q^5u^OG0u*b(WBPzhBM^XQjxWqvF zqiQRQ_n1n3JK)!VoVBVmLmPh8AlI#!A4sEH&?loRg^nX;6cn5NgT12-&jeEL#xtd+ z%wFAv_XhYohl~J61S|C=YHGT4NZ?$J*h_$c{;MGmNUGzeP8}O6va z-)j+zd0?(9@h0nB$ev{C1;}BC^3K~2^c;7}qK?YH8-RpNxsjIR2Tcw%g9E zerx6lC*H8(mmAie-h1fj?~a{%#$y*c*V3a|T7FX5R`h<(&n+l%51w)KIr3=i->j8d ze2<}bw?Uf5{xaf*arf>NS^4J~`@jECQDwC8tT&Fo>abTE&JPxTyyUU}tD{&eqra2` zPZE8Yy)%WUF8yR^cQ+RFhw?YB=}86LV<^f~2sBv>xCD4RfOkGh#93F2j}+e6)}8Qk zb`yc0G6+e5oI{JRPvRlxpJl+XM6H7smD^p59I%c#7m`Z2x$(eH8K)ooy$CP)Khg%$ zg&yRCHNg2WiFQpW0knMuX34hMKGzY)Kg&*8We`yi}^MQ91h0a@2YfmVLX#=YX73}$_Qtx$6RBY|3AZpPo|d+FGN zKVe*!$LPce(Ya0*Q+qzcCF_77KRUvg1y_==HB%_Q=xR&pzjd;6H!SSvWalj)MwubwWBL zXj<8+U;OUau@C>?fD@Ly{PhdRHf(-i*Vw}aMN0R5Z$0t*3y&;gofu~czGv2xozGJ_ zJbo5}+K?+JtsyxHcNMf(PQEiS^M4Mg7`y5071x9}{pQPkpPKjjsK+mU<@pZ> zR$u0N{Ct4*SAn)B2i}2QYtD7uYH7#;k<;+Te;Y!zq$X&^~_M<=lX9Aq|21=SUJkSiI@5T{lP!f@{ft^U209-o5_TPd7ZU({Dd(ICad%Px8vYMLiaG{U^J=$NotDC$1%T_R;^i_U2wN zofrJn>9KSD(SM>Y4)?6-yx>;r#E23FmJ_=#6K{fqq@ z_kOr{FPw}ipZ@0mY?U7#hdHGl5|k8XH7Vcbnp&42CbaqbUq@`bez%@qZ~9y1(o282 z`1O+N5gWd^=eY0QxaRpouRdqgU%0uawydllKDkz}gWNZvWIO+FO+PrR2&p2w!3Y4y zFz02CWA2Sm&xXILo5uYG>dNe)`B5K;OWDx?>h>`l=YPsH4gioJp#Bg2DHk~eK=}~m zH1wma<_JJOU>tyc6Y%6bJ_$fsBKj>GeKzCuH zVW|H{JwRjJdi-tx!~qFFBcKVe5nOC;>_W+5s{hN~byjU4S)!ZopbV z58w>II>34W!+#ymbG3JOsq)-^d{%SCgf(AY{$<|zKl;ac4{ta#aQ;(Y&iK=b4~^dC ztKBEvg@iK32mQRc^RiriBE4}al>No|{Y$K81C!Ba{OdhYv^#_aQ}*m4f)jQ)mBtvN5fj{F35 z)ac&JQvOfwKf3pxDD;#2Ki6@$gYr<$Xru-6(K_7S=l-ea&y8p;hFFL%t$3!p5cm)3 zK$G6H3DUn>|2h(NuT?*E$*X{s(mn3wo~q=lIpAuVClbUL`X!Mg?gj{L1U=nS;3xg( zT;LV|(+EpCOy`CF;|`3Sdc;a9FkLG@ano7nGToPRko4gmIC(PmET(VN`C5!` z+!d3p&NP%yqoXwAUwMr2mKfL&Zznbm?EMf1M6*@_ck`i*Mk04&a-BZvjRif4{-= zZ-Daw7XU5`c0;6}~wW;}lk_zB>@G{0N%ybbVE!0npf&+xnx@N>W~G{3v?ya#YE;6A|p0OsWZ zJbwlFHQ+(b@3(k91b7(m-+=!C{4d~lfZqci0sH~*DBv-`0=x`h+*k2@4e&bP4FLV#!SnBcw*YSgHUTyR{txgj;61=U01W#9 zo*x4KAK)XvKLPar7oPtHd<^&m@E^dZfX@J*1E!#Dzr<7RD0r_12V4c}8N&Yx$e9A5 zbwNC<@m7exO8lq;vEl(v%vYM7(ZEdI{l0N z8{0{KHPSot{@-F?ZNneuWy*KN{5$aS*8=$-S_YVxZ{U4+{O_3K-y8o?CcA6K6a0s| zHlB+wUi<%^pgWZSI&b(xBCy4O;wN6|EP`Zs?FZcc_%C(Qk&zBPB>(3J|0{?`9+=Kc z`9msqE5e)qOZRoPJ(3|iqq^qVZ|7A`58`iKRir9d zSspGAR27vL1u9AlivlIp(;|UzWnpnuS!GdZT4~|>-bgCeu(B}m?g!0 zS&0x~KtHSP=0T{aj$}($=gw-)E6Q23uUvf4{Uh&Kjae!mdwD^17B5i$Ge{dGLHSxq zXJ~Qw@Y4SZUDiLlBb_|~Ui)7m!jea!^M>DX{QH)FPXk`L{`ZETF{~ZOALr810I%hr zj75$uh2+!<1Pu6L@YM{7wv=i5=wn&#H!D)n4I z>KUno;EKHqEgS0Wpi`ff8QU0@&R7^-%;pAlK)PZGEm!I=)7^ShV~$+ zx9_wD$NE3-5a2$_2Yw^}&6YHte_P%+1Gt_107AI@e()bF5RY|6XU5OdEnJbT#!4rt z^8cOM8G){hwGZPLq5Q0OQYf$WUx%=x7#WUhAF;YgVXQjuI!Dkpl+*Ey9_L7|$Mo2u zx5vJJP|dhWcXd_ldC8Oe+&uBV%N|`8omLtA;Nbs0=kW`_9{qwinNOpmUw_>NBPzFR z`s0Vv{OrTGjz06`&GC!N@4xMwWe*-wwP^C6KYF_LkM~^}dh~)9e#|L4qwc-TKOxns zhII>J{z*&II#jxE0OP+DFj#J|`ci-Mlgs$Mw0{xgKz6P_{Kt2Y7|-(4dBa~M0$cni z{;$G+7J%(w5hTOw68Mz+!cPg0wd+s$uVPZZ@H_LrGm%^b;I;feKv>#(pmUNxEmOIp zPVhI>nwPS#bp8L?sQ(E_M~(qCQI~%;_%7!^C;ZDX$50CA#E)S9>%;A}{3ihaSS^oE z_>KDa;+!7mV7U(_*YdxKu+x3vAKdZ(Eb#l$KMUDvf2!+0$g34d z>%EtsOc?h9=p@JItc6KAG|#K@j27k5g4bJ}dbF_j$(yepnb-7(uP%Dx)Gub88}GVj z(W^J!G5vu@*MFc65Vi^3A4WhY2OxfJ*^)#r=GyDr$F7>Y=H*kKo%GZ`@jsTI`)mSQ zH(Yl#gZpoUEQ9NS8qgnFW=p82VEBtC^F$u@pIiRz>wa}t%b0uPo4#|~W&fGH-}g4J z{`h;B-u}?-|NF;7Kjl_ZA5MvzTr1BRbMH@;8r2G^QJOd^8mWoY&B3y4ZX({?*w`_z zttQsilvt9ii9x_5JS!keTAWI@CsLiwi4NP)6sN5VYA(R1>7V?zzIWQx!rtmwOGkqH zU6nr9az<%d)V55_w8%b7=VkmCIrD$M4>%kkao&h`j!hD6t~liWKgSE{;cbAQ0=WOrKKwJloq(SMegU`( za5vx{z`X# z&Mfb0ZizRyH7!Y`QnBW?+V)s?Ta*)NC1kffiMY|<$829zJhfPx@7Y&}X1NKNYf?u*KztN(tCA8QJN{yjKA`Zdt{8{YrR z?fpNVBPS2v-~GSg`Cr#Sv0pQ9zw^Jp_Lsb#k-u}2(L~dvIg6=rx zmi*_IZ9M;Mi~dJThhiPHXJd?ta$E-`X(ot+zjpjHlYtwC?L}%*OAA51u`zkJD=H2tW~eVhI^CYyVNrKa2v}H#CkxN2c~>5fJJ3fOSI(+ zm*M?o0i8v#b0MT$K*c>Sw<1DuuS)1EmczSJ>MME_uojj~EevXW>m!4Z>ECVR_VYG= zbjmBO1<;~W6IRv3{J*m`us$8@2lX! zApTG_&vp9mW&evO!t7js_P;2nulKS4UhJ%YfEiflyX^95^yhv+zAyZa`UiPcNbfj+ zSNYr72)j(f?`HpM5hRfbgtv43v43+ka7+E$ZN2};(;B(F1(@sme_qBvb&KpA<^Ndf zsCSro?f-`%yr1(IWp>EnFZUnj;N2_!@dzu=KX@sBp$q-n1?h4B+$;X05LWKLd&BQc ze~4E)B<8x{^ z?puSOa{t*0e~##XtM%@u{2VWPXjS4=exv@mgZ{T~{EH0uz1iQ8r}QlCf8>opdYn&L z2U@WlA6%~u+y4+%H3q;Ne)|<@f8}O_9{_)^_5Wjp{rWK?AyxynDTnR9q7JAVOj#cJ zDasS(YJQaM9S@ifSO6fe#js9rqD`1n;eVRxTRna^0OA13`WgXEfR%t|0N1Ij0WE-5 zKpP+lXa~qVP)D;9&;?in=mx9>^Z?EPtOKkEF#Ol?JXd>XpV^k{{|(5;4FKvy-Uzq} za5G@2^}l}$9IRK?$ByjWZCyLtuedbJ?e}J%#Sd$X$+%<6)mFct@W$RM))CrNrqKQm zy0kCHb%>1bE20*7tQMbXT(ehK&FzcxKY#wxx#j%)=M!rZcjJBG=v@xKsqJ4&`2PMY zo1X#3gKyQsa2?3FdLG(mG?q6aPK7lkas;$Q z%F~ZCL0>}%U)q;vrV&qe*CskUaYmqH{PcC}NoqYi&c9~o)$fA`ezR`;awx)>@OzD4 zysTEeilDrrcJb=JzV^;H-q`n%Gf!^aZ}T%%XLAn9jnhrEjc9d7MCfg`qxF)Y_Js?J zubMLMr994~+f%s;Fza`yee|2p9;%j*Gg~f{kanwA;S`!|Az^E{0IkUziFhkIt%9$@ ze~vuqbXpJ06z2yaF33HDj?{R%>f((Axa!n&!INiEj01miC<#I(ycg4e82Xfz9gwX$w$Lq0(&ptzH-HN)S zM3wejd6VlgN4C1q%Xo6G)c#mXE_ zH{{5R)q1(}Bv#<&`!?NE5VT!lKenIP{o`~xkCuvE<3ws?!0(DT$w$NrvP zW3(6{dypPZ#x&n271eA&$1&H?9=za%*oL&)F6LiBt$7o*EK7k;99FdzL3wCnFRADy zOfSg{0~YuD#;p5W`u->DgJp8Q8Bvy!vTs?F?)cL&rQdhv5APJ8JE*7o7E$Iff?)`OG;RCZH_io_IhVP08t>(3X)DV*vMqv+`Ii{HP&7A8 z#!={HHt7HTKC)~_8OkP0VjKrj*W75A()xQkJt^u(y4E%51smm*vWLl1xSbjBd%9TG z*jERH%estic}=fdu5maX*lXviRIgR#0D4T+j>{-nE41k1i7|D|1Mv(r1n-S&~f3Z=}+Ga7g_6=&D0qn&l_F zjXu3h+%9r&QFBge!9j_ct5v;4L|RwREYH^r>2C{}tsG-UI_N(iT<3~=6-6&$Ic4wH zsj7X=I$PM)>4tN-^z>;vOSYVIJUxADTHzc!9jmdwILG74LabH<*7Oxd6~d;JK zj6Am-rSsIVtaC~OxklkS-811*KD}JjMV7Vc7q8XorWW}m_t=@1Pr1HI$2}Nj zCdb+cS}FQzJ$fr|cB5TqT7kC4Youp>%Up@lv4o80v{IZofO?gAq8)Zh)kF{IR983& ztdF|XnIHyP8cWL@ao(Uk!Swnaj6CRT)VON9P;l)|{V_cc#qUve3;PgbZS zkGZ4#ms0aO0}rK-Owy)B0CIgCtBgT@&|Dg$T*(jaOb$!OL#mNp!Ucvp^Mhq@xL7@B zq6TE0rsvTp%kYy&nVJ(HsOKOZ=OL&UFJj9WvWHPlCC;Opr9+3M zh2}n&!6a9`q&jWzv*0q6Gag%(17)eXtN5eOgOt|&NYHR zvd3agQ@p1yk(sJaog_Uk)ncL_$Z z7gz?}0iGud;;Yyhq)%AAb+H7yhf#GWYMM$Xjd_>7Flg$@1(*Z4XU2WSCOlbpq}^Q4 z&<&(K%zZ2VScWL5HrLyNZg8cY=_7QR!zfRk%4L!7i>mSh+HT|+U@UW+1V9bAg6BAC z$5?bP5B1_I)LTEqDB<0y@z9!KaMajZArby+-OUq zEQ77ca&iUX-e0McnTutVym&$1Xs$(xJ5`&Qf~HA+pH$Sn9&)v<^?GnGBXxUov8~-p zMs2WMEE#tn$yLt9|4xrHOnr`)^+e2qEuO|=uC}Hu;e5<6ZR#$od(T~g*6a^IH#GbY zEq(~824$OKwas}%&M3TvnlezXf4xxEr8!YL_g0GKL^w9EMTp3NKfyZ*<` zwb2`HJK&z*?|FCU*flG@e_PqVZ~5gT*IfF*Us2I%XR@d{Bj;ZClSv)#ee=IMe|}nZY|^CfZg}>EDR14s z)8;d;Kk@(0L$znjA@u97`$m?Ze{`FNt*B8ADr0EJhEw0oUX{CoH~`s zxfHo_TFbbnBjx4JCBylqtm#Qk?IXEuH%%qy((SpLp?o?;msMcfUP;l+yUxx867iP1mn^ z;ia6dKQY5{r%Pzuk<-^}b*R^EtZ%vxbG-g^{RyrdGWAO`HF#h9cumVgr)|9LlJ?yL z@4k8KmbZTJ=7v>QTwe3o*<&_7ebMMRYsLEt@ACoHANNbSF5w!GYdZ~!3{(4mP-_O49_Lq;j;?JMOQ%fIOecm7bbm*nK zR_*!fIqtOdwk%)2+4Dc5{sww_rUue2>chD8|JEGq|C#6UoOyTJ(#j>OZl{y%T*}jP ztd#cWj-AU%3uw92n)=xwT|bkYc`J0fg$)b0@tJEaYfsmlTb8!$a;atQ%PHu$u4C=i z!rNQPjWd^Xn^S)-7uwvrEe8AYatDdJy93eN^`nRUNnS40tmG!$|Lp30|MPqQa$x>_KP-50)+6t)IDf=$FT99G=v#+Vo%*g_48QqNbrucHUxPSSm-((XB}S07u=JngsV$+(Wpv$@X_5ftm|$rx#=m8{5rG zyqydYjAg^s)xxLv3*lsmd=IK;dh}m>3j@UI9_eq4 zKMmieVN~-Z5XZI%V@zNA$!7`ppF*5Ni6CAH#!U!sRq!i=Ul8xbNU;ieqJIQF;#P-h zga`tv5RPB@JFLd6P=A#ot!hwLQkW8a2_xlFHD48o!M`G4rM<%<_?F|X1bz_}ZzXb4 ziSQK&QK|aSpW(vrVSbo*o_AvD$`O;_DuAyHI9O*aNi}>zNSAgKOVk+5Wd+g*sy-$7 zTCJwS{4>=cLNi}gYB{IjN&AaTqZGb{_{I95f3@mY4L_bpnx=JKEo;RTz#j z?pj!fO82eA&+#0b&r|Kw+F*_?ihOzP=h@TnnQ2x%-dT)QFpmJX5Z+!Njn*sfe?&04a&1Y0XbhQ?mM@} zuYPo_WUTjeDU^nY*u6czP=v(1AznSA9Ek*5HMyiyPt32HzhkSFlOu{pE=_@rE*Nc4< zIn>lT)cy@DMaelZF=OiE@w@-|G_N|{@<`i*dks*BSWbU~&2PwEU%9L6uEQxqTCd^U z;)`LYCWLL=MrJs#( z4kyb`OR8hDd}P^cCk>7bOL_W1oG*~ty|RY5c2KgshU_&EokxwkMxU$&%J|;UW?}vG zw-CIWeN;7?9;O za($AoGoJdi{w~XXB+C6tPLx}g*Sg<3(YIqz#xJ+4SxRzUdV4$H_@XG(a(q9_>%g7A zlBaRg??WJEXn>w5tt3I^p2 z_y1)Gqg)6bRCV^D?IcQ>ItnuV0@YHt_dAOeB_DaXD@$pElg&Uy*$+A2Bd4S~L(RET z()eDMwx#4;>{n#wFGiUuZ>5pC|CHTGDt`n@yh~2?0m;d@$u4#M6}OPGE~o(bc}{S1 z%VBSIKDIu|xA4}6Bs3N&eOQUUI}i!oMASgG^Lp;`CnwpA+l{!2G75F@RF={JAzw-7 z-zalnn>*c?rYHxaR8wc}`{qQC_D`*?)+KJVUbgQ9)XOVb+P<>iT9?m#1uM%) zj{kRAUPfw~&5smw6AzoloHXQlDgL3FTTrjyE?B z*gvn#lZpFhx$N8jYSEf5`P&uXxua|y&rnhN=Q-uZ{ zcH685#15p~XSCm2wEr^HyS%5NZgTM?x_;xGac4@_w6Vdtwl;<_jt*mZ*0eF4S=Zm3 zj`_D$OSK@ym5`b8zQH(lgOYtZjHFjheHM8I{e9={2YQY>W%BF=XPkBAlf6^-Uf9*N z@wqAA+qCk9GcHTK+ItF1<=u8UL%);dbDKR!V*X-m8SDMWDLrqVHu3KDXWlXTZx`jC z|KzMoPFc9=@(b@>lJ`j4Rr{ZD>Vy7kk1^J%R%fbkCa4ngOBfJ<4{h2MsW!GsRhu&b z*m0>=t;z&cdo#4rLrXfe*+Yvq47FaF2`yc&eIwwtjmH=DV}_z1wBvhHS%m|M+-VVe ztt-KudyPjt)FvCuyw5<11~)~HuWpPFx#QFYP1Z$#PSn##;8IY2YDK1p5FE}bb%&B6 zhoYpjfpswJu0Xx-jW>?QuzQkFdeM??N{^Bc%DWi5uLaQeF2}b{g}bihDy`7#VAi1L zhO&)%(4;1xIpJ8&kAP#cDEVRgmiLorsm$E z)eX^^dQ;|*#@U%QPv;(s^E>5nbjB1&d5yCOElpbIOvZA@JOsC4CW?YLNfP@u-hjLF(GJO8N|Q;_XMKl#q5|5W|Q zaBJgcJ!`I+O%-&SF*{G|Ow8PD(2$Q%2O%kUhxHv@)(jt;gp4(68z zyo?qVXhTKVUo`W#wCl||m4*ZD?#+F!J@{|F|!RT;Lw z$ct>EsEeVtD9NKUF)Vl}Tpzgo#VgfT7lSBwY!JSZ7vHX}Ms6Luf$T}NW~zY5bm3iG zA}acqwcS&anhg7oUxI*9jxn(;6f8@`8cG92rG@c8sIa6cP#JdL;?d=`WhGc7NvMriwZtYH{TH?{x zWV|C9)6(c*8qtnqSE?al@`62>CK@{H>fs$vCEF6n zL2vK6NVuXT6pEAvf>ohNAXHru4wROLBY|KzR8(3VoE8d~gx23Y2nFp(wsdtiC)-kq zmRKjUH+=~5NeaM*rE8v@d(Fdq+wXBIhP}NALT2u{ZtLdNt`SkrntkQsgYF-B$7;;? z`N}d?K3fQhR1o|6bjID>8LE%?*BZlENWDE<#;*^=N{UMZp~j-JKxq(f4Y7D*FcwaP z!wKxKr#Cl#Uq52|wgqLaujohj-uX6wfez1Spol>E|4z!z%6)iNO^?=+xXrgCZZ*xV z%T?mGfW$2_tpB4=R=So8Ip!KbonqGVktY$N8DES$Fk4Um$7LEBp;YD`P2Sctb)aL? zrA-d60EZ9}972`g5X!+JRB9YT-ug#L~8|ulE(Q&BQ=q_x!?d6kU?=qe~gc? zIh56@u|!cxELvE?N+gQIWd*@t5VK#eVSZF!$0{Qr zyAUd0;v3CH#kFANf!Za4DJ^UWH6{|VSRhnVh&ePC!yG!TEFLHeH6)6r#S2S|>SOCE z)0au*tMZ3|=>MGfBrP}y>wJ>rYWZzqyO139boz003+t6T?cj9)HyYAvkdAT6D zk^1r0+=RV7x>JuiX~v^Vp4-y0=M^WMH*52aC!hMo+I?re_vO;3uR5yz?iG)s(lhjJ z{po!cAceiMTnAUyp7(RT*7fWbU-WHZ|9eNbTs>_6oL0X(zyZoLXX(}fc#4a*Sj4p* zOF%)TWfs|sj>gCuw*M{cAzPg#fF&-HuPmoM?)I0gX^r<2ZQQXNw*MVd`48jH#@4*q z%6+wGKHJA#6|>)tV*h(bwS7En{kj9Riq@~QonBefWIs|nv7#Ebbk9rJBu6t2EuZc7 z67A)6W@=3eE~R;r$8)zULfhCof(`Ux``_e9wy%3F27@Z*qyG1Tr`!6MYtjj5-)yyNCr7$9-|byO%pK!l`_KK; zZ;#?+v{6AdqAEaJ>-?ne@c6a=yklEO-u|s$Z=Y69r&a50woS|p=%rVXlt zdV4yp1IxA0TqE#^n7$qepd|~kTzA54FJ@aI0JBIz(EEvfB%7UC%KAZgEm^XKyIcDNdet1jy!WrRL z=Y4S1)#vRycKm1WFTMGdsqZmyvt{qzqT;DMb233aCEGvywI|(Wm9pS*mc!O?0{jqd zF7ru?Y-V@Cc7FcU&nka{vg)N|+x1V}8J>Fa6E|#`v!eZ?*0Ub@ diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json index 5222678..dbfd2c0 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -3,8 +3,12 @@ "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\ara_hivemind\\compabilityeffect_binddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_hivemind\\compabilityeffect_binddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\verb\\verb_shootmeltbeam.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verb\\verb_shootmeltbeam.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\verb\\compcleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verb\\compcleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -19,19 +23,32 @@ { "$type": "Document", "DocumentIndex": 0, - "Title": "CompAbilityEffect_BindDrone.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "RelativeDocumentMoniker": "ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "RelativeToolTip": "ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "ViewState": "AgIAAAMAAAAAAAAAAAAAABEAAABkAAAAAAAAAA==", + "Title": "Verb_ShootMeltBeam.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs", + "RelativeDocumentMoniker": "Verb\\Verb_ShootMeltBeam.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs", + "RelativeToolTip": "Verb\\Verb_ShootMeltBeam.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAyAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-09T02:52:35.777Z", + "WhenOpened": "2025-09-09T03:04:00.299Z", "EditorCaption": "" }, { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "CompCleave.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs", + "RelativeDocumentMoniker": "Verb\\CompCleave.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs", + "RelativeToolTip": "Verb\\CompCleave.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-09-09T03:03:30.118Z", + "EditorCaption": "" } ] } diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 7ea45a9..713ad63 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -90,6 +90,18 @@ + + + + + + + + + + + + diff --git a/Source/ArachnaeSwarm/Verb/CompCleave.cs b/Source/ArachnaeSwarm/Verb/CompCleave.cs new file mode 100644 index 0000000..e969134 --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/CompCleave.cs @@ -0,0 +1,23 @@ +using Verse; + +namespace ArachnaeSwarm +{ + public class CompProperties_Cleave : CompProperties + { + public float cleaveAngle = 90f; + public float cleaveRange = 2.9f; + public float cleaveDamageFactor = 0.7f; + public bool damageDowned = false; + public DamageDef explosionDamageDef = null; + + public CompProperties_Cleave() + { + this.compClass = typeof(CompCleave); + } + } + + public class CompCleave : ThingComp + { + public CompProperties_Cleave Props => (CompProperties_Cleave)this.props; + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Verb/CompMultiStrike.cs b/Source/ArachnaeSwarm/Verb/CompMultiStrike.cs new file mode 100644 index 0000000..c615eb0 --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/CompMultiStrike.cs @@ -0,0 +1,20 @@ +using Verse; + +namespace ArachnaeSwarm +{ + public class CompProperties_MultiStrike : CompProperties + { + public IntRange strikeCount = new IntRange(3, 3); + public float damageMultiplierPerStrike = 0.5f; + + public CompProperties_MultiStrike() + { + compClass = typeof(CompMultiStrike); + } + } + + public class CompMultiStrike : ThingComp + { + public CompProperties_MultiStrike Props => (CompProperties_MultiStrike)props; + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Verb/VerbPropertiesExplosiveBeam.cs b/Source/ArachnaeSwarm/Verb/VerbPropertiesExplosiveBeam.cs new file mode 100644 index 0000000..1288fb3 --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/VerbPropertiesExplosiveBeam.cs @@ -0,0 +1,50 @@ +using RimWorld; +using Verse; +using Verse.Sound; + +namespace ArachnaeSwarm +{ + public class VerbPropertiesExplosiveBeam : VerbProperties + { + // 爆炸开关 + public bool enableExplosion = false; + + // 每x个shotcount触发一次爆炸 + public int explosionShotInterval = 1; + + // 爆炸基础属性 + public float explosionRadius = 2.9f; + public DamageDef explosionDamageDef = null; // null时使用默认的Bomb + public int explosionDamage = -1; // -1时使用武器默认伤害 + public float explosionArmorPenetration = -1f; // -1时使用武器默认穿甲 + + // 爆炸音效和特效 + public SoundDef explosionSound = null; + public EffecterDef explosionEffecter = null; + + // 爆炸后生成物品 + public ThingDef postExplosionSpawnThingDef = null; + public float postExplosionSpawnChance = 0f; + public int postExplosionSpawnThingCount = 1; + + // 爆炸前生成物品 + public ThingDef preExplosionSpawnThingDef = null; + public float preExplosionSpawnChance = 0f; + public int preExplosionSpawnThingCount = 1; + + // 气体效果 + public GasType? postExplosionGasType = null; + + // 其他爆炸属性 + public bool applyDamageToExplosionCellsNeighbors = true; + public float chanceToStartFire = 0f; + public bool damageFalloff = true; + public float screenShakeFactor = 0f; // 新增:屏幕震动因子 + + public VerbPropertiesExplosiveBeam() + { + // 设置默认值 + verbClass = typeof(Verb_ShootBeamExplosive); + } + } +} diff --git a/Source/ArachnaeSwarm/Verb/VerbProperties_Excalibur.cs b/Source/ArachnaeSwarm/Verb/VerbProperties_Excalibur.cs new file mode 100644 index 0000000..c4595bb --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/VerbProperties_Excalibur.cs @@ -0,0 +1,15 @@ +using Verse; +using RimWorld; + +namespace ArachnaeSwarm +{ + public class VerbProperties_Excalibur : VerbProperties + { + public float pathWidth = 1f; // Default path width + public DamageDef damageDef; // Custom damage type + public float damageAmount = -1f; // Custom damage amount + public float armorPenetration = -1f; // Custom armor penetration + public float maxRange = 1000f; // Default max range for beams + public string beamDefName = "ExcaliburBeam"; // Default beam def name + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Verb/VerbProperties_WeaponStealBeam.cs b/Source/ArachnaeSwarm/Verb/VerbProperties_WeaponStealBeam.cs new file mode 100644 index 0000000..dfba763 --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/VerbProperties_WeaponStealBeam.cs @@ -0,0 +1,18 @@ +using RimWorld; +using Verse; + +namespace ArachnaeSwarm +{ + public class VerbProperties_WeaponStealBeam : VerbPropertiesExplosiveBeam + { + public HediffDef hediffToApply; + public float hediffSeverityPerHit = 0.1f; // 每次命中增加的严重性百分比 + public float hediffMaxSeverity = 1.0f; // 达到此严重性时触发抢夺 + public bool removeHediffOnSteal = true; // 抢夺后是否移除hediff + + public VerbProperties_WeaponStealBeam() + { + verbClass = typeof(Verb_ShootWeaponStealBeam); + } + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_Cleave.cs b/Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_Cleave.cs new file mode 100644 index 0000000..a4a7bfa --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_Cleave.cs @@ -0,0 +1,180 @@ +using RimWorld; +using Verse; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace ArachnaeSwarm +{ + public class Verb_MeleeAttack_Cleave : Verb_MeleeAttack + { + private CompCleave Comp + { + get + { + return this.EquipmentSource?.GetComp(); + } + } + + protected override DamageWorker.DamageResult ApplyMeleeDamageToTarget(LocalTargetInfo target) + { + if (this.Comp == null) + { + // This verb should only be used with a weapon that has CompCleave + return new DamageWorker.DamageResult(); + } + + DamageWorker.DamageResult result = new DamageWorker.DamageResult(); + + // 1. 对主目标造成伤害 + DamageInfo dinfo = new DamageInfo( + this.verbProps.meleeDamageDef, + this.verbProps.AdjustedMeleeDamageAmount(this, this.CasterPawn), + this.verbProps.AdjustedArmorPenetration(this, this.CasterPawn), + -1f, + this.CasterPawn, + null, + this.EquipmentSource?.def + ); + dinfo.SetTool(this.tool); + + if (target.HasThing) + { + result = target.Thing.TakeDamage(dinfo); + } + + // 2. 执行溅射伤害 + Pawn casterPawn = this.CasterPawn; + if (casterPawn == null || !target.HasThing) + { + return result; + } + + Thing mainTarget = target.Thing; + Vector3 attackDirection = (mainTarget.Position - casterPawn.Position).ToVector3().normalized; + bool mainTargetIsHostile = mainTarget.HostileTo(casterPawn); + + // 查找施法者周围的潜在目标 + IEnumerable potentialTargets = GenRadial.RadialDistinctThingsAround(casterPawn.Position, casterPawn.Map, this.Comp.Props.cleaveRange, useCenter: true); + + foreach (Thing thing in potentialTargets) + { + // 跳过主目标、自己和非生物 + if (thing == mainTarget || thing == casterPawn || !(thing is Pawn secondaryTargetPawn)) + { + continue; + } + + // 根据XML配置决定是否跳过倒地的生物 + if (!this.Comp.Props.damageDowned && secondaryTargetPawn.Downed) + { + continue; + } + + // 智能溅射:次要目标的敌对状态必须与主目标一致 + if (secondaryTargetPawn.HostileTo(casterPawn) != mainTargetIsHostile) + { + continue; + } + + // 检查目标是否在攻击扇形范围内 + Vector3 directionToTarget = (thing.Position - casterPawn.Position).ToVector3().normalized; + float angle = Vector3.Angle(attackDirection, directionToTarget); + + if (angle <= this.Comp.Props.cleaveAngle / 2f) + { + // 对次要目标造成伤害 + DamageInfo cleaveDinfo = new DamageInfo( + this.verbProps.meleeDamageDef, + this.verbProps.AdjustedMeleeDamageAmount(this, casterPawn) * this.Comp.Props.cleaveDamageFactor, + this.verbProps.AdjustedArmorPenetration(this, casterPawn) * this.Comp.Props.cleaveDamageFactor, + -1f, + casterPawn, + null, + this.EquipmentSource?.def + ); + cleaveDinfo.SetTool(this.tool); + secondaryTargetPawn.TakeDamage(cleaveDinfo); + } + } + + // 3. 创建扇形爆炸效果 + CreateCleaveExplosion(casterPawn, mainTarget, this.Comp.Props.cleaveRange, this.Comp.Props.cleaveAngle); + + return result; + } + + private void CreateCleaveExplosion(Pawn caster, Thing target, float radius, float angle) + { + if (caster.Map == null || this.Comp.Props.explosionDamageDef == null) return; + + Vector3 direction = (target.Position - caster.Position).ToVector3().normalized; + float baseAngle = direction.AngleFlat(); + + float startAngle = baseAngle - (angle / 2f); + float endAngle = baseAngle + (angle / 2f); + + GenExplosion.DoExplosion( + center: caster.Position, + map: caster.Map, + radius: radius, + damType: this.Comp.Props.explosionDamageDef, + instigator: caster, + damAmount: 0, + armorPenetration: 0, + explosionSound: null, + weapon: this.EquipmentSource?.def, + projectile: null, + intendedTarget: target, + postExplosionSpawnThingDef: null, + postExplosionSpawnChance: 0f, + postExplosionSpawnThingCount: 1, + postExplosionGasType: null, + applyDamageToExplosionCellsNeighbors: false, + preExplosionSpawnThingDef: null, + preExplosionSpawnChance: 0f, + preExplosionSpawnThingCount: 1, + chanceToStartFire: 0f, + damageFalloff: false, + direction: null, // Let affectedAngle handle the direction and arc + ignoredThings: null, + affectedAngle: new FloatRange(startAngle, endAngle), + doVisualEffects: true, + propagationSpeed: 1.7f, + excludeRadius: 0.9f, + doSoundEffects: false, + screenShakeFactor: 0.2f + ); + } + + public override void DrawHighlight(LocalTargetInfo target) + { + base.DrawHighlight(target); + + if (target.IsValid && CasterPawn != null && this.Comp != null) + { + GenDraw.DrawFieldEdges(GetCleaveCells(target.Cell)); + } + } + + private List GetCleaveCells(IntVec3 center) + { + if (this.Comp == null) + { + return new List(); + } + + IntVec3 casterPos = this.CasterPawn.Position; + Map map = this.CasterPawn.Map; + Vector3 attackDirection = (center - casterPos).ToVector3().normalized; + + return GenRadial.RadialCellsAround(casterPos, this.Comp.Props.cleaveRange, useCenter: true) + .Where(cell => { + if (!cell.InBounds(map)) return false; + Vector3 directionToCell = (cell - casterPos).ToVector3(); + if (directionToCell.sqrMagnitude <= 0.001f) return false; // Exclude caster's cell + return Vector3.Angle(attackDirection, directionToCell) <= this.Comp.Props.cleaveAngle / 2f; + }).ToList(); + } + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_MultiStrike.cs b/Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_MultiStrike.cs new file mode 100644 index 0000000..ca731f6 --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/Verb_MeleeAttack_MultiStrike.cs @@ -0,0 +1,53 @@ +using RimWorld; +using Verse; + +namespace ArachnaeSwarm +{ + public class Verb_MeleeAttack_MultiStrike : Verb_MeleeAttack + { + private CompMultiStrike Comp + { + get + { + return this.EquipmentSource?.GetComp(); + } + } + + protected override DamageWorker.DamageResult ApplyMeleeDamageToTarget(LocalTargetInfo target) + { + DamageWorker.DamageResult result = new DamageWorker.DamageResult(); + if (this.Comp != null && target.HasThing) + { + int strikes = this.Comp.Props.strikeCount.RandomInRange; + for (int i = 0; i < strikes; i++) + { + if (target.ThingDestroyed) + { + break; + } + DamageInfo dinfo = new DamageInfo(this.verbProps.meleeDamageDef, this.verbProps.AdjustedMeleeDamageAmount(this, this.CasterPawn) * this.Comp.Props.damageMultiplierPerStrike, this.verbProps.AdjustedArmorPenetration(this, this.CasterPawn) * this.Comp.Props.damageMultiplierPerStrike, -1f, this.CasterPawn, null, this.EquipmentSource?.def); + dinfo.SetTool(this.tool); + DamageWorker.DamageResult damageResult = target.Thing.TakeDamage(dinfo); + result.totalDamageDealt += damageResult.totalDamageDealt; + result.wounded = (result.wounded || damageResult.wounded); + result.stunned = (result.stunned || damageResult.stunned); + if (damageResult.parts != null) + { + if (result.parts == null) + { + result.parts = new System.Collections.Generic.List(); + } + result.parts.AddRange(damageResult.parts); + } + } + } + else + { + DamageInfo dinfo2 = new DamageInfo(this.verbProps.meleeDamageDef, this.verbProps.AdjustedMeleeDamageAmount(this, this.CasterPawn), this.verbProps.AdjustedArmorPenetration(this, this.CasterPawn), -1f, this.CasterPawn, null, this.EquipmentSource?.def); + dinfo2.SetTool(this.tool); + result = target.Thing.TakeDamage(dinfo2); + } + return result; + } + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Verb/Verb_ShootArc.cs b/Source/ArachnaeSwarm/Verb/Verb_ShootArc.cs new file mode 100644 index 0000000..cc3d2bb --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/Verb_ShootArc.cs @@ -0,0 +1,401 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RimWorld; +using UnityEngine; +using Verse; +using Verse.Sound; + +namespace ArachnaeSwarm +{ + public class VerbProperties_Arc : VerbProperties + { + public DamageDef damageDef; + + public float EMPDamageAmount = -1f; + + public int damageAmount = -1; + + public float armorPenetration = -1f; + + public float affectedAngle; + + public bool isConductible = false; + + public int conductNum; + + public bool conductFriendly = false; + + public bool conductHostile = true; + } + + public class Verb_ShootArc : Verb + { + private VerbProperties_Arc Props + { + get + { + return (VerbProperties_Arc)this.verbProps; + } + } + + private int damageAmount + { + get + { + if (this.Props.damageAmount > 0) + { + return this.Props.damageAmount; + } + if (this.verbProps.beamDamageDef != null) + { + return this.verbProps.beamDamageDef.defaultDamage; + } + Log.ErrorOnce(string.Format("Verb_ShootArc on {0} has no damageAmount and no beamDamageDef.", (this.caster != null) ? this.caster.def.defName : "null"), this.GetHashCode()); + return 0; + } + } + + private float armorPenetration + { + get + { + if (this.Props.armorPenetration > 0f) + { + return this.Props.armorPenetration; + } + if (this.verbProps.beamDamageDef != null) + { + return this.verbProps.beamDamageDef.defaultArmorPenetration; + } + return 0f; + } + } + + public override void WarmupComplete() + { + this.TryCastShot(); + } + + protected override bool TryCastShot() + { + this.MakeExplosion(); + bool flag = this.verbProps.soundCast != null; + bool flag3 = flag; + if (flag3) + { + this.verbProps.soundCast.PlayOneShot(new TargetInfo(this.caster.Position, this.caster.MapHeld, false)); + } + bool flag2 = this.verbProps.soundCastTail != null; + bool flag4 = flag2; + if (flag4) + { + this.verbProps.soundCastTail.PlayOneShotOnCamera(this.caster.Map); + } + return true; + } + + private bool IsTargetImmobile(LocalTargetInfo target) + { + Thing thing = target.Thing; + Pawn pawn = thing as Pawn; + return pawn != null && !pawn.Downed && pawn.GetPosture() == PawnPosture.Standing; + } + + public override bool CanHitTarget(LocalTargetInfo targ) + { + bool flag = this.caster == null || !this.caster.Spawned; + bool flag2 = flag; + return !flag2 && (targ == this.caster || this.CanHitTargetFrom(this.caster.Position, targ)); + } + + protected void MakeExplosion() + { + Pawn casterPawn = this.CasterPawn; + if (!casterPawn.Spawned || this.Props == null) + { + return; + } + + // 技能学习逻辑 (只在目标是站立Pawn时) + if (this.currentTarget.Thing is Pawn targetPawn && !targetPawn.Downed && targetPawn.GetPosture() == PawnPosture.Standing && casterPawn.skills != null) + { + casterPawn.skills.Learn(SkillDefOf.Shooting, 250f * verbProps.AdjustedFullCycleTime(this, casterPawn), false, false); + } + + float weaponDamageMultiplier = base.EquipmentSource.GetStatValue(StatDefOf.RangedWeapon_DamageMultiplier, true, -1); + int damageMultiplier = this.GetDamageAmount(weaponDamageMultiplier, null); + float armorPenetrationMultiplier = this.GetArmorPenetration(weaponDamageMultiplier, null); + + // 总是先收集范围内的Pawn,为后续决策做准备 + List cells = Verb_ShootArc.circularSectorCellsStartedCaster(casterPawn.Position, casterPawn.Map, this.currentTarget.Cell, this.Props.range, this.Props.affectedAngle, false).ToList(); + HashSet hashSet = this.HashSetConverter(cells); + this.pawnConduct.Add(casterPawn); + + foreach (IntVec3 cell in hashSet) + { + List list = casterPawn.Map.thingGrid.ThingsListAt(cell); + for (int num = list.Count - 1; num >= 0; num--) + { + if (list[num] is Pawn p) + { + bool isFriendly = p.Faction != null && casterPawn.Faction != null && !p.Faction.HostileTo(casterPawn.Faction); + if ((!this.Props.conductFriendly && isFriendly) || (!this.Props.conductHostile && p.HostileTo(casterPawn))) + { + continue; + } + bool isInvalidPosture = p.GetPosture() != PawnPosture.Standing && this.currentTarget.Thing != p; + if (!isInvalidPosture) + { + this.pawnConduct.Add(p); + } + } + } + } + + // 决策:如果设为导电模式且有至少一个传导目标,则进行链式攻击 + if (this.Props.isConductible && this.pawnConduct.Count > 1) + { + for (int i = 0; i < this.Props.conductNum && i < this.pawnConduct.Count - 1; i++) + { + if (this.Props.EMPDamageAmount > 0f) + { + this.TargetTakeDamage(casterPawn, this.pawnConduct[i + 1], DamageDefOf.EMP, this.Props.EMPDamageAmount, -1f); + } + this.TargetTakeDamage(casterPawn, this.pawnConduct[i + 1], this.Props.damageDef, (float)damageMultiplier, armorPenetrationMultiplier); + if (this.verbProps.beamMoteDef != null) + { + MoteMaker.MakeInteractionOverlay(this.verbProps.beamMoteDef, new TargetInfo(this.pawnConduct[i].Position, this.caster.Map, false), new TargetInfo(this.pawnConduct[i + 1].Position, this.caster.Map, false)); + } + } + } + // 否则(非导电模式,或没有传导目标),执行一次普通的单体攻击 + else + { + Thing primaryTarget = this.currentTarget.Thing; + if (primaryTarget != null) + { + float angle = (primaryTarget.Position - this.caster.Position).AngleFlat; + DamageInfo dinfo = new DamageInfo(this.Props.damageDef, (float)damageMultiplier, armorPenetrationMultiplier, angle, this.caster, null, base.EquipmentSource.def, DamageInfo.SourceCategory.ThingOrUnknown, this.currentTarget.Thing); + primaryTarget.TakeDamage(dinfo); + } + + // 无论是否命中,都显示视觉效果 + if (this.verbProps.beamMoteDef != null) + { + MoteMaker.MakeInteractionOverlay(this.verbProps.beamMoteDef, new TargetInfo(this.caster.Position, this.caster.Map, false), new TargetInfo(this.currentTarget.Cell, this.caster.Map, false)); + } + } + this.pawnConduct.Clear(); + } + + private void DoExplosion(Pawn casterPawn, int damAmount, float armorPenetration, FloatRange? affectedAngle) + { + GenExplosion.DoExplosion( + center: casterPawn.Position, + map: this.caster.MapHeld, + radius: this.verbProps.range, + damType: this.Props.damageDef, + instigator: casterPawn, // Corrected + damAmount: damAmount, + armorPenetration: armorPenetration, + explosionSound: null, + weapon: this.CasterPawn.equipment?.Primary?.def, // Safety check + projectile: null, + intendedTarget: this.currentTarget.Thing, // Corrected + postExplosionSpawnThingDef: null, // Simplified + postExplosionSpawnChance: 0f, + postExplosionSpawnThingCount: 1, + postExplosionGasType: null, + postExplosionGasRadiusOverride: null, + postExplosionGasAmount: 0, + applyDamageToExplosionCellsNeighbors: false, + preExplosionSpawnThingDef: null, + preExplosionSpawnChance: 0f, + preExplosionSpawnThingCount: 1, + chanceToStartFire: 0f, + damageFalloff: false, + direction: null, + ignoredThings: null, + affectedAngle: affectedAngle, + doVisualEffects: true, + propagationSpeed: 0.6f, + excludeRadius: 0f, + doSoundEffects: false, + postExplosionSpawnThingDefWater: null, + screenShakeFactor: 1f, + flammabilityChanceCurve: null, + overrideCells: null, + postExplosionSpawnSingleThingDef: null, + preExplosionSpawnSingleThingDef: null + ); + } + + + public override void DrawHighlight(LocalTargetInfo target) + { + base.DrawHighlight(target); + bool isValid = target.IsValid; + bool flag = isValid; + if (flag) + { + IntVec3 position = this.caster.Position; + float num = Mathf.Atan2(-(float)(target.Cell.z - position.z), (float)(target.Cell.x - position.x)) * 57.29578f; + Verb_ShootArc.RenderPredictedAreaOfEffect(this.caster.Position, this.Props.range, this.verbProps.explosionRadiusRingColor, new FloatRange(num - this.Props.affectedAngle, num + this.Props.affectedAngle)); + } + } + + public static void RenderPredictedAreaOfEffect(IntVec3 loc, float radius, Color color, FloatRange affectedAngle) + { + bool flag = affectedAngle.min < -180f || affectedAngle.max > 180f; + bool flag2 = flag; + List cellsSum; + if (flag2) + { + DamageWorker worker = DamageDefOf.Bomb.Worker; + Map currentMap = Find.CurrentMap; + FloatRange? affectedAngle2 = new FloatRange?(new FloatRange(Verb_ShootArc.AngleWrapped(affectedAngle.min), 180f)); + List cells = worker.ExplosionCellsToHit(loc, currentMap, radius, null, null, affectedAngle2).ToList(); + DamageWorker worker2 = DamageDefOf.Bomb.Worker; + Map currentMap2 = Find.CurrentMap; + affectedAngle2 = new FloatRange?(new FloatRange(-180f, Verb_ShootArc.AngleWrapped(affectedAngle.max))); + List cells2 = worker2.ExplosionCellsToHit(loc, currentMap2, radius, null, null, affectedAngle2).ToList(); + cellsSum = cells.Concat(cells2).ToList(); + } + else + { + DamageWorker worker3 = DamageDefOf.Bomb.Worker; + Map currentMap3 = Find.CurrentMap; + FloatRange? affectedAngle3 = new FloatRange?(affectedAngle); + cellsSum = worker3.ExplosionCellsToHit(loc, currentMap3, radius, null, null, affectedAngle3).ToList(); + } + GenDraw.DrawFieldEdges(cellsSum, color, null); + } + + public static float AngleWrapped(float angle) + { + while (angle > 180f) + { + angle -= 360f; + } + while (angle < -180f) + { + angle += 360f; + } + return (angle == 180f) ? -180f : angle; + } + + private static IEnumerable circularSectorCellsStartedCaster(IntVec3 center, Map map, IntVec3 target, float radius, float angle, bool useCenter = false) + { + float num = Mathf.Atan2(-(float)(target.z - center.z), (float)(target.x - center.x)) * 57.29578f; + FloatRange affectedAngle = new FloatRange(num - angle, num + angle); + bool flag = affectedAngle.min < -180f || affectedAngle.max > 180f; + bool flag2 = flag; + List cellsSum; + if (flag2) + { + DamageWorker worker = DamageDefOf.Bomb.Worker; + FloatRange? affectedAngle2 = new FloatRange?(new FloatRange(Verb_ShootArc.AngleWrapped(affectedAngle.min), 180f)); + List cells = worker.ExplosionCellsToHit(center, map, radius, null, null, affectedAngle2).ToList(); + DamageWorker worker2 = DamageDefOf.Bomb.Worker; + affectedAngle2 = new FloatRange?(new FloatRange(-180f, Verb_ShootArc.AngleWrapped(affectedAngle.max))); + List cells2 = worker2.ExplosionCellsToHit(center, map, radius, null, null, affectedAngle2).ToList(); + cellsSum = cells.Concat(cells2).ToList(); + } + else + { + DamageWorker worker3 = DamageDefOf.Bomb.Worker; + FloatRange? affectedAngle3 = new FloatRange?(affectedAngle); + cellsSum = worker3.ExplosionCellsToHit(center, map, radius, null, null, affectedAngle3).ToList(); + } + return cellsSum; + } + + protected virtual HashSet HashSetConverter(IEnumerable points) + { + HashSet hashSet = new HashSet(); + bool flag = points.Any(); + bool flag2 = flag; + if (flag2) + { + foreach (IntVec3 point in points) + { + hashSet.Add(point); + } + } + return hashSet; + } + + private void TargetTakeDamage(Pawn caster, Pawn target, DamageDef damageDef, float damageAmount, float armorPenetration = -1f) + { + bool flag = caster == null || target == null; + bool flag2 = flag; + if (flag2) + { + Log.Error("TargetTakeDamage has null caster or target"); + } + else + { + float angleFlat = (this.currentTarget.Cell - caster.Position).AngleFlat; + BattleLogEntry_RangedImpact log = new BattleLogEntry_RangedImpact(caster, target, this.currentTarget.Thing, base.EquipmentSource.def, null, null); + DamageInfo dinfo = new DamageInfo(damageDef, damageAmount, armorPenetration, angleFlat, caster, null, base.EquipmentSource.def, DamageInfo.SourceCategory.ThingOrUnknown, this.currentTarget.Thing, true, true, QualityCategory.Normal, true); + target.TakeDamage(dinfo).AssociateWithLog(log); + } + } + + public int GetDamageAmount(float weaponDamageMultiplier, StringBuilder explanation = null) + { + int num = this.damageAmount; + bool flag = explanation != null; + bool flag3 = flag; + if (flag3) + { + explanation.AppendLine("StatsReport_BaseValue".Translate() + ": " + num.ToString()); + explanation.Append("StatsReport_QualityMultiplier".Translate() + ": " + weaponDamageMultiplier.ToStringPercent()); + } + num = Mathf.RoundToInt((float)num * weaponDamageMultiplier); + bool flag2 = explanation != null; + bool flag4 = flag2; + if (flag4) + { + explanation.AppendLine(); + explanation.AppendLine(); + explanation.Append("StatsReport_FinalValue".Translate() + ": " + num.ToString()); + } + return num; + } + + public float GetArmorPenetration(float weaponDamageMultiplier, StringBuilder explanation = null) + { + float num = this.armorPenetration; + bool flag = num < 0f; + bool flag4 = flag; + if (flag4) + { + num = (float)this.damageAmount * 0.015f; + } + bool flag2 = explanation != null; + bool flag5 = flag2; + if (flag5) + { + explanation.AppendLine("StatsReport_BaseValue".Translate() + ": " + num.ToStringPercent()); + explanation.AppendLine(); + explanation.Append("StatsReport_QualityMultiplier".Translate() + ": " + weaponDamageMultiplier.ToStringPercent()); + } + num *= weaponDamageMultiplier; + bool flag3 = explanation != null; + bool flag6 = flag3; + if (flag6) + { + explanation.AppendLine(); + explanation.AppendLine(); + explanation.Append("StatsReport_FinalValue".Translate() + ": " + num.ToStringPercent()); + } + return num; + } + + public List pawnConduct = new List(); + } +} + diff --git a/Source/ArachnaeSwarm/Verb/Verb_ShootBeamExplosive.cs b/Source/ArachnaeSwarm/Verb/Verb_ShootBeamExplosive.cs new file mode 100644 index 0000000..fe2175e --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/Verb_ShootBeamExplosive.cs @@ -0,0 +1,93 @@ +using System.Collections.Generic; +using RimWorld; +using UnityEngine; +using Verse; +using Verse.Sound; + +namespace ArachnaeSwarm +{ + public class Verb_ShootBeamExplosive : Verse.Verb_ShootBeam + { + private int explosionShotCounter = 0; + + protected override bool TryCastShot() + { + bool result = base.TryCastShot(); + + if (result && verbProps is VerbPropertiesExplosiveBeam explosiveProps && explosiveProps.enableExplosion) + { + explosionShotCounter++; + + if (explosionShotCounter >= explosiveProps.explosionShotInterval) + { + explosionShotCounter = 0; + TriggerExplosion(explosiveProps); + } + } + + return result; + } + + private void TriggerExplosion(VerbPropertiesExplosiveBeam explosiveProps) + { + Vector3 explosionPos = InterpolatedPosition; + IntVec3 explosionCell = explosionPos.ToIntVec3(); + + if (!explosionCell.InBounds(caster.Map)) + return; + + // 播放爆炸音效 + if (explosiveProps.explosionSound != null) + { + explosiveProps.explosionSound.PlayOneShot(new TargetInfo(explosionCell, caster.Map)); + } + + // 生成爆炸 + GenExplosion.DoExplosion( + center: explosionCell, + map: caster.Map, + radius: explosiveProps.explosionRadius, + damType: explosiveProps.explosionDamageDef ?? DamageDefOf.Bomb, + instigator: caster, + damAmount: explosiveProps.explosionDamage > 0 ? explosiveProps.explosionDamage : verbProps.defaultProjectile?.projectile?.GetDamageAmount(EquipmentSource) ?? 20, + armorPenetration: explosiveProps.explosionArmorPenetration >= 0 ? explosiveProps.explosionArmorPenetration : verbProps.defaultProjectile?.projectile?.GetArmorPenetration(EquipmentSource) ?? 0.3f, + explosionSound: null, // 我们已经手动播放了音效 + weapon: base.EquipmentSource?.def, + projectile: null, + intendedTarget: currentTarget.Thing, + postExplosionSpawnThingDef: explosiveProps.postExplosionSpawnThingDef, + postExplosionSpawnChance: explosiveProps.postExplosionSpawnChance, + postExplosionSpawnThingCount: explosiveProps.postExplosionSpawnThingCount, + postExplosionGasType: explosiveProps.postExplosionGasType, + applyDamageToExplosionCellsNeighbors: explosiveProps.applyDamageToExplosionCellsNeighbors, + preExplosionSpawnThingDef: explosiveProps.preExplosionSpawnThingDef, + preExplosionSpawnChance: explosiveProps.preExplosionSpawnChance, + preExplosionSpawnThingCount: explosiveProps.preExplosionSpawnThingCount, + chanceToStartFire: explosiveProps.chanceToStartFire, + damageFalloff: explosiveProps.damageFalloff, + direction: null, + ignoredThings: null, + affectedAngle: null, + doVisualEffects: true, + propagationSpeed: 0.6f, + excludeRadius: 0f, + doSoundEffects: false, // 我们手动处理音效 + screenShakeFactor: explosiveProps.screenShakeFactor // 新增:屏幕震动因子 + ); + + // 生成额外的视觉效果 + if (explosiveProps.explosionEffecter != null) + { + Effecter effecter = explosiveProps.explosionEffecter.Spawn(explosionCell, caster.Map); + effecter.Trigger(new TargetInfo(explosionCell, caster.Map), TargetInfo.Invalid); + effecter.Cleanup(); + } + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_Values.Look(ref explosionShotCounter, "explosionShotCounter", 0); + } + } +} diff --git a/Source/ArachnaeSwarm/Verb/Verb_ShootMeltBeam.cs b/Source/ArachnaeSwarm/Verb/Verb_ShootMeltBeam.cs new file mode 100644 index 0000000..0709e93 --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/Verb_ShootMeltBeam.cs @@ -0,0 +1,585 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using RimWorld; +using UnityEngine; +using Verse; +using Verse.Sound; +namespace ArachnaeSwarm +{ + // 我们让它继承自我们自己的 Verb_ShootBeamExplosive 以便复用爆炸逻辑 + public class Verb_ShootMeltBeam : Verb + { + // --- 从 Verb_ShootBeamExplosive 复制过来的字段 --- + private int explosionShotCounter = 0; + private int mirroredExplosionShotCounter = 0; + // --------------------------------------------- + + protected override int ShotsPerBurst + { + get + { + return this.verbProps.burstShotCount; + } + } + + public float ShotProgress + { + get + { + return (float)this.ticksToNextPathStep / (float)this.verbProps.ticksBetweenBurstShots; + } + } + + public Vector3 InterpolatedPosition + { + get + { + Vector3 b = base.CurrentTarget.CenterVector3 - this.initialTargetPosition; + return Vector3.Lerp(this.path[this.burstShotsLeft], this.path[Mathf.Min(this.burstShotsLeft + 1, this.path.Count - 1)], this.ShotProgress) + b; + } + } + + // 为镜像光束添加一个计算位置的属性 + public Vector3 MirroredInterpolatedPosition + { + get + { + Vector3 b = base.CurrentTarget.CenterVector3 - this.initialTargetPosition; + return Vector3.Lerp(this.mirroredPath[this.burstShotsLeft], this.mirroredPath[Mathf.Min(this.burstShotsLeft + 1, this.mirroredPath.Count - 1)], this.ShotProgress) + b; + } + } + + public override float? AimAngleOverride + { + get + { + return (this.state != VerbState.Bursting) ? null : new float?((this.InterpolatedPosition - this.caster.DrawPos).AngleFlat()); + } + } + + public override void DrawHighlight(LocalTargetInfo target) + { + base.DrawHighlight(target); + this.CalculatePath(target.CenterVector3, this.tmpPath, this.tmpPathCells, false); + foreach (IntVec3 tmpPathCell in this.tmpPathCells) + { + ShootLine resultingLine; + bool flag = this.TryFindShootLineFromTo(this.caster.Position, target, out resultingLine); + if ((this.verbProps.stopBurstWithoutLos && !flag) || !this.TryGetHitCell(resultingLine.Source, tmpPathCell, out var hitCell)) + { + continue; + } + this.tmpHighlightCells.Add(hitCell); + if (!this.verbProps.beamHitsNeighborCells) + { + continue; + } + foreach (IntVec3 beamHitNeighbourCell in this.GetBeamHitNeighbourCells(resultingLine.Source, hitCell)) + { + if (!this.tmpHighlightCells.Contains(beamHitNeighbourCell)) + { + this.tmpSecondaryHighlightCells.Add(beamHitNeighbourCell); + } + } + } + this.tmpSecondaryHighlightCells.RemoveWhere((IntVec3 x) => this.tmpHighlightCells.Contains(x)); + if (this.tmpHighlightCells.Any()) + { + GenDraw.DrawFieldEdges(this.tmpHighlightCells.ToList(), this.verbProps.highlightColor ?? Color.white); + } + if (this.tmpSecondaryHighlightCells.Any()) + { + GenDraw.DrawFieldEdges(this.tmpSecondaryHighlightCells.ToList(), this.verbProps.secondaryHighlightColor ?? Color.white); + } + this.tmpHighlightCells.Clear(); + this.tmpSecondaryHighlightCells.Clear(); + } + + protected override bool TryCastShot() + { + bool flag = this.currentTarget.HasThing && this.currentTarget.Thing.Map != this.caster.Map; + bool result; + if (flag) + { + result = false; + } + else + { + ShootLine shootLine; + bool flag2 = base.TryFindShootLineFromTo(this.caster.Position, this.currentTarget, out shootLine, false); + bool flag3 = this.verbProps.stopBurstWithoutLos && !flag2; + if (flag3) + { + result = false; + } + else + { + bool flag4 = base.EquipmentSource != null; + if (flag4) + { + CompChangeableProjectile comp = base.EquipmentSource.GetComp(); + if (comp != null) + { + comp.Notify_ProjectileLaunched(); + } + CompApparelReloadable comp2 = base.EquipmentSource.GetComp(); + if (comp2 != null) + { + comp2.UsedOnce(); + } + } + this.lastShotTick = Find.TickManager.TicksGame; + this.ticksToNextPathStep = this.verbProps.ticksBetweenBurstShots; + IntVec3 targetCell = this.InterpolatedPosition.Yto0().ToIntVec3(); + IntVec3 intVec; + bool flag5 = !this.TryGetHitCell(shootLine.Source, targetCell, out intVec); + if (flag5) + { + result = true; + } + else + { + this.HitCell(intVec, shootLine.Source, 1f); + bool beamHitsNeighborCells = this.verbProps.beamHitsNeighborCells; + if (beamHitsNeighborCells) + { + this.hitCells.Add(intVec); + foreach (IntVec3 intVec2 in this.GetBeamHitNeighbourCells(shootLine.Source, intVec)) + { + bool flag6 = !this.hitCells.Contains(intVec2); + if (flag6) + { + float damageFactor = this.pathCells.Contains(intVec2) ? 1f : 0.5f; + this.HitCell(intVec2, shootLine.Source, damageFactor); + this.hitCells.Add(intVec2); + } + } + } + IntVec3 targetCell2 = this.mirroredPath[Mathf.Min(this.burstShotsLeft, this.mirroredPath.Count - 1)].ToIntVec3(); + IntVec3 intVec3; + bool flag7 = this.TryGetHitCell(shootLine.Source, targetCell2, out intVec3); + if (flag7) + { + this.HitCell(intVec3, shootLine.Source, 1f); + this.mirroredHitCells.Add(intVec3); + bool beamHitsNeighborCells2 = this.verbProps.beamHitsNeighborCells; + if (beamHitsNeighborCells2) + { + foreach (IntVec3 intVec4 in this.GetBeamHitNeighbourCells(shootLine.Source, intVec3)) + { + bool flag8 = !this.mirroredHitCells.Contains(intVec4); + if (flag8) + { + float damageFactor2 = this.mirroredPathCells.Contains(intVec4) ? 1f : 0.5f; + this.HitCell(intVec4, shootLine.Source, damageFactor2); + this.mirroredHitCells.Add(intVec4); + } + } + } + } + + // --- 添加爆炸逻辑 --- + if (verbProps is VerbPropertiesExplosiveBeam explosiveProps && explosiveProps.enableExplosion) + { + explosionShotCounter++; + mirroredExplosionShotCounter++; + + if (explosionShotCounter >= explosiveProps.explosionShotInterval) + { + explosionShotCounter = 0; + TriggerExplosion(explosiveProps, InterpolatedPosition); + } + if (mirroredExplosionShotCounter >= explosiveProps.explosionShotInterval) + { + mirroredExplosionShotCounter = 0; + TriggerExplosion(explosiveProps, MirroredInterpolatedPosition); + } + } + // --------------------- + + result = true; + } + } + } + return result; + } + + // --- 从 Verb_ShootBeamExplosive 复制过来的方法 --- + private void TriggerExplosion(VerbPropertiesExplosiveBeam explosiveProps, Vector3 position) + { + IntVec3 explosionCell = position.ToIntVec3(); + + if (!explosionCell.InBounds(caster.Map)) + return; + + // 播放爆炸音效 + if (explosiveProps.explosionSound != null) + { + explosiveProps.explosionSound.PlayOneShot(new TargetInfo(explosionCell, caster.Map)); + } + + // 生成爆炸 + GenExplosion.DoExplosion( + center: explosionCell, + map: caster.Map, + radius: explosiveProps.explosionRadius, + damType: explosiveProps.explosionDamageDef ?? DamageDefOf.Bomb, + instigator: caster, + damAmount: explosiveProps.explosionDamage > 0 ? explosiveProps.explosionDamage : verbProps.defaultProjectile?.projectile?.GetDamageAmount(EquipmentSource) ?? 20, + armorPenetration: explosiveProps.explosionArmorPenetration >= 0 ? explosiveProps.explosionArmorPenetration : verbProps.defaultProjectile?.projectile?.GetArmorPenetration(EquipmentSource) ?? 0.3f, + explosionSound: null, // 我们已经手动播放了音效 + weapon: base.EquipmentSource?.def, + projectile: null, + intendedTarget: currentTarget.Thing, + postExplosionSpawnThingDef: explosiveProps.postExplosionSpawnThingDef, + postExplosionSpawnChance: explosiveProps.postExplosionSpawnChance, + postExplosionSpawnThingCount: explosiveProps.postExplosionSpawnThingCount, + postExplosionGasType: explosiveProps.postExplosionGasType, + applyDamageToExplosionCellsNeighbors: explosiveProps.applyDamageToExplosionCellsNeighbors, + preExplosionSpawnThingDef: explosiveProps.preExplosionSpawnThingDef, + preExplosionSpawnChance: explosiveProps.preExplosionSpawnChance, + preExplosionSpawnThingCount: explosiveProps.preExplosionSpawnThingCount, + chanceToStartFire: explosiveProps.chanceToStartFire, + damageFalloff: explosiveProps.damageFalloff, + direction: null, + ignoredThings: null, + affectedAngle: null, + doVisualEffects: true, + propagationSpeed: 0.6f, + excludeRadius: 0f, + doSoundEffects: false, // 我们手动处理音效 + screenShakeFactor: explosiveProps.screenShakeFactor // 新增:屏幕震动因子 + ); + + // 生成额外的视觉效果 + if (explosiveProps.explosionEffecter != null) + { + Effecter effecter = explosiveProps.explosionEffecter.Spawn(explosionCell, caster.Map); + effecter.Trigger(new TargetInfo(explosionCell, caster.Map), TargetInfo.Invalid); + effecter.Cleanup(); + } + } + // --------------------------------------------- + + + protected bool TryGetHitCell(IntVec3 source, IntVec3 targetCell, out IntVec3 hitCell) + { + IntVec3 intVec = GenSight.LastPointOnLineOfSight(source, targetCell, (IntVec3 c) => c.InBounds(this.caster.Map) && c.CanBeSeenOverFast(this.caster.Map), true); + bool flag = this.verbProps.beamCantHitWithinMinRange && (double)intVec.DistanceTo(source) < (double)this.verbProps.minRange; + bool result; + if (flag) + { + hitCell = default(IntVec3); + result = false; + } + else + { + hitCell = (intVec.IsValid ? intVec : targetCell); + result = intVec.IsValid; + } + return result; + } + + protected IntVec3 GetHitCell(IntVec3 source, IntVec3 targetCell) + { + IntVec3 result; + this.TryGetHitCell(source, targetCell, out result); + return result; + } + + protected IEnumerable GetBeamHitNeighbourCells(IntVec3 source, IntVec3 pos) + { + // 重写反编译的迭代器方法以修复编译错误 + for (int i = 0; i < GenAdj.AdjacentCells.Length; i++) + { + IntVec3 cell = pos + GenAdj.AdjacentCells[i]; + if (cell.InBounds(this.caster.Map)) + { + yield return cell; + } + } + } + + public override bool TryStartCastOn(LocalTargetInfo castTarg, LocalTargetInfo destTarg, bool surpriseAttack = false, bool canHitNonTargetPawns = true, bool preventFriendlyFire = false, bool nonInterruptingSelfCast = false) + { + return base.TryStartCastOn(this.verbProps.beamTargetsGround ? castTarg.Cell : castTarg, destTarg, surpriseAttack, canHitNonTargetPawns, preventFriendlyFire, nonInterruptingSelfCast); + } + + private void UpdateBeamVisuals(List path, MoteDualAttached mote, ref Effecter endEffecter, Vector3 casterPos, IntVec3 casterCell, bool isMirrored = false) + { + Vector3 vector = path[Mathf.Min(this.burstShotsLeft, path.Count - 1)]; + Vector3 v = (vector - casterPos).Yto0(); + float num = v.MagnitudeHorizontal(); + Vector3 normalized = v.normalized; + IntVec3 intVec = vector.ToIntVec3(); + IntVec3 b = GenSight.LastPointOnLineOfSight(casterCell, intVec, (IntVec3 c) => c.CanBeSeenOverFast(this.caster.Map), true); + bool isValid = b.IsValid; + if (isValid) + { + num -= (intVec - b).LengthHorizontal; + vector = casterCell.ToVector3Shifted() + normalized * num; + intVec = vector.ToIntVec3(); + } + Vector3 offsetA = normalized * this.verbProps.beamStartOffset; + Vector3 vector2 = vector - intVec.ToVector3Shifted(); + if (mote != null) + { + mote.UpdateTargets(new TargetInfo(casterCell, this.caster.Map, false), new TargetInfo(intVec, this.caster.Map, false), offsetA, vector2); + } + if (mote != null) + { + mote.Maintain(); + } + bool flag = this.verbProps.beamGroundFleckDef != null && Rand.Chance(this.verbProps.beamFleckChancePerTick); + if (flag) + { + FleckMaker.Static(vector, this.caster.Map, this.verbProps.beamGroundFleckDef, 1f); + } + bool flag2 = endEffecter == null && this.verbProps.beamEndEffecterDef != null; + if (flag2) + { + endEffecter = this.verbProps.beamEndEffecterDef.Spawn(intVec, this.caster.Map, vector2, 1f); + } + bool flag3 = endEffecter != null; + if (flag3) + { + endEffecter.offset = vector2; + endEffecter.EffectTick(new TargetInfo(intVec, this.caster.Map, false), TargetInfo.Invalid); + endEffecter.ticksLeft--; + } + bool flag4 = this.verbProps.beamLineFleckDef != null; + if (flag4) + { + float num2 = num; + int num3 = 0; + while ((float)num3 < num2) + { + bool flag5 = Rand.Chance(this.verbProps.beamLineFleckChanceCurve.Evaluate((float)num3 / num2)); + if (flag5) + { + Vector3 loc = casterPos + (float)num3 * normalized - normalized * Rand.Value + normalized / 2f; + FleckMaker.Static(loc, this.caster.Map, this.verbProps.beamLineFleckDef, 1f); + } + num3++; + } + } + } + + public override void BurstingTick() + { + this.ticksToNextPathStep--; + this.UpdateBeamVisuals(this.path, this.mote, ref this.endEffecter, this.caster.Position.ToVector3Shifted(), this.caster.Position, false); + this.UpdateBeamVisuals(this.mirroredPath, this.mirroredMote, ref this.mirroredEndEffecter, this.caster.Position.ToVector3Shifted(), this.caster.Position, true); + Sustainer sustainer = this.sustainer; + if (sustainer != null) + { + sustainer.Maintain(); + } + } + + public override void WarmupComplete() + { + this.burstShotsLeft = this.ShotsPerBurst; + this.state = VerbState.Bursting; + this.initialTargetPosition = this.currentTarget.CenterVector3; + this.CalculatePath(this.currentTarget.CenterVector3, this.path, this.pathCells, true); + Vector3 normalized = (this.currentTarget.CenterVector3 - this.caster.Position.ToVector3Shifted()).Yto0().normalized; + float angle = 3f; + Vector3 a = normalized.RotatedBy(angle); + float magnitude = (this.currentTarget.CenterVector3 - this.caster.Position.ToVector3Shifted()).magnitude; + Vector3 target = this.caster.Position.ToVector3Shifted() + a * magnitude; + this.CalculatePath(target, this.mirroredPath, this.mirroredPathCells, true); + this.mirroredPath.Reverse(); + this.hitCells.Clear(); + this.mirroredHitCells.Clear(); + bool flag = this.verbProps.beamMoteDef != null; + if (flag) + { + this.mote = MoteMaker.MakeInteractionOverlay(this.verbProps.beamMoteDef, this.caster, new TargetInfo(this.path[0].ToIntVec3(), this.caster.Map, false)); + } + bool flag2 = this.verbProps.beamMoteDef != null; + if (flag2) + { + this.mirroredMote = MoteMaker.MakeInteractionOverlay(this.verbProps.beamMoteDef, this.caster, new TargetInfo(this.mirroredPath[0].ToIntVec3(), this.caster.Map, false)); + } + base.TryCastNextBurstShot(); + this.ticksToNextPathStep = this.verbProps.ticksBetweenBurstShots; + Effecter effecter = this.endEffecter; + if (effecter != null) + { + effecter.Cleanup(); + } + Effecter effecter2 = this.mirroredEndEffecter; + if (effecter2 != null) + { + effecter2.Cleanup(); + } + bool flag3 = this.verbProps.soundCastBeam == null; + if (!flag3) + { + this.sustainer = this.verbProps.soundCastBeam.TrySpawnSustainer(SoundInfo.InMap(this.caster, MaintenanceType.PerTick)); + } + } + + private void CalculatePath(Vector3 target, List pathList, HashSet pathCellsList, bool addRandomOffset = true) + { + pathList.Clear(); + Vector3 vector = (target - this.caster.Position.ToVector3Shifted()).Yto0(); + float magnitude = vector.magnitude; + Vector3 normalized = vector.normalized; + Vector3 a = normalized.RotatedBy(-90f); + float num = ((double)this.verbProps.beamFullWidthRange > 0.0) ? Mathf.Min(magnitude / this.verbProps.beamFullWidthRange, 1f) : 1f; + float d = (this.verbProps.beamWidth + 1f) * num / (float)this.ShotsPerBurst; + Vector3 vector2 = target.Yto0() - a * this.verbProps.beamWidth / 2f * num; + pathList.Add(vector2); + for (int i = 0; i < this.ShotsPerBurst; i++) + { + Vector3 a2 = normalized * (Rand.Value * this.verbProps.beamMaxDeviation) - normalized / 2f; + Vector3 vector3 = Mathf.Sin((float)(((double)i / (double)this.ShotsPerBurst + 0.5) * 3.1415927410125732 * 57.295780181884766)) * this.verbProps.beamCurvature * -normalized - normalized * this.verbProps.beamMaxDeviation / 2f; + if (addRandomOffset) + { + pathList.Add(vector2 + (a2 + vector3) * num); + } + else + { + pathList.Add(vector2 + vector3 * num); + } + vector2 += a * d; + } + pathCellsList.Clear(); + foreach (Vector3 vect in pathList) + { + pathCellsList.Add(vect.ToIntVec3()); + } + } + + private bool CanHit(Thing thing) + { + return thing.Spawned && !CoverUtility.ThingCovered(thing, this.caster.Map); + } + + private void HitCell(IntVec3 cell, IntVec3 sourceCell, float damageFactor = 1f) + { + bool flag = !cell.InBounds(this.caster.Map); + if (!flag) + { + this.ApplyDamage(VerbUtility.ThingsToHit(cell, this.caster.Map, new Func(this.CanHit)).RandomElementWithFallback(null), sourceCell, damageFactor); + bool flag2 = !this.verbProps.beamSetsGroundOnFire || !Rand.Chance(this.verbProps.beamChanceToStartFire); + if (!flag2) + { + FireUtility.TryStartFireIn(cell, this.caster.Map, 1f, this.caster, null); + } + } + } + + private void ApplyDamage(Thing thing, IntVec3 sourceCell, float damageFactor = 1f) + { + IntVec3 intVec = this.InterpolatedPosition.Yto0().ToIntVec3(); + IntVec3 intVec2 = GenSight.LastPointOnLineOfSight(sourceCell, intVec, (IntVec3 c) => c.InBounds(this.caster.Map) && c.CanBeSeenOverFast(this.caster.Map), true); + bool isValid = intVec2.IsValid; + if (isValid) + { + intVec = intVec2; + } + Map map = this.caster.Map; + bool flag = thing == null || this.verbProps.beamDamageDef == null; + if (!flag) + { + Pawn pawn = thing as Pawn; + bool flag2 = pawn != null && pawn.Faction == this.Caster.Faction; + if (!flag2) + { + float angleFlat = (this.currentTarget.Cell - this.caster.Position).AngleFlat; + BattleLogEntry_RangedImpact log = new BattleLogEntry_RangedImpact(this.caster, thing, this.currentTarget.Thing, base.EquipmentSource.def, null, null); + DamageInfo dinfo = ((double)this.verbProps.beamTotalDamage <= 0.0) ? new DamageInfo(this.verbProps.beamDamageDef, (float)this.verbProps.beamDamageDef.defaultDamage * damageFactor, this.verbProps.beamDamageDef.defaultArmorPenetration, angleFlat, this.caster, null, base.EquipmentSource.def, DamageInfo.SourceCategory.ThingOrUnknown, this.currentTarget.Thing, true, true, QualityCategory.Normal, true, false) : new DamageInfo(this.verbProps.beamDamageDef, this.verbProps.beamTotalDamage / (float)this.pathCells.Count * damageFactor, this.verbProps.beamDamageDef.defaultArmorPenetration, angleFlat, this.caster, null, base.EquipmentSource.def, DamageInfo.SourceCategory.ThingOrUnknown, this.currentTarget.Thing, true, true, QualityCategory.Normal, true, false); + thing.TakeDamage(dinfo).AssociateWithLog(log); + bool flag3 = thing.CanEverAttachFire(); + if (flag3) + { + bool flag4 = !Rand.Chance((this.verbProps.flammabilityAttachFireChanceCurve == null) ? this.verbProps.beamChanceToAttachFire : this.verbProps.flammabilityAttachFireChanceCurve.Evaluate(thing.GetStatValue(StatDefOf.Flammability, true, -1))); + if (flag4) + { + return; + } + thing.TryAttachFire(this.verbProps.beamFireSizeRange.RandomInRange, this.caster); + } + else + { + bool flag5 = !Rand.Chance(this.verbProps.beamChanceToStartFire); + if (flag5) + { + return; + } + FireUtility.TryStartFireIn(intVec, map, this.verbProps.beamFireSizeRange.RandomInRange, this.caster, this.verbProps.flammabilityAttachFireChanceCurve); + } + // 移除了热射病和蒸发逻辑 + } + } + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_Collections.Look(ref this.path, "path", LookMode.Value, Array.Empty()); + Scribe_Values.Look(ref this.ticksToNextPathStep, "ticksToNextPathStep", 0, false); + Scribe_Values.Look(ref this.initialTargetPosition, "initialTargetPosition", default(Vector3), false); + Scribe_Collections.Look(ref this.mirroredPath, "mirroredPath", LookMode.Value, Array.Empty()); + // --- 添加爆炸计数器的保存 --- + Scribe_Values.Look(ref explosionShotCounter, "explosionShotCounter", 0); + Scribe_Values.Look(ref mirroredExplosionShotCounter, "mirroredExplosionShotCounter", 0); + // ------------------------- + bool flag = Scribe.mode == LoadSaveMode.PostLoadInit; + if (flag) + { + bool flag2 = this.path == null; + if (flag2) + { + this.path = new List(); + } + bool flag3 = this.mirroredPath == null; + if (flag3) + { + this.mirroredPath = new List(); + } + } + } + + private List path = new List(); + + private List tmpPath = new List(); + + private int ticksToNextPathStep; + + private Vector3 initialTargetPosition; + + private MoteDualAttached mote; + + private Effecter endEffecter; + + + private Sustainer sustainer; + + private HashSet pathCells = new HashSet(); + + private HashSet tmpPathCells = new HashSet(); + + private HashSet tmpHighlightCells = new HashSet(); + + private HashSet tmpSecondaryHighlightCells = new HashSet(); + + private HashSet hitCells = new HashSet(); + + private const int NumSubdivisionsPerUnitLength = 1; + + private List mirroredPath = new List(); + + private HashSet mirroredPathCells = new HashSet(); + + private HashSet mirroredHitCells = new HashSet(); + + private MoteDualAttached mirroredMote; + + private Effecter mirroredEndEffecter; + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Verb/Verb_ShootShotgun.cs b/Source/ArachnaeSwarm/Verb/Verb_ShootShotgun.cs new file mode 100644 index 0000000..a3f5989 --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/Verb_ShootShotgun.cs @@ -0,0 +1,63 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace ArachnaeSwarm +{ + public class Verb_ShootShotgun : Verb_LaunchProjectile + { + protected override int ShotsPerBurst + { + get + { + return this.verbProps.burstShotCount; + } + } + + public override void WarmupComplete() + { + base.WarmupComplete(); + Pawn pawn = this.currentTarget.Thing as Pawn; + if (pawn != null && !pawn.Downed && this.CasterIsPawn && this.CasterPawn.skills != null) + { + float num = pawn.HostileTo(this.caster) ? 170f : 20f; + float num2 = this.verbProps.AdjustedFullCycleTime(this, this.CasterPawn); + this.CasterPawn.skills.Learn(SkillDefOf.Shooting, num * num2, false, false); + } + } + + protected override bool TryCastShot() + { + bool flag = base.TryCastShot(); + if (flag && this.CasterIsPawn) + { + this.CasterPawn.records.Increment(RecordDefOf.ShotsFired); + } + ShotgunExtension shotgunExtension = ShotgunExtension.Get(this.verbProps.defaultProjectile); + if (flag && shotgunExtension.pelletCount - 1 > 0) + { + for (int i = 0; i < shotgunExtension.pelletCount - 1; i++) + { + base.TryCastShot(); + } + } + return flag; + } + } + + public class ShotgunExtension : DefModExtension + { + public static ShotgunExtension Get(Def def) + { + return def.GetModExtension() ?? ShotgunExtension.defaultValues; + } + + private static readonly ShotgunExtension defaultValues = new ShotgunExtension(); + + public int pelletCount = 1; + } +} diff --git a/Source/ArachnaeSwarm/Verb/Verb_ShootWeaponStealBeam.cs b/Source/ArachnaeSwarm/Verb/Verb_ShootWeaponStealBeam.cs new file mode 100644 index 0000000..e3dc29a --- /dev/null +++ b/Source/ArachnaeSwarm/Verb/Verb_ShootWeaponStealBeam.cs @@ -0,0 +1,174 @@ +using RimWorld; +using Verse; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; // For Vector3 +using Verse.Sound; // For SoundDef.PlayOneShot +using Verse.AI; // For JobQueue + +namespace ArachnaeSwarm +{ + public class Verb_ShootWeaponStealBeam : Verse.Verb_ShootBeam + { + private int explosionShotCounter = 0; + + protected VerbProperties_WeaponStealBeam StealBeamVerbProps => (VerbProperties_WeaponStealBeam)verbProps; + + protected override bool TryCastShot() + { + bool result = base.TryCastShot(); + + // 如果光束命中,对目标Pawn施加Hediff并检查是否抢夺武器 + if (result && currentTarget.Thing is Pawn targetPawn && targetPawn.RaceProps.Humanlike) // 只对人形Pawn生效 + { + ApplyHediffAndCheckForSteal(targetPawn); + } + + if (result && verbProps is VerbPropertiesExplosiveBeam explosiveProps && explosiveProps.enableExplosion) + { + explosionShotCounter++; + + if (explosionShotCounter >= explosiveProps.explosionShotInterval) + { + explosionShotCounter = 0; + TriggerExplosion(explosiveProps); + } + } + + return result; + } + + private void TriggerExplosion(VerbPropertiesExplosiveBeam explosiveProps) + { + Vector3 explosionPos = InterpolatedPosition; + IntVec3 explosionCell = explosionPos.ToIntVec3(); + + if (!explosionCell.InBounds(caster.Map)) + return; + + // 播放爆炸音效 + if (explosiveProps.explosionSound != null) + { + explosiveProps.explosionSound.PlayOneShot(new TargetInfo(explosionCell, caster.Map)); + } + + // 生成爆炸 + GenExplosion.DoExplosion( + center: explosionCell, + map: caster.Map, + radius: explosiveProps.explosionRadius, + damType: explosiveProps.explosionDamageDef ?? DamageDefOf.Bomb, + instigator: caster, + damAmount: explosiveProps.explosionDamage > 0 ? explosiveProps.explosionDamage : verbProps.defaultProjectile?.projectile?.GetDamageAmount(EquipmentSource) ?? 20, + armorPenetration: explosiveProps.explosionArmorPenetration >= 0 ? explosiveProps.explosionArmorPenetration : verbProps.defaultProjectile?.projectile?.GetArmorPenetration(EquipmentSource) ?? 0.3f, + explosionSound: null, // 我们已经手动播放了音效 + weapon: base.EquipmentSource?.def, + projectile: null, + intendedTarget: currentTarget.Thing, + postExplosionSpawnThingDef: explosiveProps.postExplosionSpawnThingDef, + postExplosionSpawnChance: explosiveProps.postExplosionSpawnChance, + postExplosionSpawnThingCount: explosiveProps.postExplosionSpawnThingCount, + postExplosionGasType: explosiveProps.postExplosionGasType, + applyDamageToExplosionCellsNeighbors: explosiveProps.applyDamageToExplosionCellsNeighbors, + preExplosionSpawnThingDef: explosiveProps.preExplosionSpawnThingDef, + preExplosionSpawnChance: explosiveProps.preExplosionSpawnChance, + preExplosionSpawnThingCount: explosiveProps.preExplosionSpawnThingCount, + chanceToStartFire: explosiveProps.chanceToStartFire, + damageFalloff: explosiveProps.damageFalloff, + direction: null, + ignoredThings: null, + affectedAngle: null, + doVisualEffects: true, + propagationSpeed: 0.6f, + excludeRadius: 0f, + doSoundEffects: false, // 我们手动处理音效 + screenShakeFactor: explosiveProps.screenShakeFactor // 新增:屏幕震动因子 + ); + + // 在这里添加武器抢夺和Hediff施加的逻辑(爆炸命中目标时) + if (currentTarget.Thing is Pawn targetPawn && targetPawn.RaceProps.Humanlike) // 只对人形Pawn生效 + { + ApplyHediffAndCheckForSteal(targetPawn); + } + + // 生成额外的视觉效果 + if (explosiveProps.explosionEffecter != null) + { + Effecter effecter = explosiveProps.explosionEffecter.Spawn(explosionCell, caster.Map); + effecter.Trigger(new TargetInfo(explosionCell, caster.Map), TargetInfo.Invalid); + effecter.Cleanup(); + } + } + + private void ApplyHediffAndCheckForSteal(Pawn targetPawn) + { + if (StealBeamVerbProps.hediffToApply == null) + { + return; + } + + Hediff hediff = targetPawn.health.hediffSet.GetFirstHediffOfDef(StealBeamVerbProps.hediffToApply); + + if (hediff == null) + { + hediff = HediffMaker.MakeHediff(StealBeamVerbProps.hediffToApply, targetPawn); + targetPawn.health.AddHediff(hediff); + } + + hediff.Severity += StealBeamVerbProps.hediffSeverityPerHit; + + if (hediff.Severity >= StealBeamVerbProps.hediffMaxSeverity) + { + TryStealWeapon(targetPawn); + if (StealBeamVerbProps.removeHediffOnSteal) + { + targetPawn.health.RemoveHediff(hediff); + } + } + } + + private void TryStealWeapon(Pawn targetPawn) + { + if (!CasterIsPawn || CasterPawn == null) + { + return; + } + + // 获取目标Pawn的装备武器 + ThingWithComps targetWeapon = targetPawn.equipment?.Primary; + + if (targetWeapon != null) + { + // 将武器从目标Pawn身上移除 + targetPawn.equipment.Remove(targetWeapon); + + // 将武器添加到发射者(宿主)的库存中 + if (!CasterPawn.inventory.innerContainer.TryAdd(targetWeapon)) + { + // 如果无法添加到库存,则尝试丢弃在地上 + GenPlace.TryPlaceThing(targetWeapon, CasterPawn.Position, CasterPawn.Map, ThingPlaceMode.Near); + return; // 如果丢弃了,就不尝试装备了 + } + + // 强制发射者装备该武器,并替换当前武器 (JobDriver_Equip 核心逻辑) + // 强制发射者装备该武器,并替换当前武器 (JobDriver_Equip 核心逻辑) + CasterPawn.equipment.MakeRoomFor(targetWeapon); // 为新装备腾出空间,并处理旧装备 + + // 在 AddEquipment 之前,确保武器不在库存中 + if (CasterPawn.inventory.innerContainer.Contains(targetWeapon)) + { + CasterPawn.inventory.innerContainer.Remove(targetWeapon); + } + + CasterPawn.equipment.AddEquipment(targetWeapon); // 添加装备 + targetWeapon.def.soundInteract?.PlayOneShot(new TargetInfo(CasterPawn.Position, CasterPawn.Map)); // 播放音效 + } + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_Values.Look(ref explosionShotCounter, "explosionShotCounter", 0); + } + } +} \ No newline at end of file