From 7d586d5a2b417ea0763d9490422f2e6b84f38122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Wed, 13 Jun 2018 20:17:46 +0200 Subject: [PATCH] Added pinned effect, to prevent ships from moving --- TODO.md | 1 - data/stage2/image/action/pin.png | Bin 0 -> 25714 bytes data/stage2/image/action/shieldbash.png | Bin 0 -> 39591 bytes graphics/ui/actions.svg | 615 +++++++++++++++--------- src/core/Ship.spec.ts | 6 +- src/core/Ship.ts | 9 +- src/core/actions/BaseAction.ts | 4 +- src/core/actions/MoveAction.ts | 5 + src/core/effects/CooldownEffect.spec.ts | 2 +- src/core/effects/CooldownEffect.ts | 2 +- src/core/effects/PinnedEffect.spec.ts | 62 +++ src/core/effects/PinnedEffect.ts | 22 + src/core/effects/RepelEffect.ts | 2 +- src/core/models/ModelFlea.ts | 27 +- 14 files changed, 515 insertions(+), 242 deletions(-) create mode 100644 data/stage2/image/action/pin.png create mode 100644 data/stage2/image/action/shieldbash.png create mode 100644 src/core/effects/PinnedEffect.spec.ts create mode 100644 src/core/effects/PinnedEffect.ts diff --git a/TODO.md b/TODO.md index efa401b..ee3d8fe 100644 --- a/TODO.md +++ b/TODO.md @@ -75,7 +75,6 @@ Ships models and actions * Add damage on collisions (when two ships are moved to the same place) * Add hull points to drones and make them take area damage * Allow to customize effects based on whether a target is enemy, allied or self -* Add anchored effect (cannot be moved) * Add a reflect damage effect * Add untargettable effect (can only be targetted with area effects) * Add damage modifier (to change the options of incoming damage or outgoing damage) diff --git a/data/stage2/image/action/pin.png b/data/stage2/image/action/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..4b6b1fc9e49b05e9788416dc23a8f6af1424d979 GIT binary patch literal 25714 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

