From 7ae117075dd8092a6e256c6589c508edda0e3aeb Mon Sep 17 00:00:00 2001 From: Slotterleet <62336673+Slotterleet@users.noreply.github.com> Date: Wed, 5 Jun 2024 22:34:56 +0300 Subject: [PATCH] Citadel (map & boss unit) Complete Rework --- res/bundles/bundle.properties | 1 + res/bundles/bundle_ru.properties | 1 + res/maps/citadel.msav | Bin 32104 -> 32209 bytes res/sprites/units/bosses/citadel-front.png | Bin 0 -> 763 bytes res/sprites/units/bosses/citadel-preview.png | Bin 0 -> 3417 bytes res/sprites/units/bosses/citadel.png | Bin 3584 -> 3121 bytes src/fos/content/FOSBlocks.java | 11 +- src/fos/content/FOSUnitTypes.java | 315 +++++++++++++++---- 8 files changed, 263 insertions(+), 65 deletions(-) create mode 100644 res/sprites/units/bosses/citadel-front.png create mode 100644 res/sprites/units/bosses/citadel-preview.png diff --git a/res/bundles/bundle.properties b/res/bundles/bundle.properties index ce4bc88c..27e8e145 100644 --- a/res/bundles/bundle.properties +++ b/res/bundles/bundle.properties @@ -456,6 +456,7 @@ cl.researchoredetectors = Weapons made in the Upgrade Center require materials t cl.bugsapproaching = The insects are approaching in a few minutes. cl.bugstimer = Insects approaching in {0} cl.defendfrommorebugs = [red]Warning![] A large wave of insects is incoming! Protect the core at all costs! +citadel.spawnwarning = < [red]LEAVE THE SPAWN AREA IMMEDIATELY[] >\n[#ff0000]annihilation imminent[] hint.fos-insectInvasion = [accent]Insects[] are attacking your factories. Keep in mind they spawn and attack independently of waves. hint.fos-drillsPoweredByDetector = [accent]Underground drills[] are powered by [accent]ore detectors[] nearby. If a detector is destroyed, all drills around it will stop working, so make sure to protect it. diff --git a/res/bundles/bundle_ru.properties b/res/bundles/bundle_ru.properties index 05bba257..8e70a448 100644 --- a/res/bundles/bundle_ru.properties +++ b/res/bundles/bundle_ru.properties @@ -456,6 +456,7 @@ cl.researchoredetectors = Оружие, изготовляемое в Центр cl.bugsapproaching = Насекомые прибудут через несколько минут. cl.bugstimer = Насекомые прибудут через {0} cl.defendfrommorebugs = [red]Внимание![] Большая волна насекомых на подходе! Защитите ядро любой ценой! +citadel.spawnwarning = < [red]ПОКИНЬТЕ ОБЛАСТЬ ПОЯВЛЕНИЯ НЕМЕДЛЕННО[] >\n[#ff0000]аннигиляция неизбежна[] hint.fos-insectInvasion = [accent]Насекомые[] атакуют Ваши заводы. Учтите, что они рождаются и атакуют независимо от волн. hint.fos-drillsPoweredByDetector = [accent]Подземные буры[] получают питание от [accent]детекторов руды[] поблизости. Если детектор уничтожен, то все буры вокруг него перестанут работать, поэтому защищайте его. diff --git a/res/maps/citadel.msav b/res/maps/citadel.msav index 23b45e83b60d87b45dcd30cc4d76751961c1f392..f7297c072e70809320543908ff81ab3481d90d28 100644 GIT binary patch literal 32209 zcmV(?K-a%`ob0{Hb6r__CwA_=Z^9e#FoOh1FgfJ_Fgay%s3|KmE2UDZ233}%mP)18 zBk)K(C4h%|0LY}u6_(vAFSzkPU`IHjy>NuX9qw+2d+G4P;qbz1Z@h4*B7oXx$A$<5 ze1`A)ec!owNP=0+tSs4#Al{wt`R4JQ`-4xu`)9_OvN6>;Ghr$ltDPrXy|u1Mu9?c? z&ZDm1$*x_!W{R73ciA+q-@bnB+VvanT)Y16wL7M;-mw>yKj>|BmbAvUtR4k|Mba5*N$U*b=6cK zcGn;DR_(*WeZ~9Rz13xtUBC6NDXjIEH_iCZ9`rZwUB7yLeq+#G?5u9AbbfA%k9*5o zD<-@3&J9yq>GmG3Y?`4zyn_+;pdIxj*l?Kew;RRX^!&_O}O1-A#Y#!qJ<5wczkgr@QOjwI?4~ ztiA65_(^BEx4n7q=Cx}JE4}6J`Ha9!lt6TQ^ z<$HG)HkUf9?r}G+-o17G`t5gbEp#6|=q_#DTko%1NaePH9o%ON_qz{!>-Vnvn{Ud^ zC%NgSzvmLoezu4}s zFFm<;`^GiP!)u+-Jg(L6Waz~c>{ncfwB<@|mdFSq( zn^*7Nwxi{jJ?KA--*x@kog**1dE-|8WjAi;Uv}qu^fEi-JJ)Yty&k=5bI}Uoa{R(~ zuHDMN@A^B}Z{&fy@ow&YH*epGfxCU{-5Xcmy}Qs^ecX8xG=W9+eXSjS`KYtHZ3X^k zf4jZDn^Qy)_az&i_3%F>Z*O{#zuFr__*V@*B^DC^auLj;%aB`u)8p@ zBd-H+_GryQbc=*4^qnT(um#;DBH1Y;0N$y13r$Tg$S!X0?vhX^R{E z<>++(?<|)rY;CVU+}!G}FFfdNZuacqwT?3j@s+*RXn$$&r2k-byGPI4zTX}6w%05x z4xX&8x~(m1nAY8fzUy(vJ@?_Dv$0}T@WN`hv%KJJlDp0tgw5{a11mJWC4Z9z%+kf3 z+FY`CL=Sq{32$-7R(o43`4_qE{%23DRa#i;4DMUq9iydZO_)2mxoy#F-?Z9)V$t4N zUFd(t*V+p=R<;KV%l*MxXMJmN>B;8SLJ-x*7Oz_?jyoL47Qgmve{G|`Z8^@NdkEy4 ztDT3qyX%L%)l~=X=Wpl?K7F#}uGx6vUbGbhu<~R%01(mSNoW1YLASlt|Fq|xWf`b{ z|8K2!=sA1$vtKSbe!2INADaDhZ|ToFgY|`t&Y-)#wdqtwce%IKAN<%F?swmL=hjUt zVd|DOJ49>m@tjXqIvaMl_TpcDcJIcW8`l<|IKA+zg+Z{QcdjjLTI5=D`mU3v)&Ah# z{oBje-&uO_01y6Y_p_~qE&J!*drQHyx$5oZV>>Xb3Wq)2jePUo4J&{ihV{Mxa7{yS z>zzBd-?{59>pu*}d%63-srR2+7vr9lW@pR&_H8@7)&BPK2Y!qX{J+}|7Mw5j{dH^V zyOtpAFIaM0UhoRXvTJ|6_bXFy4>HMhQ?tM>4SE|+{LK~e)aDoGf6{&2x2Rj5f6yPy zfAphI=HIunJMV>h{-&uqSFk&9j*okYSs1GrbKR7JRxkx8G-d?iZYnHJrm)#rUp58D z$EL#aXUZgC)~$15WXe{=dsf%@7ZIzPx|TjuQ(|F8pgK%5=5_0}5^tIj2)=zYsS{K5 z!eq)Mfu?^)oy2=`VW+4t0xmM|l3=l;N9 zuBOD?)U_T9rQQIivGH1Xven_ATCclKbPq3YA5nE-z*+~GR!*y$$)Rf1 zObk=w@ljS0W_*Zhj7Q@YeS9~okldR{GsZ_*vzV#jO4iIAr*e|?oXI-9f#p6Y$ELWn z+I#T8lze<}oqli7?@ju>MZfRR@4NJSn||-m?_E<4&$-4M*LmXxZ`|aKTfFfOZ@g=& z%iZnkJmdUcvei1B->uW@mNFlvnzeYBqcu zS?fHsYT0duK|EOP+la5igD{2V-oS=fYun4FwA}H`QyHv0>94x27H=(vcbTU3J07kq z;)2Sc`_OHznEI2h#}$vwN_c;r_a1ZyR*TSHllH*dNtU_#-8Ih1GMG*Q|f$Hi{3u(kXa~6*g@!Z8A5=iv6?bcZ-e#yDna~ z*Nr%Hv*^XP8Z@v!Tn#UEz9Ap?+ar#!VY3zp8+QED!xioweDO9vqroH%yD_MA1*0iE zozN66*Q5@I#$)=@O@vOrGj)XG;dq_M7WNc|{r;%iCymSib=2l6L0{Tj8EoHoh;qn` z5Vc`nNNDhz1^>78*cp<=twFcDxa@3eRSsCC;O|^o-QIKp;W+DYx9cq5_F(b;_U4MI z1&mp0S*u&V-``$ccBak0h4&g^EOOEfocEeUF6;-PmVH7v_6g^_KMI8Nk%@?ixQ}SS z`z@9-25$OM&)P+2j&moPeBi#1ZJa6!`~87M^tdJ`9?rDHD8WU1q%8#ILpA5sKf-fi??$wDGupcq?Zr=V2E^_8_n7iV z_x}A=tD7oTle_TFGNEUl;J8)Xc5vR@R&d5D;R1Vi-EF~XtNA^0+!}629IS99J6YrY z2}BUSW0ds*j*Q`mJg7;YBMW9*?&7EOC02L_UFR~bS%S4JDvQj7L4QKTJJN*h3st7el0koVW&iQ zjcj(U_utuaPhakBT7}zPv*WN=lM3(yuWoER$FTQz{ylxi>Q-eBdJncAc1^9vKE7i@ zhNv@GT70lQSa*iG-d(jZ)S$om#64i9vt>2&#!A;)x&FF;l)t&{{9m6!ShVJP?Y?_k zxYb^{()A{`<}5z%5JG6L<$j%6>kaHZ_Ib5%z~=%iuHB7#tfS;-3-(+78U?=(;*_ zaJXnp@6i=iVk2)QWSh?hki%Korn7}*r)sM1FRpij$=73>N3D*mIE;>~0}p!-t@^a_ zQ^f`_q&gvO;fWLRKJZ2I#`w~^Jg&g*e!P=|Zg1TNk4sL23V5f79%ei;cLY4@Js!p8 zO0R46FxgZqQtRGsxL+$c{l5)dINrCSW7XTEt~%J1gUkK3u8VT)Fw_Os99!FArPW&8 z;-F*IrWIi4h1*EsaWEK;4dsTGzrlslbj4^Gp1Nepk9+aR@d{_sOdFhsL*tPyqJyKI z!CK$hBOIx4-p;gaNWAQXhEFvEk72)Lb(xpfo;@&dVE`Q{k*LVY%Q z53Q7&=C(t!?AO+;&RX=Cw6Xs3_R^N~TEpP{Ud{bwB_I#;=hVa0wPF0G;di#zT}IfE zl~e&kQ4jm{;P$o+1Z_Y!c-UX08>ZEv@RY@kz72a!OJy}Tw%0aHZP2$-&XcfH@2y#F zYw_jx%JzNB+r2H*2nTt$>D~He>^D|>zi_Ibl^yN6+Ed3VJX511mXe>E7VUs$O`#dR zjY;NrTS`#;u*TE@zUY)XmVf@NI+uIZ%+cEjh|@>U2s~3qPkPX*8;<&mwQNK7 zuFI+Qq6-^?t%qv2w%NCD3a*i9s~y&zth?EaG%ag%mc*=#+;{KwpjQ26fGZrf?&YU; zwA)r~tp{wosLx_`X{Ed7c~8N|=62lr4Ax9<_BPcx>(;CI3@>d{Zl%}3q0xMr-Wsd* z?zRo$tlbU=YW5CG3fdvn94_^7{$lqt>jVVNx8z)=M*(B~-l{s)bdjQhrQwq!&OC3f zI3D*opN@5p2R2R)%1$4u6aK=Bn_X9Ja?pqUst+J-@BP-?09>k4u?ni;rCT)Ks8TCSoz7%SP4Fa7VVh-8bdU zrH}?JZQ55Xt(d|}r?*Pk)6#0kI#L6ZS-;B$Th^spUG02k?|E#Mp?kFrksi5cbRVv{ zXuG_%xxL<5>zTrX?M-|8ptrHH>QawSmR5ZT{lFE%S31i!%r0+kI3LVL-p*-sB^^_` z?`Xeb%8t|B14cHt@2~dOoJKBs8)7O}iCZ_vo-21AJg`oo4e?!kWS>)VkgV7%H`iR2 zq-4dZ_t5*!4&jRrJh7kHAhi}-mtIh z3^_a7{cOWR7vwTNHNDk!Ug*(#Y?Qs>1`>34gZ8Xk4Z2n_I-NsVVA2IEy^ZLAlMQ{K z?Qa=$^&x*ve8@j1IyAO1=&g0*V@>}s@!FgIHns1cEc;WIXRS=)z~WkedE3%Gm@kGc zxDOkhC*Ei&J5EQ2=;tFB&ki|B_l@(uHr=x%u0u|ZTLHFC*K$ObM!Z|oJ0$x05XMfD z2k0P+^~si4+&#xUB1H$C~HxmQyYr zI|#KI=ZSQdmTce^)PH%+hJc-iPHZ3dwye;%toa!9o&UHL;?mY?|Dok7bztR*i*V#X zZLPcJhGL((ik*`_>EeT>rOx`J&SvCw@Ss|c`-9-j(yOZBfPYgX zZ1c4~89$)*7G+jubSWbWx35mcMg5>zD#QM?WTQ6)h@?&}mts9Ldg%KZt|GX~q% zCkb}P*Kw?68d%?SnU48lf<5w}x72ecFB}ck92XX_#cNRcMqdz$ICP|~>N5I$T%Dm~ z9y88vEqAwkOt9!>E<8{lH>ZzWDMT@IM@~9_d&yOc&gAEat-Xo7^RF5{~KJ!QD z%60^VzjXS@A$={#E7wMc=vrUxTIsI#KBH=v>+*7mOh1nPRv4nSulD%%YH;IxXGzZz zc=buR-@EF8HqK6d>P@D<%y}H!)&lyStrZ`BgdNTu`fAzVZd(uey4t=GIPw1W!^KUP zop=)HV3~5z`|M~y=XuO~ffSSav8+1b_W@;KYgaT0anGpia{wVnC>-)w^vchgp3a7I zOF+>3mgB=MZcm~LKEjG0+^XU`Ttq>jAF7J?@QyHyAU+|3veDb13xeeN{jqR=6n>1# zF?vir&}nVsZ#zq$>hl_Yx}#%F{c3nmIN}2h;bu$vXjuM$8kXO0>&vY(vC7p&xhEVQ zk8cbIN4Y^~ksSK)ybyTsp|QZb*0QKj#9yXDi?yyV%8sdbbNr)p7#|wbrAf*&2XT7B zi6@^44?3;4w#h{;UC!;SuZL;~j@)0hDs@{Q+1MVq3PCthQ*WS(@Dr8zY9DzUm05EG zSfzS1YTs?WN0p9n$QR37vP~rwU%8g*`gpvro)AC`PXM@lGC)g0$&mBO0C+eFB=Ebf zU))^}b*vhzR#&VaS353q^}uCWNA*EheGSj>K~1RZkH`Drq81Jd*8`(I*z!dp&v)A!4+kBWo(=wrf9Z19YL5Ps zt^@{CL{##iaNJ8*Z#`&49GwXka?J)iIX^!c?v z#I)dx@0sh#7?H|+1-%y)^jnm<$D$beDk|uusGxtMf}RO47t|+F*9xd;-Y|uAU$MTw z?faW7KMlIwzw=w$>udc-Zp)6#My-VhHas`kV;iLv*S43JpEyU>#)kHS(q_jhKI?{4 zap6JFc_*RZ;qJA2r7frRUFnJQv|-cxGN!_rUsJg6gtP2(uXeZWGaIhnX;C`pyDMBA z>|*d`Q|+xka`gvSNboSObi^+ToZ2O%L*>$Ng6{C?-~0W(g{v9-BJ1(4dYBu*99RqA z87yCqcW=bIH{;z~@$Ne$i7WlBhuiDdqrDr^-py$5R=JZTWm=ELz|5;kx6AM;%jgZkKEF_{Da|{T3c| zS39l^Z18B?-m^65Ja!>)(fUk2GqTaMa<*kkzRYV$x7GiwzhO6u53IH9x*m~1&vL6N z{att6wQy8A>s#Av);^kY*UI3=rtdsh@0)@Z=O=dChF+#%U%qT*!ale-aOAPf*IWOz zYl`;=PnNqT+wAtN6s&FA$CL)H8`=I^USIFq_-e`OwI!D?vB+@K5Xvs+v2F)j^zHwa z*=%%XiVr(Bj&p4;F2pHXhIHUQcwQ*me-FbqCu$`*;g}zvtmt z>A9OmdCPi*zR}DSo!j1V+`DR#V0BcnyJ{m9I{=rdH|75QM?Ih8u@83fmH)xrWy_Gx z!!<41z!?kbx@*-aT9?_Wf$pQe#YxFYgHsP(8<+aW-VfqscY6=|t2Sn(OvMwYnVsVr zGDmoBOL%9!^Y3ImS|*S}%CvcVd4mW1u>LI0s?Z*FgH_=1^_seC&C zJG&!R-&aHS;x8@hhOU*5R^42i`h!8=%H>D?VWxGz*LNACk2*^>Hn;Y+%-vHB%lYg5 z?afbC{KTG7_t?$HR#3jb>B1puUq5xW7nxvbyT#&eQcG*h^6pH&PLe7A?tkY+U+~0ZvB_OtK9sg_rNlc z&nI^VAM~9+@|kHP0rS)D!1*&)ysazZESOUXo2IbZ`P8MLoIkYLbvmZAWetvNfU{s* z@#$<@bQjk;11tZ<4I6rHTG8t~@-g31$MuYK7Q2J)r#)9-w1#*6;ffP8i>~e?*IQNG z>~&r3bZKDC+Q7Ob_Sv7>r&%>=wc$hi@X$Z{*p9>7-@xYE4sVTM#_3~vfV@Er;V z;VBI~Wft%z?kRI1s3+rjcjA)UO2Z{~>xTjN{Guw8?5W{_A0{y{4UC`|-n&CD_X8hy zAo!PG#6wF!N$JSwiBQvcQPYi}fajfYgZwV|FQritHk$5i0l<80NgLQK#mmQW+ZljR zvtv$$n@a9QlWyRiOB!}-KMBC_B^7{B#IY8}JOcX4AUzx@NKwE;r`$;2!^OpzcWZ$$ zJ@|X>z09ly`{$`A<2?su8gtzQ-s=ffpvOBXcZl4D@N$OoLM%}wqWKXhn|N{s3|9l> zQ#|>!5 zYfPsZ?5Je)9_Xv!(*#r)Ayx1B*{fz!mPx?4C!SZY_9+Fxn*s+0$NbhLNq4d@rs%sE zy@#!Wtr;lL*O_F`Ne1m5SuDvFsF67k*+X6e1}HfW=!6JGLide?EwS*kzoYFyEd=$yL(faXmIBr3 zD~7TLq6qGp8{B~ zyX)%ijtn4-f;=}!Gl;eo3+7;ZMt)8uh?+N$y!8&o+=6G6X&xfJ8prtF1RPmVzRW)E z*a1tUd%UP-_JU++b1(^4+;!9Ly=_RI$;ahb(|9Ng#6FIUWDNpKU5@a4P>2olJ>|oB(cKGwo{AFm<9jWT@mbJ> zhoWgjCmQ%P6}R;vU>i|-gO5Q%6_lPWZov)6NUR)bBZw~HmHq))%#L@#O%iU_^5SvFJPkm`U2A7d3;kV@I`!k=8+(Hk5}rHYs46!*wN?ySKon z?74ZZA|y+*66>(%Ip$A>Y^AWeeyiq&`)2`i3eEzq1WLa(0fLIJ=UKTKBp@h3uYw>< z49uk4N@GM!hSBd4Kc~>5e(Ms#uTuf1EIkEc+vIr#3|9ouX$-0fu9Y3+pE>|jl01S^ z=sN}mt^wXNI5xtLe~@!ljPPFfoSF+}kzlJr+q&xxGZ<^HPYdt~4f%=3f~rTF##`d$ z3bi~fKXfC_*h2~S(%&``^F~A2Hytge2v83afZt|L%!4`tP+O2+3I9cXH2|e}!v$an7pd?Bk19hmw8&v0!ry^|`&J;M z-FgFRn7r!<$|m4wKx!A2IezBGqTD00;&TYnOG5^pkpDs&SOzYNtgUryAaWqy9lrO# z!1obg-U_d@TR$NY53s2a9&!}a&1sA|3$ow?d=8BL)=j*vi81GfJDD6!a@=s&jpAO9 z*q>p1KTu$?(>opy_i`8-4=8b42{~C5f_j(TCzHM%hISN_(*W?gyRNETH9fSygxwOm zDp{cfD($=A@l1n2x*gOCO0b1tT#11ZccGB%l6ziqTMTNl?>XmNA;xiFrDYn1-wGTn%sACFV-p zRsjGOFpN>?wHml?)(bHJ%z-Z!0v1~lxdu?nLjaWUFbCky%H?MeDyZy zX53aSjG39M3Ko^fW-P$Qv`mM9CCBnWV zACjty(g{~U?h3(6{4Bm`0gxAnEy((1z=5cB4ge{tOokvLWkYaal%KupBaDy^43uet zL9RFeYnsReAmuTc^==`gm;``#0AMYQfG+mIRG?)U)UUy3m8~)jd6Bg6UG24!4I6RGr#|=m}2E8GEgpcD-$FO}2@+4r}guD#zX%Sc>@Ib2o%Z1HP zi}ZMcXcWFck%^ZFu;>7sVe2QdddRt4(%G*Ch;|6nmJ&&J{VKt3?NB!U$B4FlxSlB3 zo{{oR0Z~E@l?IR#tL7$XJQVC=`t25ARC_ z6VpNzBN?0d5P1=7!BqYXVx@y52DPe8Dm$bMw1yX6;a3 z%b}A|B8a#h1KrR-lg=SOHu8K8Jf1X>D4$IN#^)5gwn82e|03B_Qkx=a%sB=i z<#g-;$p_=F8A(OJ-xzc30h#<=Z;1(swb&(@Q6T^a66M(45*{jGtE{~=vNNIynIk;k zd-V^^&oUDyG!EogF5Ph~P9+m_3fY+ou2P82NnynZHR8_0A9nU)es z7LX`3-$g--47ftNx z7wJymlGGySB!DmiJeR;>0aS?$V2iSH2`7R=6(xUqbLT;lAH-zVl zkU^DfjS-vMGDnb2s1w|KJhu|5>a%dB$D#N&AT|XL31X*!&RgKWc_6leV^c9=Gg9Fp z(d}(xDp1Zq;;S(JNzArhdMbiq?`XQ+5bqP7iIsCGt^&oEfMQ{@@-W1b>{D@^>YRI& zelH@psD-EO1YlTcg%pExlstVIof%M4gO_$j`{Sev7Lnu?rFtqz${tEq;xZ`;Qsi1< zj0YB-z|cm+LxDf9O2MMcwuIPHNS_3Up72*eAvc36I2T0n8EIuP$Ip4MSbrW+ka{uA#A(l7i)E za5;A!W!OBW5c?uT-f#)t@CAZAO}z(I2M$JJ z`{5t(7Du?xrR1W`#4`#W8+ghrO#b)~{7I}^1+GScD@g{I32Ve_379aaI}MJB7ENOh zU;);E5<*e6iqkQwO7T3y2yy|I32KfVD#7ksF-~i+&dnH;8EIC+WEy}D*Aea~6#ucX zPsa@BG3jFxL`oqfJCE#YF<7u&(p-X}Qp|8(tgfiCQ^af9lV%>5_}61-2AW2~40?*k zeNcy_mPFoKIJQXD3~g~r?9PPfvknt8qa$Hy?IfVjqZ^|TZewO>3}G6-RSl^>mbVss zvkEh&Dt4wI{A>(#0rp7wiR8<}J=)WKRSRH&s&c{jp=anio$hUrZUX1<}_6S31jG-#FGO$WT#VKssifligmmnl%ROn;%V9|OB-Eg8CW0L8(QYA#WbB)Tq~bA*R42tP zg#z9DHKi?tN?ocY+uB|3+~ z)-(h}jF$$O<~*^URKIj9NCAev!pHb5N17QGGN`$#&5qKc^d4P};q??eAH$mlqAEa^J9*R<%FO5ThPa%*%02HMDuLJptltQ1k2Ir{Vm|Pts5Ib!u`$N_ zASlZ#fUO9smRYqtMJDjM_BQz)K5PGWl$LgGrJ)X2@0r>Q!)ng4Q8Lno`FJZnC$!l#Rax-atpiQ}kpZNcY9v&|S&l2xG|5 zQ&etP;l%)=O9@v7CSpEFu~iH4G`YzcnH_F-GSC~$5%lCL-19kLqa1TY73G0bz(EFQ z>@~Q*+(4sokn2#p7$X9?!+kVWOC1M{q=WQJuszaeM0c<%ZBiD@(TGK(fK+jn1Sh0U zpHgw0owl3;mB^uv5gb7n>rSslZ)+~`OheM0f}iU^SVMn~__ncgU z$CKiYX3#1Tqe~LH9OG(engBLgn9F6I4>Mp=3f#Ugl1l8u+?k`{bwe449Sn`^Tkxdc zK7s?D|KNG+ip_=-Ke1lmj|W!WPe0iLTvuqH-Hu$BO8 z9)DxN6$zpwyPnBp8`96Gl+KO@WPmjZRqp^-oTa0!HgI(po<3Ey_bBN^HE>d(s!m)C zvdVbL)mO(5E|p@=ITxVZ)$@DEM&+}=B-lx!O5Iv3&%)gjMbU=E=4N=R_xLRF8-VvV z)Dkk=2jX~1R!G{l=iJ$Gk}Z-;fwvt8IzoLN3OdW=wnm*fmS{U*C}^o?D#d?bK({0^ zcY*6}f*zj8-wA}`jG?H~_lERK;S%X=2=HEoF)RVfQ*ogs9Rl0MICI=Wrp*)ioWd@{ zF`~F>$9HXz`Si4W3oP}%E))b)nP%~rU5V}~C01E^l#!gOgVNM%%4MS0+*XR_j1*L8 z0WSrNp0npP7I9b_oO%v!_Z+f$(%9jVI14M@24xn4@jB{sj43ad-~0KHk3xPW`V_xd zQhEg-R$5fcz>CL06BzR8cW9}DLTKIC)3I|g#!xAduFgntr*I7#lsBUUU0rAGC22=U zEU+FrAic{-Y{9i!On7dPfkqNcw&7E=#U@X>KsuZ3f)990cyb0zqBOmqK^6?Kk;4@i zC+TbzXAMb@PiB%Fi42mBVwP%w@Kf-#1f3}{oX^`HnN=Z~&w}E_J*n4H3M5x!egp1| zL8dJQCl-Sf$d0A~^{c?2YwQS3CNA}SSOC^^Zk;)?5a8vaZ2>5$17QV?I;YaeRXfOl z*yK3GiaW^0U#Cjy@M!0l9RtFg2cH$OTLn&~Go+~>|2gP93qGxAKM?``9`%Kb*e7Ai zCo7(LWsVuKGl2=CicSHH*+Rmv1QyMJk`e;I2KvEAyUz7)eK)ewHBQtYqkbv_EHLNL5zXGs|jLr;v zANXnx5Aa}R;i0?UQ>Dr3;((u19x|0?!bopGgjmay)fiE!PWIrFA?!E;SuFsz6i!wJ zPnm=u-osV_!tRyUt#B_>;cOgvomJG|(Q~CMlwu%=Zn`@z!bVk;a+CVUvm;6JT=75@ zPX?4ocvArg4NxY-vA02^3bs6DZUmrN&QAehJ}G-93}{Dpnp6PRdAI?-MJq*=kN{rH z$OuqQg6q;4A}NlGmzJBQF%6nig~Rti@^Ga(B8X_lh#;SzW#){^g)<^ff$JK`0q7`Z zNB1dIpecd*jZ_7tCt?7FzT&UNw)RjWrJC~Gm|uj4%3%J}@Ckj= z_!Nvo5mH-*K230p5k}*y@d!d#IuqkSDi<|iLyi>@s!Eq_9opgzK-s{1M*&f8LNbzU zhdlXMn!a^MnIOkcPxRoA0VQ)Fcc?=ImhvG0BccH1Ru96&!=1$Qsxe9=W+#_D5(8VjR?{ ztV4y2Qx2FPf{Y`O!OM7xfG`tV&Xj4y>jvM48FQ_hu94;Iy}W`j608BYPqBDwosCx$X~7|<0w{9%pOXa>hY5OER1 z7}MIDp8Q5g4T;JPj;}M;@=TZ}50_wINMnE|GY(0yIg+ zVKQWjIPPw#EK^9q5t?oV01aNGQv68klg8vUHrvAz2j$NjVY@%s_Eo z`#gJ_Ao^3x$}p0&g0_n<&UdtI${u+1sS( z#DF(a$VV}#SC)kqFfI#joW~#~6a6Q+gYxnbZwSqsYzPADy&LP(N-X7Mr|LXz*-9<&ET$n2M+0&vingJer-tcN}9CAs~5@$ABYR) zdkua-=>$zY0s3r=mr=5VxvA5X?WTUmy|8Wt`<>5dNv2^l!u0N!e3L6 zq`QjL--VbSW$5AtJ;mpTC`m*bco(a4@X-7qZ-6^9DC883)I@4yj3B374|EYgr@Gb# z#EKF;T86H`vd;uAX09vY9cAF96rRU8$S5H9IUbFOnE*aRo+{h3tGy9vDwN5Ur?FK6 za!vygT+(pKU}j*>OGzJNSVZhl0vI9uhz6Sc>?x&B_hbz<|73cvv<1|$RfHT#S)ved z5T@E=el6R)(GW83X`f+E`Ard92wpPa#V9K5QHp^)6xQfAuWsG|o+rQ{1t21c5pfP{4m4vN)M3@e0uGohXe~^hx+*%m4n({bgOBQKDlvNk znUORVD?A!=9d{TooDOgH^jssFR4kKm|3RA*VY6@G@xmJ^P?B+!8qzj(BuD4TeIpeq z71Z%S_#A_Sy6r)E&IVz~hmL zE~_WAEr@87mfixLohW0ZqJmy+M`7erM>`p3lETG+maX?MPdQM z#<$!tS?#hKLq5Vr=4KNNP6&fUM@)QHCm^7PnnOljrQSu_6=jTVMuR z<&b1>Pfv7`Iz$_)Puj320J&IB$?&}nUqz-LpzGj}u<;MnoGTOe1f5`zr>uRb?_mt` zAq9#mcv1pm!#>;rO*Gl1aFpnFL0}9QdV);$Iv2&Jt^oEZ1Ss0-9zN za#Rl=VdyN80&18?IszQfax0O{NSR|!;UIDXFM&KVbw>IqsBUmnaHKbnLVc2+fP>ed zMtB;dhCD?iat8VU4a!`iV=E*$IHQUY3}7Y58)y9MEG~y!S3A-yje?~Q$v8c`N6VAt zEJPL@VM=lwO8%Y}3Faj*iYm{)i-z%C>VA?*odqO~Plb1o3RjB;*51;qBtlR*)F5u;LXn`4kisI?M0aN>F857ZR7s2rYHoSw}6~OKl_`&llkCgYcZnVQ!a6C2S0d&16Q}SfCrz zTsoa(PNtxw=@3x_r5mi$R7!phJkBCXK+h?lpXqf7jA9FxcoQcU1oB4ANTOn4`YrWx(1 zU^H}WO<+Ko?yDkNQfneZnTzA4QBxdTStr3~HRQ_#30!Q0nC@;uj*SA^gxe@4$r5mE z3mW}05P@|>0{CabQ=(VWY5@@lMomBE>k2U!7eHS#1o9NYypa10T!UH+T%rdJ#7&3;K^u47Fx6yt2ee6Y!=-DXr3)SOX$Z z|12n7$HYRnig{R)SlV=@t|8f|gg_5ub_YHeGx{t{ zv;ZwB>LSuq@rvMK>kI&_(E_j9iE$l5eu<|5sy7Lq(o?#$K&x()p?p09eWEl zH#~hw!KtplDlfqtkn>JJ4kO|moVzv&9a$2%QEJr^nzg`TL8>L$d*PIEXoDk)s7ljf z1kWfD$_YQrC}r(a9D+nn#Ou#ClTxhnQR*AvMU1P9%6r|V1qn-V+NQB}DkNp2 z=GTl0mgLS<;IPo@acr`*wP&mqz-Gl5Yxq1yU@l+(m;^gkVslppp6B^(2c)E9r3mc|j2s0pN1>#}nV2_V!MGitp(HPZ2Q=l*P9>bT7=tWG z=99D|)12Rta|rau5Yk}x_jHQu?O-9OQj>==L83N6*h2MbkqTBGwS-+OiJ1z>!@V6t zbV~bmzCDSmE$o(&9TdGAS05zi3|_${fQ2@Q18PKL0LLKvHLUr48lYl9xHN-Om6do6 z>_-`TL*OV91&MR6xf6Fl9uHADCXX=YB^AZ&g|f*Z9ESrmtMas)U0O`D4Sio70*nbt zhWT_R0)|a=r0>0cnI#1kfWZnX(i=}6@;Q=KwSHpIH0Oic$PSBCubVMr`im#joM6q= zY9^9YE=1`Uq1I1Rm_hR^&XCT=!s)y8$$|_@b%gX9`3#c4kyYFz(S0fKcp!zYI5lCn z&TAPY$GQ~jCV!o*lRBsBwPw$kScT-OvsjB2yx76^5XWmA zJS2usX0n=um+h5`Y!b}GF5EKK@~2ezDv3tuhr-I;~ZnN_J zDjBSrq!&l=yw`9{vP=>|rZK`wY*U`+KFK4CEWgg&q&_F$ad1jGHao8K=NQNf$ifyN zM;R<#g-Ai^37!T(5_Q|1eLIm{_&*qxb1TLWu|?GN1>L15{UyBRR=czS?o!ie0l-{= zVjK%j?+%eWg}0Q&%es<|ka?~D`Wb~n~-=RMqMH1wdvq{N648B;Xh|IR)?iK&qhu63M3T2hD(Gl*okmf<7Lp-iDtE%GjW&I}=N}fS`N5W|m zUahPSm$(wYV=~57Glg?v>=GA zQ&a>dWgXl}KvaQPm4KnS7*{ekmqa7_#1t*w$eKoC4WH5*hX~1%gJ)utNLncYa*`NL zx$a(Bbwk8z4BAK3bs^R{AwjH`LT0x@noL^2pPougC6`pzca*$*5xs*|S_lFQ`mjdg z(UY%o3L3aL1XpO6&8R-jdEim74`MZizXZ=K##G2~%x_`Z9HKytKf@+ViEiLTV6v?O zB1Y3N)QK7{0CnT!YStf#*rPc*De)CKpYnav79_NV;Z^`(sz8X0 zmxOqNKfzE5TsIF!8s;K4~laC#;t&oI+5G92wk zzWGd!H8W-t05*VPUAW

@Mk8xGoVA$>!}*mv;_LBZ;)u1uIFVfHu&S#mhcrG5%7P zfWw?ul|`<`KCXK%coDav5}y!7F$_ajLYj&zimqap7Li?*OpL7Uf0oogmiXM!ODofa zUq+bJ&vPc#yB~`{T@|R~Z=O>Astta2Ijs~qg?*VW02`qAN|2oaYdP?f;~cN}Q;Sb? zUm?(++U8id2K=2RUxj@12?RQI|+s@#>b$|)CZn` zL>8Pqy^voOEgqi3E~^RqJNnZ{DRM1k;IAEHtrmDAiVQv0vf)_sw-JC79PeY16{)XM z3tpRrF4Pw$Ah2B?&D)oCeW1gIfmURu!n;e3=LX5CnQbG_r z4wR(vnqqV4KJmGmnY}4i`pDuv4JZnOvugczz*~vD^+R#@4O9C+#HBPzg9$JPE*sVB%5-Dqo z?_D0k7GtrSVj>KgTrWvIRPmTWMp27C1LRBtFO`JT^b)q52@Iz?RtacdT$BFE47zh( zGrzVPCI+7-<1&wP{{|^R36`@V5VfEa>+t{11YeH}Zgs}wej#XY$)QM6kueFr$LEyI z({fDOEEenuc-J+!zXo8P0$4tJudz~nF40(lVrP6}ZWE>3Wga#si!lXq>IT`OvM0ZF*?tN2$%IAXnDY-1+w#$mS9hbLCV&O3Uj$ibqxvu zsXbQ06zeMoOYFZ3eVDi-_9rDA<^ z9|;L#s0HgMIb?AM4HTZlu(@=RlzCIIh0J(Jz!riC;VbD>%y{6bID9GC+o)cqX!0GG zh>62QJ`xq-GQuu`f#rD#h(g>HNDG2SGE+%ZpCyEo3}<1EkiV<8Q+-ic72~pHokuEYO_Oj_mkz z;OS9Hd@9Q|B*6qeL;aFf zq)ZMpKz0kyE2E8F=plHa0H1MC#8x{-1XcsXTDw65A4m?~AU?|C?|5EhrpefnkRBSv z=riDjRC=1Xk3qw$nfLU|)a*jFTkopBEz(17FQKxX8bdGxuRx)xq$IzHnhg#22 zvredlNPYxXSr2zqkVuyKVC|q;`Mom=S3)C37*?<0h=3J^tVHh7RMKb?*Fbs$$XAwr z{!=g=h)xv3uE)sHUIsIb)FDO#Se)|CLW+>{NG;6QsDXWolpEGxjgl(BENkTe;0&ba zJd9xlydk~QmsFGxea&cIW!WQ83rLXofuF~K$_jiDdm;rd-^@7Reh?zOhjJoz4Q4Sx zS0+UipnPSn)(Aw`kU~~pVdnOqJ-zO45nLi@n#XW;EtS!90o)|tO8FcNF&rt9-(wI1 znbF5)jONmE|25iNBx`S`2k?XRb0VNQ>@KKg5CZ4qY`spS7bq1=I zW~`8dpIr`iknH&ZW2w~ESIRfUAX&y2c^fdIi zUbE|&;a0OR@Iy*{-qLqupL&y`7 z2N2LX1=otEnzCH-oLfR-u1_n4?U@8=h1_G{D_M41qT_0)KJ4jLRHa8wmN1krN6#Uc zm#>WFFqy`7npOdgaGHTns~V?-*pvny7PNgzYk={iDj^PF<6mdPcVM`JpwKBke@lI4 z=9%snXvdam7O0cy&)!G(C~g5^R6lpf#xWD0g*xOJM$FlgJwJ^O(^5dESVXPn{I_Nf z1pE{}QU;AwL+~@f)u6zMEto}d*~!i@5@oF+19T>oq9Ik#4mK)6T?wHjt&_z(#7j>S zEstW77p4RfO}u4TC+>rv!?L7ryR8a*>RfxZgeW8Uno&6hTDDq1n9O9Tkr0Qrx2M!G z$hXN{8Tt?pQ=tv7o+px1k6a6Gim&0G4Y0A(k;9}!cWf63fAY~21Jseuj)d5AVmU^l zaOY{59RqY;13E=%RlzjEW+F!wM21BeDv@9MmIk*C7UQSLRtZ$_sJr2VA3+X^qJp8a zD%Y^5DmFBYafK7~G4jxfz<4QP3v)9tcZ8(zJQQ9D*2OnTl!2>8Fb<;9b}2hZ3-pmO zd@7S|aw}TPM3X9FY{n4z_a;V|fdeGY-Ie%Dm@;i?PA1I2IT=BaBn(#|C<%W*4xM|9 zp)|(T4BBd6gL5ZNpvb;w{fzBdCRqz%Ha<8TQd{S@#$*Uf;N zjBLU9H;@YR!R?>Nin|%h+Of&2!-(vXjsjrnf`PoAVnSCm4^O@o(=$UN{O2x|jj1_%q; zX}496ZQd=oB-7X;vmHz{jkIwb{*n;mFxCoCL4w^Dc((+&=3efx>Hq5Fx6hA^%d5}ft#M7$5t1sc$RE*OSM4Xw>?m``ki2q1Eo&*-FxDg^6 z@JeaQ(=NC!_^bpu%^YV}O(x!ohgS>H(+(xicy1N!swB4P0bVm4mT+&NLVzQ}WEME* zS*~wHC!J&sT?2DhhLdnsr42>Of@?(>3O+x{uZ3essE|XaNY7~%AMK!_eMen)00Qv3 zGkcI)#+pq09>)Vlhu~@idDe2Q@Y)!`cx+}9bo;mAU_|9$RMMex|>Ko(;iYh9oLJL~+RTYYBA|um&aYsi00=mjWswY0$fjwK8}zVV6!mTnF1t zVa7DD>$TK;jMGw>{Ua+Ma@^x_I*sebAcN8j5M~%bLd9&WFl~qt7EF#K*;N46DD}q^ zOf!T$k|n7ii_?nTH>8ygauI1Rtg5qSI22!b5vcPkfFwX&0<-NqlTJH?Wl(}6P<;Y^ z&U7rqsFU`AT8xrf%#M=emBMftJekAfDadMt<ZGqK!KbJK4vxcLF04<0Q}H~0;Us|9It2?90cvZQGKyg<1aEy8%@j=OG^S-v zDkN`NG=^gUd~Y6gukAaQefAixMf5c!a04rV|U52`N!+*3_I5j_N$(Ktt2 z)3_&y8fvZ}2dxwAg6-2XCF)xrq})cyDB)X!3<9Ogcd;NaOOJdfWEKK36Yh}N13O_U z>3xcOxTGt={M$nSlq7yli3XodhJYpcdx1?BE-aIGBVRaI37o?W5RC*?bqtiZ*ppGP zl^`w+7%%x?w;1pi<{9Q7&)_yTK-vii*d*m?sDWmJeL@AVq#e9;OO=*CLP(&pzf1HT z25-*!yaDwv3`z-`8*rE}L52H8@SDI@Q-TY?)=VUUqZd3qpo0D$1^v8K0fiLjkwP~^ zpcJo47R{YH4#4wJhoev^IZ&liovT8<887}pv-~{5qP`#x>Ua{(sgchtj3hE0X-_AP z>Y7=p`)-bcf$-I`ed&063;N!xAm8-JU)iDOWvYjTK^3{Y1*#U29y=4$tv-+e#R&&S30PH`;r^{gnEKj9Scw41r%``i%0pdAeCE z;VM}PZ07qO-blEgUzVt>lYYiW2zPbw;Ol@lC0mB3WghOg5>9kaf>kPNsU?o6ye*s4 zx{ikHn?}z7Lo~~e2ULe>5T18kD-vsJ55h&Tw?~O2m`aSgg9L6_5}asGlS+@=71omn z2C^lyDya4J=)j{1B!nvi6mw~xK&a3|$;~?p(ao(+xk&s+5y7{>5i?k}=pu$&V5NG9 z()6KrtodzC1Q(SduFE&U5lu-sx{JTXgXD$cY0Gj`#ObEA~U`(mFk>QZF ze9G7o@XxcMG)&e! zOdA*A$txAypJxW)Y5F`|{{f(KJko2x-|Lbwj4?S$7^ftvj0-~AY z;NT)ArX=X^?D4l6$MUca2NJ#T%e87K44EWtCI`1>gS?Tc<#+BJ78>Pl=TjJCiA? zWnc_4MLz{)WX&1_4wIHxdY^J>oO5eKLFu{`V`DT#1T2G+o~WX;wG1*gA!?UY zn<-1<6h3b_qh_!0Fr-6By2mJn2xU~7c{+y9nm>RZZ^NXvm}Du}f5|ay!4WP1-dT{b z7&DTDRc*LJMd&~IHe~^4C3ztZRZZVZ7?P^OC^&*>&WM-*_$g$X+}{WhBf6*$Z;&@W->@4>3y4a;^p6cRs>! z^1X7-zLEGl@ZNLEs|IfSg*%%Sq^nGu}3=s0TVlu zp;#gni6mhUG+H$B2-f5SnwOcmo=VR<`mfYFax=h&d_}GZ9+zTb5({h&S2b;GvBDoY zMF$1oK*Y2Fta-35Lvf!2vx-a7f|ONoM{*n@$n5ae1Ps+>B<*G)gJsB|&(JRtykzJ_ zQ;!CQBcS&wz<)+^egzP@Zj6u_yXYYDym40X!7hcRtwfqjSzGw|5TijKM5D(CXAZcZ znq0a`sK_!@ZcTRy5WF6?E1*^iD5)`Da$kFxa<@yo<~`{P+W#Y~QNzF|0Q3la+gX5r z1;q2o^kNKZ8k39#o2K>oiO>bWD=n`X9D*FY1-J`~gk6%O(~QK!1aI@q-NN z0tKIdWCS@w>ApOcd4j&C(w~eM4{r(ZPJ@gkz?K2F1Qg7`u`LvHq=yQVXYsu@P2`V* zN3lmGKbjb_gHFXAie?d8@ka#2j77E<%WvkFkrGw^9X#(WFw};*qq%roXKFG*)v|X6 zv@8Jf2J4bwI_l&m6Jw$=Mtv9HkAn&d#ZFQRnOby?{n(7e^hh<5rYA=Jq-=c~kl%#w zlPa$-`W{spD9vC=rziSyr9`)H;Mz-smcYmKO7)NM0Qo4@FxZO3&je8k3bc$kAVIdm zz+;r^!x={Vp%||=;C0^~c#2Pc9g2r1{3qUAs;hG-Qp=);yWV%Ca)`(@5j2DpG|OIA zr<8D{ge?#1DdkqMT}^PThJp>yR>+?i$!v@8?m0lb-)_+WK)3#jz4c%$?hG~8LhOXWiKD55zUEBB2a z0pw!`HZ+2q9bs9}n;_>@J3-FmCi+(3s|e7tbXW$L^Lk9T8P!U|>beOWh@^-Is@px; z+nfhpE-N)6*O3W)PLq`N_ZAgf$U1zYCx_uhLj74d?>8X^ZD`DLY$bWFKC<@IOU&!H z?@`Y8JeJUu&`r`nqWVg32j}6nTm<+f=Bu#G=`bT)k7P|d<9zcezOqLxU=$=eE zr8NPEL3A3 zhtnI(q6J1Lm(HK*?jn4u_W<7x8Hy_r$udAi=WUp=4#Cc(IZ||S!p_OQWZC8OF`lVY z@P;hEY1GsxX6i`}B(enHkHl!=Gz(n6W6)IKIOQ9gDef6y?L3%k3@Uv5IQ+?SfRRKEnae}=h%>m1M9yep2?9o91M(JUqXJJ} zLs-DwJK-su-3l+KrBzB8A36{Za=~aChh&q`iIQSSNd`4ueA?d|!<)cR8Th*u-lpw7 z_brhGU@54ube&>2>WN|FUsc7#U206tV*Wb~UX!fp`#_FxlV5IL778dK06YaKsQ|z@ zkneIQ3D={h!7s8D**JJZoX=L2k_yhm7-V%U)_PKMDISNl5oOdpuaRsWQZThk?Hp;? zVg*Gdd&bKLV6GNADqaJCe&DCnj8_J_3BpU|wv4w)7jO=Iu3OP(dd2~MD|jBP*9>fh zz}rw<5-Ek#LqNR(3HUGu&}Sj$$wAY!Ofg6a;tFg;I72F(NxLos6aj;kLc&57Y{vA& z3yGtoQBIb!6iYHX1fn-#Yo&<(2LUg8go6tp#U#ix4326NWrT~txnrKZ5@KCh`GGlc z1~I#VG&V8jc8~=Ux-imr!Db)1JABLQERBkive)5^NsK*#w5HU0&tj_zoI>*-W~_lZ zMe|IjQ=>XptYQ^cd!spn@p<;d|W0V4|qw4s|u0ift{>E)zgp5di> zBYSQ%;V5cDlu6#QsDdQ6{IsecA`L02$=3mlzhe=cUBRfvAcG&|bBxi@M1f9WXtG3+ z0fuP$+D=df+{wGEqebcB@(r;+K^%G|DC9j_Us*cY7NBG*K=uR%{wDnPDS*(RG1EF@ zhB7gfbDIRyuzJbq4fjkn`M3{@Yj0FMPk@^QAn?VhqqT(q8JNhGL(@<5P3-8k+KsCtN zRN)~P$oce*NV0Ol&cc*WYF@`Pe?0F@^>HRlqugK&S^n~XE7Xp z%s;|en*PGTOl#KDMVc!N0#6%}1Q^eS5>Cuu#oq=6Ct$bk>3$zsZAOaiBz{T4xy>T7 zTUiXbtl#dxog{fjQNA(_K-xV&z*ZURun8RasW^UacnMy;%niB(l9h+Bihu7IK>Y{+ zW;z@;Pe%Y2C-H}aRfbEF4FM2NQ6@=fIfjK>+4tt~Ycvin76EGUI8c4o>ThBY%7NTm z9Zrq|p#TsF5l5XJ&Xpd4qm39sn&)Oin6|64jXtD(OG(}?bs>3(PJzhNs)DtHVc4zP z@UJF7vPKML36S%eL>fTp=l3r^55;(%kf!@z*q}ag6zO z)(o8EQERJ93WUa2h2Rv98)+TbZ2;p^ul;LssE+9DDzd9{F+G~f`TRA!kzW(JW!3RF zk|@G>S5;pb&qdTAo3We^8+gu{C@2*3u_@@Gw_uoMktt%IJrgD+CQx(YWt?$vWHCM7 ziaDpIyUd2eMs*1KAl(6n>l(l^^XWc^(iA;SK}&s;lQ8>ITq7Rh=qZbp z(jjA}gaLDoq!UD(OK^7Da5<;o$V~v_ez?+mQYcN8&5q^N_PeiK-`j6-*YXsUfK|13vx4z5Gqeuf?OX#F3cq$2|C#`lsSDFF8D+t%A_n;e*zqE8 znj$?`jfY!>$CzN?(8^)pD~WhjH1K_MWb|PQ>7fLplAa((iMex8p=1Z48}VrX;VwWp ztqKaiL5`b?W+MO5DMUzO|hgy!!t1n{ZzfxLHO)t@$^Cp;DS`OLmq3f!U-xf4s z3D3I>?i6f{1~tc>XCHyDWJ+(-!JGS>nFMh^qfh4n zFb4gA-74%T7}oA^jV%kKdq>Gy6q*b2z?2}I;cvu7l6Z8ij=3(!M#yu6~i znFTL<2%I7Sd4?9rYC8}w0&rmnfGsuz2T4r4>Et(#psX2M>@q3X((n|ignS;95@6|R zJZv!N(;wUqJRO?}fp;E`(j@VQ>)~U_DcEDS70AWqL`gg(rV)ILGqEodFD}4gxk`8; zFLLTQ4;#A>j9QGSwIP8Z=VgzwTXN5ht)FVk`M^3?R)?`wan83p~jdkz|^Si3ZdvLPrRj zNqVuNf-VUV`0P0#qNuXn41N}Z1_pl~n#niR48!B>{04m3!CgxrFaH2p?OMD)MJdJ5CwS-ArM`!nR6j*@X<)x`Hp>dZy zMiJuI9eIjudiN!lVOTvlS_Y`g-D(OST}-ja$ChEuup~s z35x+kd$J}z9g}Qh8cZ~6khkN8@nRy$boSgN?eID%Q-yaZ1^5)hO-QTg3GqgSmK-yc z0z2|&_s&D!a$M)zmrL+VXdxFSh2*NHhk)f9#uot0n*d<~u3wRze6D&#%M|DO`KQp; z*^YtXC7m@e(qSb_I!o8f0w^fu!dcMhBMjUR@*{981?2J}qiDD?Pcw^2p%cG5I%iac zzi|l!kOI8_x?Yj|IvV&i&Q_qz<=96UZW1uQ1Bdx!13#m?*3|MwA>}iJ;Yu%E11YWo zj#ZUL=lq5qM)ZMqDVXO#J)_(T>4)R3KXCV+1|!WvW0KKiXM+0Sn7R1-gOn1Lr4QPG zyb0n}5t`2=|72a!|7aiiPxk+Rv{B(dnLo6@hxY%7-Ttoqy=;Gt{mty}$GLNt>~Bi< z|A5X_=-fs7TcC44qH{&N{T`hw*I;tX_-c0hBZa>by~p9;U(hvmyZr}hybjJ9?dxZM zO!torIrk^_x2#~$@Bf6J>CUD0_s`Y2zam)wOdb16y57*UK2hV$pZf`&YuN3d(fEcP z`vJW>QRn`O&Lwp257ae(sPN_9^&jl-&lNsXg6AWmX+pg8ALzMtqT}}nm-_f0+20TB z@2LI#pJ|LWI{u;kov^<>djB8U-@hh)PUt-!(fyP5_aVJMqj9?X?-S3Y>iX|0obi1l z^qeKSo}ce{=so*;ipEhOIF^aV?)-Pu^QZ0a3SDRDJs;$*|F-=-L)RH~9pkZSjNdQP z@0)agNxg55##43pFvhBHA ze5cHN|MfBO{l1^~2>R`xk)Gfhro+Fpzqb>yrw;!OC9g}62bR5;ncsgs^JVkE%RWCLTC67G135kC{LXtM0~4h8zik3Pm2>va>nG!6 z?d9~}aXhGxJ6>>pY)|Py_C@cIJdTq+zwO5w##b>Xko~Xwd5@Pb{~cd@Jbe{-_+6hj zzXx=91u#1OazV*6#~FEfc7D%I<6_|8U$VblGB0m;Usi{!PCrb=2# z4F5OA$BJ&eZyT4A3x4_86Zs^+9dG~5i_V)D`|KxqhVzAHhv3H9>%~O!45JQ@gqOse zH{Y{B{{2UVq!K+%{t@~r6k@*ZQTfk6ZGRoc@c;Gm?$1~7jx70q{59_%r}lo==U>Gb zjmz4#uX01*I!qs6IXH zFQW1P?$3XB-kAT)o*&8GZ`Aq!{EM7-m;AQRIKew!#WRYpg5UkSzI>j3;XB+VUz2gX zm4p((dJ7(lZy%C(j=C@6^}btbkR5-|8MMZ`tRTOUnS9hf9$`tW0+4qm=9xU z933TH^`%_tG5s=E7k(e~svqxf|BUo280Uo(=;m^c2RYsNElT~58Aq3w)5Q%+?Z0K5 z?)b99iy#Auxtx6PZ^Jz;bM&9w7t2dxE}9SL!+o{Sxhs~cq5nOC{5lsWDXU`#tb$UwD2<2>rr)lpRyP$lnk3RlXt{XI|EF#Yy7d0}J%KK5t%u zzA(lYI~~#|NM2nL#})8h)5lp|5Fo4OJSulxiwedm6`<4P-*{R5-Vj;+Hwnur|E5tI z@Wpc3I)-mQ&w7+kl%oA={M4^Kx4kMjOyDF}(tZ*C|Hg=waOKGnDo;+Tlq9FWxShkr zx$gQ=;-dmtjMVd3`2RUvXo%yC(>Gs!2BZBF5%9nIqS2>$1yS%xu6ZR<@XIE$zZxC* zDx#6EA~K&OUE8E=&@ZT<{(=1+rzRICCFeX|LPCF>lE)QFo+rtF?!E#t#2M#lilUw5+2Kv|IS`d|INwrsb9L+`&IC&IawZaoZ`2W@T2w-96!32>8AaC!-Q5Ar`;Ma z&}y$h=NT2FoG>DL*^J7|a8_bYn-4dRdq1(=%cg>gIaV)x9n{zF`*{;O?VRx)Cv|Cv zr8lYj>HAdmbu2wamGJs2SE<>Fo#f;Mj%n$)Rf{i?3Mqa;fx1Zeo;YDAi^KiTa-DEv zq;@_|q_f!+&=;N!wrf_=R1m z{29d^(@F=G6o0zz;0a3gd=7tpxpBxBNbQ_H0qxo+JssVlXyTksE}KHS#7A`e<_Xk z72+u)x%iVr){}4iPRh>=~9sd*Kgyx^YOq<{L^A1H{ z_B%)>oGbGqyPunQ#}e}ubkMx8)5kcD{gTJ=!t+Oi3y0B>Bgv9iBgL~yLY?NFC6~u( z+ArkV8t3x7$Z@?mL|@i_i?G~bsCFWK@M^I3vbH$OQLjOEj~&f9a-5uA{Q889=krwh z|26Vg1mkcW@Ktm8iM$YV5)1OhBwI^~n+0)(!tlSN!olM2b^5+=0xF!O$947u*R)PF zvn>Q%Cy7r^!ayNPk5#l9G)41$mOERKBrBGU7U+7hbvU|K0WWhb1D5C!joY z-;w_&@ELEPd!e5nvYD@nJ5FNVPfGpf5b9^-3Akl{T|Dw-YRKc~Vjq7-^rkB$W&a#> z=kNNwaeD5n*M%pEshTIaCQ*9K&GU~(hzL9Y;_sJrO@`u(AfSnkJ1o z_bQAe#-o|J>+!j@O!tlWef-LC=Ni(0uX}mwalc1oOKqdW#)>xPXU6Ggaq$CAgVLLo z?#6$Yu8EnMO>s7d&YZ2uDC+-_W*X&Ang=M&Ma(j`^Y=OH&v3!F<#J6);ugDb?pD$l zn%CJoJBw_!?VfQtNqkMekG?2Io3WKX>8$l9=0rIv`1c^cd`{fS%G6SBa9vScUxPSk zwaX3m<}H&qSQOr93cpdwJsbnnhA6e5hrge+{_3%aaS^gLZdQpWv;xwfxM{CR>Z8f) zQ`r;sE)|XG_ZKN3zdiPdmEm*$A;J973=+=3`#YK*{ z!n2Mm6UpP*OKbg<_1D}%E=T!c_<>3Zw0I<$-c3#`8mV>9))gj|(tvwDKM z$5wkKG~}M^>q_cc1+&FCow8iuopd~kbm6?a9f{N9{idZKi44NGko z2Grwx)miJiLUG6ifJ?b1UBkKA^6WUdJv}+rUvrCVm8#Y6X8IHO3!HY` z62L#c+Lp+;!yypWVIGN$an>>&pmaCZDrYV;mAvmF{V|bDR~W@|Y-BgB#L<;u|8LA? z!Ln3d03M_&cs2!Pr`Gs^X+>79aCLO!V4v6>?kivZYfatCV`dutk}F*?mbmkxM(J0X zapyrtLfrmKNXdOvTYpt`tyypk%}VKBdY_~(%+J$F{FLkMzN-x!pY2Yju*HO@@^nA&&Wa>{jE{=yHU`|&|+)c#2&H6RCTnZ29fEvF^X19iYO0SJB>n>!q68Qx0w{tMW zlE;LO;NNR$>`llZ9c^jSk$PUs(6_?h)9dFXH73dMRixT@}?8=Oz)xRy9wOEWbYExgBUQ17bFLv950IEz2K4*ZeMxh7UufUyKJgnSIe)yJv@Z5wV)?Q%%Ggw{vd&;%qx1&oFWmnE-`TFA zNY({=&RfktJx4+oc-3n5HIsdX#r_c9g0T44ew&@p3y+|?U$))&FApoJvEc6(wqt1p z-cw!!VPp^cv6uCt3_H4w4=aD7>L6(C3Se+${D2Bo)~UM4-(O2n2ch1Wb%%6IW*O~# zfVql6v~k1i2>yQ9x&u}-Xmwz*K0%mBJP6CeHCyYy;KgLT_@@ z72qQ;esK2O>C^xCL)#afhq{mN@9Y@;{P2~Qv5w(?wSO^su=7aw*1xtr+!zvvfg!XKy_1& zpPvrtbWMV!QWYDlCyp%RtwBW+Il8S#$bQ$&Ve8}d=Yse9iMx@w5VurQ64#}uYiS{_ zux=TxMHTCmkUhn0=ZN)F+DpOvhl0N=sO?o0jjTnAMx1>vCckhl*JSW}h}LK``O!w) zQm>ZQ;b`!@82sKrF_N#Xx{TYMgnCW%I>&eE%?ei5z7Q`z6a2nk!IoJ+ zDeGjPHGb?PK4(lAVL*hTa&@%K)k(0pw&3aD_g2QQmZ}$Joi^5iEO<2}|-mZiNN#@&ciPh5uW zjI!M*>khFU$ks0EC+gsf!VzQUGHqBhs-b+GV);-g7fvToE?zG|e1O9~(0#%0ewOdI zex(~Gs7A@sqt@-teK3?ww<~B&*%8Q69qXR3Zhtyx-l_Cao*9&L^b`HT+SXC)=7oSk zzjlUnIsRbWM-**R5B!FUkl0_+SG}yilYGx0t%hwyLSEgN%OD$i;KRfv;{{#MvVKmB zaofc*(WQuSuA|8M`3F3DJLODv6JQRu&A8o!hJ89g+f~U(;t=a)E3Yl*ezaQW=?96o zp1Ra$#U4A?x!?LEmE;1T&w2cfx-G=@koB2!;ERy=ps9>@dXPMiuwEITy|l-Tv$8#()zNyZ4zl4>403`-0Bs?>t}t%dvWbEP zCct?XD!SuJ(CgKEdCD?FF$EEWJxaPuNq0E~OoSFZC}5pUDR7EFp-m(oyGSo^mMEN^ zNjxY_!l{?7YOObbc;8N(ZVVR}u;h`3GV7OPvK7DO^6ac6S{ex7L4~L>^JCXM$`JUr zTPbP|`=AdcZB*mBo(7^)#@V>-$-rOC@ddwjD%r@f-uR}%RcgIM8zG-El7i7}8Ytl2 zrFfl7ITd!L}2Wl`4gM5pj1m?VEH>&ew_4hIAw~x6YWkUFQcVPRU)eixh=u z5)Cr+7|JHnkV!VT(+p@@;NSL>mRuzYMu`|$3tQVjd|Rxa!pXU{mLe#4;luN3ni70& zU_1E~Gr?V}R2+*g?bfd*>R~KYZJ^DVF>`)Ga*Gm+T0S$#qZr$lzLk*5UVWmw2HW^**0Qo;KYh;fl`A$rCM#okIyU$wSBl#w0nyb-^eH8w?X3BZk@XlUnxFPGAfp1g8ss^BL>Z8KO6Xjj(v+dC#EWD=f|XY<`K^p z_AiU|H*s82;jz}oYU$Q*qO2y!haSRbv;P~F>3)Uq`Q#hiV6TENQRAxNVPi@Ozm@Qr zgl|yruUThaa}+${)EeqWX%hUmt((6I|7Ff8^=heGK*3>LFpq5|z8%De`4iUa zBu|k|I{S>9C$=g0tAy8UmkI0VGN`wm^@JYOdxQ8T49m4X=B=T<#WiH@)`v%^hqXgJ z7m*lJ>~X~U96^+PyWhC^CgiA+e0x*1muvk_=y3ai^_kH!)vtc`W4&=PuHX?HXcZj@ zwc`9;!r#y%_@4pNv!49G{Pdc2F>@x{h0hpb|JSSW{)ljOs=Q9|^%+lH>%-;a#>Gdd_X+tcc}&?BBOz^-s&|61 zOh5UaO*<^~NQ@zR^Qdt-KD6^I>QRyPp`zG*-`#@ z7YNr+IJq7B0n&ZH^?pa_j8ZN|zmXr?MR z*6+1IIr5TwNJlQq!G{J_{vgZY51(T@8&cFSU^)1TI0Y+3+gZMo2j>svuSeGx}LcPI$i7DERW9t2n_#SpBLOnmO%0cfX z`r}i;Xl8t^x`7%JxhBj zUk@TD{T;#^>NDU@C&_h&qNB{-JjJXbo>J0vf^+P}B`yS<3^c3Y!FrJ#S^QWznc4*@G%2||vhkv`G?4!Q^SN8lPzWf34=z256+edwt z`286D-}6c3!mp$3-;4YWKlPE4%VSC9;^$5h@2}Ok{9L`Cw%5b=dsO)~j)S{h{d(A+ z2iTsxzY@H6@yYeDeboPec*{e6x_bK*-gh}psDFv&$XEX~cs|a!aEf>jgm&rrT)y0o z({;xEuH7NR$-Xhz%>?O|uP>h`9>_1&CW_ea7~2;=Ga0t+@Q9s9yM^Jnx%Qy<7eg8x zT{3(TV|FJ$#X~+YC5uf`P%E*BAF)486kO#ogNIvJXAF196ul^MF!}%B~uU9nv zk>#-c7$@j#6YGgg;XQO5KJU-u(V%+YLK={3c#eF7o&2ZudyQnie1+o)yZ(1Oe`92$ zk`E2{H)Tg4M_AjM4S4;f$qQn(=-%1$rp&~H$I#d#`=-x)V={<9%lFPsOrD#VI)8M0 z=EC^&=)~0c^s%XlnIL$LjgFta5KJ0#@q2J;W@6^0U`kaoGJgK~k=aX^rzQ?fo_UGT zO(u5q%+$qTsu4qZFtsTjoE(4Q%*@2)snN?XjE6uSCg+jar!SqE4jKt2)ur>BK6K`# k$;)TXnQjy3pJ62vrgR2fuo{NmVOVJVzi|2Qzpb>SDer^2vj6}9 literal 32104 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 E05x<-x&QzG literal 0 HcmV?d00001 diff --git a/res/sprites/units/bosses/citadel-preview.png b/res/sprites/units/bosses/citadel-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..08216dc6d5c2fee466b0a302ed353e0311ca074a GIT binary patch literal 3417 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 literal 0 HcmV?d00001 diff --git a/res/sprites/units/bosses/citadel.png b/res/sprites/units/bosses/citadel.png index 213f22174387cd4aa9a27e1b0c1a665e8d0788d2..f9ae89a9548ceb488eb49d285e4b9e9789b03cb0 100644 GIT binary patch literal 3121 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 Q$$kI;valhSlRRVp1LX0yV*mgE literal 3584 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 diff --git a/src/fos/content/FOSBlocks.java b/src/fos/content/FOSBlocks.java index e83c9007..40b9e436 100644 --- a/src/fos/content/FOSBlocks.java +++ b/src/fos/content/FOSBlocks.java @@ -1212,12 +1212,12 @@ diamond, new MissileBulletType(5f, 5){{ scaledHealth = 480; size = 2; rotate = false; - rotateSpeed = 0; + rotateSpeed = 0f; shootCone = 360; inaccuracy = 360; shootY = 0f; reload = 5; - range = 360; + range = 320; shootEffect = smokeEffect = Fx.none; shootSound = Sounds.none; loopSound = FOSSounds.buzz; @@ -1225,11 +1225,10 @@ diamond, new MissileBulletType(5f, 5){{ width = 6; height = 12; speed = 3; lifetime = 120; - rotateSpeed = 3f; - homingPower = 0.2f; + homingPower = 0.4f; homingDelay = 30f; - damage = 10f; + damage = 15f; pierceArmor = true; backColor = trailColor = Color.valueOf("975c43"); @@ -1936,7 +1935,7 @@ public void setBars() { citadelSpawner = new WaveSpawnerBlock("citadel-spawner"){{ size = 4; unitType = citadel; - wave = 20; + wave = 10; spawnDelay = 300f; customShadow = true; buildVisibility = BuildVisibility.editorOnly; diff --git a/src/fos/content/FOSUnitTypes.java b/src/fos/content/FOSUnitTypes.java index d90bc618..f7499719 100644 --- a/src/fos/content/FOSUnitTypes.java +++ b/src/fos/content/FOSUnitTypes.java @@ -1,9 +1,11 @@ package fos.content; import arc.graphics.Color; -import arc.math.Mathf; -import arc.math.geom.Rect; +import arc.graphics.g2d.Lines; +import arc.math.*; +import arc.math.geom.*; import arc.struct.Seq; +import arc.util.*; import fos.ai.*; import fos.gen.*; import fos.graphics.*; @@ -15,18 +17,24 @@ import mindustry.ai.UnitCommand; import mindustry.ai.types.*; import mindustry.annotations.Annotations; +import mindustry.audio.SoundLoop; import mindustry.content.*; +import mindustry.entities.*; import mindustry.entities.abilities.*; import mindustry.entities.bullet.*; import mindustry.entities.part.*; import mindustry.entities.pattern.*; +import mindustry.entities.units.WeaponMount; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; import mindustry.type.weapons.*; +import static arc.graphics.g2d.Draw.color; +import static arc.graphics.g2d.Lines.stroke; import static fos.content.FOSItems.tin; import static fos.content.FOSStatuses.*; +import static mindustry.Vars.*; public class FOSUnitTypes { public static @Annotations.EntityDef({Mechc.class}) UnitType @@ -215,63 +223,252 @@ public static void load(){ //aiController = GroundBossAI::new; }}; - citadel = new BossUnitType("citadel"){{ - health = 9000; - armor = 20; - hitSize = 40; - rotateSpeed = 2f; - speed = 0.2f; - flying = false; - canBoost = false; - weapons.add( - new Weapon("fos-citadel-shotgun"){{ - x = 18; y = 0; - rotate = true; - rotationLimit = 10f; - mirror = true; - alternate = true; - //layerOffset = -0.15f; - recoil = 4f; - recoilTime = 60f; - reload = 30f; - inaccuracy = 10f; - shoot.shots = 8; - bullet = new BasicBulletType(4f, 60f){{ - lifetime = 40f; - width = 4f; height = 8f; - trailWidth = 2f; - trailLength = 12; - velocityRnd = 0.1f; - }}; - }}, - new Weapon("fos-citadel-stickybomb-launcher"){{ - x = 8; y = -10; - rotate = true; - rotateSpeed = 1f; - mirror = true; - alternate = true; - recoil = 2f; - reload = 60f; - inaccuracy = 3f; - bullet = new StickyBulletType(2f, 20f, 180){{ - lifetime = 120f; - width = height = 16f; - trailWidth = 3f; - trailLength = 12; - trailColor = Pal.plastaniumBack; - backColor = Pal.plastaniumBack; - frontColor = Pal.plastaniumFront; - ejectEffect = Fx.smokeCloud; - hitSound = Sounds.mud; - despawnEffect = Fx.explosion; - splashDamage = 60f; - splashDamageRadius = 16f; - collidesGround = collidesAir = true; - collidesTiles = true; - }}; - }} - ); - }}; + citadel = new BossUnitType("citadel"){ + { + health = 9000; + armor = 20; + hitSize = 40; + rotateSpeed = 2f; + speed = 0.2f; + flying = false; + canBoost = false; + + parts.add( + new RegionPart("-front"){{ + growX = growY = -1; + //layer = Layer.groundUnit - 0.01f; + growProgress = p -> { + var unit = Groups.unit.find(u -> u.type.name.equals("fos-citadel")); + return unit == null || unit.health / unit.maxHealth > 0.5 ? 0 : 1; + }; + }} + ); + + weapons.add( + new Weapon("fos-citadel-shotgun"){{ + x = 18; y = 0; + rotate = true; + rotationLimit = 10f; + mirror = true; + alternate = true; + //layerOffset = -0.15f; + recoil = 4f; + recoilTime = 60f; + shake = 1f; + reload = 30f; + inaccuracy = 10f; + shoot.shots = 8; + bullet = new BasicBulletType(4f, 60f){{ + lifetime = 40f; + width = 4f; height = 8f; + trailWidth = 2f; + trailLength = 12; + velocityRnd = 0.1f; + }}; + }}, + new Weapon("fos-citadel-stickybomb-launcher"){{ + x = 8; y = -10; + rotate = true; + rotateSpeed = 1f; + mirror = true; + alternate = true; + recoil = 2f; + reload = 60f; + inaccuracy = 3f; + bullet = new StickyBulletType(4f, 20f, 180){{ + lifetime = 60f; + width = height = 16f; + trailWidth = 3f; + trailLength = 12; + trailColor = Pal.plastaniumBack; + backColor = Pal.plastaniumBack; + frontColor = Pal.plastaniumFront; + ejectEffect = Fx.smokeCloud; + hitSound = Sounds.mud; + despawnEffect = Fx.explosion; + splashDamage = 60f; + splashDamageRadius = 16f; + collidesGround = collidesAir = true; + collidesTiles = true; + }}; + }}, + + new Weapon(){ + { + x = 0; y = 5; + rotate = false; + continuous = true; + shoot.firstShotDelay = 40f; + shootCone = 90f; + reload = 600f; + shake = 2f; + + chargeSound = Sounds.lasercharge2; + shootSound = Sounds.laserbig; + + bullet = new ContinuousLaserBulletType(60){{ + length = 120; + width = 8f; + lifetime = 230f; + status = StatusEffects.melting; + + incendChance = 0.2f; + incendSpread = 5f; + incendAmount = 1; + + chargeEffect = new Effect(40f, 100f, e -> { + color(Pal.lightFlame); + stroke(e.fin() * 2f); + Lines.circle(e.x, e.y, e.fout() * 50f); + }).followParent(true).rotWithParent(true); + }}; + } + + @Override + public void update(Unit unit, WeaponMount mount) { + // TODO: this copy of the super method is WAY too long + boolean can = unit.canShoot() && unit.health / unit.maxHealth < 0.5f; + float lastReload = mount.reload; + mount.reload = Math.max(mount.reload - Time.delta * unit.reloadMultiplier, 0); + mount.recoil = Mathf.approachDelta(mount.recoil, 0, unit.reloadMultiplier / recoilTime); + if(recoils > 0){ + if(mount.recoils == null) mount.recoils = new float[recoils]; + for(int i = 0; i < recoils; i++){ + mount.recoils[i] = Mathf.approachDelta(mount.recoils[i], 0, unit.reloadMultiplier / recoilTime); + } + } + mount.smoothReload = Mathf.lerpDelta(mount.smoothReload, mount.reload / reload, smoothReloadSpeed); + mount.charge = mount.charging && shoot.firstShotDelay > 0 ? Mathf.approachDelta(mount.charge, 1, 1 / shoot.firstShotDelay) : 0; + + float warmupTarget = (can && mount.shoot) || (continuous && mount.bullet != null) || mount.charging ? 1f : 0f; + if(linearWarmup){ + mount.warmup = Mathf.approachDelta(mount.warmup, warmupTarget, shootWarmupSpeed); + }else{ + mount.warmup = Mathf.lerpDelta(mount.warmup, warmupTarget, shootWarmupSpeed); + } + + //rotate if applicable + if(rotate && (mount.rotate || mount.shoot) && can){ + float axisX = unit.x + Angles.trnsx(unit.rotation - 90, x, y), + axisY = unit.y + Angles.trnsy(unit.rotation - 90, x, y); + + mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - unit.rotation; + mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, rotateSpeed * Time.delta); + if(rotationLimit < 360){ + float dst = Angles.angleDist(mount.rotation, baseRotation); + if(dst > rotationLimit/2f){ + mount.rotation = Angles.moveToward(mount.rotation, baseRotation, dst - rotationLimit/2f); + } + } + }else if(!rotate){ + mount.rotation = baseRotation; + mount.targetRotation = unit.angleTo(mount.aimX, mount.aimY); + } + + float + weaponRotation = unit.rotation - 90 + (rotate ? mount.rotation : baseRotation), + mountX = unit.x + Angles.trnsx(unit.rotation - 90, x, y), + mountY = unit.y + Angles.trnsy(unit.rotation - 90, x, y), + bulletX = mountX + Angles.trnsx(weaponRotation, this.shootX, this.shootY), + bulletY = mountY + Angles.trnsy(weaponRotation, this.shootX, this.shootY), + shootAngle = bulletRotation(unit, mount, bulletX, bulletY); + + //find a new target + if(!controllable && autoTarget){ + if((mount.retarget -= Time.delta) <= 0f){ + mount.target = findTarget(unit, mountX, mountY, bullet.range, bullet.collidesAir, bullet.collidesGround); + mount.retarget = mount.target == null ? targetInterval : targetSwitchInterval; + } + + if(mount.target != null && checkTarget(unit, mount.target, mountX, mountY, bullet.range)){ + mount.target = null; + } + + boolean shoot = false; + + if(mount.target != null){ + shoot = mount.target.within(mountX, mountY, bullet.range + Math.abs(shootY) + (mount.target instanceof Sized s ? s.hitSize()/2f : 0f)) && can; + + if(predictTarget){ + Vec2 to = Predict.intercept(unit, mount.target, bullet.speed); + mount.aimX = to.x; + mount.aimY = to.y; + }else{ + mount.aimX = mount.target.x(); + mount.aimY = mount.target.y(); + } + } + + mount.shoot = mount.rotate = shoot; + + //note that shooting state is not affected, as these cannot be controlled + //logic will return shooting as false even if these return true, which is fine + } + + if(alwaysShooting) mount.shoot = true; + + //update continuous state + if(continuous && mount.bullet != null){ + if(!mount.bullet.isAdded() || mount.bullet.time >= mount.bullet.lifetime || mount.bullet.type != bullet){ + mount.bullet = null; + }else{ + mount.bullet.rotation(weaponRotation + 90); + mount.bullet.set(bulletX, bulletY); + mount.reload = reload; + mount.recoil = 1f; + unit.vel.add(Tmp.v1.trns(unit.rotation + 180f, mount.bullet.type.recoil * Time.delta)); + if(shootSound != Sounds.none && !headless){ + if(mount.sound == null) mount.sound = new SoundLoop(shootSound, 1f); + mount.sound.update(bulletX, bulletY, true); + } + + if(alwaysContinuous && mount.shoot){ + mount.bullet.time = mount.bullet.lifetime * mount.bullet.type.optimalLifeFract * mount.warmup; + mount.bullet.keepAlive = true; + + unit.apply(shootStatus, shootStatusDuration); + } + } + }else{ + //heat decreases when not firing + mount.heat = Math.max(mount.heat - Time.delta * unit.reloadMultiplier / cooldownTime, 0); + + if(mount.sound != null){ + mount.sound.update(bulletX, bulletY, false); + } + } + + //flip weapon shoot side for alternating weapons + boolean wasFlipped = mount.side; + if(otherSide != -1 && alternate && mount.side == flipSprite && mount.reload <= reload / 2f && lastReload > reload / 2f){ + unit.mounts[otherSide].side = !unit.mounts[otherSide].side; + mount.side = !mount.side; + } + + //shoot if applicable + if(mount.shoot && //must be shooting + can && //must be able to shoot + (!useAmmo || unit.ammo > 0 || !state.rules.unitAmmo || unit.team.rules().infiniteAmmo) && //check ammo + (!alternate || wasFlipped == flipSprite) && + mount.warmup >= minWarmup && //must be warmed up + unit.vel.len() >= minShootVelocity && //check velocity requirements + (mount.reload <= 0.0001f || (alwaysContinuous && mount.bullet == null)) && //reload has to be 0, or it has to be an always-continuous weapon + (alwaysShooting || Angles.within(rotate ? mount.rotation : unit.rotation + baseRotation, mount.targetRotation, shootCone)) //has to be within the cone + ){ + shoot(unit, mount, bulletX, bulletY, shootAngle); + + mount.reload = reload; + + if(useAmmo){ + unit.ammo--; + if(unit.ammo < 0) unit.ammo = 0; + } + } + } + } + ); + } + }; //TODO: campaign boss warden = new BossUnitType("warden"){{ health = 4500;