From 802cd90220f91b919ec90e662bfff635777c715f Mon Sep 17 00:00:00 2001 From: landgreen Date: Sun, 1 Jan 2023 09:55:17 -0800 Subject: [PATCH] sentry tech tech: cordyceps - sporangium infect mobs, making them fight for you as zombies tech: blast ball - mines fire super balls tech: extended magazine - sentry fires 50% more shots sentry works with foam, nails, or super balls dark patterns - stacks to 9 38->15% damage, 53->15% JUNK electronegativity - stacks to 9 0.12->0.1% damage per energy bug fixes --- img/blast ball.webp | Bin 0 -> 34320 bytes img/extended magazine.webp | Bin 0 -> 32862 bytes img/gun/harpoon.webp | Bin 5594 -> 26928 bytes img/{sentry.webp => sentry gun.webp} | Bin img/thermal runaway.webp | Bin 18616 -> 40508 bytes js/bullet.js | 190 +++++++++----- js/level.js | 16 +- js/mob.js | 2 +- js/player.js | 2 +- js/powerup.js | 15 +- js/simulation.js | 21 +- js/spawn.js | 100 ++++---- js/tech.js | 368 +++++++++++++++------------ style.css | 294 +++------------------ todo.txt | 40 ++- 15 files changed, 452 insertions(+), 596 deletions(-) create mode 100644 img/blast ball.webp create mode 100644 img/extended magazine.webp rename img/{sentry.webp => sentry gun.webp} (100%) diff --git a/img/blast ball.webp b/img/blast ball.webp new file mode 100644 index 0000000000000000000000000000000000000000..b71646659ab9f1134fe17e4e4fc754cb77926131 GIT binary patch literal 34320 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