qg@q*5DTomc@QF9d6- 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 f2!f)liVRrFB>4XTYcWpF literal 0 HcmV?d00001 diff --git a/data/stage2/image/action/shieldbash.png b/data/stage2/image/action/shieldbash.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ba0f4830d8635e78fde9d2150355c2971388c1 GIT binary patch literal 39591 zcmXt91yodB*B*vWX%LVYQlvvbx|EP+XaqzCX$0vQnjsYwq)Skkp+ibKr4cEKp$F;i zVg7m7zrMTHUH9BN>%`vsJbUlw#Odq4ASYoW0RRBxni^_`000iQhyx%Zz+SApN+H+_ zp0|poF%k9%CVB(I-V=Ljn0o^N6utkQIB8EPn6VEZzE?MUZ{z`a?`P-b0Pyqk6LNBQ z@wT_~bP)3Ja?C!EV*&u!0h(&c#{M~bZGJhfranA36>WOub4$O~sZ*nss8zxSi6+8` ze`ttxZHJ3`F**`3-pa4n#9sE#U&+{##o#Q2Rd>ySII{&fw23}@r&j_~E8nYL?i>G$ zYMaSY)CD7V{yW-3KK(%+nsz+128WC(*o6dblDpcGTF!OT|EP`@{IBTG5>9ar_)#68 zKaCrz7^m^zO!SB6QMEeY1?5w|mD`{X1N2vdUeYJnC$W$FDKF6IPKCCM>SVFP zKZsUDI+?l^_FAVy6|b%#OGsrLR-TFV&>!kVu~gW%l(tcwRor_nZfs;gGnXL2S~HG2 z%P7xnY;}ah2qH9J_#@h#>1ESf*PM=6yNb+UE8v7=yUn>j_M`t=K}cy&gmzYudpS42 z9hLMJ7mcjoDL@dPigdAEER`b3WnYO_3yMh>%z?sm`kzIGO0KeATsCzuztCo6SRXlv z?09(5&A+ft*`4m|8CIhX$d2NOP#oK9|BKuWsA#B~?yub`OY~>s?qv=jzeO6@o5cu< z%|TtMIzw%9RXScNOCel8+&pT5W=rVkq^EEU@eu)sY7@P}fFPh!K%Q{Y^d*{Gc?h7M z?$m5W4@mu1MxZ=Fqf6ZLG3Yz;mh2YKm_UK~g6VvTFSYaIz999S9=2)%5tSoTqr(@( zZWza&sL=VKR4$%)Q1-Vn4v_G;w=iMi?t3|qSn}XU@0hqm!jHJH4B{gqR;3ZhMzcA> zQ@^v!0>N59p^tzc$<@G%;Cp>Fr#KfO$Py=hWlAEz0kv93LDfb3U&kI85ckmXTNjUA z0-(Q_0CM{d^1iPBhtAZW;nPL$vFkCJd>EN{klLHfdCHXiP)OXMbQo-qvIp=|T387?F^6%Oj-jcF$0qtfR6!S@Q;~z-(Ll-qcav4a^nGcUl7g* zx9z*sz^|0sq2X-jm(FT9WW3RWz&Z9GM7DS{p4&-T`-F~%p@pnG+uA_nU@be|U0+{c zSY`+bPNsOC>p)i2lB!1KjXa1`#UzScz?@1{?G51Lvl;-E01S_dlHVABOT_^Y z>E~mo1Q0x*R_fAMN|Wp9E72G2Co-F7eA3S+3l@dDCfb3AXZRCD$LRBA&gEtV*7@Sa zT->&9L+N7*d%RS(k*vWLCENf@u4)^s=-`x3B`A&wc+?n9kOMw(#c_i=_O0ILkWxdC zBDW9gUc4?BT}y!JsXb*lh7H1DFSPPt7NFxCxS&ETx8W15bhX5fOu$4KCDlVBjX1KF z*Ayw6-;}=K0lpUVi`+)N!jaS}>W6VSfE~nQz-jUz6G>Mx8L&veXO}O4M7VgrG}R{r z6-BwvYd2Q&Y;zYQ+MS&j^u*;fmUt6=JVf{Kx|>eqt8@qD z)}`bOnL#xm=tQlThRQ}ANPTRaRK>+wb~D06R3@p_o*Fo^he+iH>uCz&nBaWKWu!C* zNy0_=ofEmgf(W#@0I&(VV8MGJtv;|N;;TN8wpgnlR!#Dd8dS9Zq?@BcbnugSde+ zeH3Lij#QbOCS3WHIsjKF$b5ng}zK+v?mCEjZ;xs&HVawqjO8bK|7{}K*v&BAS+)HHu zi4y|}^L{X-{?(hY$g4<~k^`$Nwa_8+{{E`!JKtad^367s?L8w9+kAJqN@CkbPw%B8 zJZkig1OW?gi#fb`b*Ch#scaI76Jb^GLL>45rg->+86|RHbqpDCl%zbKR%dC0Isq9Q<$e|U- zcM3BE#EJ6QKYf^@-6P`qWq4DUWq|m?3BO0fc0#l15aLeNrGYg*USuTlB62K^@Cn=_ zRMx1p&QxkV-g7R>l+Lo4=aRNF`s6C5F*)8u?6%Wk>{JPO03cmdd^ZbaXJlzr*mqDn zkkwcoU%@Q*RV}#Kv1B% z!K;?zpq3j*+YrgF!JnoTv#BOhibF`<1yEr~fgVUE9NQ6hNw5nbB7_VqYc?D;UctzQ+ za4ilF?xeIO>3Si$?xJ_3%x4T$N~^EFbV9zb`f~~-(IcrV zO5nhNFT)r?1P=+i9#Y~C+6_L`*NySAe@UUDRX|oSVxa~2l^6gk?)4Y=%OCWv1@+!i1;zxApsHwx|ie^N*Il@fYp*b1&T;vT*_Omi@=Z)!3d zQv-4GczUM5V?2dkZ!s$I$-Dr@sd1T1e=JOiS1Y0x(N-(QNr(Xe9WL;X3U?5lPxeCm zNoqjV>bew(DrEIi3X*UOBKbi+ykZe}%X@c{lFHT(fh~%Dn?;w6D$3EFe#C`W8ANb3 zEiDo+tuT6^YP5GUJ07PR2r$R^I&6+e21iEBlYNMIFtIQ(QO8_@v*`0@YDyn6O<>Ve zss_PKUuP=;^O>jp_3DyjiB1g*ZnJ)RH_>h1ambd9_7@0DsJnh6+lW_>pW}Vd1~O)# zU-TUlP6s8dWnCvd=hU657XTULp;9cEXfx!FC)y-I3WxXl<}UW zMTM{%Eh6?K_2%yfL4Xz&VUsjhj_ucKwx2(jW?X9~JkF=p`kT80PBV+L*r)JGje3?# z5l8e}f*W8989HGBP+lpNH;@4A7~!G>?^s+|)GdVioRbXrS)$na?|@qB^RO2D+GA|($kimHfGZcHu{T9^kOI9dYG#57)?xNPag<-w{mPv;6UQU*`rXnsA0i1iRpq?DKpj@C|Yi;j*q zOm~=m$ra&U1Mk-@?p4xM*IFx9Q!B}7Rx9R)B&jzS7p3sMrb;egf@zeJ*fdZEgZ+zk z%HV`)++C(%+)fxgoPR%a-o@`=+3oV>VTrtW9V8IaUoV>*>6KC|_aYrt-!#WAce5RT zI9$T`g3YI1Zgu-{K=+TY=S}O$tGq9D-cf}MjNoxlQ)Z}{#jz+Q6E#POQNQWWpbn#; z;>I(g_Tr{|4eW!%ioD({UJye&X4&`-7792iL!b}bA5eF)6APf9ga6gM1b&bOZX01t zjnH4_@9OI6-iZ%87c=!VGb(9D4S@`)Q)}ZtgBt|k4s?RVtzx(}v=`9w@*RSn;n<0sVE-rRNRQjPuhkTNDOH`>%-(3?2_WdcvFI$-)L*d?$1k63#(|Z?wwGml~^-8UKboiAVzwPXx2& z&RUruKth|8Ctfj^N7`>ZBOox%t&tX3mASLdRPHXXTfF0?KbjzW$I z3C*#|AALkm_I#MTg`O463!I}p!yN^ap=&gozj#^4dFB79UH01Nuav^*o4VCR9Q%Nz&}JsC5U)yUce1gD}qIl3PTGI5`?33 zJ)%hq9jWT#ImAg&1Jbg1%K^O;@ZV{vb=`VQO}SKlB74mVLRDJtSNd8{m% zS{bRQ1_Yn07rP)C#P2y}{pMv4mJgO1&%AU|A3tG68VXQOxBf6iBdp9KCb z<3)W}JpXeRH=w`)E`5P#gQIvB8QbWVZPD3Il(_3&wRLB?HEXV6RJG);_t4%d-67Mv z(x_@SC^H%X=D2tj=|6IfpL|8=87cVV#n?R{7;t}fc4iQCaUgH4=FD%5TVKg9Nnb%- z&tFa#{@J*pxTvNy=5O}7db-@rzOM7(&s}%SO}5ARx63is7sH3x)$snRFBVSom>AVNM8D}KY4r5ifIOB=@(E;!(k=`7Sz+J@F+MF94^eS zkl^p<(IMP))56@A+j^Pk+R+d_-36jmUj;9j*hi`@(KIceKN>-b1mrC&iHi$|!3QWF zF?$l0$9;4nRC*yN{BA6IYHG@^!o(%YE~ALjKQ_cpy?ZDNcgpXMbD2xJh{!fF*Y8Eh zZ2s{q#sU-`7Z=CHpZ1-BIe`~Z1bhoN*4FRkXL=kTm8Y9^BefW;{eCH_F>usm7dBl^ z!N3T*pU3Qun%YWhUOvluY|{MUfx^|1_-_ftc{43JRX3DX_TVm_+P+mWdD9Q3sS{WP zr0!w;=}$@Xvih6kNzMpXV$aJ{Wn?Fn4)6sTPU1YwI}oB#(`?}wamh1cu5s4fhvnZHnIs6~(Y7WQ!sAv%6eG3`}nJt)113+CbQ=_JxeMHH6 z@Sfy9vTeRW>fya`ZSSN~2JDtDT8<+wF^IGap;2i&#+I)ip54S)xBBIhmS}*x1;)E~ zJz5%q&(Ea@a=GO9@NLuzK!8I30j)-vhq!!7Go2HK4X<9^eyY0SFnM+vc=-)=&31;o z0{jg6;h`97o>vJj) zcAGqImgmzHffvT9%`Ck~Y^w&;!(3Fq3f8W>9T|D)e>VBT5pj2D#^s4sX{4BV-Q~1X zy3X?ZUAJjAD<8K-=f(%5T?`QE0b5^6Ut7CsdzgqZE$HWkZcHa5sTiIMSt6>7iPT=+ zY`ptaj!}Hh(%)Oeph^ex$7QVj!IPdK^dfIPZw?(^t<$$_o-X%J|a+ zOF2LOX!?nFt~K-3O!7k?`w3k*6V1oN+wQ&NyPphr$|9nolbu6x_D8QNe8^ZIb9tK4 zbTWd2B7r|Q@PM}1Ub=~XVLm;rfkPI4xVb#oBgDOBJi|RZWT2rrKfLRURk&%FpAskB z`o)GjCbJPh@_X zQlkHicTeCE^{@^g!F`Zk{SQym-pP}3*_+ZhCgn%A-b!NNAvzcl?Wdv**y~Zr+L`A^ zCn5|q7Hr|8IaPUA{T5YIzXb8!nA5ZpRz1B7VnbtB#6Z&28Y|V@VWQE{=^s|Py1Zsq zFNey$r3AjJ_p{@uof&(nqjUZVKyV>jil1?hR9HWoV&zLKS^&red5`=0Yy`vz=&YWQ z1!O6obrRh^F8~exrqwV42me*(QLH)*pNR$^k(uZ$OQWC(EPj3%AVAd1rPB9~8~ zOjJrDNUz9;-{k52m~yv7<;05QJm~S1M0s_{c=oCjQDDI_)eiHwtt!vI+?v$;ORbHm zWzRRPMjj97p8o#&;ouohxyhl>?fuX{SLre`v5t0>ROsfDj!VKr=rdWA$MVC&NFq*c zqc=_w0y+=o_CgB^KpIncPFa8?Ar3sMZV@%gXqPNQ}B4%MkMnhW<|B@L;iWu*lFHrc{2A2n92-+qlz0r4C5QgC6#kgCB!2k zmK!Jiyn5R%RMGY^-fZ^WH>)v*C+eRIr08u+{=Y-AK(iNS$y=hl0?+89*L^A8AORB$EJ4a<)8jV)YL99RNpOM^17%4 z)*e9jXsXXRkGEaMj7y`>Ttt6Tm*?Z9kKQjKPdqwyO@;3_{gBr` zA+2EKQ8REb_35*H-@@mL6b10XI@*BrqMD{Kb~36yhp2aCK+naR0lBkOahqz~;e_C@ zkW1FN?>CoGiY=)7+Yikp8q$12iLIkGnsCGHl;{(o9v59Id-B?%L`}4I>D_L6a-B@x_8Zq4kWO)o`doLiMooW}#uy8-4F6GD>M zG=hm(gYHA}pArB5{d*P`5Br?!rS4TJ>J4TGgN5K1YVZ*&`pH_6FRUSNP_jGcH{XBg z=r(c()LA=;}krZ7hg7I^j$YX6m%YN>d#*lZ5jO#6HJ;+<#x1g2F3c;MkTTjKQj4Ca32h zu`S)|A(Hj%A_#C-uYb#XVl@mhw4ctZMTlxI#UT({I>s)#P5etStcDWXiN=y|(mVra zM+~4hv(Q__AqIUJLfxk`TvI!#)(CIQ~n5W**~ zw3%!!=|XS3^P#JiOH&B={a4S0T)%nwsi~62pZ{{sO5>hs);xpPz>7&-T9V8vn7;N~ zfO%^B%mfBuq8k8b2_|`JM!8;g;xj$2SaM>P-@)VH*XYh85oGFU{x_$&jLb|=C3VRv z@l!lUxfGe)*PD+~Z{jmQyxw|Dl}WorOjU+(2CF{-S^RBBhyQhKKT0dZdK#OXY&Ubf zV+8uevGl$Uha9Ih;}3~wr99#QfQ^ppF&nflC9R!0SpB!V{b8Q9nN`Mu@TydQcMMg8 z7oA-Rg(80s!Kxkm9ioSkRG4UGz#%H_S%e|}E6R$8H$gjCv~#;Bo+lc)*>HtE#*}Q8 zZ<7j>_R1M-G94dpK_D#=9ijuQ4@rd+Dbrnu zhQL?$MB}Su_VWJn)K6wt@I@2NuLs+X&#U(H(YIg4(4Ukrdu+jHY~xUM#8TznA)~Bj zgmCcrZr7&iD;i?$0)axJfo?!Z|L!%$o4e7#N<4xEkj2BA z1(tbKb~v#v>> zX*)n8U}e7*4@+0$cK1s?im1AOah|?#$e7hN`&Qz^%~wTC=Xin!@zNi|@;|_s8=#iK zADKfpkG41Rvsfst$WONuA{`6~E{{lzX6qw*B6-*Q#3nQs6(HZC-Eq^gvxhNdyPKHb z_npelT~6{vG&`-g?2pOrGqm5Zz5D(Nubevm?T7$3#MB{$3Gq_e7u!l~ul_~xW}IrG ztlIo}tV>e3d}znVq%8nAu_mO_+j>h(te9zIjBRLWd!@O_7HHAbaq}RFFUm%Zr^)so zldue0f`0XFXeh_c9;(AQ;Ar*5^PQ;&a#s`L3P&j&iphx`Cb>zi7Gw6|l;t+)UCsCU-r+RDOQNFm{{CEPB7k7P{G8l^-}@?Wah`7c4Z| zhd(m97rs#ZbO&2^_4Nq8O+3REJ&=mRoQpms)!x)@KvL*V^V3-KW2!ta5Y3(yHbC&w zcv=AQQcrL86W2f9@I3nFqR#SIRdryj*WZV-laB80m4E+jfFYIesb}J|xu1x^xyC7v z=`%f(cayDkG7uwHkgY+{SaI*VRY##KFDHnvd$~7yd>DF_?jHf4~3gXR)>NxGeh zBNMjQh`DX;uoTE`qt0Uk37BFn31bi}QW!oFJ`3qTALtX;Q`}Fc(UZ2LLVQPGC=!Ny z3*E))h1^U>-u^mesS^*Ha241y<*SYT*H(9yDI6@5m6`n@O2#%tLrn{0b&#r*tG?4M z_De=D{*xx8qD(_@xEAhRnaZU}?vf3B0$Z_NFHne6-Mh!eBVySA9rLaxIo^^ym8BXw z8N4}zc-{(+i)i+m#zuS~rZnmCG;v@F>Pg%2vzMM-ruXs|dI>^QqWM>-@wWAPBi-xP z{~Tj?f$;;c5NMSM{#f8~0&Bo=rtr_rAw*Sx?mI|dB6MOe5DX*v?7;5iXmc`_1*{cN zouFOl4@-kIbxHz+wmT6iJE}OuM-sMTVS>VAqZXlLedB zd9`$|QXSo{(-@0Dd;6Nn;_>^1FGYx}58E*Q@ri5IEje3tH`T^0xDz*Uo3jUOh zfaK<8narFVtL+1?>H|DRq6e(;6D!L0`BZR>$m%5yo_Ts23WfU4So#dbBfYM24%BPT z;WZD4_s+9@CkZjmu+~&lrK0fL`%4#mKa64ZO?{(^y6Rm|Mo%ihs=bZA_Vie8-1qHuqSH=zg_O%dGZr}A?h;IZ!{PT)LbQA zNM80{MU7z?rbfmb%y2Xe_Y3Zak-2UlD(T~3TpOb(A|jT z@<&$aVoezbHcLwFqO)L8<&*Y3xH0;-b1X$PAzU<}#L%hIuuP&_ zc%T@G6fNI9Qg(an%l9(Oz!}r7mM@XCwZ-H^`1wSx3jQgJCQm=LWw@2qd_a=EOiWw7 zH%*P3di5wJS2mKgJ=m_^V3jcJh2O!mf8&ZrepLfrv9?fS0Amq83pQX&>JhlkTy>1hu1y;i0PEhs&r`O@P+eBw)^>5b!r!1?0KZV!>mL&txy zj$KXexX;0q%wwt)PcExo{&sa+B?N#a=ozX-6iMgxJ{5f8YFc@MVLe!E<26nz@b9nh z-QyQ9q)T~5swXlW75^vqDC(Ih!&W@5R)q;7{hL$bP^d|Cr?COxIn9CBg-qub}zd>|F~`?Ap;bR zNZ;K!_PvmM?>zCOO@6CGtDAABe=&L2KT$8C>#fM3z}BV5`{RtXB)?iC(tX(j2pkl+ zE^e~)qec8$X-oQ~C&4L%^^qcEzb`TOn4coaMR>!GYPJqz(D(b~QjaiY#_KmHOYbQNM+oqBHbDM*op8nnf*6NZj`caHS$Lid3 z1=3L#!^bFGB89sTsC+>I0=1(EP|cwKI>ow@10<0uimi#x-eVgl4qGo-|~)w-v>`o!)lK8q`jtqyru=97T*G@Q>l zpPYpPX4l7Q1T5?adkf0 zX-O+KuGD$5k5DD_>K1qRiJLo4wh+zE|56(ZSdu9d^L8klhL4Pnf@|c;<-|0%Z9jJ6 zaEF17G2s1sf#D&nBx{YN$&I_{HuG3jm)Tc}Yv)EIx~(86Ef7nb)`XMaop9*>?&Q7D zk9o6<7j-pFYp3!--|~-SF^6nFac=K$&{FTf&`ym1rL1u6O!7-p8sCua6a^kEL8z2p zH+Ze)LHkPc_;TcG9_Bt?vE$RXW5f$~0;m~Vod;o^DM_5Z%KUqwriH%r@o;dGPw*pS`lijnS;sS4UpVpP4t z!TS&1zmkxZQj~FqMnBc3eUubgJk@`P$C_K7 z1mn;hJi9aIvV~xnk!@Tzld7^$gIVDb*YlY*f4$JdsE(@}%-ua5ubqE7yGXIgiXU{> z8d>#Odw*FW%KJ?&&xx+fFM|tzXC%!%RbNsw z)ef(^o58c-T|o%IrQ{|MaM#>y!aXkOtMqF#ASulSWavHOGhoQD$}d|P?`fW4A01V+ zW)r$8IqBxN++cTENo4PSNVfPf@A8RmuZ6$euUo{2;Ju30@0T+*R-|SPCbrJ6i_X8z zc5KCVQ0_D~QYyxLS?HIQhd#*2M*{-ji{FbmZt*k$m!z1Yu`dJW`WoFFRWNQ}Z%?UGyPBf!3uTXWN1sGYUqu^o6oo+-}fzx(Bj|2*+szLT(d z3ffL#c_-jdZR-%@DH0k}uJw4hNv~#-`A)Y5%_2$ad;(}~U9y>!#{za{Z0%2Yj#h;5Vl^Hd)}v4N#@Y10^Q?(dcS z@*e!&qr|gO%^=;OZgsm4N_WlIeJi^RAs#(x5}=6dHt`kFR1;Uq?holf*@x|y_ePi- zPB!R6lPX5M8B<{atW&d`rDlW;={Kmf}(>9}7?(Ccp}NJHx?+pcuF_M2Zi!%W0(5zebLe0iv6h?yK`I(Ugy!yo5{8=Y{w+$f4t z`f4XUk=K&>g~=TfIz19P!y{HHa#hkPBrcP`zGS*2H^Z&oA33DM%z^Y59RZVls|T5F z%q^7i9?V##H(~ssU8)U?LRf%mpum-!v|Un)(k|FGy{j8TG9#zS_8E zqUgvw`e3K}G`nKx5WSk8yPLzD#@+Ns>&{6}-r-=+wCyB@JPAY8KVKENDcH}5U$Eo{ zV5h19$k`_nc4CGfgl_kpo{~;aUwr!hXk(veW|x^SP~>w>`qNz0L;5YqY{OybqAx1< zVn+6W0{n+zTEG5?khWsGel5PYfXUH{t}x!a60hKoBt8L6)D6Qo8QX82-zYm_?~!(* zP^<@%erjb85t5zeuS1Y{rzNo7(-~C0#jffjg|I7cQqtwVFV^j=Oym7)-C2bSAQj3l zcC!Xmn3d!gx_6O^nBDx&q3V^1($3pZ6sEo9Rn?)5)?X?-eQp5mZX3i^7)S@w=i`u ze8|u~J-+(0xulR*5I3dWp<=s_K?WDIr3zx&HSy)iKk^{X(Pz@y$NPuDDDM30Mf~y3 zFnV^-lb7LICBJ139hU?9p6RW^`ZC9%2TKDAtHf?(4{imiI&FeiRE5WDgUb`D_y;Y> zn_NRe+3n@8N=~x8oqoH!NxMmF8d_cLC#XOUQo~}3m|P~En!2s7et2!cpOuMxC3~CW zP@$FetxZVfs~0YXFpX_eb^as&fYZ}cIu~wW6BmdMTv5QcSEglfXY{UHv@WWMy0rVY z3p^Y3K>lPqra#N~*;{hW!+pZSBc>|tD{u<0+lCV%e?$jn;~KT-weV53J@}P`HH2?=Fv}h zkeuliX-6-?<3hACHJYUevrz8R!DaHFh762%aRjS)ItL#lLsM0&%*B%!*|b0`E- z1?`)j_264RoJ%ShyMFhupBY05j~8$Xzr7>Q`7+zb2%hfa9OZa-y->W5V?&mnCY_R*x3*R47aj*+O>S$s zfw9`R7-RbWW_5Ztp!IU^T>THjs=hiW_;HQ1ISH^-dX*nxa*{JV)|?7YXO32_R%8+x zVes_N0B}Muba@yq&Aa-^Qn>R-Vy#9Yb(sbj3@d?cc5^SO@uf+_ouRt=H8AicfMIt!xU*yUb<^``<6wvt1GO z%2b7nx|wnA9%9Yz*~15lCxbK>DCuq)?BCXfD!bP%F+^ax1baEvo|T*)zji;T&OJFg zEKBC~mYKR%xuHoK+_MlT;ccHx5>BtvSA)Kc0G#YXeAjOTBEL^P65~i#QHDYR(bM1p z3#t?nQqz{G>Nl5&QYhB#!GECG;;m}$Ix=3Fxoscm`KHu^l0Tw+iRHS$I$&CI{2qxp z`h~LHPwu{J#~d%1M%gvp_u(Z2K5M-@@%Di3`X*MR9Z_3D48i{p!haLje=%M{D4!Co zR=mRuOoL)qS6{G6N-cU>7QowyZb3|9+M4D=OOEXzU3hur+8=Q4e>^So^z&y#Nhi20 z7Fab9QjE0gu>FyN<|NQkCuFOv#)2#Up(Xldc#1C=a~&Py_m6JYb#NEyB$>kV^^w~8 z2mq}QDb77+t%lxwfues6S2eBqlL<2uwA_dBqUVSc6wg~`7o{)Qli7dnl{hYe`O|KK z?gX>Z*!6k1=xo1*}l*0rBhu5i7+$nL;HT_i3#wFGsBJHCRN|xtQB8b0Sl@0Yo*$gi+&h+5D?yIh+R`#R zP*P;43MZ%P zvNr-GoYrwZQc=U}Ft(T?{aLS<0;2QD)rHT`H^*JJA70ud2;snBvpT`%TMuAGe77Yw z(uYGn`*$J(|Gvxn3{2$(?tq@p-9wMNI?%$&*I{SH#^5)*zv$RIKRn^|#xtf%IAz}D z^hC)o?0@i;TT6iRc8ABu6k+L!zv7-GXsDAw%^oJs!TXo!;5V{*75sO%U-4aI2t-Ek z%wAVQ>daGLYaTRJpEdwfv{G0K9Sq_c%=`<9vSEQpY#=Zq$!dFMt$TY%0d!?RthO%i zr(O4pAV&${i47~~o?t_sII*vA8I?RJd%W(^5<1#r&9HDYE@7vX zWlNJu5@W3)>V&sk{O$ZdncbTu=fvgf4rsiEEWLB3#~%z_Ts@&RZ*8z!JzPDtx!=+5 z2${Uh`!niysZXSgxsHPk20>5dO?`VDUP$oloX;?i2kcV-wyCX!H)o5sueYIlY>ELh zU5p8E_CtvQ3Mz~7*v5V@w|x`)eT!6%x#pk;OTi0|!ubPzX$7A^DJt8bv}3?DN-62cD;Bi2&hD%$Kem!4<@Z!owu`qe6Ds=XjZ^R zz<9{T$Op`qFD%D)U0BRY=NFL2Yn@^#M%>Et5wnUxA3N?ZwgtV(t{RPcuhaBSvy*i8 zRcc#JS81n%;?LjOwIff8fK0HrgCNoPbHZV`1!PNwQ$I;OrF!1AUpg!^JlhQ@P{!|+ zb>sAxk3mzBg;W}{nd%*|dMvPZpF$J?ve#;J@%Z_8PQw)Gi;yuq=bbQ{w~^n_B<#+f z{qA8`V{i`*y$q?c-zu=Ysx9|ZYE*i@e2LYTO5=E`^uu7rP9{!N8`^CF9}pk+8X0Aq zn46a?2)*vc_#bq!etFMe{P2Og)>Wxv-=>R8cF%-s!*;)=`zdK`!Ijlj8_48woQ9@Z z0t^rz%!ptr0YypzqrmlHNw(H_B9QHIKy^S~tT_)yPCr?1k%i%m7_Gx&M&ZQ@YkgxuG4cF3oUmUL7=nvWs!`Cs}Xy`TdnF~%>xTw6K(ub^^ zmt!HP%pS{Uk!)OYnCtP7?I!yVIshfWYcK*%k7eB7+k~um*i5+l_3QndQ}fIVKRs?r z!-{+&1yv(c!U{Q8skP7kd1&ez6Y$Shrgr}-lmseA${pTWyk_^+wbz^y8LqwG>jWe4 zq+S#3RS{G>uj!?7IS3BV*bZ{f!-`KZT+D-Jia&M5q=453iGKTG!(SSnH0x>Q!Oh$h-a^7V#SI z=W2;CGpb|b>DGT+mdWjBCu|Dm`pLq2)G%hfxAI6fb7n&Uo%Z`}H^fqxkJJ*&Tjk_- zB4FwBB5G9$lW8+eEfBT1^q4pKtux+Jd6p&vAY*#kADYmqx5WmPOl8v=oi+5!7%>fP zkOhCbYvBvPfi{rf`+=q0RZW?NYZWNHwUi zODG7@kd9fXLhtwxx>6Dn4LtJO>oymD=3N#4v6Kn&ga0*n+MWvIp>Q@SehcS(Kt&rM z2GM9_5M?_4B;jPw+01W>^!)mTEABgg9{g&gPfHbKLA^;`m)?;55b?a*N>Xb|qEkyJ zs6*3sk6G;bC?=Jlb8pSPl#@0kwKhFog#EQaQUOyOExe<2Zr8m<(#)f*3SLx0fE#2d z{bMJeci%@UYmVsezV6xbCHfv=x$j#X_CiTdhlh%TH^MX@4Sz8%z5eipvDuMN)%~wq zvoy2mYM4Q1Je)V|ae5nF1{TU7YY(D6)=z~q+aZ|6+h>uR|K<>X-3eHij|YEX&R;+S z>2Y4Auz-Fb#AwvmNBj?imP5WewsC?47}X1dresiiwvee1bI679v`eGKDmHJqsO)!_ z6wwsCQ8)EKnCQ7KNN7BzBE?sMY?kAH9jUKV}ZEZF-JP z-$z*oHSz-+!(UviEvNPC1ah)nDAGyTSZHiVe31lUI#XE5pD23{08ugc?cWzw zG}87dl&=vdv~9I8&$`|6=0077aTg_>_iJDMdwOoBry4if%Zs@d7j8fPmi++&wjr^c zhr_7AUIDs?fvBn_^9t~T+v*kcCFbqgnzoQ^dS;UMm_0-<=hRQGrS9b1BlNajRldE@ ztmV?BC-8nSlxmM9bEXP`l9aigqsHH0c$NsaRzHK_}k1{u2-++aL2kL#BOIAT`} z_vve3ITO%Tf~ioD8maouO2oIjc;Dh zxs0+Ay)i#PS1ATyo;W%>YQuNp;QR3L7;u>te{*B|rjFmETAbv#Sk_SgHC$|dHUWA) zi$v4d-0jTjYMm}Rf)2m3VPeHoxt2WH25`ykq^t!wn+foO>scsobb{Z%ER-j)LM zNe{m_|C?EuL3?s(2EDnPzQK8$IQ<%opRXH>X&OWDYJy(#&W?+o^dEZ*QX$QLYAZ3{ zVv}Ec9}^Qb$On=dmv@x=L=fNM;Ut74NjEAH?^a0*lzQ<-a`PTmKb8m1aE1AlU#!#Z zKv{t-xJ2rdbgnTP#wyVS@Eruq?T75L{G~#*J9+UGlOXB((<@IW#|{(N(n~A9^(5ZV zwYzaSoeXs4>BuwGUS4JDQC zDN0`_iPT=!Se>LEd27;9MR7WitM@WEJRk{L*!K(EbvsWh`8D|2W|z=jkj%U^G#!CR_rfEGmrCPG1N(o zN#?5y#gV4{i&i+H7h9HuX7weyAhWRxR~=f<3!-2m~u4S|cJ6Dm}d}Ybwkaj}IPW ze^w+06ffnBSP26q@UgQ~fK>dnRSz3{93bU>K}d1vBCLFH5XO87aqu~(9zXPhrqIy^ ztdGJjb1rjGt^mue&YDy3^x@@66=cf5Y8t2A2-RA+@kJQD+mXhDd1fS0P8^?m|6P2+ zEP`LC5`RBne#O>uat&V*X~UPTjw8(0?|V z(NgEF=dzOUqY7^v<0m`%|1N3BjHmtf?%Y#f#uEUzm%^+#1iJ3COCOo2&3~vM7%M8; z0fqs=s0YsIT<^R(-2(-$UKYg~6X(LGIw>28F|XI@;HQ30K>5gC8`c@AthCv-`++=` zzGEk+&!RnVn*MZ`{QGk-(Mv{!o1NUqzRnk+W26x$G&OJ_uk6RB@R}m8L6O^TyezPY z=#Nu@>l3wC`0(%srmLdRKklabReJmsOjdBXM8)Y@nHtVhIwe~5SM=Q)!HB0y=`&{U zvTDA-vm^&c#FjUn*t9jD5#-N&su<)l14N_S#G^Bh@@0zgHCLVFjH*oY>d-r*7Qz`o;dud_PK8D)c?2u9}9+yfHPp%*SMtw$>oj}VW50W^1*uJv!! zu%f}bnZWX$6gVM!H3>3>V9XpTbDlCCnE*U#$R5_aB=>&F52QP3w8|RO#XS6`QXy!} z0P4rx{21Qmem&Az^?x*7Wn7fq)7~Ydg{36~mhO_06j$kz4(SkSkdj)YmhSHEkVa|= zL0|>xc#x$80qL&YcmE&WuW=kGm6WhX}PqNqdL_r>;U(PdL-FT)r#-cbl&^b-hDOa`tL3E zWsPtWet0e9xTeIN0aBkHMrTz3M(ofo9>ArQx^lysf`~)TJLcM}(tj69$Orl0V*+F3 zhm05Ka}Dm(iYU~a)Y3iox%|*0X#=xin%a{Z&EMUnMyALjiUazRnmWzJh6}Sz6u6>w)2J>vZIqk z^_QhwbOKLb^0Tc2{!3Hfjge_zsPgKYpVO6Of*!92wk;S+lI{;*cCWA9{rpcg2Tkpv z`7dNenG*orcicOb7z(3zB&V@HJHN7Ic+<6gDY=Sy3_`V?XH!Mt{ShGcV|*k?|3C^{ zI_d9RAKlV)+L_uS8D>b;)7+ubH0SKpn1s@Gq6$lej(~dh2 zj^6p>&Cc+g&xqi;J9_qy-4<>Dar8fgemZpwXmb8|f~kQ0RLKzneVw>_LU%CdrLC2J zu0Ix5qco{vTTeF41;WpJOJsTS;r)Mu)fu9u$grMS$(WBgK9rs{J-UU4vXh7j?n z9q@>bK=Nn=2cC2s>ou8FQ(5zTT?YPa@!B*mOtNxQ@3vt`Ni`d-LcSZR6LW(WkJfU^ zL_T}Is(q0Tr)*MRi=FJ6Nw4%>3(87YAWXW7uqb{z-2u?NN}>dZC;+gwN_}pf1UoBS za4b{U6didWZ0(JJyf9KcCT&4oEKPu2)r@RZVumijzfxZ3Ycuk`X?mBKRI}_2B^0!+ zL7kwM^2>M4i*$(lRk}W-6xX$BT`Z3siJ>khHFHT?6bwGI#F2)JuYd)|*yyBGYA4@M z8YteoQf+KJY};5|1*JqJua$}j+t|U4Y17QUdi#CO#sE-bR&g3IzMSf>U$;f}Mwn67 zCvg1U z$5RNPJX@@9E0lLu89uP}0Y_ox1(nZamDgL9__qC58&VNba=@znEP$NPu}L*Cjy`rV?q_l19E1O$67W z#0;?;^KL8aac==AON{?&Q6{9PQ9?$KdppW-lNQhWp%TS}m87uZm!dL&^*nyc@d@dy zv(Lr}Ltg{5Y(=+<|9Szl$+gSpq*N)CCXH3cQffYS{KuY0i5gTbQm1v7#Imew`^TVC zQ>~+4s=AqU*{)=tBBa+f|ItH&voM6=Y>*?*<|E0v*~@dZ!xF}F+1h0mUvO6gUj7zn zlV*(Mk$Pi6(CO^ftq#}Kpi&WW1`>AzBh0>l8Q>>V*jU&znaR*C{$ zNb~|VXS|j8%;(v6KIj-G@gs6z?1Tfw;U->TQ{R^fE61M{!x*j~*4tw^eGO{8uJvly z2$0tj)HF2RfOr3(_?UyFrm~LU|zD^-uXGbg4Njc4XzuoUN za{t=r)6=B`kw^g9)At}~XGj-H>|rG01}Z{;Gb9DbE~=%_@0LQE>l=&Nps1K5tV@j> z(1qSoedILCe(xeC@!=S`a;81Ho`o=Dfi&2NWs}{#r_NSp1~*sEW@e&$Yk9Aq%QPL| z-0tT4{u`eVkR3!2Kyf&6rQdS=9U3fPmOecEm3|uW-+O5F0-OyuiPJ8Pc@~R0A#Z|G zk>kO5zoe#=FA%u$!6i)>fD!Zb!u017`k5w?Uh(7~kw>s~CN+&I(fRp7Z9vANfuW%m z!%M&QVO-2&n>kL;Jw8pHd6IH!9asT1qn=}qKci>FX$qhXJfCr3+(2gyxZ=gnGyojI z?8FF6E9bW-xx?26+y2&!6?pPP0x3Gg%47o9!`OPhLjG&*>Ik)1BKnDm*n?W$38(w( zLsRKpcqj#F_xdV@p?UBgfqlCq_jYOKcOP7#8-L~{Y!glP*omo(ohDqDqtoXEk87A75CLE{%wH2zoU(} z_tXfgxAwq+Nv6qXpli4OeZWt#QEKWPaAtY+H||06ZMsT8B!B3}M1qIQvA+FeK)hzxXlFpeHyrE;p}n=zL319Iyn+sq z<$0tIrH(3u`tc9&@e(lUcx5uKiS}tU{05ocxjn&^1bDaL6h*zPng7_++_P%(yJcpj z-_7m3?(trHQufn_tuI6ZOP$*#QDU-FYT9O!cvudjG7>6(#df>E3-B^;;s(brLU~kK zv5th6J>n`UeJ5`3j`m+n75YW@29;z2Z*u;oB%r^C=r>9S@ z_0}Ff-e0v(%DEdHJa|q1?)zi#^D=tyKl#UVoZ!{1zXwW!mbG>9 zJ{xq`=VkUqm9{|j8KGPveKAdT5Am-xP?K8Y@#cd}L9V%1V#HgXgqGvqs+D)n_y|vm zFl|O=7nnAxgv2MWl4y6*;#DG+$&NNSXn#rq~Ra+lJF8=UgYR_1>K;A{&Wu= z3;u9E&;c?vT+sWd`295>QnmE!1#l!17M1}bY5F3}@UcG3sq5k9a8&EIY3ipd7>M1o zib+R`X{Z*AbhGq`;+_;m)|AYSGtI4ey39s$c&sy7Q25E3ICrL$^OP(3tt7YJ zR=C6zIs6xzBzPno$*6>1ktK5%kf$$FN9^+xi}q20GF#lkG3TX$Pj!v{{M<_?p!cLy zR3BKGh*I0xzr}2$e2)XJe#1omq2oV$^ga)OthsfLk08^ZneV^#JXXwn)J@uR+39oj zJ1~tZDj)|-IeF|u+@b4j6|S&0ptJ$L-e!|r2^h&1ZCE_0_Oj0BSg5G}shTz~<*ivi zfzoiV*&pB8-i9j4%v zUptTJ&O#-osE~p(z>~p3z~j~3fAvrgfuBuOLYmVqub(}I1G6oi77CZxHS5FLYH}2l zc?J~cKiWU(#I%`=*-jD^J~WjG|}#Wf;X(A8x0)RQsaznrzh~e9z)}Gq6YwS`?!H zw!!kRSTNexcAJi7hPI>Kg?-HCc`PdLdUfYdv+&RG;N(=V1PLafPfeZ)?}CX+eyUc; zT}y5M$wdEM=k%0UBp%I|5k=PnK>*BzK8teNWTl00DpzjC6 zgcvzll>%9#q7lh4$4o4VS~y@QA|fKEiHQk*XALl20}Y%Dl%<6A6fILz9jTG7Gvaw7 zovNN~wZSy{Nt5EpW$N;=dt;ZAKr->RUx$4d0Lzw02Y`efln6vcD<=t>Tg!rnha7ti z^5dC<@rz*WFC)fya6v3sS!pi*YWO{g1J)xx;gIC@!>%plZ&P&OS!cXxnk{s;D&J8;EK~IzNA4-e~U)-sSf<+e9AyO6qloSJ=>kJajVV9G5&_@b21;iAjxt>53$QuU?mSCb%N3TdTwba4$2 zUHn}g$!Qql8*-hB-zD1z#>Alt%wQ}Ey=D;i|M;HoS5b_=W{7m9rwp z61J6!(wg(hijEq5ovkp5GfrCSr_!;6-&}E_@R=mp-NvOW3W0c;rL~^-U*8k^FJ2JH z3ki9L^PE?R6Sz{S!W;yN-qslJt>h%;f&o~bP>70#wix8`JO@!2b2KXIP{xn1UtPwt z;kdLYjo1-c$>_cuH%k!7+ES&nac*>b?&>LIa-3&~%E~m99si4EiW{;tjI=(o39tHh zub-P3B&zl+WE*wB)29{xHfZOGOqNa&Es1WkaqLAaL!|JGU|6|^K#Yj|muHG(EFzIf zyHENh@`}Zrb>jNOwX&3O16Iy$1b6eu;DpMJ zm?+ZYK0n?qaBCq#`l!RVG^-?WjNxRX-ib5qsX zPot>@4u0;X+OKmMNZ{2$Me+`>b2e5^Jd0@%& zTnrh9g*n~asw}|gQXfvHOWQ)a_cGG|bM1Hf(-3fE{POd^o0(GzPU^)432Lo8Nns}6 zi8gSdRV0{eAys4)i%VqD6TeMWzlChUo=xkXNayEg#tREaO64ci@OJh;y`!3ZQ1GC9 z9*@l3xgPtkL!aKp-+>b|{AkqW{}!>i#q7<5QX-?NiBo&Vid8ei=;^lE_UNbnIb(sW*5ez;47Lt)Ze6t&&;u%anx@+o9gx;O7Fuu#xdiZTNEx+O?#q@5$ z(V2%{jZYL;XsDqCKQuEN?N3;=>fhbjxvo&g?1>}E?y0&Bn**k$G)KTFKo08OLJX8# zA5hreF`lb%@8)!C-nFB9?&%PFZUt}7e$D)+5Qa(z>nbvv%#iv>RQA9MK;Gh1FoCY zKS5qw5nKKs6Xg|EUQ)PYGm}?~+Hd<-tIu2hgFrY{zD_2?8``{)@ytFe5=^bIw)R3Q z;4=f=WzK?=z7j-LJpo$xM~anQQ5BMrrfb&@-jtc5ZwHJN+->a#o>9U-JcOL@n$%Z3 z_7jr9{pt{P>S+-?uryeDbUL8!$e8=jlWj*e{uzg)s;n{bA!1ww>k4uxplI*N7*Na0 ztI8aa5>|6C^|DFbHrg`!g&oHPkAc1m8O{(REc8ntT$2xgwJtNIi=j2D5(-=566THO z5_K?twL@U(ZC9Q~zaEg9dfEI$X4Z{U#tYkiiBUOu7Fp3%4!2u@0^w`D0cm$OKB5v( z2GL5KGC*ZnTFqcg6;<*pDwhUap{LR$IjO=UHNrdy&4EcW?o=K-A_K7gQ7%J(;dNRw zV3^kZ>GZDWi$j3f%yy1dq>5#BU#92iifCp6pst}#5?6}D6JX4tsv?H#p$Lg4FSq6L zKvWCc&pjZio?5Pu%uSe=A+&`Ul9q2j;afyPIwQ!Ah{NdFu)uvFe80fX^jTr049K4lzHH4R$6eIrki|l}{7U4IO=pP# zH>o3YwAi5Da%!gJkOIoBkdaOPXTd%YWGSYF)sQYcH?HSRdR~-H-fLO8hiG$Y23GbqSR8 zk@`9j$fn2;#>KHYC#4BttJdR54G%Fa0i@0lwPC2GN^(RnedI*$8O6hCLLTEk%&_cz z@SgtbFjwJtal%W1o{}=xPh=xnqm83lrCe2c8HC4FaO2~=P*{}iLg>_hC{=n zS)YtTvTp@zs(1Z|aMqj1Y1h**vbdH2@<@%SRHCIoC0WYkMU6OF6jmy)oZl>kj=gt3 zk}6*X*pK;Q&tSdpjD}197%JE(COO5TjAs4sQ!~~{SdlhqsFfM!IdR_G2y7O8X6ai3 zknpG~U8)y>R6@Qo9nJtVjwH`Rw>2=Dn949D?%R(LiAIJHR|u}-U?4iToU7Gkfl zRVn@-?l3d!^+nZt6Ky97t304=36uOsOzJ}E!I=Nk_jTC*cCR!6O+K(;uM8X1^0o{C%5@LI)ga!;zo@ z!d8yvwzKbU?%bxP*-?wY=9R*bL(fPeaj=`!`2@z~5huTJ=^KBI9p)Bh&jUe)MU}whsl{2@y370M-9JEe$TJ$te{FLghHE|=i-l?<5FiDR zu(iD^Owy`^63TAxJB_=W>4^>VSAD@e89(sUvd7aFK}`CdwjcJrYI!XeL$BjGyF9v4 zaz52!EZJLlH<1SA;@HW;PbT}GV1}q6z)P8vaU%!f|4ShfdTLq+<%)S%DCGlDk=FwW zb8)ys_>yf^nK32{?S0scRgJ=~o&P*({X*iYG=N@|m!iOmC#&4(FeGK08m(8;Hgg>G zy`07ri^0R-SW5wsEzKyB3(IB&$Bbne<*9Ml0tzyO*4I7eaGPF{m4V4Ayea_UVDf!o z9SDZLR2Y=PrwYGXAHa4rmVh_vdA2#ejEH7bP>r;;_xn45^Zg2@!9np05m&Sx^aL|+ zwTJ;MDiF>D%F&W6n^|wb90}Q=WNpm0*Rp~C7gBqOisEJMqp|;#0!mFrfbJt%u>4pO z9d(7_^`xxV>@?=ulO)XJ^Hm>b6{`oVduCj+F-t-rgzO1YxjP1E z{hG^}!#%<78%18kQw%_fxOPY=hQUBs453^i5aAZJk8LL555TU7q*}n+*3ovob(9^Z zGkO?7&_Y9`f|CKu2D3zmbFob-hG&NiT{Wu-2pm6|)c3I`{}>b+Nnu*5ZcIL1R-#-DyfXI{el=F{*q6bMq;m}9u4 zA+N#vK>Rmc%^91__=>h93Z4-mIk%)~iCA%{fLX#SfAb#+HsBac@3Xk9bvOh+qN@=n z>0KdF=l+?R+AhxAetaGk&x|DBCnnwMNe=wqN>vLrr@Z~g0jRyqU=;fCK?;wweeGt; z?WPChh2CG*#A#gLD;()vtUc9S?`G1?W|`80B#U1~%~joqQa4N`(HS z-sna<;)k0X{B8BZYsfp<40M<4K1 zc|vswuoHN`yukmGw44YeNahaxWphNpYFmQ;HwtH<-Jp7@SqccycG|`a{pukIPaejx z2MIBRA$^8D4-3@y{A6L=mQx1nnr09qdM{^K+Qs2%z@_Js$-0SC| z!{>Mf`Q3hI!51!W^ZOCINaxK>BEi;q6K~y{XfEp#<*e5%`@&xM#X{10{yDe()i^O( zX!vAIXe7G#J7Lntw$Xpq_VLDLN(fo&r?2K%wUKeJ_y)PNR_6`ho3D^m>D6>;(A8@Y zijm-YSgWhis6c`EL#eEf2Z3bS)) zbBGSJa9{tzOiL%!&VMBBRzQ(xD+9MXfu=A8EinwC04+s~@(+Y8c%MKmk>naiX2kn)p|AJP12uS#P6}I5KlyF1VuwgUNWUhi0q51-3X|Vue@@*Rxc5{=V)Z-# z{ij3jRM+icdMYpANa{M^%?W47U7uPmy~Y&n78|{l-5WNloljO)4c9vsH_M5avBs15 zM(P`$r!Npl-OCpgjtyeLz0@uX_uW0!iZ znr2`cb&{=XL>aEKx?&v&voUbMH* z@q_QnfnyYk$&3d<24c78gkG( z&CK(x&yih9;m^;R1({><%{;~;#>`4}OuRH^J5^|@@7S_%*B*r=EbZ*dAF(mRQ-bHLLMGyCgoR-7Iy#8pRZ@VJRgQthc6&DngvdFCoqcKrxfaSihqZVA&i5rYe z%*dc)5y2HQ19tLbY0shYRJou862C{V0m^q3AqYNM>b>YJ0ob?U8P=VoXjc2^XfCk= z2PW@BeQ7R=24=ySqK{TYk+|Q9j(qEf%pYTpQPyJk)*Pz$_AQv_vW?|W2Krx8MovF2 z`ab*8#@&DE;?}=%;ZJXGVEfE1AvwFR|1MVknshhcYjXPjqlR_QW^ z#C97*^UsqnvVPf=kf~#EHFrhkfWvfBt(tkyN+D3OaDUQ$&I`g=(3c;GfqS*xqFBM6 zlOIF{*ZHK?VYU8)3F3pn4^wkdmgqJWmc0wJUcuj@^|vo`d|uz)8J+#qYAh{09t zVkI_=En?x1ZTqR_qQAW`_HXoR@L}Yv{!fcct)`h#9L20nuw# ztUNLglWM)0|9uNbUif)fwFb?Md53nF5NM!wVe*C#WWT`ln9Ov?0M(1uB$Q7kZwcOS zL3i#>b{`wd3{CLGBOf2-18pho4AerH9Q#W@5i<8~m&9s5TqO2yl-eN{o0$RT(=tKx zh>NLZ>GY2z6}A&@06&DcVP$%eb+pI^4d#d*LcGan!1qp@rc$0_C6p~`(n4vRVZdV) zcBK$aQKCySbYSb@AutmL2JMM>WoC6l=CE}QVcpDx*)31N!?sM`m-8Mjc#!ecRYliD z{oQ|aeJ{K>0i1xcDv-4F9S1RW{*4oGkCMdTK@a~S zPopw*uIxafwO*RjzPNz0so(|C{!^DJzdIVOMLP9zlTKO$hljwa66C`__;usr$Gaa+ z4GDM~+V%;rC`CLH<3B}Lsg3`ZyGOE?RK2VI)b#sWzWf9UsHDTCMftlM+h&IrAA8}? zYFRVy)9tid&D!le_sZCYBZNa|i#970gXYA_S+V%O+?fSqy(Qnh_ZT7*l(fkY$9Ucc z3i-P`LFV&#T{2_pugf>y3pS$(hNxRLwCCSAK3AF(hvR$rJf^sB@H*rNpQxJ(8+KCP zoJ?SkXC}IQ&zy>s-62H z#a>f!13=cMY80VUIt^>m2gd1RNq;R+<%JTs!nuU4lI@=Oz_=)rpNDl@elo5aLcC|$ zdzZ0KE3AuvT&*aXrN7v3n+bu`%VnzJD^jT}ac>g>poY~2$q!JP{`FgQtDCnLUbc`C zW8gGo9DJvA96a^iF-OkwAUmM909}YYGhJl)&lkJJ<@^^QDMtAs!y@E7iiU>9r2DcD z{G_4^Ny<#n{X<$?b_%I8i8d>3Sd`lw?_`=+3FqEV-ITRIYSva#=_cNbR-Q76`NI4c zpe(fZz+`@v;Ld|Vop>!{$vvci*Ir8_jZV$+2qBpOHQ*Iw|txDJQHvL?!94HZ~ zg(sbJ5(Rdf;aS$!G2vZ!Z!@!{!84#_aZz7b)$TomI9>d!fAZHCNN%67tLK$CPlz-z zGSS(52LBcAoB+F!d52f?55K2A681{FB!%3;qAci+k)|TjWX3FSgJKLcQ>(P^g#dud zba)Wuvl~*3^RFyNTBc(%=h<{hgev4FmNf7rkHX36Ph$T4GrjcSt@{2TS%A+ZNgBM0 zH)+*xh~n7ql&IkTy7J6?n7H4dM=DAqwK@vYD~#6?CVq~Ijb?cTy4fb_w%-jxK(QBD zoxFKtIItDsqnILxID#ctdL&IyZBtZrdG#DHQgb zw?;jDxRctlKBFyy|DMf$gWZ#LJlxki^zLe*F0Aq{{aN$$uyPv!&~46;f0u>*M>(}_ zD`Npyeg0o?r#F+qey|8|DVDag|>J+MEg}kylUnAag9FYuuQOqj{I8pFienXRS{QPzJ z?e{;cRnQvno;P8LGX$&OKu{K0&jpFQKV9rUnte=_-;4VGq>zaguFB z?H+lO;M;d_`djEic#VpdEA(a&`4G!w{JUirk{v)H{9sb*UQwtBx;~Qvg9jgGW)iLj zs4~s1Nso|)@e?+C*AweWFzHB*N;gzTbQgAV!Oy|qtw8kGFCjd|vy8k@ECaZL)AHNW z>C0?Z;R;@`to0{I75|`%)jmu)6BYo@=7p>8rMmeknsFPOlGyq$&yt7dwZPPpz6__h zRLxov$Xs$uJWS{tntL$(r_qZtVMGr|BQM?cWoNkwyJILg7j}Zr>(PJcYy;el2#9&1 zpZq<(p6^)PbzR>VSa4;S8r&4ev@Yhqw6u2(2HNB0m+_1 zEy=bCgQb+;cKy$KyGvESeyo=hd-bE7AmvN-AiRluN!Gear|~-Y>{9+gDvu4-&J7hx z_$eQ_<3;Ls=Efj*W60EZm5c0g0p1!Yoc*Y6lzXT-emv^W_UWG)Oyq;e#M2Pg=<8Kn zl;wqU%5R*G1@;zP;RQh;3?ju!X`qnEJL<2a@2U6vAiaOOx~Me^Q2t-hx-TC?b@c%3 zozS`KNAvy;<0+d)e%lp*$*M1bavAU7d;6Fyc9xRuZ?%naQ*wR_30dp65#`mk@$sdD zKOv#1W$%_lNmEanGkgAuVk((oO~@v!rN9aK;OhW^qfgS;=n-6L1X8~COifA zcLc=ez_2NH|4Uwr(?6rKSJM_bp9HN#Ed)6q#IsS4^jlWJR@Eo6Q67^6*hl-kf>V+H z+5bt!niFqM|x)y7kYBf1Q6P=`@fe#H0Q zr^Mc}CFV)_sM29%g9zFbHKN;#fz6sU2oSihlp*hJ)D3YMSw03lV_Bju7H?@)=^Rbz z!a}6g2?%m5%3mc*kCTwu2=z8#=nzg zG|N$^3I-3Z&b-@u+K(->@ikHXx`B`L@zf7Q6qP$THMhgZ+s+Pg0ey-SmPKAmdvTfu z|G9na_PoRHb^roq{h^c!FXiQtUl$^wpR#+~VXbk({7}=uIjaisYl2tcglwrUlyG9q zq?Dh#QiB4SUS$R0YbuXM(+{0LRLFW%`42cu&%!&e_G?{(S9D!_7_(1EbJ1af8Gw^+ zeb4_q?@RO(g3R_C1fJR|LlBT+GVgfzsO%N+st7{kv~#S^#YTM*@Vl$4i=#d2QIq~$K5jO9>tzBlLjz?T zCSs~mj#_r2(3xNz;{zsBQ*=eVXX{VI5bLpjn{{@(%@(c4Y1yt~Tb5#Ece;@i@?quLR;kk7CdHxOHO-{v*eD9wQ zSHL<;A*nK8c=!3s&MS(>`vLjXI#+8xX9gDTUz8($zfM{cm;YqGp|t@MSo!d_Sv zknq8*ZmHPWw?k+ex_jJ;dnHTfQS|6cH(@GPPba8ekuF33c_jg$=Bo3QBmD~R47+O?|X z1;qK{mQ*7BhU$^1xXR$b)!rG&yp>-RfH+z{fkvor)}C>_-pSyu3@;&;JWB;cS&?Hu zdgCdmEvxg*u!i_5TQTB-bN@5s_vc=@)qge@7fg$HPKI9(s1;P$oAwA{!tYsTDU&ON z?Zap_SZA!0+i8z3=-DC_$pr-_Ij4f}I*zhPnRgK6TtzsTZ}_xZ`i^kvT&H?!=o}l9 zkbeF-n(fd0P`Zt@|9iY(+AoZDv*_LXa(0YCvHuIcX4KN0{j@|#tB-|^n*@M`+>tci z&)H>~U5GjNakZ?+s7H$wM14<}m3~gI1@Sv-DWK-(=O0ld7ghVAh=C=V-2a2MLTra< zTUfvvEVJRln8Tye?QS$H@QxI>ZG@I^myEcygQwcBciBHN7m~!R*J$TuGR3KdAS6sf~T|W^T;>|3> z%LU>UV|}e}$`5sZJr{XA-$Vg46Hl-!Re;+@z*1Fa+$4kAnVR{Bgesq`E`D2+e=4&S zEmn{mYjxc$Qw(a5@;sE4L$lx{O9?X?c6-8@`UMeJ{%5{=m^q1x?9FcjN6%l^k2ja{ zH#J%%AtqJ_d-4F_x@5vnWXPQ;sni)M?Te$TfkrVnpC2+x?janL$u1@{Q7yG%Wn@sB zpih-7?m6iqqF44z2hXwj_>Z~MU&_QNnR#RfJ(My%^ITXJ=g3Ghei_*khJZQK?r_kr zk%{ozyJG+S{MqmClUML!ra-5xmk+)2p%f^TAgpN-vZt-$@3!tR||^x2=FrF}y6I?S2VdnML* zH(1)x?PKk*@v%N3;!nEn{&ACoopB-ha0);EwAr1>i))!Vv0bPm>jO4MhE`2Q4PpBs z8b|sf3Y-DxC6fVwLZyF}`vLA~0Kml`;IC^qzQ=fowRg$lv8^O3sc*!MY~LG+4`-1G zSIl!7eN$hq8z_3G(s%AZMXcG65 z)iPPK+#V-A-;6=BPp`R~7+t)_eBreUB7|Xb*p=P@i<zY8F8PWaikkM z;A_?_BC%Q%0&Cd2wrmIxMPYm$AA(&l;PkxoZEvtDlUcpoVk3a}WV#9*|IIjZ8UK~v zfdB3)DuqVo-U)NdEB5*|s_|N0gd#!eCVg-4RN+h3zgAMZbD>w|X~>|7MYrB{EhKtC zEtwnYQ9Q8GWQoQ6aqeTj1v*`#xAGmqXN8@epMv~{lD)prx4jL50UPHf5w~3sBWvoX z8sgU_KN0*^Yh)!Hv32xX;xfr3HqA>RZRTzc+$aA%pr(0#-4A1wu$33e9lpL!wE77b zbKRdAmE&g!Bb6gXb_MP1i%5w$&I3fV>##GeF#pi1Fjy8uXv}7AY!+v6RkEvexl)}z zg_q8gaa~7ENP+c;m8wbMNNG3vvgQ7N>S)1A@!;6k@7!vV9&#sd(N}^F4eeF87;&d%_`%cAqB+@2N-5- zWy+wXbjsiLAKvek`&qlV+}69Hdq*w1 zsf1SFI_Hx6eV?$n6GUFcIiMaj)js1@8Swb+`N~MFcDRYzZy2#T{TpCo1UV9(KOu61 zand7t2EYf9Ia>>pCx7|)`Rnnr14Jf|nS8m{93)c(;8h|^)&w}Oe$_4>XkdTBaCy?% zI>npU-wE4UkD2hIFy!@ zqYCrKd#CI$8od_Ezwe!kUcwI0-z|DDv)P!wN+4%C+#Lvgu;uDFK3dX#Gimu#b~)=HzrADgNhE$_0Gks=1RM3#Y%M~x%8c8) z5hV3Sf1_r|x*R4cABlD23B_O`S2B&bB?+VEx`Dv z#_+vjJOWM7qMA8b0S_ktkZwXU5pcEB!En5VJLP{>Il0mwVtGWu8~U{mtt5AM>XpbK z+ur{#2Oo!;bfod(@u2Tr)zm=k+y<^b?Gzq8Hg)RlZ(N*I1!nss+NM)W879mZsI`p? z`jw^hD=W;fe&~j($**X3y|Ai9`SbhXeCj+6&|968+WylFPVAHaos%UvSyB(ng%4lR zI*s$HT68rSAo{)F=U~6}x<^pxR-bIB;R^vQ5f_Eki<{H4eqMklS zlQsr^?~dql@B6X&&=WkR)>qnrftcCUK}6S(PF{qIP1zWN{w?C0l{ssQw~gQX;W~!^ zz5g(cK3%P?FFqVe@h|VjZOHio32g~nzhVK{(pAg%{LR%ME8CcR1?zXjKqfZHVphvS zVESwWaTm~RdL5o=tAitV@OL$H%7zBM!ZW=5h?E^p6YR#jHN%Ja<9n9&JJf%4K_zZ? z$l%@I=jgk(TtV4+??W6MEFJVWCZV{=3e46*@;RJS;z;UiczQ2g`p-Yv4$3Ex(yqP6 zW+%gf^<9o|u3eP5b)i__EHwL0#RS~O79!u9o5w-etdq5~x)H17!WtL@-SM`Td!^{K zY@Qa6T61>z9c*iKLv;IieYrf=8i(9u5i_|8t#J*1R4e)sk~%~v|M$fPzbD|vXC+xz>U%-&k>J^_hlY0+9c!wb&YO(ej|Ap zxIu~G`^|V)ba^YL;^5s8bjQ^1{vpW5=D6&>Fyx5kK3~w!r*f@objIP{xLN#)Z$`vg zWKau105T?$X_>@C5UZ3W20{{xX2xdDbT)5Q`tReB@^PXm-Xd0mCm2XyZO=ihmeN`D zUc;uRLSf;1mYDs^0Y#^RAK#MdVo$~6vM^BLu)9`P>Blzm{%wEcnsoX~sLtFzNnPF1 z>t5l^zEcwUGYLumv)z0Yu>yvLfK%>v%&F8s)JfIE@?73%z3vV96`7CERY(6pNZ&R0 zp-*?@VK}qU8X*i2j#$0_Q|P}XO|!F`5Z`^Ao@tTM^B1#5jUG=jS(N(Rp_iHlXzgUU zE;hL>^n@PMpSc)!n)46yuIk-9Gs9yG<`F4DlW8Z|4$444SJ`?Mm^LuUkql>gb+tgu z=9j%i&d9Gwg@yRtdU_j8{9FoaTa7FUXKJPD3h#3&*Wal@^pLL6oI`i@I)u~sV{MYtTPn~xIK65OR!pQAixrc$> zKJ*2t+K|WNhj~IeK z1d~(@YwYN{(oCuTeDBRnB8}YD(v*DI;rTz6eDC(v=fP-fn&6wE-Gq>TG;-hEcM$wR zivkPAl8)zh++lB@Yc2$CB0bFw$TNHX^wzPhHO9ElciH|X5~t3{FbGmZO-Bk!C!-^C zQLk6sfj0;TIWKy^%{P}1u%RToXGc;Y0uA+-tMoMg z7f%?l=P&M?Rkxfv`O3fkm%sak!IEbsw$A;A*(;!8idpU*N? zXb6bSKoDYtslv?K40?y7SV^C9AXay=X6`HD#*woM%uFDk0Ckf_{EaJ%Gv8nwU z-n?|_;OLyLO_A<7b+v7qoO2*-S_}NDv{_g79+U+oS3X9=tRU)$HyRwQvN zo^3Ij_sNR)$tn}K=E(IValM6wg_Z1z!*9=xJr4r;fg3yp7-D290PH*+z{qnf%Q6G- z*4kR34vj`cGf5S7tqwF&G{!{9sL?DEq7cRyY;a*zvouRT`SD-WyKaAP_QaolIVr1Z zPb?ydPyfSDJuV`nVZU+D|4>vm=l=bEKYQw%-@2x?N;zzn9gxewKr@H!Bkx6wzDq#3&N^T_tlpTW%V+5i6eU-_k<|HyM9Qekq6 z@TenpXpIE`E=|+=p7VGA-uIt=_O}6rv^gX_=X}qJTNlR-FMf^E7WBYj-FvQk=lV#J zjitrK6#>i-f2+@cT z1HBK78X`iZAu5=jzxysdbNW>H!vFqKe&NTj>}n01KX=z(KlXDU`4O&+{G)UKQB!YN zxZ(i#&wc)n@29w~h`Y|7|CY27I^r>z4uV^9=yvOu|8_zs$T}T#=H~ZYfHlM$Z(ch6 z`~U3^AN;LP|HhNp-ac&9nLH{2oBo)^#l`YHXHI?YmDk_+n276%ut#8>jvJ&~7r{p2 z{JJEvA?A9{xt^KzPA)Ev7xx5gw>Bn{|DcTizyT5fU{4}2?T52G&sUQqv9*5RyoicP z3=-5uC=irPqJ}1fgaI)I7$V>z%pzcsDsge~X#DiA|NZdf*PqIt{KhxaFr~Fr;(h(k z{>g7Xjw|#2Npt_v(SK6_zWVj29-dn`g6{kRs;WfU@1w4-&Le&;Xh-*V^dq-|M4Dyj z|I(jzF1-Be zHb2Ruk9^?Eciw*Xb!;8|hkuCS1>f=~1K_^))HiQ^_4U_(V(>kY=N;sE2WpDCC{dLq zs=9o~#o(Ppl4i*B99gGx-KrXkvY7u5|LOPt&S(DB@BR_CE-(tT*J4Q0@ethRH9B|a zoqzd*XP>Q9HFJ(V5o|aneKF~|#P^+9<&$Jc{!!BJ+3Y`Pg(2Y+iv^X3opEIH$-aZecw4N%(HN+)v=|e^*qmu3GX#6#(&_+4;)Yd049pSXo81e zx?jNN=jSa+lDM%^X(M%TE=EQMG6b570a^pD7D0^$wUBiaQNhp!kuf5Vu*3n$2Y%-M z=G+~(m4E)#|2y~0kDg0^^_L&}qlLM-RZLI$1+GL_Hj{rYU%ou|^beoAZ`bcFg1pl~ z-s!;15JEsxSE%a>OvBuO^gS;Y|0G&MrgplKS! z>yTt~wGeUeiHG+Ie3HPYDg1;b(cURkWqr^0{^keg?tS0+VN=lYM4-{B!0?8V=i>PB z<5i5YT3s#D?y>oD?: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 literal 0 HcmV?d00001 diff --git a/graphics/ui/actions.svg b/graphics/ui/actions.svg index 1ed1d3e..db05a1c 100644 --- a/graphics/ui/actions.svg +++ b/graphics/ui/actions.svg @@ -16,7 +16,7 @@ version="1.1" inkscape:version="0.92.3 (3ce5693, 2018-03-11)" sodipodi:docname="actions.svg" - inkscape:export-filename="/home/michael/workspace/spacetac/data/stage2/image/action/endturn.png" + inkscape:export-filename="/home/michael/workspace/spacetac/data/stage2/image/action/pin.png" inkscape:export-xdpi="96.000008" inkscape:export-ydpi="96.000008" viewBox="0 0 256 256" @@ -1543,6 +1543,44 @@ y1="203.97403" x2="185.40526" y2="132.19669" /> + + + + + + + + + + inkscape:object-paths="true" + inkscape:snap-center="true"> + style="display:none"> @@ -1995,8 +2034,8 @@ @@ -2045,8 +2084,8 @@ @@ -2095,8 +2134,8 @@ @@ -2164,8 +2203,8 @@ @@ -2214,8 +2253,8 @@ @@ -2264,8 +2303,8 @@ @@ -2333,8 +2372,8 @@ @@ -2383,8 +2422,8 @@ @@ -2433,8 +2472,8 @@ @@ -2483,8 +2522,8 @@ @@ -2533,8 +2572,8 @@ @@ -2583,8 +2622,8 @@ @@ -2633,8 +2672,8 @@ @@ -2683,8 +2722,8 @@ @@ -2975,90 +3014,116 @@ + diff --git a/src/core/Ship.spec.ts b/src/core/Ship.spec.ts index 2c037eb..6315976 100644 --- a/src/core/Ship.spec.ts +++ b/src/core/Ship.spec.ts @@ -136,15 +136,15 @@ module TK.SpaceTac.Specs { test.case("lists active effects", check => { let ship = new Ship(); - check.equals(imaterialize(ship.ieffects()), []); + check.equals(ship.getEffects(), []); let effect1 = new AttributeEffect("evasion", 4); check.patch(ship.model, "getEffects", () => [effect1]); - check.equals(imaterialize(ship.ieffects()), [effect1]); + check.equals(ship.getEffects(), [effect1]); let effect2 = new AttributeLimitEffect("evasion", 2); ship.active_effects.add(new StickyEffect(effect2, 4)); - check.equals(imaterialize(ship.ieffects()), [effect1, effect2]); + check.equals(ship.getEffects(), [effect1, effect2]); }); test.case("gets a textual description of an attribute", check => { diff --git a/src/core/Ship.ts b/src/core/Ship.ts index dbd335c..f2b1687 100644 --- a/src/core/Ship.ts +++ b/src/core/Ship.ts @@ -331,7 +331,7 @@ module TK.SpaceTac { keys(this.attributes).forEach(attr => this.attributes[attr].reset()); // Apply attribute effects - iforeach(this.ieffects(), effect => { + this.getEffects().forEach(effect => { if (effect instanceof AttributeEffect) { this.attributes[effect.attrcode].addModifier(effect.value); } else if (effect instanceof AttributeMultiplyEffect) { @@ -371,10 +371,9 @@ module TK.SpaceTac { * * This combines the permanent effects from ship model, with sticky and area effects. */ - ieffects(): Iterator { - return ichain( - iarray(this.getModelEffects()), - imap(this.active_effects.iterator(), effect => (effect instanceof StickyEffect) ? effect.base : effect) + getEffects(): BaseEffect[] { + return this.getModelEffects().concat( + this.active_effects.list().map(effect => (effect instanceof StickyEffect) ? effect.base : effect) ); } diff --git a/src/core/actions/BaseAction.ts b/src/core/actions/BaseAction.ts index 35552da..68c17fa 100644 --- a/src/core/actions/BaseAction.ts +++ b/src/core/actions/BaseAction.ts @@ -48,7 +48,9 @@ module TK.SpaceTac { // Action is overheated OVERHEATED = "Overheated", // Vigilance is activated - VIGILANCE = "In vigilance" + VIGILANCE = "In vigilance", + // Ship is pinned + PINNED = "Pinned", } /** diff --git a/src/core/actions/MoveAction.ts b/src/core/actions/MoveAction.ts index d3145eb..5598041 100644 --- a/src/core/actions/MoveAction.ts +++ b/src/core/actions/MoveAction.ts @@ -67,6 +67,11 @@ module TK.SpaceTac { return ActionUnavailability.VIGILANCE; } + // Check pinned status + if (any(ship.getEffects(), effect => effect instanceof PinnedEffect)) { + return ActionUnavailability.PINNED; + } + return null; } diff --git a/src/core/effects/CooldownEffect.spec.ts b/src/core/effects/CooldownEffect.spec.ts index 6377e31..f2a5e61 100644 --- a/src/core/effects/CooldownEffect.spec.ts +++ b/src/core/effects/CooldownEffect.spec.ts @@ -30,7 +30,7 @@ module TK.SpaceTac { }) test.case("builds a textual description", check => { - check.equals(new CooldownEffect(0, 0).getDescription(), "Full cooling (all equipments)"); + check.equals(new CooldownEffect(0, 0).getDescription(), "full cooling (all equipments)"); check.equals(new CooldownEffect(1, 1).getDescription(), "1 cooling (1 equipment)"); check.equals(new CooldownEffect(2, 2).getDescription(), "2 cooling (2 equipments)"); }) diff --git a/src/core/effects/CooldownEffect.ts b/src/core/effects/CooldownEffect.ts index 2e4f3cd..2f525c1 100644 --- a/src/core/effects/CooldownEffect.ts +++ b/src/core/effects/CooldownEffect.ts @@ -34,7 +34,7 @@ module TK.SpaceTac { } getDescription(): string { - return `${this.cooling ? this.cooling : "Full"} cooling (${this.maxcount ? this.maxcount : "all"} equipment${this.maxcount != 1 ? "s" : ""})`; + return `${this.cooling ? this.cooling : "full"} cooling (${this.maxcount ? this.maxcount : "all"} equipment${this.maxcount != 1 ? "s" : ""})`; } } } diff --git a/src/core/effects/PinnedEffect.spec.ts b/src/core/effects/PinnedEffect.spec.ts new file mode 100644 index 0000000..7b36c8f --- /dev/null +++ b/src/core/effects/PinnedEffect.spec.ts @@ -0,0 +1,62 @@ +module TK.SpaceTac.Specs { + testing("PinnedEffect", test => { + test.case("shows a textual description", check => { + check.equals(new PinnedEffect().getDescription(), "pinned"); + check.equals(new PinnedEffect(true).getDescription(), "anchored"); + }); + + test.case("prevents a ship from using its engine", check => { + let ship = new Ship(); + TestTools.setShipModel(ship, 1, 1, 1); + + let engine = TestTools.addEngine(ship, 100); + check.equals(engine.checkCannotBeApplied(ship), null, "engine can initially be used"); + + let cases: [string, BaseEffect][] = [ + ["soft pin", new PinnedEffect()], + ["hard pin", new PinnedEffect(true)], + ["sticky soft pin", new StickyEffect(new PinnedEffect())], + ["sticky hard pin", new StickyEffect(new PinnedEffect(true))], + ]; + cases.forEach(([title, effect]) => { + check.in(title, check => { + ship.active_effects.add(effect); + check.equals(engine.checkCannotBeApplied(ship), ActionUnavailability.PINNED, "engine cannot be used when pinned"); + ship.active_effects.remove(effect); + check.equals(engine.checkCannotBeApplied(ship), null, "engine can be used again"); + }); + }); + }); + + test.case("prevents a ship from being moved by another effect, in hard mode", check => { + let battle = TestTools.createBattle(); + let ship = battle.fleets[0].ships[0]; + let enemy = battle.fleets[1].ships[0]; + enemy.setArenaPosition(0, 500); + + let effect = new RepelEffect(100); + check.equals(effect.getOnDiffs(enemy, ship).length, 1, "ship can initially be moved"); + + check.in("soft pin", check => { + let pin = enemy.active_effects.add(new PinnedEffect()); + check.equals(effect.getOnDiffs(enemy, ship).length, 1, "ship can still be moved"); + enemy.active_effects.remove(pin); + check.equals(effect.getOnDiffs(enemy, ship).length, 1, "ship can still be moved"); + }); + + check.in("hard pin", check => { + let pin = enemy.active_effects.add(new PinnedEffect(true)); + check.equals(effect.getOnDiffs(enemy, ship).length, 0, "ship cannot be moved"); + enemy.active_effects.remove(pin); + check.equals(effect.getOnDiffs(enemy, ship).length, 1, "ship can be moved again"); + }); + + check.in("sticky hard pin", check => { + let pin = enemy.active_effects.add(new StickyEffect(new PinnedEffect(true))); + check.equals(effect.getOnDiffs(enemy, ship).length, 0, "ship cannot be moved"); + enemy.active_effects.remove(pin); + check.equals(effect.getOnDiffs(enemy, ship).length, 1, "ship can be moved again"); + }); + }); + }); +} diff --git a/src/core/effects/PinnedEffect.ts b/src/core/effects/PinnedEffect.ts new file mode 100644 index 0000000..1be60a8 --- /dev/null +++ b/src/core/effects/PinnedEffect.ts @@ -0,0 +1,22 @@ +/// + +module TK.SpaceTac { + /** + * Pin a ship in space, preventing him from moving using its engine + * + * If hard pinned, the ship also may not be moved by another MoveEffect + */ + export class PinnedEffect extends BaseEffect { + constructor(readonly hard = false) { + super("pinned"); + } + + isBeneficial(): boolean { + return false; + } + + getDescription(): string { + return this.hard ? "anchored" : "pinned"; + } + } +} diff --git a/src/core/effects/RepelEffect.ts b/src/core/effects/RepelEffect.ts index 5beb232..9c92640 100644 --- a/src/core/effects/RepelEffect.ts +++ b/src/core/effects/RepelEffect.ts @@ -14,7 +14,7 @@ module TK.SpaceTac { } getOnDiffs(ship: Ship, source: Ship | Drone): BaseBattleDiff[] { - if (ship != source) { + if (ship != source && !any(ship.getEffects(), effect => effect instanceof PinnedEffect && effect.hard)) { let angle = arenaAngle(source.location, ship.location); let destination = new ArenaLocation(ship.arena_x + Math.cos(angle) * this.value, ship.arena_y + Math.sin(angle) * this.value); let exclusions = ExclusionAreas.fromShip(ship); diff --git a/src/core/models/ModelFlea.ts b/src/core/models/ModelFlea.ts index a46c306..92ea6c2 100644 --- a/src/core/models/ModelFlea.ts +++ b/src/core/models/ModelFlea.ts @@ -12,7 +12,7 @@ module TK.SpaceTac { getLevelUpgrades(level: number): ShipUpgrade[] { if (level == 1) { - let engine = new MoveAction("Engine", { + let engine = new MoveAction("Main Engine", { distance_per_power: 420, }); @@ -23,12 +23,19 @@ module TK.SpaceTac { }, "powerdepleter"); depleter.configureCooldown(1, 1); - let gatling = new TriggerAction("Shield Basher", { + let shield_basher = new TriggerAction("Shield Basher", { effects: [new DamageEffect(2, DamageEffectMode.SHIELD_ONLY, false)], power: 3, range: 300, - }, "submunitionmissile"); - gatling.configureCooldown(2, 1); + }, "shieldbash"); + shield_basher.configureCooldown(2, 1); + + let engine_hijack = new TriggerAction("Engine Hijacking", { + effects: [new StickyEffect(new PinnedEffect(), 2)], + power: 2, + range: 400, + }, "pin"); + engine_hijack.configureCooldown(1, 2); return [ { @@ -42,16 +49,20 @@ module TK.SpaceTac { ] }, { - code: "Main Engine", + code: engine.name, actions: [engine] }, { - code: "Power Depleter", + code: depleter.name, actions: [depleter] }, { - code: "Gatling Gun", - actions: [gatling] + code: shield_basher.name, + actions: [shield_basher] + }, + { + code: engine_hijack.name, + actions: [engine_hijack] }, ]; } else {