From c47d86064be23bc804d046437b273f4a73d997f2 Mon Sep 17 00:00:00 2001 From: landgreen Date: Thu, 4 Jan 2024 16:38:52 -0800 Subject: [PATCH] winter vacation update mob health tech tech: cascading failure - +222% damage to mobs below 25% health tech: yield stress - +55% damage to mobs at maximum health cloaking tech: topological defect - +88% damage to mobs at maximum health harpoon tech: brittle - +88% harpoon/grapple damage to mobs at maximum health cloaking buffs 50->66% defense while cloaked recloak 0.25s faster simplified cloaking field graphics boson composite drains much less energy while moving through mobs and shields fixed bug where mines and egg mobs were colliding with player while intangible patch no longer drains energy when you heal on cloaking metamaterial absorber gets 17->22% chance to spawn a power up for each mob alive no-cloning theorem changes to 45->40% duplication and 2->1% duplication loss on killing a mob finalBoss phases: new: slow zone, antigravity pulse nerfed: laser, black hole, orbitals buffed: oscillation, mobs improved graphics: boulder Hilbert space has a skin. 99->142% damage increase, but randomize tech after taking damage Higgs mechanism has a skin. +45->77% fire rate, player can't move while firing induction furnace gives +77% harpoon/grapple damage for 8 seconds after picking up a power up collider 50->100% chance to combine and randomize power ups quenching gives more bonus max health at high difficulty level (maybe around 30% more health) accretion gives 5->7 heal power ups dynamo bots follow player much closer when you have many of them scrap-bots don't follow the player as accurately or as quickly scrap bot duration 13->15 seconds JUNK tech: planned obsolescence - make 100 scrap bots that last for about 30 seconds community map dojo by werid_pusheen fixed by Cornbread 2100 hard mode gets 1 less heal at the start hard and why difficulty don't begin with starter mobs hopBullet mobs last 2 seconds less time adjusted button heights on train station level to be consistently the same height --- img/brittle.webp | Bin 0 -> 64236 bytes img/cascading failure.webp | Bin 0 -> 62372 bytes img/field/field emitter25.webp | Bin 0 -> 32980 bytes img/topological defect.webp | Bin 0 -> 56516 bytes img/yield stress.webp | Bin 0 -> 58264 bytes js/bullet.js | 599 ++++++++++----------------------- js/index.js | 1 - js/level.js | 526 +++++++++++++++++++++++++++-- js/mob.js | 97 +++++- js/player.js | 288 ++++++++-------- js/powerup.js | 12 +- js/simulation.js | 2 +- js/spawn.js | 200 +++++++++-- js/tech.js | 273 ++++++++++----- todo.txt | 154 +++------ 15 files changed, 1312 insertions(+), 840 deletions(-) create mode 100644 img/brittle.webp create mode 100644 img/cascading failure.webp create mode 100644 img/field/field emitter25.webp create mode 100644 img/topological defect.webp create mode 100644 img/yield stress.webp diff --git a/img/brittle.webp b/img/brittle.webp new file mode 100644 index 0000000000000000000000000000000000000000..85dd2fe0f4e2991f2985fa1081fdd509d291d223 GIT binary patch literal 64236 zcmV(xK%VY6d+G1=z5f6IdmjG}|NpBOtj>IYJM4=eOKt!CC7%WSKlz8@=j`|Q zuVDWN_-Ewb*8jhMN&cn(EBsf{_p-mM{zmwd@&C!cv44pDkNxTS2l!vqAD(|@{|WuW z`tSXp^}l0(B>tKCP5rC)Z`l9CKOX*-{tNrR`Y-Drx4&S&hJO?OZ~bTdSNCu1Kl;Da z{Cav9_s{eH;6L4er19IxKcWAH{_XpX`_1$V>d(u6x_@y0E&hZ1&;H-{9~C}z{vZ3- z`49BJ+kg1{jrlk8fA4?TziU6V|LObz{we&2`tSBX@t@7n*YQ21N?LOfA_!cU*mtze|rDf{?G8&^*{5!-2cvhzW){f`~By^ zugX89|Cj#j{#*Vx_^fA$DpX&xoG zC^;qcUO;<#4BIVqaZqcvzNMTZ%}QXv{rbK0?|fWn%7{)onw@GEBX{s6!4WD3M>=x^ zGdw^5mhdS+?W=nTUo$0G-Wj@7(QWp>f2b<^gbL5Ww)X9HXCkfT7Y{cMM9XSVe^NdJ zbiC#acS|X6YE6+*2X&|#kjh;x^DjT4R_uyLsWES=?E9jA&a#%YDZ} z6Hqo|S_(JqV5saKXZSRcNJDR}F~)7grGdx8l=4@R2+IiCQJDP926>;}ohQ~jV`t#@ zk$Mi!oH|a^_v(*wy=zbW1zKN9FK0geF!8Jp$w?dgo4y?I45)0E?os3NYWQgr6}|-oMbG^gyY)B^WXU0HYckD&>M$34m%>tGLz8t?vFD|EZsl=dsu9Iv@E zm^>@Ax`~tMC16o6##{m6h)Ch$^MZNpiBgP8Ma}owRG!tYScr&XoUHL{k-zW0Wy&d8 zk8e~*q=X9%YBxFyR<@d03q9W8<9I2J;*yC=v!*Ez+0QWnJ^idjcvIqpr2_!|a@P_s z1MC0H>J!>&wlyha3cP;j0@M5Sd<$f}Gr_Nmm$m6%=qkK2%R+f5Pbwz#NTl5@bgq;C zv*7HnD|I?#>&<}F+u!Z|YxZy#&eiz841EA^m@*d?D_YX2H;b8QS8Bbyo~V~Hd?<{4 zSs|~JMj?ZAqLHJC8^-mYFkKgil}P!_`~=rS2!;(Pch?kb6VAQuwhL1dROOJ6 z5q3bP)y-l6wpnnJZ#JGY&hLxZPe7LMt0gL$Z6*t~!E;dL$i4_|vi*qF76jB*h>*^s zP}T0O?}el+F0#~JwjwK6{-T}yl2Vh1cOgY7Jq*C|2p_dv{5=-l zylk&^y)Pbhek&INeYfHDgM8&OiU($z@jmGF(i-E3ka6ArJiKc%3r8`Ocn|O^*OTi`*(O ze)`%sGR#J{q^6IAHk@_%trj&z*>J&v$A}s=IRgh}Z%bP`yoazx!Bayn59ZN2iN!{4 zRRj5>$B&tG$hzfYvP|FOrL7^xh{Si$Z~S}RVX+!5@&#<|SY38E7uCryl95@1VFYqlt@;OJ zeW~{DKP$8F7-f+^~#`7MzerjEpHZn-GxZdf?gx(!}|PS==crYzhT=M;@UuNEa3E!{Trn)52;8xOmI5kfT9kZ+wra#f~u~a5u zVLDVG1)?Dy_Qvn9076(e*Bv<{Ci@DBHG6kpoGZAV>>M81Z?Wnm?FEp^}jWDl-Y!=UG# z{1?PP6I>P=bvGKaMiVrF8OLIFZD{Zb9^l!#-uB&uSOwldoIPCh8!s*P@X|TR>w9bv z#uxya=3YZg{zHT6MObFe=$=>O+BS2=V~bK)3B7zo0C??@mg6HE~S~2`Nl(&}aX9TulCQNW!7o2{{ zJO<`nWX@Zp%#DSA3tGH>%q>1+R0r!ahJf{Px+Y6n_$6Cbp5Q7qASJshNU3sD4{3(* zhd2>e>HaNdK46xmt96jZrf0{DeA}{Y1?U`h-R=MY{{R0%Zi%bzI^OqDzb|=u0uzAM z=>F9%G$BEaK43c;?rt#bz8UfKVj_q~HaRnaAY3Uc0kA5WTPRpJEm-i$Y9(5b!ZZ;1 z=A9Flp6J;n4F-Zkdf(&lSAJla%9i&N6lJ2QN-S?8HvU);7{5s}`{VhUMoVAofCY&5 zcAFIAgb^uRQZSe)mJ&3s$;uLb{>D7TYfmRWtw2(AMs2qAH5(~p|B-p&6_@de_{VnE zJ~)Q_#;65w32EPPr8(t*d?y~B_jG{00l2VdbXrUw992*FXnKAqpl|8XM*WMq|X+=iPCuWq_j45DOVVQDP$?gtlV|oDFN;OzS zDKycB`;&;1xXa`5<&e+dAS;F>Y)g;*eco6Dg!tpL*O60NT~gdU{~4aTr(^(AKtoC6 zfgR$&yVmqPH-g&xM6OomsJ4^0z)d+=6yzi8-UAbyOw8Ri3P)_gDP8CIAnwS0HL?4R zK$FXzl9W{aIBW)uc}Pc7)Fy$M{fs096eqrr^IsV6%izBt8OR7t?!U3C@-Qia41`n1 z70$dzHC&>oLD(u;X)Q>Ua`XWk^`yXY6`FydKO^eOF{AOGMTQ?LtlLB`*+i=-1;hO@ zXxc5SGI)h{YqSR_GS;S}U}hM`eL?_I^RwF^C;1&erxF;!3$e(zY@@mKvr;q52P*U3wfOnyvsQ9lvdvi z>_x^jtIxbO7%zsm^ES9W6bFop)ZlB@nx=I*dgNg-{diwa8n;nHs+b7d zf2H%cBEtmJ8F{)E(=o|ZzQ#K7ayaPQb)d>Kuxq#n*ZBHFV+;SDg$2EOlou->dDg)b zLj_-nmvY*F+bsK;#33Q=ZS4bc0nyOA0+6JoFOc;>(8_ zzeAV{J+ItURkJ9((;b>oUVLhDDMC9!>FT`wp@_ItO-k9Z%6aZ5km7E{SDTvMyNc)3z-Ci%qM0qqzr z12ei@iiq|ry)nR|LH!L^uf81CvxFq+o`rH6-%_a%IEtds4u6R;A?^2!-}w)}p=*3~ zd%^NAR%*i|C}Fd4S_<8*J<)EoS}%bVvd(JKIfB=L;-;-d{@};aMGu744~E(~R609-U>Su@g;xvyF-TBbE0#KiLf?siIZ>zywMC#u z@JBZn1KlFQCpc)jz5xu$mthE$JC{* z)LIHG7Uu+28JS|7xi};=|B=9aZu2PBRADKiuAz#vRl8P?rHdwq%a@eD8!CE%Ca_Xd zBG0HahTl!KpDD)w(t?KF!ynzlxp$6R&o_A`xM*Ox0s_{{B)0_Wtxc3Gf7?t~f^XD0 zL~T^m8yO3I5M6-)-F7#y4_rXQ8UdIZ!f(F!J1OGbREICkJTv0S}iEFLqnkH@8R3MW8jQQ^OxA~evH$j^kyqO`8gF&5|p$GK~ zp_&5}$6#EEAl$0A60g>Hgvw9N!LLKOycPS_v33R9hbY!+3nvU3?f!-=@}CsXEPO8+ zJ%&`4KBcGJsQlmhg#;@}Gg=g=tt_)5W}PiRmvDwv_RdiWu5fho*WD!W!IU2tffvVxe!3v$$`LW-wsaS^SAwp)HyOF79|8PDCmF z@3IzFt?#4~Lf)+Mw&qMgjr07c{G0xGJ*}APc;cO_Ikc zzh||><8uAluAD^I_>xt_+fTgL4JizRfnh5D1!Ft7GG?l7zf7Gra;&@=E0bBM)OJCR z@u)L)D8ceqSKjD^&nRMM>AT-;QrO%PuppNbOJ2kL_OXftzN~{Isnp|zl(%KuNnr%4 zEZ*(e&3-iG>Z9NTEy~J8u3XlIF`@x3zmTzEd;$#P+nQR2;KQB!8*gT=ON95)8)nl=vcmGP;tG$Ttv7MEZMwCQh3F~P0fLmW;&4^3C@^YW6}`^M(6 zNB@VGLrB8efBmdIw=+QHSrHQ;^7ckQZ;+hPU|5V)9;*ZNs%E9HdG9w=Fjb^+S0;PA zmMgZFuRu(><_s0Icx?xHtXS4vm&n;+ok8HJS7P!B7@&mt zqNs}!Otz!%hSzzKD(8#S|3-FwM5%oT|G? zeycjb+bt&rr-eiDwquCgzKFr{xvMNxMl{_(mQQuPI29W6zo>^slJ3!g)2oUvhdL<@ zBhTu_vwIg4f+B4XZ;`>9fI3EE&luieg!wO7hg>Z1qGo&F|Czy@Qk1UC(UMLY8E*cUuF>ro5U0mN0 zIOxaxOoD3<>s6l|hW#%^&WeY=h*+tbM? z5b42LC5Y%X`K`IqDa=U|OHCqe1E;QT8%HTC+@x3N9v^f_l1fI8GzR9vWxBo^&FL@q zJ)~8a+Tv$r;GPX#v09@5pPg@578PJ;#|a?n4n8Fw-UP0@_On6zQDy^95JOGl!ZRSM;6>@i8+v zf9q)q*+M!muV&+)`!(D4J6fKVz6!eMsF=3*{+{4~o^|xj1I{#9jm>X)gr*VAMip}$ z5=@~K?tgru-U!JO;%GL-bb?dA9qmLF3oL0H)k>_HWfiZu51rD_DtyIG_fZrF+fs(@ z{F)5Edp6-W$C_LUB&p^r)P1L>1lK`U7hr0`Wv9DvI5|}eFhnKYYg*$EO8Gf?@*~ff z6M(`Y4sCr8PChT`S^~)}1i;tlEFWlis2;XTDvWi+c@d?GcYuutlF$(uosBJ_9{(_&V87?(Q>VysE2cS8}G)owES-Ez=$u{Ip0OcnH(G z{(nrTVO5_CULQIP-z_v$&6gY2Rv&_6-EO^q(QO8*{P<*9!dPJ*fk%S@5J)lz?SGK2EbET#AU-TjovN z&1|zTm}eo1Ta6))L`H782PofL6^)~O0Sw^_u!;7qg&)}tk7k7JQhkTEK8MKn;sL;% z_-NA#SdFY6e!5e;GH=NAW!~sgfvAdc{rwTHS$^P4K1$L|W~q7W{atJA zn-~y!L$f^*0&Yukz^dQb5JXB;|A2@)xA|_7k=I=|);Xq0NL4Senpsmq=#}#mX`rWN zTT*$wbsSefr_WUVKUd+|TH&SbbDL|W2^iwThV@5f}inK$E;G6w{WesET7CX^rpbm}!4&Pfx9=*iny8cR5c4aZAS*sHY%7HNF%k(vL;?OqUNi>ZKQidRn&>c>h zm`)gQY}pYcU<#}2Ju)eAWWil;&m|E99rw?##Wt>;FdY1kh~3xN0wgTf^8u8jzju?D zk!9)&v$u}N1fn~P0QIN_K62n5QcZsQ1&*-_t~4pAsqFo%BZpUhFFb1*vu!2`dK&6 z$WftH*22D81n{?e_sy#iO~*y0jDaTD6DWGjf?y!^cH11(uWjq)qy#)1NJp`v;?@?b z@l>{E=4JlpN--d`%OVI#U!Idet-q??vA92NARi(c3=%CJwU{)g4hEnzVU14Clg0aS z0%xTN&8}IxHAae&JD;$q4{Q@XUSg8b%;8KjjV6oWqa{aRki`Vt5)HyR8nBkXn6IV8{{CH|T_t=7g(2%W#KZ+hjYk7}B{qFe&kw4g%lc@ zdcmx%#4~3q4Z%awtzA1)Je~wGJT9a8$^|~%8A|wbw&k10My=pq^*W6UR$^u- z5mi{NkjGG2b*SZh802^N|4Q`iKtz3j@;(Z+v*^ujVP45~`2)a+N`6Xp4OpTscYJY1 z>QOJJ4_|kxkocil{n6u%F3P*H0x9Q;sm2^AL1loP@b43N2=LTh_sQS*T5sYIm$3`w zfMvLj$M~ejZfS0!T+|%oT6Zi;{2w=K)vnJ3BYl}8(z1%h{+J%w0V8}FJ^u6BI*Jxg zsbGkEcpHEp&dB>a^eoJ&I964xG147ktM?-Ox4>IGJN&@B^w3SE!aKV(eq$n}cJO%J zq$sy!Tyv%49`I!B>{mmVw>s_p_~H&0`;m;xnb8>13IWWZuROA-!=@~CtZ`6swWYl0 z`acrU;NoceF3u~j<+MEd z##A}IWx?ETli+4}u&HF>n&fQPj@zV+FJAC>m^tU(u&elF@*}z_StG+Z-ESCT{;N2p zp!O>?LStSKyD{S1!9bU}9!n6rWAs~Z+Sd_iTKJ$|PyUevPb9B2fmvuI4)EG61)7sF zmf%w}*q(OU@IP&f_&dsiVS$b)`b+@rnacM1ktB_(bdieA*J{xts?%DR4I0fgy_9$+ zjn=b`GNgy^7}XMDX^((w=9>#u)Ff|1?0_)2rSV|GdqwYq#-^laj7)?uCb3I|wFS-C zP>WxCf9buuaiU4iscD%2fG=!l=OP?{<{80^=EakNA`EHrTDgk6JogB~Qx)a@z(|O46SXv>rV#e`y>=jB%ctU0R#hzxDxR8~Z-Bi6?7PK}2n=Cl$L>xR z=osJkLgbYkc)~8g5s`5g9yPm3-KZz=Jc~B!!w6$t1ce&p`hd zmm4IV^74Tadc8maN^m>{6kIIlxFZ@BGKkjxaCupcOpO;>OQii7%Qg+WZiZ zSk4`E7Z`(fQH{3Brf2|KLPqVA*yDkFj4e1_6+N;9Q27*|ehPcMS}51?Nwt_P_|L+~ zwciMr#!5)ojoHEA{nzxzXS#kBX(McKOPb)|ijF000&&*tc5yQOo8Dqcwo9QAgGN*n zDJ7RnZGuCMDiJ%ZsnoKG`uEN&%R@x^O9 z%gUT|pV+Iy$y|DBzRx={uI+erUiS#kVmLV&yz;Z^m=PiETP3&l3W~{j~si9seK)Vyl*>MQ#+4xf+YL2ao8b1w7KC@QTc8*uX>w|JgK;sM<{idDEH%V0d%kH(4zac z;t!PulI0In5IXurBLjI12>#Qq0?_qzy5^H z+bSBkeT#z{zB^bbV~0c9gG|BeP12-Z z+xq%(sF=-L*bJdEJaXIyISt`eV3|IQ&vhxnv>QScb|h5HVwJnRdqyEt zCCi)^`F#S{F%9a9OTr8M72=sijDHIP`_YT!!bKR%+VvgT^|Kib z{OQn+&2Ho7GrXW9qsrH3VdF7~F<6(|UCr_5v`20Wx^xYwbP|(tUd32qSu7bfoQ&D$ z=@EHZLh2!JV{&F5m^Z%K7u5^-i%XL~nUmEGdXTzG$his`YSwOM=t!zG(+QS8#NW$j zKGQ4;$oa_a)B3?&U&yaF(_##SD6CA0Yh(28`^4(i{z>!{o^v8oG7&tE;$lLrQ}r+r znzA!MgBmPNR&g87qKMVlBs&$!s4>rV?XniF*AMD9sZEY)?6Kw?ed~hBqcR zU5||TIivZZ5%I(H9%0RT(y~(lUA0;Vb?c+fEuX+=d#Uybu^!U!U8F5U?4U8oEzWKHVZzn@&N8(`@S@9wV9)0_Kgs=%zd&*4icDWnMyLEBs z9ojHwQ5S2-mEM;ruSVNQNdcTSo6o9h%kNDK3_#rB0}xQK!KD`$@fJcp;vg?oUe}aE zbm&YHsuo%!V+f@X9k|(d4Q!dz3 z(IkHku3Mbck2(^PyHt1lpWG5ey&>1eB@=jO=pngcThC)do{JV%bABqT1(&&_z?o*u zpntvM1O#?X1#~DT>eo&&p>oPFJj*~Vrlac};qX+#24_Vcoi0yolnXt9VwV@00&8_P zjyEH9gfup1J0kpt!{+igZq6As#A{^M5cVv2rK`^cnc7-aR6CCC8F&!<`Y)o8v0+TY zMfV<1%oeLU%pZ@m7J0!u^ag|o(wM}b_-~6y%KPIE=2whFdXK!Bf0cRAf~BzbCqp6z z!_+P!Sf}uh?wXk)ZcAZ1bP^V+$wbcax&ioP;|zsQd$ueJpNH_rogvSpnM!t47V1xaO;>aci)z3a-_u3-51b zKet63GtLluLN2%dtM?H2ZHPB2q(m3Ewf~AP#9^4n-ZfH8l>HtMB^mJ)*21VX{EN20 z`Mfa_DU0ThQ~72cQ$pxaOg%Mh-exYX327=wH;rLFkN`#GhXv~ss#}qJ)Barv$!uef zTY&;|Z}`!PAb0hn@K(twtvW-DtR+fn;S4qPSH~_*MxI?$>3NXpkQg)>?sd4g#C;bq zLUl&t{_Ie;(0AdYi+JxYl1=i@rzC@Ib&gb2_03z3E7#lIWU-i-p&QMKf#zh043((& zury8OL+2A1ez2oMhzrP_6J5~G@aRCBj-kQ@Ux(Dx>kTbYvE)qDW7~r|K_%F&=kC5s zlAr-d!V;VAIO8-|q?C0DOko~>)-RysbD`XeL8THre`2f0T}}XQG+~G2k+t!5rO|c= zC3&hws!m&tKYI0#8;z)`XN)L-s`qE0-OrOg`rYu<;_p@e*~h~6Lx_J=)_=S`AtmAl zXRpFuA8s1Jun3)Pv1Ys`I&!eznZ%hj6pzYe1&aLXlH!1)vx9uHovoz>5+`53i)8X< z9!p)GID4~u^z!}PBgO;cCRfa;55a9LB+>=*ZdST*aY)0Iv`$~l1-*ax@hkn*`>D;Q z4g#~C;EbkwLXOrZ*yz>mZlew(HafkaMv(t1t(-fet&BCD)^SpqekX^oU&5M;yeh_y z4u-#xA5C%prT1s|@OPJ1(BI|}i1xfH*QHL124F`fJE@8!f%#taW$7w=HN8pe(t{Eg zC(QjGkSG8bg%s@iwN~Jh9c8*EYf{aBF7E5B1_oHVbC6AO;d*u19S$eLWy{5MSipP} z809mDRItM44Ko)iRBnxp?#$44+})M=L?{}%$d{VH-fuo;LL4KAAx_2)u{QcQZf8_o zPabz$YzeY=l4>@$D{JR1Uma6qqniXS%c0!~udu_JgFQw8;6knvH<{NkbIZME0usr~ zXsvg08%VJi<8+07@<%3Ry{QjM#JtF#(7e4&8*`ctV*BYJvD0JMOWS-%U}>O60M^QX z-9)=!`f0Q1v*0sM{{DQjLQ)M}=!rGAve{}r{sj%v=eHAz!0SSSZTHHpHGY65bL zeU{!Fd|{<-=Np8uhNXntWP*?5NYW9ijYcTy)%T>!F%y0e_vn@=K>**iQ^*^fdH^pD zBI}9b(cye-okL!3aO!Kw;A}aNcw~&SGNI+&zA5A;y6VQsV@Ny3@on#PV<1Sb^;FMG zG01`}o~wqGD;Dx1ig8jD=HoCTWe%qGyvqE@){0IX7ZDN#>yORn|E^3N3j+7#+sV`m z#vB=(Ux{0|*!g(YRJYqb$ZbJ$q?VmbqT&|Navsx}<%M`LPT%r};>6vu|3klOKlkIO zkKJb;_$k47q0EB6K|nKan19vE0`Km-4pbq0YSD##I%$AVv564Fkz*CipV2@EF=7wv zRBvV*$C;_&p&FHnB{{^G4X{Leok^wHY0Wm|+yXaZtt4$NA4Cn6Hu9mitC zA;y{4+f&wQu5a1$oIBW;uE*{dR%-mD9Ire7E%W^k^%?NG-)^=VPlk!A;g6rxD9c`P#wQpdwD1gZ|LBl`sBeFd zwWR-t@BuoW+}5wl<#{Xx*FRlasCpc~l>nF$Qgj?$d1-G(?BiNRi0%!0yJ z&7_GU4|(P~qt05OXyT(2R@3|i*L{+e#^!P!YGR5%+eEY2^p!BNZOA%_*;vA3PRZE@ zNz|Ho%B23mf$O&k!EKwp=KJWtJgMi4YxWu^c_AGXx2#!LS@TacuTx(ADw6Dl6~joF zQV%6^_R|c665&$|C{&8{vT^@d)6XQQmu4)qm>}BBve@Y9P!aW;(!AfV#A@7x*?cR7 zlLDy6t9mL~?fdQ9}#_8x%s z65b%)bRl?;r=3OS`Sw`~KLb$zMS)R>0yPm{E2fmX1?-XH`u(%S$=wpg(2{r%K+cm} z)c=@*^KB((gTbpaV-W>V}Dkbu^wD!3Li+A*C0MngtK8w$14iYr>N zm@lFWI>ZK^fFZf}eggO`M-y?W!wq0SYba1^=gx)GIW9)*nhYQ1h2kP@LiX8QTJ&~6 zIj-^fi;F9eMnC^2%*xj9_u_U?CNWUstF8h+R!Wj%CW18P=&7<98oGq^;tmukZtYXE z*nCTe?sc_~ux?+$A#ynQndw$@ImcQFdzB>IB>5IleJoG%5a)#uOib`WM;jeA$z>eu zM(+Mjxw8iZQnuveg1wD=&OJy$0Th!quNU%2a>{RznWa6lWIHoQw~H~nT%#Yz68BoN z^kUs{B!Gh0z00D>p?n_Pq9W4H*op*W0-k-SR0VTZfF{w=E22GUJH-#+482{Czmu2z zQXraXVE;GW#p9NF`qdp83J>8z!NC&NU^+EkFbsGYxCv`{qP6BZqHaxkg9@PNehw2A}PN(~;dZc-@H)61ZD=xaItL2-NVR@W@YqKAM+;Ff+JC24#6R7_v^Vi!5&0 z=t=Y1$G6DqPKMR*t_u}N&lw|;w$>~T!+{qw>1RL=lpr?tFaVImCLr~rUA{O#&KiCm zbTcI=mZ-zR`x@9Gc4s|fMrtYvSJIa%ZRv`h^rZPwG=){K(wdQ32BO?gsEAX7=3OrU zO!AeuEa{iJYRMWmF4;d4SNR46oA328T!@4H#Tz$_^UapHbs-o8nj>=%B6aXvX({AoidGf(UUX@pI+%bxEtQvaRnky73It&3n22X)2x);3d z^QFwx<BwiZbHtmalFtI*|3Jy%nJ)J1lrk0B~ zUrIR8z$IgV(0Y^+#Bw~KwK?fvOy)Bblra3mn2lMi%lYPqU3SCh6{U5_ z@?y-%Hk~443TX3*X|*%qmWcJd{FN2-Ta2rz$;olQj2Q|UIN5S9Nowc?$b1zCn+<6^j%gfOd!~7O|V)2d5O?m^QC|UoIcnID( zi{K_>M=XrsYuCo94~_s(M7oYV`FzQ-rpSz7?U#waKmRgTs84b!%xV;NTuDz_>PM89%?4*h`L59mSryM`_** zp3h8O+JR^OAkO>AI;Hd9-ULmY+~mgbgA>sr4vz4P>VA#RshlvgrYGcfrQgdFnlsKs z^SYLr0x2}>>q%8W^gjkkA)7jSLYJlWDCN6)IAd~FF*X2&hfA+@nglTt{-!n4mZ^&_ z!+_dGp|DVz*f9G9CE8Z&6i35PY~LW#v#m6ihvMl^J~6J{Dg=!9%U^&}>gpR<^6_Es zmQk<00kY2UY>YYPqf92C1^HJ>x6~*tr*AiIh;Yez9_UF^!7G``m!janG${D>9jah* zog#Kk5=nv|ymUtFS^K|q6nV7iv!Ox^RN+wK9a?;n%g9lIo1``-Zj0Pmf{*&M5$q$s@)pX#{g)GOMnGNs}ha-e!g3XYuuv_Uz6!mHAm^kH|G%T zrW9pEzOOQZJ6zVKVh?< ze&I2AS?b>QA2aSjZd!o(82Iw%fi7K61chDAwtONo$t9*3h}JLd5)T}~5w;D1XgR@; zpA6Ei?7;CI#TFaql*3vYLOgD7H`ZNHCj$5gL^HSs%zo`BI2)S-R%+2y^(S7e&K$t9 zjo~=m_O6(t3)=rOWI9PP`@Tsx{Tx9?Ue**^G?T)!k98zW}}zR z&9Bze*-b|B7cE=6nAnxYJ!v(!ZMkr|qWzZC`ey=602)FC?$E!8!im-w4LZ9JElFp{;ev++ezRgse8mR= zl~Nx;EMNcx8T3I#Iyy%UR7ch0ROU3x zeMp0fUQ1eWHZBYV01i%e%1`LIP67KO{>vDNP|v^z2`ho50c_Z@*WaXH(z*qiJZv@a zci82WIFnA%4?z$AcU*n-4ai2t4EN)*^l;Hg`iM2iYg;)lxBxkWSWH7M=W?nY)8Ra) z2r=EI85(2+?~bLX%sbk0 zUzAY*ywo`4DDrKGmCf!w7_!&HpfUN&)p5@eJAr}jZ^2v}O!JQ3a>oaYntR>7>o$6wZ!;?bPe6E6 zQ_D({A5_IUPM}fk5L~%IakMD493>nQQ^308nt!nEq@_%nVtsL1{yTERl9&LQ6|GVR z=XHjTX6tC`H(^}v3u_@F8|nJ5aUmE^a)zdWQpk?d1PKsWyjRm$jfmMfn<{rrjm{NN zMTi#Fgt;vImZMt>upmj#XCd>-szHQsDObo==k?oPjrC7o@Scd_&3Bys6UYOzu&z+* zw)zNbMkC~YR}jY}+17kT+v%5?G{}P>BWtPbuuxu=gXb#4xqb5z#&pVAlH56d z@Z}HbIJ{#N@d+tp)#MB%z;%dE42%*H&pYGuJfVO&YND$5IJf}p^m`9QEFoHmS3OfK z_aLI8bqok92uQBsBNUt@2diHhk+{dZn{}IOJ`cXv)yVMR1hf(dKH3Obr)R*yW=^k3 z)sU=teV3^kp#>f3toKzR{3pCNBpU+hK_hYi4#io)=P`$%lfP^0bp?;NZ<5F_WP^*( zPxV--j9VN+sA}TM!1YsvY;0d&rjf>Y=oKYWG%8m&x6M+E-sHd`cQ`s^OlC%`s;4fm zg~RN^DcQ*I4i~LI$*teo&a8y5jI+bMcptz_f}oW5W>Q&F9#KDcaqRr4BTht;DRMnEzkr_g*wnYK)cC;O8I6E9d6Jx5KM&V`13U?SFCR>nj3(El_Dz)`2B5 zfrVA6ues(IbQLa~KX$cXsVYOxogWG7=(3Q?D54Jilm#GY+GZv%8Pi#P;&q_#$(>WRcd^`8}t#)Kk*_v6#+UW9qT}3paQe4(Ve6M&+mr@8ff@Q z_*Pa=!{SyW87t_|#ub`j#jkKokyhi?v3(v(J~)Wi`|I-TGy$d1Ymh-1LFz!YQ;>zZ zNRk01APg0MA``iNhwP;QWlMHB9}P=TIT2$y5NZ$ zBNI-Z6!l7*1y8~4!Qy%@jGeRsITsVw;-G`yHaBEuU}Jvot9*Qw@NK>-2B@mr5~}gS z7gDtU*P?LI^o8UjOp5`r`Jgy@jH}{bT?R1j&_67_i=w0)F6J6Cuo6-ccQHLs;a6Q@ zPtBpfSgdrcT(jdCMjTtgts|O+rde3H1L;Y~!?cW+9_kr}C9Vy3ku$Fi4)fnUOccKd zhmbO74_`*IbANqxu@f-_n%26ynp$7Xsu<+vsv#k~y#(YL@OsxM1F$O|bO z@2Sk+qk?`7+3kXGQVDzT64*&Q$P)OPbemko^Yta91VvA?wRq_zPh}%)L9pinN-b#N z(34!p7A5|cz~E^>kE{n$OT&8Pw0bmnCHf^OWuqG4FQXria4727!H^e2R>_n$o4jkO zAkKI1m1jRbbIhxuWiH01;OE{Y3to{P7r^nEoHB43X{gwC2Ft=Q*vD<}%!PY%$tm;7 z8HpFlFtqf>umJHf9+F^_Qh4xyryYSIFuF_)WHq5zmK}0}{cv`aXnpPaWA91eHQ-;2 zha?3S>MqFY9QOdTkHF5fgdH}4#Qb8W=CzKb85$UC1a0L3B)kViH72L~hjBQ)g;^-q z4&4uPw$ZCj$SVc{WF6s z04p4nyxdITXA(ZARBaxV&>c#{xyI`)Jr&a|BWx=U?q{P9NxnLR?fgLt-h=y{O8}l*<17|HL<_|xrP@onZeb_u_MB!i_5@TTxmB{lIX9}^M zTYuM?NA0eQuTxQ2;8!=+IemH7_#XodOy+SjQe=PBUE4us^11WtB~)el=|pB3sHa?C zurHb!sGPcur?#;9Rsg8jI)yC0a76<7V+%>r*u#I%W@vYUa$`>wCJNX*5uG{*++H}Z zF%zZAGPW1+P)qGyZ*DZ??7->`jA)WI9Q{l|wBU@{PSbj6W@(wua*0BxZDam;?i)f9 z)W%Wg;fFB#^(;==@U4^3a;l2ge4zT9DnjW3(?oG>P(^XlDy2@l@9H4-FEBj__}(4m z*ec@R!mqLOAQsX;eun;|+UvFKJ}2+lB6h}lUbE%SWvL2>p;s(1@AWeAzKLXG#^G@v zoFyJ5T7`G|;SlH8g-5YU0C4O?0Teq)w9qw-7kMG>W#h?ZzAuCZq-7($fwe=_{Uw9OjnzyMq1uE#ZsgUaI$OGoRu2Y zfvL9G=u~+W9eb{G)Z6jp3=z&4{&nLFV+`SY3anlx8LR~hNS9Ez5w=r!;gk;utu|_)FEs@d;%o7nN#gaAeJhN9I1(_gbk;nO5S9nbe3iO#agPOoYDsR3 zoBn3B;YeBjFqSj10bubsnbmvLk+j9*^MFevY5F^piJRezHd}Pq#7u`-^xm9-}& zsPsE06-#2T%YeBH8mJgV!@bwH^^6!o;iSTI%}4{Rnl%7MK)Js<2^wS&;aIPhsWtDv zb^7(;!<~Bwn?j61C%Zy>v-B|-)<`N!3Yxn9HjSqF;8=p``()#;WtxpPYdp1BML7&# zwrrDaf6$DO4u+M0@lrZwUY`)?0VS=mT5DfG;|Ew52pES|-*73Y9FF5(iy>eK{+hZh z=4+Rg!a=9=#~Q;-al~QzpKM(}(M9B*JgII`*AAlAr1 z=q@dcgU<$^)g{b*SfU_}hHvP?iK-sj2{_#?ob%c=q+k?v;HW#jVTq?P_p^1+C2523 z0P!i#0W{P)lH*<+NdGLdt=HzC(mPoFwAe z1NV!raYX_v2(c1t4<4SR1xLS%O)oQK@z{GI^=PP5sZPWmaX${S_aeN7JBNl}LxG?L zH{CT{PmetCJkoI{1&0+7^RXrGZ+8uE#_(;cj7I+C$dVx`Sff(Vw=fTkvpe`IycBVR_dcd`89S^&sZy6g zE3|X|yFM?={qX>y_@kcf`_X15y~Fy7M~g2`d_#lJp)Dd69tNxp@Tw_|Ilbca#;CJNcM&n zR{#Y(YlW?qrA!z35H-QLDw?M??b=hJV_<^_*$LSTx!K;nR!`pGlo$$ahn`5~Z0dP! zj@rStNd#tzNR*W*Y-AgAWNqVsnVK~CqZ}XU`6bYIZ^Q0q-t-#WO#B7V#$Dia?>4(yI}k*Nn!vo};T(^^l&b zP-~9fzoQD3XM8OnO|*>B5)=_t=-Q+)tY>byNa|Ab+s2ybsIzm$^DSOl<&(GY`1n^s zPc=*LJMnl>In0cTxI6tq_9|a%UyJ#1Dg~S922i6f#%vHO=8lRi0OlW{Iw=TuM$gS4 za%<}CTaCJ`ChZM|UL9|KmA1b-Myw~i!sY&pa%4}PEj*2}|LK~PrFXTJFcWa!p>a=x z(Yvhfn!4Vl$B48aMtFNJa}>)eEN^QT9wfjEG?JMZWBVZBv?#kNU>9FLHq{w$6@#ru zi?Y`EocwL-G|Pud9s3v?@W9}&)cdvb+P;pM&sb!A?YWeY{OY6j?fFPsBca-aWN@<- zYvop-r>A3MBoxukos(gT#FYjq3BtXjHaLNR-pP?Drfwh45raqi=PDdWxA7F;WDoICMjpfY}^A8L4a} zH;`g`hsH2QKiIhbAh?beOEO=MDOkYS(W!9-qA1kbrBV64M$3%34YGX%8^{D$vlJx5 z{^s;u*SrF-P1BWzq&6>J>i2cKD{=WOT}j_P4u)x5s?y;km^8W7zso``D*!cmMOL7UHhT`lU%Xj3%r;R4{pGog$Da<2o;ROeFCL&T2Yf@a z{MCc>{d_IvSHSVb_?{oMydn2X=cM~XRRH3Ex-zq3Q5XaY4cnX2`&!j70>;qNlQX>1 zzY0whGX&gW>=A{Fn}vk9%&^^51cU_aVqo)4ljbLS3T5TivQE52Y_S5H)z8PnG_>B@ zm`x{$0K8Shsm&_FT`=!u;M5?I$X|#0o`@sa-RJKO?k*-9Dtw1iLHfjh2~2ZSh+>9} z$$iOfXbP^ANllZrB}xBg&dg>R!|BuZBWA2FujsQ-4iRxRfPHEq5f@fyX$|H`RzP5J`2ZlVs z#`v*rrno>?DmPUs@nad*EXKJuxAE(_kTatJQUGQZ)^~49XOvt1Z}KYJwa*Y)pgvA0BkU z$O{aVs3R5H(w~YV)rx`XSboN{)~XF50Fiv+dt4qmd9^_gRJW z`RDy1@S4!6PWR+UYNcYg!9i?}=0yH@!{ez6PsM!71g-jf4W-Y^N55bTIlF;2q?1A2 zzV%i8NZ^EIAe7Tu#==2tl4y2Wwj`>J0;AqNJ>^EcaP-#Y%b!7LKSw$b~aR9nMk4{-Bp1Q?klYb_KLBi}|Y|<~~fX#%>Ut(OcX zMDJSZB!^&0_*(*?D#r|%pBNb6{WUqJ8H%@`M&s`F$=-8X^vTV7ht7q81AM zH|#qy`b~EvscrOY*Gdre50q67E%MGES41n&C$4N_#)ETk)ejX0!pbjOI61sgXtk5g zpE|I;xqxhkVaJm1vjE5@*O@u$l~>K7iLPi&bZbiWRYx-wR~4fJkno0J5eFyiFiSj6 z=nV0hR7Gir)spnZmsg{~mCCX>{WLG_2DWV?hOLnjz^;dMDbuICzOk95cLPm-u*LrF zvQGUtbE^>6iS+uytK@u9b?yKK*|Ne-5mS0Ypir_sJf+FfX3nTSf_>!(=9}9^zQ4RG z5&=JhQf7bH{*4KwcRo7*N!J?O4B#BCevFWHb-9xm)$yK(vL zhuP2&k+mrRwijqFTTf`75smKg{*h27B<9I<;N$LsSe}`NC24{A1xin&(TF9$W3*+( zd+On_J*_l!q0~uGC3l5f*H<0v;Q+bZa|uhr=8sFTHW@L$UXsUKilmGkj)sIMYq|aH zX>iLM2k!PBBGi){TVc*22{m>mRPy71464cjn zu`Orwn{0*v?a=yQPPN8v*NKRnv8|@@v8UMmWUhi*KUH4WGKTrUkti{1;zrV6xNG9C zw$K31|0EDJM-r}kv)w529C}Zdun6izs-pE{?3nKj?ABSqK&on*g8P!97@lcjIvMUv zwU37re{+96Y+xyAPaeW=DuxD8}v^gK50A5-mgTAUT2*0x<8n6SJ7Rg)V2 zE6Whj&z!UN|2$ukd+!UmCK^VS3+9bK0Q3b2#2>)YvabibQu(QHQpehysW?!_gN^2R zN0IfCy;(%jxjI*1x@@lt&m$P!Kaajch@(7(8(f7GOdkm{u@?@KX|<9lU$R?9hsH6Z z@iTDqKDuA-Uopv5;={WcsK~L)RQMS8$_F0FD{LD?cbNt+P+7^s_$U?CB=z_-PYli* z=Td5s6iR@k*ia;*OG_o@Cjf!({G$8p*Fm`>J5h`BmnjQ26{~qaw}z^lPJNi-)N*0!jgfq+h`+`lJWlDSA>C6&U9)hq4{b+@09#xk!5eocJTbG(v7{l)*4oO0Y`3wbiM0&YGbK`B)hAHsvcdbMvJe^kj-gQP)7RBh}Ym z&fVeH0Jp2=C$34|F2mHKvR`~i&pVTsMBUkRGEk%l!_%V>v8kPSDSG?k*0-9yPP&*PWpd|{ z)(V$g>0jSR|4(F{32>@o09DyGMJ-^HO9&gpg$ed3-Gol{zQo$ir54!x@FeIkqSdMl zBpSZDg=&}Z!hXkPiJ})e9Cc1ps>ZxZ7dfbOi{LC5Lt|c4kUj>r`*Ic(1gC{b<5B;) z;i*u&>)w%IM`NAz3SGsSeBs<$p8am>-2F}q0q$6L0|406E{COW zaFlck(-!Fg`BgBCuekqm1X<=+DEbmYdp2U1diwl}1^7}7Pd<%*)w(15kZLdgX6Use zH9v6WgBct@Qfu&1#^y!04gjSx1H7Qn(u?nUhuTrdQGx}DkKq7%7Y)$E zx&0L+^&9yRLUh3ep%~g=-L8dm9;d2vW{v|s;nxd}g{q#qNlfR{!k_ymNjxUH$k56r z{%S27WzegQZXlqCg|47AK*(No+F!+~XohoD}Z^lfU_JXKBbnRl(j zO@<`!&|KX zMd3?Clf5P`f8|5`>6@z^246!d5sB|#_{exs6!tI~?=&RLeeSriY!KlO#(vKn;~Y4i9LeiuBfrMhmfhqn;OU}=kA{$5j#?2%$=VXg8sI8JV)Qn$YMgn zu(VKjz3DL}bi*cX(52XLKnQ4GQQfI`76af8U-wVHlA5&|1`}oox1m?6CwgB8Z^M#p zR}*cG4#9#ARvMMdGHux7)k6j>7_%z8A@tdUlY$N(2KL+%Y3hhbMYze|`csQt7$Fak zHuW1Ha};rxz{wc#&!`oN&M!7=te%*Q>>!a;$UC>ZbC0|zYMvs|f6IzVs0xd`msf*A zf4KE6ViE(Q0qy_&%AhwMq7;9p*T@{pu_{SROR#_SIPY{jos3z}9n3A}MugcZ!NLUK z`dltJ$b*4nISB(?uhx3mM&7g>v_hU}q|Z0>K7w*92^`6E2pJ~&YPAuOA(~4_aD)b* zhBv6IyuB5H0;K!|>^yU)9k;bZ?OrG)RqYG>%&msA#gPpXT|Rhd`%>X49Qs z!n(kdBeP50CysIcJ4NRBu)MTxfM6XeOZudkH9co2{6(-E=*=)y%sDN{*%j6aCdOPI z40aG_L3EOVWSWkae8Pl_x@E+S))%(*Jr=OZygebeGN-L+ixzoWkpp+YOz(slPo9Na zu8)T(hDj_YoS5yMM!a@{{JYTtn?pG;Zz%1$qC?aM!i-ls>K66{+!eF6!cV5C97 zNjdgIX>pSwtRe!9k!p@U|V%1@4Y0B=cai}OC?b|fjj22|~$mruS zZty4?#g0zwpbwEWNHqF=ZE8H-h!V|WWuEG3d~BKqT77P`!ypENoNxF znyGRFov~WE8aFY5dvvs~Db0bMfq=0xLYB zqYfI_L=;AnzfXq%K`_Ws9Pb2%!c#uMRyqrNm`YG2%Jxb;CR%d#&E~}#X_QxQkd4J4 zb;Pnp8aB;AoVMB80gc{V2M@-sV3-epkJ0Sd3^3JTlfai{Sj$!@SY-v7EaRuQizt}5 zJHqB(br=Dk5(CFE?v5ugghk8%M%F?Q289}PvJ6xkk+eAUN<7){5g_$AQxmUZo8D+&;NRigH4Zg? zpZoLPAQv#YL?3>}6FN+;%px>vtu;k>A>e!I8gfzB1}l23Z5a+K`VD>E(2)`A(MNBM zq(7(!?GN6LOtm$r@2%t#qU-G9=`yV6cR@sb4yIb@cd>;rxG5%+w@p^jdk#_*xWw;+ zztMYB-3U@ z@M}9PU28;&g$Oj7x3&T_ZAHWr^vXox+j!hyH{gx7Zfeo=4YK3j&HaxJ)mFVb#4F~Y zfgSS#-PGJJSdGXtkkx?eMg$zw_$1&0@Ax@bD!WFxzo!)!B@7~++jCnOscvEdx4m~M z41MbG!&)_dmLwP^Ta3<^uIVBiX?-bNRx~A>g$%T$Z|-&$(r1elpM-lE zLgWQUzc>oirmA;U0sTT-D1ZPo?F{z1GoY4N>4-&5ilCGpAyu*c4{GXnGC#nT-2^DI zRQ@i0P)(hOSm)U!9V93N!riUUN!sO7@T`>Q?Y-<2Rj^(c4?8wJSy_sg6WwKCA2s({ z&9TeP1xU?zlcP>W3QLBsF~XmKRhq5^t2!g&;{%6#$v9t@l?l#L*o&aSx z{TCkCZq=XtoB9JEd?xdVMWKTuqniVa z47D>ezJ|_p7`PzN5~0vYO=-!o{J&+!C5_J%Q+4wtH8VbqA zt9S!l6ijXApNsLH7lWNCWKD%Fip9Jv1u6EJZ*A^g{UYW|T``nJANab;7^MS)Cvv50 z(g<`mys7O*I9 z?s*jjKEgE4+dS{yU_>siEzg{Sn~zdap3zmPlqva zhGV6GQe`fXIEqfHBa$QsOAhKLP0VD=nx_11KgOd_wYTNux%*=TkK(|^E&45Qi=OTc zvSx|yXw7n1gAoZL=JDP?2xH#IJ611&-%+5blQ#Q#?_h?X8iRP%PKkn9f?CV2dn=>s z0ZlE7z@zR`QZ!|#zMxF-M`XTE8w}b*I%kHg-Pp)G^Mj)pgt?OFM<9c@>!F%qB-i_& z1{Ldz-%CKdY$x-21MLtzQF>wNBt=Jy#{Pwsilt}AL?^ymN{SnUd<`2ndNa#?85(z8 z>FX{NF7*B{ibKz~!PIr7L$q1Rr!T$D|Ye+3edOByXf)A{VWk z{67-sAzCiA+?gPRsJc|GTmO6E$L%cP$4^79pgKaU%cNKxQ;A5eA&jH-CEF)b;Z7@f z8gy)BqBcfPwVKRyE3j)t;wA%ts*Ws*_{6Sqd!Q^}7dDBH-`Nlo^IIr*ehhm%r#S#| zGoXnJeP3s*Yu2lli~Gb=!ThI61l3tr*sp)0Qv`~0NXF)nrPG|Lae>V=qyR>77>+uW1 z%sM}N?$%F~lE=2;@hvX-Q`nk%F$-W|lX3gircM0A%(s7gn#2$4{@IOOx32F*QobY} z(#pgO?7$Z|x*e+Ub)c3v&%am!YTu{6rP?ieeEf~UQkPwAGgDt&F@=mV*{!pl0wgLU zRvtT+hBh=pPX&7?aU`z>5haSlU;wEKn4B#B2Rf?!u&g}1+`3(2!b=&isZH26E8wvG z(9~e-UQW$aq0`Z9_2p>JxU4pNlUYViMI!{D-bTQcmJ5>@kUXAP=G^O5l_4QHA%?7V zCS4u~CqH|yO_NCL0y7>u=Agbe>BV&+iid#|ElQ`Ib!*v!Txk3}l}w8hs9NmJKz6cf zm`f{B+fDaJpR;Ce#qY>jiJ`Fgkl+#9hP(>mt^N1iUvoe7t^pTso`E?Jck(SZ9rvAj z03if`vpm^Btw5>nqIZ?&w_13;YJRP7o8uGboksU=kcWB3M^PJX@vac2T*< zdsW4!!GwKtZsQRl3J}jq1fva`#eT{MvBcBJ(s3+Vh!4nX2<42qZDj{1T z=FiJVa9M07=JL1P1xwM#1&3jpX3 zmYM%2pcmQs!IP|>s?OH6(n-{r#LvJ=G-WLZ*8g<^#_Zz_)r zMTTYOxS3SD5U!K3tYHJ$n#(e&V~dT0-P6t=@l-10-^Wg8{mvA?>MBAnoU2fh^kE6tFxwYR~NM4o_*VT&eVLz3Az zn-RUeMxzK`41qlnKE7sP|E3e*IqW>8zoTHDiYdzTis;tgta6EwPEk!I_PEbUT&O+N z(`WKX3Ob5KX*;542B0902ji>=cXHMuc1vit?w80n$ca<#sgQtv#j{e))8}jwIvCs1 zGoCv7V*Dr`J)Er!h^G!(7fJWkooK|uoEEDNl)JV~+bFwA$&ZMfY;Wh?l^V?>!0AQ@ zaXqDZw__T{Xibt3b1oc^e`~^oYEqy*JU#UG**hXV-hZRxxzh)TMPF$i{Q<0Q?o7~M zJU9hRv@xo7q1S6ubHt-vIfees+s|&D@$eSWiz?=f1C2m$>k)_%bkM$^?W)ug5}3(G z{^6Jkyj?XBfXKOVat!qodQ)Y+mOp?$uMtHCIE^1#;S@$NZ%7y*^H4cv#7*n*@p+|y z3^)niNqkC_(p%&}!m(ZD^v-@;8R5-GZc?R~rVpV2lsj5M(A`5PJM!{-twX{P%}d2; zJi^MM!&-&<7z}-Rn+XgmZTzy*)GNq2Tp#M>Nf^cWlG<>m5+l zE(FcF0c6-I##yScy4zntX7b+stu%U(m_iKJ8m9tb`p~Bzlvy;YChHvDEkXp=ypJ_m zBo1%sJNlVyg5tW{-Ve0|!n94owe!%$Vj7h+2bO2hN;<{d_J<$^*%jiq&#=!5-aNTj zi^wPCQD+(i)_BG7avbE4p>{3_b-dhAx9fF^aND!af(y@1n=I#bqRNxWn)%z+xd&&e zl#6Aum2+Fr2sQ)IOf9pEaTh3pRvzzVe>Dn1y}qfRDoHM5sl6!D21jOqUq13;$4JwL zHf(Wbe_DN?-qWF!1fj%+V(O4`!3@}Jous=P#5!1ps>c@Sn!hFWW@_{~&_h?}x%P`KqCK4Fj$QX`n`l!58=`6bykY}8fbw{DmDc|cD6-^cDIfKSj zR{K}>?D5pq4~L*mL)Tx=x(jN5JCL?o{^)B@Vlu+|w4hl>(3YMWbN04Ie;Sfhi0%ASf#tdl z^uazYdvNb^3uREG^~$ZuX3>6_kMx;K?_5ADdLz=ZBui^kS#SI1Awa=XNOG6i&+IuF zK8$-RqbD^X7C>#&Pk?`eBh7Bewy~2kf=U^SUnHiaj#`s*d(3;gvZ0n8o&b_*>2qQF zbAj)e^hga7z_GyI?+SecGMaNxshoOxYSzcPvBd3oDZ$)rZg2$SL3QTkAv5fr9R{{67mE%gdFO>3=R}5i%ET*Q z@g{2-0gf8WtVbxlZ(IB{>$phC@f0w(tg^Rccs8ybl7NugCw|nu#XhW z+e4+%I4~dkT!3ouZ=JMzyh4BYpIskC5~Y3FqA`Fh32}a;q&#DeloXkoy5u(B{SUg1#8Y7Tq_}Wnq^gYtr|G^+T5*T0Pw5pj^K33^9lwkBf>GczLB3VKy z&x{GUu3cdBWxn+xiE3!NhRn|IrJNCwM*TgRo9W8_-+NP6@&@HpzSDYzU@1>VvhmyY zyk2ki5WYfaV@`bWJO(uS8PBo>T~Ef}-3N>4mbPivWun@i1_?VVw;H5Oq`f-zEcCu~ zf%BQa2k8k?OY3__@)RwU-dsS*VR*cELC(%g3LYIiV(Wu!*oug4eIa3}E;cPmEQkLR znYOy?3A&pqO`44@5pfTlmX$H(PlEC1GeCX_3R0tmnqnCv42#{LwXii_iJXrZ^)*R0 z`Yq-1P!k=aHdPi@M70#>n&9rdZtVV4YpSZyLbj#P&2zjVFZI%Kf$)`9%smDF3sW=y zc#g0i_%F1-Y!viCQb+x7KF#kc^*c-qu3QJ~z>H&$6mZ;m?KkR0-bw}#(dSm{6P{^)GP9z1DU7#{c8Klo~uT#uHbgBuw*{Yw|R z?+UUwx;UllJ0^@D*?(Cl4BLfVzke2dssMQzwYJ+evF`{#3lk>Z4Yv6!NYjcFZnzI< z#D!56>`ZRI@LmDUkL%U#d-m7n+4RYy3MaqQ;lMgP{`wv4FnpBH>99JRd}DSi)b`Yn zdhWAMQ9B8K$`4K1?W1ux{wxS85VfzZKHd2H1r^t;#RY*veE67>8j2AJXkW~O z+*f+*kup*dXId`Ae|e8r5QRBkA!;yZn6TC4v@Qe>(11rEB2S!x<#E%ruE#;vtjoAx$7Zwz~C*bqg-$>TJj~`73 zsg`6lvBaaL&dK?e*r-g!a&C3*`kkcHiVSrH-TL!(d(Yij;zRYH z>?Dh4{$9rTr}0Jv*&xCZeh2wUam9tr&E0|F7T%$yY_Da~nD)`zZFp_W(ezJ(Uvf7s z0{AA&Boxa|Ja~-U9x#_G=FA3H3F2^JrcU1RsasH6wvbMUWX#m3^+C*6LA{MHCwC$&$sGAjv=(#IN(@G@4z$>|dJR&&)E6L7<#HoB z?(X^v;`xsZgnkGL-GjO3AwZ+|D!^oeg1-K+Q0<%&r)C^#T!$ z@2C-BO$L%in<_+iic72UV~l5^s`D9)Ndpx0Nzk52OaKL)J8=(4-R*XgBenu~cdxP_ z-r7MInh3Fbrs(P8H*7cpQ4}SRK}lAs8))`JPQPQ%yv`MxQQ@0Nr@s6t@>1#ca)8oM zb#a7<)$jqId$E<<%;c7~FWCc(Qs3Ve-#K!NfJE89+m7R9QHzKnkGO6ILyGuG72G6? zU>DzB9PDJ1-NYoduL@_8Lt0fE5YKAA;gKOvX8Q~B9MlA+S8!YQ^oPZ=kpQyE^cgbi zyNPtitxhWd1EC_zE~q)P0VKRZG-bL!+B0)nlpq4Zz8(WO-F~t}Sor2WOxq(PQA55e z<||f1}6Iv;~&adG+(4`3=32NjiP)Vp^HgV`)EXE_Z= zENPR^JF8g~rAWBj9#qRiM#&k7~?dwFM`PQu*s|k~Fya5)8@|YxS#}1XPls zrHkYebAq#W*zZh+KYR>I9!4*rX$LsRDB!q@(#vlSPD4~0Z3)Dto?nz+YhfKWb?E|1_&Hb(omU@=!D(c*8DOZjuq^JL6SboN?NkhdxsTG9XyE8HaPIG z8J^&K3St8k1e&BwhzrYyZbUWw#8UE#<99$T66>gS;`w%x{`KG_AC5#bz;!{uTa(2J zZcM9U!d;dnh9^XuOk*dzY#{_3xF+-?vTWFNtX!kW&C|SmI;e#7iGKW@eGKgBW>`G&np_- z)~Fe6BF7_9R{6+BK<%@oNT>F%X`IDgku`ZGxh|>OI`WqX2-t*swC@pM^XPRoC%!gG zrwj_Ae7VVq<(E%vL$&tV%xr2^8%3*Zb~~}GdaeEO`?gQJYyLECJ+3uJS?I_bk67k? zIivr%g~&9I!}pFAdPd}%B}ah%0v)Z}a|zO5Vu-*O7ExE5;=b!YPwkn-JMt6U`Ii7r zQm`nW)tc~@B#s)N3CGap7oX8zOMlYT&gs8kEpaP$%ACoVs44G1vfLncCmka9!C)T9 zP?-0N-se0qpJ@6W6DAN64*9)-I(PR=0pXFey132-)~<9oP#FjHQ+;>y2b3;!nD=_l ztW7ueVuvILA)Os}=2<68UQ={?5gEnvsNxI>H^?u`yu5gHksQf35t3l>(xxLYQuCLn`iFK@=P+>R;a1DI8I0sstXV7{jWCl+Ch7YbuHdBUQpD+@{^ERV|=V}03g zwW2b-LI?xDy?uM|?GyFiuz2~D)axz9na{GewZ1SUEi8qFOnL8}RZkz&?BxILGSA+s zX=bkpXZ|#%72#aLtpG}X0$aU=86TV%@Xr`2&Dc>VE0~d}AQs}1$1`p-c1L`OEHwWS zbQJllXEI-xr4BCC@a2$subJiqxP*-r5z;Xn_EYmD^!innC^1=vESKds#T$xVX&E*GCoH2*%FvhxnB z!v=S#S&30l@Tw^?ze78vyYq*S5|A8eGKSOUipy9`sr``D{e^&yt4VX5uLgb|6TvlH zsQ#%5wehh^9~hF;v-P1%fFA77;in$B=5v3C^h=yPn+{6@r(4L*0l`=m)g&aGmAeW~ zz=5h3vKlcsyW<=#GZrIm;_7;N<7Tn(n$<+eRiZ(BSY^9w{9+(Y#^<;GN$A5F^QKl! z=T1u~;-i}<{F~wPU)WU@K0o+2aWi&vc46KPHcS%IR^)?JmK5@#5X%zq!Vb78N!rox zTw(pWGUQ_q^952>tYa_0b~crflly22=p|}W_T$s6VRpkHHiK;WcB!RLZ^>`Ho)p@O zEyL=9E1#y6klvYxz^;Bmiw$CmTd&zn&f~U5!qkI-hTQqj7r{`m`y)&zcFKO?Tq~(( zLihj!md@6=w*)^`$|Z5*B(FWE)&yq{8-`@1Lw6;+mt`75v7n0Hi~limjaBB2cL?Tf z0y7Xfr|RiKz8Ls2(Eie&0#?kG?pQ3VJ37Ij+WB0RlPB6eI__LT|q!3|)60B6rP zkt*_e@x!Kjy&>?`kUU8*R={iqmkaEK1!jjjdaV;VX!>95o;BNrY>KtWsDj==*q9S< zg*Bv`P2uar#V_iFSZRX`;BZ~VW*{6Aa#kg2VcT5X?+Ox96~NGJEl=!%DFGxrnh8)1 z;aydst;UX!TaY_^h~xTC4BGa7R=f%pg4oBb@e$ya5j_qE*F!tJ@2%ml^r8-_pQAN? zK~|<@X^X1{jIqbe41ws)?)2NA)rbP0>-1fxWBu27k=U`-&JcFzgvuEj|I9jAXsEpJ zx3j#G%aK>4*k(V8rIKLAdB!FALJvt%hNSmb(w+az* znI-#(hASe4HN5S6YQ=B0v z`xol4Z8QpL7)Tb3(&3wxEJJhrHPSP0q()WNSv%I(@mESs<%Tj|NnS!RLJtKdI8xDu zbpdbF)wZ3J&#m@I)@u>Np`_hK{5fbyiT+|Y*HC^C z6nJmjdFJkZ;M2sdgEq*!NH@x*e8~6j3k=O5VND?uWOG|$N9Yx>PsuOT`d%6SBDz=0 zqq604Nsknv4xvT|o!UG9bMllV7ht&NV*GoSqy{{c12j!CmQlPIs9ggOsAEYT%&Mk+ z*-FQ+fG$!YB`-K|BIsBbHgjeWx-eVB($Vh z%Fyj53fGv9fHuz$VL^Hlwm7%phdp;}2pY6dTyrKCIB~3tvCiU8dkRMwF8=xl z{nlPGoN=$h$)v_!20bz`Y(*h<1F=d37kDqd1yq4S7CwQRc%BiJl)rI#i^B~*DBg_o z@&?YcXKWHIbI&gYF+65c$(rh|o3Fsrdk{Tm ze<+;V9-AA-rU&uy6Jsf(^EAeN;I!(&e(;S!j)S6UF#xd!k^@4VqAzvZTQ|FpwN9$o zpjQl~D^b2T@QlDVIPib>AIpoMuuS6x9hhtGQR7TZ=k%V0 za3EMYcV#x*3vDsb+%sSnGU$Y5PIK}l)EZa>5L9rugVKdCT-(HfG|vCg7LHhiReYi%%U{z`&o3>vBtZT;}qeHq{&>4_fD8m9Kv zIi#sDvO1rv|DmUL?~>D(?5E6WV%X(9%D1+6ZhV>3KhZww_;>&sKJ1oS{Dv2859fSG z8wd({kmV`$qBU!^)Bd7QoK#&}m;^J)dq|ba`+Uu5y`mxDd*?JmxgJRpBmQH%H(lq zv=7ocmE#kr2`f2do9Cy*^nt+u+G>^&jg(|z@<$j3Ib{_y-4F>j!-c{-Q~|fYE&-i; zleK~*z3*#(tjob2&bVzYI>Ybvvm2YVIvG3i+&3Q0{tLI{QVhA^_s!-)*8UCZP zejb?{myKBum*9E1tF-=vT)+(&#Ssz_{TNI0Y1cyP167A5#Y$8rNl<*`J;OEDOcpW7 zpTF{47B+elhEsLG$pLh%Bl>zipGIEN0PQfw`#xmQjFRv~#uw`(D5d(ApkcW=XiwAv zgCJjEvrD?%r$PUEvcpzVdSG^MNp%>GF6mc6cbjOeuhwb}K;x0shgzN#V_cMd^|@IB zH3!Q6tfyyeQl!Al|EGPf=nJt_Xo~@(J$IR|4>Dx|J<(|t{_+ZqEak^%B+K!8ACyiJ%UwQLIVL= zzT1v4O+lHK zp9Vfy_-Livu3m7R5>h}|x~JO?>rWSvS0AamBGZ^!#XSnlCX-J6h|ED-hvb{ujlw^n zgNan~o|j=^JPiK8v{E+>VGc>b}E946x3v0Y=4Vg)h02T~zXHD(<;) zYD5#!{T;Hmg zt-&(cvstxlJ;^%>T}wk`u)D!B*t<8+*xFNdzBaM$C`np&lj>Ce_5lSV*r=YqXzCQT zdj;2IzPAIhZxMunYvs!!D^##?F}D@JwbC3$hQ`f_GqT8o*uD08z2VxpsV|YrtDt-n zuOe$j!!owFwVr-u`}+obN60j60NlC{z@9)>N%J{}hf6PI{hfp4gN>bXWssvcq}`BD zrpa8IoZUn6fz1qSpnOQ6b8t}hb6nV{TegF31{!rUiG-8bja4BKN^up_oW4?`1Ud2K zQVpSrxQ?4V5_nJ|pZ0aR@Z`DA;5J_ih&{p39lcM;=tdP_f@BBtL+#b0=CUEK(*07| zSLH*}tjzQCP+#pUL^e*g2fM}G*zcXAXjrlVYMAKC+hgsHD&sz$RQ`~`Go-L9br zCs0J4B8TP;ZM4Lq^K#=WvGSlHL*_-)+?$qtyJEp^2k^i>XB+ zUF$4u?J$v7rEB?1ksnASj&5)J3^J3<8PkC2-74d*#8!vM+Dbkrg6;%9a9}?iOSWA_ z2ib*N+6wU`DsHA5Tx#~<7DdVQqS5CzPcCOtqzm&ZzA?tXjWn7=Yaa1DPXjq<)w!dp zoH|f{)zHO~@p2CTOt3^O%0zq%Lo)Cv>>4Zi?RxK`~sQSpbpPJ{#@fZ`Cz{VyVCui`mX$~W7mjt{Q`RZ0GG0&C6* zbf2y;BxJ;X*oD^QAk0$VCq=^F( z!zDedA+Gi;?_9p}iHi`U)rAt$i;Ras3v#bv0XqUjOw1NUX!0>{jMOB`Q&_sqLEcp* zjPO-@lRA?Zf9)RJAP$q3zsZhh$#PUrepw(lh%sL~do`-m&EUv3(068y8R*1B!3Fcl zh7YTrVp6$rD8mLk)8jKI$$whVaT&}l%kUGV_)X~Sr$q`o8IarHLvMsH>O7_uVNMgL zrd@?qU@aMQNdQDZyT7)y;@Nwj8?$+*f5KN&4o)#yNcnkv?OB?NZrz}@Mc;7@_XUjq zOK+Qtz@oc7<{)ORbfkoU*s8#y_UhR)M?j+p$}mjICiJb>832hmwu(jsO#9FeRe#c5 znxjj4-1E@?pc#aFc`1Y|ixfsS;8}Za8(_CIq{Dc=CncuwDvRhLS z)!pja!u7>CDwzGL-1tL0KlLO5t(>aI@4PCRW?(ikEIglYP|JpmC^$1A#Sq~buXpCR zryB4|G=}kGn^oG^k+U9>wN1}YlHtgE00qRB=Vj-b^uE{7BI3yw<{Soxu3wAZ9Yhx@ zj0)nldO4|7AiE>qL);@-XZ=QfH##S4CEZ5=0ypXKpOMs#lFrSvwnoEI_&(i6<;n(5 zKSSyL?YGnvIwSdNw2@dfA6ILE451U#jX!#rgk0e+2A8@5&n&A<13qv|h#imLL;ehN^} zsbR>OJ(uK3?A5XUGHC!0EXe7~oQUAmVmcZ4uNdO1WaI7X!N$pMreJY(USb3ObFvc_T-2FZP=kgRm>`yjZF900o2~Mh5L_Xgv!sxc7$%7HAzX6P~7@HY*deFzZ!n?rm` z+!JqjHqX(=`Td(&@B#sN}`5^ zqw%1g$ulj%Hz*GDryl1&*YTB@Q!bG_jJer6Op>hoF%rGScd@J*#L=xLG~bp2TML^oi=rcKZEhwv9x#5uBSRabRPvwl>X4r$ zD2G3D23hNCas_&FK9V5FZ1PV`hHdSdAOY`8@BQ}UQpI73fp%IXWwdI=rxAn-9|09Y zCrHFG1Xr_yqEvpGehw@9kXj(0iyz3SmyIt7UYZeK$FGrbw2wRVvZ}a}C+ur3_#0j; zps}(DtDnBT1Fw1LkZT0TlRyz=TL2H_prj(6Xt=4%J(uwBs?Q54gngQJjqhY*JSYa6 zv>Zx}46UHe`t7JJ_xgR?+ks{q*@kann9|fTxh6}Rw+98D=PFlX(Po7I)PAF`*pFa| z@Ug295r}$KKeRagCnF03tuprQFR_rMKD0sk3>65la=)AB9b=R6hz28&X?AbbYqwQB zMT~lF*EXKUW1MCkMJJxokqaG!1LE-T1U&?rGThA!tu8%g14J_j$wB?Rq0@lp^;Z=& z%1F2sUbCQd>S>KVbYvbT2BsO%#TA{CP;WIt9lu{NU zIK@``iO+0jastg`ffqf>j+mX?y7FE^?p&sE2@bBe9dn~!HiXi@+F8Z#umLbyXzZ2TyLbR9SFiKnGFovt!Ze{lZ`S$;B$W?`q+|} zGO7N=Wz?H6C=yc~_jy9p`;gk3pEiuu6vlx9C-{Q#8fb-B3}Gio=KGms24Of)eFT!U zS96Fa&xyU>IA63Hic?*C-nnXU$!`T0K;p-vu9$#sdH^LPbTBT5&pPxfvhOB3SwrUs zfLB}BJ#!Nh+E@cDd4h0|=q%S0g#gWV;u?5LNaK1y1QXuJ4JyF&L*)gQCrEe3q)*wZ zz9bUQ6%-pb+CW25RE~?okfj8WCG`M#m{GMto_L*7I91qEbEILzCzC!PXQjm`LKdn8o5_D1#{BlIz&6Pcb zjrj<8DqsGE7^BnG>9%{MVHAeKtvp|B2q*Q!SCrx%gJ1Ft^J~y1kSu9q(+sMPZe*nB zvr|Tw3Fnk3g9{~CH11>ptQGC4Z4N=FmFX*yJzH+}wk3V7VR93UKleTKVHCf__1c#s zL)S77Eu)3!SBD)G7Ok5(Zz*}E`;l0;S{2Z)ZH!%yaD;6{alofhRf%YWrD^|~~&i+dX)R-0~k zAmJTgrd)J@g`U(Wr7l-YBT^?7RU7%;`#jfj=~N=?y{y$Zy=^^gIkC!-+ewM$0=nzR zpy69hoY}{?d-9wT>@W>J^`+8O69|m=PeKeRpP|Iagh}p9k1i8z{L$bGK~MB%jvkF} ziWwHn4?iUzz#iLs?R{&^uemHBL~Z8~`nLp}R4~PHDaD5UIl6AL`fq)M)gK&~s7#3|;ST=Rx^)FE2)FaWSeU-5E2 z_`b-^MK3C%3?P@z7YoI`*fvr=J*DFba6q!?D5tNk?e#Eb#`d?WyR2)i6Mv8O)o-1P z=RSPy%)5H>97+23XEEq8RAuNwbqt(dHe67L`?tSR&dA}N?k&t}2+ z0sSMsfQX?u-8D4sQVj+D5*i|)dtiu;hoVsY3mec8LBi}6&c+;ieyrt`<|_?vM{+#% z${z$$e-dS&4xAzBh?%yE&AX`t^Y@>3Kr<&Mc)f%8k1jyZUf-A97@#FYu8)-ir*JJx z>Op0%ZnflbknYIiI)>l=8^wF5~ij>@-BqJViV!_>&P9)lxYNVQ1 z1WDMCK;^oL)kGCjHPTXEto%Ogr~V~a-0U4^m7kQ3-7vj0an@(alKBnVpT^$<><7%M ztRi$8)31aSXbf-G?vo5FWSgu8BPRC9>4qDUy!uOngIMJWBr&Eeq1p|3%_M$eXaReh z;Q5;ADumB7k*RNK)VaAbi@fi2@DDV;^Px(Gq)QO3lWnj{6sA8z4|B>*!jXxgIMm9b z8>MX+R=RF6JViOO6Rd$ zgEb2kRKYpB1)l4gEHI2_~L>?Kp*ky`gveBYz@|OEadu zga)J_CNr{a0j{;*CSC7r1Lwa&45utCjPPAX!~arBS#BScX?v#1TW+zEp7um=F_9W} z?E2<2xFN8I3FFafQ(SS{DAs~@t6GpLXLY3w7W-KCytPnX+}_>BGEI;G8Fkg6a`H;K zZ@GBt+7aEnHU=_5*-;{v8=nvic3oa17t zbJWGiCekq^@{NNe(no(E$?=3ViQ8kPX#iYiGpcTKv)S=E>)r*~gLKd#^+(2S`t+=# ztRb*Z)X3^L%qJJra=)|n!5xTpDiJF14q-u=|BU9-nDd4#?LG)i5H()Ub$iJT64$RO zst>e(*>tvr_`RndxRJ%pscQiz2+zt<3MC+{(ZW-h+Tbz|JPD4P@v)8d+-o~z+hF*m zjYW-FEqC9qlv<94^&S!-ziN%%WXcX!cR!mm2s(8TxJBR%DM?FrZ94?-B$=(!C$kPp%qG$Vd9E1 zp!i}vPTZR&@{PHiKwxuwP#35>5Dk9#2{F4Ou^SFt*3{Ym6RD)s_sq8O(aLw=(Kt*m z?APtu9NZkdeE4@j>)UQrLsf8?o!`x=NRn@pYo!a4f%lenjp&Sqh%l^2Kvv6*{zGx- zy);2OXM)6A<}@sCFh%P+{C}qX?CocM5FfTIvf3lhz!H>eK{`z&6!qfir%NfzSm4b~ z<_N?#FLbZ(>JQ1!&h%G_#F-!Vf+s}F?LfEq@TtKJYIg{G`?0|yUfnS^E*1YXGn6o) z)Pu$qF+=+=Par&X>sbCMRN*&1z3ya{Q%5&PRz>MG-<`}%n zMQ$T%i!HAtW)R)Gwi6N$31`^4t!yVy1iUEW3_~8~FUZW&%?Dg<{a=+Z&RcqYL6gA` zn|1KxfrRqtcFV>OgL18p+Hm;`(&rVp03vsf-dyM&TQ?n|$xlbhB>;md`7mSwV{VpA z9%#2AVyzo4eMqhDpe3{dW|66Jy`qMR#w=LM!WdA;F}P(P;k^JDG`4^+NnMgbN2vNH zn{e)>*WAQa9(T86beh3YDS-XC60sgVunPj{&jk1-r&43gcMuk2?)}dw9B?6^-_f1l zE+P?y>ML|^2Qi2vSmlDO*dn~6UIj#$?5~zJ1uY0OiYyjh^YX~KIYX#yC;Vku@YS$4 zf2DmKYv%nh$VsJi6!_hSj++$D3-W33y=&ZJ$#VVgviQ*~G-v|=A@i(335SSL>QaUa zaxssGe5SYfDZNtVFn(S2*7abLnp#<IJ*1ZG{U#euX+|5rh8jvl9*kDAUhHO@_kXDOPze2%1BZ%r#2s4dZ zGzBD{SM3o!jSq_qPw_$UI=D}O1m6E`>eb~%RH@< zTr;qNr>glBp|hOEr3N0iRIgp^xTZ)AD>L*8bxeiX$xsAwWfYwnw{KZaGdF&wbO|$x zlHcGh-&Vq^uS_R(KFZmd$C&bKPAoEBb+EAUCmHCI_)=%Z1WBHGPvg28D$HamyvEAV z-?13>XL^0fAVZY^OwZ_(Yg|F2LT|VHJnara* zG*Rl9o0yMPh~C1f5@ItMcKlcITdYSWo{0CqGq75ojLz@R37r(Z`)SE<@r?gn_03a& zLIn9Oo%|rM*v*O8o}?L6t}5Pb*O;bX8J0$d_U+oCsHxt5210)3sg4~X5VDBYI?GA~ z82Gvl#_1za05G<1&rbmfQ9D zOV;;XCw+wJi#E{QZ-ac!WOZ9?E-w+|m_d6#^*PwDA(|f+)tr2`R8b*{a;f@Vv}ccP zE++&?L{5IiE^O~CRQqoS2y&EOFRI>w4lv(Y!;XZnOynDj7se1YR)RCoxNd(mMlKhNvCT6s6}kjoVzXAQgos@G;V>0oa=7?$7ZR>^e~gevmqJFdIo$# z;XHe*P(27JBAib{|69*F7!qyn%K|KUWY(UxLyEUWMD|-@Pt96L-x`zI*(Qt0 zD0YEPF{0pD4}+veIDrY<`)J#XUQ9nLf)CPXY^Nla1-m-?tVh>$jqGt*&y_!OneXJM z0QW>8%4fkNvbkw>I;G9REQpNiB-IP}DF>ylEbLpZe)sqLUG_OWOdo3s|L8XTa-cNM zMSFC*BDgK3-23Wy?jA|mlFf|Wf7o(MwWY(f7wPOS2#owD0nRSF{uI?d^gz`KhIbUn$@{nM~^c3A9 zgmJykZ7TVrQunsqjt>0bzI#}vr`BJn>roa39QFnvGo)R;UPxhkFanj=4YTZ#M5+tK z{mBJ&&;G@ZlF=@#R_IkNlr2QY&g^>7M&;T^n6tWlliYU}zq3W+H3#;?fawwI+%Pvs znSd|0a;rC_eW2iJI|`~_fU%ha>U+=hzRE0wZ!C8ptF=aVAiJq10F#BH(6w~bAS}%U zRTPxf+~M9X5lYer%zR03Ws}?Q1E$7CPOBkkj+=hYL5VWK&S{f$W zW~UDW&|FU?9^J{EakyRl++5v9sh9<7M{KVe2uOK8gm?gvgh$(c2sVR>L}v4s*elOP z5!<>9_i#LvWt>H&+0N3AqwJc%MKJc;K70Z_!Xx}Dz@F{x9Pu}J$+PbTk?F){0XN$p zkz=j$=UH`jEb#qH1#a&L8MS_e*LgDnPM?Pgz3`eXY`s7 zqc?Jw)p8cAVPkU(F;sNb@RUzd2={IUizd{vI=*6Iur7agxJf5gjW%y>9BMX@8XP&M z8z_o`xZ=vCh4s>S$VcSdBD*V3B<9m0OS~x7F6|{Ht(KlH>P;weRDgB#-&i+G83DLu z85kN)z;|4uX~R*&IDXcNGyG4_@p%+?8?eV?qv!X8OFYmMIRgt6@dcB{6*P#;m1X{Z zpkY7-z-F&Y(<_Qw_({WK^2xohKLR{IUU|vT&q6p;aaIb1|Ed- z8249YKI(Bab>S>ZP`l)OZ)6o}6T+@rf#m)cb_(XwtOK%x@F088+szlyzzOk$5Py>W z|D$clGVJf|ScP-DAG%y60HzG^OjVT4SNJcPnO)%H_`ZDJa?ZYM9JuasmvH` zGjSI~W;!VX4o!Osd^8G4es!{4{cD!c*7exq-m!nXsU&RtsxfYwc4cHWoDbZt56dfJ z8fQ1W^f{aV0)Uf-+7UEH=!lwF&Y5@0ru7R~v(D=e$;a7a1tPF{O&%XiF=*48*2=@V zJ(q)<4I{?!d75)osU;W2yo_jk?R{6{e2E_u8j(!1n>|dbxJXG(2ML&i=R@jG?e>%9 zikZDHHPmO_dces=`R5h8F_$T<)v6@#xHq7Q>{$y4UZ6gNxBMnt&e0NG^?@_qU(5R~S7>?Pb80)Ldi{;d=HMQ0cgRYSkK@IL`(VCykmy!aY zuzyMBVe%n2WQN`{Y$cp=o~_Nf)zSmlbOpsaxFn>Vc>0Bo8)OB~*U0~#;Z zp!0eP zPcO6^R1$n9v&b^|yxpCG>KTRk?RRPii@=sG&#@tqDofJ=aA}h9JqqqX_UZp79Zz0l z6n4M@zSG@f65vayu7oL)2A_F{=KglKu6;5kMJZ&?cbu+&(cKSTWvFFKm*g=n9zlfU zRrQKRk--j{#?p+lvMuJKsMbX8ZvF=zjzOcy=HX9wP8 z={!b+g-`t;qYhOd(%FX1^PlGhwj0Ba68B8J3c{aZq`g6}|3boM{%>C?c4kX{(U=dE!f3+oPZt z#aWQhGeFA|SciD69v~}TLQf|n_`nx{L-^szrRfsswJQ4;iq|ThPMqXGL~yn@1W&&r z$jP}~_-^s;MY4re?381Qq>6o#wA}A+P zlOND!R%WQcSgZGh8`-N>dfg8>%k{B7A-_;_I4d|tuYq`? zvO!`?27HizsrW4NfwXwM2?TOOj5u@mxMlWPF5x@j0m-U?9zQlL+3weqOHdm-bxx<` zgj1Oj$>o_^y-rY;yAgiQd??745)G)aqs$dTYYF`jS-**|~RsnzSg6MCP&T7-DME9@!7?f^ADIAnL@BF6M1bp$tnY4_vAGo(i zXrjdisA+vewRTC``F#lq)(uE!`}ba{P6`c7_mb0NK)aKR>e*FAm9uDZ8C$+uGzXqsiKc(8 z0bVV=f&hvR)#CEQeO(TP9_tgW;mVZnHKM5*@7*0iJG$T2$XBmJ_V9y|m#4Brjq2XX zZqPhZ)R&rzN*^Z5qSapv7;yY@GOmsUUmvT_vUeo(QYrq3&Qf3F#EQz2TCd$o*l6)Hwb2)`)<{4QL|wHwgsG?L4w^M%AkRR#O~JEIrE`fgkDWiZD{0GK8Lb z*!b%nTM=yz#^DIxtG@KF@I8ATUFW7eKMKkNHZT5Qjf+_*Rg3YVD2c&1&<|72jooW33%RBW(eO9{e*mcS$n-S#` z)$-3tm8pI9i_48MkgfdC;o8Ffd{w8qq9! zsa}Ft%OIP63}J$N3uL3>m0y=jInNvsL=U8C zA0m@N*cM(6KwFeyz5Ry9ZODhDg~fe#>rc@;jS@*WCb*04dGw#t8NSaxkG@az!L$lv zT+17&w%2vQGP`h+$aA4$?YnM>hb^|l7~!88Mr(nm9by|$^JDN3at*VVm{gd5fU`R2 zf37tSu67rlj1HX~G6~B&0H3Fg_wEtH;Sz}v(htcJYqHIf#Xl0wEuYXnH`|p&g4CDu zLt}rrcEnM`AVMsdWv(_uSA710%aUJ>M%bL==|;R@8vqmm7ncd+?%CDb?h7~A^WN-i zHGp%rYAWIQm9!Tad}9$4Qt;5XqUJhwT`a0yp}gBzZT)vF^4oE3(sA^_XLrC~)#92SUQP zacs6Fx@h3gpT^BLxX(^Jx$#IjfEKhT6EbYzj`$@8Y2OCE^y%1S^J4s9vs!Afa{-U6^qfXYTb5Sa>|0h0RQCr6MMc&`e#9ano7=yXS`59TKCd(NrUby5`G)kX-{#5M2)kIX4hejf4JtW%xB z%WWPIcr;n74ROMd&i1#fJ(s}ht>E}jpHexpr=gmXUr;CA6XqQ(Qjl|K75{x%E@Zy= zhW}z|mc!c3VDVWRdlNy2!u)=EBc(B6-R>Y zKoU91I?I3|{ZP%+llVi!=FJ`w8N|(q*r>pVRmAwH5;~y_E>6GvfgXj&`>0bjKO?1# zflXhBzZKkHD(;6PVPWzmAz_a0n!_{o(;^$X4N33z!6T}G!-m~B-^_@Da1NOr7`*Au zG_6}cX*hXy9XD}M9!13ajBOARf{YnY_s(!BgX5>JW-%rL+lZ_^1|mas|JKouWzTp; zBRqd{OKB3rc_5Kk^J*Jf$66(V@VMwQ9WcwLej=KA0xnq^lj&OxIZZteNUJ*~<= zP-gmI_~*TQtC)fmt|z==S@l#-#>q3N((7jks)Sv%=-M@d0%d`%bnGZa)|a4Z5x;Fo zTdC6!s9zUM<{qvRQ2-Y>uzIS{R1 z>M_kjANm|FT+nE=e@UFU(CsaBoB41(LS>*(Mrn)|%pDPoG7Yu?ciymU>tbH^qZ#xo{w40T$m4mOx_!oGX3gg7&}=|IId zpbDC={}yc0^(>-G+y;*+{eXwgEzK_T?+8)PKMdGrfU3ur?~i`yG_C2mM=k!IO+7|}$VyJe!tU=TP;jjVw~_m6 zY`p-WNT!oFXT8`>&u$SNPG*UgEj-Lt)eOlG$5-p*zI4JNbin-V-Y5>S{k3Uh!Z`uQ zZ!%~avJ}xS@Htz^yyS@W3I*Q67Fz z6X;+@pDLyin&rVAt@Lf;mxJ)anf&jk8njlmJ`_W8FF<`GRec>UKr3q2}OOJVlpkHWiafUA=le;~}R)JxhW#t;C5u zJFLe%nEdH`EnlD%5L(c*e!;X8Mr)Q9Y*%1(>*~)7@&xNKb*TL`6VJ2s5b>=$jUJQX zDdO9XMIafo6Xq4VMA!dMCI6xcL8?@FyP#W z#D=2!r}0Ar2Y==CdSI?FO8^c~?@wEK0EdRpq$w2G5QW+o0y@Zszl*o~(DTQMMAU2` z4UNE1<^h%kcjyP)I9sm92}+hZXNFqqx=ftsHKsH(LO~pjaD}i0`iuFaJ73~G-}|^e z?Lo+T(5=MZUe81tVL=XBbjz$GLAGz~JOrl`#Chi9*KSp=0cWMD zZPLHR{Y!KZ2%CEw;LY(%)H|MXZY2_yapf+zNOr7~)lecO`7{r;*{+8TIxZ^CuUSDA z8#S5fuokKR(c^|m;6Nnn3ZJ+lJ2nCU1QH-xR%eFPXbkxGQToFtGyll*p|nMf!g!Uh zXNdJJdiq`ZAPY%y4IY+DFO%VMLl0XY3joqyQoBRC7rJvx=~J=5upb0Y$lw2hn8S}a zQ-8#PQG{Pyt|L(MCNoFdt8|uAIfegSoH)v zpJwML_dnY1a3{Y?1UAFTy&*a=1N)JCfQ9vyqUDh`a$b|n)R_O1#)(GqbCXni4)x3kz@TL-D=@V5S1!oes> zf8~s?Gtq#FTWkaHPOYFzCE@7tDxbpep*u#FhLgH74jsr(@%#>VK%&)3)9kfa0OG?g zJcn;B^&O>^^(Gcekt73>O`WXMlp<1V9VsY!#qwcLO{1M{6BI^C-|LcJS?QL5P|4QK ze^A;;7d)F~P6nk!C8v@;Dn~pbE&!|_myT*ll|Ox*9MS%_uIHxMK4bL?7`5q4GnKve zefn;^ih*z94JXqg5gCd<*g(l$_N7Ck3GMf~f-B2@w=}?=U>n|J7@u3Lwjp8Z{T>V0 zl(oq=6f%Ak53^IETEeIwq(t2{>i5DPyaunjqWxldY|!5?^nt9Y5}pLz!rr0i(1!a= z1m{A&xqIjl{E$MT$+PP)n{^8MSakC}G%@HiuXUUZGyyni!gY}K?gv@m;*nlJ3Lv(b#o(s=RQawo2%SdDh%!lT z4UZ@j?9-(I8*K_&KEC41$O-MGK-09SFt5(&>tqa3E?T&q--mU1pPUsX(HL|w?iwNM zW4vV&Cz`{b4>lKmeVVx7Hw0l_KVpNZ&X{HwD-`f@KhCh!iu3H43Vo5m5x0nc%Nz|^ z-*U<<6Y4!g{oR8AM2k1jmy@A>G}6t7VCHw#E8YGt|9cL^&JG-!kTZ&>M-r|hmYWM@ zbI`609;;`t!WbIy=F2$|3ZC45oi_;Rx`+Zh={fiHiqerp$xZ6=b9hpp4t)bow|LzQ z0tCR82@S@WhoB70+G)>ps+#bc=rnYz@HqkD1E+Q*2{6a4D(tws#PC5Jz=x*2Q{Tu@ zbA}o&p#06;XKE#Jjj#C$MeA|E66&r09^C86F}0d!eID&7`OI%mN$f=EzO%|AXcrt zCM$0_3yJFMHhxM)N^zZo6Ee1(4>}0o*c%^kMvaDrM=V{WcN%3xCxh1i{-{q?e;AEd zlLxJ;PPV}Xec&)LGxM7*0E4*>NU}^6Wqo%?8_eeDhBTg*;VGixx>BQUUU3$`edc?II6l%U{BTc|gCpRkiwbP((*$qupJvKzJjAOWlm|;4jO8Z@) z#6g)4NU@`8@Qv+jUw9Y*(P2M-F5Db4u~h1cp!nI$Q?OK!k=ZixtSM=|(p6;-(Umhe ze<;Taf?unrRL|bGWkZ4q;mnhXu#V~?o)+;b%3Y{l1R_k@i@a2KiA&MB?UyS>xld36 zFz_ZJKewfew9z?X?@PY00-;disgpj4Rs&P9m$r{L}0xvCG@D~Ha?T%pPD7^ZfT zzIBft$82#XfDC1!)B)*dh)~Q}#5Qv7(<-MfsW1XH7%4FT?0RxAMQdaICj0N0|I`zD zNLW}%sg47WhyFv`oIgsq^BTwO z+QN7*VOjE8D7$_Dv$L^*+Qe?=WnU62*shBl%Ofv@#W-({X38%^%fF7a#jMq@HhQDV zqg?T(B%X-jJR@rSrafq-Lh{$9)T}M*ZL3H2_if6DM}IN&=Ul7crSJFZypSEfN;z$a z`N$!*AeehX4BI4Lz-=8&KZ}&Vw_?of!F=v$V$-QwJ%> z-7BXLX;6fa4NocYUuQru!kVA^k76b za*eMET(6BJBLgEL^ks*i`C}gTAju38xFK5Tkx1`UNIzcW(?!$N8jtiC3qgEu1}oA? zOmsqpI~ES4p3drGs=AXa@+izZU)+9(?3=G6c&!Ne$}X#5f^{r-(6P2YKf4)hE6#z! z#i)tzo9=#FHa`#pCKIAsC6)-a;TyMRsN|kIiCQBRn#Jhr$y~V|m~IeNY&}+&tvJ*D zAYOjIK~ew}FOt{PMVrdyPItgT zpa37%#X1w>d`gIHF63IbqdWULqJ6e@t$Ic98^9^1t`DcEoOYlB31LlC%~PVtE#P+K zWQNJzOl1y!w=hy`J$o6M|KBP>qFmHV!BlT~_p%Q|F3@}R7y2fH9G@~p0QqVIBB0uF zq#O-F)M3gt>|V#Jjyuz{OTtlp=QGN(c=LvZ&*T^ksTAvr$YIFDd7v#DOs_OJ$oNzb zdCcDSOwtVS_(c3on!W~e)>O5J~SEA9XIagGa)|@E_82OQ*l6OaDQRbh>4|| zC;6RZO&OZ~Y1=`V5#BA(@Mbc2hoBsnw#(knhL zqzTuE{$JDupq1H#xTC!+@&z1HEjZu3tk-ZlkSCyjR;`v`U>*=L@=Yk0ID{qeyNPBB z1ygs8%U=nbbpO92At^l>k^Exe@G&_;sZAAaab#!%&Y3p`ol4njl80H?WGS#n;4S9; zU^6Goq_glX$f13{Zrg?*)b2D;U>=q~^FL{)e}tTRAee&h z(Vi(6&7OAHnE`#dx?R#I4JXWj$kC(C}*NfgEf7!@2$X9{rt8gS{*6 zXT7yHV8}m9cLj8=wRD-;8h`?VZ?b_BCK!KPd6b>U)Fp4 zVhv6ky+k{qoUVRc6V45MikQ>iPZ2vE)=D*$*a=%HQ+;(bqS$3H`VNV)Dg}os&q@qb z&B%>^`|v-OzbK67{>`&W3jFbQbYg) z)Qx_X^tq2S<(>y%tvD{IfGz1V*+-{;%k`*M|uWsC5yW#;5bGuJRj$Tp1>98h;cA-^=&U;e-@a$h&{I zOS!I^3C`Bh$nsW3YuD9>$JGC%1QN*{)^d#4n;Q!0v8oZS=H$iaPDb z2Aa-<32H{!Y~_nX^&Nuu(`=jrp*AB)!;b}G63>R|C4P(a(ehz%z4?rudS48a5!!Kak5)=+s%;~e z%%D5})gL)b6M+R5Rzdpj9Z!}6%>Q{5o*YxL-!y%KQfkq_H{rL~Wg}|Qp?^+QU|N+n z@k?aaf{{R3@SaOEb#|tK*Lk094c1qxq6J3!%W2)rHhC-Lc&t&v4TWtz?4}BB+$WvG zY1avM$xR(h3OgAh!=>?M*|;#p7BI8%C6P6)8)L7%Xu6CL6E(~e^}1l0ZVYOvGUp`& zV!LR1Ow_-z?PZ_@yVGl}D90X+^1;%&4^*>p&d{B(X2RP;$XO%5blq~XM$@7laHL~QsLX@kQ;LlDT=NLb{6{}MX zy$#)I>Px93iQU2f?Q}Q}^8iJd&{n-It7<*T>{#P=Gb+_7TLZOn^<|x(iYJP%Yj9dB z3`hCC2c_~y_Z8hA#w7FX$6Xk_im7x#Jvg5Z{WU~%xtqFL>@{P37BmvvID@xE0QY3~ z2gLE)i|7KNU)Zc$a@xQ{T8+TkJinxy2r*{~gqU&G(=}2eqr&~k^~8BN`P2}n`_(>! z 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 literal 0 HcmV?d00001 diff --git a/img/cascading failure.webp b/img/cascading failure.webp new file mode 100644 index 0000000000000000000000000000000000000000..443206ed1aa00b2da2e7a5d0607f1f14efcd61a2 GIT binary patch literal 62372 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 literal 0 HcmV?d00001 diff --git a/img/field/field emitter25.webp b/img/field/field emitter25.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa48cdd52ef796b7b18c69613a6afe15e8dca598 GIT binary patch literal 32980 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�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 z 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 literal 0 HcmV?d00001 diff --git a/img/yield stress.webp b/img/yield stress.webp new file mode 100644 index 0000000000000000000000000000000000000000..a4be7c938ce04bdc4845215e167dc12076510d8a GIT binary patch literal 58264 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 literal 0 HcmV?d00001 diff --git a/js/bullet.js b/js/bullet.js index c77361f..67bcf5b 100644 --- a/js/bullet.js +++ b/js/bullet.js @@ -288,7 +288,7 @@ const b = { if (m.fieldMode === 6) b.fireCDscale *= 0.8 if (tech.isFastTime) b.fireCDscale *= 0.5 if (tech.isFireRateForGuns) b.fireCDscale *= Math.pow(0.82, Math.max(0, b.inventory.length - 1)) - if (tech.isFireMoveLock) b.fireCDscale *= 0.55 + if (tech.isFireMoveLock) b.fireCDscale *= 0.23 // 77% fire rate }, fireAttributes(dir, rotate = true) { if (rotate) { @@ -1508,8 +1508,9 @@ const b = { }, minDmgSpeed: 4, // lookFrequency: Math.floor(7 + Math.random() * 3), - density: 0.004, //0.001 is normal for blocks, 0.004 is normal for harpoon, 0.004*6 when buffed + density: 0.004, //0.001 is normal for blocks, 0.004 is normal for harpoon drain: 0.001, + powerUpDamage: tech.isHarpoonPowerUp && simulation.cycle - 480 < tech.harpoonPowerUpCycle, draw() { // draw rope const where = { x: m.pos.x + 30 * Math.cos(m.angle), y: m.pos.y + 30 * Math.sin(m.angle) } @@ -1559,9 +1560,26 @@ const b = { // ctx.stroke(); // } - - - + if (this.powerUpDamage) { + ctx.beginPath(); + ctx.moveTo(this.vertices[0].x, this.vertices[0].y); + ctx.lineTo(this.vertices[1].x, this.vertices[1].y); + ctx.lineTo(this.vertices[2].x, this.vertices[2].y); + ctx.lineTo(this.vertices[3].x, this.vertices[3].y); + ctx.lineTo(this.vertices[4].x, this.vertices[4].y); + ctx.lineJoin = "miter" + ctx.miterLimit = 30; + ctx.lineWidth = 25; + ctx.strokeStyle = "rgba(0,255,255,0.4)"; + ctx.stroke(); + ctx.lineWidth = 8; + ctx.strokeStyle = "rgb(0,255,255)"; + ctx.stroke(); + ctx.lineJoin = "round" + ctx.miterLimit = 5 + ctx.fillStyle = "#000" + ctx.fill(); + } //draw hook ctx.beginPath(); ctx.lineTo(this.vertices[0].x, this.vertices[0].y); @@ -1581,6 +1599,42 @@ const b = { } if (m.fieldCDcycle < m.cycle + 40) m.fieldCDcycle = m.cycle + 40 //extra long cooldown on hitting mobs if (tech.isHookExplosion) b.explosion(this.position, 250 + 150 * Math.random()); //makes bullet do explosive damage at end + // if (this.powerUpDamage) this.density = 2 * 0.004 //double damage after pick up power up for 8 seconds + + + if (tech.isHarpoonPowerUp && simulation.cycle - 480 < tech.harpoonPowerUpCycle) { + Matter.Body.setDensity(this, 1.8 * 0.004); //+90% damage after pick up power up for 8 seconds + } else if (tech.isHarpoonFullHealth && who.health === 1) { + Matter.Body.setDensity(this, 1.9 * 0.004); //+90% damage if mob has full health do + simulation.ephemera.push({ + name: "grapple outline", + count: 3, //cycles before it self removes + vertices: this.vertices, + do() { + this.count-- + if (this.count < 0) simulation.removeEphemera(this.name) + + ctx.beginPath(); + ctx.moveTo(this.vertices[0].x, this.vertices[0].y); + for (let j = 1, len = this.vertices.length; j < len; j += 1) ctx.lineTo(this.vertices[j].x, this.vertices[j].y); + ctx.lineTo(this.vertices[0].x, this.vertices[0].y); + ctx.lineJoin = "miter" + ctx.miterLimit = 20; + ctx.lineWidth = 40; + ctx.strokeStyle = "rgba(255,0,100,0.35)"; + ctx.stroke(); + ctx.lineWidth = 10; + ctx.strokeStyle = `#f07`; + ctx.stroke(); + ctx.lineJoin = "round" + ctx.miterLimit = 5 + ctx.fillStyle = "#000" + ctx.fill(); + }, + }) + } + + this.retract() }, caughtPowerUp: null, @@ -1602,7 +1656,7 @@ const b = { this.caughtPowerUp.effect(); Matter.Composite.remove(engine.world, this.caughtPowerUp); powerUp.splice(index, 1); - if (tech.isHarpoonPowerUp) tech.harpoonDensity = 0.004 * 6 //0.005 is normal + if (tech.isHarpoonPowerUp) tech.harpoonPowerUpCycle = simulation.cycle } else { this.dropCaughtPowerUp() } @@ -1893,321 +1947,6 @@ const b = { }); Composite.add(engine.world, bullet[me]); //add bullet to world }, - // grapple(where, angle = m.angle, harpoonSize = 1) { - // const me = bullet.length; - // const returnRadius = 100 * Math.sqrt(harpoonSize) - // bullet[me] = Bodies.fromVertices(where.x, where.y, [{ - // x: -50 * harpoonSize, - // y: 2 * harpoonSize, - // index: 0, - // isInternal: false - // }, { - // x: -50 * harpoonSize, - // y: -2 * harpoonSize, - // index: 1, - // isInternal: false - // }, { - // x: 45 * harpoonSize, - // y: -3 * harpoonSize, - // index: 2, - // isInternal: false - // }, { - // x: 50 * harpoonSize, - // y: 0, - // index: 3, - // isInternal: false - // }, { - // x: 45 * harpoonSize, - // y: 3 * harpoonSize, - // index: 4, - // isInternal: false - // }], { - // angle: angle, - // friction: 1, - // frictionAir: 0.4, - // thrustMag: 0.1, - // dmg: 6, //damage done in addition to the damage from momentum - // classType: "bullet", - // endCycle: simulation.cycle + 70, - // collisionFilter: { - // category: cat.bullet, - // mask: tech.isShieldPierce ? cat.body | cat.mob | cat.mobBullet : cat.body | cat.mob | cat.mobBullet | cat.mobShield, - // }, - // minDmgSpeed: 4, - // lookFrequency: Math.floor(7 + Math.random() * 3), - // density: tech.harpoonDensity, //0.001 is normal for blocks, 0.004 is normal for harpoon, 0.004*6 when buffed - // drain: tech.isRailEnergy ? 0.0006 : 0.006, - // beforeDmg(who) { - // if (tech.isShieldPierce && who.isShielded) { //disable shields - // who.isShielded = false - // requestAnimationFrame(() => { - // who.isShielded = true - // }); - // } - // if (tech.fragments) { - // b.targetedNail(this.vertices[2], tech.fragments * Math.floor(2 + Math.random())) - // } - // if (tech.isFoamBall) { - // for (let i = 0, len = 4 * this.mass; i < len; i++) { - // const radius = 5 + 8 * Math.random() - // 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; - // } - // }, - // caughtPowerUp: null, - // dropCaughtPowerUp() { - // if (this.caughtPowerUp) { - // this.caughtPowerUp.collisionFilter.category = cat.powerUp - // this.caughtPowerUp.collisionFilter.mask = cat.map | cat.powerUp - // this.caughtPowerUp = null - // } - // }, - // onEnd() { - // if (this.caughtPowerUp && !simulation.isChoosing && (this.caughtPowerUp.name !== "heal" || m.health !== m.maxHealth || tech.isOverHeal)) { - // let index = null //find index - // for (let i = 0, len = powerUp.length; i < len; ++i) { - // if (powerUp[i] === this.caughtPowerUp) index = i - // } - // if (index !== null) { - // powerUps.onPickUp(this.caughtPowerUp); - // this.caughtPowerUp.effect(); - // Matter.Composite.remove(engine.world, this.caughtPowerUp); - // powerUp.splice(index, 1); - // if (tech.isHarpoonPowerUp) tech.harpoonDensity = 0.004 * 6 //0.005 is normal - // } else { - // this.dropCaughtPowerUp() - // } - // } else { - // this.dropCaughtPowerUp() - // } - // }, - // draw() { - // const where = { - // x: m.pos.x + 30 * Math.cos(m.angle), - // y: m.pos.y + 30 * Math.sin(m.angle) - // } - // const sub = Vector.sub(where, this.vertices[0]) - // const controlPoint = Vector.add(where, Vector.mult(sub, -0.5)) - // ctx.strokeStyle = "#000" // "#0ce" - // ctx.lineWidth = 0.5 - // ctx.beginPath(); - // ctx.moveTo(where.x, where.y); - // ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, this.vertices[0].x, this.vertices[0].y) - // // ctx.lineTo(this.vertices[0].x, this.vertices[0].y); - // ctx.stroke(); - // //draw harpoon spikes - // const spikeLength = 2 - // ctx.beginPath(); - // const spike1 = Vector.add(this.vertices[1], Vector.mult(Vector.sub(this.vertices[1], this.vertices[2]), spikeLength)) - // ctx.moveTo(this.vertices[2].x, this.vertices[2].y); - // ctx.lineTo(spike1.x, spike1.y); - // ctx.lineTo(this.vertices[3].x, this.vertices[3].y); - - // const spike2 = Vector.add(this.vertices[3], Vector.mult(Vector.sub(this.vertices[3], this.vertices[2]), spikeLength)) - // ctx.moveTo(this.vertices[2].x, this.vertices[2].y); - // ctx.lineTo(spike2.x, spike2.y); - // ctx.lineTo(this.vertices[1].x, this.vertices[1].y); - // ctx.fillStyle = '#000' - // ctx.fill(); - // }, - // returnToPlayer() { - // if (Vector.magnitude(Vector.sub(this.position, m.pos)) < returnRadius) { //near player - // this.endCycle = 0; - // // if (m.energy < 0.05) { - // // m.fireCDcycle = m.cycle + 120; //fire cooldown - // // } else if (m.cycle + 15 * b.fireCDscale < m.fireCDcycle) { - // // m.fireCDcycle = m.cycle + 15 * b.fireCDscale //lower cd to 25 if it is above 25 - // // } - - // if (m.energy < 0.05) this.dropCaughtPowerUp() - - // //recoil on catching - // const momentum = Vector.mult(Vector.sub(this.velocity, player.velocity), (m.crouch ? 0.0001 : 0.0002)) - // player.force.x += momentum.x - // player.force.y += momentum.y - // // refund ammo - // b.guns[9].ammo++; - // simulation.updateGunHUD(); - - // // for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - // // if (b.guns[i].name === "harpoon") { - // // b.guns[i].ammo++; - // // simulation.updateGunHUD(); - // // break; - // // } - // // } - // } else { - // if (m.energy > this.drain) m.energy -= this.drain - // const sub = Vector.sub(this.position, m.pos) - // const rangeScale = 1 + 0.000001 * Vector.magnitude(sub) * Vector.magnitude(sub) //return faster when far from player - // const returnForce = Vector.mult(Vector.normalise(sub), rangeScale * this.thrustMag * this.mass) - // this.force.x -= returnForce.x - // this.force.y -= returnForce.y - // this.grabPowerUp() - // } - // this.draw(); - // }, - // grabPowerUp() { //grab power ups near the tip of the harpoon - // if (this.caughtPowerUp) { - // Matter.Body.setPosition(this.caughtPowerUp, Vector.add(this.vertices[2], this.velocity)) - // Matter.Body.setVelocity(this.caughtPowerUp, { - // x: 0, - // y: 0 - // }) - // } else { //&& simulation.cycle % 2 - // for (let i = 0, len = powerUp.length; i < len; ++i) { - // const radius = powerUp[i].circleRadius + 50 - // if (Vector.magnitudeSquared(Vector.sub(this.vertices[2], powerUp[i].position)) < radius * radius) { - // if (powerUp[i].name !== "heal" || m.health !== m.maxHealth || tech.isOverHeal) { - // this.caughtPowerUp = powerUp[i] - // Matter.Body.setVelocity(powerUp[i], { - // x: 0, - // y: 0 - // }) - // Matter.Body.setPosition(powerUp[i], this.vertices[2]) - // powerUp[i].collisionFilter.category = 0 - // powerUp[i].collisionFilter.mask = 0 - // this.thrustMag *= 0.6 - // this.endCycle += 0.5 //it pulls back slower, so this prevents it from ending early - // break //just pull 1 power up if possible - // } - // } - // } - // } - // }, - // do() { - // if (input.fire) { //&& !Matter.Query.collides(this, body).length - // this.grabPowerUp() - // if (this.endCycle < simulation.cycle + 1) { //if at end of lifespan, but player is holding down fire, force retraction - // this.endCycle = simulation.cycle + 60 - // // m.fireCDcycle = m.cycle + 120 // cool down - // this.do = this.returnToPlayer - // Matter.Body.setDensity(this, 0.0005); //reduce density on return - // if (this.angularSpeed < 0.5) this.torque += this.inertia * 0.001 * (Math.random() - 0.5) //(Math.round(Math.random()) ? 1 : -1) - // this.collisionFilter.mask = cat.map | cat.mob | cat.mobBullet | cat.mobShield // | cat.body - // } - // } else { - // //if not enough energy - // if (m.energy < 0.05) this.dropCaughtPowerUp() - // // const returnForce = Vector.mult(Vector.normalise(Vector.sub(this.position, m.pos)), 3 * this.thrustMag * this.mass) - // // this.force.x -= returnForce.x - // // this.force.y -= returnForce.y - // // this.frictionAir = 0.002 - // // this.do = () => { - // // if (this.speed < 20) this.force.y += 0.0005 * this.mass; - // // } - - // // } else { - // //return to player - // this.do = this.returnToPlayer - // this.endCycle = simulation.cycle + 60 - // Matter.Body.setDensity(this, 0.0005); //reduce density on return - // if (this.angularSpeed < 0.5) this.torque += this.inertia * 0.001 * (Math.random() - 0.5) //(Math.round(Math.random()) ? 1 : -1) - // this.collisionFilter.mask = cat.map | cat.mob | cat.mobBullet | cat.mobShield // | cat.body - // //recoil on catching - // const momentum = Vector.mult(Vector.sub(this.velocity, player.velocity), (m.crouch ? 0.0001 : 0.0002)) - // player.force.x += momentum.x - // player.force.y += momentum.y - // // } - // } - // //grappling hook - // if (input.fire && Matter.Query.collides(this, map).length) { - // Matter.Body.setPosition(this, Vector.add(this.position, { - // x: 20 * Math.cos(this.angle), - // y: 20 * Math.sin(this.angle) - // })) - // if (Matter.Query.collides(this, map).length) { - // Matter.Body.setVelocity(this, { - // x: 0, - // y: 0 - // }); - // Matter.Sleeping.set(this, true) - // this.endCycle = simulation.cycle + 5 - // this.dropCaughtPowerUp() - // this.do = () => { - // //between player nose and the grapple - // const sub = Vector.sub(this.vertices[0], { - // x: m.pos.x + 30 * Math.cos(m.angle), - // y: m.pos.y + 30 * Math.sin(m.angle) - // }) - // let dist = Vector.magnitude(sub) - // if (input.fire) { - // // m.fireCDcycle = m.cycle + 30; // cool down if out of energy - // m.fireCDcycle = m.cycle + 5 + 40 * b.fireCDscale + 60 * (m.energy < 0.05) - // this.endCycle = simulation.cycle + 10 - // if (input.down) { //down - // dist = 0 - // player.force.y += 5 * player.mass * simulation.g; - // } - // if (m.energy > this.drain) { - // Matter.Body.setVelocity(player, { - // x: player.velocity.x * 0.8, - // y: player.velocity.y * 0.8 - // }); - // const pull = Vector.mult(Vector.normalise(sub), 0.0008 * Math.min(Math.max(15, dist), 200)) - // player.force.x += pull.x - // player.force.y += pull.y - - // if (dist > 500) { - // m.energy -= this.drain - // if (m.energy < 0) { - // this.endCycle = 0; - // if (m.cycle + 50 < m.fireCDcycle) m.fireCDcycle = m.cycle + 50 - // // refund ammo - // b.guns[9].ammo++; - // simulation.updateGunHUD(); - // // for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - // // if (b.guns[i].name === "harpoon") { - // // break; - // // } - // // } - // } - // } - // } - // if (tech.isImmuneGrapple && m.immuneCycle < m.cycle + 10) { - // m.immuneCycle = m.cycle + 10; - // if (m.energy > 0.001) { - // m.energy -= 0.001 - // } else { //out of energy - // Matter.Sleeping.set(this, false) - // this.collisionFilter.category = 0 - // this.collisionFilter.mask = 0 - // this.do = this.returnToPlayer - // this.endCycle = simulation.cycle + 60 - // m.fireCDcycle = m.cycle + 120; //fire cooldown - // //recoil on catching - // const momentum = Vector.mult(Vector.sub(this.velocity, player.velocity), (m.crouch ? 0.0001 : 0.0002)) - // player.force.x += momentum.x - // player.force.y += momentum.y - // } - // } - // } else { - // Matter.Sleeping.set(this, false) - // this.collisionFilter.category = 0 - // this.collisionFilter.mask = 0 - // this.do = this.returnToPlayer - // this.endCycle = simulation.cycle + 60 - // //recoil on catching - // const momentum = Vector.mult(Vector.sub(this.velocity, player.velocity), (m.crouch ? 0.0001 : 0.0002)) - // player.force.x += momentum.x - // player.force.y += momentum.y - // } - // this.draw(); - // } - // } - // } - // this.force.x += this.thrustMag * this.mass * Math.cos(this.angle); - // this.force.y += this.thrustMag * this.mass * Math.sin(this.angle); - // this.draw() - // }, - // }); - // Composite.add(engine.world, bullet[me]); //add bullet to world - // }, harpoon(where, target, angle = m.angle, harpoonSize = 1, isReturn = false, totalCycles = 35, isReturnAmmo = true, thrust = 0.1) { const me = bullet.length; const returnRadius = 100 * Math.sqrt(harpoonSize) @@ -2274,12 +2013,43 @@ const b = { } } if (tech.isFoamBall) { - for (let i = 0, len = Math.min(50, 2.5 + 3 * Math.sqrt(this.mass)); i < len; i++) { + for (let i = 0, len = Math.min(30, 2 + 2 * Math.sqrt(this.mass)); i < len; i++) { const radius = 5 + 8 * Math.random() 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) } } + if (tech.isHarpoonPowerUp && simulation.cycle - 480 < tech.harpoonPowerUpCycle) { + Matter.Body.setDensity(this, 1.8 * tech.harpoonDensity); //+90% damage after pick up power up for 8 seconds + } else if (tech.isHarpoonFullHealth && who.health === 1) { + Matter.Body.setDensity(this, 1.9 * tech.harpoonDensity); //+90% damage if mob has full health do + simulation.ephemera.push({ + name: "harpoon outline", + count: 2, //cycles before it self removes + vertices: this.vertices, + do() { + this.count-- + if (this.count < 0) simulation.removeEphemera(this.name) + + ctx.beginPath(); + ctx.moveTo(this.vertices[0].x, this.vertices[0].y); + for (let j = 1, len = this.vertices.length; j < len; j += 1) ctx.lineTo(this.vertices[j].x, this.vertices[j].y); + ctx.lineTo(this.vertices[0].x, this.vertices[0].y); + ctx.lineJoin = "miter" + ctx.miterLimit = 20; + ctx.lineWidth = 40; + ctx.strokeStyle = "rgba(255,0,100,0.35)"; + ctx.stroke(); + ctx.lineWidth = 10; + ctx.strokeStyle = `#f07`; + ctx.stroke(); + ctx.lineJoin = "round" + ctx.miterLimit = 5 + ctx.fillStyle = "#000" + ctx.fill(); + }, + }) + } }, caughtPowerUp: null, dropCaughtPowerUp() { @@ -2300,7 +2070,7 @@ const b = { this.caughtPowerUp.effect(); Matter.Composite.remove(engine.world, this.caughtPowerUp); powerUp.splice(index, 1); - if (tech.isHarpoonPowerUp) tech.harpoonDensity = 0.004 * 6 //0.006 is normal + if (tech.isHarpoonPowerUp) tech.harpoonPowerUpCycle = simulation.cycle } else { this.dropCaughtPowerUp() } @@ -2308,29 +2078,26 @@ const b = { this.dropCaughtPowerUp() } }, - drawToggleHarpoon() { + drawDamageAura() { ctx.beginPath(); ctx.moveTo(this.vertices[0].x, this.vertices[0].y); for (let j = 1, len = this.vertices.length; j < len; j += 1) ctx.lineTo(this.vertices[j].x, this.vertices[j].y); ctx.lineTo(this.vertices[0].x, this.vertices[0].y); ctx.lineJoin = "miter" - ctx.miterLimit = 100; - ctx.lineWidth = 60; - ctx.strokeStyle = "rgba(0,255,255,0.25)"; + ctx.miterLimit = 20; + ctx.lineWidth = 15; + ctx.strokeStyle = "rgba(255,0,100,0.25)"; ctx.stroke(); - ctx.lineWidth = 20; - ctx.strokeStyle = "rgb(0,255,255)"; + ctx.lineWidth = 4; + ctx.strokeStyle = `#f07`; ctx.stroke(); ctx.lineJoin = "round" - ctx.miterLimit = 10 + ctx.miterLimit = 5 ctx.fillStyle = "#000" ctx.fill(); }, drawString() { - const where = { - x: m.pos.x + 30 * Math.cos(m.angle), - y: m.pos.y + 30 * Math.sin(m.angle) - } + const where = { x: m.pos.x + 30 * Math.cos(m.angle), y: m.pos.y + 30 * Math.sin(m.angle) } const sub = Vector.sub(where, this.vertices[0]) const perpendicular = Vector.mult(Vector.normalise(Vector.perp(sub)), this.drawStringFlip * Math.min(80, 10 + this.drawStringControlMagnitude / (10 + Vector.magnitude(sub)))) const controlPoint = Vector.add(Vector.add(where, Vector.mult(sub, -0.5)), perpendicular) @@ -2384,10 +2151,7 @@ const b = { grabPowerUp() { //grab power ups near the tip of the harpoon if (this.caughtPowerUp) { Matter.Body.setPosition(this.caughtPowerUp, Vector.add(this.vertices[2], this.velocity)) - Matter.Body.setVelocity(this.caughtPowerUp, { - x: 0, - y: 0 - }) + Matter.Body.setVelocity(this.caughtPowerUp, { x: 0, y: 0 }) } else { //&& simulation.cycle % 2 for (let i = 0, len = powerUp.length; i < len; ++i) { const radius = powerUp[i].circleRadius + 50 @@ -2395,10 +2159,7 @@ const b = { if (powerUp[i].name !== "heal" || m.health !== m.maxHealth || tech.isOverHeal) { powerUp[i].isGrabbed = true this.caughtPowerUp = powerUp[i] - Matter.Body.setVelocity(powerUp[i], { - x: 0, - y: 0 - }) + Matter.Body.setVelocity(powerUp[i], { x: 0, y: 0 }) Matter.Body.setPosition(powerUp[i], this.vertices[2]) powerUp[i].collisionFilter.category = 0 powerUp[i].collisionFilter.mask = 0 @@ -2459,15 +2220,15 @@ const b = { this.draw(); } } - if (tech.isHarpoonPowerUp && bullet[me].density > 0.01) { + if (tech.isHarpoonPowerUp && simulation.cycle - 480 < tech.harpoonPowerUpCycle) { //8 seconds if (isReturn) { bullet[me].draw = function () { - this.drawToggleHarpoon() + this.drawDamageAura() this.drawString() } } else { bullet[me].draw = function () { - this.drawToggleHarpoon() + this.drawDamageAura() } } } else if (isReturn) { @@ -2628,15 +2389,9 @@ const b = { if (dist < radius * radius) { if (mob[i].speed > 2) { if (mob[i].isBoss || mob[i].isShielded) { - Matter.Body.setVelocity(mob[i], { - x: mob[i].velocity.x * 0.95, - y: mob[i].velocity.y * 0.95 - }); + Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x * 0.95, y: mob[i].velocity.y * 0.95 }); } else { - Matter.Body.setVelocity(mob[i], { - x: mob[i].velocity.x * 0.25, - y: mob[i].velocity.y * 0.25 - }); + Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x * 0.25, y: mob[i].velocity.y * 0.25 }); } } // Matter.Body.setPosition(this, Vector.add(this.position, mob[i].velocity)) //move with the medium @@ -5139,39 +4894,39 @@ const b = { for (let i = 0; i < tech.dynamoBotCount; i++) b.dynamoBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.laserBotCount; i++) b.laserBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.nailBotCount; i++) b.nailBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.foamBotCount; i++) b.foamBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.soundBotCount; i++) b.soundBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.boomBotCount; i++) b.boomBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.orbitBotCount; i++) b.orbitBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.plasmaBotCount; i++) b.plasmaBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) for (let i = 0; i < tech.missileBotCount; i++) b.missileBot({ x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) - }, false) + }) if (tech.isIntangible && m.isCloak) { for (let i = 0; i < bullet.length; i++) { if (bullet[i].botType) bullet[i].collisionFilter.mask = cat.map | cat.bullet | cat.mobBullet | cat.mobShield @@ -5250,7 +5005,6 @@ const b = { }, setDynamoBotDelay() { - //reorder orbital bot positions around a circle let total = 0 for (let i = 0; i < bullet.length; i++) { if (bullet[i].botType === 'dynamo') total++ @@ -5259,13 +5013,17 @@ const b = { for (let i = 0; i < bullet.length; i++) { if (bullet[i].botType === 'dynamo') { count++ - const step = Math.max(60 - 3 * total, 20) - bullet[i].followDelay = (step * count) % 600 + const step = Math.max(60 - 3 * total, 10) + if (bullet[i].isKeep) { + bullet[i].followDelay = (step * count) % 600 + } else { + bullet[i].followDelay = Math.floor(step * bullet.length * Math.random()) % 600 + } } } }, - dynamoBot(position = player.position, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.dynamoBot()`); + dynamoBot(position = player.position, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.dynamoBot()`); const me = bullet.length; bullet[me] = Bodies.polygon(position.x, position.y, 5, 10, { isUpgraded: tech.isDynamoBotUpgrade, @@ -5274,7 +5032,8 @@ const b = { frictionStatic: 0, frictionAir: 0.02, spin: 0.07 * (Math.random() < 0.5 ? -1 : 1), - // isStatic: true, + // isStatic: true, + isKeep: isKeep, isSensor: true, restitution: 0, dmg: 0, // 0.14 //damage done in addition to the damage from momentum @@ -5359,17 +5118,14 @@ const b = { } } let history = m.history[(m.cycle - this.followDelay) % 600] - Matter.Body.setPosition(this, { - x: history.position.x, - y: history.position.y - history.yOff + 24.2859 - }) //bullets move with player + Matter.Body.setPosition(this, { x: history.position.x, y: history.position.y - history.yOff + 24.2859 }) //bullets move with player } }) Composite.add(engine.world, bullet[me]); //add bullet to world b.setDynamoBotDelay() }, - nailBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.nailBot()`); + nailBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.nailBot()`); const me = bullet.length; const dir = m.angle; const RADIUS = (12 + 4 * Math.random()) @@ -5386,8 +5142,8 @@ const b = { // lookFrequency: 56 + Math.floor(17 * Math.random()) - isUpgraded * 20, lastLookCycle: simulation.cycle + 60 * Math.random(), delay: Math.floor((tech.isNailBotUpgrade ? 18 : 85) * b.fireCDscale), - acceleration: 0.005 * (1 + 0.5 * Math.random()), - range: 60 * (1 + 0.3 * Math.random()) + 3 * b.totalBots(), + acceleration: (isKeep ? 0.005 : 0.001) * (1 + 0.5 * Math.random()), + range: 60 * (1 + 0.3 * Math.random()) + 3 * b.totalBots() + !isKeep * 100, endCycle: Infinity, classType: "bullet", collisionFilter: { @@ -5433,8 +5189,8 @@ const b = { }) Composite.add(engine.world, bullet[me]); //add bullet to world }, - missileBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.missileBot()`); + missileBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.missileBot()`); const me = bullet.length; bullet[me] = Bodies.rectangle(position.x, position.y, 28, 11, { botType: "missile", @@ -5504,8 +5260,8 @@ const b = { }) Composite.add(engine.world, bullet[me]); //add bullet to world }, - foamBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.foamBot()`); + foamBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.foamBot()`); const me = bullet.length; const dir = m.angle; const RADIUS = (10 + 5 * Math.random()) @@ -5524,8 +5280,8 @@ const b = { fireCount: 0, fireLimit: 5 + 2 * tech.isFoamBotUpgrade, delay: Math.floor((145 + (tech.isFoamBotUpgrade ? 0 : 230)) * b.fireCDscale),// + 30 - 20 * tech.isFoamBotUpgrade,//20 + Math.floor(85 * b.fireCDscale) - 20 * tech.isFoamBotUpgrade, - acceleration: 0.005 * (1 + 0.5 * Math.random()), - range: 60 * (1 + 0.3 * Math.random()) + 3 * b.totalBots(), //how far from the player the bot will move + acceleration: (isKeep ? 0.005 : 0.001) * (1 + 0.5 * Math.random()), + range: 60 * (1 + 0.3 * Math.random()) + 3 * b.totalBots() + !isKeep * 100, //how far from the player the bot will move endCycle: Infinity, classType: "bullet", collisionFilter: { @@ -5625,8 +5381,8 @@ const b = { }) Composite.add(engine.world, bullet[me]); //add bullet to world }, - soundBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.soundBot()`); + soundBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.soundBot()`); const me = bullet.length; const dir = m.angle; bullet[me] = Bodies.rectangle(position.x, position.y, 12, 30, { @@ -5644,8 +5400,8 @@ const b = { fireCount: 0, fireLimit: 5 + 2 * tech.isSoundBotUpgrade, delay: Math.floor((120 + (tech.isSoundBotUpgrade ? 0 : 70)) * b.fireCDscale),// + 30 - 20 * tech.isFoamBotUpgrade,//20 + Math.floor(85 * b.fireCDscale) - 20 * tech.isFoamBotUpgrade, - acceleration: 0.005 * (1 + 0.5 * Math.random()), - range: 60 * (1 + 0.3 * Math.random()) + 3 * b.totalBots(), //how far from the player the bot will move + acceleration: (isKeep ? 0.005 : 0.001) * (1 + 0.5 * Math.random()), + range: 60 * (1 + 0.3 * Math.random()) + 3 * b.totalBots() + !isKeep * 100, //how far from the player the bot will move endCycle: Infinity, classType: "bullet", collisionFilter: { @@ -5791,11 +5547,8 @@ const b = { }) Composite.add(engine.world, bullet[me]); //add bullet to world }, - laserBot(position = { - x: player.position.x + 50 * (Math.random() - 0.5), - y: player.position.y + 50 * (Math.random() - 0.5) - }, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.laserBot()`); + laserBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.laserBot()`); const me = bullet.length; const dir = m.angle; const RADIUS = (14 + 6 * Math.random()) @@ -5833,10 +5586,7 @@ const b = { const mag = Math.min(farAway, 4) * this.mass * this.acceleration this.force = Vector.mult(Vector.normalise(Vector.sub(playerPos, this.position)), mag) //manual friction to not lose rotational velocity - Matter.Body.setVelocity(this, { - x: this.velocity.x * 0.95, - y: this.velocity.y * 0.95 - }); + Matter.Body.setVelocity(this, { x: this.velocity.x * 0.95, y: this.velocity.y * 0.95 }); //find targets if (!(simulation.cycle % this.lookFrequency)) { this.lockedOn = null; @@ -5858,11 +5608,13 @@ const b = { } } //randomize position relative to player - if (Math.random() < 0.15) { - const range = 110 + 4 * b.totalBots() - this.offPlayer = { - x: range * (Math.random() - 0.5), - y: range * (Math.random() - 0.5) - 20, + if (Math.random() < 0.1) { + if (isKeep) { + const range = 110 + 4 * b.totalBots() + this.offPlayer = { x: range * (Math.random() - 0.5), y: range * (Math.random() - 0.5) - 20, } + } else { + const range = 110 + 4 * b.totalBots() + 100 * Math.random() + this.offPlayer = Vector.mult(Vector.rotate({ x: 1, y: 0 }, 6.28 * Math.random()), range) } } } @@ -6040,11 +5792,8 @@ const b = { }) Composite.add(engine.world, bullet[me]); //add bullet to world }, - boomBot(position = { - x: player.position.x + 50 * (Math.random() - 0.5), - y: player.position.y + 50 * (Math.random() - 0.5) - }, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.boomBot()`); + boomBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.boomBot()`); const me = bullet.length; const dir = m.angle; const RADIUS = (7 + 2 * Math.random()) @@ -6059,9 +5808,9 @@ const b = { dmg: 0, minDmgSpeed: 0, lookFrequency: 43 + Math.floor(7 * Math.random()) - 13 * tech.isBoomBotUpgrade, - acceleration: 0.005 * (1 + 0.5 * Math.random()), + acceleration: (isKeep ? 0.005 : 0.001) * (1 + 0.5 * Math.random()), attackAcceleration: 0.012 + 0.006 * tech.isBoomBotUpgrade, - range: 500 * (1 + 0.1 * Math.random()) + 350 * tech.isBoomBotUpgrade, + range: 500 * (1 + 0.1 * Math.random()) + 350 * tech.isBoomBotUpgrade + !isKeep * 100, endCycle: Infinity, classType: "bullet", collisionFilter: { @@ -6131,8 +5880,8 @@ const b = { }) Composite.add(engine.world, bullet[me]); //add bullet to world }, - plasmaBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.plasmaBot()`); + plasmaBot(position = { x: player.position.x + 50 * (Math.random() - 0.5), y: player.position.y + 50 * (Math.random() - 0.5) }, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.plasmaBot()`); const me = bullet.length; const dir = m.angle; const RADIUS = 21 @@ -6305,8 +6054,8 @@ const b = { }) Composite.add(engine.world, bullet[me]); //add bullet to world }, - orbitBot(position = player.position, isConsole = true) { - if (isConsole) simulation.makeTextLog(`b.orbitBot()`); + orbitBot(position = player.position, isKeep = true) { + // if (isKeep) simulation.makeTextLog(`b.orbitBot()`); const me = bullet.length; bullet[me] = Bodies.polygon(position.x, position.y, 9, 12, { isUpgraded: tech.isOrbitBotUpgrade, @@ -6316,6 +6065,7 @@ const b = { frictionAir: 1, isStatic: true, isSensor: true, + isKeep: isKeep, restitution: 0, dmg: 0, // 0.14 //damage done in addition to the damage from momentum minDmgSpeed: 0, @@ -6330,17 +6080,17 @@ const b = { //reorder orbital bot positions around a circle let totalOrbitalBots = 0 for (let i = 0; i < bullet.length; i++) { - if (bullet[i].botType === 'orbit' && bullet[i] !== this) totalOrbitalBots++ + if (bullet[i].botType === 'orbit' && bullet[i] !== this && bullet[i].isKeep) totalOrbitalBots++ } let index = 0 for (let i = 0; i < bullet.length; i++) { - if (bullet[i].botType === 'orbit' && bullet[i] !== this) { + if (bullet[i].botType === 'orbit' && bullet[i] !== this && bullet[i].isKeep) { bullet[i].phase = (index / totalOrbitalBots) * 2 * Math.PI index++ } } }, - range: 190 + 130 * tech.isOrbitBotUpgrade, //range is set in bot upgrade too! + range: 190 + 130 * tech.isOrbitBotUpgrade + !isKeep * 60 * (0.5 - Math.random()), //range is set in bot upgrade too! orbitalSpeed: 0, phase: 2 * Math.PI * Math.random(), do() { @@ -6377,10 +6127,7 @@ const b = { } //orbit player const time = simulation.cycle * this.orbitalSpeed + this.phase - const orbit = { - x: Math.cos(time), - y: Math.sin(time) //*1.1 - } + const orbit = { x: Math.cos(time), y: Math.sin(time) } Matter.Body.setPosition(this, Vector.add(m.pos, Vector.mult(orbit, this.range))) //bullets move with player } }) @@ -6392,11 +6139,11 @@ const b = { //reorder orbital bot positions around a circle let totalOrbitalBots = 0 for (let i = 0; i < bullet.length; i++) { - if (bullet[i].botType === 'orbit') totalOrbitalBots++ + if (bullet[i].botType === 'orbit' && bullet[i].isKeep) totalOrbitalBots++ } let index = 0 for (let i = 0; i < bullet.length; i++) { - if (bullet[i].botType === 'orbit') { + if (bullet[i].botType === 'orbit' && bullet[i].isKeep) { bullet[i].phase = (index / totalOrbitalBots) * 2 * Math.PI index++ } @@ -6739,7 +6486,7 @@ const b = { name: "shotgun", //1 // description: `fire a wide burst of short range bullets
with a low fire rate
3-4 nails per ${powerUps.orb.ammo()}`, descriptionFunction() { - return `fire a wide burst of short range bullets
has a slow fire rate
${this.ammoPack.toFixed(1)} nails per ${powerUps.orb.ammo()}` + return `fire a wide burst of short range bullets
has a slow fire rate
${this.ammoPack.toFixed(1)} shots per ${powerUps.orb.ammo()}` }, ammo: 0, ammoPack: 3.5, @@ -7995,7 +7742,6 @@ const b = { } //fire if ((!input.fire && this.charge > 0.6)) { - // tech.harpoonDensity = 0.0065 //0.001 is normal for blocks, 0.004 is normal for harpoon, 0.004*6 when buffed const where = { x: m.pos.x + 30 * Math.cos(m.angle), y: m.pos.y + 30 * Math.sin(m.angle) @@ -8067,8 +7813,6 @@ const b = { const recoil = Vector.mult(Vector.normalise(Vector.sub(where, m.pos)), m.crouch ? 0.03 : 0.06) player.force.x -= recoil.x player.force.y -= recoil.y - // tech.harpoonDensity = 0.0065 //0.001 is normal for blocks, 0.004 is normal for harpoon, 0.004*6 when buffed - const harpoonSize = tech.isLargeHarpoon ? 1 + 0.1 * Math.sqrt(this.ammo) : 1 const thrust = 0.15 * (this.charge) if (tech.extraHarpoons) { @@ -8263,12 +8007,8 @@ const b = { count++ if (!(count % delay) && this.ammo > 0) { this.ammo-- - b.harpoon({ - x: m.pos.x + 30 * Math.cos(m.angle), - y: m.pos.y + 30 * Math.sin(m.angle) - }, null, angle, harpoonSize, true, totalCycles) + b.harpoon({ x: m.pos.x + 30 * Math.cos(m.angle), y: m.pos.y + 30 * Math.sin(m.angle) }, null, angle, harpoonSize, true, totalCycles) angle += SPREAD - tech.harpoonDensity = 0.004 //0.001 is normal for blocks, 0.004 is normal for harpoon, 0.004*6 when buffed } if (count < num * delay && m.alive) requestAnimationFrame(harpoonDelay); } @@ -8298,7 +8038,6 @@ const b = { } else { b.harpoon(where, closest.target, m.angle, harpoonSize, true, totalCycles) } - tech.harpoonDensity = 0.004 //0.001 is normal for blocks, 0.004 is normal for harpoon, 0.004*6 when buffed } m.fireCDcycle = m.cycle + 5 + 35 * b.fireCDscale + 60 * (m.energy < 0.05) + tech.extraHarpoons // cool down is set when harpoon bullet returns to player const recoil = Vector.mult(Vector.normalise(Vector.sub(where, m.pos)), m.crouch ? 0.015 : 0.035) diff --git a/js/index.js b/js/index.js index 6e42585..cb0033c 100644 --- a/js/index.js +++ b/js/index.js @@ -967,7 +967,6 @@ ${simulation.isCheating ? "

lore disabled" : ""} startExperiment() { //start playing the game after exiting the experiment menu build.isExperimentSelection = false; spawn.setSpawnList(); //gives random mobs, not starter mobs - spawn.setSpawnList(); if (b.inventory.length > 0) { b.activeGun = b.inventory[0] //set first gun to active gun b.inventoryGun = 0; diff --git a/js/level.js b/js/level.js index e2f9fad..eecb410 100644 --- a/js/level.js +++ b/js/level.js @@ -11,7 +11,7 @@ const level = { // playableLevels: ["pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion"], //see level.populateLevels: (intro, ... , reservoir or factory, reactor, ... , subway, final) added later playableLevels: ["labs", "rooftops", "skyscrapers", "warehouse", "highrise", "office", "aerie", "satellite", "sewers", "testChamber", "pavilion", "lock"], - communityLevels: ["gauntlet", "stronghold", "basement", "crossfire", "vats", "run", "ngon", "house", "perplex", "coliseum", "tunnel", "islands", "temple", "dripp", "biohazard", "stereoMadness", "yingYang", "staircase", "fortress", "commandeer", "clock", "buttonbutton", "downpour", "superNgonBros", "underpass", "cantilever", "tlinat", "ruins", "ace", "crimsonTowers", "LaunchSite", "shipwreck", "unchartedCave"], + communityLevels: ["gauntlet", "stronghold", "basement", "crossfire", "vats", "run", "ngon", "house", "perplex", "coliseum", "tunnel", "islands", "temple", "dripp", "biohazard", "stereoMadness", "yingYang", "staircase", "fortress", "commandeer", "clock", "buttonbutton", "downpour", "superNgonBros", "underpass", "cantilever", "tlinat", "ruins", "ace", "crimsonTowers", "LaunchSite", "shipwreck", "unchartedCave", "dojo"], trainingLevels: ["walk", "crouch", "jump", "hold", "throw", "throwAt", "deflect", "heal", "fire", "nailGun", "shotGun", "superBall", "matterWave", "missile", "stack", "mine", "grenades", "harpoon", "diamagnetism"], levels: [], start() { @@ -19,17 +19,15 @@ const level = { // simulation.enableConstructMode() //tech.giveTech('motion sickness') //used to build maps in testing mode // simulation.isHorizontalFlipped = true // tech.giveTech("performance") - // level.difficultyIncrease(5 * 4) //30 is near max on hard //60 is near max on why - // spawn.setSpawnList(); - // spawn.setSpawnList(); - // m.maxHealth = m.health = 100 + // level.difficultyIncrease(8 * 2) //30 is near max on hard //60 is near max on why + // m.maxHealth = m.health = 1 // m.maxEnergy = m.energy = 10000000 // tech.isRerollDamage = true // powerUps.research.changeRerolls(99999) // m.immuneCycle = Infinity //you can't take damage // tech.tech[297].frequency = 100 // m.couplingChange(10) - // m.setField("grappling hook") //1 standing wave 2 perfect diamagnetism 3 negative mass 4 molecular assembler 5 plasma torch 6 time dilation 7 metamaterial cloaking 8 pilot wave 9 wormhole 10 grappling hook + // m.setField("metamaterial cloaking") //1 standing wave 2 perfect diamagnetism 3 negative mass 4 molecular assembler 5 plasma torch 6 time dilation 7 metamaterial cloaking 8 pilot wave 9 wormhole 10 grappling hook // tech.isHookWire = true // m.energy = 0 // simulation.molecularMode = 2 @@ -37,22 +35,23 @@ const level = { // 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("harpoon") //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[8].ammo = 100000000 - // requestAnimationFrame(() => { tech.giveTech("MACHO") }); - // for (let i = 0; i < 1; ++i) tech.giveTech("degenerate matter") - // for (let i = 0; i < 1; ++i) tech.giveTech("reel") - // for (let i = 0; i < 1; ++i) tech.giveTech("tokamak") - // requestAnimationFrame(() => { for (let i = 0; i < 30; i++) tech.giveTech("laser-bot") }); - // for (let i = 0; i < 1; i++) tech.giveTech("laser-bot upgrade") - // for (let i = 0; i < 1; ++i) tech.giveTech("rupture") + // requestAnimationFrame(() => { tech.giveTech("Higgs mechanism") }); + // for (let i = 0; i < 1; ++i) tech.giveTech("Higgs mechanism") + // for (let i = 0; i < 1; ++i) tech.giveTech("topological defect") + // for (let i = 0; i < 1; ++i) tech.giveTech("Hilbert space") + // requestAnimationFrame(() => { for (let i = 0; i < 10; i++) tech.giveTech("orbital-bot") }); + // requestAnimationFrame(() => { for (let i = 0; i < 10; i++) b.orbitBot(m.pos, false) }); + + // for (let i = 0; i < 1; i++) tech.giveTech("cascading failure") + // for (let i = 0; i < 1; ++i) tech.giveTech("induction furnace") // for (let i = 0; i < 1; ++i) tech.giveTech("autonomous defense") // for (let i = 0; i < 3; i++) powerUps.directSpawn(450, -50, "tech"); // for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "research"); // for (let i = 0; i < 100; i++) powerUps.directSpawn(1750, -500, "coupling"); - - // level.unchartedCave(); + // level.skyscrapers(); // for (let i = 0; i < 4; ++i) spawn.hopMother(1900, -500) - // for (let i = 0; i < 5; ++i) spawn.starter(1900, -500) + // for (let i = 0; i < 10; ++i) spawn.starter(1900, -500, 50) // for (let i = 0; i < 1; ++i) spawn.timeSkipBoss(1900, -2500) // spawn.beetleBoss(1900, -500, 25) // spawn.slasher2(2000, -1150) @@ -64,13 +63,14 @@ const level = { // for (let i = 0; i < 40; ++i) tech.giveTech() level[simulation.isTraining ? "walk" : "intro"]() //normal starting level ************************************************** + // spawn.bodyRect(2425, -120, 200, 200); // console.log(body[body.length - 1].mass) // simulation.isAutoZoom = false; //look in close // simulation.zoomScale *= 0.5; // simulation.setZoom(); // for (let i = 0; i < 2; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "tech"); - // for (let i = 0; i < 2; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "boost"); + // for (let i = 0; i < 2; ++i) powerUps.directSpawn(m.pos.x + 450, m.pos.y + 50 * Math.random(), "boost"); // for (let i = 0; i < 20; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "ammo"); // for (let i = 0; i < 2; i++) powerUps.spawn(player.position.x + Math.random() * 50, player.position.y - Math.random() * 50, "field", false); //lore testing @@ -2159,8 +2159,9 @@ const level = { spawn.mapRect(475, -25, 25, 50); //edge shelf }, intro() { - // console.log(level.levelsCleared) if (level.levelsCleared === 0) { //if this is the 1st level of the game + if (simulation.difficultyMode > 2) spawn.setSpawnList() // hard and why difficulty don't begin with starter mobs + //wait to spawn power ups until unpaused //power ups don't spawn in experiment mode, so they don't get removed at the start of experiment mode const goal = simulation.cycle + 10 @@ -2172,10 +2173,17 @@ const level = { } else { powerUps.spawnStartingPowerUps(2095 + 15 * (Math.random() - 0.5), -2070 - 125); } - if (simulation.difficultyMode < 5) { + if (simulation.difficultyMode < 5) { //hard, normal and easy powerUps.spawn(2095 + 15 * (Math.random() - 0.5), -2070 - 25, "heal", false); + powerUps.spawn(2095 + 15 * (Math.random() - 0.5), -2070, "research", false); + } + if (simulation.difficultyMode < 3) { //normal and easy powerUps.spawn(2095 + 15 * (Math.random() - 0.5), -2070 - 75, "heal", false); - powerUps.spawn(2095 + 15 * (Math.random() - 0.5), -2070, "research", false); //not on why difficulty + } + if (simulation.difficultyMode < 2) { //easy + powerUps.spawn(2095 + 15 * (Math.random() - 0.5), -2070 - 75, "heal", false); + powerUps.spawn(2095 + 15 * (Math.random() - 0.5), -2070, "research", false); + powerUps.spawn(2095 + 15 * (Math.random() - 0.5), -2070, "research", false); } } else { requestAnimationFrame(cycle); @@ -2548,7 +2556,6 @@ const level = { if (mobs.mobDeaths < level.levelsCleared && !simulation.isCheating) { //pacifist run - // spawn.setSpawnList(); spawn.pickList.splice(0, 1); spawn.pickList.push('starter'); spawn.pickList.splice(0, 1); @@ -2662,6 +2669,7 @@ const level = { if (gateButton.isUp) { gateButton.query(); if (!gateButton.isUp) { + simulation.makeTextLog(`station gate opened`, 360); if (stationNumber > 0) { if (!isExitOpen && gatesOpenRight < stationNumber) level.newLevelOrPhase() //run some new level tech effects gatesOpenRight = stationNumber @@ -2673,7 +2681,7 @@ const level = { gatesOpenRight = stationNumber } if (Math.abs(stationNumber) > 0 && ((Math.abs(stationNumber) + 1) % stationList.length) === 0) { - simulation.makeTextLog(`exit opened`); + simulation.makeTextLog(`level exit opened`, 360); isExitOpen = true; } } @@ -2725,13 +2733,12 @@ const level = { var gate = level.doorMap(x - 1375, -525, 50, 375, 300, 20, false) //x, y, width, height, distance, speed = 20 } } - spawn.mapRect(x + -1500, -210, 3000, 400);//station floor - spawn.mapRect(x + -1775, -1600, 3400, 1100); //center pillar + spawn.mapRect(x + -1775, -1600, 3400, 1000); //center pillar spawn.mapRect(x + -4100, -3325, 8000, 700); //roof spawn.mapRect(x + -4100, -3325, 325, 1500); spawn.mapRect(x + 3500, -3325, 400, 1500); - spawn.mapRect(x + -225, -575, 450, 425); //lower portal blocks + spawn.mapRect(x + -225, -700, 450, 600); //lower portal blocks //upper parts spawn.mapRect(x + -1425, -2400, 1900, 50); @@ -3025,7 +3032,7 @@ const level = { } }, () => { //portal fling - const buttonsCoords = [{ x: x + 775, y: -1695 }, { x: x - 775, y: -800 }, { x: x - 375, y: -2083 },] + const buttonsCoords = [{ x: x + 775, y: -1695 }, { x: x - 775, y: -800 }, { x: x - 375, y: -2080 },] const buttonsCoordsIndex = Math.floor(Math.random() * buttonsCoords.length) //pick a random element from the array if (isExitOpen) { level.exit.x = buttonsCoords[buttonsCoordsIndex].x; @@ -3219,7 +3226,7 @@ const level = { } }, () => { //jump pads and 6 sided platforms - const buttonsCoords = [{ x: x + 275, y: -1817 }, { x: x + 2025, y: -1995 }, { x: x - 2025, y: -2420 }, { x: x - 2100, y: -1995 }] + const buttonsCoords = [{ x: x + 278, y: -1814 }, { x: x + 778, y: -1814 }, { x: x + 2025, y: -1995 }, { x: x - 2025, y: -2425 }, { x: x - 2100, y: -1995 }] const buttonsCoordsIndex = Math.floor(Math.random() * buttonsCoords.length) //pick a random element from the array if (isExitOpen) { level.exit.x = buttonsCoords[buttonsCoordsIndex].x; @@ -3375,7 +3382,7 @@ const level = { } }, ] - // stations[1]() //for testing a specific station + // stations[4]() //for testing a specific station stations[stationList[Math.abs(stationNumber % stationList.length)]]() //*************** run this one when uploading //add in standard station map infrastructure spawn.mapRect(x + -8000, 0, 16000, 800);//tunnel floor @@ -5034,10 +5041,12 @@ const level = { powerUps.directSpawn(x + 1950, y - 1525, "ammo"); powerUps.directSpawn(x + 1900, y - 1525, "ammo"); spawn.hopMotherBoss(x + 800, y + -2200) - for (let i = 0; i < 6; ++i) spawn.hopBullet(x + 150 + 750 * Math.random(), y + -1600) - for (let i = 0; i < 6; ++i) spawn.hopBullet(x + 1100 + 750 * Math.random(), y + -1600) + for (let i = 0; i < 4; ++i) spawn.hopBullet(x + 150 + 750 * Math.random(), y + -1600) + for (let i = 0; i < 4; ++i) spawn.hopBullet(x + 1100 + 750 * Math.random(), y + -1600) spawn.hopper(x + 1550, y + -775); spawn.hopper(x + 500, y + -775); + spawn.hopper(x + 500, y + -2200); + spawn.hopper(x + 1100, y + -2200); spawn.hopMother(x + 1400, y + -775); spawn.hopMother(x + 550, y + -775); spawn.hopMother(x + 525, y + -1475); @@ -30084,9 +30093,6 @@ const level = { }, unchartedCave() { simulation.makeTextLog(`unchartedCave by 3xionDev`); - //lore.unlockTesting(); - //simulation.enableConstructMode(); - level.difficultyIncrease(15); level.setPosToSpawn(0, -50); //normal spawn level.exit.x = 20985; level.exit.y = 2816; @@ -30095,7 +30101,6 @@ const level = { level.defaultZoom = 1900 simulation.zoomTransition(level.defaultZoom) document.body.style.backgroundColor = "#979797"; - // color.map = "#444" //custom map color spawn.randomMob(1000, -975, 0); spawn.randomMob(2550, -575, 0); @@ -30490,15 +30495,462 @@ const level = { spawn.randomGroup(5835, -532, 0.4); if (simulation.difficulty > 1) spawn.randomLevelBoss(18823, 2191); spawn.secondaryBossChance(20217, 1913) - - - level.custom = () => { level.exit.drawAndCheck(); level.enter.draw(); }; }, + dojo() { // By weird_pusheen + simulation.makeTextLog(`dojo by werid_pusheen, fixed by Cornbread 2100`) + const vanishes = []; + const smoofes = []; + const leftRotor = level.rotor(-550, 900, 950, 25); + leftRotor.frictionAir = 0.01; + var leftSchwoof = level.boost(-20, -60, -2000); + var rightSchwoof = level.button(2550, -50); + var rightSchwoofState = false; + var rightSchwoofLive = true; + spawn.mapRect(2513, -39, 200, 100); + var pathPoints = [ + [0, 0], // Index 0 is owned by M and is set to M's position during play + // this means that occasionally the boss will bonk M on the way to somewhere else, which gives it a chance to hurt M and gives the player a chance to hurt it + [250, -750], /* Left bases */ + [250, -2500], + [350, -1500], // Left doorway + [1150, -1500], // Home base + [1150, -2750], // Upper base + [1950, -1500], // Right doorway + [2050, -750], /* Right bases */ + [2050, -2500], + [-150, -250], // Left porthole + ]; + function isntIn(point, array) { + for (var x = 0; x < array.length; x++) { + if (point[0] == array[x][0] && point[1] == array[x][1]) { + return false; + } + } + return true; + } + function isObstructed(v1, v2) { + var ret = Matter.Query.ray(map, + { + x: v1[0], + y: v1[1], + }, + { + x: v2[0], + y: v2[1] + }).length != 0; + return ret; // Kinda-ish stolen from mob.js + } + function pythag(p1, p2) { + var dx = p1[0] - p2[0]; + var dy = p1[1] - p2[1]; + return Math.sqrt(dx * dx + dy * dy); + } + var path = undefined; // This is a stupid way to go about pathfinding code. I might even clean it up! + function pathFind(goalPoint, startPoint, curPath = []) { + var myPoint = startPoint; + if (curPath.length) { + myPoint = curPath[curPath.length - 1]; + } + if (path && (curPath.length >= path.length)) { // If we've already found a shorter or equal path, no reason to continue and waste CPU time + return; // Minimizes for HOP COUNT, not PATH LENGTH - path length was buggy + } + if (!isObstructed(myPoint, goalPoint)) { // If the line to the goal point ain't blocked by a map object, we've arrived! + path = [...curPath]; + path.push(goalPoint); + return; + } + pathPoints.forEach(testPoint => { + if (isntIn(testPoint, curPath)) { // If it's reusing points, there's clearly something wrong + if (!isObstructed(myPoint, testPoint)) { // If the line to the test point ain't blocked by a map object + var thing = [...curPath]; + thing.push(testPoint); + pathFind(goalPoint, startPoint, thing); // Branch to a valid test point + } + } + }); + } + level.setPosToSpawn(1200, 500); + level.exit.x = 51500; + level.exit.y = -1875; + spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20); + level.defaultZoom = 1500; + simulation.zoomTransition(level.defaultZoom) + document.body.style.backgroundColor = "#d8dadf"; + + spawn.mapRect(-500, 0, 3300, 300); // Floor + spawn.mapRect(-100, -3000, 2500, 100); // Ceiling + spawn.mapRect(-200, -3000, 100, 2600); // Left wall + spawn.mapRect(2400, -3000, 100, 3000); // Right wall + + spawn.mapRect(500, -1000, 100, 500); /* obstruction blocks */ + smoofes.push(map[map.length - 1]); + spawn.mapRect(500, -2500, 100, 500); + smoofes.push(map[map.length - 1]); + spawn.mapRect(1700, -1000, 100, 500); + smoofes.push(map[map.length - 1]); + spawn.mapRect(1700, -2500, 100, 500); + smoofes.push(map[map.length - 1]); + + spawn.mapRect(-1000, 550, 200, 50); // Left chonky stepppp low + spawn.mapRect(-800, 300, 200, 50); // Left chonky stepppp high + spawn.mapVertex(-1000, 1200, "0 0 100 0 700 500 700 700 0 700"); // Left chonky + spawn.mapRect(3100, 550, 200, 50); // Right chonky stepppp low + spawn.mapRect(2900, 300, 200, 50); // Right chonky stepppp high + spawn.mapVertex(3300, 1200, "0 0 -100 0 -700 500 -700 700 0 700"); // Right chonky + const leftElevator = level.elevator(-1400 - 300, 1450, 300, 100, 500); + const rightElevator = level.elevator(-1400 + 5100, 1450, 300, 100, 500); + + spawn.mapRect(-150, -1700, 200, 50); + spawn.mapRect(400, -2050, 200, 50); + spawn.mapRect(1600, -1000, 200, 50); + + spawn.randomMob(1200, 700); + spawn.randomMob(600, 1000); + spawn.randomMob(1800, 1000); + spawn.randomMob(3200, 400); + spawn.randomMob(3000, 200); + spawn.randomMob(-900, 400); + spawn.randomMob(-700, 200); + spawn.randomMob(1200, 1000); + for (var i = 0; i < 4; i++) { + spawn.randomSmallMob(Math.random() * 600 - 600, Math.random() * 3000 - 400); + } + spawn.grenadier(-300, -1000); + spawn.grenadier(2600, -1000); + + spawn.mapRect(-1400, 1450, 5100, 100); // The True Floor + + const slime = level.hazard(-1250, 1400, 4800, 50); + slime.maxHeight = 600; + simulation.draw.body = function () { + ctx.beginPath(); + for (let i = 0, len = body.length; i < len; ++i) { + if (!body[i].hidden) { + let vertices = body[i].vertices; + ctx.moveTo(vertices[0].x, vertices[0].y); + for (let j = 1; j < vertices.length; j++) { + ctx.lineTo(vertices[j].x, vertices[j].y); + } + ctx.lineTo(vertices[0].x, vertices[0].y); + } + } + ctx.lineWidth = 2; + ctx.fillStyle = color.block; + ctx.fill(); + ctx.strokeStyle = color.blockS; + ctx.stroke(); + } // Override the old draw code to allow intelligent hiding of blocks - preferably this becomes official code because it's just a single added if statement and makes a lot of things cleaner and more intelligent + + const vanish = function (x, y, width, height) { // normal vanishes don't work well on my map for some reason, so I rewrote + x += width / 2; + y += height / 2; + const getVertices = function (bX, bY, bW, bH) { return [{ x: bX, y: bY, index: 0, isInternal: false }, { x: bX + bW, y: bY, index: 1, isInternal: false }, { x: bX + bW, y: bY + bH, index: 4, isInternal: false }, { x: bX, y: bY + bH, index: 3, isInternal: false }] }; + const cMask = cat.player | cat.body | cat.bullet | cat.powerUp | cat.mob | cat.mobBullet; + const vertices = getVertices(x, y, width, height); + const block = body[body.length] = Bodies.fromVertices(x, y, vertices, { + collisionFilter: { + category: cat.map, + mask: cMask + }, + isNoSetCollision: true, + inertia: Infinity, //prevents rotation + isNotHoldable: true, + isNonStick: true, //this keep sporangium from sticking + isTouched: false, + cWidth: width, + hiddenCycle: 0, + isStatic: true, + query() { + if (this.cWidth <= 0) { + if (this.cWidth > -100) { + this.cWidth = -100; + Matter.Body.setVertices(this, vertices); + } + this.isTouched = false; + this.collisionFilter.mask = undefined; + this.hidden = true; + this.hiddenCycle++; + if (this.hiddenCycle > 100) { + if (Matter.Query.collides(this, [player]).length) { + this.hiddenCycle = 50; + } + else { + this.hiddenCycle = 0; + this.cWidth = width; + this.collisionFilter.mask = cMask; + this.hidden = false; + } + } + } + else if (this.isTouched) { + Matter.Body.setVertices(this, getVertices(x, y, this.cWidth, height * (this.cWidth / width))); + this.cWidth -= 3; + } + else if (Matter.Query.collides(this, [player]).length) { // Elseif short circuit avoids expensive collision detection + this.isTouched = true; + } + } + }); + return block; + }; + + vanishes.push(vanish(800, 800, 800, 50)); + vanishes.push(vanish(400, 1100, 400, 50)); + vanishes.push(vanish(1600, 1100, 400, 50)); + for (const vanishBlock of vanishes) Composite.add(engine.world, vanishBlock); + spawn.bodyRect(1700, 812, 300, 25, 1, { + collisionFilter: { + category: cat.body, + mask: cat.player | cat.body | cat.bullet | cat.powerUp | cat.mob | cat.mobBullet | cat.map + }, + isNoSetCollision: true, + isNotHoldable: true, + isNonStick: true, //this keep sporangium from sticking + restitution: 1, + friction: 0, + frictionAir: 0, + frictionStatic: 0, + query() { + Matter.Body.setAngularVelocity(this, 0); + Matter.Body.applyForce(this, this.position, { + x: 0, + y: -(this.position.y - 812) * 0.002 + }); + } + }); + const zigzag = body[body.length - 1]; + Matter.Body.applyForce(zigzag, zigzag.position, { + x: 0.1, + y: 0 + }); + var buttonWasDown = false; + level.customTopLayer = () => { + + } + level.custom = () => { + rightSchwoof.isUp = false; + level.exit.drawAndCheck(); + leftSchwoof.query(); + level.enter.draw(); + pathPoints[0][0] = m.pos.x; + pathPoints[0][1] = m.pos.y; + leftElevator.move(); + rightElevator.move(); + slime.query(); + zigzag.query(); + slime.levelRise(0.2); + for (var i = 0; i < vanishes.length; i++) { + vanishes[i].query(); + } + if (!rightSchwoofState) { + var math = m.pos.y < leftRotor.position.y; + Matter.Body.setAngularVelocity(leftRotor, (math ? 1 : -1) * Math.PI / 45); + } + if (rightSchwoofLive) { + rightSchwoof.query(); + rightSchwoof.draw(); + if (rightSchwoofState) { + ctx.fillStyle = "lightgreen"; + } + else { + ctx.fillStyle = "red"; + } + ctx.beginPath(); + ctx.arc(2615, -220, 40, 0, Math.PI * 2); + ctx.fill(); + } + if (rightSchwoof.isUp) { + buttonWasDown = true; + } + else if (buttonWasDown) { + buttonWasDown = false; + rightSchwoofState = !rightSchwoofState; + } + if (Matter.Query.collides(player, smoofes).length) { + Matter.Body.applyForce(player, player.position, { + x: 0, + y: -0.015 + }); + } + }; + + mobs.spawn(500, -500, 10, 100, "yellow"); /* TacticalBoss + Modes: + Spawn: + Pathfinds to a point above M and starts dropping mobs. Learns which mobs to drop to cause the most damage, of course. + Occasionally strikes at M. + Hide: + Pathfinds to the point furthest from M + Strike: + Pathfind really, really fast to M + Recharge: + Stop moving for a bit to "recharge" (this is so the player has a chance to hit it) + + It must always Hide or Recharge after Spawning or Striking. Which one it does is based on some factor I'll figure out. + Pathfinding is a hypersimplified algorithm with hard-coded "points" that it can travel between. M is one of these. + */ + var boss = mob[mob.length - 1]; + boss.isBoss = true; + boss.damageReduction = 0.2 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1) + boss.onDeath = function () { + powerUps.spawnBossPowerUp(this.position.x, this.position.y); + level.exit.x = 2560; + level.exit.y = -90; + rightSchwoofLive = false; + }; + var spawnables = {}; + ["hopper", "stabber", "springer", "striker", "sneaker", "grower"].forEach((m) => { /* Used to be spawn.fullPickList, but some of those mobs don't do collision-only damage and would thus never be properly selected for */ + if (spawn[m]) { + spawnables[m] = { + fun: spawn[m], + name: m, + weight: 1 + } + } + }); + boss.stabCycle = 0; + boss.spawnCycle = 0; + function spawny() { + var totalWeight = 0; + Object.keys(spawnables).forEach(key => { + totalWeight += spawnables[key].weight; + }); + var cursorWeight = 0; + var choice = Math.random(); + var mC = undefined; + Object.values(spawnables).forEach((thing) => { + var lower = cursorWeight / totalWeight; + cursorWeight += thing.weight; + var upper = cursorWeight / totalWeight; + if ((choice > lower && choice <= upper) || !mC) { + mC = thing; + } + }); + mC.fun(boss.position.x, boss.position.y); + var sp = mob[mob.length - 1]; + sp.typeName = mC.name; + sp.onHit = () => { + spawnables[sp.typeName].weight += 1; + }; + var oldFun = sp.onDeath; + sp.onDeath = () => { /* Mobs that die are worth less */ + oldFun.call(sp); + spawnables[sp.typeName].weight -= 0.3; /* But not too much less */ + }; + } + boss.spawnDelay = 40; + boss.mode = "hide"; + boss.modeSwitch = -1; // Randomize mode immediately + boss.damageReduction = 0.1; + var oldOnHit = boss.onHit; + boss.onHit = () => { + boss.modeSwitch = -1; // After striking the player, always switch modes + oldOnHit.call(boss); //this is the line that is bugging <----- + }; + boss.do = () => { + path = undefined; + var pfGoal = [0, 0]; + boss.modeSwitch--; + if (boss.modeSwitch < 0) { + if (!boss.isShielded) { + spawn.shield(boss, boss.position.x, boss.position.y, 0.75); // Every time the mode switches, have a 75% chance to gain a new shield + } + if (boss.mode == "hide" || boss.mode == "recharge") { + if (Math.random() > 0.5) { + boss.mode = "spawn"; + } + else { + boss.mode = "strike"; + } + boss.modeSwitch = 600; + } + else { + if (boss.mode == "strike") { + boss.mode = "hide"; // Always hides after striking + } + else { + if (Math.random() > 0.5) { + boss.mode = "hide"; + } + else { + boss.mode = "recharge"; // same when it goes into recharge mode + spawn.shield(boss, boss.position.x, boss.position.y, 1); + } + } + boss.modeSwitch = 200; + } + } + if (boss.mode == "hide") { /* Find the furthest point from M and get to it */ + var longest = 0; + pathPoints.forEach(item => { + if (item[0] == 1150) { + return; + } + var iL = pythag(item, [m.pos.x, m.pos.y]); + if (iL > longest) { + longest = iL; + pfGoal = item; + } + }); + } + else if (boss.mode == "strike") { + pfGoal = pathPoints[0]; // Target M + } + else if (boss.mode == "spawn") { + pfGoal = pathPoints[4]; // Go to Home Base to spawn + } + if (boss.mode != "recharge") { + if (m.pos.x > 2350 || m.pos.x < -150 || m.pos.y > 50) { + boss.mode = "hide"; + } + pathFind(pfGoal, [boss.position.x, boss.position.y]); + if (!path) { + return; // If it couldn't pathfind, just drift + } + var goalX = path[0][0]; + var goalY = path[0][1]; + + var dX = goalX - boss.position.x; + var dY = goalY - boss.position.y; + var hyp = Math.sqrt(dX * dX + dY * dY); + Matter.Body.applyForce(boss, { + x: goalX, + y: goalY + }, { + x: dX / hyp * 0.04 * (boss.mode == "strike" ? 2 : 1), + y: dY / hyp * 0.04 * (boss.mode == "strike" ? 2 : 1)// - 0.005 + }); + } + if (boss.mode == "spawn") { + boss.stabCycle++; + if (boss.stabCycle > 25) { + if (Math.abs(dX) < 200 && dY > 0) { + Matter.Body.applyForce(boss, { + x: player.position.x, + y: player.position.y + }, { + x: 0, + y: 5 + }); + } + boss.stabCycle = 0; + } + boss.spawnCycle++; + if (boss.spawnCycle > boss.spawnDelay) { + spawny(); + boss.spawnDelay += 4; + boss.spawnCycle = 0; + } + } + }; + boss.showHealthBar = true; + powerUps.addResearchToLevel() //needs to run after mobs are spawned + }, // ******************************************************************************************************** // ******************************************************************************************************** // ***************************************** training levels ********************************************** diff --git a/js/mob.js b/js/mob.js index d86b9fc..18434b1 100644 --- a/js/mob.js +++ b/js/mob.js @@ -242,7 +242,7 @@ const mobs = { deathCount: 0, mobSpawnWithHealth: 1, setMobSpawnHealth() { - mobs.mobSpawnWithHealth = 0.89 ** (tech.mobSpawnWithHealth) + mobs.mobSpawnWithHealth = 0.88 ** (tech.mobSpawnWithHealth) }, //********************************************************************************************** //********************************************************************************************** @@ -1133,6 +1133,85 @@ const mobs = { if ((!this.isShielded || isBypassShield) && this.alive) { if (dmg !== Infinity) { dmg *= tech.damageFromTech() + if (this.isDropPowerUp) { + if (this.health === 1) { + if (tech.isMobFullHealth) { + dmg *= 1.55 + + simulation.ephemera.push({ + name: "damage outline", + count: 5, //cycles before it self removes + vertices: this.vertices, + do() { + this.count-- + if (this.count < 0) simulation.removeEphemera(this.name) + //draw body + ctx.beginPath(); + const vertices = this.vertices; + ctx.moveTo(vertices[0].x, vertices[0].y); + for (let j = 1, len = vertices.length; j < len; ++j) { + ctx.lineTo(vertices[j].x, vertices[j].y); + } + ctx.lineTo(vertices[0].x, vertices[0].y); + ctx.lineWidth = 3 //60 * (0.25 - this.damageReductionGoal) + ctx.strokeStyle = `#f05` //"rgba(150,150,225,0.5)"; + ctx.stroke(); + }, + }) + } else if (tech.isMobFullHealthCloak) { + dmg *= 1.88 + + simulation.ephemera.push({ + name: "damage outline", + count: 7, //cycles before it self removes + vertices: this.vertices, + do() { + this.count-- + if (this.count < 0) simulation.removeEphemera(this.name) + //draw body + ctx.beginPath(); + const vertices = this.vertices; + ctx.moveTo(vertices[0].x, vertices[0].y); + for (let j = 1, len = vertices.length; j < len; ++j) { + ctx.lineTo(vertices[j].x, vertices[j].y); + } + ctx.lineTo(vertices[0].x, vertices[0].y); + ctx.fillStyle = `rgba(255,0,100,0.15)` //"rgba(150,150,225,0.5)"; + ctx.fill() + ctx.lineWidth = 3 //60 * (0.25 - this.damageReductionGoal) + ctx.strokeStyle = `#f08` //"rgba(150,150,225,0.5)"; + ctx.stroke(); + }, + }) + } + } else if (tech.isMobLowHealth && this.health < 0.25) { + dmg *= 3.22 + + simulation.ephemera.push({ + name: "damage outline", + count: 2, //cycles before it self removes + vertices: this.vertices, + do() { + this.count-- + if (this.count < 0) simulation.removeEphemera(this.name) + //draw body + ctx.beginPath(); + const vertices = this.vertices; + ctx.moveTo(vertices[0].x, vertices[0].y); + for (let j = 1, len = vertices.length; j < len; ++j) { + ctx.lineTo(vertices[j].x, vertices[j].y); + } + ctx.lineTo(vertices[0].x, vertices[0].y); + ctx.fillStyle = `rgba(255,50,100,0.2)` //"rgba(150,150,225,0.5)"; + ctx.fill() + ctx.lineWidth = 3 //60 * (0.25 - this.damageReductionGoal) + ctx.strokeStyle = `#f38` //"rgba(150,150,225,0.5)"; + ctx.stroke(); + }, + }) + } + } + //mobs specific damage changes if (tech.isFarAwayDmg) dmg *= 1 + Math.sqrt(Math.max(500, Math.min(3000, this.distanceToPlayer())) - 500) * 0.0067 //up to 33% dmg at max range of 3000 dmg *= this.damageReduction @@ -1143,6 +1222,7 @@ const mobs = { } dmg /= Math.sqrt(this.mass) } + this.health -= dmg //this.fill = this.color + this.health + ')'; this.onDamage(dmg); //custom damage effects @@ -1187,7 +1267,7 @@ const mobs = { leaveBody: true, isDropPowerUp: true, death() { - if (tech.collidePowerUps && Math.random() < tech.collidePowerUps && this.isDropPowerUp) powerUps.randomize(this.position) //needs to run before onDeath spawns power ups + if (tech.collidePowerUps && this.isDropPowerUp) powerUps.randomize(this.position) //needs to run before onDeath spawns power ups this.onDeath(this); //custom death effects this.removeConsBB(); this.alive = false; //triggers mob removal in mob[i].replace(i) @@ -1261,22 +1341,23 @@ const mobs = { } if (tech.isBotSpawnerReset) { for (let i = 0, len = bullet.length; i < len; i++) { - if (bullet[i].botType && bullet[i].endCycle !== Infinity) bullet[i].endCycle = simulation.cycle + 780 //13 seconds + if (bullet[i].botType && bullet[i].endCycle !== Infinity) bullet[i].endCycle = simulation.cycle + 900 //15 seconds } } if (Math.random() < tech.botSpawner) { b.randomBot(this.position, false) - bullet[bullet.length - 1].endCycle = simulation.cycle + 780 //13 seconds + bullet[bullet.length - 1].endCycle = simulation.cycle + 900 //15 seconds this.leaveBody = false; // no body since it turned into the bot } if (tech.isAddRemoveMaxHealth) { if (this.isBoss && this.isDropPowerUp) { powerUps.spawn(this.position.x + 20, this.position.y, "tech", false) - powerUps.spawn(this.position.x - 20, this.position.y, "ammo", false) + powerUps.spawn(this.position.x - 20, this.position.y, "research", false) + powerUps.spawn(this.position.x - 40, this.position.y, "research", false) + powerUps.spawn(this.position.x + 40, this.position.y, "research", false) powerUps.spawn(this.position.x, this.position.y + 20, "research", false) powerUps.spawn(this.position.x, this.position.y - 20, "heal", false) - powerUps.spawn(this.position.x - 40, this.position.y, "ammo", false) - powerUps.spawn(this.position.x, this.position.y + 40, "research", false) + powerUps.spawn(this.position.x, this.position.y + 40, "heal", false) powerUps.spawn(this.position.x, this.position.y - 40, "heal", false) } else { const amount = 0.005 @@ -1292,7 +1373,7 @@ const mobs = { } } if (tech.cloakDuplication && !this.isBoss) { - tech.cloakDuplication -= 0.02 + tech.cloakDuplication -= 0.01 powerUps.setPowerUpMode(); //needed after adjusting duplication chance } } else if (tech.isShieldAmmo && this.shield && !this.isExtraShield) { diff --git a/js/player.js b/js/player.js index ed5cc78..7877e7d 100644 --- a/js/player.js +++ b/js/player.js @@ -393,7 +393,7 @@ const m = { for (let i = 0, len = b.inventory.length; i < len; i++) { if (b.guns[b.inventory[i]].ammo !== Infinity) b.guns[b.inventory[i]].ammo = Math.max(0, Math.floor(ammoCount / b.inventory.length * b.guns[b.inventory[i]].ammoPack * (1.15 + 0.3 * (Math.random() - 0.5)))) } - console.log(b.activeGun) + // console.log(b.activeGun) //randomize tech for (let i = 0; i < totalTech; i++) { //find what tech I could get @@ -568,7 +568,7 @@ const m = { if (tech.squirrelFx !== 1) dmg *= 0.78//Math.pow(0.78, (tech.squirrelFx - 1) / 0.4) if (tech.isAddBlockMass && m.isHolding) dmg *= 0.1 if (tech.isSpeedHarm && player.speed > 0.1) dmg *= 1 - Math.min(player.speed * 0.0193, 0.88) //capped at speed of 55 - if (tech.isHarmReduce && input.field) dmg *= 0.15 + if (tech.isHarmReduce && input.field) dmg *= 0.12 if (tech.isNeutronium && input.field && m.fieldCDcycle < m.cycle) dmg *= 0.05 if (tech.isBotArmor) dmg *= 0.94 ** b.totalBots() if (tech.isHarmArmor && m.lastHarmCycle + 600 > m.cycle) dmg *= 0.33; @@ -935,83 +935,6 @@ const m = { ctx.restore(); } }, - // resetSkin() { - // simulation.isAutoZoom = true; - // m.yOffWhen.jump = 70 - // m.yOffWhen.stand = 49 - // m.yOffWhen.crouch = 22 - // m.isAltSkin = false - // m.color = { - // hue: 0, - // sat: 0, - // light: 100, - // } - // m.setFillColors(); - // m.draw = function () { - // ctx.fillStyle = m.fillColor; - // m.walk_cycle += m.flipLegs * m.Vx; - // ctx.save(); - // ctx.globalAlpha = (m.immuneCycle < m.cycle) ? 1 : 0.5 //|| (m.cycle % 40 > 20) - // ctx.translate(m.pos.x, m.pos.y); - // m.calcLeg(Math.PI, -3); - // m.drawLeg("#4a4a4a"); - // m.calcLeg(0, 0); - // m.drawLeg("#333"); - // ctx.rotate(m.angle); - // ctx.beginPath(); - // ctx.arc(0, 0, 30, 0, 2 * Math.PI); - // ctx.fillStyle = m.bodyGradient - // ctx.fill(); - // ctx.arc(15, 0, 4, 0, 2 * Math.PI); - // ctx.strokeStyle = "#333"; - // ctx.lineWidth = 2; - // ctx.stroke(); - // ctx.restore(); - // m.yOff = m.yOff * 0.85 + m.yOffGoal * 0.15; //smoothly move leg height towards height goal - // powerUps.boost.draw() - // } - // m.drawLeg = function (stroke) { - // // if (simulation.mouseInGame.x > m.pos.x) { - // if (m.angle > -Math.PI / 2 && m.angle < Math.PI / 2) { - // m.flipLegs = 1; - // } else { - // m.flipLegs = -1; - // } - // ctx.save(); - // ctx.scale(m.flipLegs, 1); //leg lines - // ctx.beginPath(); - // ctx.moveTo(m.hip.x, m.hip.y); - // ctx.lineTo(m.knee.x, m.knee.y); - // ctx.lineTo(m.foot.x, m.foot.y); - // ctx.strokeStyle = stroke; - // ctx.lineWidth = 7; - // ctx.stroke(); - - // //toe lines - // ctx.beginPath(); - // ctx.moveTo(m.foot.x, m.foot.y); - // ctx.lineTo(m.foot.x - 15, m.foot.y + 5); - // ctx.moveTo(m.foot.x, m.foot.y); - // ctx.lineTo(m.foot.x + 15, m.foot.y + 5); - // ctx.lineWidth = 4; - // ctx.stroke(); - - // //hip joint - // ctx.beginPath(); - // ctx.arc(m.hip.x, m.hip.y, 11, 0, 2 * Math.PI); - // //knee joint - // ctx.moveTo(m.knee.x + 7, m.knee.y); - // ctx.arc(m.knee.x, m.knee.y, 7, 0, 2 * Math.PI); - // //foot joint - // ctx.moveTo(m.foot.x + 6, m.foot.y); - // ctx.arc(m.foot.x, m.foot.y, 6, 0, 2 * Math.PI); - // ctx.fillStyle = m.fillColor; - // ctx.fill(); - // ctx.lineWidth = 2; - // ctx.stroke(); - // ctx.restore(); - // } - // }, skin: { none() { m.isAltSkin = true @@ -1146,6 +1069,96 @@ const m = { ctx.restore(); } }, + strokeGap() { + m.isAltSkin = true + m.yOffWhen.stand = 52 + m.yOffWhen.jump = 72 + // m.yOffWhen.crouch = 22 + // m.color = { + // hue: 184, + // sat: 0, + // light: 55, + // } + // m.setFillColors(); + m.draw = function () { + m.walk_cycle += m.flipLegs * m.Vx; + ctx.save(); + ctx.globalAlpha = (m.immuneCycle < m.cycle) ? 1 : 0.5 //|| (m.cycle % 40 > 20) + ctx.translate(m.pos.x, m.pos.y); + m.calcLeg(Math.PI, -1.25); + m.drawLeg("#606070"); + m.calcLeg(0, 0); + m.drawLeg("#445"); + + + ctx.rotate(m.angle); + ctx.beginPath(); + ctx.arc(0, 0, 30, 0, 2 * Math.PI); + // ctx.arc(0, 0, 30, m.angle + 1, m.angle - 1); + ctx.fillStyle = "#fff"//m.bodyGradient + ctx.fill(); + ctx.beginPath(); + const arc = 0.7 + 0.17 * Math.sin(m.cycle * 0.012) + ctx.arc(0, 0, 30, -arc, arc, true); //- Math.PI / 2 + ctx.strokeStyle = "#445"; + ctx.lineWidth = 2; + ctx.stroke(); + + ctx.beginPath(); + ctx.moveTo(13, 0) + ctx.lineTo(20, 0) + // ctx.beginPath(); + // ctx.arc(15, 0, 4, 0, 2 * Math.PI); + ctx.lineWidth = 5; + ctx.strokeStyle = "#445"; + ctx.stroke(); + + ctx.restore(); + m.yOff = m.yOff * 0.85 + m.yOffGoal * 0.15; //smoothly move leg height towards height goal + powerUps.boost.draw() + } + m.drawLeg = function (stroke) { + // if (simulation.mouseInGame.x > m.pos.x) { + if (m.angle > -Math.PI / 2 && m.angle < Math.PI / 2) { + m.flipLegs = 1; + } else { + m.flipLegs = -1; + } + ctx.save(); + ctx.scale(m.flipLegs, 1); //leg lines + ctx.beginPath(); + ctx.moveTo(m.hip.x, m.hip.y); + ctx.lineTo(m.knee.x, m.knee.y); + ctx.lineTo(m.foot.x, m.foot.y); + ctx.strokeStyle = stroke; + ctx.lineWidth = 5; + ctx.stroke(); + + //toe lines + ctx.beginPath(); + ctx.moveTo(m.foot.x, m.foot.y); + ctx.lineTo(m.foot.x - 14, m.foot.y + 5); + ctx.moveTo(m.foot.x, m.foot.y); + ctx.lineTo(m.foot.x + 14, m.foot.y + 5); + ctx.lineWidth = 4; + ctx.stroke(); + + //hip joint + ctx.beginPath(); + ctx.arc(m.hip.x, m.hip.y, 8, 0, 2 * Math.PI); + //knee joint + ctx.moveTo(m.knee.x + 4, m.knee.y); + ctx.arc(m.knee.x, m.knee.y, 4, 0, 2 * Math.PI); + //foot joint + ctx.moveTo(m.foot.x + 4, m.foot.y + 1); + ctx.arc(m.foot.x, m.foot.y + 1, 4, 0, 2 * Math.PI); + ctx.fillStyle = m.fillColor; + ctx.fill(); + ctx.lineWidth = 2; + ctx.stroke(); + ctx.restore(); + } + }, energy() { m.isAltSkin = true m.color = { @@ -1333,17 +1346,9 @@ const m = { sat: 14, light: 65, } - // m.setFillColors(); m.fillColor = `hsl(${m.color.hue},${m.color.sat}%,${m.color.light}%)` m.fillColorDark = `hsl(${m.color.hue},${m.color.sat}%,${m.color.light - 50}%)` - // let grd = ctx.createLinearGradient(-30, 0, 30, 0); const grd = ctx.createRadialGradient(16, 0, 0, 0, 0, 40); - - // grd.addColorStop(0, `hsl(${m.color.hue},${m.color.sat}%,${m.color.light - 35}%)`); - // grd.addColorStop(0.25, `hsl(${m.color.hue},${m.color.sat}%,${m.color.light - 20}%)`); - // grd.addColorStop(0.5, `hsl(${m.color.hue},${m.color.sat}%,${m.color.light - 35}%)`); - // grd.addColorStop(1, `hsl(${m.color.hue},${m.color.sat}%,${m.color.light - 10}%)`); - grd.addColorStop(0, `#c78034`); grd.addColorStop(0.04, `#bd5235`); grd.addColorStop(0.08, `#ab554d`); @@ -1369,10 +1374,8 @@ const m = { grd.addColorStop(0.92, `#00e19b`); grd.addColorStop(0.96, `#19f5aa`); grd.addColorStop(1, `#aaf5af`); - m.bodyGradient = grd - m.draw = function () { ctx.fillStyle = m.fillColor; m.walk_cycle += m.flipLegs * m.Vx; @@ -1410,7 +1413,7 @@ const m = { ctx.lineTo(m.knee.x, m.knee.y); ctx.lineTo(m.foot.x, m.foot.y); ctx.strokeStyle = stroke; - ctx.lineWidth = 7; + ctx.lineWidth = 5; ctx.stroke(); //toe lines @@ -1424,21 +1427,22 @@ const m = { //hip joint ctx.beginPath(); - ctx.arc(m.hip.x, m.hip.y, 11, 0, 2 * Math.PI); - ctx.fillStyle = "#1b85cf"; + ctx.arc(m.hip.x, m.hip.y, 9, 0, 2 * Math.PI); + ctx.fillStyle = "#222"; + // ctx.fillStyle = "#1b85cf"; ctx.fill(); //knee joint ctx.beginPath(); - ctx.arc(m.knee.x, m.knee.y, 7, 0, 2 * Math.PI); - ctx.fillStyle = "#ffa050"; + ctx.arc(m.knee.x, m.knee.y, 5, 0, 2 * Math.PI); + // ctx.fillStyle = "#ffa050"; ctx.fill(); //foot joint ctx.beginPath(); - ctx.arc(m.foot.x, m.foot.y, 6, 0, 2 * Math.PI); - ctx.fillStyle = "#878cf0"; + ctx.arc(m.foot.x, m.foot.y, 4, 0, 2 * Math.PI); + // ctx.fillStyle = "#878cf0"; ctx.fill(); - ctx.lineWidth = 2; - ctx.stroke(); + // ctx.lineWidth = 3; + // ctx.stroke(); ctx.restore(); } }, @@ -2636,7 +2640,7 @@ const m = { }, fieldUpgrades: [{ name: "field emitter", - imageNumber: Math.floor(Math.random() * 23), + imageNumber: Math.floor(Math.random() * 26), //pick one of the 25 field emitter image files at random description: `initial field
use energy to deflect mobs and throw blocks
generate 4 energy per second`, //
100 max energy effect: () => { @@ -2934,7 +2938,6 @@ const m = { // if (m.energy < m.fieldRegen) m.fieldCDcycle = m.cycle + 90; // } - if (m.energy > m.fieldRegen) m.energy -= m.fieldRegen m.grabPowerUp(); m.lookForPickUp(); @@ -3998,7 +4001,7 @@ const m = { }, { name: "metamaterial cloaking", - description: "+50% defense while cloaked
after decloaking +333% damage for 2 s
generate 6 energy per second", + description: "+66% defense while cloaked
after decloaking +333% damage for 2 s
generate 6 energy per second", effect: () => { m.fieldFire = true; m.fieldMeterColor = "#333"; @@ -4013,29 +4016,6 @@ const m = { m.walk_cycle -= m.flipLegs * m.Vx; m.pos.x += 4 m.draw(); - - // let history = m.history[(m.cycle - 1) % 600] - // m.pos.x = history.position.x - // m.pos.y = history.position.y + m.yPosDifference - history.yOff - - // m.pos.x += 4 - // ctx.fillStyle = m.fillColor; - // ctx.save(); - // ctx.translate(m.pos.x, m.pos.y); - // m.calcLeg(Math.PI, -3); - // m.drawLeg("#ccc"); - // m.calcLeg(0, 0); - // m.drawLeg("#ccc"); - // ctx.rotate(m.angle); - // ctx.beginPath(); - // ctx.arc(0, 0, 30, 0, 2 * Math.PI); - // ctx.fillStyle = "#fff" - // ctx.fill(); - // ctx.arc(15, 0, 4, 0, 2 * Math.PI); - // ctx.strokeStyle = "#333"; - // ctx.lineWidth = 2; - // ctx.stroke(); - // ctx.restore() } m.drawCloak = function () { m.fieldPhase += 0.007 @@ -4067,27 +4047,27 @@ const m = { } //not shooting (or using field) enable cloak if (m.energy < 0.05 && m.fireCDcycle < m.cycle && !input.fire) m.fireCDcycle = m.cycle - if (m.fireCDcycle + 30 < m.cycle && !input.fire) { //automatically cloak if not firing + if (m.fireCDcycle + 10 < m.cycle && !input.fire) { //automatically cloak if not firing const drain = 0.02 if (!m.isCloak && m.energy > drain + 0.03) { m.energy -= drain m.isCloak = true //enter cloak - m.fieldHarmReduction = 0.5; + m.fieldHarmReduction = 0.33; //66% reduction m.enterCloakCycle = m.cycle if (tech.isCloakHealLastHit && m.lastHit > 0) { const heal = Math.min(0.75 * m.lastHit, m.energy) - if (m.energy > heal) { - m.energy -= heal - m.addHealth(heal); //heal from last hit - m.lastHit = 0 - simulation.drawList.push({ //add dmg to draw queue - x: m.pos.x, - y: m.pos.y, - radius: Math.sqrt(heal) * 200, - color: "rgba(0,255,200,0.6)", - time: 16 - }); - } + // if (m.energy > heal) { + // m.energy -= heal * 0.8 + m.addHealth(heal); //heal from last hit + m.lastHit = 0 + simulation.drawList.push({ //add dmg to draw queue + x: m.pos.x, + y: m.pos.y, + radius: Math.sqrt(heal) * 200, + color: "rgba(0,255,200,0.6)", + time: 16 + }); + // } } if (tech.isIntangible) { for (let i = 0; i < bullet.length; i++) { @@ -4133,9 +4113,16 @@ const m = { m.fieldRange = m.fieldRange * 0.85 + 130 m.fieldDrawRadius = m.fieldRange * 1.1 //* 0.88 //* Math.min(1, 0.3 + 0.5 * Math.min(1, energy * energy)); m.drawCloak() - ctx.globalCompositeOperation = "lighter"; - m.drawCloakedM() - ctx.globalCompositeOperation = "source-over"; + // ctx.globalCompositeOperation = "lighter"; + // m.drawCloakedM() + // ctx.globalCompositeOperation = "source-over"; + + ctx.beginPath(); + ctx.arc(m.pos.x, m.pos.y, 35, 0, 2 * Math.PI); + ctx.strokeStyle = "rgba(255,255,255,0.25)";//"rgba(0,0,0,0.7)";//"rgba(255,255,255,0.7)";//"rgba(255,0,100,0.7)"; + ctx.lineWidth = 10 + ctx.stroke(); + } else if (m.fieldRange < 4000) { m.fieldRange += 90 m.fieldDrawRadius = m.fieldRange //* Math.min(1, 0.3 + 0.5 * Math.min(1, energy * energy)); @@ -4148,8 +4135,8 @@ const m = { if (inPlayer.length > 0) { for (let i = 0; i < inPlayer.length; i++) { if (m.energy > 0) { - if (!inPlayer[i].isUnblockable) m.energy -= 0.007; - if (inPlayer[i].shield) m.energy -= 0.025; + if (!inPlayer[i].isUnblockable) m.energy -= 0.003; + if (inPlayer[i].shield) m.energy -= 0.011; } } } @@ -4158,10 +4145,17 @@ const m = { } } this.drawRegenEnergyCloaking() - if (m.isSneakAttack && m.sneakAttackCycle + Math.min(120, 0.5 * (m.cycle - m.enterCloakCycle)) > m.cycle) { //show sneak attack status - ctx.globalCompositeOperation = "multiply"; - m.drawCloakedM() - ctx.globalCompositeOperation = "source-over"; + if (m.isSneakAttack && m.sneakAttackCycle + Math.min(100, 0.66 * (m.cycle - m.enterCloakCycle)) > m.cycle) { //show sneak attack status + const timeLeft = (m.sneakAttackCycle + Math.min(100, 0.66 * (m.cycle - m.enterCloakCycle)) - m.cycle) * 0.5 + ctx.beginPath(); + ctx.arc(m.pos.x, m.pos.y, 32, 0, 2 * Math.PI); + ctx.strokeStyle = "rgba(180,30,70,0.5)";//"rgba(0,0,0,0.7)";//"rgba(255,255,255,0.7)";//"rgba(255,0,100,0.7)"; + ctx.lineWidth = Math.max(Math.min(10, timeLeft), 3); + ctx.stroke(); + + // ctx.globalCompositeOperation = "multiply"; + // m.drawCloakedM() + // ctx.globalCompositeOperation = "source-over"; } } } diff --git a/js/powerup.js b/js/powerup.js index 27ee626..562a8b2 100644 --- a/js/powerup.js +++ b/js/powerup.js @@ -534,26 +534,24 @@ const powerUps = { if (!tech.isEnergyHealth && m.alive) { powerUps.animatePowerUpGrab('rgba(0, 238, 187,0.25)') let heal = (this.size / 40 / (simulation.healScale ** 0.25)) ** 2 //simulation.healScale is undone here because heal scale is already properly affected on m.addHealth() - // console.log("size = " + this.size, "heal = " + heal) if (heal > 0) { const overHeal = m.health + heal * simulation.healScale - m.maxHealth //used with tech.isOverHeal const healOutput = Math.min(m.maxHealth - m.health, heal) * simulation.healScale m.addHealth(heal); if (healOutput > 0) simulation.makeTextLog(`m.health += ${(healOutput).toFixed(3)}`) //
${m.health.toFixed(3)} if (tech.isOverHeal && overHeal > 0) { //tech quenching - const scaledOverHeal = overHeal // * 0.9 - m.damage(scaledOverHeal); - simulation.makeTextLog(`m.health -= ${(scaledOverHeal).toFixed(3)}`) //
${m.health.toFixed(3)} + m.damage(overHeal); + simulation.makeTextLog(`m.health -= ${(overHeal).toFixed(3)}`) //
${m.health.toFixed(3)} simulation.drawList.push({ //add dmg to draw queue x: m.pos.x, y: m.pos.y, - radius: scaledOverHeal * 500 * simulation.healScale, + radius: overHeal * 500 * simulation.healScale, color: simulation.mobDmgColor, time: simulation.drawTime }); - tech.extraMaxHealth += scaledOverHeal * simulation.healScale //increase max health + tech.extraMaxHealth += overHeal * Math.sqrt(simulation.healScale) //increase max health m.setMaxHealth(); - } else if (overHeal > 0.1) { + } else if (overHeal > 0.13) { //if leftover heals spawn a new spammer heal power up requestAnimationFrame(() => { powerUps.directSpawn(this.position.x, this.position.y, "heal", true, null, overHeal * 40 * (simulation.healScale ** 0.25))// directSpawn(x, y, target, moving = true, mode = null, size = powerUps[target].size()) { }); diff --git a/js/simulation.js b/js/simulation.js index 6ca36b5..4b73590 100644 --- a/js/simulation.js +++ b/js/simulation.js @@ -1272,7 +1272,7 @@ const simulation = { for (let i = 0, len = mob.length; i < len; i++) { if (mob[i].isDropPowerUp && mob[i].alive) count++ } - count *= 0.17 //to fake the chance, this makes it not random, and maybe less confusing + count *= 0.22 //to fake the 20% chance, this makes it not random, and more predictable let cycle = () => { //run after waiting a cycle for the map to be cleared const types = ["heal", "ammo", "heal", "ammo", "research", "coupling", "boost", "tech", "gun", "field"] for (let i = 0; i < count; i++) powerUps.spawnDelay(types[Math.floor(Math.random() * types.length)], 1) diff --git a/js/spawn.js b/js/spawn.js index cb45c95..5b5b277 100644 --- a/js/spawn.js +++ b/js/spawn.js @@ -200,7 +200,7 @@ const spawn = { for (let i = 0, len = mob.length; i < len; ++i) { if (mob[i].alive && !mob[i].isShielded) { if (Vector.magnitude(Vector.sub(this.position, mob[i].position)) - mob[i].radius < this.radius) { - mob[i].damage(0.02 * m.dmgScale); + mob[i].damage(0.025 * m.dmgScale); // mob[i].locatePlayer();// simulation.drawList.push({ //add dmg to draw queue @@ -366,7 +366,7 @@ const spawn = { me.maxMobs = 400 me.mode = [{ name: "boulders", - spawnRate: 170 - 6 * simulation.difficultyMode, + spawnRate: Math.max(30, 170 - 5 * simulation.difficultyMode), do() { if (!(me.cycle % this.spawnRate) && mob.length < me.maxMobs) { me.boulder(me.position.x, me.position.y + 250) @@ -374,10 +374,11 @@ const spawn = { }, enter() { }, exit() { }, - }, { + }, + { name: "mobs", // whoSpawn: spawn.fullPickList[Math.floor(Math.random() * spawn.fullPickList.length)], - spawnRate: 280 - 20 * simulation.difficultyMode, + spawnRate: Math.max(60, 240 - 20 * simulation.difficultyMode), do() { if (!(me.cycle % this.spawnRate) && mob.length < me.maxMobs) { me.torque += 0.000015 * me.inertia; //spin @@ -397,7 +398,7 @@ const spawn = { }, { name: "hoppers", - spawnRate: 480 - 16 * simulation.difficultyMode, + spawnRate: Math.max(90, 480 - 16 * simulation.difficultyMode), do() { if (!(me.cycle % this.spawnRate) && mob.length < me.maxMobs) { me.torque += 0.00002 * me.inertia; //spin @@ -422,7 +423,7 @@ const spawn = { }, { name: "seekers", - spawnRate: 100 - 3 * simulation.difficultyMode, + spawnRate: Math.max(15, 100 - 3 * simulation.difficultyMode), do() { if (!(me.cycle % this.spawnRate) && mob.length < me.maxMobs) { //spawn seeker const index = Math.floor((me.cycle % 360) / 60) @@ -440,7 +441,7 @@ const spawn = { { name: "mines", bombCycle: 0, - bombInterval: 10 - simulation.difficultyMode, + bombInterval: Math.max(2, 10 - simulation.difficultyMode), do() { const yOff = 120 this.bombCycle++ @@ -498,7 +499,7 @@ const spawn = { }, { name: "orbiters", - spawnRate: Math.ceil(4 - 0.25 * simulation.difficultyMode), + spawnRate: Math.ceil(Math.max(2, 5 - 0.2 * simulation.difficultyMode)), orbitersCycle: 0, do() { this.orbitersCycle++ @@ -522,7 +523,7 @@ const spawn = { this.fadeCycle++ if (this.fadeCycle > 0) { me.torque += this.spinForce * me.inertia; //spin //0.00000015 - if (this.fadeCycle > 360) this.fadeCycle = -150 + 2 * simulation.difficultyMode * simulation.difficultyMode //turn laser off and reset + if (this.fadeCycle > 360) this.fadeCycle = -200 + simulation.difficultyMode * simulation.difficultyMode //turn laser off and reset ctx.strokeStyle = "#50f"; ctx.setLineDash([70 + 300 * Math.random(), 55 * Math.random()]); ctx.lineWidth = 1.5; @@ -561,7 +562,7 @@ const spawn = { { name: "black hole", eventHorizon: 0, - eventHorizonRadius: 1900, + eventHorizonRadius: 1700, eventHorizonCycle: 0, do() { this.eventHorizonCycle++ @@ -629,15 +630,121 @@ const spawn = { spawn.shield(me, me.position.x, me.position.y, 1); }, exit() { this.waveCycle = 0 }, + }, + { + name: "slow zone", + waveCycle: 0, + whereX: simulation.isHorizontalFlipped ? -3000 : 3000, + width: 1200, + // isActive: false, + cycle: 0, + cycleDuration: 150, + zone: 0, + isMovingRight: true, + playerSlowTime: 0, + do() { + // console.log(zone) + this.cycle++ + if (this.cycle % this.cycleDuration === 0) { //next zone + this.zone += this.isMovingRight ? 1 : -1 + if (this.zone > 0) this.isMovingRight = false + if (this.zone < -1) this.isMovingRight = true + this.whereX = (simulation.isHorizontalFlipped ? -3000 : 3000) + this.width * this.zone + } + //draw slow zone + if (this.cycle % this.cycleDuration > 0.45 * this.cycleDuration) { + ctx.fillStyle = `rgba(0, 100, 255, ${0.19 + 0.015 * Math.sin(simulation.cycle * 0.36)})`; + ctx.fillRect(this.whereX, -1500, this.width, 1500); + //check for player in range and apply slow debuff + if (player.position.x > this.whereX && player.position.x < this.whereX + this.width) { + this.playerSlowTime = 180 + //damage player + const dmg = 0.0001 * simulation.dmgScale + m.damage(dmg); + } + } else { //show where slow zone is about to show up + ctx.fillStyle = `rgba(0, 100, 255, ${0.2 + 0.25 * Math.random()})`; + ctx.fillRect(this.whereX, -1500, this.width, 12); + ctx.fillRect(this.whereX, -12, this.width, 12); + } + if (this.playerSlowTime > 0) { + this.playerSlowTime-- //warm up player when outside of slow zone + //slow player + // Matter.Body.setVelocity(player, Vector.mult(player.velocity, (1 - 0.01 * this.playerSlowTime))); + // Matter.Body.setVelocity(player, { x: (1 - 0.01 * this.playerSlowTime) * player.velocity.x, y: (1 - 0.0025 * this.playerSlowTime) * player.velocity.y }); //makes the player get stuck slow when walking horizontally + Matter.Body.setVelocity(player, { x: Math.max(0.05, 1 - 0.01 * Math.max(10, this.playerSlowTime)) * player.velocity.x, y: Math.max(0.2, 1 - 0.0025 * this.playerSlowTime) * player.velocity.y }); + //draw effect on player + ctx.beginPath(); + ctx.arc(m.pos.x, m.pos.y, 45, 0, 2 * Math.PI); + ctx.fillStyle = `rgba(0,100,255,${(0.003 * Math.max(10, this.playerSlowTime))})`; + ctx.fill(); + } + }, + enter() { + }, + exit() { }, + }, + { + name: "antigravity", + cycle: 0, + startCycle: 420, + totalCycles: 600, + rectX: simulation.isHorizontalFlipped ? -5400 : -150, //for positioning graphics + do() { + this.cycle++ + if (this.cycle > this.totalCycles) this.cycle = 0 + if (this.cycle === this.startCycle) { + //initial push up + for (let i = 0, len = body.length; i < len; ++i) { + body[i].force.y -= 0.05 * body[i].mass + } + for (let i = 0, len = powerUp.length; i < len; ++i) { + powerUp[i].force.y -= 0.07 * powerUp[i].mass + } + for (let i = 0, len = bullet.length; i < len; ++i) { + bullet[i].force.y -= 0.05 * bullet[i].mass + } + for (let i = 0, len = mob.length; i < len; ++i) { + mob[i].force.y -= 0.15 * mob[i].mass + } + player.force.y -= 0.04 * player.mass + } else if (this.cycle > this.startCycle) { //antigravity + for (let i = 0, len = body.length; i < len; ++i) { //push blocks away horizontally + body[i].force.y -= simulation.g * body[i].mass + Matter.Body.setVelocity(body[i], Vector.mult(body[i].velocity, 0.98)); //friction + } + for (let i = 0, len = powerUp.length; i < len; ++i) { + powerUp[i].force.y -= simulation.g * powerUp[i].mass + } + // for (let i = 0, len = bullet.length; i < len; ++i) { + // bullet[i].force.y -= simulation.g * bullet[i].mass + // Matter.Body.setVelocity(bullet[i], Vector.mult(bullet[i].velocity, 0.98)); //friction + // } + // for (let i = 0, len = mob.length; i < len; ++i) { + // mob[i].force.y -= 0.7 * simulation.g * mob[i].mass + // } + player.force.y -= simulation.g * player.mass //g = 0.0024 + Matter.Body.setVelocity(player, Vector.mult(player.velocity, 0.985)); //friction + //graphics + ctx.fillStyle = `rgba(0, 0, 0, ${0.03 + 0.03 * Math.random()})`; + ctx.fillRect(this.rectX, -1500, 5650, 1500); //cover everything + } else if (this.cycle > this.startCycle - 60) { + //graphical warning of antigravity + ctx.fillStyle = `rgba(0, 0, 0, ${0.2 + 0.25 * Math.random()})`; + ctx.fillRect(this.rectX, -25, 5650, 25); //cover floor + } + }, + enter() { spawn.shield(me, me.position.x, me.position.y, 1); }, + exit() { this.cycle = 0 }, }, // { // name: "__", - // do() {}, - // enter() {}, - // exit() {}, + // do() { }, + // enter() { }, + // exit() { }, // }, ] - shuffle(me.mode); //THIS SHOULDN'T BE COMMENTED OUT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + shuffle(me.mode); //THIS SHOULD NOT BE COMMENTED OUT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! me.do = function () { this.fill = `hsl(${360 * Math.sin(this.cycle * 0.011)},${80 + 20 * Math.sin(this.cycle * 0.004)}%,${60 + 20 * Math.sin(this.cycle * 0.009)}%)` if (this.health < 1) { @@ -648,7 +755,8 @@ const spawn = { this.damageReductionDecay(); for (let i = 0; i < this.totalModes; i++) this.mode[i].do() } - // this.mode[5].do() //deelete this + // this.mode[10].do() //comment out this + // console.log(this.mode[9].name) // this.cycle++; // this.mode[4].do() // this.mode[7].do() @@ -719,7 +827,7 @@ const spawn = { } } Matter.Body.setDensity(me, 0.003); //normal is 0.001 - me.timeLeft = 360; + me.timeLeft = 300; me.g = 0.0005; //required if using this.gravity me.frictionAir = 0.005; me.friction = 1; @@ -740,6 +848,12 @@ const spawn = { this.torque += this.spin; this.gravity(); this.timeLimit(); + if (this.timeLeft < 60) { + ctx.beginPath(); + ctx.arc(this.position.x, this.position.y, this.explodeRange, 0, 2 * Math.PI); + ctx.fillStyle = `rgba(255,255,255,0.15)`; + ctx.fill(); + } }; } me.orbitalNoVelocity = function (who, radius, phase, speed) { //orbitals that don't include their host velocity //specifically for finalBoss @@ -2502,7 +2616,7 @@ const spawn = { spawn.hopBullet(this.position.x, this.position.y) this.death(); } - if (Matter.Query.collides(this, [player]).length > 0) this.isExploding = true + if (Matter.Query.collides(this, [player]).length > 0 && !(m.isCloak && tech.isIntangible) && m.immuneCycle < m.cycle) this.isExploding = true if (this.isExploding) { if (this.countDown-- < 0) { //explode this.death(); @@ -2538,7 +2652,7 @@ const spawn = { // me.isBadTarget = true; me.isMobBullet = true; me.showHealthBar = false; - me.timeLeft = 1140 + Math.floor(480 * Math.random()); + me.timeLeft = 1020 + Math.floor(480 * Math.random()); me.isRandomMove = Math.random() < 0.3 //most chase player, some don't me.accelMag = 0.01; //jump height @@ -2547,7 +2661,7 @@ const spawn = { me.friction = 1 me.frictionStatic = 1 me.restitution = 0; - me.delay = 130 + 60 * simulation.CDScale; + me.delay = 120 + 60 * simulation.CDScale; // Matter.Body.rotate(me, Math.random() * Math.PI); me.collisionFilter.category = cat.mobBullet; me.collisionFilter.mask = cat.player | cat.map | cat.body | cat.bullet; @@ -3673,12 +3787,54 @@ const spawn = { } else if (c < -threshold) { this.torque -= turn; } - const flapArc = 0.7 //don't go past 1.57 for normal flaps + const flapArc = 0.7 //don't go past 1.57 for normal flaps ctx.fillStyle = `hsla(${160 + 40 * Math.random()}, 100%, ${25 + 25 * Math.random() * Math.random()}%, 0.2)`; //"rgba(0,235,255,0.3)"; // ctx.fillStyle = `hsla(44, 79%, 31%,0.4)`; //"rgba(0,235,255,0.3)"; this.wing(this.angle + Math.PI / 2 + flapArc * Math.sin(simulation.cycle * this.flapRate), this.flapRadius) this.wing(this.angle - Math.PI / 2 - flapArc * Math.sin(simulation.cycle * this.flapRate), this.flapRadius) } + // else { //flocking behavior (not working yet) + // this.force.x += Math.cos(this.angle) * this.accelMag * this.mass + // this.force.y += Math.sin(this.angle) * this.accelMag * this.mass + // //set direction to turn to fire + // if (!(simulation.cycle % this.seePlayerFreq)) { + // //find nearest mob and maintain a distance + // let nearestMob = null + // let nearestMobDistance = Infinity + // for (let i = 0; i < mob.length; i++) { + // const newMobDistance = Vector.magnitude(Vector.sub(this.position, mob[i].position)) + // if (mob[i].isDropPowerUp && mob[i].alive && newMobDistance < nearestMobDistance) { //&& !mob[i].isBoss + // nearestMobDistance = newMobDistance + // nearestMob = mob[i] + // } + // } + // if (nearestMob) { + // // console.log(nearestMob) + // this.fireDir = Vector.normalise(Vector.sub(nearestMob.position, this.position)); + // //dot product can't tell if mob is facing directly away or directly towards, so check if pointed directly away from player every few cycles + // const mod = (a, n) => { + // return a - Math.floor(a / n) * n + // } + // const sub = Vector.sub(nearestMob.position, this.position) //check by comparing different between angles. Give this a nudge if angles are 180 degree different + // const diff = mod(Math.atan2(sub.y, sub.x) - this.angle + Math.PI, 2 * Math.PI) - Math.PI + // if (Math.abs(diff) > 2.8) this.torque += 0.0002 * this.inertia * Math.random(); + // } + // } + // //rotate towards fireDir + // const angle = this.angle + Math.PI / 2; + // c = Math.cos(angle) * this.fireDir.x + Math.sin(angle) * this.fireDir.y; + // const threshold = 0.4; + // const turn = 0.000025 * this.inertia + // if (c > threshold) { + // this.torque += turn; + // } else if (c < -threshold) { + // this.torque -= turn; + // } + // const flapArc = 0.7 //don't go past 1.57 for normal flaps + // ctx.fillStyle = `hsla(${160 + 40 * Math.random()}, 100%, ${25 + 25 * Math.random() * Math.random()}%, 0.2)`; //"rgba(0,235,255,0.3)"; // ctx.fillStyle = `hsla(44, 79%, 31%,0.4)`; //"rgba(0,235,255,0.3)"; + // this.wing(this.angle + Math.PI / 2 + flapArc * Math.sin(simulation.cycle * this.flapRate), this.flapRadius) + // this.wing(this.angle - Math.PI / 2 - flapArc * Math.sin(simulation.cycle * this.flapRate), this.flapRadius) + // } }; }, beetleBoss(x, y, radius = 50) { @@ -5237,9 +5393,7 @@ const spawn = { me.do = function () { this.checkStatus(); - if (Matter.Query.collides(this, [player]).length > 0) { - this.isExploding = true - } + if (Matter.Query.collides(this, [player]).length > 0 && !(m.isCloak && tech.isIntangible) && m.immuneCycle < m.cycle) this.isExploding = true if (this.isExploding) { if (this.countDown-- < 0) { //explode diff --git a/js/tech.js b/js/tech.js index 4792f6b..44d1103 100644 --- a/js/tech.js +++ b/js/tech.js @@ -237,7 +237,7 @@ const tech = { if (tech.isGunChoice && tech.buffedGun === b.inventoryGun) dmg *= 1 + 0.31 * b.inventory.length if (powerUps.boost.endCycle > m.cycle) dmg *= 1 + powerUps.boost.damage if (m.coupling && (m.fieldMode === 0 || m.fieldMode === 5)) dmg *= 1 + 0.015 * m.coupling - if (m.isSneakAttack && m.sneakAttackCycle + Math.min(120, 0.5 * (m.cycle - m.enterCloakCycle)) > m.cycle) dmg *= 4.33 * (1 + 0.033 * m.coupling) + if (m.isSneakAttack && m.sneakAttackCycle + Math.min(100, 0.66 * (m.cycle - m.enterCloakCycle)) > m.cycle) dmg *= 4.33 * (1 + 0.033 * m.coupling) if (tech.deathSkipTime) dmg *= 1 + 0.6 * tech.deathSkipTime if (tech.isTechDebt) dmg *= tech.totalCount > 20 ? Math.pow(0.85, tech.totalCount - 20) : 4 - 0.15 * tech.totalCount // if (tech.isTechDebt) dmg *= Math.min(Math.pow(0.85, tech.totalCount - 20), 4 - 0.15 * tech.totalCount) if (tech.isFlipFlopDamage && tech.isFlipFlopOn) dmg *= 1.555 @@ -365,6 +365,57 @@ const tech = { if (this.count) m.resetSkin(); } }, + { + name: "Higgs mechanism", + description: "+77% fire rate
while firing your position is fixed", + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + isSkin: true, + allowed() { + return !m.isAltSkin && !m.isShipMode && !tech.isAlwaysFire + }, + requires: "not skinned, ship mode, automatic", + effect() { + tech.isFireMoveLock = true; + b.setFireCD(); + b.setFireMethod(); + m.skin.strokeGap(); + }, + remove() { + if (tech.isFireMoveLock) { + tech.isFireMoveLock = false + b.setFireCD(); + b.setFireMethod(); + if (this.count) m.resetSkin(); + } + } + }, + { + name: "Hilbert space", + description: "+142% damage
after a collision enter an alternate reality", + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + isAltRealityTech: true, + isSkin: true, + allowed() { + return !tech.isResearchReality && !tech.isSwitchReality + }, + requires: "not Ψ(t) collapse, many-worlds", + damage: 2.42, + effect() { + m.skin.anodize(); + tech.damage *= this.damage + tech.isCollisionRealitySwitch = true; + }, + remove() { + if (this.count) tech.damage /= this.damage + tech.isCollisionRealitySwitch = false; + } + }, { name: "aperture", description: "every 6 seconds your damage cycles
between -10% and +110% damage", @@ -460,9 +511,9 @@ const tech = { frequency: 4, frequencyDefault: 4, allowed() { - return tech.isEnergyHealth + return tech.isEnergyHealth && !tech.isOverHeal }, - requires: "mass-energy equivalence", + requires: "mass-energy equivalence, not quenching", effect() { powerUps.healGiveMaxEnergy = true; //tech.healMaxEnergyBonus given from heal power up powerUps.heal.color = "#ff0" //"#0ae" @@ -947,30 +998,6 @@ const tech = { tech.isFarAwayDmg = false; } }, - { - name: "Higgs mechanism", - description: "+45% fire rate
while firing your position is fixed", - maxCount: 1, - count: 0, - frequency: 1, - frequencyDefault: 1, - allowed() { - return !m.isShipMode && !tech.isAlwaysFire - }, - requires: "not ship mode, automatic", - effect() { - tech.isFireMoveLock = true; - b.setFireCD(); - b.setFireMethod(); - }, - remove() { - if (tech.isFireMoveLock) { - tech.isFireMoveLock = false - b.setFireCD(); - b.setFireMethod(); - } - } - }, { name: "integrated armament", link: `
integrated armament`, @@ -1278,21 +1305,21 @@ const tech = { { name: "collider", descriptionFunction() { - return `after mobs die there is a +50% chance to
collide power ups to form different power ups` + return `after mobs die power ups
randomly collide to form different power ups` // return `after mobs die there is a +33% chance to convert
${powerUps.orb.heal()}, ${powerUps.orb.ammo()}, ${powerUps.orb.research(1)}, tech, field, gun into other types` }, - maxCount: 2, + maxCount: 1, count: 0, frequency: 1, frequencyDefault: 1, allowed: () => true, requires: "", effect() { - tech.collidePowerUps += 0.5 + tech.collidePowerUps = true }, remove() { - tech.collidePowerUps = 0 + tech.collidePowerUps = false } }, { @@ -1316,17 +1343,53 @@ const tech = { tech.isShieldAmmo = false; } }, + { + name: "yield stress", + description: "+55% damage
to mobs at maximum health", + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { + return m.fieldMode !== 7 && tech.mobSpawnWithHealth === 0 + }, + requires: "not cloaking, reaction inhibitor", + effect() { + tech.isMobFullHealth = true + }, + remove() { + tech.isMobFullHealth = false + } + }, + { + name: "cascading failure", + description: "+222% damage
to mobs below 25% health", + maxCount: 1, + count: 0, + frequency: 3, + frequencyDefault: 3, + allowed() { + return tech.mobSpawnWithHealth > 0 + }, + requires: "reaction inhibitor", + effect() { + tech.isMobLowHealth = true + }, + remove() { + tech.isMobLowHealth = false + } + }, { name: "reaction inhibitor", - description: "-11% maximum mob health", //health + description: "mobs spawn with -12% initial health", maxCount: 3, count: 0, frequency: 1, frequencyDefault: 1, allowed() { - return true //tech.nailsDeathMob || tech.sporesOnDeath || tech.isExplodeMob || tech.botSpawner || tech.isMobBlockFling || tech.iceIXOnDeath + return !tech.isMobFullHealth }, - requires: "", //"any mob death tech", + requires: "not topological defect", effect() { tech.mobSpawnWithHealth++ mobs.setMobSpawnHealth() @@ -1343,7 +1406,7 @@ const tech = { { name: "scrap bots", link: `scrap bots`, - description: "after mobs die you have a +33% chance
to build scrap bots that operate for 13 seconds", + description: "after mobs die you have a +33% chance
to build scrap bots that operate for 15 seconds", maxCount: 3, count: 0, frequency: 1, @@ -1363,7 +1426,7 @@ const tech = { { name: "scrap refit", link: `scrap refit`, - description: "after mobs die
reset scrap bots to 13 seconds of operation", + description: "after mobs die
reset scrap bots to 15 seconds of operation", maxCount: 1, count: 0, frequency: 3, @@ -3108,9 +3171,9 @@ const tech = { frequencyDefault: 1, isHealTech: true, allowed() { - return true + return !tech.isEnergyHealth }, - requires: "", + requires: "not mass-energy", effect() { tech.isOverHeal = true; }, @@ -3121,7 +3184,7 @@ const tech = { { name: "accretion", descriptionFunction() { - return `${powerUps.orb.heal(1)} follow you, even between levels
spawn ${powerUps.orb.heal(5)}` + return `${powerUps.orb.heal(1)} follow you, even between levels
spawn ${powerUps.orb.heal(7)}` }, // description: `${powerUps.orb.heal(1)} follow you, even between levels
spawn ${powerUps.orb.heal(5)}`, maxCount: 1, @@ -3136,7 +3199,7 @@ const tech = { effect() { tech.isHealAttract = true powerUps.setPowerUpMode(); - for (let i = 0; i < 5; i++) powerUps.spawn(m.pos.x + 100 * (Math.random() - 0.5), m.pos.y + 100 * (Math.random() - 0.5), "heal"); + for (let i = 0; i < 7; i++) powerUps.spawn(m.pos.x + 100 * (Math.random() - 0.5), m.pos.y + 100 * (Math.random() - 0.5), "heal"); }, remove() { tech.isHealAttract = false @@ -3295,28 +3358,6 @@ const tech = { tech.isImmortal = false; } }, - { - name: "Hilbert space", - description: "+99% damage
after a collision enter an alternate reality", - maxCount: 1, - count: 0, - frequency: 1, - frequencyDefault: 1, - isAltRealityTech: true, - allowed() { - return !tech.isResearchReality && !tech.isSwitchReality - }, - requires: "not Ψ(t) collapse, many-worlds", - damage: 1.99, - effect() { - tech.damage *= this.damage - tech.isCollisionRealitySwitch = true; - }, - remove() { - if (this.count) tech.damage /= this.damage - tech.isCollisionRealitySwitch = false; - } - }, { name: "many-worlds", // description: "each level is an alternate reality, where you
find a tech at the start of each level", @@ -3415,7 +3456,10 @@ const tech = { }, { name: "perturbation theory", - description: `if you have no ${powerUps.orb.research(1)} in your inventory
+70% fire rate`, + description: `if you have no ${powerUps.orb.research(1)} in your inventory
+60% fire rate`, + // descriptionFunction() { + // return `+40% damage, but -10% damage
for each ${powerUps.orb.research(1)} in your inventory (${40 - 10 * powerUps.research.count}% damage)` + // }, maxCount: 1, count: 0, frequency: 1, @@ -3426,7 +3470,7 @@ const tech = { requires: "no research", effect() { tech.isRerollHaste = true; - tech.researchHaste = 0.3; + tech.researchHaste = 0.4; //+60% fire rate b.setFireCD(); }, remove() { @@ -3482,7 +3526,7 @@ const tech = { { name: "mass production", descriptionFunction() { - return `tech always have +3 choices to spawn
${powerUps.orb.ammo(8)} ${powerUps.orb.heal(8)}    or ${powerUps.orb.research(5)}` + return `tech always have +3 choices to spawn
${powerUps.orb.ammo(10)} ${powerUps.orb.heal(10)}    or ${powerUps.orb.research(7)}` }, // description: `tech always have +3 choices to spawn
${powerUps.orb.ammo(8)} ${powerUps.orb.heal(8)}    or ${powerUps.orb.research(5)}`, maxCount: 1, @@ -3500,7 +3544,7 @@ const tech = { }, { name: "research", - description: `spawn ${powerUps.orb.research(5)}`, + description: `spawn ${powerUps.orb.research(7)}`, maxCount: 1, count: 0, frequency: 0, @@ -3510,13 +3554,13 @@ const tech = { allowed() { return true }, requires: "", effect() { - powerUps.spawnDelay("research", 5); + powerUps.spawnDelay("research", 7); }, remove() { } }, { name: "ammo", - description: `spawn ${powerUps.orb.ammo(8)}`, + description: `spawn ${powerUps.orb.ammo(10)}`, maxCount: 1, count: 0, frequency: 0, @@ -3526,14 +3570,14 @@ const tech = { allowed() { return true }, requires: "", effect() { - powerUps.spawnDelay("ammo", 8); + powerUps.spawnDelay("ammo", 10); }, remove() { } }, { name: "heals", descriptionFunction() { - return `spawn ${powerUps.orb.heal(8)}` + return `spawn ${powerUps.orb.heal(10)}` }, maxCount: 1, count: 0, @@ -3544,7 +3588,7 @@ const tech = { allowed() { return true }, requires: "mass production", effect() { - powerUps.spawnDelay("heal", 8); + powerUps.spawnDelay("heal", 10); }, remove() { } }, @@ -5339,7 +5383,7 @@ const tech = { } }, { - name: "phonon", //longitudinal //gravitational wave? + name: "phonon", description: "waves are low frequency, high damage
expanding arcs that propagate through solids", isGunTech: true, maxCount: 1, @@ -6818,7 +6862,7 @@ const tech = { }, remove() { tech.railChargeRate = 0.97; - tech.harpoonDensity = 0.007 + tech.harpoonDensity = tech.isRailGun ? 0.007 : 0.004 } }, { @@ -6837,6 +6881,7 @@ const tech = { ammoBonus: 9, effect() { tech.isRailGun = true; + tech.harpoonDensity = tech.isRailGun ? 0.007 : 0.004 b.guns[9].chooseFireMethod() b.guns[9].ammoPack = 5; b.guns[9].ammo = b.guns[9].ammo * 6; @@ -6845,6 +6890,7 @@ const tech = { remove() { if (tech.isRailGun) { tech.isRailGun = false; + tech.harpoonDensity = tech.isRailGun ? 0.007 : 0.004 b.guns[9].chooseFireMethod() b.guns[9].ammoPack = 1.7; b.guns[9].ammo = Math.ceil(b.guns[9].ammo / 6); @@ -7025,21 +7071,41 @@ const tech = { }, { name: "induction furnace", - description: "after using harpoon to collect a power up
+600% harpoon damage", + description: "after using harpoon or grapple to collect power ups
+77% harpoon or grapple damage for 8 seconds", isGunTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("harpoon") && !tech.isRailGun + return ((tech.haveGunCheck("harpoon") && !tech.isRailGun) || m.fieldMode === 10) && !tech.isHarpoonFullHealth }, - requires: "harpoon, not railgun", + requires: "harpoon, grappling hook, not railgun, brittle", effect() { tech.isHarpoonPowerUp = true }, remove() { tech.isHarpoonPowerUp = false + tech.harpoonPowerUpCycle = 0 + } + }, + { + name: "brittle", + description: "+88% harpoon and grapple damage
to mobs at maximum health", + isGunTech: true, + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return (tech.haveGunCheck("harpoon") || m.fieldMode === 10) && !tech.isHarpoonPowerUp + }, + requires: "harpoon, grappling hook, not induction furnace", + effect() { + tech.isHarpoonFullHealth = true + }, + remove() { + tech.isHarpoonFullHealth = false } }, { @@ -7437,7 +7503,7 @@ const tech = { //************************************************** { name: "spherical harmonics", - description: "+50% standing wave deflection efficiency
shield deflection radius maintains it's maximum range", //standing wave oscillates in a 3rd dimension
+ description: "+50% standing wave deflection efficiency
shield deflection radius holds it's max range", //standing wave oscillates in a 3rd dimension
isFieldTech: true, maxCount: 9, count: 0, @@ -8133,7 +8199,7 @@ const tech = { }, { name: "degenerate matter", - description: "if your field is active
+85% defense", + description: "if your field is active
+88% defense", isFieldTech: true, maxCount: 1, count: 0, @@ -8400,7 +8466,7 @@ const tech = { { name: "no-cloning theorem", // descriptionFunction() { return `+45% chance to duplicate spawned power ups
after a mob dies –2% duplication (${tech.duplicationChance()})` }, - description: `+45% chance to duplicate spawned power ups
after a mob dies –2% duplication`, + description: `+40% chance to duplicate spawned power ups
after a mob dies –1% duplication`, isFieldTech: true, maxCount: 1, count: 0, @@ -8411,7 +8477,7 @@ const tech = { }, requires: "cloaking, time dilation", effect() { - tech.cloakDuplication = 0.45 + tech.cloakDuplication = 0.4 powerUps.setPowerUpMode(); //needed after adjusting duplication chance if (!build.isExperimentSelection && !simulation.isTextLogOpen) simulation.circleFlare(0.4); }, @@ -8423,7 +8489,7 @@ const tech = { { name: "metamaterial absorber", //quantum eraser descriptionFunction() { - return `for each mob left alive after you exit a level
there is a 17% chance to spawn a random power up` + return `for each mob left alive after you exit a level
there is a 22% chance to spawn a random power up` }, // descriptionFunction() { // return `for each mob left alive after you exit a level
` @@ -8447,7 +8513,7 @@ const tech = { { name: "symbiosis", descriptionFunction() { - return `after a boss dies spawn ${powerUps.orb.research(3)}${powerUps.orb.heal(3)} and a tech
after a mob dies –0.5 maximum ${tech.isEnergyHealth ? "energy" : "health"}` + return `after a boss dies spawn ${powerUps.orb.research(4)}${powerUps.orb.heal(3)} and a tech
after a mob dies –0.5 maximum ${tech.isEnergyHealth ? "energy" : "health"}` }, isFieldTech: true, maxCount: 1, @@ -8491,7 +8557,7 @@ const tech = { { name: "patch", link: `patch`, - description: "after cloaking recover 75% of your
last health loss using that much energy", + description: "after cloaking recover 75%
of your last health lost", isFieldTech: true, maxCount: 1, count: 0, @@ -8528,6 +8594,25 @@ const tech = { tech.isCloakStun = false; } }, + { + name: "topological defect", + description: "+88% damage
to mobs at maximum health", + isFieldTech: true, + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { + return (m.fieldMode === 8 || m.fieldMode === 7) && tech.mobSpawnWithHealth === 0 && !tech.isMobFullHealth + }, + requires: "cloaking, pilot wave, not reaction inhibitor, yield stress", + effect() { + tech.isMobFullHealthCloak = true + }, + remove() { + tech.isMobFullHealthCloak = false + } + }, // { // name: "ambush", // description: "metamaterial cloaking field damage effect
is increased from 333% to 555%", @@ -9192,6 +9277,23 @@ const tech = { }, remove() { } }, + { + name: "planned obsolescence", + description: "build 100 scrap bots
bots might last for 30 seconds", + maxCount: 1, + count: 0, + frequency: 0, + isJunk: true, + allowed: () => true, + requires: "", + effect() { + for (let i = 0; i < 100; i++) { + b.randomBot(m.pos, false) + bullet[bullet.length - 1].endCycle = simulation.cycle + 800 + 1000 * Math.random() //15 seconds + } + }, + remove() { } + }, // { // name: "synchrotron", // descriptionFunction() { @@ -11921,4 +12023,9 @@ const tech = { isHookExplosion: null, isHarpoonDefense: null, isReel: null, + harpoonPowerUpCycle: null, + isHarpoonFullHealth: null, + isMobFullHealth: null, + isMobFullHealthCloak: null, + isMobLowHealth: null } \ No newline at end of file diff --git a/todo.txt b/todo.txt index 0ac580b..5351fe1 100644 --- a/todo.txt +++ b/todo.txt @@ -1,24 +1,64 @@ ******************************************************** NEXT PATCH ************************************************** -why mode is now 20% easier, but still 25% harder than hard mode - easy:1, normal:2, hard:4, why:6->5 +mob health tech + tech: cascading failure - +222% damage to mobs below 25% health + tech: yield stress - +55% damage to mobs at maximum health + cloaking tech: topological defect - +88% damage to mobs at maximum health + harpoon tech: brittle - +88% harpoon/grapple damage to mobs at maximum health -new community map unchartedCave by 3xionDev! +cloaking buffs + 50->66% defense while cloaked + recloak 0.25s faster + simplified cloaking field graphics + boson composite drains much less energy while moving through mobs and shields + fixed bug where mines and egg mobs were colliding with player while intangible + patch no longer drains energy when you heal on cloaking + metamaterial absorber gets 17->22% chance to spawn a power up for each mob alive + no-cloning theorem changes to 45->40% duplication and 2->1% duplication loss on killing a mob -Newtons 1st law 66->88% defense when moving fast -Newtons 2nd law 66->88% damage when moving fast -CIWS energy 20->18 per shot -rupture disables reel and tokamak +finalBoss phases: + new: slow zone, antigravity pulse + nerfed: laser, black hole, orbitals + buffed: oscillation, mobs + improved graphics: boulder +Hilbert space has a skin. 99->142% damage increase, but randomize tech after taking damage +Higgs mechanism has a skin. +45->77% fire rate, player can't move while firing +induction furnace gives +77% harpoon/grapple damage for 8 seconds after picking up a power up +collider 50->100% chance to combine and randomize power ups +quenching gives more bonus max health at high difficulty level (maybe around 30% more health) +accretion gives 5->7 heal power ups +dynamo bots follow player much closer when you have many of them +scrap-bots don't follow the player as accurately or as quickly + scrap bot duration 13->15 seconds +JUNK tech: planned obsolescence - make 100 scrap bots that last for about 30 seconds + +community map dojo by werid_pusheen + fixed by Cornbread 2100 + +hard mode gets 1 less heal at the start +hard and why difficulty don't begin with starter mobs +hopBullet mobs last 2 seconds less time +adjusted button heights on train station level to be consistently the same height *********************************************************** TODO ***************************************************** +hexagon head skin + maybe give defense -scrap bots don't follow player - adjust spawn rates to balance +foam tech: increase size of foam and increase duration, but drop speed down, so they come to a stop and just hang + allow them to harm player? + this is probably just too annoying + +make a flutter variant + just move the wings to the back? + slow flap, and acceleration that increases when the flap occurs, like swimming make grappling hook of different shapes + shapes + longer + circular with spikes indicate tech upgrades? rupture, reel, tokamak do this in draw or in verticies? @@ -31,8 +71,6 @@ grappling hook field field tech ideas Buoyancy - aerostat, but for defense: +70% defense while off the ground too similar to degenerate matter - generate ___ after destroying blocks - energy, drones, iceIX, explosion, nails, junk bots? tech - killing a mob heals for the last damage you took disable cloaking heal? maybe you don't need to disable, just don't heal twice @@ -43,9 +81,6 @@ on sucker mob death trigger radiation damage AoE and a graphic (Hawking radiati tech prismatic laser - cycles between different laser colors every 1-2 seconds -make phonon the default wave gun type and make a tech to switch to the normal wave beam - nerf phonon, buff wave - sword slash for plasma torch (giving up on this for now, had trouble making graphics look good) activates when mouse is close to player gradual activation @@ -83,12 +118,6 @@ use cross product rotation for other mobs? super-bot: fires super balls -tech - only allow 1,2 turrets at time. spawning a new mine removes the oldest mine - turrets never run out of ammo - or turrets automatically use one of your mine ammos when they run out? - good with multi gun builds - conflict with booby trap? - tech: after a needle hits a mobs the needle splits into 3 needles? reset your fire CD? @@ -183,32 +212,6 @@ hookBoss fires a hook that pulls player towards it player targeted unless cloaking also add effect to finalBoss -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 - maybe a physics body like the shield but it only covers 1/3 of mob? - falling object warps to ceiling after hitting floor - doesn't end, player needs to kill it - slowly grows? - slow effect zones - random placement or place over player or both! - draw white dot and an outline of area of effect - expanding circle stroke, freeze effect triggers when stroke circle hits fill circle - after 1-2 seconds freeze player if in the zone - also freeze mobs - effect that makes player have to be close to boss - hook that tries to yank the player into hitting finalBoss - does damage - pulls player into center - counter with wormhole, negative mass - player targeted unless cloaking - - mob status effect - emit - mobs fire lasers for a few seconds tech: phosphorescence - mobs emit after being hit with laser beams @@ -226,7 +229,7 @@ tech increase max energy and energy to 5000, but you can no longer regen energy it would be nice if there was incentive to go slow when choosing tech so n-gon is more relaxing add some css based visual effects for opening up a tech,gun,field -make a new coupling effect for perfect diamagnetism or standing wave +make a new coupling effect for perfect diamagnetism make a faster smaller version of cell boss that also has map collisions @@ -237,22 +240,11 @@ JUNK tech description that changes similar to cards in inscription that changes based on mouse position can you tell if mouse is over card? -tech - buff MACHO range, effect, move speed? -while you are inside MACHO it will damage mobs? - PWA? https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps https://codeburst.io/how-to-easily-turn-your-static-website-to-a-progressive-web-app-pwa-b0af08da9693 https://github.com/landgreen/n-gon/pull/32/files -bug blocks and power ups falling through map - always foam gun (4-5 times) - might be about tech pressure vessel - happens rarely, doesn't repeat - only occurs for 3 people so far - normally after level 6 - occurred once on the first level, didn't fire gun and was able to walk through a body - Tech:when relay switch/flip flop is on, turn ammo powerups into boosts, when relay swicth/flip flop is off, ammo powerups remain ammo powerups or toggle other power ups health/ammo @@ -260,9 +252,6 @@ Tech:when relay switch/flip flop is on, turn ammo powerups into boosts, when rel JUNK: what the golf? trying to throw a block throws you instead -tech for lens - you can only fire through the lens - and some buff? damage or energy? - complete blowSuckBoss... or don't tech: laser reflections increase damage @@ -272,18 +261,6 @@ JUNK tech different effects based on night or day Boss that shoots out a ring of bullets, then after a few seconds it gravitates the bullets back -coupling - put coupling description as 4th line on field description - raw text no function call - no need for coupling description in power ups, pause - negative coupling? - wouldn't work for iceIX -coupling tech - names: strongly coupled, Vibronic coupling, NMR coupling - tech: +x% field coupling, your field changes randomly every y seconds - tech: coupling starts at 200%, but decays when the field is in use, coupling recharges when the field is not in use - some fields aren't used much (that's ok?) - tech give laser mines more lasers (3->4? 5?) rewindBoss: after hitting 1/5 damage thresholds the boss rewinds back in time to where it was a few seconds ago @@ -307,11 +284,6 @@ immediately fire all of your ammo after taking damage explode while invulnerable scale explosion radius with damage -quantum immortality: send you to a new tab after you die with a random load out - basically everything is the same as it is now, but you switch tabs - -Tech: Tech/guns/fields can no longer be duplicated. Duplication applies twice - tech: get sent to a new tab that closes in 3 minutes in the new tab you play reactor if you die in reactor you die in game, if you win you get 2-3 tech in the original game? @@ -319,31 +291,8 @@ tech: get sent to a new tab that closes in 3 minutes count guns, field, tech and give random stuff on new tab i-frame instead of tab? -reduce the amount of research and nerf anti randomization tech - increase possible synergies that go nuts - -tech expansion: field coupling also expands each fields in different ways - how to make the description work - change description based on your current field? - perfect diamagnetism moves forward when you hold down the shield - it's great, but maybe annoying? - maybe only with crouch? - perfect diamagnetism just replace or increase Messier effect - time dilation drains 1/2 as much energy when paused - grow plasma torch as you hold it down - negative mass effects much more space - needs more benefit? - reduces the cloaking vision effect? - needs more benefit? - tech: missiles explode a 2nd time after 1/2 a second (with a slightly different position determined by original velocity) -The tech that makes blocks that fall into a wormhole give energy should scale with block size, with the same formula as tokomak - -junk suggestion: useless machine - ejects itself and removes itself from the item pool - - - seed isn't working right from shared URL mob mechanics @@ -359,8 +308,6 @@ mob mechanics spawns new nodes draws connections as quad lines -tech: You can place an extra perfect diamagnatism field on the map - standing wave no longer pushes mobs away, but it can do damage to mobs caught in area effect Standing wave harmonics no longer deflects, but instead discharges excess energy as lightning toward nearby enemies negative mass field does damage to mobs inside field @@ -1157,6 +1104,7 @@ possible names for tech Josephson junction - superconducting junction Pyroelectricity - voltage from temp changes - upgrade from piezoelectricity perturbation + Unruh effect - accelerating makes heat/thermal particles ******************************************************** CARS IMAGES ********************************************************