shE*wHDA~Yn7O~R$5s0W+mqJ0H<(^e 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 UTV1n@Z#;}>(cs?9#irx{0Pkat&;S4c literal 0 HcmV?d00001 diff --git a/img/extended magazine.webp b/img/extended magazine.webp new file mode 100644 index 0000000000000000000000000000000000000000..f3507c3f0a703384aa1c86c1d110e6ccaf213f74 GIT binary patch literal 32862 zcmV(nK=Qv*Nk&FifB*njMM6+kP&gn;fB*mx83COEDu4k10X_r)N&o-|mL@>@Esys5 z(eVEqYo7T($Ws7qGW7kqYaeE>4Z8cF-9Yps|0w@6$!BIEofI2^k&A&(gA^o@a2mELM|M_2TzvX|c{J!~R z`VajF_s_p?z(3P3>z~^HzyF#3?f>)r|JAqc@4!FrU+aJ3e&Bov{zLr>{8#pW+dtpW z`#+0+;lI=Wj`vOdTl?qw&-4G`{y=}Me{TO-`P=h%{`c5-{7?I@`d;AQ#=o%tto-Ns zZ~tNci~SG#zy5zkpVL3ef7|~*{-^)H``@sC=0DZ{-u}*i>HYuz^Y{V(r_=-fr~m){ z-ryhZfA)HB#dne4sr-Wd+4aZr51xM4{rmO*`-lCH^#2@R<9JT@|Lwo#f0Xq%`B&S| zw*PYfE&h-DxBn0KUq=7C{Kx+5>yPFC&40N3zW50ITlpvTkL_QuU)jI$f2;R#{+IF} zsXzK}?_akc1b(ml%lmKkpYs3Zzqo$ceH{GH`(Mnzeg94V&Hj(`d;90u5AxsWf8xKm ze$s!0|MC9g?qBua_Izu;&;H-`L*NVfKlKmtzu>>wf6D(8|Ih8S`Y-tZ{3_j~@Cwhk_%MUHh`=m-v_($x-KnenNVG+V^ zXrvvg7JJ3g#N-Al!lcma0UP`*v59}1(`-4S!i|!o=5C#69Of80+3ESWTO#AXj7%z- z9%3J4!g!=91U57um^$~$^Vkm8uzunCfzsv&~0$GBKBS_X|A;N1J zGT&pNLKvs_yI0-MGovrb8hxhSfpXOKkj34?A|S}K&KQ92a^Y!lz;B)#{d#&VvoJ-Z z)>@CFU!YU~Bjuy+1Ob#?`&cJioyJq2J*)7ADXm!AvHqK_TS7SzO1#^(b^3y|oHvsI zzklxY`JTI?i~nq}B}nl=1<3-?lxlWDsVx+3=q?Y*rk8Bl-e zqHOCAx)nZK`KAMMGaL`PD0PiVZE;b!`E=Z~G;Yr(ARBp+5_ znOX!tUxMU%d?3t{zb$_mBB0VGg8W25;X-PHS=zN2qI<$c(gZq7JhMVpSQa+UHD?}S zSs%Tt3wAq~rC>_wZagreDCiBsJ9g`&h|d&%G52=OPy4Yk6$k&cI!aP!8#2S{J4I$E z5@CEi9dQ8TW{UO2Q9Gwow>I$}!+oclVfB?Ze5!h4FUT~lPZi1^^)y95%uhtVdk!e! z77*G9AJn6xSk!MEd|FVjOWk&TOg`WTOvOEe=fH*P;YS&0lT&s6;68^jjZDz$OA9$7 z3&rNRAFRd2@9j%ip=ut#lF7HusmkYdVhKtx`qul>?Zd3VrYzey03Z4Au*k2JZfnd7 zbPK!7$Qo<#nD5+YpwYkN?S5-Wn(rfCmrIU;;e#w*;egbu7V#by(*Y(F^UUVU_`aq& z{Szo6zQ7t>!cl_=jwsO;jdg#RTOqsDNU*lOLqI%kWb{F#A=G%+IFu^gX(FRkUPVwx1<{0 z7L0_9o()whb+<%)r6u<&L5Ogc{onA1gw?y$ikE2#;T)^2Arg5;FN0k*B5sozUlHx{ z>AuEc7p#gp7g_%YWcs1J2q9szy@dubvttwZNBp>Zo`3WqKyAgv)v;5dx${=!>PgN> zL_2Q~-m60MYr!b5d zC_7i_z~sL<|KrK9|Joa@-mU(YpKCFinUb+x#b`EcYAV1}|MI6*M%VsysKJX{Oec-q zypiI88-XR4P=H04QH&b-*6`Pf`9BXVp;hp=nZd#(g%fA*C> zSIb6c(eWX022C=f$G=|myHXd~X4)hS*s#W(YyPb$`?6n!A#?Qep?1~~`H(PUC_Nw~ zSDyd_IQlE(rmh2vPOJ}=!4n!LIo(`{KLCfMC3Sc~0F(>5)*%;brcf6wRr%d3#ocJ! z_MagIzE=%EH%r^$`P+)355#Yd z_-d}@AY+ibhL{-R-E`0)4LCwLv-aF=h|dbZaMTi611}SVs@4i#YyR6y82cDo`>Pl>`{?g#f4#Y_MkqeEqc=HfL&sP*-Rz&pJ zBuZ?@xQ0)nT(hb)>N)PP7sb2daTZeCQ+P*gchl@Gg`aEqb^?1nY7z!Gu;}GDvwrw* z!*~QasUaxPvAB3^zo1)H7#s7=T8i`C;BX=2Mh?s`=dVPJ=#zIo8@O#S0`%Psx4Nzf znx`~ASQ3;qBZi`Z zq=l|8K$V)g)Ez^&pdB;^ZI*LrT_h)l%p_2pJg} zJtu!nR)VTtMyj$S$kU-V8Nhq#3DEjR8pdo%2ooI>dC98(_LjLooO=Ymm_3b~GJtz3 zVw25sJ-@=aEN1yOw$H#>Q2~wIH?}4B;lLOlvIUr7#M{~$j8B4^K|+mFyXPO$VYovf z;X9tZ{j%NKg__GW>wVsD%oZoq{C&_nC|>CF`-bB?Rn8QEz+D34}s^M@Gyej^%gVQNHro9yryE)E9p# zA|dg5jcH=OlhUnsV81}nM)%lJ+}!>8Vb{S%O~K%EL-_Uhi4p~m!B=F9ln*I063Ccn zQlh_6h|pY15!N4j8X%89$zsBy1Y2$nw<)o1z5}0)TKeFITU^WRHC{Wm72TAuRcuh) z&j=Gs9+mMI#8#Sxbd@#B837HX;TY(}Pk#@juV{8g>z5K;eeermAj@@>cFn(-nychc zrmTTf14*-4$eq=kM+x3|4+%$ZM0_%3$J)e#U5j}0T{(ekpNVouu3G%WZ?thS7oSMM zI%+x!{1^g?Qg!8PR9dH?ghPOOMKI&IW}LS8YE)szaEgco9AWcHH8atuyBiD8XnYPa z_~7?4eWSqDN@=93!Z`H|N3`kHzI1%>$~qqk|KYN9xTMSD^DP;nt(i;7{l6t%ZbxG) zX8A}V8;=^tA3dqN>Ko#or#G_nzayRa@8U-ZZUFGiB^j!5S7z6+0RPMc`Y_Lznz)#p zATaQ=D}?KWy84S<9F9{1Nca0agEsO|fY|s-EL}4J)4^@@LFCVjRW_6EQcjj^c6L{D z{tDMLi}t7Kz2+J&7{B9BR+)3Ll`St?^*0kxw?|M9r0;!K@K02f#F`h&j1XF8LmdNh z+Z|QYq@9U-Rr-GEbs#k=2|>4wXajLX7GdUlwAC!L37Ogw|EiM&49a@zlYeCw;jZI8 zkva#SCgy!{^br&;F(7(+-}0|aqLSIiT8~VW5=$IgupBRlu0ucm$V6FZHSq(oOezt% zr`wq4x2^=tVgNe-!vL=9tASXaCHFkU5E#>{Lb*nRraYgi3#NltR_2q5&fWus9$YAf zNn}Z<9@5v;A?Q$gCr)YQr2BhxNnN!yF69Mm)i+!2@rb{XPp=i(iPpf+v!E`cIdozHbW0@hZveZQ4&gda3D&-I_kq?# z5-C;6Gxjjf5T~6q_f*~BVZ|1Nuj@n>;<0VE#XEu;*l#tT(>nMe_)XIf`76MliWO2p z0PKPOBd|acpg2*#o4m=YX-lsm@>U^|v^0h=0M?67Ai@T4d(xa(vD`Abv%?*g?2otT zl*`@W$o6uMa?$?ivW>V`4y;-mb0&IUaExfewm#f80H8Yc5gq9U|wQTC2~?rnV} zKp#9yRkhc>(P*E>nggA@3Q`!if9Ph58WT?StJH7Ky{+*9K9^PR;&>Bf25LC7`~dXR zOCK~gJY4A6!zcx8dglUzeQKb)1J2h5*v)L;y7Nw}wYjHCa>y3hwKASBzL4s(=~-%A z=EHBEL@C^O%maNx_D3lhwioQUri<^yU=dz={3vGN_ed`+idot}wv^-*QMkXk#sSzY zBLZt}D80^N+W+4w0Fit-eN$Z2jv@U?emRWuDedXgv!pBviH-Bv#eqs$n z&>A=rXeq5ThBox>Re0uokd;N0z5?EvMk(XL%Q!z2P4!zG+l#qd4~qKa!kyq%uSLvT zT7NpTe4UfU_GOfhyCXg!7e}RYwHQ%me^#Tm57UT~D+V?{%A$Pkn1OV`=bxMRIE07$ zIa*51P-JqUA#@$a`yZ&1FZbK8a-$=C$E6Mi6*uT|b21WPrR<1C)41}qc-1_75{d%$ zAU8IUF}cpa4*10RZRK0pQAC!kJ#g9}bkGk{z0(ueUQCu(SEG%p*|+JLM~+xcL4&uo zV0LBcS~j|^oHy*Guf(U7*-*HsP3O4JQq}4C1=#0=79#J~$ZWzh&QRsPTcLr#7_SH_7WtY=Apohr0PgN_hh<~jj2n$E{C=`n56ZKOXP_++S-;K+x zMsvi_-23X(M)`w$MY?=8Bifxw-wZVAQtI>@7V$HaM>L_m`4lXAob7x3E7vcpQImjm z7&fb;@KlqczM`=8mOZlDN8ti5ie+Sr!2H?~SG(*M*l}E=wXpT7-5;rj#uI;e4}s2g z-+-sdmM&;EH+bl}9&1r;%KzMzFK_ ztfqN+ZFi}zUxIKhh7_7K22H$g(60>Y*Ju~p4AH#-o93wR&a7qQb<9AnZZn5VnSq72 zwyRE>^ACn5J%C{hZq`9iuw)@tr)(h9kza`h)?MO#eV(i}NrUJow_&!nca)jIcSW~* zEs~|FgL%^vRprxoGqwx9X&MbBIor~jv;g#lkTSctl^VpPk?|;)g1;_|&(<2_w_RBM zo3t>n(Y(fYGetRM&~&VDDvsZ_j;Ol*!#g_RwdX!LQDsTukH_^~k`F{?^~8P6Dba8F zL~`w?7*lDFmG5+926Zu!ocSI+3?P2%)$(KOJ_bUE-YX;!g|_T6OI2wW?(Ik_DBG-7 zj;040Yi?SM)Sk(EM9!4@)YLgre0DkoKTBLixus&0q_w;iP%4;&4WtXfzqN_5hk7B$ zXP%-ZRY3Rt8cIUfW>`4z*!fEJ0xniu&8r6o0Mg&CtWUc$Tk)1uApF z$A60#HqDsl_Mdje`cX!tK$zQguGTnw-`y3coZM@_p7se z{>rsA(Pi)w!}Fw|WH+xx@G40%VN^wXEIAvzn%ZcFGLu%Rw*YCL-EsCkKo@c2c1cp| zf;;J1%(+iL)QFXaslNCzjy(1jZ9{h^k~7n<7f>YYh41($d)u3j?`VHZichJerVjZ@ z+n1z-Mrv}mn=ZkeOT$X$s|$VTKf_wJ3FZf1Y&-gKD(IuQ(S{K7KJpMFX`u(mfpTaHUus{2(d@d)jV-g`-?AL;CDfQX zo&G;js9Uek+;kNoLH=m!*oU?c-CiqKvyH-fV)VFV4pbU4fEbpkI2zgB-X`rDozZGt zCw8NA6{c~e_ni!t75R|J+G+3y7<#$1hp_Ikq2ekISpGbtpUVz*2OqSapX*;`?*i=n1 z?=CEn)fTi6awlQ~tV=rMntuoTRq zux424Wt=rg#v(de*&!VFNX*}=W?grStDz_OXG_1+8hGdtt^_BNj4R8vla;)y;p_t z7CFBh{Re%1{;SeNWHm>MQdYqlnMtWqoolEurION%IySptGc0M*Hzf^VDZr%#ocdrW zE)9xsu}|^rvW9Y2aRYZVTQ!yPxdw+J1gV&dhA`>wX8BquB%32$MVODMV$1S!lUC0N z&KLf!rX%)RQ-!ka$?_k{gwHq|DqgGMNB>&$MISz>8r9Y65}Jbh!w$i`7L3h{j<%6|A11C+k;E#Kh|g}VrAy8jnt6&%gI>zCj=DH4f=7%>qr3AD zb0=5<5P(5hVCsIx5Sr43JpPXAcm_tAefts566Rj!S%}|;v>CT0wfT}mp~JvI6d2^6 z=3tRHa|m9j-Kzwr2g0g(V&0^;v5y(7EofoL1~=v)h|_|F86=|j@WxcG9k%u^Ig#`@ z50f@sF9m8kd8Kvzr!!ijH|$6$?e>{i_+018Gs`FV$8-C=-PB;|aCwJ{sYS6+Ene?q z#A$N~7g_r!Wvi^xqnBEA?7U%m;9mPG9$Q`2(c-^t0X`oNc`VL3A*?_^0f8-nWMyOd z^#fd=9p`IS-?Q*mRHQ0>B;jSMw#9ulG7HGR$=1~6I8GocP`!nO%9tHF{QLgd3T3U#!CtX9 zVn##ezR?Wdicqr{V2I~M)SsPmO3ZjATq6Yn-IA2ETz-wm#-OUYJ}X*@Awg#T(*4f5 zuJg88)AjJIL5j*fJjleIdRM6YzdXSVQ3HMn7u$hm7o~Wcm|Yi*%9!IF3*V_1xozG5 zS^y5>wD|`*S%=>KQqrw3IiQ5LA3JshQ1`u4L4+u<;i^`(-Z5t!+Im@)SaJ`?rQZ<% z{9D&n3_vQ{jc#@dFtLgf!~Ni0ePM)e$?Hx--3gYHk0^BtI)~UQXqFm3)&lh^buNx}e~8>B zIUQbyMiVV~#}|B6?XwT?p#q|Y;-dJW7S<{{2)gEart4cB66T$Ai8ws$deX1+Q6Fx_+LBn5lirTi0HSv7j4BnBOXgznZqj>eM zoZnp!z8@PqqSOor)l1^4(+LgznUB9(wfCrS65$~%AcX9Hp2^N_PDQBKRZJgXQ1=03 zOS|c;>fL6&h1E-W719%?p7CoGA=C)=nNMi*g9~s1c_0xMet(d=ZwmPLf0~BmV3SnH zTdrWf4W0wQfc(Dxn>fFd!la)Esx`RzT5CoGnpteO7vHN9x8 znfLPn(zytqBQg?kocxxGy2r$$eYVvDwxm;uMY8mH5O5VzRlm0*|S%`Ra2q#%9V&B`#3-c5oZH~ zmWeM`q1O|asU{G61-0nZ8&j1_#r1l-@tukaCI0D1uJXnvb9HFPR z*V-EH2GiI}QRwFc(tn$sxcO??5ZM)A%_e*rMS25W-&mY5xPo9+`7h z@+QF2fm-`t3A{Kd4dFK;tBo$a#O5YGId_Zn6xchv z*-@3T%MU0`5pjf0B8=DUW_O~t49evm^`0l%e=rzRcNDI_Z7}|B(TG=sILh(D<(i83 z+j{4*YmL)f%}hKiMoCdcezzP=A*E$2_}Mr&L=j-9JHC7>kkHx8>V`xsIKzOa*{wGdY4s^z=ez0Q#ZTho55lNgfmUe?1 zuwo84-dSE&Jm~7rfIgpovfn-C_#f=@_9w(Y0`h$s`8m%YSjVZwy5UJ-RA*9fBUM1cf!?kr9Q+TBdI@!4!B1I$e@>oU zp*k6)X6|tz$aexC>zDEyoQh#S3AP@ot?;dZ81*(Nyt4&lx+8lS3xY&(RXy;eq=p=d z+1_|YgIH5JGv3e-W}->^kMliczRRm%JUW z@x}(sPq^a*{A2I~qD&A#T)>Qf5<{x|;Bukk&e+Ix;>+2A{jleOj6Ibsam#OVR9la) zKUqKToS5XjO?xP{5A@c5^m)Ex>IWk)?sc9d8VNo=O-CWr2ghdWev#R2F|c5a2_7<( z*@?huhsWNdp__Grf_j{81acexgd;#`Gtu@7Ojt(F6gCuBNq(Y)OgeKywppO&P%w8y zo*A;#a`>m5+0v=)5N5t7v?-R7EqMim)m@bfQ~lYx?(4-7^SdAkv0~N=(n<4$X8(*gtUE37-Q0sA#-lv)z5*R52isy^ZX!Shr6e&y^!VDYxh{=k~Oa zQQmB(qRNFd=YF#=%l)dn_?5OZwwS!WNGERdH~JsGkxsa|msPh$%Zg&4~#k zSPm&H73Ql$^-WD0lf5EuGs-XVF4pza_6>^P{AQK?*lKKfu*?VeB^oREJs-@wv6YH( zC;X0QVPG35Uf%*|09;^mU9r^eeUK-l!yi-&##`I+c=JJ#En$EouteMNo?c+oXa>kGcG+ccy6Lex-mskpeG55XW zhUvaGt$ZW0t05!k?3QphJW%bF(XW59qMpWtx;5fkyZ4scF!J6;h_)u4_+AfpAN{ak z^9#=F59rL$Qstt7mk?#hns5y@D4&$cKUaD5I*aA5$LCyu8L(#gJm9}s{Smiit1;t$ zeu_?r4y5(<48Gxe5k?Gm0eH2QZxuxr=}gvEGu7(c`ePyF(0u^8Q;@>>=wW zBG-tUll!@IQ)TfOH(p?#>&_i10RsB1Bg;zFDGH-5*f_P}gy4MQR=pb=QnT3`-DqtB zY7gMpm)oRJd?P;HX7!@-ATy@QW`#(Abkj%v%aM%S75tXyHMaTHvK^G zhk<%9gCg{+GRy#)rZ$G>27KW<;-blz*_+ngmlIxCRbC449bUZ`i+!tQ>R=f|4c6v0 zNT8s+k8!u)jne>|=F?eH+#-RJm4UC6UjCkvFo0cGtHiDZ#z|s3ZfKiS2RN7XKf<(C zv2@9JP*q!$H1Y*jkC!YCJA5v^>t82%oRVB)*=nw`0 zV{zT3`T)IxAb7tuMR(Nw#5(vk0FP4X;qLTo2Di^2)P~P&tVf%chiO>yN{v;MamI!|CpzxI}kp>8gZ7!V-DP)AlCfEj=}?f8s$g`p=mdD z7WB56$3<3?lh9d!L+@%w$xP+Mstr)uycP`4QiE7yk&=q4lmuTo#$SoU#~=oqgB2IW z*pN31?ID_a`)hGBFDAro^v!i~99Dno!JgLzzVP`bDA}F)l7`K)L|941Q>J$>t0YM- z?$W{7$TTFFuVm{Qnc)EGWi=(S&6r>DcU9w;m)&UljLd@#-LYr>&UI`6c0l4kNG$-i z8`=E|+CG#AVO*pb?l`?D>I9HmCUX|^rUTvX%|8z3|95Nd2J4b7yQkuaR2%%u{qVC3Af zzvFK$WT0(+UTLojvI<>DC5h36RSJW^RrhOpQ_wAi9i{dzr2hKZypY0!p=MYm!(FGO zo$YJm#~mEGU2IR%sHg;>?aN~UYTK@1ge3Q7P)33t`)>oDX4i&@pO6);MOFe7g!xx4 zS|L0CnK-5sujYOe0u1oIN~pz_LNFY8|B%uGxF~L(GAR{FfUDy85HcY^;N8N3OH}Y4 zkx<~j=a-=B5Kr?A8cu-P<`Y;25Lcis{u24Yk*ojk!wCR=j*jmNY(*RAPk6(b<$fZ% znHiMRg#>!YH-Iun3pkt1%%$WX9p|wj>_gyRBp3NR-sK^nTk3T=Dm20)Fcf0C9M0Rx zscH@4s!NeXsJ+z$84NU=D44TdG~Sq5O%-Zn!B&J`lTGYK6>c>ZQNySnY+u^DZUeq; z=fp}3$)7W3Ep>{{l1D&$+o#JUT9rZc;Cbn&0Vm~#qp&eD!y4XyrXc8Ufj99~s@i1; zK7%4PJCE1%LVrJ7MNaxb;bvgbwZrz(YdSdrLtmkF)7fPNU)09s90h@$2YtW4?uNRy$LwUs;xSl7N&|Q(RSe zQfJX!(&y^=wvXfLHskPLB9pit%C&=(Q@S1>bTB&XCJGxp2Oain}sv5g0)x9W=7n=S8} zIY80|Htohk!-~jqtkGXu znYmhnBp$@{6|Ut>NO;0V`gG7fGWFBnVjK&Y31-b$W3s8U=O(geSyNDH6`TBUgi|j? z-sz8!V1+O=<-p0R(Wg-mhS-Swh6>L!qY^+F#w+NtmQ+j2qq~H<4I`lUq^p~F%}&;6 zs4E>!C|dq2uAc$67ee1Si}VU|vlP;f^jV$<@-Y<1Jj~Q$>(p^?7n9y6m=wZ|iEq;wB9;VYMcsr|(jTz3Y3KxRNxAh48>Yz{GXB5WYH`k>1ajQ|R@ z^{?&6L5HHOQviN59R4#869{mJ-i;IaYvK~HUY3`!fTlzhx)P5!ks5N49xftg1oxU7UYCxXyX%S!2 z&D3-(Reo9R#$)Kt!Pf9ppcy8xhbB}9&!gD*s%&g(r6n-u3g+C6I%RB0mvz~sYklw*GV(`mj0H4k7(1Wubim1ESX~niM zNk7Um)G(V<+khq!B4r+OdM9dE>}|ZCbdh9+muYwWeww&s3bUux;m{ksu%H?BTU^`$ zPil7L6K*|rp1MrfHVt(wyM+iWrwlkWV_0Qn4kB!`z2N^gWpxR^0R1M_<{!a2ktYLZgsS&WTm!P%`yE$UB;X{J_eV%BuF)aNmNt&Zr^;DVh+K0c~ zXMfSn_7sKoNyjbcO}Z&bw}9;w=)6Xt2*-k$O7bN5Hs0a0Ui@JA2xC>tw+$6+2DND{ zIJF@3{FG8rwJaDv?!vuwxRRrkX>JW6y zyjiwFhc9_)pp_j(2N_;GobPjyp=Qh8k_DDmUJm29ADTmOKW`4%Ohgw1Xmg2YosdH< z-$?hR?g{MF`QgmR&h-$XbEqCk;Z2yg{PC{j6%`6{u&PW?!6E%bzcl@Rjt)Jh4Dow(3=a#}m3{s*T(ZBcd7UlyFusbNJCx)Dm)?wkDZj(DPzMb|Sg z=`Le+xnk((Z&Cd+_uVV2_f5sW7OuPTg$ggO0@&KhcowCmQ(hkPG0N#5W1!`0CZw~Z zuyN3!TrD4Cl+TG7e6S~wuWDMS6R(OFm8_Yn&jyG+2A@tP6;Ah$DQb%HcwS*Nd!J&` zL=L?TEd65@@^W5UfBmsOhc;oc!`}K_g=nuV0p_?ebZafML>U@cu+v0A1k1q(rLc2u zwLkR2tZ!EIS-1EGy``G1Wu1P7%kA(J0*FEO0HPjvt}A-ATr^mrzL4@x;S*0GWS|?g zb?4j8**&Rn(-3zEEBqA1SF!Sx&vVk-FWCy4VFs!?zQ%Vl&x>`iPYZeJ0C-2owgX&m z1UD0$F_;zL)!uPrN$uCxRC%0Em|ilmjeVLK@|rF|br^-3)V)_UlqnA=PN3J1pR;({ ziVpIAX0EDHYHX#v*F)(;uZW>hqp|%9LKZl;2hKLywylNl_WAP(gjcMFvi2eywmJ8c zgzArLhajzpn53&X`a{w#)e4qODn`}|fKdK8vLHlkwT(ZLei|T~Ow~<#vnEIxTs|=6 zr!&Wf)}yJf=V!`907Un+q|HqWsa zTqKJ_?hG6Spilo%leMOfFUz-ecc5+6vKl4{=aO|| z6&iyPb=QJioxhhSW%XiZX!5OvHLQk8Z1Xf}M<6k;%wQ@K&Fy%sv1>UoG?@*Gh1b;L?n zqx?220}gKIJ*W(Md5udZYx)3dC5GM(`n`VVl~~BO!I~wAr7}MrTo?Aj=?m6p&zs%P z%WFs-@v0^G(pnU3=BqD&OfnUbuRG z{zU0p$4pFE+o;DS^rq)1v4J*25ckE*|1F(A&{B}3F!f90DLuG3zeZlTbWvK@gV7;g+~pUGM{GcY0IBU&%)cF?O}NLrKIfLh0g&|P3DZYGF};@|)g(%N)=uae zC1`1&?LD6;)y0CfQJ$3pEl5rP_tQ5S>gH1h$&e%-_EGvUYf_lA3ubJH?vr%Qzau77 zK$gfJ9^)lYja6MbPMki^$C-WkQE!nySLaW5y!Oz%#{t!2jEm^ zHRcXH{>|*p%?YIaTbuX-M-Cp_aq-wom;AVNa0Q3(baz%u=N1V)k36RrEr{!W0hzFB zllZoP_J6J_I6?7CKp^O_vpW-T;P+7?U%DP7+|tDIdb9hX0d?W!H=rF9@Is{m{alkh zn#4Rla6q=TzTBGTi;O3D(&=lvfQ`?gAe89Z#E#vX>=RjZK%5kyt06TQVsq8wkx|Ug zb`($8@)UAyWHKV&z6})kW#PaxmT>2<`uzSz(<~#JPdSsRZLrZR$j;+lf)M)JZer`< zX=8|DX#|e5?f%}E&yq3c$m@?rh zMpb_EU`dcoBouXQA1+8bj*Y#InfNZ7gE<@PRC#_43)pVa0H_D@dAGVb$z#+WHvV(e=WrxV2xzV%KV%k&usbuaJHcL%sd@xF%$iWpsv5A$9AC=No_%o0ISH1&4w)u{DBHrUt_{G? zgxO38oPA&Ou~7lbU6!8h0T)Yg647BEjyu|0K`D$Yc|1mE!3}IiKs1!P2!ADLJYvDL zBUv6V@Q~zD(^yy7Cfz^wWlKh-e@UnS3W^4+aCS`zQe+WaNko7qrSTlpbQ^}cux-6-A+K0tCSHabqT$kH>@#g1 z#_&fH=>0?%+s@I5rO1)TjlMUOTeP3iPT(t` zW>n?iP-pYV_gx=vG{8vO)FeI$s0_Mw%1kt6R(XK7PKl7GyWQt-#je!^06>%9AuIoV zS|eJ0FRq5W@Fw56JR~k1-`eUh3 zH0UO4My;di>K9&4i62j*=bD zD<1eXzQj;*MLuK@vDGzE)Z%+^PPl5m@o{0#WzN4mQB0_x|(x z;8Bk1;#01-Cx@{7L*jNaK~Nl@`_9g_069R$znGoSqz}@I6!V?2<$44Gs$EUFNm2?G zg#60T^A&SQv-@ODvz%mMBT2J1r^Hua0T5%>M+tA_R6sRh?bL|UF&%JO{L=%>q5Tqw#8x2`R$O7xHD1~^t&QRV{u6;MGildO&_6+ zZL{5)?JFm#M;sY1mW=iL4Ci8w$kaaY4g-TZWBFPyjj;5jcNDM87Cz8dgVFdl5a3kC z{(0Q__pj;EF3W`VzVx7WI1C)U+-^F{y{?g+mTLe%@CR?HlalvAr_@js?cTp7u!L6D z1nennI&i6lB8|iTM`1H&baFrrE?^okimh-VT6yD+9t5mn!IdunZf8RSr$E_Q3pV5R zIZ?)saKU}4w&s>Jfgd_=m{=Pu3z=)UhnT4QM2CtqNJL)xp8rA8OMUv+w~VNptJmTd zh(*r569;4SC6E$bmkk=lVFVh-U2$}OoC>{3ry!s+`*Abb2;o`M+a=f<-MW-63C)Vs zajc-+u`3HjK@K_Ay~G=C^Tprf`*sv_Na_A6_Y(}g)>U59&*w;#<_smmFULeGt9b#_ zdFM@xPAijc3AxdyIFm9*h+Zr@ym-AJDoNSp3R;WSh-iGuASws35;Gea-Onjl&I}hTUMkg4x zoXOZ+aPpI_9b@>)v^El0?n$EMWsDmr#W53rQps$Ol(#^2nW>mbxWR4s#Z`=yG0DfD z&x{rzTFiMyKBdbhQaX`o3{g<#3nC8I10MTF<%PuZlF3lB+z{`0Y*QMY{rmACTd`)s zE4Y!=$1OLC>iJ1sx+BmMEuD9xv7oO|9S`Jc)N5N~T0r6}{B>o40D-LtJCe!q$uun( z=$w7mI9HPmMw#z#Rc|hH<0VSI1)Oh?#yEhk9rCKac^1D()>`b_^EAUtwhKMu@W-Wl z?PtZ|yDI+1S5a5$Fb@aFiRY{^z+sXS=9?=yq@+jv(S3iK#aN@X70X^&k%jssYT79) zE(r1Zs*if)mu&*}q~R){GX$TNzs}XnUM_Ij?l~6#tT4BoC(}Dn)+!X>B*|Qp>v(78 zF--pLt1T33munVlL1J1e(f}37q;iR_B?ULZ-$Z0nuP@!xS*yT22V^Uy&kk!_6YZwr zu5)JfyYO6Xf(7@U6_UU;#yX1IIlK&%kCt}6Q0SzqVx1}*Fu`CXaY128O=fVI7bCi5 zRugzWe1^dfm~7K{Qm$<+8#-}G1~$R8z~shsuW5FQx?tW z!KZJMZx0>%hzPnscW#u2Qn;wy?mryQ0+9j%fu_%BqyQ>FXx;v@Vj>3JbpCNyeeDPq z+q*m+A?IyJ@)xBAY}2YYuUTfi2IW5h7O0H`B5*Ia8C2WpvAPH>T2u%%^!TH#W*`af zMxPgwpvg4=lU|q@6}30C@9@1(z(2#JJfU{{5%KX}E(Ll+azHUIuTXI#}3WDV`D=` zxpfAZ%rWIh34iNlwre+8XDJVuBFtI4RvnB3xu0L0do5W%ljOiA-0l>0ILJc91Iit_ zp&fv^U0>Tj1tF7PsHuhlLbVYSwtkImdL^zC9|>;*l=Db~#3!y(dJ_a6(62gD)1N}X zS`?|vn1dnT0m58a9M-?)&&sk(#Kh?6FVh7-TiD&E-$qV~94bW|8bY^TuG+F$@QyD! zm1m9qvO)aGjQ=wi+fW)YC7p_rKRsAyZbg;Qo9<0qk-q4TSe>+(&eJzDk3OW%_@yWE zt|(%x{aezS6f_TTR=JM<5v`;!jVmdz%A)`3n(V&c#LS0E zA9l&TR{qU{CC@5O@W}zEjixnFXDHLT7ru1mTJkWZVAN#Z;F6PS#oe-8XTSv}uOA0} zBZ^J=FNqf{m?h^@7nWNzAW(o7go&a6CTDxjf=|pEsyl2hS~AWLU6Hpp>lL`$hoqx0 z0(fcqi5$G$O;PQA~b(hp$%xAI|NH^dsvNFzg=*}@`Zk;S)A22H6XgJUdxD{!b5 z_fN0bMoMT|Kttt>H1k>Az}kNZ58?_UeSHW`WPsZ6x)&Qx9i!FFqEup*rm20>996k) z&v(pDtOs@S>W7qsTkxJ*UVn$)re2F%K3gEsZ>W50i^lA-sXV=#lr&I?ch|i6BZ~2R z)bGu_6%g3C$3>!csPtIb4!IjK$4^%9psFCUTq z^rx*}rD(CR8iYM|mp=D>1RCk&lC?8SXL>Sfa7Gkzj(r^6C1k$ZosI{*_El*~nslU7 zmeFJWKl>k&nt8w8_G1tvAvKai^W>bxGhE@+mk9z(Z)kT*=MArmn4lY;{|V+(Wfsx! zm>i{B)~IH8XdkF5%WfxpCpx=q(pOvYX7D|}8(ii)IQEz&nf!Z&>8mjwWh)LEm;DFT zL3Oq}yVJ0Cc+P>*!cu_Uef6VLVxyzBcHiVv+PyK0;9E{8bICpa+VSoUz)CideZW@AmH|* z9Hh1P@d(}UrWCu@7q14|l%Pa_L!abzWl@Px$BOhH;}!vlR}%6my>%Yfaj#;e9wDAa zg%p!iwi-f9;knf!BOWxMP$g?gMTFE1&(^9if_u%)RBg3%XFPP_h!HNKAc#>fT)c8%BcB77;OyLn z!*vsiD{IT!%u9gHxT7Wa|K5z0C=pC1Ztrys={-_C2r6YL0fd%C?1Y0H$Tc9>QAzkg zqg)ykMga%V#m)uFhk<>Yvb$lE5ppNQ7&Y6icP$1QM@v!k4Fv_a9?w}ge!hviN&JNv z)Eb`~fKx0z)^h8~HNR?G%@V~1WgHYfe80I~M%bmxu-(S2?@g9_FSU0HY9xOd;g4$Q zqF$U9?^^kjOukOIYaIy@#evCT6!JDk6RxZGU(SZ?#6svpGNOby5&qh&^z_#YVkfdJv&u!z&Ls4(wO>AU-S)0#m8a;$hSy*|E;a@9Vlu2usr+D& zJ_I-PorbYik^*Qi?Fzzy1nV-B{J&TIuR4A@R zs7^gWsWsAJ5#YY}bLQe@y5;h_7D5yc3xTy&W#^vVgYTg@!`rb8AVj6LgKysePdY zNLAJwTMR-C{_m<3KKWtO%Xn$_H5$lGWals;pp6%ru1+0GF%M}waAfLQ zF4K~XXT=*aUeHMB+<_?;5fm-g)NN2t0;n8?4GK`#-vN>^BH+RYqtj6=^|Va#z-uL^ z*>6F#YE&4XcCVVB7j!KX0OIFw({e+T9>i#AwZw%}Ph`)+HO<-!pFWd=!U!`y{hx9; zC^psn+M)k`M>Epc%!!#wz5`vfcmdWxeCwjv(92|*LOC3v^)UHKx$8z!>F}u@sONu0 z(dijHX>GloHrIKQvUL7U_Mh?W$U!~%C18JRV&$=o2if3OS@;gxTTIS$qg=adx30t= zNsU|i8z1I7IPKKR9Bmc;4?=00li#fr80U>h*fRuC#E^6%y);G)fP?1NCkswX7P!{2 zFhsP4AWk*F0s4BR9MeDSC^+UtK+%eQSyO3W;neS7s`IN?E>nKQ`JdiI^ic>@tk<4W zo9z%pA!Kj0Fe?j%jU@6ClZ~%%%h64lB5n%&wV0`rb2m!AtUt08S@4H?W(AM2)Imc3rrl$ByvyK?*%Wj7)#Hw;jbLc}+{3;w8nG$VWiYFrcAq_?fzl zp<2E<;t33Eh|swQ?~ZM2niGdpmRl8w%MLa`y!Ou+@APU$_FHG;pSZAgf}J6x z(NuCrLtHy=wnLk-CyteXiZ{U~MB@ptj}KN!trtqg@&!(mQZ=J#zd|dh0>M|ezq6uR z|8hB)I~cV$wqh6%*QpTzJ5KGlxW;I411>a9?5~zdsMN2#2aSL8oN8Nww(M;#@+ z7+084!NU;5niUsbN%bnsVfrJ^dO&Hn-NO1}wJzM~8KrIjbs)ybVX6dVXHV`M-_{52# ze)SE9om?VrbvKAlHB2VSpiC>uFIe@F^>JEJ+t6iy-_8{v)b^?0O+RC}NFd)3WG(^= zqcsuVNeB&*%yZGlxg2mvXGh-=>iop<$Mw5O6iIU+H`!&k5bK)_Q&U-ffG-n}4_Ebn zlqe{U(IXh>KU)L_YX$S%K|DESC)TYYjj2grF zz&|o4Kc@s9i4e%`y=~hXD_oYXBNUfWguq?q1fx}YAK#DCALhWfuBNWRG>$Fc3u~Es z)zf?zthqbfgmHaQ3bdSKr}1z4$QU#vD)lzhRoftGInE$+u){J%sj-dHY<;x>1V>$C z_kV3v?NDsqKpmWkeem@++&)s6@OxLEtFh>CUlSs8yg3>3uu9j@Q6pWhaZex3rI_AM z13&e?r0ZlYkU2fgrfLvTv~H53O$U**sa=}2{(U;08)RUe6hlfnBc^;|lcw2J*4Nnh4qVsU7W`fyB)wvG@4{Zy#%ejn9Fq>_|z)!V_zw zf_OM&sOFyP0c4bO#HZRc=cVD@_%-5Hxr359GScAXn9Md)cg;zMZ&I={8tE3I|I6i` z%;`OB#_M!J?vQD15++!&q$UC7R1Cixrb`G&LRdh!t%r}lE}fMG%tLm4*aTTNF2Z-u z;k7dOcgvjJ@jWbnB`N73Gi+hHKj4l&1azaEso(v6`3kH$E>m5i{_w(eyucq=c5mfJ7+9G2{p>ULa1b=450R~!%ar0!kVKEZ(q0! zjwsTNC{{*=JVE@2W)x~|V}{HoLy*4jW+k12cqI$HB>KOMji5gqt82u^&1)g~{fpFoJDh^DLO-8|E-xLZ&i9)LhIBNK#aUf#>mM1c6QBy;o zCG#pw(#$b?)J~WV*^yApz=lu7v~4;7bUJFoDJ!7MCgw-^V**dld7vYFQl#c_h!n-) z@1C|f!6~G2qA#TWjsdT0gXr=gU|uf@!Ca8HQaebEx%77GzW8C+zo9%iBv!&B?y^u^ zs<4GO1Z7zLq&1_GgtyHT(e)BI%H?ztJtJrnH&G~i2qbm@|M^D zDxLxq8!SJ2`e3W%QOott0)-8B+Owaw^{K{#1Bjbifzy?#l;QB6uEDB3aj42i|Ea5H zL60{UIlA;j+a6T;yc^WRYZ~9za1N*<|K^>`-%N+vW!xp-^Ih!>L~nkftYz@>LpLr2 zK4moda*oqN4Se=kY zIgXn|g!WrM@^v+2(I0Gyd>{0C(#=5t3NQmJ8g#fnK-aSKUG?{~l25vo8q|44tjTTL zfBN)2#nUMDRUg{C|3;tg_d^8+qDKW=9?%(QwTc;!dR}EZvL1xraP!N8BJD?+eNYKK zxYg&2M1J%~M>S}pd-QX@so?tQ|BnOQxEIIdG*w(KqlKuMm+J=2(gsg1-w2tRKP@PR zw!X*V=XH-c!Ph7u*U4x=M47yt?9l2QQi@0s9rk<oMNV&I&+kcFW7$lwPv^b&4?WqK2yELF zV8?qzwB6J~8$B3Q@y`F!MCx;K#QC7m7ch~b{QWT8YIL7KhCR)?zJ|H3;qigZlKp%u zt64oMbK(FrQ4zOs^Y7n>hD&nb@R7;Mv{*|kZAu3sp14-!D4=J{iNnkWRG5i;ig!%S z$V)N*Wj|is)QHqmbG#fPTY<#op+L++?l+j82vTITlG{>EaZmYoga!eI#2)zwe-#GZaK=pA1J94fJ}u=M)bw_#x8AJwC0!clOKjxV zw(G%IqQL@MbHE~@sVKD(y8=>W(;Jqd;g7CA@h6K+;Ovr5h^yxjb}eEIh-0YV#lH>* zT#XXl_u$Hrv*)5?EzpK@+NSaYZtT(fF8 zG49YgcO%@Gul#j#EdIq1B-YLF!?-i$mN>_}Ib7Nn&Ci!;L7S%TpN_{udfBVaqc77R z`1S1LQApcchK$y4)k%D?nDH0+)!HUDhq9cll8hbqDq+V>g}IszzMZn80Y}$-DhF@b zkE4Mi=x+D@NR0q@UW4OZ9@G`mnaVa-Me(m5B8EuS_n&tEK>yYM$({U=&)kSDb^MPLY06(Uh2Z5#nSG4wBt9oLIK$|bL3pp8T-W@lTDUk6BB{UJP9!mkuR~}GT z>4MjxyE>_C@Zo-BhLZz`;)^H^wb!QqsA%BpXYlm_+E!isq;i{WHhjt{)ig#9D|KzB z!CTT0UM$vO8_E8wqeUg`4l46rP6iG6!H6viPc?ov&lvUrkrGn_0a_l#J6Ih93=ldB zT3w!EtNv>wrzSC`_wU63n)dPJ?j7mV+Oz?UGy4-WF4_xkd3>bL|2t6VIJFPL7jWfgogl z)?YugBLqSZU(_Qr9^Ve$58$cpYbDRv45i&z1O_ej%`XIChh8dBpRO$2{mcp<$cz=b zrx0wn>5?Y&|LdO#vq-a`wI?xP;{(MyhfgQ%UzlIemuPwMqA(rb&GoOr4od|l<@y@10>4`6kqSh zY?1;EBP$<9eZws!ya6uLFM*M>_NL3)(Zw!O+s)XZQEwiR5t&Yr5h=M2+Jh!z^mT0P z?-{){|A!s4k4F(8NPP0qffs5jWB3%ktlAz@x^Ej1luUmGDp2wr^j&$njzl`cY6a2j zwpU*@G*$L}Q;!KT2@5dVe&&Y{l3SHa+2kiE|MOvp1~PTj0RZFVuG$Y1`K=W&&~X?s zyj6O8MNZE7S8&^YkAAO_GinnocyouC!^bKQ(Nt_qPL|nCO09lePg$%1{h)#JPdj_> zW7=wqW2k}|uU&_v*$DiY)H1t^KfpDf=S<~MjFt@gir7Md zrL9_EZ&kb-SSevb^tWzTOvicJG}Pb$&q@+95_H$GjKq#D?c}Mjb{1Ygt|Q4EdnN~s zOO*8~_vuye36Y&(&ANXJYd8I{$GamY$hQqv)ii=A!vT=5gr|am5w#3I7QElEqU;j{ zRKfR^xI_K{BX9M!^gbpVcl(wA;?!yQBR!TY^siv#^6xexcB~|Erz}d%Z7t@6 zHt1Nym8wz(6*p8$URAuroXR8Z1Ekq!I3a~oqQMGU%^Ew3u-Ckny?8CDdiNwHNEGwh z_S>I)%gtqkEf!8c@^#Wi^0cgVt$rO>^H@ZX2t*J9DD;iS*oJq!OA9dM1@lPJ{S@;F zBxp||o#M<~%2exP4rZ7#@%y7sAwfY_FUmye5Tj=~C5m{*$21v*S{VhNk9sRJXfLcV zo_?Fujp#FGCo4!zVQqfHhsZIR8ken(i}?^pUuplcsmUwD@>TirQu^8d8mSrR7lc<4 z6B6p578NWX(6Q`}qkFqjZIxiIez~*ySFSS-%N38Fu^atnvjyyRgq+u}thPHyu5b22 z>H)1MC z#zrcDchT9F+yPf~ij1KGb3?yB}_W_b(yI@?<4k z8mt=Uq5v~E3w98Cqt)H!gGUk0+dzOlBlL5OqdGPQq)VH_A|qTuv(mRKO8- ze>NHjDUn!YZ!4eq*?HXd05Ne*55qj;rqQH*=Or380iAE*Z{otXZk+*zY=>00$kzSe z0vz3C5cfw+^R4;6G~HsfJ^~Jbj}=KD?Yx7Ow*lrd(On|~>TaSrJeF_JoL|vtC8y-s zO?r?vnTrM&c2-^*@#mb8eUi-d%KuG6E}_Jz{8sDNB6h^HmdG1gr%Yy0f0ad4D*m%Yq61zO9aov9dRZ_ zD;rfc!x@?Ge<%KM4>mg(p3hH-EUlG5suGc&_x4`Pm=@O5dqv;SIZ_rVE;abMtK(|- ztKGcR7s&dOh^hsqmj2YB0lJRUvugi+Tg4?N{pROy?sr{1U^MiUM1mQ%)J< zSiSt5JCax6iB#qf*xM_iVrkuQ0Z)#n1;*9)0XUwT?sOBQMM!>>mero18lc*= zasgCu@4}QdluDOW0y`iMOj9yN*rRHHEON#1Xd9RUgFt}ZnHKIokky-dPp}O(RJ^;3 zt-J&gA=m;p_6W0PdKldIEf zele%}*&U_VGJA z2LPAp@1|Qo1V)zK^EoblY-VHhBD=|xT@T66##t{NKtJ?=Li7x3zy zTMWgy3RkL0iXn~SI>KFuX_l6osF;QZX+u#DZ{g%HVNc^$u!Um3r=fedW#IZys7G(L z@i^SPPVO&4;_NkC{s@{tC?!&^sTgM_AoQdRH}ljg`9w5GMk=)M_vXv4;TW=_@C4*7g5p zzpffEjxNe|Yr>8~D2@TDn|%uI2*~7HEFH1lIZU9sADE>{>#DG z9ZR1YQZ3xli|HVA;5a}45zOFQ>b;kEN-lVE!>bfah_GQ)K(FdjFxS*t^J-!R8 zVeaO0C+>;Bwx+weiS|I$s=$atH8xMwnT_q-?IVdeBb$%@%A&8V7IUm?N$RlWbNt&i;lm5YdN{HZdz*+NsE`gsYT9}5gZRJS z&3;H?^uZQ=B@^!%5bwz5%F#RRZjG2KXR2bV$wU?dMscSv@TmdXd*3)>Dcl#jjiJ-l z{%iE-1?j%Oq`h;lH9~~d`Y<_I1gaRZlh_$EQPbgw{APa&C^C7E?RG(iN>uGjRgPZ9 zPe^gBUCr!2yw#-HOij0a4g*NXUWR4PscBe6!s7cJ`)$xBI(W`hu)x6{-3;){YfjHI zoQA`gQUbccyQCOfql5PN>?u@mgUjI3OcD;3Om?L>#f6o*$Xv##UQVTa`O~J;>g)&; z;di9L#tssIz%Zq-LnuBB&9A^`mGD|i{W`$y942r#jUl*H_ZT3JWjAqG?`r*|7;Ob1 z5VzrqRc)C>`onImxfz(L922Qvbw)E?Z1vrP`fQr35FYufE#o z!Tpp~%+y>!za|T&F<=Rhkz~@+(*vmW#jt z?DOtwW&EPo4M=#X9t|Bl1Ka<~7Fqz1_$yP<%`1}h z1BN0zCo2o$#w2P%Z52hi=AMr|K01h+q`3jLI_*)?ws>pb2toO@EOuLN%%{>a$pU@4 zBx(UOD@QAFyHUMiVVT9+$B_xOhVEAzE3u#s*pP6K4F|ohX(Ci8HgFCG(e^}8a{cy+ zo}`xi1f4t>6odf=QVN|Y=1GRWy&uerT=+B1A-}Gnk^9rt-`;qc90Q!Lv49+$NnA+` z2J35slpqq5z7}>rP|EfYXAlY3QIZTnnB)oBb{Cn2VV;uxwh}l;aqMJAz&P*HDU;qn zc9(MpX}KVgE9=Fa8}Rly3~!}@#@N6Us+0c`V{+b@z}iPCixY@f8gp?I5cXV}ltJcf z(+CzozGOSr>pCDT{&Ym(pDbm$cZ~_U@D$uKTezXgHj>8ZmkYDossn?&r$AwXI@nAhw>V7A|GZVSLAK<@3KhXQ=bSY+n*r_XpE4`(=mZ5?!M^Y8 z`o+D=DEt~3Lsj;Q(GmArE57Av2+!%iFvdliSry*%#yNdqM)92wG(-11W2-@)#f$im zYn7Ib3rj3C+wy7sQQ#}-Ee2mhd7jCX;NxnA9MomxInfwjaWj*jyX5-YdubC?cmvH1 zbqkCfTl`(e4Bb9J^sApye+v&82IpzNXl$IO99C`R-Y_~UlLwRp_l^aUnta894x#~6 zTU4DIp98tBw!WcpL6w_taksFQAzfM2Wh(_`>bfe-Jy^&^><`koXE?*g>xorvi^>ge zVhIhE$#)ZBF(WnYF>%X7{lT$P-$)sw_EY@FS!=+2PY}-ymI#*ji}Z*129{Pe1B(YU zHblHdhpnQg!sr6?d4K=_H&a~j+(YKBtpP$2UV@M;J8|Whgv_46$Ex}hARyl};J+Xf$udOpzIzo?k6*Go$mQ0bG zaePck%8AxXgDI-(Wr9qNA?N-eJVC+Rp_wa1yRlLyj~`?WcsV?7DWne`jlv zck&B0_&&Hh)&#{0C%5o@P^etnx0d-a*-l%ao+nU|ZWrCvx%qs`^-6(BcPwST|KeR z)*!euy9}WZvblCs{8k>V=9_M|ZUY-ELBhtP4mZC9Z9KCXLL6bqT+n>hivutG9&*)k zKCCrpjIDXi`G+%dL`NOA(86O171(q#RD}}ne*)6SXMja=hg$SMwISWQ zyWZsT$)HksTI|;G-+1a+lISM7Uyvl$jNkq`mjz2rm0`S;8zLpFI($vfqk*i+ z%r+1HHUA+5r7^YvJ<1Kd$>X^rK1o0oo||q)KI&))%LM*%je7lNH<^+huyaLRO`&%T ztjgRykUv9s>)#gje1r)EDGSp?xvUGQsmIna|1{~EMIRGnlbX zGF*QG1q<}=oRdm|0eZ{*#PT&4?~x2ILZBp@rvi+;E)9HaD74?QU<8~X*_hQm_|lix zo9!#V^48FAenS?7mrkNa_=Y79f|pmdgPSVjc|5o7)QQsRH&K|TDTDM)cr&g*u@?P1 z>`qV(yDRltWGnxFQsJy~yKYw7!#XV_2q%qM?L0*w=*c#D$C`@(mnx z_w;E{u|vpXMaVDWcN@Bkh!5I!nB1CLMoqmWV%e7KQ^HbFyi>VC?&U(S%w` zP(1ML=TK~3ayWmG^m=_D6&BfU^&T+FH1#+>Rt}E={!&xV>n=k$r4nd7*R%9zQltzA z!X4>EeLtmHY}CKn@vr_Hp%h4C!LH^+Sl*t1j*9SQ-y^1ZfSq&S+WYAnQM7m{`P&F0 zu5e2MZsIc{H+mt8v{C$}*0ly)-B{}QWb+NP4AY&BjctxqyO~`Z3!JkpxRo@Ty>_r_ zU*-VZ)cIek=UwCsXV~G;;MQ4QXx(3uPnEM<`rMBffDn!BJI$7#EbNBBHqlU-+Hf=Y zuF%uY2ut!KxcWI7M{0Ax=bjf30fPdye0PA#G|^3qzbt(k3(tzBI2G5REh zGg+-ULsEG6=k!Wf3`68Si%R5=I`kb%2C?EN;^%xVj_@X369^uUVbt$4OAZzmZ$OWm z$}kVUj1De4%_nL3*Uke+d>ZkV(|Y#RL{2`sYpWCvIj>|Jy$citWEkcAg8tgKd96wX zkt!R(8WI{}O&f~-D?DoS>WW^UstAi`CPqXBU*DD*KAgTA*xi?derhPd0twLU8ussT zX9%=9Z)iw4OEpmF2r)Ox@&fP+5al7BtB@hbPhVXKfXe-q3TqQAfc%yA!-2^95PGbc z^QW+cXwO08k?dzmzaP-x7{^b*KW#e03PEV=3pBkGvE@5)fa(p7VFDPK&D>g)yjz$eNgy@wA192tG1H*>i2qj8Hpp7&vXK<9GA4E8p3xVR`7fNRKBHg)S%# zYv{{IKe?T1SU2iff1bgaDQfwTAz%IcK-Shx+|@IAha6B9n`wI#w}4o8&K0BN@83Nj zC)Z_`pAO?gd(m2iQgZ-UTv)*voZ89L+a&>&tR{t7!=d=Qdgu9i=mRlDT$X(QLt8#76?;0;Lc#6))cH-Mx4~OI2|wmHB8N~9uH}|19+cGV3)HW zeOUFBJTySB9HhA^to9+kaTi-(H6hMC8{W*#!k{sMZP?h}bJJvN=#u zbmpERO}-1apWhvQ+pOL)M=+B$L8t7D=L@IpCSEo(O(O5IgDlb^bk`@A=o24)_@NxO zOA$k&E07j5hhejvli}$y%NVHJtN*Sf+=)(qFo6Ucm0mM+{K^COPc0B19&Pou8pg6s z1o~RipiKUPDta2GhjqvQo^ft`&A#jzdA-;IZuolkAa?rv-bh=`ss=|f;?X`eNMFGv z#HEJcg$4e|;!@SWHP|E|L z=asM&1PCLHtU)0M1GBiocTq%sBI3~YTyc{Xll8yP_>D$0fsJj6rX9}E%UP7jvnZ1@u7Rn8^{jILgGR;Xp1pN zP6Ew*jw>`W&Ogyf!K2|&w#VyusKzEi(US-I^EDoaYtovEf2gYa0LxV1cNqF4+ZtHboO zMON(6)L&uFVH_zMmMy&{C_tz)oR(o_+MRH4IzB!)?{+L&H?V`DdF5ayo?cLG#K|gy zR7E2XKsG{TFc?-K0wvBZuspgn1x5BPK$5gY_GA<%WA~P%SXc9y1DeIzsEZs+ZJo77 z+7-Hk7~qgPXM1e*FZ)@c>Te2R@=uc@ zK7QQ{&RVluvT4y&1hIRV3ISCv6y|CZ)lI(?0V#nzXe6_M4=xov-XHc?o6a#qvnZX& zvuW#iPZqi7pyr(*IskxN%T@%sjg7eo%I!j+*!zAFRlz)okWbs-RbLY!|Htcd9cMW9 zT?m{87JfqNTtGI9mQWk4M`j?s?`LlnXAr_;73XV%V)cV@mOJQQMELTR*18C?b}P=;c;K|W#nU^?8 z%wWe$G#pLK!wQCVL9*NWt@(^YnCJ{W*(@o4-#tkmtl2R+1^m$iA-G% zq1U9rw&bXMvU{GH;dPZ&k#PVPIF!kI3WM_^&j4eHCk>N!4CleIO2`^**bmjK4M{K zPfbx*2gWa)$=^(W&}C13g!cWNc+DmJqk)gQ!LY1LRKWIa$)uSwIsk_ze@_?K<|HR| zStG(hIf{)r!L!~S^ATuJp+UZ?m(A4dOn0$ckJ<|pRCcw@wSl8Xs0oB2`7g^v7n8{g z=I@#S5Xw;IurnLz=@dU^MtUx9tsRQ6($&bKvLyYC9gu^)Be!X&{ZpQ|Xf{FW#IEsc z=hQ$+4VzIAZ=bDlJWR8ItW*FaTn)FpulF_D^B}_sin`Opx_~1Vw?YY6QRyZQ^)ra& zRvUJS*4h{gz0c25cGJM)qcAJS_b|(|+wXbhI+nzFU)#=kHjH*u<2H0AtAN|^T~(fD zR#&w)%0p%x4n#>ZxTd&-O*~p3xW+&gWl5!>qkmkfKN;9Al+qqkP30d}h7_T>YeIrK>!C;9z5E0jgQc&JBaM9M6VP*Me%-^5cR zQl>$L%<~7q^6~&6KlE$lYE&3z@OoYJD6&%LDh^@5vQ)}PVHcBT^GCfMi|jkOXFm5k zX*{RcfE|guIqVm^FVujcjnNS%`9Au1_>-GjG8(zFci31Uua9P zi+A0F9uy^iPa0TbT94ASy&OoRG>acSIVelJ)odG8iLDwG;W3n~eb($0+`DpOKEnGR zjnx`9ALp6bh&+^ddj@4_9B_vj?{xx4d3o&(Tj^@F^^1~_(o*_yuG`bVoVzi7wV-kf z$U&ao(?+Hn4HUum4LM^*ui}&^*U3%KA(lLF${Wq8psCmm-OJ+E1g%_Kdj?_()1;Dd z3t5;V;+A#G@2mfUxE3ySgCA$>SLgjIq3iy#yXk1Lvt~o8pLz7zNq)Bnk|6@sd4t0d z&$~`c0xiWveT53A9{i0MpuB}w0WQ8h8K0vJrY1yZ1A}*=`xSn#7)|KY;(CR~UETe} zdjR)2->AfBRn|<)9v+(RKb~6;@yxEo+^AT^d&9%nHUB5 zz7~L|ZDr9;Sku52cj?6wvE}RC6->!Foqvdvh~+q79~ETcVIh|r`Mg%Q0)tWhUPcP2 z#E;f@Yo3xwP3V*rHz2!n0LK=7qqavjgh$IaTa*kScLnajDEhF{`&7C@MsH^k;sd3g z%$C$R!LxrH-=Le%rrhikA%~#FXR-0Bg!Aq~M_Gy3Py}KWjf2{5R|0Y8@bZxBPGWeu$j`{?q(Fzis{5|84(&`wj2~{R8|D{oiX}`aZ+o z=YQ+}|Mv_1r~l>ao%?n0as8A1r|qZwKajuZzv4ge{&;+Vf9~}F|EcN$=Fby9IsQNX zcjJfdhpWC(J1#@;{Rknwtv?DP4^r8-}@dk z{R#hv)I0Kj=wIN!yZ+68Z~wLazn;3=|HJ=7>`m^E)PK!?fc>BT`~Rc;zt`vL|H|~^ z?MMBua3AEK&Huswe*WkFr~9w|@2`LIe!zLFek=Xg?Z?0u@;~bz=6|~XqW`1*Bme*0 zhxy<0Khgf`f0FbCfBg$JlZ9I}`&3nLpk`K%hj9mtSysnYDI;DnC{9?9Rre=An2Pq)kE z(ulcFU>x$hC+9F%8wFMkCGT$1p|J6kQ&3r*(grAONMEmT5~X9APHO_tM-YfXb*h*Vw( z8pJW;m-W;j?cww&*)`NBwMW>AoA20BCdUHPM!PqKkKpITYf@RoIR6Gy>#hC-_TkiP}M z{A&O*{fLY6OJ^CbL-pLX6^f&Rd8TMvz=m5#w!I~b01DQby?ty0p1XZ^izvK@6d-%Y zV$h$oBxYG4K|2BVk>LdXD(|C!KjrvwCohM|)VdAfkha>vw{CP`M=;hW+o?L7x*T4V zC96^%UmgE=ol@J{n9vmsf!q5y*UVRVyHDyNCU9PkO~TLukQPg-X-bYw^(-z3_pHLZ zwrRQ5gvdNVu{+P%sow3UAbX|%)du*%^=%ZO5CvH7Ip|DbTp`- z(DCvUs!@POWmIC$;h$s-l)-IA?0;8iHz|pBw49re^Ma0*{)w84mRjYRfy~no?p8TG zf$?$IC2RO-#-r=o=5slmr^DAAJi8#TFQh9J@WlEl_n=SkGHhPi&5eC$9SD%eJ4a_t zl?S-SDvcIu_m7F;LL9T95J(~gd({|`H{F-Q>STF5k+49-ceW|9s6k#`k*@xOKeIvuwArMG9g)3 z9#VcM+&_5$>K-%vvzfQZw03U0&uypo7ltQml>zHtm>zNfRG!#4tg}jGL9TJm)j*OB zC|DuIQ2sP>fVpeTp7__ZN$G#B)RmqMxSYRvhZb0dJat^t;CDve1zoWdPMB;TITI3jG3iWxwx)j9Mx zUx&T#};!gct3J)>*?YJJ~<0$!^rU#C)eLbW*b%g>-96-j}Thr(Wvj zoYMvXjKj7xjh!dvRhDWtDX0-^J}-n8s5ZkehV8?IZ1WxKH6P;tR&S~!^f*WJt5WWn_?S(C4zP@9R{Q;blzThgCIEY3({_!pTKI7 zYO(cjLj&2Xy0m|T-lWj0Y~aVZ-&a`8h}jg8l&;ny7D>P>y&C&M+DV@sLS<$=U#*~_ zmaTx%LN~xl=k&^;o?bh)$5Un1ad-=;F`Ome?qN)Om0u*b|7q}Frb8abSQ-L+NfX7d zDzMRY(_a+MpF0rKs(3KQj5WdJER4IF!C?pX;%d=!CLj9`mfH8uopL0)m4S%bv{ zdX^J8@U^sof`^;ud}+Htg_>}IFiq8#p$YWJH-Hc!a3K{=-#402a^4~i>s7r|VO>~Z zja27Dj?8O#9>mR0gls79z3SE=zqK^t(&;d6z{x1aB3NH@6%iEW>aXmEK2EM`_2Uj6 zDH69+SWs-0=Zt3F2Vgfx_1kCiSnNM;NP;mQQWYkRG`G8Fh`|GI;*Ea7`XyN{415e@|AFJmX?syQ^Pe2J-)j6eFS%_&^(Z%0xz z)xf}+*#7&~J{m3RUN7+z0092~|1u%=;&UOfG*^i_S$KoL09z*g5oS1+vsuE*{=Wl) z*h75nKWlYDGCj;)DuesMitsT6P5&F)GLKkd=hmtE?H_pIQ$x>KX+(iFpS4Rz#Hs(7 zU`{)BO>IIr7$G#Mqs?JdYgkpaB>uq2JKl&(xNjvalP%z@O#&yw^r*X=rXXvnipMVd zh%b0H)hXmPQ|W&V$`y&dpw?irLL`;dk`3cxtZh6)BRIxq4-C@G(B*v6qt`5M^TiWm zNUZd`W#?reI95IbXd0c*revAo2qaZ%zGttT|0jPEsM_FTat?ZF@8H6Ak#{zqqN$s- z6}N?xLxA2ido&sUlsj=*(RA1`ju&VbJ>~vj_Wef`vm6ZX67*enp;oI{m2!_dX~cxa z`AtH8zN(nYg0)Bk?x|D~E6kD$W2Ofu2&<{>i{$n14A zJPn-LBK;Sy(fj}5q_}sB{Cb4|Q%Sm8IDLCA?2u`KKjkipZOI7b{K<#JSD5ttF{jTf zdYeQ^g)Bn~J2!UIR40j1j=q@lLVuHn7M-m)W}ePw`=NYNLX34>BxUbo z+G2kCo&e}1$(M++shCSlhsIXVsKvc)Oy)}ENt)K~SHH&SyKM~)LN8cCmyVx$XU4J2Wa9$x00bzfhz=Q#y&ex+u zh0+ok(#Bd)eTGQ?`L_(p4d3v6u_s|qd&2$!&a2vYeQ^t#MByzYO4y@{Ukwj@TF!!i z#Rd*TC(UE;P*P8G6Z~TF-9#MhQ@jiE2PFmWAc{C&%mE_ywUhXWfJ3v?w8#YkZ*W@y zr5!lWKJZv5BpGl3(N;e?iZb9vcbms%U}~vEKGKKgXNDjpbx)Z;C7=b3-d9q#_ltS} z#RJSn(bt;ZcTvZ#C=~l@5s;Z2V=jSu3PWRDs!3PeM=Z9$z{WV;_UYSz5a}jDTfpPH zJ1qjvvU5u6R)Ns$)GhBPDk!iUyQJ*L|1y?&)Pwfp>OJe3;aImfgv}x)HDQm&<8K zUmOn-)WCw+{Cup81v=gNEEjV;EVjTXz@geC{qhy1AAz0(+eAeZlG3qD?%{?+GT$6X z(`60iVa6_v^W1K(=Yx5zvX%DrqMV)MMx^!k%h7!tgjep}kc6_k&ahvghzc#lpciN znZUK^=fxxsioB$VKAsSew(KgcCEvq>Dcp$b6vaD=s$zVfiFdPHWwb*Fv@F zp)?O&E&TFo@n)K!MDr?dl5F3!8!{`Vn+T{9u-5Q;*9KuI;5qlq1xDKyjEDhocXp#X zrt6W}$*k+2%LWWE*^C$J(EGB$&tq`r|r8STtKn*OeO-9oBWeZ`2+|oeKE+Rg{`w}*(&q?`B;I$A*2r&F# z9{ctWK0anB?OiQ#TT9sw9H`0tDz>CGS5wtt(~jmwXjm%+cPAmyl}?7V9oZKf6-OAfseszuweg zcOb$4*&!LidT$;qr*(5uO9n<*;aVjcl+OZ?I+wp)t=2eM{U;iOGxqloMnW9~Ka)Av zt;-sHb%$iG<5?_UQ(H z`XD^QSc>=gQtTLJP_G~jh2M|F7|Gp?#5BbaGr6QOPJ*TKWHU=50|o8=%CLHq+z?^E zUl2p~(SN(I~hF|QQyq~S#uzngugflr=!?7zg2|hYKxAp9eD>1hW zU~+9yHS`jXWOWL>&69laxF{F>LaB)fXw~j#nn`KT>n21fCet@!}R zd3k`Vel`5KBzk?*clI&x2^Sn{WuXy(M6n>EAnJZWpmt1VvNsd9TQ-7n`;W?M$P}m zqO;Nh1SXzAzL{@D2%o(I@fYJ@k6|03aq5j@ux0#41#G_P&0O^N!@0T0(J`0Aoki`V zw=qKIQdT^=`qwjl0SH$)%3kZF>r~!s4W}uRTtMvmE_L`bvDe@17%nYI z*U(b179(;uOE)EdqZfD0G72FoMilE*YyJ%3rxllou63XZqNUO}lRoi7l=Og{r03}3 zO?r}Doi0SduP$pLOynGc9nf#C2(imD)`;Z!9LGkJ4Ht(WzFB}h!G}Iw^fG?wL zGPEwIEDr)w_IDIK8AiDY(7nv~r0)O?TT|l0Pm2Ydt@9+NOqH(W906VO0iHa+53Q2@ zU+2aonZ{>=Y6 z#dw=ZNr1b!g+!$}Ml@|8j2Z_q6w7I9jY00NH;9GY+U|D*OAB*|K7O zb*2S0oDoRjbtTgsODYO1jiVsZgsQl&8385VbEy>36T9tL`+_-f7m1Q3vz84nOjQ|3 zQS-g)f2iW8q^Q7f*T>~hu6Wi^HT)bIKtFh7Z*D}wbA|A+mk#5kxf^ZJ5~>0?U`hkj zr+@mbF9WfL&`&>hfb3XG&gzxVcA0VEE-(cHu+>F*XHo(f!HStX2Y+KVS zE{-$ZiH3aRwPM09g1rzfDI23zhJbxFs@^F-t7Vp05BI-96lUQ`+S2AINoupCK{5C{ zw;Po>M=ZB}PtzV&HkRd+a*C@|(%oLzgnw;1!}8I{>3!d5NpX1V1+I{M!ZDM+%U4^I zD?@r(n!MS`A3s=prr?S@F>7Vstn#gAbf#SF>`zj~GUJn`RD}ZSlSM3D`dGbW($`2>$P+_X&Se7^rT)@GZs67sY(1ah0_-F? zq-?urWdPdRB5%DQOS6A-r4?J9dtc&DEd&~gjRbJ;V8}g2@X`gasxVHdWiCU^yoV}O z_AiUlY9@V0^0lJe4(#%*zyUx7HPK-QMzTsY&R=G3%+MB=K-5EnU-fw{v!iC)RH45E z&CG&2w(`9L|Kk7SGhXEjwiHRF%HLQ*1O0idsF%=e8?yBrYJ_N>1xVOP#$d==Hh#}p zD@0`T!A&qW_KTUMGGu+~UZ#3uGh+Cz8>l@BJy^oo#{y^1P;T!UxG0x)d?(hpR4NMe zAB;Ppg)9Z9=8Yjc-Z8>gcsjsd|CHg9vQh!ZhSa716`;YTS&>mnCTqDi03}oAq`W%>o@ujxUI^)Te1n=r#tWF+dAdQ9nL3kP)HB0eWH2o&>sniQU2#2v{f-O{w8-M z{f_L#3mlJ7;KyT-VIr+xEo?FzolYGMO@$z<(K?Z;Hou3EU39&)r15b6zQ^F#>o2@8 zvJmrag7XrxaObJcb!}g+-tYg4%s=hrjg)?zxAK%F0PtkEj zG+!z3`SF{@RjXhCo>HqK44)2Letn(wAIZAQq%vjGkX$Gna-N~ z%K6{T_3xYv0$LNH3IR;BxWnVlN~RK%k5MXWxN|dXNd1j+!STu23B2wYI>AxPd$Zks zjWM%R%6G=}0(DpoKGS#uwnwze9Nf4o&gjXzv+Yz-V2jK}5*(%oo-oF4c<%E)pY677 zY4a-$S^u^`G{^l|!ZWdyo$FJ)f!i}8Cy?o)#f!mDQ|;TZ9-bg^@n85Dxv>z(&pMMv zUDp?N(Dx6SU1e(^f8Z}2fHSO9R0D7&!^^9*-$ArGpOHzn^jLr`5-2_+z3j~(fYbshFAj-PCMDAONQ;=^8 z#%U@^=^5PQTHStO!aNgrFFqP*S{h%oBe%8Bp2gULM@%1$Q2BMwcn7G5{n_W1ON0D# zTA3;7h+ujOEu_Y+jYI;^$Ud<+T3s3M;Y|sh!82|~Zj~%KR!aP&;I2+_RW*H)Emdan zr~;=mV_T96T?yhkscSj3DFPN7%e0VjOqwd~JU6IN-`13AL7CreCN_Fh3Br|L%Tyqh zDi9pT)E-_yWApsqt7`!569xztHi+A^qQ|Ms$hf!aKVm2ZdN$$JAELAu8GO@bl+cHw z)mnGY_7K7SMOCF|WYGrdsFO)EW_%Lvgg!PPgJ-7Z*(k!~SqD%^x9kiH$eFXxcYkqj zB@vJfW9DX6WC0q*K{LyzYDgZK+HQFqZfE2m9t3&gBHJ6hZ;29TsB7d#V}Q3#0OFG5 zwI6l=d@$(&Pp2J@gAcCeq^P~9zqw~F;rNmsdOJ_`yT02KTp*oDzD&jX!L*K!)e*?= za-G}cH)k-;o9WWiz!51xDvFFtE^3>Rib>cX?vw>R(_?mBQ ztoMH{FoAx~r+y;KBo5nxXooYY&8}od@=$%VtQ05WvEHj}b8fRt!D6%AqMxF%SnZwu zYZGhn3~&|R`&HU<-|4eFyprN4Wpv+TJ;x^Xw#;)OVY3heC`(f|(@Z|^@hO(<{j8cx zjG@vpQ}VqixyF^u+9{K44UB?TC$i-QQ~q-4-s3 zmbp36p$yN9-Bm^8865;y+VEszpD(U^&?cW+9Px$IxGcZUKXU8 zU>cRs+xWd22;V|DIg<7=60ht30RXI|dZi#h7qpO%iCiW1?e|4&E}Q#g=DbAV21;o> z7Mtm2OB|9;t0PFfTVD3O!xT|jnTN*}%v@lH-%rKsVD2sQtd4$l=53d@M9IpEc;%aB z?oN+a0Y^O{bmqo-kSiJbkz&=PESO!=;rAqK?IUaQF;>O8<3m`ICa+3%C7C3f$|fX~ zglN1OCLVVo17uWqYQYINVEsmIA_6T%1Bffzcb{nrF9$4+g%mHWomf27fh|(a)0?s_ zCkfa?k2SDwI#+2NGK56Q_W4qwX-h#I;+dRb^UTBjZK8dCbbN1QXe0`>d%5 zcM$n&%ij)Gr;{0^sNIS=`=+w$)J*?~|HrHAp(Q z`cJWC*D|b`dE>!x#07S2&?@Qd9zm_$S<^+p#Chv*&W3f8Tn;J_NVmguP`T5z(kkXd zGWwyKDq>%6L^z=E-o|`3aa*+MyCr2nb`<1V*?f=_!54m2lgQt~Ic7s(h?1(VV=qGz zoif2!G3xNAH|~Y*k2H0iAvR!2CIzCQSkGfBnol~;zeGMtcO@W>0m%gJX^uhl6`B-7 zMDU10iE(Nqg_x^g zjjoVzs}d+ry?+ruD&F7`Q?5PM*}0Id53=wx2Kjf2*aQ!UY%%yd)=!Mi@(|j&%j`%zCL+ z*lCAx0`SqF@c-5YABLE@&}ONlrrU#$C7)#u8}2k8Tgm2hd2F-}L+a+>is}TEF0ZwwsO|RSy#y{SQ~MA}AY!fJ|9O67 zpSP z3jDxEI?h_b4+iwPUVD_K2UR!{Z}$#+Q9w+z_LH&+Tyr7#Va8(Ue~B?u2fR zFNo5pqzZFc_EW~x@R@nnfL^dGkS`-p&T!jEu9r;=>4b?ni?0IsE%)XpZKO;<>GagoYTRNlV3viOIP{Fw?3YxmA#GU&F8g6 zsxSLX@vb<>2+qA2{!$$ydv#q-i2XUJ`e$g!(z`iyAu%ox8I%T+ z8QzT#37H!g^IUSJAarm*@KNjThb+CgQjiW+?>QRz?w99E%3vDlUBT60(kJDsMgen! zu^Q4jFqt%i0d~M|MPZori|}+}G1&-0q(XZ6syY+R<3e>4|To z5EZn&fb<>sa~2d10cH!Z>z?tm_O`C41!(c6mb+YQq+|;wA}wI~Am0!%*;V%@F-Vg= z!0ezL zH9(*IzVXqY0GM`OVkU5YY8`uz!l3x*oO+i94xtAGt3i<$&#>jv@x}ko@1Y>t@aItH zA^!!`!j(}mLJ=fXzRk{P9z>&|@699A5)G2k8sf=dw=;tmZ({cT^pl?2SC6|R2$8-M zS=BT4krRR6b1i?V50zkclb5k=;IKxslgE?BZl{_-%_G^$qBTXFb`?3!Bkp#=BgpR6 zTQQ@eoonM}M_Nzs&bc%;nv%quYRq7_ewG$KXuR?pDtfMck8{&UBe#K>nZ5Zlm%k;M zMQ7{xGod)IaQ{eXws-!yaheSw(Ssr>kyJ1&Zh+IhOjV6Tt^QZ5|Ko~wN*>=zlC?Jy zP(c&kXd-}EHeOJ&+NmytOoV3j1FjH#(5J52TB* za9~s|QK{uteYVWXRsGtOB~0`9LX(cySi^hJ#-r5>?2XC3B6vj|F^?cZl^5v1x_BJ4 z@>NV_|6hVV)bS@h8vp>3;y-3oGBv3D5D66x!4aed#^TV`WnRrK-jcr(3(PCNK43xT zdo?%24a*)cVJra(1@L%c-Tl9iuxgBr=~1?P+Ms*}*g7j*0hORM=Qex=nt2R*)iy>{ zv<^+SN?6ly^0Zg|g)avJIUW{c}EEKJNGY#)fM^wIBLTV`JV+8d3+bOZMFf^)P zP6KF5YK1I}%exZt!GIm{63~8FSY#nl+@x-PG0v4&srR**!=7*PhSLo( z<$UvFAnR7vg$056u!L5ssC^X*cX4b7W%|F9VKtmtE%U8;-@CFUpQOVI%p36oxOc}W z-D#zh602VREeW+(&#K3wTwG7WOs%XcHLV+d}iuz1Ek;w90Z2h@ti2oMmoYk67D2No>1hnP6GmBaiodUf=(1zO+M>U_Z`G!a`Yt|c(?OYdH2=GxpP9-a#^V@x0El%P=mHZL6mZu ztB?RbJ*fI5q8Jg#Mr=V42w$&EX{ML=qMVzrsSBhbT3iAF_->mKKm1!0ac&1iAMHV6 ze8xfN@10Ywq5#omHG11aN6N|cyjnR-x(RK$DunjaCiX~3BIZjk2-&-}Wa~)${w*Y# z?WT`yc)$|#LcoP1M-#2OiQ-l|(!J8p4p=5x6Yy@qt&I+2)bF4?FBzRF*NI*0t>41J_=B8CKDxcaJWCt(ntUn) zeo7lA_<~YedGg{a(C3kqB!WXlI1mDc8k;nr94V6GT4-lX>ybi^uh+WvxAp6Eu39JN z+VWI)xY#^tVE4|QeWU~__N`BnQU^(OI{r8e_DoHQt{sHt$5me=_lfw@eg(MhmDCB* zU?c}@=hx_~C}cZiIoX1AXCP@@H{UZsh-rPd0{P4XWQxS6(ee=1)g_b!@Yac@;f74h z^H?EEB+^WAjrQt4B|^FM1dZw)C+Qkw0Cx}6k^6-^Rl?R90=?eNoYl30ooou8(Dk95 z$3iKKS&10Q=9x>l6sgCqY)E%M7b`tQ=hhTIJLW|BpJrdR+t8y$V(ubE)_VK@lT$>i z80~nT`7tkP#`$tmc}(fLLk!YWP1?mpJbSMWZXr34$dEAwhZC6gZXx%S8(fPEiXl@E_=oe=4^4q7$2ow)*FP~M)aDxwwc)JJ z^!L2TY}Ma5-NK^9Ic7S$v*%!dp| z%Q>;zL>|_dnM38hP2dqFFvMM!((<~YBh1n>DiaUDDktiBk3 zp8tqxf3oK2`;Q;N7&%;5yz3O$^>#tyJ|-R&IfJZYG%ft02?sCg2qDJu+x+z55+1zQ zNX4k=b8Zrr6W~Apm)o9s?jdrAj=khbxqoQWOUv!+haZ2ESBrW`(VwpW{at3ERY-Di zSGWTd)V@WSf-; z*NWf48S8}zYzS_tH=fw^8KWkd99{y25@H(WD=AO*>VNY;hiAWJ?x-9J?;8GMPMT8I zkDYwU%dd50?ATEb{UAJ3Zpd>&tL^6??U3Y?ddo@>VE*P;#2GVy{!~(8L$_4Q*Y~I9 z*CK!T4z`fsOMkc=AH?I1k=}MTWooG8lb(%cD67nhR%nbjROp=@{KXxf@;=ej`+z;2M_FmZ4@$ro)n&YPxo~6E&<@f2;iSQ zSORH(rA%lPD(j6%@YPZKYiZ|qtN>C4&br^{A>+QQh+W|#a1HoDZ=cqsNJ-HW zxV?^MS}pyRvw<1wE&bjC6EZ%n`TY+r4x~F&7H?lFW-x!R)#B6mG4DhnkffRKFgx$x zW_=n3a^sdr7dWranrDu`{mlSzOYGbVi%LnBvfM>R1%RT&Oq@b;Gz9AMF7i`O>Q54KG$#tVC2Oy+7?7r5O6<8nhi097a(SmYL4LbtGixMxf`CinK<6tcl;Ewv5 zHd#=>&X`60@liXz5MSirHmU|y%mxUyCo}Mdmnlllig!I`S|5bdJF1HWJ(DKE1x ze_n^)<;A21txvY3cu*4W7jo38ESIyTC^B zUFh5x6o5769%QV*@o*GyIc_^UY!x&In8uFVNp(;N65$RK5y!j_Y-aKl(42sJb3 zks&0ZJ*$U&DF!fTCfde1tomZz8j-hW6Am#Wp}*zA-<|uXmysTE^XnH>QUb_Tpep6- zo=?vI_;*uvDK-LnuDb9!37K@&5)E{^m-&S^~sA?&8=p1}} z9}&TuXtQA8cNRG|b`diMZLQWMxuPDc!#YPoFx78s=Y+WJgPNZqsH|C81)+kT(lb?6 zG`{Vtg}rO%>P|w-Z+uvcPcK)V7C#XW7=H$zt-?po2^3CFORd`;=H zl$9AJH{gkN4tfdmAw&r2z3#2PX7>x4tQTDre&9O{}q6;2bGOE>_L}s>Y z@@rztml6;8DaJW|8-SfBWJ^T4C1W!=ytH4nJxFc`=%D_VNp^QaBq9@1w}xBT9nGUp z63?KmZ#?5SX&qjo4hSOQ8J651tx^T{$bJAkkiD*`z|mkkVc@Z!sg{J$Go*Pnnznw; z6^%R-TQt5O)rF+Jx!#y+7}UxwJ`7%i zze^+bFx$OE|Ljf1((@GB8~VLeGWbc(WK3}ST?ZRCVSWS^jgX(g8)6yWCap zLSrz;eCH;D{&@{T#DYP_ro@>)_MGb7{@0~W*-?I*@>!DMp})``cm{>BoYNuv)L(_% zID6!U|4t#TGJ}62Gtne>hfXB=M#|f#PefEF51)ALC%0(99(2M|v}&%uta{hyKh5h8 zCrf2Y##lDT{Z>8JAl|7}cmAg6x zxb^y`SD?OP64L7Xf!tugcVK{M(`cj{rbfklG^gR1V^=)atqGa34~U3Dv5=U6A-Zv@ zkMADSUR^YPKD6<^Ufn_ExQ_cQM=BKu?2HWio<2zVMnyX!=$L0oTh>|i7!RjUOQD15 z_%lo@F|Lqe8=4nQ5mKjj8L@}r#}1N|a=IAR2#n#!G7Gt&nACs@gH!ST$c@ylYPXNc z$2AQX)lwI&muJZrQ;|jEJcC*;8IDUN0SU4^SPGYHa2xb4CAM-V=4XEIf9DZZ$DTp_ z=bvx|p3&JGcf5 z&Vpf#35&a#6HFb7P12r)R+?(tnM>z&2z>?xJiQb!_KzHuC{R5)EX{Di%%#&KFm=uy zu@A9}CSewZmQdFYLwGVtE{9B6fX+3r5y>H7YTK9KRl1!#|8f(@do@jgZougwJq`Qj za3AJ2-HpW!SzkJzFB^Uyay-yl{mI}$VUF-q^Q;=hA1{epZ2TU z!yOCKx|AWU&X@atvJjk7y<-OxHEUY8_cT~$X_OIO4ftzc0AI+s#A>3oxm!|-C6JNW zMU8)#!$i>E+NOH`TgF9&>F9Cv+&1drHfx;5L_JqDnxZz#u)S?wVNs89@*jR6WWU%ow(~`(I2Gsn_~JV4nixJJ=QnZFPG4044s4WHS~M zH6N{nPe+M?6K?ibaBj`|JyvRFJ=AMHz#Z7zeV3gWvQAc03v0QJ-kNS7}2L}!T z#EJ_3>{}WPcX1G^Uf!B5^T7Wo`y8fwgj2uCsIDkqoP0&n5~p8G`)AoM+uxAV4Z}BZ z{`~OiYGJ&OBwR9BDK>RGl&w|ChQ*NAzDIj0?vqFn)E^M`PFXjJ>@xXZG%<7%_-68MRV87)={w_vmo>Y7Xq_K z`l<-|%CXAqXjM!T<0lq%!JHW7*^IhChbbTw;Flh$;$R%E|^I`7CKoMSS~0` z&m`k3$~d~AKzhsK5k|?_mA$!N$Jon`LSpT8!kqbpSgubh+v=g-f? zr2eA&T0)60w5;j7zRtEa!&1$II{B%p5E#+0mqojg1fjFfoc$xcx7+ujZi(rC9^Hj6 z1sTcVnM;5@K~^C$68M}cAN148 zs*yY2k~?ZKyFgCN+nsg+n7PIM%N1#t9#`p-WQDHCBStH{ zN9WO{KurjIdsbxk>6hIV!Ec`$>(2=!xk4Y^WHb5T(VJ4oUeSM8lwB#pa0x1V>n&c8 zP`OB~HarVG3IyL1i4vDC6ne*{(ZU$3M^862_B4th(e;g826v%>C+vC@-y_vN0b`QZ z=rnlUw20VdKPZA}@BwC0H+OaI7RWlovW5&9*oU%ntZcL%A6{yoI3&}mEx|DavVpIU!gJ&iMU%h3*8m6rCrCmborB0TKhp{Jf zMgQaAfr<#5?H>26*3~v2^3g1`_|1w4otasP)evZITO>rftHNo(KCYm#k$1&$ps95! z!TmY+bc>+rc7ePabY{rtAluhIUPlN7{bV8DdOY_fOFCk6G3d+dFLaR?<9h}A)c*B_%-bRu0Uji| zwFZ2~kDSB(NPmz=8r=V!i_|I*x4^1A&7a&8Q9kl3wOGLiUhfivG5CG@1!}mT-{b}I zc17J8(+--r%3cSHO21d$NV3$B!oXnNVSy&SMKbSrP&v}db7_*)9WsfNM!YSbWyBh-c}|C{Z?%Y!VJW2U(@d1M47hqb}vSn%_jU z!i^k#H^tM8G(U6_g~hfLZ85gVQr5+;D6MDKrs4|0hkZxmF>_;pD%a|Wi_#+n2>v$; z=>m176HsK+SuhV8Ax_UHk_>ujf(nvwy|exrR7ETdB)bsXVc@xfm``_NlxUDmt1FTf z4ST}&7Zi&_{m521p*yM0^bJsbl&K(6R5%}N{pn^uK{;OW^12rF<1?N)Ra%P4pLnOrr0ksA_=W zcWm!=Jpy`fJ0=`s^pz+yNv<_$)L8)t|5XY1`0}474vFI0k-|C}x0kf|xwwjf(!_^O z6G9?@A%tr1p~@P9TeALJKztt5q1*z8!ta`Q2r&jLADjvGdN5xcpazut2+ts#mmxD! zL*j8CU9A;5q!=kPx&2JeqJfuy6%O5arbds>)-%cTf6(koyapb|N*fYTgzrCCY9o$a z0hCsGK09%Jn#mA@yEpU~b*3kTqy#CG_5R;^WigQh!pf>%dhFtLygZM?W>pGiWvPD0bFTF7 zA*(b9do4ygqI;S+z)z^QZ_l&@wiZQJ+$-}=;)f}IYGJz=JN1ci0bFc^Pt~BSyKNtI zLUvCq{{nD2;CDmobB?5s?o?V2_dX}PTq)Wo;an-cXS#OYzKRupEO$25%-hHXf$6iN zrw3}P<($4uLNRYnuRfvA(YrEDzVO&0l)6UunlH!TdL9!S|CuL!A8BxStJDU6{y2Cq zcE$~A2b-m@;x*L`_uW*|k3-P&Xr4pRj{Q>CLXD+rJQEO_J^x@aP@ zeP$$_(3(maFng*-kL46|`)j(?$9mVhG5SS=;Ie?sq0FST768m2lia%fJ4){1eG+!7)hi8(x1uHPnY$Gko4 zz}xtsyVJpc?x5Uo7+VL8Z1{nBfI^yP-F};_O{qG)f~qVFfn@Yru(7n48T0Ce5JCdY z%H>}$V!bqL}GwPy{qGlRgFwR6Ec|gOv8+G-^$V8(3K1*Z+5UenH$*Vy|N_7OrJ29I*_eCr~0q+WE*T+m7{?* zO06V17@rs9me0{zzs{B9rbmyt`)ej>y#&TrIdErmbG}BN!p@~gz90Q98vrHn<1jO> zV0%s&maI2b|HniO$W!*9H3WBRg0?5kAu5ee%%$R2F-SHr#X-fp2*_XDvkkOv`0E4+ zbp@^)^wP2jTc>gUcL5+j4<6}aU;-2t z1==*I!vpUCfi|me@3QJ2SI}((_VYW(qIyt6-&_5F{ zO?P@t5+OdY&v&CJY!sV3DglhP*Qc&w$-B-*Jnymk$bg~mJHvIdxxyPA_XQ;bcgKtL zJVFhl$}MS}x7YEA-sJeR6`HMpLOgOegwZR%c6=S26Swn;m8$&(6fI9}iz{oTnYm^| z%?!UGI%{&U7V(!@wRv@l`OZt{-FmCy!g7I1KFiR~rUFC~zO51<-N;ItIXj-%1X*k^ zkPOpCZAI`LYkTT}tXRP`!YfMY`HL z>-YGz1%|`8*A2mic@{Ga18711$>MZLLM>1c<3hyPW)B?R2MIX&`^34X|6#22H_~VP z4%D;6%x9a(!FlVmBz|st1v zFjF=xi@TM>K5Z?kb3uw?+Y^myQ}wN~v2x`1BP=c)1FmsM!_-}fr;5D|Q7`8;fEkbM zc5EgTO2x^fQ1yv+)d0$k@&?$l^6%0W{)sC)Cf>&p{Ym}7wh|ufw5Oli#*O>DIKYcR);sg7{eS%in+;e8I9&`W?_h0jTbO;>kY!z4Kc=XK+rWmP*zH` zau6RwabUoB!^)X~7!&@%c>qJmx*LS=y@iw1@$Ppxz10$i{zm%paS9UL=dwI%{u@7p zDHA9MmX7Aj0$Yoc49H4*`&;~VRT?-HEdScz@fxq6aB-hxtd=~=0X5w7<#RvaQ4k{O zI%VZrqT7l_=68xTOv7caqC%#8*o!-zJum{Ur{1sWil}@acu&-e!~+S{k;p?IypRRy zXTiWgU=IP$3H7#beU51~!>Sw5ZD5Cj%n(ww)t*0Hxpu(HUDmH;RG>68L`B=*scr7{ z?Gg^Wug#|P@4i3VMuD%9+vgS+IG0jic0Ze!Up0M+UC_Z)d)C(Wpv{=hjA>L{>1wo@ zt<&L=Z%ytK#z%VKj&Gagx83NMdEt$_#oZ4$JK;>EZbj@e3P*0{I6Huolu$Vd_W>)O zv~}}6v~1<5sc>I~d@+EAXc9U;GHX$G@7!rMsNy3zq7=^q1AmQtG1xm>`J?U9U`Yoq z(NUkM3xlLgJv?&@@vA4A{H-89>gr%=D*qG}6ZlF%SiD9^1&L0r!IIbg$c1CPAoik1vffOd7)qTzG@|?>SZGf0&S>O-_kz%vt=iFa0Iu z`v9P>IcGXNgjdW@?W)WEsOX%CzkjeC;Ju>3V~-P zWj#ZMY|E4NpT4@Il6)#vl<*oVj)B z?Ten(p@Rm@Vc6x1c+b~ZlpAH+t@1fa5<%r6whRok6q}7USMc)WKqaWBzPMFM_fLji z^Y0>dI^cj&5bpK0VB|aF*oNs!qFbbdPlmzX;wNfrSEyPR4J?8zoMm}Dl5+kbFr*Y{ zL^ft8EoItV)MbhKlVN5IXSx6!c;y8OVy&y(E7!>D6iPZBXCp7&i~gOTsG-OY@M8i8 ztJQ`+$rkp}lC#un8q00Vg6(_@6O5NnogHh!5wyaF^fZkf8oEFxtnwP7klO~p`H%nE z#z{Zo-H_8!=^O3#ZNi5ic;1EkX@cEF&2*9_Lk2>eRrv8>;yqp5YK#Az0Yc~U`Wjhi z#MinVq)W|zocRQOks^Io=kAA^RHQ`*`WBbIDdxiMu2et_;QzDC!oRGUzPi2lk{LRE z*x4GTgRLgBCc9T!r;Q(ST9Kc>G$^0vrXx#yVG4Qk%IWE9m6;Nc z5dp3~PFf4+?|dgF)Gv8nzaabiFWf=EewEWqFLHUfpTq`=#8JqJ$MCR5Hx2emvGGBRTMmf}LF$Ie=h`4JNd z>vW%|LkH@MAZM=LE{kj>EHc_t`7ObF*Z#p(s$IyDBQt|DY-F-BTi!Y-0HH z4eJlx4p=eNPs9ErZVg~Tiv{!I7qH0X<_xzi>mj7g*3=% zxC1NTR|@-8dX=BMF}hioVWCFLG#TXq5@8TEe&9yWK84 zkIl*y5%{}pa40_X=3~Kw!N24W9m|n+0+xuY(-Y23BIHz0YL5G#hj?+jN`M#l?`$oH zu!a;lc(&bHtj$X0Ze#mS%;D5+$@`;{{{Ur`4{5;OzJH-7GPhhBELY=l0)hbiuZvAh z1G5Orx%a7e;@Y>%k%6~ZyEocfWz<6EGH5BJU1NVAOP67QjwAsAq?AwfIaCGlinAO% zltLkHf`LeE0=^VKmnbf-iD1cB9Lh?lrrYCRfjku;plOYwA&LD-ZL_*zXPJNk$!|b# zW2Aw=1Rs66ORMV_1kr%pSiQbKX?q&qo^eifVy`DMGII}evdRU!sPDhmOa)iyLdHES21v-6-=x{|4dm%otDet!#|uJf3b0HS-?}$X`p`C+K0rjy01fW{ z^dVH5T#gF6cp2eS=UZXO4PoE9%q8p__GH-!srhBYmuA_0%CM4_$H!}x3RL!|&I(#P z=q|w9{=(X8+C6I}u{mc06K3bzzsgKVuBoTZAjp|C7(sG|iuPr%4EK;q?$9NBwnE-? zmTuPrfD{B`7dgZs4|&BIja?>Su33rZ;UR?sk-IlS&kf=+-hkWq07VMeg<-Cc6-Xj z9^6)J8joMh2d9#diUo+SJ?As{N8~L8MnEQ~7d9TRN(! zJ5TloKTHMUuhyxt@c4c&&$|!Ju2Oxo2OAsjA&=?f&SE3~KNQ8shkw4AjjkU|RH?9V zZ3Af9SZsDx9`+2NOtjU@Dbx*7QqWb!2^D%=nTA0u!tG6DTAGi(U^EG3j3Ql|pKPd8 zc*Z~fDRVbaab+qtIOO)(Rf6oxz$x9&~hi}CCQ+|S0|0Wy#_a@#Ox0gR3u zlu@l5`HM6kqv#y9bd}rvl2emfXf;F!c7^hgM<11mJTe1q89ji#2uV5dd`v`J3?1{F zKfq%?>=D(e#7&374QL&rkHF=pjEUId0e(!Pv&LwwC6uJzh?sR>$Q0kr&u(8K)xs%D zbgkdp0D=W5V^keHXd(NLC**KXZD=5TJ2LDOE@6! zMqLz9E4u738*-82lxML)3t{OVd*JrP8OOL?4k3>Vp7;MT@{8F9%b!iRRlw<&!;VHJ zA96Ktv;gh2g!-SZ_mNeQzIcR;{n?|X;OBqSM~Zd9)Al2mm*cTBNiEe<*1r69z8^?~ zB?NzL*HPSjk@m)#X~l8L>d(}_|Kt1Dw~M4Fr2;hD5!=#@yL4 zATJ*-V`7pbvptB98a@-|>oWJZGs|#Pgi^ZQ@Uff3UWE^$#nR*!8~#UoH-{U6wv|=* zkR86^j7wn!qz@Oo?kdd$|QhK+Evy0?HT-vk)aUkLMX-F4Nr45TVHBrRj_CE z_z>?lf%f>>4$j}ty234h3280t!1$@>)&uJ|Jd^W3Flp%8BtTTN_p5M6Kx@tetZcau zWrV_2N<6JJ_AeIOqGHTx?*A{3G$JJCaJS6mJQe5o?)~+@2W>E%z_$E`M%p5 z4_OMqe73F)Z;>GCzHEHl005vPC+ucRy3LR>WH>e*hEU()oa*6l*G**bBgB1mHZE*@ zVw~-$G^Kp_C6>t-h6ZNZDRHx6Yw8s(YgU|Oy0y%)G&TF&Y|E^Jm6-bEg!$Xzm)eLf zR`c$~+8j0(kfg|~t|U6bR}IbCTs~ubE(53ML?+>QMw|Of8dO7}jxf^(9GTJ>Uyl`j zRXuU;{bA4Q4&0T3qw@8jf8eKKX->S@41!<2H_f>D`|Y3(=4>9x1qg-7wgLZsJ7~U? z9%!#6Q;b^cG}5&z1ii%wm~Uyd6kA5qi^R@Hk9x?zF%MkaluJ(|a1T1h#!5>m2O{9% zZr`%3jRD{lZJ53*wc7N%hSM?#&h1=oph<5p;~zUxmTv!Pb5dc3MpF!{O zUVt6%As4!Eh_59kPKL@d$zZ%75c25Ev7ZC z(~OZZ!j_3M^u<8}$&?*Gjys|5Sbj)SzQ7JQzm;EIJfq-d$2`(uJEn=OHddJ-&o@o| z`-UYuu(?&$V8oVoLi({r@-ru=`NAp}mMM8AG}6q?m<5mT)7Hdf(Z2N2YB}z$L}Pe1D?D^WYCm zWi&us23|g*5)xwuM^LqmEKPM+;>7~5kbzS`5|7AE$G*TPR#*>?e_tGB)Mu9a7Fe8= zZ+#FV*9|jBF}3`gN&5cLc6q;Ij;O|rxO%Tvq+!&)2&Rep@ml(;{71|`a%M6N9!XWLNZ@p+o47G^YbLH<74feVo&_c ze~(gLYeGA`y1DmI&5C2;(4i<&XC zV*JIi>c;ucVnSn{Vhe!_0j$z4YXI?I`II$Gh$d`=sUyEyGxL2Z&aSfxm&Y1Q;#Pd{ zS;q&aJtkVlEn!PJx(-l2{$R7{M9SdA=78U-@MqiBhX6P`E_e4u@@GVzpCMeY=v{37 zDTa24*vmA@d2fdP^L@MA%r9xBJ&xU-A1bh=i|7a+D7AXR=O{qWr(q#;irE;qhD=L z@~G8@X+G|R@VFzA?=!7=HJG);cjp=t8pL_nS9k$Jx^JJ27f{ zbHyl_>J5_f3wQu22Wi_UD%m$J4b@3^JZwORoDMNj$)l5?cOi2XV!9x-o` zZ{{deAnE#YJA3C!yX7R9V-0rkgB^H5gG>MYp7Xj(!wL(E^rfba2MD2^0vwD@Srl(w z5qK_EJM9F3(`+QJSIz^t)*YDH0PA_RLO+tL=0L_iZituP&M@`S?C*_@R+;7u{5o7x zEP@b{O%1$6WLHYLsU!l!N~c}nk67LLI^xK>XPIv%oZoAk? zQc=Jz&ccxKyTuQ7niOA5l&YH>w|Xg-emFYgS(jd&8K;qX3skk0?ps6C%^nY!X^?9 zfUn&v(IizSa!9ejnY~^|1-#*(N1y&0KFpsBF{=;jm<-zuuZImE4heUcgWD8Sgz3yJ zu~AOcZ_*C3Wd}^i8v>|=e>djdKqZMl8r;~dzdq1ln%`ERepq}ez&BuP`8&vvez9E5 zZZe+Ds~AOBGSaRYVu1{-NJ9yFioftfgC6*22z&!~`)fkz)`&vMYo%}AXV)9&>=Pm_ zjccapg!4h{0ffkbke`8=31jh(wsHMMj;v3x+ML`Zm@B8GNGxxWd$zPkJUNEiagkjfvvjZDr!;|`cy!rxDwRl%{^ zo**)Ncu-tjG*9F-8Eu5F8-6k|5wV`IENBkJY$UKw^lpP|FFD&%p6r70i>~B8SixlY zv8y|SJ3fEM+V8F0H}#$WqU@Mrn-9|DKLkFNiT>q8ainrb(|ux;4Bep+{;2cM5FBZ< z=9JF0b3olT8Ul56wNr(E?jgoEIEDYBz-TC0_YMcf?sqdXYkfEL#HN4L=pW=iv+8}W z(B7a@nR3MNAvfm~3tGiej3?&r3Lz=6YOsnH_7C!C0i6oa>S@=;;#(&i<*zEGP7Woz zv;|UcU<@!<=3?quQ|?VuO?-8~yR;_-R1errm;KeI=P5dHCTec}EL z8aU>$VtviX!@-SC4iJs77MTco%6MgCpD{G?X_qWuqGdM5ccTdtB_6R#+EXvyu-(~h zx>e9Qve+k5F20Qy=gddwJY@z=11V=%Z3DSt#nX0A;v{{#1DPE@(SICUJa;B7*~q`% zJ(vF<7WPf%%5@yqKJemFi(ZRhpW_4H>rfj^c)nYX$tKl)dtu=@`9QeSONrdFt!3xH z7k9(NzF;M|ZkNG%R@3hlGZ2!&b7*0ka58jIP1hZQ!S?C@!}vC{XOkp9=NiEm5JWd*ejeYE;V|Gt8p^WF=vM}9FmHtVP?L07 z+1bzSH-|(-SvGLuf?TAbfSQBIZ%Dc3vzzpcR6+|!>til6o=@S+fwaBBb<_kVQ;QFv zzo8sjs#1bpd2ZXj9DNE1d)Jnxu}M4032x)LRIG<`l$e zW&C@iYEJJ3>^$~FHnEn zuG~I5RL+axLIt=x+t%Y1(|(6&D8vVGhabuFDbf-YtJ(7^Xm)%+I!er$PwbiKH?EicTfJ?yuue9 zJYu|q(b8((Z$3+;Y_Y%7pQ_TE7(za69?GzEr=CS`DPMQI)LH1m4yv--JxLd)I2gIx z#uirK0|`D*>Kh1)hMkOn$QX(yG6t6?H=Z+t$>NJ1bfB!7uU5j}w$PF(W+R3ilgA6P zy0JpYzNsjZny79arpR8YS14{QZBK_Zm>6etsqT1e?{E3gIVFU>=f_!3k{_o%azimx z;UrD$d?HjPB9v@V@8i&i<03z}95w<6Sl`!Wy}l3xgRis;nwWzRQ=tccLLTC@iA|+t zN5c`4>&*qEf4@)Rj+c>267|rtgV`ftIwj>*C|2h24dTvAp%}_IobA#~s*{fI{blh@Z<1_!svoWo#5D8^& zVvo3ami??eH5H!v!dv@Bs1^Hh;k~v#0nEi^b{!`zk4>}SzN)8c1hAb98Uu=gZ(sAa zg#-FC1E}4r@`8+!60hfr`WaS815_JC#wA~pXft?LTP`d9JaBurx3k^#tyf~Yr)d_! zV>F*TpeEDvwd4*M{w(>5qM~uU%uFhQIpy?qs76>yrnTvX$L_r?S!Ou~&u}+-H-@8t z2zl&507y$!m6J2YV!@8C6Ax@_+cNqg+mzX-40f5;XQC=ax@@QC5bBC%#$&?hYZ`Q5 z#u5K#Z`WJNTBWcjxXydC&r9C_`wYv>95`fVg3ltxHI6adorMAWx`i9{Mk-?};mu#% zevl%yTl9FdVeSlrA{S}uKC$$rdyCLQTTr6-%Ic-Km>3oAs}Zn%;0|*6zW~a`&E5FI H=MDe>a>2ME literal 5594 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 xgJ+ho69x|bfO02V&0vb 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 URDFgFec%Fc8<4#;Zccyz00r#rPXGV_ literal 18616 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 diff --git a/js/bullet.js b/js/bullet.js index 23fc47a..6c51b66 100644 --- a/js/bullet.js +++ b/js/bullet.js @@ -2714,58 +2714,31 @@ const b = { range: 700 - 300 * tech.isFoamMine, beforeDmg() {}, onEnd() { - if (tech.isFoamMine) { - for (let i = 0; i < 14; i++) { - const radius = 13 + 8 * Math.random() - const velocity = { - x: 5.5 * Math.random(), - y: 0 + if (this.isArmed && !tech.isMineSentry) { + if (tech.isFoamMine) { + //send 14 in random directions slowly + for (let i = 0; i < 12; i++) { + const radius = 13 + 8 * Math.random() + const velocity = { x: 0.5 + 5.5 * Math.random(), y: 0 } + b.foam(this.position, Vector.rotate(velocity, this.angle + 1.57 + 3 * (Math.random() - 0.5)), radius) //6.28 * Math.random() } - b.foam(this.position, Vector.rotate(velocity, this.angle + 1.57 + 3 * (Math.random() - 0.5)), radius) //6.28 * Math.random() - } - - let count = 0 - let cycle = () => { - if (count < 40) { - if (!simulation.paused && !simulation.isChoosing) { //!(simulation.cycle % 1) && - count++ - - const targets = [] //target nearby mobs - for (let i = 0, len = mob.length; i < len; i++) { - if ( - Vector.magnitude(Vector.sub(this.position, mob[i].position)) < this.range + mob[i].radius + 300 && - !mob[i].isBadTarget && //|| mob[i].isMobBullet - Matter.Query.ray(map, this.position, mob[i].position).length === 0 && - !mob[i].isInvulnerable - ) { - // targets.push(Vector.add(mob[i].position, Vector.mult(mob[i].velocity, dist / 50))) //predict where the mob will be in a few cycles - targets.push(mob[i]) //predict where the mob will be in a few cycles - } - } - if (targets.length > 0) { // aim near a random target in array - const index = Math.floor(Math.random() * targets.length) //pick random target from list - const radius = 7 + 10 * Math.random() - const SPEED = 23 + 6 * Math.random() - radius * 0.3 + 0.5 * targets[index].speed - const predict = Vector.mult(targets[index].velocity, Vector.magnitude(Vector.sub(this.position, targets[index].position)) / 60) - const where = Vector.add(targets[index].position, predict) - const velocity = Vector.mult(Vector.normalise(Vector.sub(where, this.position)), SPEED) - b.foam(this.position, Vector.rotate(velocity, 0.2 * (Math.random() - 0.5)), radius) - } else { - const radius = 7 + 10 * Math.random() - const velocity = { - x: 10 + 8 * Math.random(), - y: 0 - } - b.foam(this.position, Vector.rotate(velocity, this.angle + 1.57 + 2.8 * (Math.random() - 0.5)), radius) //6.28 * Math.random() + //send 40 targeted + let count = 0 + let cycle = () => { + if (count < 50) { + if (!simulation.paused && !simulation.isChoosing) { //!(simulation.cycle % 1) && + count++ + b.targetedFoam(this.position) } + requestAnimationFrame(cycle); } - requestAnimationFrame(cycle); } + requestAnimationFrame(cycle) + } else if (tech.isSuperMine) { + b.targetedBall(this.position, 22 + 2 * tech.extraSuperBalls) + } else { + b.targetedNail(this.position, 22, 40 + 10 * Math.random(), 1200, true, 2.2) //targetedNail(position, num = 1, speed = 40 + 10 * Math.random(), range = 1200, isRandomAim = true, damage = 1.4) { } - requestAnimationFrame(cycle) - - } else if (this.isArmed && !tech.isMineSentry) { - b.targetedNail(this.position, tech.isMineSentry ? 7 : 22, 40 + 10 * Math.random(), 1200, true, 2.2) //targetedNail(position, num = 1, speed = 40 + 10 * Math.random(), range = 1200, isRandomAim = true, damage = 1.4) { } }, do() { @@ -2779,8 +2752,7 @@ const b = { y: 0 }) Matter.Body.setAngle(this, Math.atan2(collide[i].tangent.y, collide[i].tangent.x)) - //move until touching map again after rotation - for (let j = 0; j < 10; j++) { + for (let j = 0; j < 10; j++) { //move until touching map again after rotation if (Matter.Query.collides(this, map).length > 0) { //touching map if (angle > -0.2 || angle < -1.5) { //don't stick to level ground Matter.Body.setVelocity(this, { @@ -2798,7 +2770,6 @@ const b = { Matter.Body.setAngularVelocity(this, 0) } this.arm(); - //sometimes the mine can't attach to map and it just needs to be reset setTimeout(() => { if (Matter.Query.collides(this, map).length === 0 || Matter.Query.point(map, this.position).length > 0) { @@ -2809,8 +2780,7 @@ const b = { }, 100); break } - //move until you are touching the wall - Matter.Body.setPosition(this, Vector.add(this.position, Vector.mult(collide[i].normal, 2))) + Matter.Body.setPosition(this, Vector.add(this.position, Vector.mult(collide[i].normal, 2))) //move until you are touching the wall } break } @@ -2848,13 +2818,25 @@ const b = { ) { if (tech.isStun) b.AoEStunEffect(this.position, this.range + mob[i].radius + random); //AoEStunEffect(where, range, cycles = 90 + 60 * Math.random()) { if (tech.isMineSentry) { - this.lookFrequency = 6 - this.endCycle = simulation.cycle + 1020 + this.lookFrequency = 15 + 10 * (tech.oneSuperBall && tech.isSuperMine) + Math.floor(3 * Math.random()) + // this.endCycle = Infinity + this.shots = tech.sentryAmmo this.do = function() { //overwrite the do method for this bullet this.force.y += this.mass * 0.002; //extra gravity if (!(simulation.cycle % this.lookFrequency)) { //find mob targets - this.endCycle -= 5 - b.targetedNail(this.position, 1, 45 + 5 * Math.random(), 1100, false, 2.3) //targetedNail(position, num = 1, speed = 40 + 10 * Math.random(), range = 1200, isRandomAim = true, damage = 1.4) { + if (tech.isFoamMine) { + this.shots -= 0.6 * b.targetedFoam(this.position, 1, 21 + 7 * Math.random(), 1200, false) + b.targetedFoam(this.position, 1, 21 + 7 * Math.random(), 1200, false) + } else if (tech.isSuperMine) { + const cost = tech.oneSuperBall ? 2 : 0.7 + this.shots -= cost * b.targetedBall(this.position, 1, 42 + 12 * Math.random(), 1200, false) + for (let i = 0, len = tech.extraSuperBalls / 4; i < len; i++) { + if (Math.random() < 0.33) b.targetedBall(this.position, 1, 42 + 12 * Math.random(), 1200, false) + } + } else { + this.shots -= b.targetedNail(this.position, 1, 45 + 5 * Math.random(), 1100, false, 2.3) //targetedNail(position, num = 1, speed = 40 + 10 * Math.random(), range = 1200, isRandomAim = true, damage = 1.4) { + } + if (this.shots < 0) this.endCycle = 0 if (!(simulation.cycle % (this.lookFrequency * 6))) { simulation.drawList.push({ x: this.position.x, @@ -3769,7 +3751,7 @@ const b = { bullet[me] = Bodies.polygon(where.x, where.y, 12, radius, b.fireAttributes(dir, false)); Composite.add(engine.world, bullet[me]); //add bullet to world Matter.Body.setVelocity(bullet[me], velocity); - Matter.Body.setDensity(bullet[me], 0.0001 + 0.001 * tech.superHarm); + Matter.Body.setDensity(bullet[me], 0.0008 + 0.0008 * tech.superHarm); bullet[me].endCycle = simulation.cycle + Math.floor(300 + 90 * Math.random()); bullet[me].minDmgSpeed = 0; bullet[me].restitution = 1; @@ -3786,7 +3768,7 @@ const b = { bullet[me].collidePlayerDo = function() { if (Matter.Query.collides(this, [player]).length) { this.endCycle = 0 - let dmg = 0.03 * this.mass * tech.superHarm + let dmg = 0.02 * this.mass * tech.superHarm m.damage(dmg); simulation.drawList.push({ //add dmg to draw queue x: this.position.x, @@ -3811,24 +3793,81 @@ const b = { } bullet[me].beforeDmg = function(who) { if (tech.oneSuperBall) mobs.statusStun(who, 120) // (2.3) * 2 / 14 ticks (2x damage over 7 seconds) - // if (tech.isIncendiary) { - // b.explosion(this.position, this.mass * (240+70 * Math.random()) ); //makes bullet do explosive damage at end - // this.endCycle = 0 - // } if (tech.isFoamBall) { for (let i = 0, len = 6 * this.mass; i < len; i++) { const radius = 5 + 8 * Math.random() - // const velocity = { x: Math.max(2, 10 - radius * 0.25), y: 0 } - const velocity = { - x: Math.max(0.5, 2 - radius * 0.1), - y: 0 - } + const velocity = { x: Math.max(0.5, 2 - radius * 0.1), y: 0 } b.foam(this.position, Vector.rotate(velocity, 6.28 * Math.random()), radius) } this.endCycle = 0 } }; }, + targetedBall(position, num = 1, speed = 42 + 12 * Math.random(), range = 1200, isRandomAim = true) { + let shotsFired = 0 + const targets = [] //target nearby mobs + for (let i = 0, len = mob.length; i < len; i++) { + const dist = Vector.magnitude(Vector.sub(position, mob[i].position)); + if ( + dist < range + mob[i].radius && + !mob[i].isBadTarget && + Matter.Query.ray(map, position, mob[i].position).length === 0 && + Matter.Query.ray(body, position, mob[i].position).length === 0 && + !mob[i].isInvulnerable + ) { + targets.push(Vector.add(mob[i].position, Vector.mult(mob[i].velocity, dist / 60))) //predict where the mob will be in a few cycles + } + } + const radius = (11 + 10 * tech.oneSuperBall) * tech.bulletSize + for (let i = 0; i < num; i++) { + if (targets.length > 0) { // aim near a random target in array + const index = Math.floor(Math.random() * targets.length) + const SPREAD = 160 / targets.length + const WHERE = { + x: targets[index].x + SPREAD * (Math.random() - 0.5), + y: targets[index].y + SPREAD * (Math.random() - 0.5) + } + b.superBall(position, Vector.mult(Vector.normalise(Vector.sub(WHERE, position)), speed), radius) + shotsFired++ + } else if (isRandomAim) { // aim in random direction + const ANGLE = 2 * Math.PI * Math.random() + b.superBall(position, { x: speed * Math.cos(ANGLE), y: speed * Math.sin(ANGLE) }, radius) + } + } + return shotsFired + }, + targetedFoam(position, num = 1, speed = 21 + 7 * Math.random(), range = 1200, isRandomAim = true) { + let shotsFired = 0 + const targets = [] //target nearby mobs + for (let i = 0, len = mob.length; i < len; i++) { + const dist = Vector.magnitude(Vector.sub(position, mob[i].position)); + if ( + dist < range + mob[i].radius && + !mob[i].isBadTarget && //|| mob[i].isMobBullet + Matter.Query.ray(map, position, mob[i].position).length === 0 && + !mob[i].isInvulnerable + ) { + targets.push(Vector.add(mob[i].position, Vector.mult(mob[i].velocity, dist / 60))) //predict where the mob will be in a few cycles + } + } + for (let i = 0; i < num; i++) { + if (targets.length > 0) { // aim near a random target in array + const SPREAD = 160 / targets.length + const index = Math.floor(Math.random() * targets.length) + const radius = 11 + 12 * Math.random() + const where = { + x: targets[index].x + SPREAD * (Math.random() - 0.5), + y: targets[index].y + SPREAD * (Math.random() - 0.5) + } + b.foam(position, Vector.mult(Vector.normalise(Vector.sub(where, position)), speed - radius * 0.25), radius) + shotsFired++ + } else if (isRandomAim) { // aim in random direction + const ANGLE = 2 * Math.PI * Math.random() + b.foam(position, { x: speed * Math.cos(ANGLE), y: speed * Math.sin(ANGLE) }, 8 + 11 * Math.random()) + } + } + return shotsFired + }, // plasmaBall(position, velocity, radius) { // // radius *= Math.sqrt(tech.bulletSize) // const me = bullet.length; @@ -4186,6 +4225,7 @@ const b = { } }, targetedNail(position, num = 1, speed = 40 + 10 * Math.random(), range = 1200, isRandomAim = true, damage = 1.4) { + let shotsFired = 0 const targets = [] //target nearby mobs for (let i = 0, len = mob.length; i < len; i++) { const dist = Vector.magnitude(Vector.sub(position, mob[i].position)); @@ -4208,14 +4248,17 @@ const b = { y: targets[index].y + SPREAD * (Math.random() - 0.5) } b.nail(position, Vector.mult(Vector.normalise(Vector.sub(WHERE, position)), speed), damage) + shotsFired++ } else if (isRandomAim) { // aim in random direction const ANGLE = 2 * Math.PI * Math.random() b.nail(position, { x: speed * Math.cos(ANGLE), y: speed * Math.sin(ANGLE) }, damage) + shotsFired++ } } + return shotsFired }, crit(mob, bullet) { if (!mob.shield && Vector.dot(Vector.normalise(Vector.sub(mob.position, bullet.position)), Vector.normalise(bullet.velocity)) > 0.999 - 1 / mob.radius) { @@ -4263,9 +4306,9 @@ const b = { bullet[me].dmg = tech.isNailRadiation ? 0 : dmg bullet[me].beforeDmg = function(who) { //beforeDmg is rewritten with ice crystal tech if (tech.isNailRadiation) mobs.statusDoT(who, dmg * (tech.isFastRadiation ? 1.3 : 0.44), tech.isSlowRadiation ? 360 : (tech.isFastRadiation ? 60 : 180)) // one tick every 30 cycles - if (tech.isNailCrit) { + if (tech.isNailCrit) { //makes bullet do explosive damage if it hits center if (!who.shield && Vector.dot(Vector.normalise(Vector.sub(who.position, this.position)), Vector.normalise(this.velocity)) > 0.97 - 1 / who.radius) { - b.explosion(this.position, 150 + 30 * Math.random()); //makes bullet do explosive damage at end + b.explosion(this.position, 80 + 90 * (b.activeGun === 0) + 30 * Math.random()); //larger explosions for human aimed nail gun, smaller for auto aimed sources, like bots, and mine } } this.ricochet(who) @@ -7463,6 +7506,15 @@ const b = { ammo: 0, ammoPack: 1.7, have: false, + nameString(suffix = "") { + if (tech.isFoamMine) { + return `foam` + } else if (tech.isSuperMine) { + return `super ball${suffix}` + } else { + return `nail${suffix}` + } + }, do() { if (!input.field && input.down && !tech.isLaserMine) { const cycles = 60 //30 diff --git a/js/level.js b/js/level.js index c694ce2..964b833 100644 --- a/js/level.js +++ b/js/level.js @@ -18,7 +18,7 @@ const level = { // simulation.enableConstructMode() //tech.giveTech('motion sickness') //used to build maps in testing mode // simulation.isHorizontalFlipped = true // tech.giveTech("performance") - // level.difficultyIncrease(30 * 4) //30 is near max on hard //60 is near max on why + // level.difficultyIncrease(10 * 4) //30 is near max on hard //60 is near max on why // m.maxHealth = m.health = 100 // tech.isRerollDamage = true // powerUps.research.changeRerolls(10) @@ -28,15 +28,16 @@ const level = { // m.setField("perfect diamagnetism") //molecular assembler standing wave time dilation perfect diamagnetism metamaterial cloaking wormhole negative mass pilot wave plasma torch // simulation.molecularMode = 2 // m.damage(0.1); - // b.giveGuns("super balls") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser + // b.giveGuns("mine") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser // b.giveGuns("spores") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser // b.guns[0].ammo = 10000 - // tech.giveTech("cordyceps") - // tech.giveTech("Zectron") + // tech.giveTech("blast ball") + // tech.giveTech("elephants toothpaste") + // tech.giveTech("sentry gun") // for (let i = 0; i < 1; ++i) tech.giveTech("super ball") // tech.isFoamBall = true - // for (let i = 0; i < 1; ++i) tech.giveTech("incendiary ammunition") - // for (let i = 0; i < 2; i++) tech.giveTech("unified field theory") + // for (let i = 0; i < 1; ++i) tech.giveTech("super ball") + // for (let i = 0; i < 1; i++) tech.giveTech("irradiated nails") // for (let i = 0; i < 1; i++) tech.giveTech("colony") // for (let i = 0; i < 10; i++) powerUps.directSpawn(450, -50, "tech"); // for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "boost"); @@ -47,7 +48,8 @@ const level = { // spawn.starter(1900, -500, 25) // spawn.sneaker(1900, -500, 25) // spawn.hopper(2538, -950) - // for (let i = 0; i < 2; ++i) spawn.starter(1000 + 1000 * Math.random(), -500 + 300 * Math.random()) + // spawn.zombie(1000 + 1000 * Math.random(), -500 + 300 * Math.random(), 30, 5, "white") // zombie(x, y, radius, sides, color) + // for (let i = 0; i < 20; ++i) spawn.starter(1000 + 1000 * Math.random(), -500 + 300 * Math.random()) // tech.addJunkTechToPool(2) // tech.tech[322].frequency = 100 // spawn.tetherBoss(1900, -500, { x: 1900, y: -500 }) diff --git a/js/mob.js b/js/mob.js index 5a08c18..4fba9c7 100644 --- a/js/mob.js +++ b/js/mob.js @@ -1194,7 +1194,7 @@ const mobs = { if (this.isDropPowerUp) { if (this.isSoonZombie) { //spawn zombie on death this.leaveBody = false; - let count = 45 //delay spawn cycles + let count = 5 //delay spawn cycles let cycle = () => { if (count > 0) { if (m.alive) requestAnimationFrame(cycle); diff --git a/js/player.js b/js/player.js index 6246d82..f43270c 100644 --- a/js/player.js +++ b/js/player.js @@ -1992,7 +1992,7 @@ const m = { // const angleReduction = 0.1 + (Math.PI / 2 - Math.min(Math.PI / 2, Math.abs(m.angle + Math.PI / 2))) if (player.velocity.y > 1) { - player.force.y -= angleReduction * (tech.isBigField ? 0.87 : 0.7) * player.mass * simulation.g; + player.force.y -= angleReduction * (tech.isBigField ? 0.9 : 0.7) * player.mass * simulation.g; Matter.Body.setVelocity(player, { x: player.velocity.x, y: 0.98 * player.velocity.y diff --git a/js/powerup.js b/js/powerup.js index 45db754..32f6d97 100644 --- a/js/powerup.js +++ b/js/powerup.js @@ -645,13 +645,20 @@ const powerUps = { }, buildColumns(totalChoices, type) { let width - if (canvas.width < 1500) { - width = "340px" + if (canvas.width < 1710) { + width = "285px" } else if (canvas.width < 1950) { - width = "360px" + width = "340px" } else { width = "384px" } + // if (canvas.width < 1500) { + // width = "340px" + // } else if (canvas.width < 1950) { + // width = "360px" + // } else { + // width = "384px" + // } let text = "" if (localSettings.isHideImages || canvas.width < 1200) { document.getElementById("choose-grid").style.gridTemplateColumns = width @@ -1150,7 +1157,7 @@ const powerUps = { powerUps.research.currentRerollCount = 0 if (tech.isTechDamage && who.name === "tech") m.damage(0.1) if (tech.isMassEnergy) m.energy += 2; - if (tech.isMineDrop && bullet.length < 150 && Math.random() < 0.6) { + if (tech.isMineDrop && bullet.length < 150 && Math.random() < 0.5) { if (tech.isLaserMine && input.down) { b.laserMine(who.position) } else { diff --git a/js/simulation.js b/js/simulation.js index 8f0310c..62e1923 100644 --- a/js/simulation.js +++ b/js/simulation.js @@ -447,9 +447,10 @@ const simulation = { } } if (tech.crouchAmmoCount) tech.crouchAmmoCount = 1 //this prevents hacking the tech by switching guns - - b.activeGun = b.inventory[b.inventoryGun]; - if (b.guns[b.activeGun].charge) b.guns[b.activeGun].charge = 0; //if switching into foam set charge to 0 + if (b.inventory.length > 0) { + b.activeGun = b.inventory[b.inventoryGun]; + if (b.guns[b.activeGun].charge) b.guns[b.activeGun].charge = 0; //if switching into foam set charge to 0 + } simulation.updateGunHUD(); simulation.boldActiveGunHUD(); }, @@ -895,7 +896,7 @@ const simulation = { if (tech.isMutualism && !tech.isEnergyHealth) { for (let i = 0; i < bullet.length; i++) { if (bullet[i].isMutualismActive) { - m.health += 0.01 + 0.01 * ((bullet[i].isSpore || bullet[i].isFlea) ? 0: 1) + m.health += 0.01 + 0.01 * ((bullet[i].isSpore || bullet[i].isFlea) ? 0 : 1) if (m.health > m.maxHealth) m.health = m.maxHealth; m.displayHealth(); } @@ -1168,18 +1169,6 @@ const simulation = { m.energy -= 0.1 * simulation.difficultyMode } if (isNaN(player.position.x)) m.death(); - - // if (tech.isEnergyDamage) { - // document.getElementById("tech-capacitor").innerHTML = `(+${(m.energy/0.05).toFixed(0)}%)` - // } - // if (tech.restDamage) { - // if (player.speed < 1) { - // document.getElementById("tech-rest").innerHTML = `(+20%)` - // } else { - // document.getElementById("tech-rest").innerHTML = `(+0%)` - // } - // } - if (m.lastKillCycle + 300 > m.cycle) { //effects active for 5 seconds after killing a mob if (tech.isEnergyRecovery && m.immuneCycle < m.cycle) m.energy += m.maxEnergy * 0.05 if (tech.isHealthRecovery) m.addHealth(0.005 * m.maxHealth) diff --git a/js/spawn.js b/js/spawn.js index 4cad1be..345c000 100644 --- a/js/spawn.js +++ b/js/spawn.js @@ -1542,14 +1542,15 @@ const spawn = { zombie(x, y, radius, sides, color) { //mob that attacks other mobs mobs.spawn(x, y, sides, radius, color); let me = mob[mob.length - 1]; - me.damageReduction = 0 //take NO damage until targeting player, but also slowly lose health + me.damageReduction = 0 //take NO damage, but also slowly lose health + Matter.Body.setDensity(me, 0.0001) // normal density is 0.001 // this reduces life by half and decreases knockback me.isZombie = true me.isBadTarget = true; me.isDropPowerUp = false; me.showHealthBar = false; me.stroke = "#83a" - me.accelMag = 0.0015 - me.frictionAir = 0.01 + me.accelMag = 0.001 + me.frictionAir = 0.005 me.collisionFilter.mask = cat.player | cat.map | cat.body | cat.mob me.seeAtDistance2 = 1000000 //1000 vision range // me.onDeath = function() { @@ -1577,39 +1578,36 @@ const spawn = { me.mobSearchIndex = 0; me.target = null me.lookForMobTargets = function() { - if (!(simulation.cycle % 10)) { - if (this.target === null) { //if you have no target - this.mobSearchIndex++ //look for a different mob index every time - if (this.mobSearchIndex > mob.length - 1) this.mobSearchIndex = 0 + if (this.target === null && mob.length > 1 && !(simulation.cycle % this.seePlayerFreq)) { //find mob targets + let closeDist = Infinity; + for (let i = 0, len = mob.length; i < len; ++i) { if ( - mob.length > 1 && - !mob[this.mobSearchIndex].isZombie && - (Vector.magnitudeSquared(Vector.sub(this.position, mob[this.mobSearchIndex].position)) < this.seeAtDistance2 && Matter.Query.ray(map, this.position, mob[this.mobSearchIndex].position).length === 0) + !mob[i].isZombie && + !mob[i].isUnblockable && + Matter.Query.ray(map, this.position, mob[i].position).length === 0 && + Matter.Query.ray(body, this.position, mob[i].position).length === 0 + // !mob[i].isBadTarget && + // !mob[i].isInvulnerable && + // (Vector.magnitudeSquared(Vector.sub(this.position, mob[this.mobSearchIndex].position)) < this.seeAtDistance2) ) { - this.target = mob[this.mobSearchIndex] - } else if (Math.random() < 0.005 * player.speed && (Vector.magnitudeSquared(Vector.sub(this.position, player.position)) < this.seeAtDistance2 || Matter.Query.ray(map, this.position, player.position).length === 0)) { - this.target = player - this.isBadTarget = false; - this.damageReduction = 0.5 - me.collisionFilter.mask = cat.player | cat.map | cat.body | cat.bullet | cat.mob + const DIST = Vector.magnitude(Vector.sub(this.position, mob[i].position)); + if (DIST < closeDist) { + closeDist = DIST; + this.target = mob[i] + } } } - } - //chance to forget target - if (!(simulation.cycle % this.memory) && this.target) { - if ( - (this.target && this.target !== player && !this.target.alive) || - Vector.magnitudeSquared(Vector.sub(this.position, this.target.position)) > this.seeAtDistance2 || - Matter.Query.ray(map, this.position, this.target.position).length !== 0 - ) { - this.target = null - } + } else if ( + !(simulation.cycle % this.memory) && + this.target && + (!this.target.alive || Matter.Query.ray(map, this.position, this.target.position).length !== 0) + ) { + this.target = null //chance to forget target } } me.zombieHealthBar = function() { - this.health -= 0.0005 //decay + this.health -= 0.0004 //decay if ((this.health < 0.01 || isNaN(this.health)) && this.alive) this.death(); - const h = this.radius * 0.3; const w = this.radius * 2; const x = this.position.x - w / 2; @@ -1624,14 +1622,18 @@ const spawn = { if (this.hitCD < simulation.cycle) { if (this.target) { this.force = Vector.mult(Vector.normalise(Vector.sub(this.target.position, this.position)), this.accelMag * this.mass) - if (this.speed > 6) { // speed cap instead of friction to give more agility - Matter.Body.setVelocity(this, { - x: this.velocity.x * 0.97, - y: this.velocity.y * 0.97 - }); - } + } else { //wonder around + this.torque += 0.0000003 * this.inertia; + const mag = 0.00015 * this.mass + this.force.x += mag * Math.cos(this.angle) + this.force.y += mag * Math.sin(this.angle) + } + if (this.speed > 6) { // speed cap instead of friction to give more agility + Matter.Body.setVelocity(this, { + x: this.velocity.x * 0.93, + y: this.velocity.y * 0.93 + }); } - const hit = (who) => { if (!who.isZombie && who.damageReduction) { this.hitCD = simulation.cycle + 15 @@ -1641,7 +1643,7 @@ const spawn = { this.force.y -= force.y; this.target = null //look for a new target - const dmg = 0.2 * m.dmgScale + const dmg = 1.3 * m.dmgScale who.damage(dmg); who.locatePlayer(); simulation.drawList.push({ @@ -1662,8 +1664,6 @@ const spawn = { } } } - // me.onDamage = function(dmg) { - // } }, starter(x, y, radius = Math.floor(15 + 20 * Math.random())) { //easy mob for on level 1 mobs.spawn(x, y, 8, radius, "#9ccdc6"); @@ -5736,9 +5736,9 @@ const spawn = { me.collisionFilter.mask = cat.map | cat.body | cat.bullet | cat.mob //can't touch player me.showHealthBar = false; me.memory = 30; - me.vanishesLeft = 2+simulation.difficultyMode + me.vanishesLeft = 2 + simulation.difficultyMode me.onDamage = function() { - if (this.vanishesLeft>0 && this.health < 0.1){ //if health is below 10% teleport to a random spot on player history, heal, and cloak + if (this.vanishesLeft > 0 && this.health < 0.1) { //if health is below 10% teleport to a random spot on player history, heal, and cloak this.vanishesLeft-- // const scale = 0.95; @@ -5746,21 +5746,21 @@ const spawn = { // this.radius *= scale; //flash screen to hide vanish - for(let i=0; i<8; i++){ + for (let i = 0; i < 8; i++) { simulation.drawList.push({ x: this.position.x, y: this.position.y, radius: 3000, color: `rgba(0, 0, 0,${1-0.1*i})`, - time: (i+1)*3 + time: (i + 1) * 3 }); } //teleport to near the end of player history - const index = Math.floor( (m.history.length-1)*(0.66+0.2*Math.random() )) + const index = Math.floor((m.history.length - 1) * (0.66 + 0.2 * Math.random())) let history = m.history[(m.cycle - index) % 600] Matter.Body.setPosition(this, history.position) - Matter.Body.setVelocity(this, {x: 0,y: 0}); - + Matter.Body.setVelocity(this, { x: 0, y: 0 }); + this.seePlayer.recall = 0 this.cloak(); this.health = 1; @@ -5774,7 +5774,7 @@ const spawn = { this.collisionFilter.mask = cat.map | cat.body | cat.bullet | cat.mob //can't touch player this.damageReduction = 0.04 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1) } - } + } me.deCloak = function() { if (this.isCloaked) { this.damageReduction = 0.4 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1) @@ -5828,13 +5828,13 @@ const spawn = { me.memory = 240; me.isVanished = false; me.onDamage = function() { - if (!this.isVanished && this.health < 0.1){ //if health is below 10% teleport to a random spot on player history, heal, and cloak + if (!this.isVanished && this.health < 0.1 && !this.isStunned && !this.isSlowed) { //if health is below 10% teleport to a random spot on player history, heal, and cloak this.health = 1; this.isVanished = true this.cloak(); //teleport to near the end of player history - Matter.Body.setPosition(this, m.history[Math.floor((m.history.length-1)*(0.66+0.33*Math.random()))].position) - Matter.Body.setVelocity(this, {x: 0,y: 0}); + Matter.Body.setPosition(this, m.history[Math.floor((m.history.length - 1) * (0.66 + 0.33 * Math.random()))].position) + Matter.Body.setVelocity(this, { x: 0, y: 0 }); } }; me.cloak = function() { @@ -5847,7 +5847,7 @@ const spawn = { } me.do = function() { this.gravity(); - this.seePlayerByHistory(15); + this.seePlayerByHistory(25); this.checkStatus(); this.attraction(); //draw diff --git a/js/tech.js b/js/tech.js index 665fe8b..f77c8eb 100644 --- a/js/tech.js +++ b/js/tech.js @@ -236,7 +236,7 @@ const tech = { if (tech.isBotDamage) dmg *= 1 + 0.06 * b.totalBots() if (tech.restDamage > 1 && player.speed < 1) dmg *= tech.restDamage if (tech.isLowEnergyDamage) dmg *= 1 + 0.7 * Math.max(0, 1 - m.energy) - if (tech.isEnergyDamage) dmg *= 1 + m.energy * 0.125; + if (tech.energyDamage) dmg *= 1 + m.energy * 0.1 * tech.energyDamage; if (tech.isDamageFromBulletCount) dmg *= 1 + bullet.length * 0.007 if (tech.isNoFireDamage && m.cycle > m.fireCDcycle + 120) dmg *= 2 if (tech.isSpeedDamage) dmg *= 1 + Math.min(0.66, player.speed * 0.0165) @@ -396,7 +396,7 @@ const tech = { { name: "arsenal", descriptionFunction() { - return `+22% damage per unequipped gun (${(22 * Math.max(0, b.inventory.length-1)).toFixed(0)}%)
 ` + return `+22% damage per unequipped gun (${(22 * Math.max(0, b.inventory.length-1)).toFixed(0)}%)` }, maxCount: 1, count: 0, @@ -414,7 +414,7 @@ const tech = { { name: "active cooling", descriptionFunction() { - return `+28% fire rate per unequipped gun (${(28 * Math.max(0, b.inventory.length-1)).toFixed(0)}%)
 ` + return `+28% fire rate per unequipped gun (${(28 * Math.max(0, b.inventory.length-1)).toFixed(0)}%)` }, //
but not including your equipped gun` }, maxCount: 1, count: 0, @@ -886,7 +886,7 @@ const tech = { { name: "anti-shear topology", link: `anti-shear topology`, - description: "+30% projectile duration
 ", //
drone spore worm flea missile foam wave neutron ice", + description: "+30% projectile duration", //
drone spore worm flea missile foam wave neutron ice", maxCount: 3, count: 0, frequency: 1, @@ -1019,7 +1019,7 @@ const tech = { }, { name: "reaction inhibitor", - description: "-12% maximum mob health
 ", //health + description: "-12% maximum mob health", //health maxCount: 3, count: 0, frequency: 1, @@ -1084,7 +1084,7 @@ const tech = { { name: "nail-bot", link: `nail-bot`, - description: "a bot fires nails at mobs in line of sight
 ", + description: "a bot fires nails at mobs in line of sight", maxCount: 9, count: 0, frequency: 1, @@ -1142,7 +1142,7 @@ const tech = { { name: "foam-bot", link: `foam-bot`, - description: "a bot fires foam at nearby mobs
 ", + description: "a bot fires foam at nearby mobs", maxCount: 9, count: 0, frequency: 1, @@ -1683,7 +1683,7 @@ const tech = { }, { name: "mass driver", - description: "+300% block collision damage
 ", + description: "+300% block collision damage", maxCount: 1, count: 0, frequency: 1, @@ -2345,7 +2345,7 @@ const tech = { { name: "mass-energy equivalence", // description: "energy protects you instead of health
√ of defense reduction reduces max energy", - description: "energy protects you instead of health
exponentially reduced defense (x^0.1)", + description: "energy protects you instead of health
exponentially reduced defense (~ x^0.1)", maxCount: 1, count: 0, frequency: 1, @@ -2411,10 +2411,10 @@ const tech = { { name: "electronegativity", descriptionFunction() { - return `+1% damage per 8 stored energy
(${(12.5*m.energy).toFixed(0)}%)` + return `+0.1% damage per current stored energy
(+${(10*m.energy).toFixed(0)}%)` }, // description: "+1% damage per 8 stored energy", - maxCount: 1, + maxCount: 9, count: 0, frequency: 1, frequencyDefault: 1, @@ -2423,10 +2423,10 @@ const tech = { }, requires: "", effect() { - tech.isEnergyDamage = true + tech.energyDamage++ }, remove() { - tech.isEnergyDamage = false; + tech.energyDamage = 0; } }, { @@ -2585,7 +2585,7 @@ const tech = { }, { name: "energy conservation", - description: "5% of damage done recovered as energy
 ", + description: "5% of damage done recovered as energy", maxCount: 9, count: 0, frequency: 1, @@ -3447,8 +3447,8 @@ const tech = { }, { name: "dark patterns", - description: "+38% damage
+53% JUNK to tech pool", - maxCount: 1, + description: "+15% damage
+15% JUNK to tech pool", + maxCount: 9, count: 0, frequency: 1, frequencyDefault: 1, @@ -3456,10 +3456,10 @@ const tech = { return true }, requires: "", - damage: 1.38, + damage: 1.15, effect() { tech.damage *= this.damage - this.refundAmount += tech.addJunkTechToPool(0.53) + this.refundAmount += tech.addJunkTechToPool(0.15) }, refundAmount: 0, remove() { @@ -3511,7 +3511,7 @@ const tech = { }, { name: "eternalism", - description: "+34% damage
time can't be paused (time can be dilated)", + description: "+30% damage
time can't be paused (time can be dilated)", maxCount: 1, count: 0, frequency: 1, @@ -3520,7 +3520,7 @@ const tech = { return !tech.isPauseSwitchField && !tech.isPauseEjectTech && !tech.isWormHolePause }, requires: "not unified field theory, paradigm shift, invariant", - damage: 1.34, + damage: 1.3, effect() { tech.damage *= this.damage tech.isNoDraftPause = true @@ -3845,7 +3845,7 @@ const tech = { }, { name: "correlated damage", - description: "duplication increases damage
 ", + description: "duplication increases damage", maxCount: 1, count: 0, frequency: 1, @@ -4153,7 +4153,7 @@ const tech = { }, { name: "needle gun", - description: "nail gun and shotgun fire mob piercing needles
 ", + description: "nail gun and shotgun fire mob piercing needles", isGunTech: true, maxCount: 1, count: 0, @@ -4211,7 +4211,7 @@ const tech = { }, { name: "rivet gun", - description: "nail gun and shotgun slowly lob a heavy rivet
 ", + description: "nail gun and shotgun slowly lob a heavy rivet", isGunTech: true, maxCount: 1, count: 0, @@ -4337,7 +4337,7 @@ const tech = { frequency: 2, frequencyDefault: 2, allowed() { - return tech.isMineDrop + tech.isNailBotUpgrade + tech.fragments + tech.nailsDeathMob + (tech.haveGunCheck("super balls") + (tech.haveGunCheck("mine") && !(tech.isLaserMine || tech.isFoamMine)) + (tech.haveGunCheck("nail gun")) + tech.isNeedles + tech.isNailShot + tech.isRivets) * 2 > 1 + return tech.isMineDrop + tech.isNailBotUpgrade + tech.fragments + tech.nailsDeathMob + (tech.haveGunCheck("super balls") + (tech.haveGunCheck("mine") && !(tech.isFoamMine || tech.isSuperMine)) + (tech.haveGunCheck("nail gun")) + tech.isNeedles + tech.isNailShot + tech.isRivets) * 2 > 1 }, requires: "nails, nail gun, rivets, shotgun, super balls, mine", effect() { @@ -4356,9 +4356,9 @@ const tech = { frequency: 2, frequencyDefault: 2, allowed() { - return (tech.isNailShot || tech.isNeedles || tech.isNailBotUpgrade || tech.haveGunCheck("nail gun") || tech.isRivets) && !tech.isIncendiary && !tech.isCritKill + return (tech.isNailShot || tech.isNeedles || tech.isNailBotUpgrade || tech.haveGunCheck("nail gun") || tech.isRivets || (tech.haveGunCheck("mine") && !(tech.isFoamMine || tech.isSuperMine))) && !tech.isIncendiary && !tech.isCritKill }, - requires: "nail gun, needles, nails, rivets, not incendiary, stress concentration", + requires: "nail gun, mine, needles, nails, rivets, not incendiary, stress concentration", effect() { tech.isNailCrit = true }, @@ -4376,7 +4376,7 @@ const tech = { frequency: 2, frequencyDefault: 2, allowed() { - return tech.isMineDrop || tech.isNailBotUpgrade || tech.fragments || tech.nailsDeathMob || (tech.haveGunCheck("mine") && !(tech.isLaserMine || tech.isFoamMine)) || (tech.haveGunCheck("nail gun") && !tech.isShieldPierce) || (tech.haveGunCheck("shotgun") && (tech.isNeedles || tech.isNailShot)) + return tech.isMineDrop || tech.isNailBotUpgrade || tech.fragments || tech.nailsDeathMob || (tech.haveGunCheck("mine") && !(tech.isFoamMine || tech.isSuperMine)) || (tech.haveGunCheck("nail gun") && !tech.isShieldPierce) || (tech.haveGunCheck("shotgun") && (tech.isNeedles || tech.isNailShot)) }, requires: "nail gun, nails, rivets, mine, not ceramic needles", effect() { @@ -4468,7 +4468,7 @@ const tech = { }, { name: "Newtons 3rd law", - description: "+66% shotgun fire rate and recoil
 ", + description: "+66% shotgun fire rate and recoil", isGunTech: true, maxCount: 1, count: 0, @@ -4508,7 +4508,7 @@ const tech = { { name: "nail-shot", link: `nail-shot`, - description: "shotgun drives a long clip of nails
 ", + description: "shotgun drives a long clip of nails", isGunTech: true, maxCount: 1, count: 0, @@ -4528,7 +4528,7 @@ const tech = { { name: "foam-shot", link: `foam-shot`, - description: "shotgun sprays sticky foam bubbles
 ", + description: "shotgun sprays sticky foam bubbles", isGunTech: true, maxCount: 1, count: 0, @@ -4548,7 +4548,7 @@ const tech = { { name: "ice-shot", link: `ice-shot`, - description: "shotgun grows freezing ice IX crystals
 ", + description: "shotgun grows freezing ice IX crystals", isGunTech: true, maxCount: 1, count: 0, @@ -4567,7 +4567,7 @@ const tech = { }, { name: "freezer burn", - description: "mobs frozen while below 33% durability die
 ", + description: "mobs frozen while below 33% durability die", isGunTech: true, maxCount: 1, count: 0, @@ -4669,7 +4669,7 @@ const tech = { frequency: 1, frequencyDefault: 1, allowed() { - return (tech.haveGunCheck("shotgun") && !tech.isNailShot && !tech.isIceShot && !tech.isRivets && !tech.isFoamShot && !tech.isSporeWorm && !tech.isSporeFlea && !tech.isNeedles) || (tech.haveGunCheck("super balls") && !tech.isFoamBall && !tech.superHarm) || (tech.isRivets && !tech.isNailCrit) || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && simulation.molecularMode === 3) || (tech.haveGunCheck("drones") && !tech.isForeverDrones && !tech.isDroneRadioactive && !tech.isDroneTeleport) + return (tech.haveGunCheck("shotgun") && !tech.isNailShot && !tech.isIceShot && !tech.isRivets && !tech.isFoamShot && !tech.isSporeWorm && !tech.isSporeFlea && !tech.isNeedles) || ((tech.haveGunCheck("super balls") || tech.isSuperMine) && !tech.isFoamBall && !tech.superHarm) || (tech.isRivets && !tech.isNailCrit) || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && simulation.molecularMode === 3) || (tech.haveGunCheck("drones") && !tech.isForeverDrones && !tech.isDroneRadioactive && !tech.isDroneTeleport) }, requires: "shotgun, super balls, rivets, drones, not irradiated drones, burst drones, polyurethane, Zectron", effect() { @@ -4679,6 +4679,44 @@ const tech = { tech.isIncendiary = false; } }, + { + name: "Zectron", + description: `+80% super ball density and damage, but
after colliding with super balls lose health`, + isGunTech: true, + maxCount: 9, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return (tech.haveGunCheck("super balls") || tech.isSuperMine) && !tech.isIncendiary + }, + requires: "super balls not incendiary ammunition", + effect() { + tech.superHarm++ + }, + remove() { + tech.superHarm = 0 + } + }, + { + name: "polyurethane foam", + description: "super balls and harpoons colliding with mobs
catalyzes a reaction that yields foam bubbles", + isGunTech: true, + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return (tech.haveGunCheck("super balls") || tech.isSuperMine) || (tech.haveGunCheck("harpoon") && !tech.fragments) + }, + requires: "super balls, harpoon, not fragmentation", + effect() { + tech.isFoamBall = true; + }, + remove() { + tech.isFoamBall = false; + } + }, { name: "autocannon", description: "fire +1 extra super ball
balls are quickly released in same direction", @@ -4706,39 +4744,20 @@ const tech = { } } }, - { - name: "Zectron", - description: `+80% super ball density and damage, but
after colliding with super balls lose health`, - isGunTech: true, - maxCount: 9, - count: 0, - frequency: 2, - frequencyDefault: 2, - allowed() { - return tech.haveGunCheck("super balls") && !tech.isIncendiary - }, - requires: "super balls not incendiary ammunition", - effect() { - tech.superHarm++ - }, - remove() { - tech.superHarm = 0 - } - }, { name: "super duper", - description: `randomly fire +0, +1, or +2 extra super balls
 `, + description: `randomly fire +0, +1, +2, or +3 extra super balls`, isGunTech: true, maxCount: 9, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("super balls") && !tech.oneSuperBall + return (tech.haveGunCheck("super balls") || tech.isSuperMine) && !tech.oneSuperBall }, requires: "super balls, not super ball", effect() { - tech.extraSuperBalls += 3 + tech.extraSuperBalls += 4 }, remove() { tech.extraSuperBalls = 0; @@ -4753,7 +4772,7 @@ const tech = { frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("super balls") && !tech.extraSuperBalls && !tech.superBallDelay + return (tech.haveGunCheck("super balls") || tech.isSuperMine) && !tech.extraSuperBalls && !tech.superBallDelay }, requires: "super balls, not super duper or autocannon", effect() { @@ -4771,26 +4790,6 @@ const tech = { } } }, - { - name: "polyurethane foam", - description: "super balls and harpoons colliding with mobs
catalyzes a reaction that yields foam bubbles", - isGunTech: true, - maxCount: 1, - count: 0, - frequency: 2, - frequencyDefault: 2, - allowed() { - return tech.haveGunCheck("super balls") || (tech.haveGunCheck("harpoon") && !tech.fragments) - }, - requires: "super balls, harpoon, not fragmentation", - effect() { - tech.isFoamBall = true; - }, - remove() { - tech.isFoamBall = false; - } - }, - // { name: "phase velocity", description: "wave particles propagate faster as solids
+35% wave damage", @@ -5145,7 +5144,7 @@ const tech = { }, { name: "ammonium nitrate", - description: "+24% explosive damage, radius
 ", + description: "+24% explosive damage, radius", isGunTech: true, maxCount: 9, count: 0, @@ -5508,7 +5507,7 @@ const tech = { frequencyDefault: 2, allowed() { // return (tech.haveGunCheck("nail gun") && !tech.isRivets && !tech.isNeedles) || (tech.haveGunCheck("mines")) - return tech.isMineDrop || tech.isNailBotUpgrade || tech.fragments || tech.nailsDeathMob || (tech.haveGunCheck("mine") && !(tech.isLaserMine || tech.isFoamMine)) || (tech.haveGunCheck("nail gun") && !tech.isRivets && !tech.isNeedles) || (tech.haveGunCheck("shotgun") && (tech.isNeedles || tech.isNailShot) && !tech.isRivets && !tech.isNeedles) + return tech.isMineDrop || tech.isNailBotUpgrade || tech.fragments || tech.nailsDeathMob || (tech.haveGunCheck("mine") && !(tech.isLaserMine || tech.isFoamMine || tech.isSuperMine)) || (tech.haveGunCheck("nail gun") && !tech.isRivets && !tech.isNeedles) || (tech.haveGunCheck("shotgun") && (tech.isNeedles || tech.isNailShot) && !tech.isRivets && !tech.isNeedles) }, // requires: "nail gun, not rotary cannon, rivets, or needles", @@ -5521,7 +5520,7 @@ const tech = { }, { name: "booby trap", - description: "60% chance to drop a mine from power ups
+46% JUNK to tech pool", + description: "50% chance to drop a mine from power ups
+36% JUNK to tech pool", isGunTech: true, maxCount: 1, count: 0, @@ -5537,7 +5536,7 @@ const tech = { x: 0, y: 0 }, 0) - this.refundAmount += tech.addJunkTechToPool(0.46) + this.refundAmount += tech.addJunkTechToPool(0.36) }, refundAmount: 0, remove() { @@ -5550,16 +5549,16 @@ const tech = { }, { name: "elephants toothpaste", - description: "mines catalyze a reaction
that yields foam bubbles", + description: "instead of nails mines catalyze a reaction
that yields foam bubbles", isGunTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("mine") && !tech.isMineSentry + return tech.haveGunCheck("mine") && !tech.isSuperMine && !tech.isRicochet && !tech.isNailRadiation && !tech.isNailCrit }, - requires: "mines, not sentry", + requires: "mines, not blast ball, ricochet, irradiated nails, supercritical fission", effect() { tech.isFoamMine = true; }, @@ -5567,6 +5566,27 @@ const tech = { tech.isFoamMine = false; } }, + { + name: "blast ball", + descriptionFunction() { + return `instead of nails mines fire bouncy ${b.guns[10].nameString('s')}` + }, + isGunTech: true, + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return tech.haveGunCheck("mine") && !tech.isFoamMine && !tech.isRicochet && !tech.isNailRadiation && !tech.isNailCrit + }, + requires: "mines, not elephants toothpaste, ricochet, irradiated nails, supercritical fission", + effect() { + tech.isSuperMine = true; + }, + remove() { + tech.isSuperMine = false; + } + }, { name: "laser-mines", link: `laser-mines`, @@ -5588,8 +5608,10 @@ const tech = { } }, { - name: "sentry", - description: "instead of detonating, mines target mobs
with a stream of nails for about 17 seconds", + name: "sentry gun", + descriptionFunction() { + return `mines fire one ${b.guns[10].nameString()} at a time
mines fire 50% more ${b.guns[10].nameString('s')}` + }, isGunTech: true, maxCount: 1, count: 0, @@ -5606,6 +5628,27 @@ const tech = { tech.isMineSentry = false; } }, + { + name: "extended magazine", + descriptionFunction() { + return `sentry mines fire 50% more ${b.guns[10].nameString('s')}` + }, + isGunTech: true, + maxCount: 9, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return tech.haveGunCheck("mine") && tech.isMineSentry + }, + requires: "mines, sentry", + effect() { + tech.sentryAmmo += 17; + }, + remove() { + tech.sentryAmmo = 33; + } + }, { name: "mycelial fragmentation", link: `mycelial fragmentation`, @@ -5626,25 +5669,28 @@ const tech = { tech.isSporeGrowth = false } }, - // { - // name: "cordyceps", - // description: "mobs infected by sporangium
resurrect and attack other mobs", - // isGunTech: true, - // maxCount: 1, - // count: 0, - // frequency: 2, - // frequencyDefault: 2, - // allowed() { - // return tech.haveGunCheck("spores") - // }, - // requires: "spores", - // effect() { - // tech.isZombieMobs = true - // }, - // remove() { - // tech.isZombieMobs = false - // } - // }, + { + name: "cordyceps", + // descriptionFunction() { + // return `mobs infected by ${b.guns[6].nameString('s')} have a 5% chance
to resurrect and attack other mobs` + // }, + description: "sporangium infect mobs they attach to
infected mobs resurrect and attack other mobs", + isGunTech: true, + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return tech.haveGunCheck("spores") + }, + requires: "spores", + effect() { + tech.isZombieMobs = true + }, + remove() { + tech.isZombieMobs = false + } + }, { name: "colony", description: "+50% sporangium discharge
40% chance to discharge something different", @@ -5805,7 +5851,7 @@ const tech = { }, { name: "siphonaptera", - description: "sporangium and shotgun hatch fleas
 ", + description: "sporangium and shotgun hatch fleas", isGunTech: true, maxCount: 1, count: 0, @@ -5825,7 +5871,7 @@ const tech = { }, { name: "nematodes", - description: "shotgun and sporangium hatch worms
 ", + description: "shotgun and sporangium hatch worms", isGunTech: true, maxCount: 1, count: 0, @@ -6209,7 +6255,7 @@ const tech = { }, { name: "surface tension", - description: "+43% foam damage
 ", + description: "+43% foam damage", isGunTech: true, maxCount: 9, count: 0, @@ -6417,7 +6463,7 @@ const tech = { }, { name: "alternator", - description: "+90% harpoon energy efficiency
 ", + description: "+90% harpoon energy efficiency", isGunTech: true, maxCount: 1, count: 0, @@ -6652,7 +6698,7 @@ const tech = { }, { name: "relativistic momentum", - description: "lasers push mobs and blocks
 ", + description: "lasers push mobs and blocks", isGunTech: true, maxCount: 1, count: 0, @@ -6737,7 +6783,7 @@ const tech = { }, { name: "specular reflection", - description: "+2 laser beam reflections
 ", + description: "+2 laser beam reflections", isGunTech: true, maxCount: 3, count: 0, @@ -6756,7 +6802,7 @@ const tech = { }, { name: "diffraction grating", - description: `+1 diverging laser gun beam
 `, + description: `+1 diverging laser gun beam`, isGunTech: true, maxCount: 9, count: 0, @@ -7794,7 +7840,7 @@ const tech = { }, { name: "time crystals", - description: "+200% passive energy generation
 ", + description: "+200% passive energy generation", isFieldTech: true, maxCount: 1, count: 0, @@ -8415,7 +8461,7 @@ const tech = { const loop = () => { if ((simulation.isChoosing) && m.alive && !build.isExperimentSelection) { const dmg = Math.floor(27 * Math.random()) * 0.01 - this.text = `+${(dmg*100).toFixed(0).padStart(2, '0')}% damage
 ` + this.text = `+${(dmg*100).toFixed(0).padStart(2, '0')}% damage` this.damage = 1 + dmg if (document.getElementById(`damage-JUNK-id${this.id}`)) document.getElementById(`damage-JUNK-id${this.id}`).innerHTML = this.text setTimeout(() => { @@ -8542,7 +8588,7 @@ const tech = { }, { name: "meteor shower", - description: "take a shower, but meteors instead of water
 ", + description: "take a shower, but meteors instead of water", maxCount: 1, count: 0, frequency: 0, @@ -8688,7 +8734,7 @@ const tech = { // }, { name: "discount", - description: "get 3 random JUNKtech for the price of 1!
 ", + description: "get 3 random JUNKtech for the price of 1!", maxCount: 1, count: 0, frequency: 0, @@ -8757,7 +8803,7 @@ const tech = { }, { name: "harvest", - description: "convert all the mobs on this level into ammo
 ", + description: "convert all the mobs on this level into ammo", maxCount: 1, count: 0, frequency: 0, @@ -8824,7 +8870,7 @@ const tech = { }, { name: "palantír", - description: `see far away lands
 `, + description: `see far away lands`, maxCount: 1, count: 0, frequency: 0, @@ -8855,7 +8901,7 @@ const tech = { }, { name: "motion sickness", - description: `disable camera smoothing
 `, + description: `disable camera smoothing`, maxCount: 1, count: 0, frequency: 0, @@ -8888,7 +8934,7 @@ const tech = { }, { name: "facsimile", - description: `inserts a copy of your current level into the level list
 `, + description: `inserts a copy of your current level into the level list`, maxCount: 1, count: 0, frequency: 0, @@ -8924,7 +8970,7 @@ const tech = { }, { name: "bounce", - description: "you bounce off things. It's annoying, but not that bad.
 ", + description: "you bounce off things. It's annoying, but not that bad.", maxCount: 1, count: 0, frequency: 0, @@ -8942,7 +8988,7 @@ const tech = { }, { name: "mouth", - description: "mobs have a non functional mouth
 ", + description: "mobs have a non functional mouth", maxCount: 1, count: 0, frequency: 0, @@ -8988,7 +9034,7 @@ const tech = { }, { name: "all-stars", - description: "make all mobs look like stars
 ", + description: "make all mobs look like stars", maxCount: 1, count: 0, frequency: 0, @@ -9049,7 +9095,7 @@ const tech = { // }, { name: "true colors", - description: `set all power ups to their real world colors
 `, + description: `set all power ups to their real world colors`, maxCount: 1, count: 0, frequency: 0, @@ -9264,7 +9310,7 @@ const tech = { }, { name: "not a bug", - description: "initiate a totally safe game crash for 10 seconds
 ", + description: "initiate a totally safe game crash for 10 seconds", maxCount: 1, count: 0, frequency: 0, @@ -9291,7 +9337,7 @@ const tech = { }, { name: "spinor", - description: "the direction you aim is determined by your position
 ", + description: "the direction you aim is determined by your position", maxCount: 1, count: 0, frequency: 0, @@ -9320,7 +9366,7 @@ const tech = { }, { name: "p-zombie", - description: "set your health to 1
all mobs die and resurrect as zombies", + description: "set your health to 1
all mobs, not bosses, die and resurrect as zombies", maxCount: 1, count: 0, frequency: 0, @@ -9342,7 +9388,7 @@ const tech = { }, { name: "decomposers", - description: "after they die mobs leave behind spawns
 ", + description: "after they die mobs leave behind spawns", maxCount: 1, count: 0, frequency: 0, @@ -9361,7 +9407,7 @@ const tech = { }, { name: "panopticon", - description: "mobs can always see you
 ", + description: "mobs can always see you", maxCount: 1, count: 0, frequency: 0, @@ -9433,20 +9479,6 @@ const tech = { if (this.count) m.look = m.lookDefault } }, - { - name: "iFrames", - description: "you are invulnerable
when you aren't taking damage", - maxCount: 1, - count: 0, - frequency: 0, - isJunk: true, - allowed() { - return true - }, - requires: "", - effect() {}, - remove() {} - }, { name: "disintegrated armament", description: "spawn a gun
remove your active gun", @@ -9499,7 +9531,7 @@ const tech = { }, { name: "encryption", - description: "secure tech information
 ", + description: "secure tech information", maxCount: 1, count: 0, frequency: 0, @@ -9549,7 +9581,7 @@ const tech = { }, { name: "score", - description: "Add a score to n-gon!
 ", + description: "Add a score to n-gon!", maxCount: 1, count: 0, frequency: 0, @@ -9588,7 +9620,7 @@ const tech = { }, { name: "music", - description: "add music to n-gon
 ", + description: "add music to n-gon", maxCount: 1, count: 0, frequency: 0, @@ -9605,7 +9637,7 @@ const tech = { }, { name: "performance", - description: "display performance stats to n-gon
 ", + description: "display performance stats to n-gon", maxCount: 1, count: 0, frequency: 0, @@ -9661,7 +9693,7 @@ const tech = { }, { name: "defragment", - description: "set the frequency of finding JUNKtech to zero
 ", + description: "set the frequency of finding JUNKtech to zero", maxCount: 1, count: 0, frequency: 0, @@ -9701,7 +9733,7 @@ const tech = { // }, { name: "pitch", - description: "oscillate the pitch of your world
 ", + description: "oscillate the pitch of your world", maxCount: 1, count: 0, frequency: 0, @@ -9738,7 +9770,7 @@ const tech = { }, { name: "lighter", - description: `ctx.globalCompositeOperation = "lighter"
 `, + description: `ctx.globalCompositeOperation = "lighter"`, maxCount: 1, count: 0, frequency: 0, @@ -9755,7 +9787,7 @@ const tech = { }, { name: "rewind", - description: "every 10 seconds rewind 2 seconds
 ", + description: "every 10 seconds rewind 2 seconds", maxCount: 9, count: 0, frequency: 0, @@ -9778,7 +9810,7 @@ const tech = { }, { name: "undo", - description: "every 4 seconds rewind 1/2 a second
 ", + description: "every 4 seconds rewind 1/2 a second", maxCount: 9, count: 0, frequency: 0, @@ -9798,7 +9830,7 @@ const tech = { }, { name: "energy to mass conversion", - description: "convert your energy into blocks
 ", + description: "convert your energy into blocks", maxCount: 9, count: 0, frequency: 0, @@ -9830,7 +9862,7 @@ const tech = { }, { name: "level.nextLevel()", - description: "advance to the next level
 ", + description: "advance to the next level", maxCount: 9, count: 0, frequency: 0, @@ -9916,7 +9948,7 @@ const tech = { }, { name: "missile launching system", - description: "fire missiles for the next 120 seconds
 ", + description: "fire missiles for the next 120 seconds", maxCount: 9, count: 0, frequency: 0, @@ -9941,7 +9973,7 @@ const tech = { }, { name: "grenade production", - description: "drop a grenade every 2 seconds
 ", + description: "drop a grenade every 2 seconds", maxCount: 9, count: 0, frequency: 0, @@ -9994,7 +10026,7 @@ const tech = { // }, { name: "Sleipnir", - description: "grow more legs
 ", + description: "grow more legs", maxCount: 1, count: 0, frequency: 0, @@ -10081,7 +10113,7 @@ const tech = { }, { name: "🐱", - description: "🐈
 ", + description: "🐈", maxCount: 1, count: 0, frequency: 0, @@ -10181,7 +10213,7 @@ const tech = { }, { name: "posture", - description: "stand a bit taller
 ", + description: "stand a bit taller", maxCount: 1, count: 0, frequency: 0, @@ -10200,7 +10232,7 @@ const tech = { }, { name: "rhythm", - description: "you oscillate up and down
 ", + description: "you oscillate up and down", maxCount: 1, count: 0, frequency: 0, @@ -10221,7 +10253,7 @@ const tech = { }, { name: "pareidolia", - description: "don't
 ", + description: "don't", maxCount: 1, count: 0, frequency: 0, @@ -10290,7 +10322,7 @@ const tech = { }, { name: "prism", - description: "you cycle through different colors
 ", + description: "you cycle through different colors", maxCount: 1, count: 0, frequency: 0, @@ -10444,7 +10476,7 @@ const tech = { }, { name: "growth hacking", - description: "increase combat difficulty by 1 level
 ", + description: "increase combat difficulty by 1 level", maxCount: 1, count: 0, frequency: 0, @@ -10461,7 +10493,7 @@ const tech = { }, { name: "stun", - description: "stun all mobs for up to 8 seconds
 ", + description: "stun all mobs for up to 8 seconds", maxCount: 9, count: 0, frequency: 0, @@ -10506,7 +10538,7 @@ const tech = { }, { name: "re-research", - description: `eject all your ${powerUps.orb.research(1)}
 `, + description: `eject all your ${powerUps.orb.research(1)}`, maxCount: 9, count: 0, frequency: 0, @@ -10544,7 +10576,7 @@ const tech = { }, { name: "black hole cluster", - description: `spawn 30 nearby black holes
 `, + description: `spawn 30 nearby black holes`, maxCount: 1, count: 0, frequency: 0, @@ -11049,7 +11081,7 @@ const tech = { isVacuumBomb: null, renormalization: null, fragments: null, - isEnergyDamage: null, + energyDamage: null, botSpawner: null, isBotSpawnerReset: null, isSporeFollow: null, @@ -11323,5 +11355,7 @@ const tech = { isGunChoice: null, railChargeRate: null, superHarm: null, - isZombieMobs: null + isZombieMobs: null, + isSuperMine: null, + sentryAmmo: null, } \ No newline at end of file diff --git a/style.css b/style.css index 7b7565c..9653fee 100644 --- a/style.css +++ b/style.css @@ -85,7 +85,6 @@ td { .key-input { padding: 3px 8px; border: 2px solid #333; - /* border-radius: 50px; */ background-color: #fff; text-align: center; } @@ -98,7 +97,6 @@ td { width: 15px; padding: 0px 2px; border: 2px solid #333; - /* border-radius: 50px; */ background-color: #fff; text-align: center; } @@ -165,21 +163,15 @@ summary { top: 50%; left: 50%; transform: translate(-50%, -50%); - padding: 10px 1px; - /* gap: 1px; */ margin: 0px; border: 0px; z-index: 12; max-height: 99vh; font-size: 1.3em; - display: grid; grid-template-columns: repeat(3, 384px); align-items: stretch; - /* align-items: start; */ - /* align-content: start; */ - /* grid-auto-rows: minmax(auto, 140px); */ visibility: hidden; opacity: 0; transition: opacity 0.25s linear; @@ -192,13 +184,9 @@ summary { } .choose-grid-module { - /* padding: 5px; */ line-height: 160%; - /* border-radius: 8px; */ background-color: #fafcfd; font-size: 0.75em; - /* border: 1px #444 solid; */ - /* box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.25); */ } .choose-grid-module:hover { @@ -216,15 +204,11 @@ summary { .pause-grid { padding: 2px; margin: 0px; - display: none; grid-template-columns: 384px; - /* grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); */ grid-auto-rows: minmax(auto, auto); align-content: start; align-items: start; - /* align-content: space-between; */ - /* gap: 10px; */ z-index: 2; font-size: 1.3em; } @@ -259,19 +243,9 @@ summary { } .pause-grid-module { - /* margin: -1px; - padding: 10px; line-height: 160%; - border: 1px #333 solid; - border-radius: 8px; - background-color: #fff; - font-size: 0.65em; */ - /* padding: 5px; */ - line-height: 160%; - /* border-radius: 8px; */ background-color: #fafcfd; font-size: 0.75em; - /* border: 2px #444 solid; */ } .pause-eject .card-text { @@ -281,24 +255,14 @@ summary { #experiment-grid { display: flex; justify-content: center; - /* align-content: space-between; */ - /* align-items: start; */ - /* align-items: stretch; */ - /* padding-top: 10px; */ - /* padding: 16px; */ padding: 10px 1px; margin: 0px; border: 0px; background-color: var(--build-bg-color); - /* background-color: #444; */ - display: none; - /* grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); */ grid-template-columns: repeat(auto-fit, 384px); grid-auto-flow: row; grid-auto-rows: minmax(auto, auto); - /* gap: 1px; */ - position: relative; bottom: 0px; z-index: 10; @@ -311,14 +275,9 @@ summary { } .experiment-grid-module { - /* padding: 0.1em; */ - /* padding: 5px; */ line-height: 160%; - /* border-radius: 8px; */ background-color: #fafcfd; font-size: 0.75em; - /* border: 1px #444 solid; */ - /* margin: -0.5px; */ } .experiment-grid-hide { @@ -337,28 +296,22 @@ summary { } .card-background { - /* width:288; */ height:340px; background-size: contain; background-repeat: no-repeat; display: flex; justify-content:flex-end; flex-direction: column; - /* margin: 5px; */ } .card-text { background-color: rgba(255,255,255,1); - /* border-radius: 8px; */ - /* padding: 11px 13px; */ padding: 0.5em 1em; - /* border-top: 1px solid var(--build-bg-color); */ border: 1px solid #444; margin-top: -1px; margin-right: -1px; font-size: 0.92em; min-height: 88px; - /* height:78px; */ } .cancel-card { text-align: center; @@ -369,7 +322,6 @@ summary { margin-top: -1px; margin-right: -1px; padding: 1px; - line-height: 160%; background-color: #fafcfd; } @@ -385,10 +337,39 @@ summary { } -/* media rules for smaller screens -4->3 at 1550 -*/ -@media (1500px <= width < 1950px) { +/* keeps 5 columns at 1440px */ +@media (1710px <= width < 1950px) { + .experiment-grid-module, .choose-grid-module, .pause-grid-module { + line-height: 143%; + font-size: 0.68em; + } + #experiment-grid, #choose-grid, .pause-grid{ + grid-template-columns: repeat(auto-fit, 340px); + } + .card-background{ + height:290px; + } + .card-text { + min-height: 75px; + } +} +@media (width < 1710px) { + .experiment-grid-module, .choose-grid-module, .pause-grid-module { + line-height: 139%; + font-size: 0.58em; + } + #experiment-grid, #choose-grid, .pause-grid{ + grid-template-columns: repeat(auto-fit, 285px); + } + .card-background{ + height:240px; + } + .card-text { + min-height: 64px; + } +} +/* keeps 4 columns at 1440px */ +/* @media (1500px <= width < 1950px) { .experiment-grid-module, .choose-grid-module, .pause-grid-module { line-height: 150%; font-size: 0.72em; @@ -417,59 +398,6 @@ summary { .card-text { min-height: 75px; } -} - -/* default -.experiment-grid-module { - line-height: 160%; - font-size: 0.75em; -} -.card-background { - height:340px; -} -#experiment-grid{ - grid-template-columns: repeat(auto-fit, 384px); -} -*/ - - - - - -/* .no-image-cards{ - border: 1px solid #444; -} */ -/* .card-text:hover { - background-color: #efeff5; -} */ - - -/* .build-field-selected { - background-color: hsl(193, 100%, 75%); -} - -.build-field-selected:hover { - background-color: hsl(193, 100%, 68%); -} - -.build-gun-selected { - background-color: hsl(218, 100%, 81%); -} - -.build-gun-selected:hover { - background-color: hsl(218, 100%, 76%); -} - -.build-tech-selected .card-text{ - background-color: hsl(253, 100%, 84%); -} - -.build-tech-selected:hover .card-text{ - background-color: hsl(253, 100%, 81%); -} */ - -/* .experiment-grid-module:hover .card-text:not(.build-tech-selected, .build-field-selected, .build-gun-selected) { - background-color: #efeff5; } */ .experiment-grid-module:hover .card-text { @@ -495,17 +423,13 @@ summary { } .experiment-grid-disabled { - /* opacity: 0.5; */ background-color: var(--build-bg-color); - /* color: rgba(0, 0, 0, 0.9); */ color: #000; opacity: 0.25; - /* transition: background-color 1s, color 1s; */ } .experiment-grid-disabled[data-descr] { position: relative; - /* opacity: 0; */ } .experiment-grid-disabled[data-descr]:hover::after { @@ -535,7 +459,6 @@ summary { padding: 10px; border-radius: 8px; border: 2px #333 solid; - /* background-color: #eee; */ background-color: #fff; } @@ -670,12 +593,9 @@ summary { transition: opacity 0.25s; pointer-events: none; user-select: none; - /* white-space: pre; - font-family: 'Menlo', 'Monaco', monospace; */ } /* color for in game console output */ - .color-text { color: #000; } @@ -697,32 +617,6 @@ summary { background-color: #ff0; padding: 3px; } -/* colors for pause, selection and experiment */ - -/* #text-log { - z-index: 2; - position: absolute; - bottom: 4px; - left: 6px; - line-height: 130%; - font-size: 1.2em; - color: rgb(237, 15, 148); - transition: opacity 1s; - pointer-events: none; - user-select: none; -} - -.color-text { - color: rgb(0, 164, 164); -} - -.color-symbol { - color: #fff; -} - */ - - - .color-f { color: #0ad; @@ -769,44 +663,11 @@ summary { } .color-dup { - /* color: hsl(243, 100%, 38%); */ font-variant: small-caps; letter-spacing: 1px; text-shadow: 1.5px -1.5px hsla(243, 100%, 38%, 0.2); - /* text-decoration: underline; */ } -/* .mob { - text-shadow: 0px 1px, 1px 0px, 1px 1px; -} */ - -/* @keyframes bounce-munch { - 0% { - vertical-align: -40px; - } - 50% { - vertical-align: 4px; - } - 100% { - vertical-align: 40px; - } - } */ - - -/* .color-bot { */ -/* background-color: #eee; */ -/* color: #555; */ -/* letter-spacing: -1.5px; */ -/* text-transform: uppercase; */ -/* font-variant: all-caps; */ -/* text-decoration: underline solid; */ -/* border: 1px solid #000; */ -/* padding: 10px; */ -/* border-radius: 10%; */ -/* font-family: Lucida Console, Courier, monospace; */ -/* color: #777; */ -/* } */ - .color-cloaked { letter-spacing: 2px; animation: cloak 6s linear infinite alternate; @@ -832,10 +693,6 @@ summary { .color-laser { color: #f02; - /* color: #000bff; */ - /* color: #83f; */ - /* text-shadow: 0px 0px 2px rgba(255, 0, 119, 0.3); */ - /* text-shadow: 0px 0px 1.5px rgba(0, 0, 0, 1), 0px 0px 5px rgba(255, 0, 0, 1); */ font-weight: 100; letter-spacing: -0.8px; } @@ -852,12 +709,9 @@ summary { .color-worm { color: #fff; text-shadow: 1px 0px 2px #234; - /* letter-spacing: 2px; */ } .color-defense { - /* color: */ - /* text-shadow: #FC0 1px 0 10px; */ background-color: hsla(227, 9%, 71%, 0.279); padding: 2px; border-radius: 4px; @@ -882,18 +736,9 @@ summary { .color-junk { letter-spacing: 1px; - /* font-weight: 100; */ font-family: Lucida Console, Courier, monospace; - /* transform: rotate(-90deg); */ } -/* .color-rewind { - background-image: linear-gradient(to left, #fff, #bbb); - border-radius: 5px; - padding: 2px; - letter-spacing: 1px; -} */ - .color-r { color: #f7b; letter-spacing: 1px; @@ -993,20 +838,6 @@ summary { margin-bottom: -0.5px; } -/* .circle-grid-shadow { - width: 43px; - height: 43px; - border-radius: 50%; - display: inline-block; - margin-bottom: -15px; -} */ - -/* .circle-gun-tech { - box-shadow: 0 0 0 3px #025; -} */ - - - @keyframes pulse { 0% { border-radius: 0%; @@ -1017,31 +848,14 @@ summary { } } -/* .circle-grid-gun { - width: 10px; - height: 10px; - border-radius: 50%; - display: inline-block; - margin-bottom: 0px; - background: #025; - box-shadow: 0 0 0 8px hsl(253, 80%, 67%); -} */ - .field { background-color: #0cf; } .tech { - /* background: rgb(116, 102, 238); */ - /* background: hsl(253, 57%, 52%); */ background-color: hsl(255, 100%, 71%); - /* background: hsl(282, 100%, 64%); */ } -/* .grey { - background: #afb6c2; -} */ - .gun { background-color: rgb(0, 80, 218); } @@ -1051,7 +865,6 @@ summary { } .research { - /* #f84 #f99*/ background-color: #f7b; } @@ -1059,7 +872,6 @@ summary { animation: alt 8s linear infinite alternate; font-weight: 400; letter-spacing: 1px; - /* color: rgba(0, 0, 0, 0.5) */ } @keyframes alt { @@ -1096,35 +908,11 @@ summary { } .color-coupling { - /* animation: coupling 1000ms linear infinite alternate; */ - /* animation: vibrate 500ms linear infinite alternate; - display: inline-block; */ - /* text-shadow: 0px 0px 2px #0cf; */ - /* text-shadow: 0px 0px 1.5px #0cf; */ text-shadow: 0px 0px 1.5px #0cf; - /* color: hsl(255, 82%, 59%); */ letter-spacing: 1px; font-weight: 100; } -/* @keyframes coupling{ - 0%{ - letter-spacing: 0.5px; - } - 100%{ - letter-spacing: 1px; - } - } - -@keyframes vibrate{ - 0% { - transform: translateY(-0.25px) - } - 100% { - transform: translateY(0.25px) - } -} */ - .box { padding: 3px 8px 3px 8px; border: 2px solid #444; @@ -1157,13 +945,11 @@ summary { } .entanglement { - /* color: #456; */ font-size: 1.1em; font-weight: 100; text-align: center; letter-spacing: 10px; border: none; - /* border-radius: 50%; */ background-color: #efeff5; } .flipX { @@ -1299,16 +1085,4 @@ summary { .link:hover { text-decoration: underline; - /* color: #0ad; */ -} - -/* #console { - font-family: monospace; - font-size: 1.5em; - width: 300px; - height: 50px; - position: absolute; - bottom: 10px; - right: 10px; - z-index: 3; -} */ \ No newline at end of file +} \ No newline at end of file diff --git a/todo.txt b/todo.txt index 514c3ff..df9d758 100644 --- a/todo.txt +++ b/todo.txt @@ -1,29 +1,29 @@ ******************************************************** NEXT PATCH ************************************************** -card images and text scale based on browser width for smaller screens +tech: cordyceps - sporangium infect mobs, making them fight for you as zombies -tech Zectron - super ball can damage you, but they do more damage to mobs - superBall bullets are converted to run off generic b.superBall() +tech: blast ball - mines fire super balls +tech: extended magazine - sentry fires 50% more shots + sentry works with foam, nails, or super balls -sneakers - after taking damage if sneakers are low on life they teleport to a random point from the player's history and they sneak attack again -sneakBoss - a large sneaker that can hide several times before it dies +dark patterns - stacks to 9 + 38->15% damage, 53->15% JUNK +electronegativity - stacks to 9 + 0.12->0.1% damage per energy bug fixes *********************************************************** TODO ***************************************************** -tech: cordyceps - sporangium infect mobs, making them fight for you - zombies might attack player if there are no mob targets - !! needs to explore when there are no targets - !! mechanics are confusing - !! still needs testing for balance - it's targeting player even when there are mobs -tech - all mobs return as zombies? +super-bot -Now that super balls are generic maybe something else should produce them - super-bot - molecular fabricator - how to aim? - shotgun - too similar to super ball gun +tech - shotgun triple shot, but a bit longer of a delay + +tech - after standing wave runs out of energy from blocking, gain a buff + buff: defense, damage? + +make super balls with Zectron deflectable with field + but is there a simple way to do this? set mob health bar colors based on status effects? make mob damage immunity a mob status effect? @@ -87,6 +87,8 @@ hookBoss fires a hook that pulls player towards it finalBoss add synergies between modes: new modes: + something that needs to be killed quickly + if you don't kill it boss gets a shield rotating quadrant immunity shield, can't take damage from that quadrant maybe also attack player near that quadrant but how to tell the angle of incoming damage @@ -1136,7 +1138,7 @@ possible names for tech ******************************************************** CARS IMAGES ******************************************************** -process: discord midjourney prompts -> "pixelmator pro" -> adjust color, repair, scale to 384x256, export PNG -> webP? -> place in /img folder +process: discord midjourney prompts -> "pixelmator pro" adjust color, repair, scale to 384x256, export PNG -> webP? -> place in /img folder make n-gon a progressive web app to manage image downloads, cache wave function collapse opens the pause menu after it triggers alternate reality this is actually good, maybe reuse this code to get pause menu to open at any time @@ -1155,16 +1157,12 @@ if pause is pressed while selecting power ups, display pause menu on top of sele ***major themes missing*** ***maybe redo*** dynamical systems - harpoon gun - Eiichiro Oda --niji nail-bot homeostasis heuristics thermal runaway - infrared maybe? redo the energy tech images with by Laurie Greasley now that you can use --ar 3:2 --stylize 1000 and photo repair - in general too many black background - redo fractal tech with white background ***past style themes*** field emitter - isometric, clean white robot spherical gun turret on bird legs, blender 3d, style of artstation and behance, Disney Pixar, cute standing wave - concentric transparent blue geometric circles science