From 82a82ed70e3b3971344c26f3b6cdeccf00f13371 Mon Sep 17 00:00:00 2001 From: Allanis Date: Fri, 25 Apr 2014 20:33:02 +0100 Subject: [PATCH] [Add] New Outfit type (EMP weapons) [Add] New outfits. [Add] New effects. --- dat/outfit.xml | 34 ++++++++++ gfx/outfit/space/empgrenade.png | Bin 0 -> 10638 bytes gfx/outfit/store/empgrenade.png | Bin 0 -> 10854 bytes gfx/outfit/store/empgrenadelauncher.png | Bin 0 -> 17543 bytes gfx/spfx/empm.png | Bin 0 -> 33399 bytes gfx/spfx/emps.png | Bin 0 -> 11485 bytes scripts/ai/tpl/merchant.lua | 17 ++++- src/outfit.c | 62 +++++++++++++----- src/outfit.h | 14 ++++- src/pilot.c | 43 +++++++------ src/spfx.c | 2 + src/weapon.c | 80 +++++++++++++++++++++--- 12 files changed, 209 insertions(+), 43 deletions(-) create mode 100644 gfx/outfit/space/empgrenade.png create mode 100644 gfx/outfit/store/empgrenade.png create mode 100644 gfx/outfit/store/empgrenadelauncher.png create mode 100644 gfx/spfx/empm.png create mode 100644 gfx/spfx/emps.png diff --git a/dat/outfit.xml b/dat/outfit.xml index d960bf5..81ac7f0 100644 --- a/dat/outfit.xml +++ b/dat/outfit.xml @@ -555,6 +555,40 @@ 35 + + + 2 + 7 + 17 + 31000 + empgrenadelauncher + This launcher can fire EMP grenades in any direction using a unique internal guidance system. These are favored by Traders for escaping from pirates. + + + EMP Grenade + 2000 + + + + + 30 + 6 + 1 + 600 + empgrenade + This is a grenade that can be launched to unleash EMP blasts rendering most electronics in the area useless. Good for taking ships alive instead of killing them as the EMP blasts rarely destroy the ship instead leaving it intact with non-working electronics. + + + empgrenade + missile + EmpS + EmpM + 1.3 + 0 + 400 + 40 + + 1 diff --git a/gfx/outfit/space/empgrenade.png b/gfx/outfit/space/empgrenade.png new file mode 100644 index 0000000000000000000000000000000000000000..56005232687d85e6bfc7b8ff56193d571519e25f GIT binary patch literal 10638 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 RU@HIs002ovPDHLkV1oSGrrQ7j literal 0 HcmV?d00001 diff --git a/gfx/spfx/empm.png b/gfx/spfx/empm.png new file mode 100644 index 0000000000000000000000000000000000000000..57be2eae2f1174aa189e4e56192731c98c22f954 GIT binary patch literal 33399 zcma%?V{j#1xJKg>JChUJwryJz+cqaBwv$OFp3DRj+qP}nwr{@wx9Z;NYVGP>{bP4^ z_g>F>Bb61Ukl=CQ!N9kur=*LK0r?!N|bS5+xdu!;%%=sW`PGEuCZX*n=4fwk?%)O{=3;K_W^P98 zY3*i3EG46$tOY{G{<;XpL{3T^?DM}Rue~T43=A|QBQB!uwQ{Bp?WHleK+$~h%Xjx8 z2NmTy1eS#u4owsSBn$!N>FL?Hb72qqMmwjU&%p6=!dQ88BJf$p^B5)!5_NUx`SiDZ zxd=`IYh|l_G|;uEWYmA^X9~EEHhkN`?)*OwF9K6lc}@Bjuz?oC8A6|Jvu13q06?XG zigDpZz~_5lMRW6;^>t})nv}9=&zYE^fBiO1n2y^?2Y)O9lDpEZyBW(GJy_cOq@J9#Rew1{1F_8H*$Jc`B;~?{1i8F4NNP%MLUg95xic4{woAXar6EE@qtl z-9bY~!*F_^qx|_p9Lh?Ei#0{QEe8q)hJwY;yP0gal<3>WXv!arS^3ahu<;eQoMHIL;lE*2`cH+NkCh(~M| zuMaOcREkd$7Uu4CekB4@ar|$ByKBPagN32Hoak8@b504r*9sCoGIR$!|x#tr4l9KpDc)}R{@1`|S*v24**v6J~ zffk3*VIcE1wUouZZ$R$bF3VhkwlQY5haWFAm|Vn^T#aT!BdM9Wrs)koYsh{olP7j1 zbS01T+>CSCv?r^rRzBi3IIKs^PYT+4puqp~J!`$pY9}M*RTbp=Tv}4wWFC7LVwR5& zlZdW(_Zjc=e+AROz6}W)7-)!+OWpey-wr!6Rv*KRtFh~GK9eaR;P~M0?2UvZ?hYNG zU+a2Bwns8TSA&f}u51QUC-1FXc3^`vF?C)dTjc+I+snRe=X$-;GISTT?r+bjz< z^qX$GOO$eW@Xwd|`!_&kdHJciUHEqjtpYfDbGIC+=M~0iT?IsUxgAo(NvE=5c6{q~d;LuBzv+tjnhNWW2zF2B!}9nO)r~_~#U%Oi+Y?^Ph(IjT zR+yah2K?TK`=b$TTtcJFqi}aU2kvP>)b+^7S2jb^qHrdykC!Mzfae5$ZLdkDPT`A* zB$UWpsSmSsfuFD@IR1Hmvqul5&HS& zX!1P>_`f#aU}{Es%y-P6qNsAq@M}#6$2(B2*Aqff1cA9iRtXw{`O?OiqjxzbB@5%4 zH}{!7d(sA-Jg!;%I=~ktIdVgmr4XIQ#vUh%Y2H}GYMM0L~9Qazks z-h)4$z=z1o7mud7UIl%96XgrtkZ1YA%wqH&7nEFLbz}6-2@6=le%cU_`ru?G!$khE zp&F7(O_w7J_G*l?+spHQTn``HJGy7;ERm`md~&e&0@l6=0t;6HO5#=^7=O7L4)-LJ6m&WAL zv?YzQi=xMn-Q%r@Mbr-*55~^o(~>~Oi;CgZ8&1HY%OhWmR^W9Z`Su8Jo@`^^&VWpa zGlyoI<9l%u+<={g#33_8fjJ6R8za~kTx@jTbVrC=5RLFqYBIM_K9sYw$oeY(%dP!V zB8{WSXNCRLm~KvRUHzr&LN=T0d74Qq|2pDli9RVbX?4&kf)|~fy^{xF>+z06--u$) zw2W%AX@a@~GWpdU52j(C7wuV!*hx*^|mQ1s9BX95_g>3REWw}0z1&?k?69BrbEl%q~NnnTW31thLjGz zrwrNyaJo$TL4alx^AzMNmpR(edWR}T*1u}h&2BEbwLa_o7y;h|iq}2mBHL_+fj*)A7Od8ywwC(}N39By8+>s&)SQ7p> zcb7RMh4=1e~rRDk}NK8sfM!$NA-R~LnI$?+3h z3i z_sN!6Xf+6(ENoS7XVkZ|#ROWa!hahY2>f$ai4iRw3DJw|BfAIV*yjKdR47Gsxc$>}aFBl1!u#fTl7k{7jxJZ| zb{f@`MIDrGpejQSk9laffAPV?)Y*6q7YpPsGH%*C3$?YU&#Bz*{@4hRs0oFd} zoMs~2V)R8D)N z#xJ~Q5fz7nhYwOob!F&1n6JC6;bSc!7%8-_o!(=12eETs-XBeg*brO7lcK|s`?qyF z;}DG89`5Zk%R{JoyHCdSOZRYpO1oT>vLkQ*mHe5K4`o6DPoav$@aAfi{W{6-jV=w( z6Zhx$!GUdO9IoYZghD2mIRV^TW0welN)oWk$3&a-nxtAEeurN* z209Ef+qUs60$SAs%3l>D@y)I8eh-_9D8EoF~7L$@PbVf8$-^*JmMy)WTEfpS6%2CvhH_cd8MCk03@D8l>DS5*-XvK3l6(?pS;M@ znqtzwkg^6tI3$B0aay{fV4@NI@~dUZb<@RmuZUH|xJXFwcX8EJncs81C5Rt7tf{8V zJ1F_;6_?b}CQdik%{hrGr(!-}C;1OB{Te)8MMwH3FDKc%C&UGMy9-zg@dHlyf3K(8 zLvD0eT_72A2ex)xg3V$iO^I(3xn*`yvy@UAg#WPuNGTV9V(@UH2}!^>HfTvDmYRF3 z1{ArAdE2o8EyHqPz5VJC$D}|wiU^!U;E)O2hy-=0*8m-dFvEm#pf7spw3fJ$AThBl zm!4r;bta=;*DgHJ0@oLvY?lxf+w$G#d8k~MZt#Lf{1z8#g$#xgwS@^uZ11dNSbf46 zO25B%NV|t$#P`uraJhCYDiR|xMVxRqEaT4jbYWh8sr9D>0G%Q!(Cm{{d)EYB7=|cP z9X(eHt=-vQ7b`G_BbTsD}Cfo+Nx-_zxzT63 zdxK8ILJ&%j!-8SOcON=^z0ay%BPwBywwhme^VI9$H@SD6G=Iq8u0CJ9%CmS|ko#Gt z1aAxl0#p7e*#Y|!xTtEv}y+Ohcgog^rm|0=~`yktn|W z>-{t&R9!HV4?eL+$|FhG4bI9fBy_RB5O>&`Y~n@ZLs_?u8eIL ze%ImYK$}Qpq?Me+J8l*3@W|Ak9D(v-nInjY1iRdC1SZU!;@;VbQh|PEDC2IQXMDqu zx=e&V{2F0_cI36Ft~0?DMGnV-Xr6^8M#(8YcSA`}T14rkY-mH3_X-j`kq`N@%TL9< zyYYA_1XEy2i1m;*^W_;b;2P+!aY;c7evzos^61bBs!jB&Kr}VdO_4l*?l$~sdzy#w zr1kSE&t7H36hl-<1aT9J)dKq~Q8g$NL$f@YBeYo5E>%JF6;|wImFvgHE)Tm;5SwgT z8B5BsQ-g3(83@#y{O@~j{6yQ2IyS%*{52Zd0&wg8Vkk?ZCq8gkRKU($w~;m29j(K2g54L8OFGmt%~dj1UAThJZ+Q ziA&n+&lYGb5y2U%2uTw4_6d6}ya?Ww$nkh|Ni>i(z4=%|Fl6d0?6C8AP+deVNL%aN zKhJoVUqAFUcxi|`v4-i#akVyTZbp2Q+iUo->bg8nYehz%J;=>E68-4;!wLdb@?mtA zR@CT^_Lgci6n(*C2sOU*Eu?Fk-tY~)e*9?7YTMZ$jcM%s-IT_yI%Q1}k2kdV4^b;c zQ<&sE+hxE$jHoVg5jXkvF~P8b)5F7FC3QWUYI`2u1yCUL%7?~!`~PHb|0kS#atAOv z$$}KW^3U8X1B5JT5`Tgztyj2cIG0)6^0BT+0yVIE>ZS}p~A!hCF4L{nsTck4bV%^b94iD4yA_>pZq)Lu{<*L@1L z+jz9G84!Hkn|H5)!h+Zo#3v?+=m{Xf^UCf@Kia{=f+mY~1!R&0ti93q8gaMRdYYM8 z4i!%UV+$7A@6dF5?cx4e^2Bt30{?Vve5WL;Up=OWsyqq`M zccSz*uq_BUJO*`w>}uUZ407ecCYAf(pm2;@e~RN(lhvXZ%WyhOLY1rSvoDEG-?Vu<-Kr z$<%AT;T6gwvSF6{MRDUt-q+V_kN9L#JMS!7<#dcU8fF^|i7@3A)m-=@@lU4b73?iHsoB2(BzFdCFwLmqKYv4OBPF?{9Jo&zTf^H$Zl z7=KV)*PQNiK!W{b=j)G7Q6~?NDs4p?o(QZ)=u%-XS?}kHXhcY|UA&BpXQfS)3IaX# ztJ9~Dq9Q|%;@Dl5rXgWb=R<ER$VFi;akQlK*MZJagur+6626Fqpnc7=O#slcuXui)+0 zVkb}^g7iGHq3)huj}8vezA-878})TP37~Zn9Sf#V4VmgU`4&-+-I2Ag;HULcl;vi` zB+<-_#~Q)n&9H`#z>yu7U_Y}aFV;6KSc<-MuLPpMDMXRf^e`>6?J3kTMq_q5_ao-Y zQ{VGAAK?+T`K>nmAN3t~KROaw?dP9*QJP+;4mlVCcINkfJ4bheqK2Q##kzPlx^%)j z-dv7mq=+OAo;5p&#_pC@Pp*AYYQoEzyQYkS%YXhvcm~UDdCX=hu)co2UDi-5+K5oR z`~GeoS!wqDEJOVm7=#iQxVv?%XOWgAHxvs(i%jTT@&+0IX8TuaE?d3;FU5kYU+5M& z2kezq=l!Hl=%T6bI7V;YKv1VJdc|vgh^?%(Jt%|fM3I{?r`k%wN0yN`+wX>4tGPKY zsvNzs0tAq^Q&}*qu14=YZRvGWZsRQ%I0k%5lt%P;sU3(Tyn-(}&9iay;IMc*iN^nK zxGfGft7Xvtpzp5y==U;|1M{gdjsZr2Bp-VN&_hw3uR``U+u08i7H1 zIE4x;uupZ{nrH+H$+PI2?!MNIfLBe`bqMfcN{xem&c5-;22WRNsivM6Amy!Ta4n?n zH^MFX8sxPDh=%`2z24N1ZV2X)&67(yqH6QgJOA7to-ev#GPJlXXmiPdB`KF_)Yb0a z1AI|{?8#q|$HiDl4(Is-7VxKvHB{?c6N96Fx&cc7FEU{pFEJ$m?VE-XGVG8)87nL9 z7x0x*CQ{>ey51?pS~37j;=Nj)Nmqpl6WtN%GYK6zO8(6ul^Xy3aREhcl2zXB5!AbV zZYH~EH6m(FQN1fIGGO20g=S9Lm$rzoOT8`7Y?_iBeTF56Tj&Dyetd-F=r7V$j5QVxGv_{dUIcHg=1WW7$P`x=aRD&6AMo#vU9i zvBUhR$Gu>vDApGYFcN;Lu$VtY0f3UHTUbz&K|pwVPx@pNJlZ&qvi|^X)TFJ|)Vk== zw4^JPFrDOKaa&p{QwLmtZa$`+FE2{-3di@7+tDpqkpwUC^Jb~u-x7-!1Bt#WR_)2o zCBi8TX*liM{>Fi+yt#920lK-vW$B(;D!ab~Fe#HNhvx~eWy_V|_p?Pif+5LbYb6eN zN~)Tl5Awkh6@=R=1x$?oqU{|SwJ-8MQL!`ffByFLQp8a?0&{{=`;Ou3kOk`kyHD0= zC&NU<7k9&n&<9_#Mg!%96CN4+=h4s@nOw3tGlZB1)el1qTO7jy>g6jkyU&wyl4Z;S z^iW2@uF54WmSl^X*&I4C zgOh$U#z9!6%A45R2E`G(vA;)q{ng!+p&~2;)*pH)`^i9WA>t)l=>=jg{mG=*U7Z+n z@L67}UMRaLAN=dmK7cx1I~X|c+hTzNq)aLq`{D>cWBDL!bWAwqWWs|{p`K$;-8EGd zO>nMpRsX_aW*fCyKBr*djX5-{VcO)Tl#N*5hN{+h?j`K+of<(wT{39lw{0yEG(O)i z!u?u(R*Dq*HAxJsOuo=!g}D8f)?Szs^UvoQTRe}qlqY07OXM-x_jY`#8zlXQr(HH= zzXu$=rJ?&NP{T7OE&@ghz+C2k3rHIfuq0*=40|U7NM3V9rLktJ}O{dOze$^xG zSg<e+I2=tSSfPLF)Ps3Sz9F`ZUdk~@L!+5b#$e_ zy(QW*25jx&EM^n(-V>Yc%47jbk<1Hc;8uT9|N9EN04L*(tL&ucqx)jtI<9nNkIM+C zxs;P^LW7A$Jx|d^*kvj&KJS%Q*b-oMmpsfDNQ&bpbJuPH`)E>UZ#HU z{l1PC2x5B`Zr=Z*ZNKk6=u<6A{mw<hw*{8=KhU;mbJDV|Vt|HxiYj#I-w=zt7?H_; zuEB$hHhL|rjE-BVXIv)U)V{XsodVPd?2c1GjZlR&%nAo40o0%)FZ!uMSEs=p^TTK!%Qe};B@V%_lx+5g# z+6k4LDPrMU0#!_n!8fx$3crYcEqNj$6HMuR@o)(J!VpqmWKDY{XY+~?n46>=y~$ly zdRrS_h=dIUoS1VQe5@laD6k_ie0$vnR}9^jDkXl&w^Q93S=1_o8BV!+9&F{^7kYuW zsg=wd8W5Co{lTV~)f5XHCLB>&s`4;Y*0Z)ZF&;Im?-mGjflU^u^V;$_b0y!%rg z)6Ph){nR@=e7J*?8z1M^iTtXzWx`~rt?V%6Qb%;(+arQW0EtY6lj&k8-k}GYyLS0) zOLDRTD-)`eCo{KkKRyM}+w4y}=v_#Dbk5LV{^iKZl^5xef-lt>Qp{(ais_;FU1olG zT}Yv1aCP}>6JrSMne6SuLrWA%@y_GGw^;!! zyqdy`YinOw1Y$s2J9%dN6dk!hJgyM&x5yQ^v0LJB3)^n3@3^aEhSyvBqq)XQ7O$)F z5K%!UqquCeg-p|YFjTs~_}l(M@h0W^>ejaDkuN74HjTGqOtGcn`jgJSa8TU=1#$M7 z$*Yvp#6(LJAVw?vVOl&L`?|PR$T<-hW^3RW9xhEx-BWRR(SNCHYOq}oy+gnMEK8o^ ztshv1&s|mEjQ_AOv!1U0!_v~SapoJ&=zH@lSn!Asz1DM3;!Xk$Q{NeV-$xe2hwC)Y_`aX$CBcrB`FxY& zmYgw?GqApt4()-ovsma?55wUZ)Qvze^I;(U`J5#Pyf(c90pa~rM@wkRQhdX2ur#rffW z6&|Q;;l*9yV{vWqZTvBZWO$e>T%8mLade2oF<`akCc86c0?t3u?z&I+={F}V%9oqq zSJmY^!E18m1)go^1?2+CP8{~zWE0gTM&}dlIwCwLxs-ob#*YvzR9L=mp?Ke?i@t&o zWeaCxv=4GOW>nH{#f_{k2mv7eckadVMItSh-fqba1zlVj{*1uBlKc=}LgcjQ9$eB_ z0DrGVelIw`nNVI*9&TB=6h;r`kCX*|4JRY_XV%Kr2?eSuQ!!ekhPpL%%T94(@qcnq zCTxhc!OKy>4>pFmjAH@RLXzDW#Jca;S@9^e1PRa_wwps)qU23h@4wCn4zsndh#vz& z8}m9pqNKo%&igC5#suBrt63o2x}fwJwT*ub6pa|&N$f~eILE^HfzU@a9Q3c>_5NN} zPvv;siG_)9UcF$W>ND9$eHQopD(s)sbGerrfp!}pnN5fN%i!}|R}uKS@Dve^OL9+Y zYv{F|D1-y^zP+f1d`8d)Z9<{f_tmHUa0@pTayLkz4hWPQ8f<`o@7Hrb+48p9lmQ?U z$00NqVwA@E)u9m$3#Lwxne{9@cB?LS`O>Eek?(tf}>0uqh0#o zFi{CUL$#MgC|y;p3Q+Sz-+s?E(yhQiR>cLP5n8_2-FkR>a5UT zrL>yzjXBiwWnvj?+wEj75g42_F-0kXS5~i}WNAsl{U#)={%c+`T4wKkQ>C&oREFR;xZ|cL}&R}B*YV#HOtQ6T4fgzev$ox7cc0@~OyX?)%U+;jQGWh*D z5cCIyv8=}VXg{dpSRyb#FWZ`y8!i~zMcB$pl+=FaA^rzJ>oM8EmM`Ki)~|I01MJQC zsuF~s_9=_8JOxV&U17_Q8>*xf7|jHK9AMnb`R=i z(LdP-h0N2bhWk5PbRd?$u{RC5gR1|!m$XNMrwqB7eaORKH zJu~~j1ViVL-E>=5=@=y9dqD*KC1Ed1z-S3@RgVK1nn&s(+`sS})h`LDg7fMt{o7|1Gqi&isweX4v%GBxWv> zmV={1ibkY^3=M?n-KCw&foqCjzqLCC9lY>tYuqc$&tLlLwz^scK?`a9+M?0cR%*i+ zaEfJHHLz@bEIY#Q+#9f)VK^mr;GQ) z@N&Ng4$I3W#35?Pwx8DeXu3N=2KOmbFbFuVUDkP_7ygzE!X`@j*RsEd*<3z3kO{k! zJ^b!E&nqF!@9jbYhSU|)k|;8pYVN1PGE>aUn3(4jt7yG~!VVn+C#uBNdCEp?N2f^^ z<%|+BFsE@Ts{7KuQ?x`*-2iZ`my2Wl8aBGhzDQ@nc2QV-A3tV!RfZE+1M)d$kbt^X zTk>#xHT9@A;l%14#CL2rpm-n)G*3Wd@|jhGE@V#Y@2Kc$8)Xo!*WA~8|$GO|qn z+U&G|neGku(Bk|tXflI>#u$#FNTnWkIJKARqTNTKM^C{sJ;Jr~P}zK;cMFS-4-Hz# z{7u?En}&!Zl{y-;*ix3rIXPO54}_$fNsyPUh%Gn&g^({zptAzl94(^~uO-i#2ilz)sRM$eB99af~`|{3(&z$dw2SrPTC}G!hmb)?F_gQA|nVI=zmGC1JTT$XyX8 z0?@Fs9uTX`=hw73(KW*A5cN^jyKSlx^P-xVC>bJ z;p;%>xxne}UeOgqK-nh+cn~n-{9JREMv~&Nq z5FZPJar2d|)cnoAm1;ev@=M1s-=@Fg+QQ-nu=(K``#=5Voc@{l%;94CvP0KHsIN)nytIo@d7Z?!bg3BC*(LMGh~P*au*&?bTrj{twodE;@yQ$oHp` ztu5pJyl!K7w)Kzq{>gAFW9MSqS>oV?-z0A`4nXkvEvFJ_anQ}wafG>#1z&-PTZM=x zO^-X1HDx-r)ztQZWD}fxo9AtLky-sYJNd_@zC{cQG8JxUvJ0rSQfE^?-M=`=ODb;Z z@#s{q92wE4x||+cX>f(Cq;M*23;FHw7o6{-NgMrvwwQ>C%gekm4RKdnJ~b?&ZP80tV8E&h8bk04m{`gua~}I#Z*i@RMYZHs9x~S46dyHlNt;;ngCt zeOHv2_}r%R@MPOMxM(ow3=|85#uem?=sQqA`Pkz9+)AM=&6%etF;Rb2yY6{%n_4o!nLyN;x zE(U^S4uu`xRy7&XuYGy>b|iT0F6*~U-ziCzZ6wlcwT=Tp`@p5J>pvy!Qn3zPyHDrB zs=39~@~~}(atm@H?x*vs2E-{wY0NNV!L@K_i1li5*|dZ;b`s}v!Qr}6VD4LX^jEl# znJ!ONsiat0Qt94fiYJzX`8}dy9Z}P|mr=(CTAPXRS?Wu3ZjacAkRK%(fX+9cNj${e z6YNYQbH2csZ5ng`mq~tS^kUUHk5RPO+_{Cedm=!>OvBif5`1vv0X3 z=^)qKH}1}Wb!)22xc~|=PJ(fwDx;F%OhY4|=Ot&cZvszSOR?CDUQm?eOWy@~iDk&i z73V2fsVjVX+IA7y0!9IyW&SaFB|P!|XM`yR)0Sr!rf>pbh)7Bdr9ho)SH zZAS!YNh@f*%fiL&TYH}$jX6*$>YOGJ%g!|u##`q7Syorb#{^<*%hScG?*EzZy=p!` z-TSPT@v;Qnw4^eiv@0krM=a@jnyl+h34 z{<0Ui!PE&ueMj|3$Wo4x13XjOwY$*}A3Q7p9sR@0Zo9S7*|KOTy(_--?upM~W~xr% zi9Cm5`F%|I3KP`d!L2|w)or*^st_;vOw0T`w<Jg02nxT6QrN_XFJ zoZ_t7r6>#igX4zNq(rpay=@d(2FfvcCGiRB@ThEHn4#40)n{W^=rL=^Jj7u zW4+x0ax6<3P|sL61Q;o2Vh-Q)}3L@ zz985>mn-CMTrn>@!ouC)Tj(mRGoPK!A;G08t58H@NVH#zI2ajz=!_v?Sn>@kE5Gc`Fazj%8Cz!Lv0EyI1!*WwldF3CfcnDN0_)>;d z32}Eo&O^$YHHqDUh4e@OnBvho94s|#3r$5sGo~ii@3Y^+5l2JCqeXYOjNUmw%K3nK zGIJGjRFT zx*o{S^5E^RNPUk>r+oUv1T%1^JNWs!O3E+YAUl`j!-88>6*_NOg%!;Grn2wVtJ}&f(DyKNa18k6Ij8LflMLCOGLqkOT zVCxnL<3}#a#LieKQtCVokADDGIjI=QPx??p(T7XRA}3fual)shU)cph5#PX^avzCy zJ(^OWLDn@`95+3*F_h+bTO3M+fjgeoUt!L^bgv)}p?sKh1!!9^pKm*f7$@nrnza^a zd8L%^7^RdpbabiOfzj%p?nmUappFv!{(?84e2`ZnY95r6B29h3F=bDK4yfAk7rA-f1SfpDcE`gc@t3k)JxD^Yh9`dHd!2!C_--^YXP+u ztF*n*wXD7&gAaBFwQ<0VZkPICgdQ>q6@voT@6p{f-pncy_&eG&`&S*}`Ecs779~my zt_{uOy34b6Y|m(Sbx*D9kh4CTUsDtMYNtCt;-aX;LBsp#e_01d2F#=VMSkTA_!^9h zfj)~A=&;d!!&t=irZS&rXI(Vs1U{j$)%tSusiVp8nVGlJ{22x;4sFY1^s=;`@X!ES z6?iULb^0`FxGYYZdO;ea=w4`b8^77EMOjY0aHZjd`c+@{vNhz%agNX;SzFHD(;&O% zGV@u=_T|}IN6n-mgp@pGUy5UV6PvG0fz*jRlG>JJzwsVe^K|S9GtvGjqD$kn8&qql zLM!Y#e9r{AEMuaLpEWB*%MozQ8mpErE+VtTZ)B(5(v{UCGP?NPHd=2Ku+W#v728Q2 zq7g_3WTB2>ae=ox`ol^_`JWdHqw9g!4FvSxpZ(O~F(3H)sv4NGJ)%>j04z&6B-5;8 zw*Qi|N5SlpD+h)8P%Mr3fNm@m$Lp;120DtH0^9Jy5GV4Sre-**n<0Ol6y^^~eXUtWVtgDu zRCS!P@Gi%WQ?;F;2UI@LGcVDmOs77*OpgdK2JyV?@p1hLD?wuE1;m4ct$$U;%d$F zaorIH0{djRtrCo(`%_U)*IkaDC5k?cl)r7atWjtk-(P>#p`8+1re~(<3~eH$JCfjg z)}gnMsa>29<+glPi@+(6UgHhI$810XkMC-#O$Y5;?i{A`I9AD2|DEXEIF!?g0B}P{ z_AWwq{X`sKo{iq<5#v9odADJ-UopAWjQTqE&_P$@CiJ2S09xynDyDY77Z=ORF_@sY ztYU+sAZj6W(Brj{r~1hoE9`gaWaSAu$D zES+PW(=jG(rFcdUPu5=?4lfsmHDAaN0_ukXGjP36cDg`5||liLpzc z3!v;|8!Lzji}qH;oy(z)RYMn;9Y$>{wPIFUVtb!{{w9&CJeu3-&Qvs0AJabn2F%Tw zu^pR>Qt`dKhhwq{G!0f1CX%L30Zn1dLr)FWq~bMJL@c984DKUYX-kU&6}eEzN7rS; zP&`p0qQzQt3tf;03-fyW49JsopFzfO<>q*1J4=RYJQj;%1_qov6~WRI%CHPuX~iuj zcMbMmC6W(1?{}ty4$vXp=t<1PAv3WfZVpS*%ok`(i+|>Lyj^n4$To@>tK3fk<3F~B z!D}b^PYBb~;ico3&^F4-lTev{2c}XQOBa6CKMh;__MaW1YWEz?sm(}DE_6~%a3Fz` zW6EW>+-h@G@(FVrwIa)XM0@0S)6 zpdTyMDEz2JyZu2`!q&I|`&+f#ps2y+bK9zn8nzV+p{gxx#w>L#Em3 z!b4tNrb)}?lMpchC*7~=%Ap-gbef@IapF!o&v9(X6zsA&RvywG^YUo$;HHXt^ zP~NKAGiXOGD4597<+EL=H!N~@Bc+oYANdUt1WPkE*co1=sSbKcZf&o%-QR;!r&8={ z-JHX))Dr4p9u(>g&e%-PI_c+o`|T1FR@vh$VP9Ly>ARE6#m^+C_+=_uGa7%$6pCt7yteGJc$vnjoOh;>Ix^@So%9jZS>O6G#U9`ZUa7tIQcee<93py<%4ZmhSSx>)0?rH zQOa4FIb)m=@rSNJ&<@6zV7fA8+BH+}5WwQRa7Hn1R5L8Bh2WFc^WAjQs{I!bNN$qA z6)}m&`PXx_0TR60`&o~+3JVS{1U7c5f~iirr>Yu>Ns@?~TES?!!0nGKb^@ElCiBxGe@p;|2$UKxiih4V>Li>ycfJ+CH z3zmxz4~kaOd-;L_?WQjA(k2WfHlcPS*>u1!XYeq_Yrz8P&6!}?z^){Ul4r|4l1c>8 zgybnsbO%hIIbs^X#Qj;eOh$LSe@INJHOZ285EKj=Kt*LpCP6-hbS z;_aHg6RCntjxH1{d`QntSs=4JFBQa)FUGFEU1$X#Z2mz0OOPpSRb#zjye#phtiEvO zF;8HT;3P7M*~ZX@-_%qQ8l%xsxgbU)mi)$;`%mlqoidY#wkF$;t7Zch$$VBQ#O;Y(NwLzS zW)rz>JUp;HAES+de@S9F!B@n;G+awgtX_<+(lk0yvJBR2>zPMe-wr!l)>Dcbr zwv&!++eyc^opkJuZQJPBy5~Q+qr2|<)^`RqJd;{gwfFmb-e*6OHKWT^p3RTTOzR

%HFpDXXBwLQcL9;VEY$Sx1S7ITBAg*{rHdlMBpn#H!w1E!^dC}t*LEo zDk$&Alqbaf(S@ad6?#F*sZC>XpGN*Gj*-GCM?jG5>$k&wHX!xb>Q=bY5Vzm2wlSpj z3L{v+%j;jL{K0+iePN_;w?ji<+8D23HuiTZUDYmfK4;E+Ab*z_q-=DzwW%B@z)?}v z=WD&ex^pxXop;sFMpDzv&Zlz#qn#bH~ow4pFiFdrM0g^U^*F1@Q)`< zT&KfC4C@()d?6gGaYQ*6@b2~3$NLj!Dw4*sfbw+XKpY6N1+<{_n!17}h*|V0)WiCB zvWc*1Y|Z}5N?iCo>0%dhwd3V5wz#GgAy`R)K8%DkgRuSib&6LZP!ep$9OZ*NSW(ga zIA)9)GupI>;(ev20hRON#u_(@r zVpnIUJ}q0~_A%lHZn=7z1PazSlsYaZKy7oTI8^F9{>b(fTvnG#WruDH4X72`r&2%$*~LPq6d6rAlQOpFpdUJPZDX>3g&}B z>)0t;t~5qJxTQ=9@@Oi6;N!o}*-&c0{f(0%pu5OGN>#!Y*seh)5JQ`U8tsc?kRNvi zNJ9-jowfjb`5At@P4>Wn?^-AnwYorI7g~uly$LGVZJ%SC`(+hd;3zqO#c}gEx-PUV z<+md(v2~C~YMOzdJy9v^EGrml01g2gJId&HJ?BW-QQ~fhYX{$fCV0o! z)#F$?M%z2QDGy$boD4qK*D2|h{dXrIEB&U^v z0C-Wbb`7plL?v&)#yIb^nDJdg`d-qr!%BldCtBH=e4n~|RN^zDS$Mt!DXA~AkeM_i%o|h8x54ZbxG(|z5_)6@!VsC>jEdE9~B8`Qg-#L`^4OMQ} zuU6ze%MO}9H_!I$r(^F0?atF{f?{7F<6X(vvQf95NhEhqM$~cI$@34TN_{eC>tsdb zBW#%LF%F&9t96V^ppET8E184dUb#fgLXIEsGSE(ImHuXH7Xn+XU@3useDfWG?}RQr z1Sib*P(b*TB_)B7ALGFaR(A6OzCA<^C^`YcF#fnXS_>KrYNfF0zFx>)RfzLHv$YORb&ujX5an zL)Zr*spf*~0`F36U9vze41!{_3a4|HW5%$mFCG|&Pc6-Bf zFhgsPKig&jl*?rvt9%}u72_=Fqu5YKS8T_#T?2wGWg9SAEj$0c=jM!rD%f3h z9YriDN*J=0-Vh0K1ZaBAoWq9C@OVj-E&OS9YxVboh17R=R(SY)D83^0IXXl)5Sr%1 z#8qCG6`2U-abKsZx}Oj_Jw#8`W4F7vNn@t(Kfcq7v2pM*nwvFK=#JoOGvCkn@mUxJ zz56BXxi@$7g>8n{3~-zJC)n(`x8{sl^v8~T+JcuL@mGimBFRN0WZ_LpW@-303F%fi zg34^YF)vAX2%b*3_B%*@MA8->Fq6F}hp?Ad4{uY1*bb$H85a)&u2&9<{acLoU? zCF0zINN}zBr63#_-mVQ=9SjRH{NBEdcvbct-fl4=Y*=kV{+^WWy7&pj-{VWYN-_l3 z73YLaTq0PFWyr!VIhcG8=Wv0cy+D)Ga%D_ZyUrfBHC3(`cb(lCmPOvF$LMl{z2BOt zy4}_#_n-#8foMbxhd^KEPfZ77lKuWH_!%CHGI8!biUGJlg3C$ zQS^7z(E9KGyWcl_U1OKXg43xe@_yjnkrd88L57lEJgM9Jju}p~p4;k|R#KoDIj3F6 zGk%z7cF4~m!*A$8^o<_uIACof)BB_I8rI9R##sWYDIu`OpP=dWcXXUS=^n6$#1d9`8v~yx46hI;`Hm$A@~AD6zmo z)bH@QJch^q!S^@rF!oAc(D1P1M86Nx^(ivqGP^;vx-e$vX*kPU3J}D?fddy_Z9lhb zMyD<~&OC#rg`M+t^(>zeBJ)JS*HZ1%&;R}I$uMWQ$&2s-9z)#z?-hI3F|RcSQ9{Ql zO&at{G?|Z|zKC(nA3Da%utsATGkzIiqSSI0+*(fnok z+5UK@Z_x|eDnQvhZZ2y4w2?afmFZs_^Q*CwEk-8m(}peaVA|OsHIZBW+J|^=c@nGNNw`=?mm+_VqX5zi`iRlzoKtCz>3ucagcH;P zZv^+zF9PV1$+T~IBgh(k#BKE$M;;t1szm(m1E=tqeizX@LG#Vj=sJb<+v%gTcY#+^ z;K;Z)xAmkbo>_3!yitoYRt%&L`Xd4qxFjcO9Vv1gr&O^JcaJ$tkr;A1}4(I!n zO!I01SFx}WXKb~=9cixqH^v~JIj(C^1AY2Q=asnZvd;-&maf1As0nLtPq$>6PP*bzewa%mMzSOY-#C)C-SqUPh?r&43}*&!+=MXa8cYL!amfhZ< z)btB0Wt%4*N`RI5J&}E<0Ur}X9;oGOzhI*`Ic}detFhPnbYeU7 znT;qIF=d&RBIZ~0LF^FjS*&eRgVcP)Wa2gND3(E>F{ceBSw+L*-XZp1o>0hb-w+@i z@TecjQ&tWK)HZK-K&3@X&!+kP&s7%Meih@&%tB3f0bZ~7Ri(8R#ojE?8% zonhM!hqH%2mxkQN_UYmN7C14aklj?}rd({3sa#2oXh4xuHX#C0dx$hpOjSKhT0DE2 z%G}q_;Mz7u?p!T$LPVV)r7DvX-2PpS?jDS5vb)Jfr|P(k>}k)&2);uV1d)T&d8Niw5n@VOjT??#AEh?avt28~4#Tuf8xF|KesbFC3N*a2Dfr&tJ$t#qEgTv$>dcWW8yxX7#PPt4<7Ylf{2K}`4(nmNXQc*}hmoTqmN87qWncy~illHR zSmHIn&jf4=fA%gs`+owft6zU`&4D-UBTAFd)EV|QHa4}PHroSvyq-FtvR@Fwm^pNq zF2iHPrN%@maXJGByGWsOnx;|r1V_)xK_17@LC!M4W~&2g2rI?bJA*L!XP4e}cNz|q zE#m43kW%)laJ%ad&K^2YjSMwLkV&iBH0kpedy35m!y+67PVtPhivsafy}s!))+t3u zk^n_bZybGXhV`3+y$w((eA-h#iG5XTt-lc%u#_6^mq+)kg(-y2yxHXoyjE(Lpwd>g zyG>+cm&FJoxVy^wDSLAB2WY`+I94XefgOb|++?9FEdB?S257K*jURH8yLDQLFEaT}!!#_l z?KWsKaSY?<@_<|_PEBwYzPm&ij%5iA$e~eymmxJo5#+7Y7|+RQV}3{vn@pxVAN%!T z-ej|{0o%Po(!>+0*@4M}{B}?N9)P&r48F}>$OTbC!tN>F>j&uc@A-KYrkKxQY)6Od zWm6Xg9FW)M<5}Zw6icKULUZWtRMCT2Os|rb~yq;MJe{Zvaq$3BM{OPSH=oLL#8jtu7aDT95{EO z%jnpq?(!-~RuGBQy+Wf=;SLQLf=B;~6fpx^*T%#_F(3X?5S*&aWc@qG#@^hGl@L1u zir8FxDD++)Nv(3qci;$GVh#OWKH1+CUiXrY%l>>MIBeVXq2plu7sbQeM^JMgWNh8e z{OS-K8bl|Y-seU*&W0GQ9?ck~U9;Ai`esJ7konCLI5R`4tr*+_k1mVZ`aor~yYLp2 z-Tc~9(8;w(->cI10j8rEh+k$^G5?h!Hzb%{wd>}J+M}k%*2b$bs`}=DrZmVg4#~Vt zD?4FKd|4tZ^3C9TN!RN?ce%r%Gya{2er~F?P~|_EydNrB{fnF2#fJX#Jn3z6`U zKY>*O{MQA}S5y!RX39CA&^IV44LNC`e}rSfq?faZzsAnEoYzR3AD)T>Xk=aoDK2;i zyz%e5QUAi}%0A5qVTW1W#f=*kuy1w}cJf&!R2JyDSdWZ#ZdnrqDTPZGtHIsZYjmc5 z<^t(Q6|E@QBBl}q(7#1ewVhbg0fUxbk;ML&nOk+lX)*|`wm0kAW92Opy=~RwE%BI$ zd{1(+(?h;$2XO)d##2?q^j&F2v?GMx!+)7bFIAlHb8@&(vDRbW6Z`IC^)!Ng6@~v&;-=qM?m}2 zjJOBHOEo7K@3+l{ZN`qAU9NKNZA4K_uu~Co38or%C`~ibE!Fd6L+uylh3j$of1rf0 z3EcTMN14?&m9ZXD&j_b-#y?d6Gi)MULb5PlwL8L0^aLSS2+qML z_tHWs1NZ%kfr54dC};pe3hq*PlVBs!>y9W+RS?V=C7M(Um*uQ2z?Biyu{}8KImhFJ zbY}Mf426NWtvG(jKSK8a4^c)2z*9}eiGAi`Q$QFMJxG}@IwgGu4z%?wLrOq7X3JnF z1mh6s{w0~N&3Rb$KOqF~>9ztu+ zzR)GD`{Y z8_~r6%u4GPuR@50&-IwtJv>->il=l?))YK=aRhh@t@vwjHV>$b0#XwcBXH33xo5jc zghMCU(0r!_N`A`yTSFhy|4aT){BDZ3y3MSwdPIQd7I#oJcE?}2c3$uATiJZZ)NW^3 zA;EVF+WupY-mA7Ztk|IgLjS8&A&rZ^GzFD{D2~O`rNCca+fl2T1kmuQ+%Y{m z`W)_#q*E!-wo<4m-sjQ(FgTD{0h5Zb05F(WB$5#Hyhc+G@RMwTnjhYtpWeulNSYK& z9jK-ypbeM+w57NFuB84Ad9#$64Lhe;h7_q-0TS-Px+Ys&(*;-x6?`e#{QI9HC4B|? zb}$7Ahr1MhCORlriK@Y1O?YHVfiGGnFidizc^ww(|LoJ(!u^c1efOJa4C*KQiEoKc z#f5)Iy+EQ2zKuYQU}Kp-Ww1w9T{c1PP83j(s0Nc#-0_4`sV|-^PU^FIecD_jXFGq1 z2!H?Xe3RqKFT=;VN_f0>%0VjnPeGjHOGdsyiT|0XD;6jQDH`YyG<9b! z6h~y`B2Q@NG(m81sK&MOqi`oPMqpw_uI+*s3L$Wmi-~uHnIyUMX$IX=zG9=eztvgy zc|W1eX%}*b@nBFdM3FjXhc8gHPl`Gw#v0mxx?TfIOtH9V{%u=iGf$$?d)Fd>I!NSl zf8B%%7(Si<1;b#4Hz)&?z6wHLd)+yQwM(TuQLwP@F692FY{9^ThR#nrve1e%V&)~; z11^1S*Lv**NJzcB)>1;j&2zk|*ef)M4gCNVEirH>%oCw5Q1le308E0K!v(pDTRD|8 zFlPtYu_ML3nF^d1*NYEy!H)p0bWz9xeK~+K4v3P{W;hnm9&iLyy4(sY&($Xq1)lv4 z7~iE0V@1utJbaH;6$ZqX`Bs5hq{I^&@E*+;{O5v02)chFh2Z=M@UaboVU^-glnGQc zV&-}c|F0q*+|$%-brHE6awm)jy;E!G20h;}-_-hPA{+%7GV4DaiQcgF{(K@7_;=Kz z{*1mMsKneAA&l%a$Ji$ELzIE7^u3&8P@_jQ+2-{zi+HL=uVZVB?jsBeB3t~s)znhW z@K8R%M3@M&9Xq8p0-A0y!^CEaXp34!z;GV`Ql~|$RfOyj>ujA$95;r$xKEt3u(kGn zEy2iI(};$GzXZih)%H3vv^hPj#d{{j_it}Em2+ShZO7mQZ+qe}hi{0y*e%}uWmly~ ziQxos8uoLFXbs&ELTNc9*%?`uF4y^RL@==)Y;KF(pJj446qyeMxCy6A=n}b<_aRi< z_a~&)dUuX|9+$r0_w*agUa(k;X%x!V<#YPjg;eO?Dl!^lEs&B<>EDfwmg>wsgc=u7 z;L8=1^MDn1iqx$MJPLH$y(5kMD~BdQ0_ID;?`-N8Nsq(~fQ1~Sp5cG{R0tmx298o% z%50YN9dClF3%?D#S3rr?es{x;J#5=hC67%OYoI9yJ|qy4kb;T;3MfFqNSlQKu-&lp z#qeN_U_n6|EdII zEjbU6jm#WMs+<+^&~NHC1;;Z=Z!F+oWOwxVjQK_UfkGhI6-YhHa|@;2>0h^a=LDGj zBvxLGXa{=Am!Hq2-9H>5ET@@Yju;o;OJ?SI7tCM8)p8sp6uepLpEu!KXKzO^!t_NI z1?JP=wR2AGkdNO{qU#KYq_@HImZ5; zg67|W|u69>T6P-!aF`{dvIrH-Miv9up!?Up0cm2cz-=Gey@38)Ck zAKa_oHxyDXqz6z;&>qZA+lk~EgU2(}I~Qw8M`p&1`y4RM(6{V}f5b|ey*=haI3Tt; zh+oc6x>&N}ajF~EB6v{_^tunt@17A90ngoCZ9aaz!jF%Los9Zo2%B?gFak!3mZrO7 zX@)h5r-hX@(5=0)O35p|pM+@Ya?rhHtYHj0Q#YIIN%f2$1Q_Qldb}hzLC{DMV`FD2 zJf+myR7N1KftDvJmBG$a)BBIwKgU%m3`)0MZ^K{T{R>Nfy;4ICkEA4-K_@U57x>cg z&)ra2nOz}^rpM7KfT^~V9kLaR1u9*KqT$=V{A;cum;31MYlX#ZweyqsL$Yj2q$GuWAWCGQoNXaUSiQ5c?vM?`VA!(Y!NbjAb z_83L7aX9*<8tLPpRk=phY#K-Tp^h4&8WcJBDThQ^>KS7KvGh$sN76asq7`e2=W&po>JWntQv z8p}yyF96x z>+(Ye1m1EKhCugEpuFD!UTO2{1YkX#TSp@~ls`s+q1akVLDf4tns|>yEODX&jj_70 zr3D=vG+Cp0lvREgM^ySekzK?tk!C~xNj1@20D0OMHJ07#IsMPRA}ojaQ_=z!>9gh? z`e}MfJQ$i!&pU=Fa28Bgq@70hAX&BOdBU2VrztCcR5Nc(sTnTAyQIM#(t4>VEBD=L za^OUe#-7Uq!;#yIbXGfCtH&^q;o*%hP}ihk@;^ZkfD)9(Wk_T}-0uhd-;-=_fzQ@@ zuZ_LCFv*$t%;$lXJ>Ov<1X+mv`!pDCJ1s1LpaDxUF)WsmvO?G6gDVXG61ActXTC46 zTrR(G<4kB%PqX{6KO$wE+gx(}w0du2=JyZ2PdU}|Lpe(jp+a!D7%{Al*n~M-Sg_@4 zK4&PRTDFwn$b%5L4*{>>FJy1KP#@p^N&|?F@o=;!u9)Ht3QE8xS*1w zY2~&uDykWCiGRfGXR=LP4(Zuf8?$1bK1%Sei>-}Kt!>nE$}*8zV{yy;@&SeMiz$dq zy*@=dsN3#0Knn4EfRH7m))dUkBT@YKsiMUcL61*32cX+!wK`lMPOdt=b}{s1Ha8Z4 zLeE_@bmQbxf;m=f6TX<}LQ|>rr&i^oE;=bW9~}KwTL~;uK$GInQ2rHi-k>?LKY!QG zs(Fb3AGRC_UjbtPwc-WywvpmHmnI=C)iZ;5h%Q*-vgVj?bPDIO0GN z;$r3yWD#V0j~&OKrS{!o9G4xk7FidZzCwt3_e0)squI(#NOgZF83xFOL=I7SlFGXV z1gCBfNomAKlHP6tX;oxH=W#?axSCOXUjQwC%~u$;zu7%4vUa{5M;|^VFZXC@bbF*+ z$iaho=o))-^>yt!8~rUek60G$nCbC;8e^uY*-&D$1Zd|idKHesBlvknS8DXg{hkr< zv-`KL@C9iK{j%wE6V0SJVSlATGV#r*v>oZ5&A-vGa;eP}sKv@e1ozR=r+-#t?baot z6z?ahggcmKE9Q%&_45OPUmc*h0iv|$==EV;>e?5Ai2pH=oXlI6e@^@0T~M)|8#4qC z1x8^l8KrrKPPg<@25;t~p$X9E>S7OU>~T@g_7K-NejQ)G+^eX_IJ!U4sN-@4zOB%y zdB}TQf>k>n70lyOE(V~C3nfVwpjHQ*M-VeSUu^A;!rm8$+fdQWgu<$dsMjHt{QI#9 z^4R=*Or5l}Ecg2YWqiHQgI36K+#}&R42?m8A)NGpj?j{Zm4y5d)ad-K)2UyZ&kQXe z5aO>8r3gZ{+v~rA_wVil4Yg?*TGl4!T-C+0#H1Ie*-ZzRwqZ@?;>tNG)x3EZMobY5 z9B1m+kUw2r7S?7)=zY!^Oc(txwn<^d#ZR3?C3V70T!mwnDw5?c;Rm8^LOWqb{4v8-BGwoo?|bg9|Ty-EUUz-V>DA3FHjUN!=^2J48CTc zckq2gMR}(p+fLMBrNr$kWC^pWSHx3Zo*8p>o8Feb;je#qA#EMXFH@^Qn~^hGEYmE{ zk6$?cvQTk(h&mAb($w~U-ijN2aKU)zr4;om$)r)8&oOEyWeE||YEB)Ep_HVlEWDjO zF}Dy-mL=2%fgFw~trC32E^{JLS@Rzn2rZBfhU$-Y2@7=mM!uG*cA+R@(gBFB4JXdi zb-R7i?!z*_G+ekwX}`jVkF}_mg-c$n>3RGXPUf`#mjXw+B{4=Y-G@0Qt1Kr(g#aH$ zGkaUcNu@4cvh=HN!^7&SmE$FW%to<-n5T^YNDww1h9796)E(`6Sx3 z5lNK6eXtYz7LF!3>j#tXjigr>qHD7N`1wg8G{z$Xg+YS2_%NO{4prxbtxyU-kI90b zeaTs};4DM*>k>!{w~?;qj^l(nUkum5heifw6*5W*jR+aUujGKJ7afg`1l__W2q@#} z)_Uu!b$Oi=4(O`X|6qU+*9Fx`4aRVccL|v1=);NiT;v5 zCC~eA3Lq0mG=xw1g;ofvCQ!U?#jKmDjYF7AY`;1(+I1%x@RiR#u#VN|BWpenwPe z(7Shob&%TipkPtg&z5+a|Nf_)qV{k$7L}-%{yZ(!j)X<^F>0Y~i7LEEl3E9MMM=Q2 z`yfv1dG?4r`y^Bw#9X~*xwU{Y|qE)T7%)EQGAkGF$JbfSss3@ zC#M{=ftVp0m`qsab(5xpJL+jGo)7zT$DmfCwjl(l#qHMtc!n*gG1_K#^LX8^wuP0G z+($P;r32}Y21+ggN~%sLk+H>Jodk(i8K>$ZZhu-H`vC_txAp;S?MfeOM7++AA62;; zGwhubv-bgs5-ByatdXYq$`&p9?`*WedBi-8yA?|K|2E}L1snrD1cMo9du-S9h-fO; zymr#X%M27o^BO^L^#IUYhkHEKbQBGiAa7hs^paaO&h#=DGM56^M{Q&7^00Jm2FBs2Pbma~=;Bql@Di zEf-&RUw(JSKhIl#*)wQyn7;8pcZsp^HwKs4?!@7|U;!demdK41dr(IYwRif~I(Oco zXR%~(aS%YdI=4-#wU3CLtF>H@C)4FeiJLp1^(s zv?sgMLqU3YRT0lJrKIcnM9Q`wuCDCJ zY2H6HdF>?BR|O--3_aCVixIxxNMf{P4Y>!X7D(q*o+N{nAv`u=3OzDzZE$vctJdw?%ro*2JpjB${f{b@3dUcUa1Yi)gW!}ubLgVkrG5= zpycG_BxvZx@|bs2Wg&%i%mmP=bnNSyw6J85OM3AZnLrqG6OI_GcLV@f#zll^%og0P zL}*}h?RSS_@rlVUMlPMasp5G=Z?==7%M>Ih4g;S7aQ8hIGm0rokVPzxAxU!yaRYBz z0dTpgeXCq4m`GjMJjX}9ll2cl?~J~ws;W90MV)a^F7_f$a@#j2Y3h7;2MW-zrdl6; z{yppNf!xnDsgx_%Z4ge^pDd;8HPcg2O$En1jzQ?cIL{={;S z|89AU80Zlo{cv!aoq^B4mue|zM#l}VzWeZx^XVI;_>ZhYPJtper(^$I>Xs#xEE%v;>gojuZn%v9?G48JP9d^HQgu8B=$QGYut7NiM5u8Zhy z(6y>};XEQ$&LIj~TJ3*ENx?b08K=YwfDzbOFY~T~&{8$dXX;PRdHKQC6h-ADbg`Ty zp~t}0ilf4Z6E}iGuGoLMb=~9r6S>*u;4R@rJQBu}G)A{WVNVK|&$+aJ-4io2E46q) zI@t@IYu(*YkC4^EToS*Or$Y*)B5ZoK2^v=la6@pXEQ$t&fFjN7N2M$Y$>0l4ZMRO5 zYSU6bKGP|0DwIXh*zsqruQw()D}T4BNva+RYV9EkU3L8c z-2e8n#YjZ7660$i__6hQ(aF>FaWQzIX>=4{)m%%id^X{$P2wyTlXh`u8%tM4r{Qs= znQnlSZl}I)GwtG}QtR@bsrf2O!!(8EepLU9RO4{$1jdo4JIgvz=`=T+@p;$|jWaWD zF!_WBJNkgfX?YfZh_P06{kph_bbz|D~U1u$L->be)F2>1S&~OOT9Att* zLgwq=_P-IEKoTpR2*`=}MB^6~46fSe=F#K>Rj#>7_ z)?l#O{nAB+6Abi2(?zR!~wJ^^oq~E4G5m!_>RNdXd_T>h>fiIn7Lwh zsb}Dg#oFHp8H`-m#hSa)PB~gN|JITRudPE1)Kb$ikK5FZzr<+q2MLT2{(9~huAc7A zL0;eexMQ#bA0Z2FrG-gJ6TmdcCmF}5SmISyJ3e));b@=U9krTYo43gLgx;!np2}5F z(Z}(MN0IS0ju2__ppX^YnO7#Lv4TItIhjzi94A;B$BcFbD;YMhL!beXj2-WMhACmG zlr4oHCzVkKOR}sL`gI}0bXiz%DC*gc7D=?2u5Gg;ZT)lKBZuQx$95`<&UMyOIqOIq zm<@y`m=$YVtvIwU6~aDD-x!4&r1_o}Y{|BgNCtP5k3{fCXXn$7nyQF1SEOaCEKyrB zWaG|0i238n(Uwrc7&@Kr;qa_Tti3YFDp0O3UiA={;uYNe?GtS91lGdcAY&FqNTc*- zA*I&e&X+j9o>Y!DU)b%q+ISS`? za6_`%fg(7yg?Avn>d-;VJ<@RyGL`=hGG5($_SuD+r|qh{4m(*Z%s=^@fW}GGA$OiY z-xiT!=NByFmN61u{V;)Qv-Wk`Tz*rDyhgGdKncnm=#!=YLpfkMu1bZD^bKWTyPb|n z*C!KiqJOgUK1LnBT~;1^%@U#j3_R_A*&9btt7)6P<=ZC6Xo*T({&-Kbo%Ntz0w5$( z(q6ABk!UZ!7SDjJF!V?F=I20UZ4ZbV_~E9p*%2&jbpvUq35%iyA~ zFU+Z_Ur#+gP(1J$)}8%=Hno(+E>-rcqwhWl(^mJcL1`Iaay) zWMWe=nJ`*{b-8#RZ|wna z?C6G+nx6Y7d1_EuHF6h4Z2Jfm8B*f;d7LCF7g?-JXqv6RJvO<8z{LWg>Eyb@tQlxr zdGaQ?om>wMQQ{1|iEkE)k#aez{O+sjh&<8?@!a&fBJOLctG&)EwzY~R6|}zhqq!9D zWI=vu5vvcQ-WLO^y-v9F;37(R&&i;9sRq?+ z7sS$>IGE`<1@OvYkW%O)P%J6O2KNCyHx~VHH5?`SMlk^3Lm^A3Uc3l=+MJA*ms&D> z+&Kvz%3eNiI@ph_6(~0I7s)Wg>3%eu|Gr*QKMM;jejdPlfdFzlRm7p?p^yI|1&*2=U(l|0l^%hB@B-Y{H=|BVtjZa zLK5&B&_Dy~cGI^9&bhF*0rE^EeG=6%SJb~ec`;BG>w@6h8b$~VVj}al#9c}zGPwgs z$*b9%K6<)8pB=ibm}(=a7vF+M3B{J$(nC_k;03H(7nhR4o&QSeHcVFEN>?s#ELh-X zYsL2LVLrcw#R^Dq?p95wzhO^)fv>zl#dF&>V%KR{7KM+g7KG{&p=lEFJ4-O>WwO|A z^VNR^dSk{dTX}oRDr|YG zqEz(Du-82LoKCNpA;p3c?O0#62vWt(9@(Sm@}G#lfiQMtj*J!_K)CikhX#A@Ed}Q6 zOuClQfuLJ7MSX81P0q79<`!d6-3(PqCo6xJ@dO_1_&WPmJ^g>I!)eH11b#X?dcsXi zd9*h-t~KSkqvi(6Ktyet|8-b;Y!`{tuY?-~lL-WiP7!Ee^)+mrN8wezPF@gG><0{G z61hZP{DHg-SfW$N8*ci^@XPYFjr#Tw>N5KNYE^WZZBgrZ=tn0vscfN8 zNW2iaQ`??9qKMP^hpyVQfvfc$#8CVe^0(I*IiJR$9Nu>9JrjlkGMG@Rqn=SQJmAD_ z7ntLryfX^iEoqQovjKzM=CjvC3+RaPwDK#c-mbr1I^UkwKL@x<+*LD{e|W;Ncu9hp zV0GCzs$VA3204MCj_vG!E!PAa-`^!DaNQwCdEG3y(T;IscjoJff9lu9(kI#sLQ5~o zcZA8K{45zx(N;h(V7%Y7o1O?11f~f`gMy!`s@-;aBYz6ZunpPy7%{N*(={bo3^^hL zmtLIJjdaHI!N8Ib0jfBI2yvHGMgH@d{0kxRk{(B;=&M&1f0b?L6tNty+LTH)8W+W7THwjXQq{l#YAq?9W z@k8_}Wyqcz&R4ZU6@N8vXn=cEtV-7L_l<}4b&Qsis~9YauZ@-}u#Yqx3|-J{1Ps2U ze?tw1EGY;gp87waiJQf1Hp65$w$5@c*66`NArjm;02#-Qa=S(o3|6oGcfG3l6T?^`-hSDc`VKt{LT(_4^Ny~IxrH})U>)CUXdl5?9q*gDy zQ%EZZV>LU!0aZ4W64-Ut`G=2^oU`S!dp{!_`Ibqy1DYx>DWlLB{bF%akYPtdL}HH zbPIr=-Q-FU_=Hms(v_(2?{@04sKvC$~1FVH-icQo#*7c3bKFmCY=(8A!N}okSl9UO>H3cLweMYE-YG>h?Szk zaGnBiH3?MDKz2wD^(o@mPPUpWT9K2ZjLw-?K1x>rUj%9kX*3mh*8=kFglu;b2Tw&_nO`JA_RS!2@a z!=hfzd=h;It&=Ps#7DJY2JfEf%(?uQV%d_;x|my&d}hADW!UsVY?%_kuYmXFvz{4& zU`mN)3}#55u6)wJbs)ryqlFs~d3AO?Gjt3oA{D~Gfy}6@5qL^i`W~E~EO+FFlbEs% zeK_?TX{*@XpxSr$-Cghj9Nerbm|0Hy!G|YBMc)RT6mqJ&t&jte33wrHiLb(3%@76A zG3=pOyzeWSD6>NTy@fXD*~?W2BDd{vk8g5>W0l_f$Ng@HI0Df|Z=+LLRal(UrVgXA ztD}=wkQb=QE2v^-@K-Cy2EhX8TJO|7B>?u(kVhJt_MBEu z1hyyYq^e%Jx(%`}rxvigA(%tn9=BnttW zJ=6{o3R9;fAt<;NjFds{k2~A)$3i5;9z&PPf(IzGZE38wJuAKiVm~2sf(!8CI2l6D z>dq(FWw_GUC~j!vLaZ7V?ws;l@a;h%GGwRDt1G|Y^9%pH+~*apbv1a2B3?;~<*1ZY z9N>1=z$%8Qba4cs?6(Gt$2ca`-y>|pA~{{>r)sHE^#iO3Po?A4J23I~v1UwdV&Vji zq8zlzL*?IdtJ_DOy1104K>vo%B4mkIEr_C`)saJqm;1B)&u0)gA!9_MmuYGmYbHmV zCim`pq$Kf~PEL{(O5lXC{^A}bH`kIjqw{$X`L-(oCWJIwf$z>QC@b=_D8jdRPR`v9 zJ!9Q;9Jj?(dTZGEq%rIVhxBg=a_i&gB#wX7iozDKa2;E%oNw0)g+{;7=j!$ir@%*U*#SN%%0n?NoE%5*OBZv#NIdYj1>8LqnlZ+aP~q;E8zARmIAHIgip|=Z7Xhr z$NO;q?`Wqckbn37AU#}(+IRevrE1JabpQUmZeuoc`GBX=i82RINdl4Esz=^Vj|ahWSUbzFd8TL<{uN}vht=Fh0kMhtxxft`w~|j$;aND zn=~TxqYvd>lEL@pq7F4~6G_MPB^w-inSU&$S>F+NaKrQGpNiUVNfZxS3WiFJY=PKn zHsgFjz2b88??M2D5vSmc&*!Y!F(q=jRD1n+ z?UPJA7fjcYb>O%m@by5wE-X#R3ci6EP1H^-c#@3|m@M|J;1b*kJa>(e;HE&ua;gh| zl|eAm`dXThBcjX_94KL4pPfR85(yqkl<4)+6080XPNy54*@E zK|b>daA;)dY%Cp+$KC&gP+(vdEU)|Q-kAx#OWWl7a+;iOwx7oK5av~pvogpnPD#Z7 u7R;x>R>1@RPoHxlRFveT3W{T|aVwg^K&1fQHJWw4J5wZEel%oS~!~&5fPS z%_!Y|I$Kf7$t$X81z-?kDGJWn;GyQ@;j>T{F2^9Cl6WaZAQ$OEQZ6C%9-n%jc=`enc58$mw!+8R9cMJ?T))Eu3caaD@n*J4de_*gx*SG`C&! zj;LQtuNn!=9wx-tjt^6?MAkw;}gm^hMzReJ)JLLc?+|CjJaD z;Q}8l*@W8*=qEWk=FArNENLG8glw29w5((ZVsJLzqcn~HF#_hmlE4g!qN4N;;pez7 z$R5`#oAu_<(3eqHAq{V@4w9c_h#2%?-8iTPE4(+thL3yST$lE1DKdpH8;@gDey}AJ zzXy+JR&~sW1*qIb;ahCyUd=TU9X6d4UNyBl%{&zD-!%kh*jl4xvYn(7cSK@E|CQ#D zj5Vm zC}!(zbe$3N3=uu0~~dm~$Vg-tA)-Ugp4G*UPeNB8X4gXe~q zyvav7=(LpMLaB}z6~~@xxt-Fo1w5_jX%y`qe6CBM0)|l zaIVhTwLt+v@(kY?o6a5;bzSaZjjE^Y4dPg=a&`{L`JzLOZDMD}vxXOgdJA0Gqfpzq z`PKlhac0naSSYycdGd>vg!OP8u4D;&DmBZVa4JLu@xJ$Gg57uS?}xvq^_i_YTyeFp z81PJu&`O(_r#Sspit$J^^{H?*JK6R5ZxAy+o9|Tvps7Vt2swFDwnCMMgN1Alhb_ybf!Cp!qO3$i7N~KkmC{%Y9oRE#IQTufQBNeQI~@8Yu^!Q$UA?Nbq%-(!bRiY z=x=Rb47fZI7C}+CJnL56-QS6`Z z+8kmSp{G)M3uEE2P?YHbbT?%VBaifFir~xQM_phXsc$g_TYMu8y z$lUi9U<{-Tq<>dIFC!C4D$$IHIkbo`*%A<9Dzv~b&bE#tQQgzGb3Z^%k1H9HlU!7$ zecRJ$@}RWl0JipHBR|3`uw?;-p~*5#vbWb~R$aG|UenJJ*?VZ~{vR#ja}Y2MjhrA! zMR3+30o$rbG>1{`mx=ScB)@`%xMf6vSIM9@$edS%Hqg=nlLw4odU5+8_&QR=&vsUS z=ORx^=y2FJ1C@>5ucIVWF7k_77V;GNOZ7hpDu2pYP%c*u8{V_t+9DNokTSTb@R)Do)Xo=;5hC4~z;J0L!3SOf7t zeY6~xlF#`&<>IQleW*+U!wwn+;j*VGt&#_DxTZ+O{$;U|hL|ajy=mo4nx(ffn$AzS ze`?bLUkP(HQW~s6e*d@s{ckHQ(CCJM5)*GX@LAt>A>c~+U<0+CiZrL~30JwlYmeR| z{`t<3^(%#RpD8}iqu6@$te&j16QTZ!))xf0y-r0#r>DUMk7|X+qp1+3^tY{t^$Vw) z*v72;SvT8b(f5#V6~eCL*3Mi06r3nuYsh~z-b0>IF+@E%O;2+=2Tdn@s{g^rh}aOa z)|fqKulU5}DjQyJ+Q%g%J;Bq0;->Y0G#zCxCZ+bwwJW#bHa!>acZG3zf2XY4yM;J(ixf z(nB5r?iP35I3oo|YSRAlg~bF^4DaX3ej#I(@2`9$$O1%E{p5-5TWdWDdZ6R-p-T0W_(>ziofa?z(HE55TFveT(>d9!p?2Efl-$o z%Kc-|)KaT^_HstIK5RJoQEs<2x{Mo4a@hzZ=Wcs^Y0c6PQ)J_{pW*5dj3;{VBV-fvaCZMD^XVm! zv(4u7hBIYSwKcL%>6GN=zw2;f_MBL_v~|Tp4RksdG)6u`?SMQjoYx zHXygrLJc@x2(I)xng%#Ire*WbRrn)q4oav5qH4AGxyipZOgt|ToK;R6EZFrt-E8aH zA)8v*tcnS{P5}|vI3*8l5(Fo_ltgFObzA^^U8e?K^VmfC{$G+Zk7 z=`QZ=XC$T<-M!_m#gI)j>`$?Hyh~}-A|_qqOXv2-Pg7>hIem?cLU?5Ne|24VP#LVU zRhG*;vokt(2V8pp9D?;Xu#^85Q4uK>6n3@E`NR~_vF0My9I5f>^@cF3v9$Ei20v30 zDZuwB3!tqtJp2}sF<$Sw^FxYm5!4N7*-NiV{e^;`fa8q|a1jLlnm8qx-W)*I z-yjZNfT7<_?L#G6y-}_{5&MMNk~gwVjIP!Wwp)P+xqj`vROf4Xqc#=?;<1S}@XKO# zm5T{Fd5DmwX%G4yo_Pcm-Y8^vU9h}-vkcd;B1%>Y*CvzFLQp`cx9On9skEH2VsQx5 zI@r&E03P1%TlJNhHg-6eN{r#BxGws^z=B+6InKZXrQh6yO|88O*q^TW20BArdH2nl))JmCVWgdk|yHb4Poh3XM%O^YY^tJ(eEq| z0Mw1{f9WBnK;sC2QbS#ARoRMI2c0*{%n3KQ9WBAWhOwytGFbaYSHZX#- zDB5zZn8K!~I^k|yzN;eSCC$NK&52Ftt1LjxS+7CAcI`XI@JSe>PeUKM zwM}62{RxiRUbb)V{d_?p2y9ERgQXQb!KNiYinW3aU0=Zp`gw=nI1x>ek}0KKZ|VKC zorkkGlZS`#nDmP=#Kuopm22)vQxCznYp&wqNy^Vg|U!Gpk;6CU3(bzbL#sjn*ZK9tqUS_d) zp&P!zB3Y`^*RTrR?fx3?k_vgpf>UQIRvS+BP0(yCMo?x2%k(Ksq7dn_ymeY zsgzB+G5@d+!+nX@fwOkqhnxG8pVMvl!y~mnDf|*MSHM6CHyn%$N4JDL^9WB)x9`*K zR+zH3yz|*Mw@N}Z6gxGg8LhiftROkR@yJqYMixNtgaij>*k1^TM(36=e=j`XQaICW|at~2P&CW(IfYL4J{q_9#uRY zO5m2EbYA8{%8*e}GgXpVebp2PcZ;t|XVTf=WxZ`FA#=O^C?COQsb|9~XFL#w#fqx( zpWrG`;gQ0D(%RALxcpsJ!FoSoq|2F2UAp59A2d@BM^L6Jt5bL4sH%MziH~oKX+Sf% z;xxopSPXSX|K*Lv`1zns#SqsQ{nX8mS=-m~=ir!SiP5B(pygQod?j!wHG@mwD`9wr zTAJZmVpQtHiXR;};TZ$#MhC0!OY%~E0Iu~2IvOh}yi0a0YBHrOjs`kZs1B;~B7_Yr z27i!)e;~;3z4J}i34goxxxTFiKLjnG`D+?h|tcnZ6E$sI6=UmuY-++-NSa z(Ivg*b=c9r-a)L_HZI;2jS_N(N>dk7oY=T>oEObJHt977%Ud_VC?yFoM0uM)a2S z=P~gTb9SP}hR&Sh-PTH~sg`It_?bLI-;b`Q)i#=8`OGJTW@1X%r^`(3wg%qk@*ivv zHv&dnHMxlCX#_1xZi+2Cm{ZP@?M})eifJllbdK45NHw5{pzFqIGl1qj-e#2?dqg(mI!+t#pmtn zc%4Q=oY3o;yl-lVlETib5~I~fnDbtEx0$rj^3PAcMeprUX_^KVQms*rL!^YSg+~nNOad)qVkX-JLdCeF{yr4dbopsYI92PxT%3lj=`8xy{Zui^* zUoGi$p?}}2$d<7qYiQ{Zv4r?ojWl?2LsY@WI$25_=}HxP_03{QMRgFQzf>@(IGSxW zvaHHtG>)DnUw+z2mNZB^>lGt9C%{gS)q7a@66G+X|Fs%xxkS2Gy;sfgp%1kH0dn7- zc(ZBMfg!E|Xr*u_os;Unm9l4~`-YG0H(<&@sFkzuf@hcfT6WBdx}75_XB)qfdm9uD z*SvxN_=6##eUb1QBvSDjzV5jQ?TFjN*<0ATjlZN$qN{iO1OFh!CQwINANbE8lW!tx zhU^6JB=75HF9S#FMOliWa%ScDnS5Xb(phG~@( zg1AV3jheBNj~K~E8<`p-(_(DQks%R}D5_2+!j|>vkk8~qT2zVn3HyN;3;AkySVC+e zD-F@q98Kz=Q$*UuXyrV=D;{?%SiGGs9F#13-o)X>uoas|=u@ch=H87TLv4 z&$iqs?LI>g>XxuKH^jIItTYDBaw4&@N+ z@5cVX0ybEX>Q+9dpyA;GE+I;j6$QRA(*kyQqrFXE)l#h;zlU7cBL`9tBd=CwXBO?` zzg0T5W!>LVSlG;KlR=3`7H%$-NDv#m9pwD1P%4^AD=!1-{->XrNHjFII%FsOSc1;t z{GU_=mElZ;I$?jDaF{^-7nAvg z+gqY3NJuenNp-hUBIi8j$$li-i9a8Z{$T{xAHEa%E^(Z^_460>CvXM!YR^;!_&J0r z2C;~hKo&9v7Dn~@JlzGb$`;{ykP~9zWGQC6eex<4bK1osp|=CYyw&)) zKV{Ps0tnBDU7}Ex@*XHHQ(Iv8u_SXVckY90=xV|=vUw%`?Ekx!{Erzk>tUNXh`G4W z)^RWf9}oRbgjS1evK2stt1NRMInxp#oG=K?rfm%vm$batb)faSlBLo3wjgcHwV$V# z!QrHg9C_GwDIIIfU*In;gqz&21-ai45>7@6;VGe0LzgOe;l+%ylz z<+9F>*X7jqHrcLvHT@ueTn#5C#zmHV$1VZBfj^G+MS1?*@ z4si9T-AD%Fos;PXs!bJK2j=`3G@Y;lIQv1Z=BSfC;#M#@bi9K^pS<|qHPYgnp48|* zFnt>Kh!JHA?7#~Q{nFws>KBTsZN^h^lRf{&JuEvZxUwn3Y91F=uRrixLmbh(xo=ry zV%07PUzYS#1$7as2<;F9so~ci8cv-S?F%?2+!YroA#k#9S`OSx! z+7lYlWu(j`rJnzyb1xZ$()wjkmb5}=usMUcAXF7Ij<-B}TAlCf<08sm66qTNa3*bx zBO1f<0o9gf(qH!qfH9+xMSz^fnLEZk9eSV+BitD$xPxP!_pgq#ou6{3b^tPO)D?-n zD0zZP7P9*aj&M={S;3`$;NIz|4Wjf-F@KxHDs^HLAUP2#dN8toA;4Xrz!K=`Yjc^3 z$-B+N{!{^kWa%@tP;{-|9RX;YO)uQN17kyV5u394f z%jQ5Mtc6Jx@O>9?slw z1}L6oQ$(7%CfC~TeHw2RGmX4=>5m6{D1zK%mDl*8(ORRugqHzHos+8zKhqt`C_Pbe zw{|~gXRiW}(gX^06gDXV1$S7UCRRHIxH?Uug;v9hm-V!|PU^ogV-6Ju|Ao>2LAQCz z!msIiYP$*|M>UP)BfNL5Y_)hF3|xU#9vhig_BE_Kf2wW@*=WBFBzK!?=`B0+lTD0@ zTYvrux}W|->%~5Gk_3;a&DGP%N}Gu_ZluDy7WnioaC_VM>1VUszyDQi{)6n^2$Q@Q zDae^t5T$70mK4K;vaOm#iJ2-Y1@Dc?_hSWT7erUt7dhb-PStfW;6jo&>_L>! zd8OCP>k=>>gqV9MhB0#yW_Q5&mKITPr|{32*R-KILA;eeQ;+_tqLsf?z4}CG>`qKy@pRRsh0TF z4+H8kce7SVp~n2mecOlkmZ;wlQFqxAge$sH`w7270NziKg;Z2vQd>gicv-`b;3=G0 z9ZBl&ZOR8(iVqq&do!{)qVe9A+bQ}Kz*Rvdu5T`jg#ZirQ{|!7IjdK{2$VG1ji_J# zx6TiPkW*orZ@+c=ec=jSr)!Ip%Uw+!S=UH3c@DYlL)~)190t}1qMKbN%htW&g*u@j z1!x8j*z^VK=u#xr4?j;uE7gY8jwQ6h_Ol2*uX?*=%2}dpo_R6DnH~a%_6J$ksJXe1 z*)}p;kJAXz>HS3Vxb7D&;SuvhzA$Y-sxidycD_Q3srM|f#k04fZiQD#rtDK+&HsvH zHFSR%B^0R#Bz{mWaF$~%?Kl(0-*P8oKj?E9a!w8o52-gf%8mSFpj7*PAUo%`Dzg(BYkHFB3N;0*Wi*y7tIzmW_NQGNN|cz%p&eg7^! zlA3+3uF%6@U^?(2lY^Us~wZ^B%8{>vht`mxi-HgOG~F zH0#uy=gU!B!&iBXh-~5uJLRu3I%Gc9n>tUI=66MSr4lJH8S_>>3qR46ZTOfdYyJsU zybQ%MiyPmGdOuzz^~yW0*E}D0pl;XYBVIh(KvWqO!+?@!{kTG*vpO)Q`SNyT1?{j+ z+b`x}t>w5;D$!+uLpZ{?Zl9-JCBY*bUzikyVHl!(Aj}pTQP;kz+&hd%tmJ9|djmu? zADZBNKyo`IH*R9}AJa@dv_rN9{HH(^x+Ko`V2_V)dT&jT2oHvI)A|=juF4TM6(2?} zgjBWjm)c*5+mYxSIvaK6X7vXn20L#pc7&m=Y+mPF72uE#4Y8nHx>eeVw2^~~Y5`yg zTR$f5^u~XUGFr6uH2Hcr)Y`Q1e5D_u4tWtnVBrnLB0`M1e9ZKPSL*dj)|kY{!NxRq6!-aK@ukut58 zDEga0CgPu6}afDXw(6wNMHmplqny zeD=%tm*P&%q)j>B5a_&}dpTQU)cqoLFsU@W`6#o9$Nxk_V1$-{9*SzX2X72k+zCpu z?hF~3!J?~TmnkbigH0IV9%Qd{U<6*eNpgQ~L3Yl5hYrek-1@t8uU*Rof_e<$)3w?j z#s$aC&t6X$HQcUA(y>mrI7S7-gU}eUy5}UGX7rWQ-)5s*TTrD`^3Pz%gQ(Q;QmIQb z1(ZcgEII9Jqy-pq=v`5wa_Zf{4czR8Q|pctFlah-HDhP@{y@eHA;9|ZQ>y2Kc>R{sZ$p zu})hHPmS5?#o1%M3}ru8DhWoGY(eDf$Bg}~`?n{pSi?RZGe@FpY872b(xXb&p&q)plMvaM%PyL_6?pVzelQ%Xq;x3E6I4+ z5%nFXL}vLD<;j>*5cgG=Y|3=rqUW*NNT535EBz$d>LY!&NSrS{^J>q8pRynZ_NU57 zyY2X<)Y~F8-D!?=6!sZt6r&InI9j7u#-s9ukRbZ0bTBICmw-A0$2N2uXwBI+qi1`aqG5c7(F*Q zol1Cg>G>LfXUx>4+VmPO&P>ABfJu))Lk;qSHpF{{&!V67!%BNdQ0V@Gt+Pbm9|)wZ zrvuhdmt|AR10IABO#dKQun2b-{Q|j7uZ5Py`n*Eszn>!;y6im%o!b#zlsS`VRh?(B z@RFz@;l~d*{+%>%&eL0Yd*1jvs>%M(R|a={Dzxc6AB8c{PLBXVD5v*fD9L_&wdS;7 zj=!bP2YE~AN(CWqf(CBjM8)^3EHLH?9|CPR2zgIrJS?rhIdZl1QjX=SE7YR;s7lXqw#* z@iOm6#q`QMjr{VOUSw=$lO4hKTu|Rl^ zR`GFhCN4-^x04Pn-n=aDrR}xfNo~V1xEtYX(J#Z7$(+VdQKJ7^HfLJJoY$`7^od_C z*{2N%cyd;)OwOsl>;56Phbf8qrnA-k%A8nb^-O@V6C9B;N^&2sXzUW_8qbo`g1-B@jEV0~#?($bpd%8lDEV1_!BqGOQe7^;r zUq>!!DWia1;Eg;ND0(bXmwHK`dTd(4V#)pLIL}MynmDt0!E2VDru`8^o=w>KeY~(} z`cFody?yD8QJF~^&W{fGhrf0{H!Q#3b~7v2w0`iddne@gsO;g;|7FN~`(*yjhj;k&AW49~cFWONV{6~wny2Y>q@^qR<8X=5z0K(1T0}l9J_+PjgOy>7q2>RkkXnN^-A=KWDL{(1u_x5=_SU%m>8;Qp72oKYF8$ZBMmnH>Mw~+k90K#Cj>l zoRVL;d{Ao{foU=jazONC5#_wLgO$vBsCs>XL~hD$E+`v>x<^NCF%}JL5t(98SNbIm z%BoVvg(+k#X*m?j8<#!M{$$wbt4#N$FHdklVA(zl^A;6R|ATU)0SOgP9pPcS4C%6L z?P6<;RcaPGJN}pmPJsW~mU8ImclMf<=iSj)vDa6aDQ0Cur=6YFtD`;<>fk?rq(H*O zYNJL#Hf0M!Cf*x%3n#_ScpSm8l(4%ryDmrC?z@K;ss!5E%M#tsJ@ekgc&V`!%7GD1 z<97NJo4?3mH((0>u_7#C9VYk_^XO5!T|s-(Ik{B9w0+7F&n{tVo{@qrn88ZkgoPf2 zVY9*0Joiy}rvSSe*>mPDSR_vl)y@nt?$lMN?_=vX&Z7F4l;%4p{PeWd9S(DocLe2# zy=yyd-EXvt(TtTBw$!;@1UY15F^~=1Rt=IQ?{6s-%ldi-)6BTm<`ANE=#tk32gmAD!Fy26J!0^HDbf&DA9Ljf%6zk*#z+6|LE+wbTS?Z z5n z2KSwWz4J{uOGlTOVNY1~5?Lt}{|4_WON!=b`i3z4^A0^i(_a&W$RC=Bxio=|UJDMA zyX$d?{yA`(2&+!pm_&_z&MnW%im-8HfvPoUY$=F6*895I{h_d^wdQlK&(&WcC&Wcv zGX|D`1#>bvv(M@5E@*@kh!qA~_xsA%B<%3XJ{Ox>!KeE#Z)ng%G{Iw%94$m-pAIVD zo#4KO5mD;Vao^@u)FH8?Wx;>rtBY8pO!lA&TJ`)etHqUod>bqm&5fEvgxpeX+V0&) zF=>A8By3)~YL*(?6lAa}o8Tg?0m4({$qH_P(NkXVcK684@${4bkfRbh2zU*jY(P1q ztxPS=wH|VG7}u}_D(O7#Uv9jw+ax=U?VoMUR29gEDE!c4GhbVkd#?+yQAP;T?;w#? zVL>f1W_4!gRUyq=N7L+V;voipHSMHY;WJjwWNk-w&}a$p)~%rypYdM2^qfa$!dW?q zlBu}w*i%W+7-1yGj2h4>TOyFY)>Qu#zFjp0M~U|SXnR=*c!S>Ck10DB1`_e;JYx6~ z1!2jznH*!oWH`|no)DpMTWz*zSYdFNVPgy**PMRMapQCy9)_6pUkNeud0*Zrm*@lz zKd*$(>EN`f`w#QF`mC*}F<}<(vUld%ZQ<-b%<|EAz#{GJ8q!o)^R}##fOvx0pq57A zN5zgfoZz?&^u}6@Ked-=4pu;URv{gHn5WF!7Zmo!h3A;<0! zxmp-nW_y_11=io!DuO=5z2`~rolyJDkdG!fH&wY;wCC#KH0N9y+!r6!kH;w@0AEOVVC^x2rIR{2vgh)gJ> z+e+ck!w6sfN6+gA9(_zWA?s0(_) 400 then + target = ai.target() + + -- Check if should still run. + if not ai.exists(target) then + ai.poptask() + return + end + + -- See if another enemy is closer. + if enemy ~= target then + ai.poptask() + ai.pushtask(0, "runaway", enemy) + end + + -- Try to jump. + if ai.dist(target) > 400 then ai.hyperspace() end diff --git a/src/outfit.c b/src/outfit.c index 7ba5884..a376e43 100644 --- a/src/outfit.c +++ b/src/outfit.c @@ -142,6 +142,11 @@ void outfit_calcDamage(double* dshield, double* darmour, double* knockback, ds = dmg*0.15; /* Still take damage, just very little. */ da = dmg; kn = 0.8; + case DAMAGE_TYPE_EMP: + ds = dmg*0.6; + da = dmg*1.3; + kn = 0.; + break; default: WARN("Unknown damage type: %d!", dtype); ds = da = kn = 0.; @@ -188,6 +193,7 @@ int outfit_isBeam(const Outfit* o) { int outfit_isLauncher(const Outfit* o) { return((o->type == OUTFIT_TYPE_MISSILE_DUMB) || + (o->type == OUTFIT_TYPE_TURRET_DUMB) || (o->type == OUTFIT_TYPE_MISSILE_SEEK) || (o->type == OUTFIT_TYPE_MISSILE_SEEK_SMART) || (o->type == OUTFIT_TYPE_MISSILE_SWARM) || @@ -203,6 +209,7 @@ int outfit_isLauncher(const Outfit* o) { */ int outfit_isAmmo(const Outfit* o) { return((o->type == OUTFIT_TYPE_MISSILE_DUMB_AMMO) || + (o->type == OUTFIT_TYPE_TURRET_DUMB_AMMO) || (o->type == OUTFIT_TYPE_MISSILE_SEEK_AMMO) || (o->type == OUTFIT_TYPE_MISSILE_SEEK_SMART_AMMO) || (o->type == OUTFIT_TYPE_MISSILE_SWARM_AMMO) || @@ -234,8 +241,9 @@ int outfit_isSeeker(const Outfit* o) { * @return 1 if o is a turret class weapon. */ int outfit_isTurret(const Outfit* o) { - return ((o->type == OUTFIT_TYPE_TURRET_BOLT) || - (o->type == OUTFIT_TYPE_TURRET_BEAM)); + return ((o->type==OUTFIT_TYPE_TURRET_BOLT) || + (o->type==OUTFIT_TYPE_TURRET_BEAM) || + (o->type==OUTFIT_TYPE_TURRET_DUMB)); } /** @@ -437,6 +445,16 @@ double outfit_speed(const Outfit* o) { return -1.; } +/** + * @brief Get the outfit animation spin. + * @param o Outfit to get information from. + */ +double outfit_spin(const Outfit* o) { + if(outfit_isBolt(o)) return o->u.blt.spin; + else if(outfit_isAmmo(o)) return o->u.amm.spin; + return -1; +} + /** * @fn const char* outfit_getType(const Outfit* o) * @@ -453,6 +471,8 @@ const char* outfit_getType(const Outfit* o) { "Beam Turret", "Dumb Missile", "Dumb Missile Ammunition", + "Projectile Turret", + "Projectile Turret Ammunition", "Seeker Missile", "Seeker Missile Ammunition", "Smart Seeker Missile", @@ -502,6 +522,7 @@ static DamageType outfit_strToDamageType(char* buf) { else if(strcmp(buf, "kinetic")==0) return DAMAGE_TYPE_KINETIC; else if(strcmp(buf, "ion")==0) return DAMAGE_TYPE_ION; else if(strcmp(buf, "radiation")==0) return DAMAGE_TYPE_RADIATION; + else if(strcmp(buf, "emp")==0) return DAMAGE_TYPE_EMP; WARN("Invalid damage type: '%s'", buf); return DAMAGE_TYPE_NULL; @@ -517,6 +538,8 @@ static OutfitType outfit_strToOutfitType(char* buf) { O_CMP("turret beam", OUTFIT_TYPE_TURRET_BEAM); O_CMP("missile dumb", OUTFIT_TYPE_MISSILE_DUMB); O_CMP("missile dumb ammo", OUTFIT_TYPE_MISSILE_DUMB_AMMO); + O_CMP("turret dumb", OUTFIT_TYPE_TURRET_DUMB); + O_CMP("turret dumb ammo", OUTFIT_TYPE_TURRET_DUMB_AMMO); O_CMP("missile seek", OUTFIT_TYPE_MISSILE_SEEK); O_CMP("missile seek ammo", OUTFIT_TYPE_MISSILE_SEEK_AMMO); O_CMP("missile smart", OUTFIT_TYPE_MISSILE_SEEK_SMART); @@ -562,7 +585,7 @@ static int outfit_parseDamage(DamageType* dtype, double* dmg, xmlNodePtr node) { /* Parses the specific area for a weapon and loads it into outfit. */ static void outfit_parseSBolt(Outfit* tmp, const xmlNodePtr parent) { xmlNodePtr node; - char str[PATH_MAX] = "\0"; + char* buf; /* Defaults. */ tmp->u.blt.spfx_armour = -1; @@ -579,8 +602,14 @@ static void outfit_parseSBolt(Outfit* tmp, const xmlNodePtr parent) { xmlr_float(node, "energy", tmp->u.blt.energy); if(xml_isNode(node, "gfx")) { - snprintf(str, PATH_MAX, OUTFIT_GFX"space/%s.png", xml_get(node)); - tmp->u.blt.gfx_space = gl_newSprite(str, 6, 6); + tmp->u.blt.gfx_space = xml_parseTexture(node, + OUTFIT_GFX"space/%s.png", 6, 6); + xmlr_attr(node, "spin", buf); + if(buf != NULL) { + outfit_setProp(tmp, OUTFIT_PROP_WEAP_SPIN); + tmp->u.blt.spin = atof(buf); + free(buf); + } continue; } if(xml_isNode(node, "spfx_shield")) { @@ -624,7 +653,6 @@ static void outfit_parseSBolt(Outfit* tmp, const xmlNodePtr parent) { */ static void outfit_parseSBeam(Outfit* tmp, const xmlNodePtr parent) { xmlNodePtr node; - char str[PATH_MAX] = "\0"; /* Defaults. */ tmp->u.bem.spfx_armour = -1; @@ -649,8 +677,8 @@ static void outfit_parseSBeam(Outfit* tmp, const xmlNodePtr parent) { /* Graphics stuff. */ if(xml_isNode(node, "gfx")) { - snprintf(str, PATH_MAX, OUTFIT_GFX"space/%s.png", xml_get(node)); - tmp->u.bem.gfx = gl_newSprite(str, 1, 1); + tmp->u.bem.gfx = xml_parseTexture(node, + OUTFIT_GFX"space/%s.png", 1, 1); continue; } @@ -719,9 +747,9 @@ static void outfit_parseSLauncher(Outfit* tmp, const xmlNodePtr parent) { /* Parse the specific area for a weapon and load it into Outfit. */ static void outfit_parseSAmmo(Outfit* tmp, const xmlNodePtr parent) { xmlNodePtr node; - node = parent->xmlChildrenNode; + char* buf; - char str[PATH_MAX] = "\0"; + node = parent->xmlChildrenNode; /* Defaults. */ tmp->u.amm.spfx_armour = -1; @@ -739,8 +767,14 @@ static void outfit_parseSAmmo(Outfit* tmp, const xmlNodePtr parent) { xmlr_float(node, "speed", tmp->u.amm.speed); xmlr_float(node, "energy", tmp->u.amm.energy); if(xml_isNode(node, "gfx")) { - snprintf(str, PATH_MAX, OUTFIT_GFX"space/%s.png", xml_get(node)); - tmp->u.amm.gfx_space = gl_newSprite(str, 6, 6); + tmp->u.amm.gfx_space = xml_parseTexture(node, + OUTFIT_GFX"space/%s.png", 6, 6); + xmlr_attr(node, "spin", buf); + if(buf != NULL) { + outfit_setProp(tmp, OUTFIT_PROP_WEAP_SPIN); + tmp->u.blt.spin = atof(buf); + free(buf); + } continue; } else if(xml_isNode(node, "spfx_armour")) @@ -761,9 +795,9 @@ static void outfit_parseSAmmo(Outfit* tmp, const xmlNodePtr parent) { MELEMENT(tmp->u.amm.spfx_shield==-1, "spfx_shield"); MELEMENT(tmp->u.amm.spfx_armour==-1, "spfx_armour"); MELEMENT((sound_disabled != 0) && (tmp->u.amm.sound < 0), "sound"); - MELEMENT(tmp->u.amm.thrust==0, "thrust"); + /*MELEMENT(tmp->u.amm.thrust==0, "thrust");*/ /* Dumb missiles don't need everything. */ - if(tmp->type != OUTFIT_TYPE_MISSILE_DUMB_AMMO) { + if(outfit_isSeeker(tmp)) { MELEMENT(tmp->u.amm.turn==0, "turn"); MELEMENT(tmp->u.amm.lockon==0, "lockon"); } diff --git a/src/outfit.h b/src/outfit.h index cdeb1e1..191466f 100644 --- a/src/outfit.h +++ b/src/outfit.h @@ -5,6 +5,7 @@ #define outfit_isProp(o,p) ((o)->properties & p) /**< Check an outfit for property. */ /* Property flags. */ #define OUTFIT_PROP_WEAP_SECONDARY (1<<0) /**< Is a secondary weapon? */ +#define OUTFIT_PROP_WEAP_SPIN (1<<1) /**< Should weapon spin around? */ struct Outfit_; @@ -23,6 +24,8 @@ typedef enum OutfitType_ { OUTFIT_TYPE_TURRET_BEAM, /**< Rotary bolt turret. */ OUTFIT_TYPE_MISSILE_DUMB, /**< Dumb missile launcher. */ OUTFIT_TYPE_MISSILE_DUMB_AMMO, /**< Dumb missile ammo. */ + OUTFIT_TYPE_TURRET_DUMB, /**< Dumb missile turret launcher. */ + OUTFIT_TYPE_TURRET_DUMB_AMMO, /**< Dumb missile turret ammo. */ OUTFIT_TYPE_MISSILE_SEEK, /**< Seeker missile launcher. */ OUTFIT_TYPE_MISSILE_SEEK_AMMO, /**< Seeker missile ammo. */ OUTFIT_TYPE_MISSILE_SEEK_SMART, /**< ATM equivalent to SEEK. */ @@ -51,7 +54,8 @@ typedef enum DamageType_ { DAMAGE_TYPE_ENERGY, /**< Energy-based weapons. */ DAMAGE_TYPE_KINETIC, /**< Physic impact weapons. */ DAMAGE_TYPE_ION, /**< Ion-based weapons. */ - DAMAGE_TYPE_RADIATION /**< Radioactive weapons. */ + DAMAGE_TYPE_RADIATION, /**< Radioactive weapons. */ + DAMAGE_TYPE_EMP /**< Electromagnetic pulse weapons. */ } DamageType; /** @@ -70,6 +74,7 @@ typedef struct OutfitBoltData_ { /* Sound and graphics. */ glTexture* gfx_space; /**< Graphic. */ + double spin; /**< Graphic spin rate. */ int sound; /**< Sound to play. */ int spfx_armour; /**< Special effect on hit. */ int spfx_shield; /**< Special effect on hit. */ @@ -134,6 +139,7 @@ typedef struct OutfitAmmoData_ { double damage; /**< Damage. */ glTexture* gfx_space; /**< Graphic. */ + double spin; /**< Graphic spin rate. */ int sound; /**< Sound to play. */ int spfx_armour; /**< Special effect on hit. */ int spfx_shield; /**< Special effect on hit. */ @@ -275,6 +281,7 @@ int outfit_isBolt(const Outfit* o); int outfit_isBeam(const Outfit* o); int outfit_isLauncher(const Outfit* o); int outfit_isAmmo(const Outfit* o); +int outfit_isSeeker(const Outfit* o); int outfit_isTurret(const Outfit* o); int outfit_isMod(const Outfit* o); int outfit_isAfterburner(const Outfit* o); @@ -288,7 +295,8 @@ const char* outfit_getTypeBroad(const Outfit* o); /* Get data from outfit. */ glTexture* outfit_gfx(const Outfit* o); -int outfit_spfx(const Outfit* o); +int outfit_spfxArmour(const Outfit* o); +int outfit_spfxShield(const Outfit* o); double outfit_damage(const Outfit* o); DamageType outfit_damageType(const Outfit* o); int outfit_delay(const Outfit* o); @@ -296,7 +304,7 @@ Outfit* outfit_ammo(const Outfit* o); double outfit_energy(const Outfit* o); double outfit_range(const Outfit* o); double outfit_speed(const Outfit* o); -int outfit_isSeeker(const Outfit* o); +double outfit_spin(const Outfit* o); /* Load/free outfit stack. */ int outfit_load(void); diff --git a/src/pilot.c b/src/pilot.c index b93ac5f..1897300 100644 --- a/src/pilot.c +++ b/src/pilot.c @@ -440,28 +440,35 @@ void pilot_hit(Pilot* p, const Solid* w, const unsigned int shooter, p->shield = 0.; dam_mod = (damage_shield+damage_armour) / (p->shield_max + p->armour_max); } - else if(p->armour-damage_armour > 0.) { + else if(p->armour > 0.) { p->armour -= damage_armour; - dam_mod = damage_armour/p->armour_max; - /* Shake us up a bit. */ - if(p->id == PLAYER_ID) - spfx_shake(dam_mod*100.); - } - else { - /* We are officially dead. */ - p->armour = 0.; - dam_mod = 0.; + /* EMP don't kill. */ + if((dtype == DAMAGE_TYPE_EMP) && + (p->armour < PILOT_DISABLED_ARMOUR * p->armour_max)) + p->armour = PILOT_DISABLED_ARMOUR * p->armour_max - 1.; - if(!pilot_isFlag(p, PILOT_DEAD)) { - pilot_dead(p); - /* Adjust the combat rating based on pilot mass and ditto faction. */ - pshooter = pilot_get(shooter); - if((pshooter != NULL) && (pshooter->faction == FACTION_PLAYER)) { - mod = sqrt(p->ship->mass) / 5; - player_crating += 2*mod; /* Crating chanes faster. */ - faction_modPlayer(p->faction, -mod); + /* Officially dead. */ + if(p->armour <= 0.) { + p->armour = 0.; + dam_mod = 0.; + + if(!pilot_isFlag(p, PILOT_DEAD)) { + pilot_dead(p); + + /* Adjust the combat rating based on pilot mass and ditto faction. */ + pshooter = pilot_get(shooter); + if((pshooter != NULL) && (pshooter->faction == FACTION_PLAYER)) { + mod = sqrt(p->ship->mass) / 5; + player_crating += 2*mod; /* Crating changes faster. */ + faction_modPlayer(p->faction, -mod); + } } + } else { /* Some minor effects and stuff. */ + dam_mod = damage_armour / p->armour_max; + + if(p->id == PLAYER_ID) /* Shake us up a bit. */ + spfx_shake(dam_mod*100.); } } diff --git a/src/spfx.c b/src/spfx.c index 2f42b7f..f7faa81 100644 --- a/src/spfx.c +++ b/src/spfx.c @@ -143,6 +143,8 @@ int spfx_load(void) { spfx_base_load("ExpM", 450, 450, "expm.png", 6, 5); spfx_base_load("ExpL", 500, 500, "expl.png", 6, 5); spfx_base_load("cargo", 15000, 5000, "cargo.png", 6, 6); + spfx_base_load("EmpS", 400, 400, "emps.png", 6, 5); + spfx_base_load("EmpM", 450, 450, "empm.png", 6, 5); return 0; } diff --git a/src/weapon.c b/src/weapon.c index 40df881..0dd086b 100644 --- a/src/weapon.c +++ b/src/weapon.c @@ -62,7 +62,8 @@ typedef struct Weapon_ { int voice; /**< Weapons voice. */ double lockon; /**< Some weapons have a lockon delay. */ double timer; /**< Mainly used to see when the weapon was fired. */ - double anim; /**< Used for beam weapon graphics. */ + double anim; /**< Used for beam weapon graphics and others. */ + int sprite; /**< USed for spinning outfits. */ /* Update position and render. */ void(*update)(struct Weapon_*, const double, WeaponLayer); /**< Update the weapon. */ @@ -345,6 +346,7 @@ static void weapons_updateLayer(const double dt, const WeaponLayer layer) { /* Purpose fallthrough. */ /* Bolts too. */ + case OUTFIT_TYPE_TURRET_DUMB_AMMO: case OUTFIT_TYPE_MISSILE_DUMB_AMMO: /* Dumb missiles are like bolts. */ limit_speed(&w->solid->vel, w->outfit->u.amm.speed, dt); case OUTFIT_TYPE_BOLT: @@ -439,10 +441,29 @@ static void weapon_render(Weapon* w, const double dt) { case OUTFIT_TYPE_BOLT: case OUTFIT_TYPE_TURRET_BOLT: case OUTFIT_TYPE_MISSILE_DUMB_AMMO: + case OUTFIT_TYPE_TURRET_DUMB_AMMO: gfx = outfit_gfx(w->outfit); - /* Get the sprite corresponding to the direction facing. */ - gl_getSpriteFromDir(&sx, &sy, gfx, w->solid->dir); - gl_blitSprite(gfx, w->solid->pos.x, w->solid->pos.y, sx, sy, NULL); + + /* Outfit spins around. */ + if(outfit_isProp(w->outfit, OUTFIT_PROP_WEAP_SPIN)) { + /* Check timer. */ + w->anim -= dt; + if(w->anim < 0.) { + w->anim = outfit_spin(w->outfit); + + /* Increment sprite. */ + w->sprite++; + if(w->sprite >= gfx->sx*gfx->sy) + w->sprite = 0; + } + + /* Render. */ + gl_blitSprite(gfx, w->solid->pos.x, w->solid->pos.y, + w->sprite % (int)gfx->sx, w->sprite / (int)gfx->sx, NULL); + } else { /* Outfit faces direction. */ + gl_getSpriteFromDir(&sx, &sy, gfx, w->solid->dir); + gl_blitSprite(gfx, w->solid->pos.x, w->solid->pos.y, sx, sy, NULL); + } break; /* Beam weapons. */ @@ -723,7 +744,7 @@ static Weapon* weapon_create(const Outfit* outfit, const double dir, const Vec2* Weapon* w; /* Create basic features. */ - w = MALLOC_L(Weapon); + w = CALLOC_L(Weapon); w->faction = pilot_get(parent)->faction; /*Non-Changeable. */ w->parent = parent; /* Non-Changeable. */ w->target = target; /* Non-Changeable. */ @@ -766,8 +787,7 @@ static Weapon* weapon_create(const Outfit* outfit, const double dir, const Vec2* } /* Set angle to face. */ - vect_cset(&v, x, y); - rdir = VANGLE(v); + rdir = ANGLE(x, y); } } else /* Fire straight. */ rdir = dir; @@ -830,6 +850,52 @@ static Weapon* weapon_create(const Outfit* outfit, const double dir, const Vec2* w->solid->pos.y + w->solid->vel.y); break; + /* Turrets are a special case. */ + case OUTFIT_TYPE_TURRET_DUMB_AMMO: + pilot_target = pilot_get(w->target); + if(pilot_target == NULL) + rdir = dir; + + else { + /* Get the distance. */ + dist = vect_dist(pos, &pilot_target->solid->pos); + + /* Aim. */ + if(dist > outfit->u.blt.range * 1.2) { + x = pilot_target->solid->pos.x - pos->x; + y = pilot_target->solid->pos.y - pos->y; + } else { + /* Try to predict where the enemy will be. */ + /* Time for shots to reach that distance. */ + t = dist / w->outfit->u.amm.speed; + + /* Position is calculated on where it should be. */ + x = (pilot_target->solid->pos.x + pilot_target->solid->vel.x*t) + - (pos->x + vel->x*t); + y = (pilot_target->solid->pos.y + pilot_target->solid->vel.y*t) + - (pos->y + vel->y*t); + } + /* Set angle to face. */ + rdir = ANGLE(x, y); + } + + /* If thrust is 0. We assume it starts out at speed. */ + vectcpy(&v, vel); + if(outfit->u.amm.thrust == 0.) + vect_cadd(&v, cos(rdir) * w->outfit->u.amm.speed, + sin(rdir) * w->outfit->u.amm.speed); + + mass = w->outfit->mass; + w->timer = outfit->u.amm.duration; + w->solid = solid_create(mass, rdir, pos, &v); + if(w->outfit->u.amm.thrust != 0.) + vect_pset(&w->solid->force, w->outfit->u.amm.thrust, rdir); + w->think = NULL; /* No AI. */ + w->voice = sound_playPos(w->outfit->u.amm.sound, + w->solid->pos.x + w->solid->vel.x, + w->solid->pos.y + w->solid->vel.y); + break; + /* Dumb missiles are a mix of missile and bolt. */ case OUTFIT_TYPE_MISSILE_DUMB_AMMO: mass = w->outfit->mass;