From 2282cb89b11f7280e2e4da307dcfc7915faf9ee4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 18:09:20 -0500 Subject: [PATCH] Fixed sector damage calculations / Campaign balance --- core/assets/maps/windsweptIslands.msav | Bin 13400 -> 13484 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/TechTree.java | 1 + core/src/mindustry/content/UnitTypes.java | 2 +- core/src/mindustry/game/Waves.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 30 ++++++++++++---------- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/core/assets/maps/windsweptIslands.msav b/core/assets/maps/windsweptIslands.msav index d5e838b60dd4f312d7d8bce89580163b850e9216..2c8547f6f9676540b7aef2129f4291928ccdfd01 100644 GIT binary patch literal 13484 zcmb=J^R_l~Ld^BjdvD);uX_LTX2U_g0tTiSg9{824J;~wN{&n-;uDq3ym(yAmPt2@ zRWEbj%OGP^(z(Rdec89xNlL1PQ#3-0-ne+43=7qXoFwW!&8727Qc$<3^~Sm-pOigS z%aV5Qc`~p1yzTwH`S%<)c(3wWbx3Q`{k!KZzrQK3%ztNB`B`#l$dVA7b!s7nJ1<8_ zZV`{xGG5&^T}nK9S-=f@b93w6`C&(EW3Ps6{o9_-FMG${+PeD3fr-+gTdrJ~>!!bT z`mDd+Yo8u`{cCPpT}W&9+iOdo=EeKQZT^4a&coXFe2apN_l<|$`QBP@`u||-sts4> zzW)|gD>^^F(f3UACh4_n6cySz5>|)x7VN-MgeL8Jf+KrbhJ~?H-tl4dx@%7iu*K!p#`!2uu-mjO% z)&AEpKXpFajr+&n{`Na(&i3o!4$XIS_g{#Zl`nhs^4SYV!G`|(Je(UN_dZ{F&g>*;>& zxBKwJ;q|MFal7xoe`k9=Dnnn^cE|RuS8R6G_w729eblZhA-{g#MMMAJeKIp=->px` zfBom@wLcGDOnTP+tc9^~-{luuFBq@wHe2;A`L61*;s^nmFKwn`yALmQ{8e%GwR@D! zt;Of%@9n>kS2|05=bm~q-ZMMzd0lR_EKpu%sa^1GJ?Hb7?f1(I(Nz0z}2DdY^Jf-O*C|9CWc}`^CVcj@1_;viQYA8*QX)k4SkZM~eP> z>lbaU)4byR+*PN=rT$(!^YhrwxazpjUx)8GWiPw@L%r9eanBgNA|b> z{Lc1o@5K846-}+iujRh&ZfAb?a6$EqV*d6!hZ94ywnd$uE_F+0tK`i2w-#KCliD)N zc-xMBH(%H$)dWYxo0Wd6boq6oDDT3BLl+X$4*FExbK%yF3cV1c=DvWn(6RjF{Om8% za~ri{Uc3@8{NEuKo1C~YQEu&lF1}4&v);}#dwn!9_~}~X;EmJPi4~i0V< z^veG;Gm>)tv@e^wA^VZWr-+F&p9>w_(l1&zVOavh4Y^~Fi=RK7bmi90TgUmDPkh(^ z()Rq9RC8gJ-L|LO=Iv=sl~ewl|5s?`voi~>XPq_iEIz#=z|^{E-{QL~(lQ%s7p(ea z=<)rN?2^1MO&py^%YQ|=^6p-`#x`UBdk>TIqDFJi^?W>DT%ieVX@f?*jANwYj2eU47f%o&A;0p|8(xEtUG)u-SccLfXEi z#hbtVeCXsIddvHk?{=LDT~8NWeQ3DeVDaIZ?_!E`HruK-DScmAz1e*4HC3%0@l$8! zS@-@{eHWP47Wi9ZUhL}96Wc`3-;px)oO=4p`Y-CX1%IF3419YvMq!^%g(&yi)?=3( z*c%@?%-*%pTend)Ir_`$pLc4z`;t>^V$Wu-og^L|_mo3xcI;gJ>*vd>Ki9Fpwc7Ij z@}aBu7OpUTm6Yvzy^phcX_iue?mC&=FJfD_%wD0nFLj4Weo}fY`}${2+`h`wCI+3$ zzG}jC`Lr_V7H-fN~Z^T3%;1%;8JRk5;8VL6W49;>&%n8hXKReVEk#jI;- z){Mb27iA=G?7aQV@Auji*S;#fta-MJUd0H!>uIp&xovn{qe#Q2ltnxN}COW6i`uD4?Qeo=1yRDq~m)N{I*%XuIF8wJed&i2} z3pU{)Ti#`g6&(Df{4VR!f1lSE9nU*ypP&4APlo2(ZPt#H3r|_`XG}7`bpE+!VU|Q= zi0{!$1^X^by%K$Kw2f`C*On$S6CLYUOy8USEuJGma zPs^T)4SQxi<;axtmpA=zTD(%Y$EiLtI?q2^yD}+uvkUjVqpn zbN!00bF51PqO)R_G@Ly8wRc&ZnZmX5S%2iIzwx>n)!q-mvzT5fj{5ikk-)x(0<--%zy>4L& z*Rp#vrMFuYKQ^3uF5tJx>Kk*fIVIPnwq5bbP7C%eI2xcY-69yQIn{WIOTJh32AQy@ ze$LWcTCKX$ul@0zviIAT=@D6y_b<(upI>?-i>uqp?$sZ+*XNghb9n7vyV3Uk>q+VJ zwma^=_fju|`Gc0;nt%Y8)^l^kIwg3wDz_Ft$;&ER^KJf?nv23}RcVJ#bw$3<5;jo0 zC>C+pJ?CU*%@U>Qt8R-}FMsQGyX~}elIglds*`i)OMjb|!N05`E`3V>%;gU+C4E=2 zeYtUpetZ^h$ePKoo^cs2Ox~9B>2Dj~58t`Ivz|0sy$Xse_GK5J>%CJUP5ybORp=IP ztGjX+lLDmKT#aINB>pduFR^+3bxVHEv#TacKX7xau`a#p80cS}5G0a&Vr}YXiI*=+ z{|Na$NpgOA^6KTPhiebB{dE(Mp3AoOSC#nI@&&F(RlUj{wOuPUdh>MKv{MdGOPB3f z^mV<#3%gsf*Z4O^_FgVJyk+3Xf$m=)KH3@QEE-i+x^2zcxaY^bW9Kd}x7Pj@ z`Fc*5$){y$+t_4g_cER}kE&dKW6hkb1YYO z6Ad}zJ$1$M*qO0jFP?hlPZTcvJ;(Zftj5c!xi?pRn;o@xU2K-j`wQ!$zt*f@ooS!< z>-CL$?}854uDkr#uX;mMYS>!y9R1Svzmvt!_}zPDd*I@}!WCzCXI4Aff4wSEo$#cOAUXel2p4>DY|e8#*@mkbsp`AMlQNu1baz4V8e*1Ktsnwge5_*XA^$fzau zQq$Z2^;Hr3Ua#rDmntS(`x{Qlx{=x=wW>_+*GeD%)R#raCasn>^Acy)pQiVnV`5uV z=@r%GvVH&j?XSMj)IK46_?1(|HNM$T64@NoYP2o{`#HEWy^7Piwql`QEY}y2%fa*J zebTI0eZ{~l){KMo#iy#qaKR^$Rkvms{oS2=(XmsX zC+*5qG*_R~BC(z0LheGZr_KRv7r%Z9;bF`X(>~q8VD#{E$BKrT59VB*?y$=3w))GJ zVr6zJ!5*(|lGYx7d0#Oxwr=e?)t5C9UzSd|v@=h7PQ|kpo|1bCS=^#)yPrLAWpKN+ zSToBk&$c7Gqvgb!)NOLxyj={{{u*o#T)04imy^Nz=p^@`8+DZos#0ZBZLaEZJ9O?# zVGYq`*&5rkZqg$Sx3#CN+m0T(!Lq{Qi{Ndi1(BI&TlTE#-mbw}QPDk1!c%0{RkOlX zPcK-<$=TdI6B&^a_9S|8-NXX%D~J2joj)iq3TOG3qsLkly6Z^Toy)Jb2wi1<_(5#q z7Bv|oHR0&{O9I^#PtEaRyXE)UB3Es1oQq*)$&B+kT^ZXXKUgy6KQr7XR$*~WV~O0l1eH0e2jca=P2-*_pJ%J?bgt#y!n()> zob0Abb~@Ru&r6J^GnuIOXmDTfU8Mh5Npi>ft|yigmoNre)H3LDUN~!Xnv=VZcfkn_ zhAm=RX@L#z1atM5N~Eju2!9l1+8ZUZZbs6in+DIWy7)idP<-go=_HliFF4nnUfLi( zb&Jy3&Bu~%RJ#U5GDe9k*s#Y#L)S}e3UBH52~2fi4Nbclq`Z&labD0k>hDxue9ibx zs_hMh2d6b3d{)|1#8t6ln#ZT!MFHotwoMPrOj^i!ij&{r0-K_;_^mKS6=ij^W-H~FnvNnT&lDSdUbLa2xyUkH(IteZ zxhibV7RLQ{EbCh~&b+{yXc{K`K{CZhPs=2D#Zj?^sUZ*cIx+1{JQ9C8LNrP_HFUYe z`s!6talS=nNx$As-j&26>xE-dUO?ln1BZpU{w2gb+wJWp zF;!kP|Ks$9lh1LUZMzhq!TO}h!drFTF14C--XFBQ_k9#kd^B~hPT!gtQLYaZt983X zj_K%LUcHBZ&!7426~|elO?#R{4L8)hIQ(LM@EUeM>(h#T_9Fc46;t?YAN?wrCi!r} z!RSdl6D@^0Lr!nIpS8z+i`Xk0gF6qc4w~s%&3usO_l!-(a$?rKHkP^8t3>AgYnW$t zs^&9OrO}b-X)20hoN2O8RN~Iev6}CD;?j$kr@w5`oRfd=RpVi6#aY3knW`IH&Dxod zH*Xc)@Yl{Zm-lfr)9ob*(o?VP$#~vzM)&ncyNIx-NA32ho20vNNj~fr(iiAlE9Nr4 zb@}qhD7{GuCvEja*6^#!?iNf}zIf7N$tsy64?4{V;jWHEp6 zdYQ_j6c?@&|CA>>dDF1a#-w8NZTiasn%gd$s^lKXR{GuXL9Vm8 zag%RB57+$Hhn{x|v~z8hwGb%XctOv@=h(J~*F@&|wMfn8+&pno53B#*6%T(*5{`N_ zVflx?wr3M3h&3lK-tw%~+4cOn<`olfygbo)$E~HlZQ69FD217`GTsQToGp-ZLyWC& z%>#|LI`JEEVwy(|ZPn8blV7C+3MwjWON_v!_X(Sbr>d%U*>~x?XOLz5T1M)Y@O!y2)MBX3p%VC!%gVxLs&A zO+0?m$3>e@KiqKq^V)*Eh9+j#`c59*!f#>Rx!ml!k`D!J3LN*$TzKk9Y5a7-6SG!p zifD9Z?J3~@H*{3UiWljIfVqPUcq;`wa1jnu8qbKmpoc%0V1&s5>?u8mrUrmYqFXZyY~`Z%+y z-L(^suU%NQK>xIqKN>222p`KGiZ$V4il_#^XT-&rcqHxT0-a!(P=m`JJ^Yo4cEZ=Qb7m z=}&Pv=z2GJ)4nasC8KR5E%!{_`oYcU^O0pYeuzGr%kj~zY5LMv7BAY@4}PEdDtZJh{uU`sQV(oodPkr&mSP+;g(aJ2?N~T-i0*^(uv;a+g2+ z%jo)-DYl$y&+!PyH0AP-RKN`Ab7JrW$)U}Dn578{8*ly*T{rN~o5{y<)Q+ht^t)YH*%v`jBu*c>CkfM2O41QZDa)ohacD8h;MecW>bSh%O6qS%)T`kKW z7im0=aSQA4vG)I`XWPqhyj!TcV3xO4-L%h_uS&{&YcDvq$#dC!PERwwQTKFUQF2#O{Ua99K9Cx2WInP7Usm;r<)% zSfc#e$H+6vOhtF&UB;>RpCxrIie7h4Ay2$0fBH4yxVa0z^sHx>5DfUQWc!nSeP311 z${enh=AETaWFK3jy#DelZ>rqdoMI8 zj`Xs8Ge@A?yz8Y^^3(pUDq(vg9)`7S?Cdd2)Z95iVTD)VAIF#z(krJqT~Eq*D7xqkiL~LzKc}?S=PQ17Z$I2|h73{HQtc=ZuuR6Y*-UMi1Ps zDL*bNG-tfsd#NULN?ZPOYyS4t3T<0J=>uwaOZg zy3V=!MR93&XhBMrS)jVp=fjM0d=EC-dFiY_e%M7KS@n1MO`%CG!jBr84@}y)?p|R2 zp6~Bl-YrzPbM)=*NlVYKbZ~p+WwdyejpXxfmPJj^C0RvsEXh?8$f1O@ZT_E^mgv--sd=4rBvesjk`>FUs23-?7A5X^+nRcxGd|fk zJ8)~HLb&tuhxvb!eofx^|YPX~O2Bn?WB$x|bU=e(z4q+Hm$! z>AbB<)6TFLpJPrAmUe&cD(U^J#!c*R`ULUS0hd}QNLy^u?=*Fqe>$wVX=zEEf^ziv zE_p3W*>Xe6T-z5qS1x>de|XDBt%tVj9!_b|Uuuweu(eR7hBL~|IWI;|zptK4@!lpE zZI`>7GF%*&gbM!OWO(G;Q-jBhW-@LEwjZ8Ra8$@T&Z95e$XsTw_|bUB_-)-=)Lh>e z=Ja&GiqQSFe!kT#br$!yAJY#cuJDg3(WsJa*nG_87kAE%dsd1j={Cekct46Q0m$%Z)9FLVVFSbqCcjWd}(~0`*moop)Sgf$|(0;8~e2v0iRLvG{ zHsb$rBzxsM^H#AV@j4rf^w=u?tiE~e!K56=H_DB?pU!fJW?m6*T_x#n{^jy|&MB)h ztS8;vC=&H4DfNcOxn&oavd?hqZagBFb1}hMO?cb7#e)BXeoS|h-=nd~L}ugT47SF?dsAi`5$&j2QciJbCK;z^S&nczhAU$UF)<~?+*4_q2DQ+8f3&D zbN$#phPWb=DN_1ducig`*~R!CNz-2UIq5y)`s3@wD;I2?@~E3veWRLY+mdSYbY9xh z*EMgN^ZsYIFHWi7DU$!U&g+Z9!rc!9%)YNOijS#n`+jh#vBSaE>0Je%K21?llKNE_ zTEzBYY0^rra}5P&PbCO!hMomOw&+n9$ho9|5=PB*?n!|Q*+nL!1 zO0!cL%Psv&tji}KT3E%!r@VdBg9!Di`4-oXtz!!-SJtdJtC#-BY4^+ToSj>Rl@@dQ z%k_m@+XP;YxOJ+rxG3_Xm&Ane6u_Oq;Ie|NHtPruwWRi{gz%%{S^|H)tMgdwpw% zMvU0{=?Bv0ZBw_MGx<#Un()FK8;p+pOVMlT`KuOl^)vsh9A7!RIxN&ezju$bV1G&fgF-Q^}fAl z+^O)%mFMWJb$au(#ojF|)Mz|>Wv|u~+jk37SlGWEUa--^O8pN1FZ!ZZ zGJBE=!_AE}jhpr#n)>0$ty5>dcf2U}`|!xAFEV?|ny)P3ZVLAo6)@jSjI$AXry_B8 zN8qbXO}yoWT1~ni>uj#cA83oQ6w7g4sm*P+#$R?%<& z|D4Y2Yg+thw$G8uz-QgpLn=juYpye_S4unL6xwn9{>{Q03+6^1Jhnb;M(FWZ`RWfo zF|T{A5?5kmRieXMFY-z3T z5y#i9n~MSp!Yr5C^#=baI`NTL?4HSf>q+9T>iy^RoZp%mr}X%OnZAtwp1-^@(yAh| z!mdnw5<2%P3~mcon6K5CqQ=DCSIS^1wl5)B^n=!+-Z@L;r4N0WQn6Srd{rK|>GRi` z76tPe-RCr@|Mh$5WgKMceE*|}%qL63-L~5Kp>vM){>|ay%ki7J{Pxie$`1u5DLwie zxwAFTl)YO(M}7lu-o2UM^)2Eg`F5_Zwi0$acS2|42gW#=SKeVMeQQnk=x07Db2_G0 za`r+Iw{36iLk{EZvzN+OH1JLmR$O|%{pD?6CRTT;)P+CAX1XWk1nS5|2U#Sn;SAj& z$XaWd?E5M`WvBNsHN9goa$deBJl_)M`9zs%m0m57YY5^w{){zFCt%y@h>EuS8xLNs zIDUiIh~K!($Y=2xTXWTGxgXwfD%#I?3e}l#no06~yjtH)GmeyB$MvR{wF~`8n^EH9 zslDMXM>5wMrugO#79%}LdwI7bofDilK6s!#F}N=0Ol16LFnQ8W(_d-V&d;UKymwBVFrSQYi0R9P@ zYbIM2aJ;Wj+we1fNmQ?{c+%+#>B@8WAFq)9pyvGVVRvL8hvl@ViefH5UZ`!`^s!dJ zMNP*kPSWewZl}yL-4izs95h<|F0ggR^C;grW|IzH-^Q~||5Wg!!#OvW9XBf4`_=ix zgt_;RCb3GNJ5ls>HILc(o8mzqSgQ{GK6hdz@Bdecc9ud_?g0}HgiZc=F2d6~vv%IR z5BJP!Chtt^QjKJKpJB0m)zYJ9GuCgJ<$CA&i_GOea+vaqRb(U{8qYWo`2EX)pO1Du zI1tYI>JW2|!PG-LLsQ%;G|$u@6e@2~xVG1HilDsM?nt%1=E5K1?Q>)VWrE{YPY#UR(XB6XTxk2Y&Ypr) z;X(oTIX~q1^>P}TW?jjhv{AH^J90f={H{_tW54&Y`{5$2AJZ!yxqD|z(wmVr|+bU&>jQo#u1$i87yRg2I zDdzRJ^%ATiQ-Zc#+gANohX0e%;)^0&XTn8}v9RAO=?O~9EO<~o?LgyJsW8rp`*qXi znQ=dv7fMMb;}2`hQ*)P+Q;l=H@jT5H{tL;|HwB*A+H2BYA(iKGx93Xf z7n7H+)34sxV9eIte^mUi@U!cO+H}50ou6+tYhrnxsKySdFtNXf?PS(!`9J(&HgT_7 z!H4pk80~!xeEdvvbz1GVDHu2Pvu<0HaCmmw%z}LzZ1#Nb)PFgJRoW!U`GoizZi#(w z1ac}4^HwpO_O7Wu^Z!@>?5ES6e>2?k_>}V|-=|tGv#bBE@csQ#f?O3}O%CecK5+eE z^_Cx(jZg4DP%iV@KPO}PM6rEOgSX2R?UwrRcn8z`0}tz$Y8?=4{j727j+PT+*nHNR z(jVM}Vhi4gwC_6^U%c*E+xwkwc@&=?@qTzg=i@W^eJ1^~iT|zgACy1TEm*4m(RAzF zO}CrhRJ~5sGzePTc4LDxzw{kdZA*t^acq1aHhhlbu#B8CW73bs!aukkuUS)naKDd- zDBr^mU;i~dao)jaoLc!bM?SvZ=fQ!c#xZk`T)*eW>K?d=vF6;AwZ->%UUSvBs|bJk z*Ba37b?uXkS;~S;xx7=?EdS3r(6(OVL3i$s9W!>g3ANuSP}z6#S3X1B@YnF; ztCB~y|MNL*V$^4Cm~eNM%yqj7*WU`sn0~bTcRe-na^BSSN1_$>ACJy|#&v$mjY>;a zX`M=&o@Jae_ql47Qc|9!?YrOkx4EcevCODojn!FY7i}kLE+&fDlch;Bv6Sqg3 z2)+)jIl5Tpo%chZyjkPP0zTCln3NS?X32Y34Xh=*y;8ft#` zMckStFHS#lwa|sbp)#`Oi0>ihlxI7B%-hk>H=QLR&@J!&boGdvXPIu^ct20%gvH4t zOSArWZx;T;&asZuapw7}Kg^Ap7rbtH`y)EP+QqF>`uoSOt;`HuAEp-k(QLmPwsg)a z6@~-0Kk~2mpH@>1(P!ADex;0AL~xD3Df8J(TVyV=f4ty%{pArMuKW`T%`6P-MEPRn z7?RBOMBE=43NP5ilTZ zWm@^S$KT!2l-RalbxLNZ^y;){$`3b0c5*NK%olk)d24SdyWX-#>+58A7<2p?Cwy*s z9%Es*g)5-_u;veW|3WdVS)0x?eApq|%y~~>lkmwxw}!qYITH?SjhV{CC9cTW^*6=f z?~z?%3;H5hXHN3>+`XT5+O~;JCj9jW7RogpI_+i27&>Kd&yo9uheRu4xXc#By_DR& zSf8&^?9h4DhnKY&X8kCh(Q%HURd!m9$3aiQ#q|$WFHHLV=F9Sw{|72H|2&-=Y-VHW zs2CC!957GpP~oDJF@`oe-`bn4k+h+A%_*VS$`Tke+Mz5ZCKmPx=-fsD`FNgo{{a^1jang4=gRBW<|-B6(qMcpCuhFQV|woW!oSfEHePw2*JiouL`RPF z*OS^o@wcC^bCGxVzc%ByOytyU(bm@9=WV;| zAM`IuR)2Yy_{%Hqet6OCy!CJW{#LiW{JTrZdF$8hhI>us-~PG%$ezq7YCRAiw}LGxJD)~{YT4xwKo5!Mu*ks{nfiX_whf; zXD$gcK17e727uKGm((H_?fXyyt?S#p`!eXKXv-w zPjCJg@W1@!{c_D;n_q8`-SoA*>g(&hpY8`gD>yUd{@E|NPd-(P{H-mGt`nbrzUZgq zw*DE%=cZV3-e=>#r}@l%+UvRezu13$pR4)yT>a0tQ}q9A`d1qkc&z!8zOijcUHiXU z>+|Wej_>|-&h*s&6HjAp{%JltfA!8klkM?ud)4dSKl^Ea_|L7!Q{O-Tq+j?`XS(dZ z&GYuYP1)mbB=dax-1~P9eO~gd-PX>s@=w!0+vgwWzPi7-{=eOI?Q6oT>ev5!YZ!B> zn_K7m_u|^Vub-G+A7}si-sraeLG|DA*Z0d`+8@gre>e4S*;nnDWgq!9e$;>Bc=A|2 z)XXm6_iTxM-M)s~t^ZA#Y4^(f+*j>;HL<^?zrJt3*%$M_-{8*kJ)5N6ztlMVzxV!Y zah3bms+DX08Gi0OwfxKb^#%5eelJ;+a`4#X-#>na-uvu(>evy`)Pa1HCi0Q z>$h)8{FNVE&)(gArQZ1Z{ijzaOXVb2#r~C>cmDO4_piUaH;q}gp)ThCxq_MdN?aeN z&A;yVFl*Y!I}0;jpW9YH{rT@zrl;;FSH;iOxPRnFOug3SO)95rN^ACao>f>qf$i7Z z^VwC zzYklUwY>EIA8lHG??I+pwf5?>9qw^cuP&MP!aXhIaAt&b?#*eye==`3$owS9Se0g-xH>+pl>dd0;J%!L!a-F^3~eB@Fk@ ziQIWvxGan1;|#$ghUy$kcKB}=$V-2ArP64d#qmZICham7)Ru?OT7!*Ci|SKfA(|!qnj4;FA@S* zSe;rjxoA#m%<<3}QUUv=r+lrfT(|uHyL6lF1+{L=xMuF-725mBOFERZv-=wV=39HF zEuHs$#}AbqKkV-Ang4W(%(Irn$>9ZtllipXcg_&~JpG1ySj9Ykz4~_EqzUct=i8-0@@c!3zJ`^Dcf$iF}e<|F^75_`I>6SF?ugpJ|%=4_?un_qJLn zx9hmTbPd+pix29WFD$vX$@SD<4fR?@MvdZ~jC{q07eBsVBAC6xGf$W4-Z7mMhPUUZ zJDtkrt!UHy$M(8p;?KEzCo%e+*!WL1F_3Ss^TCc-dG#4g%>9=`-+SJDtChOd^zf12 zhqYfR+U9Jw`lfwKM>6PN^@(L=^OUR>+&A<4U|ur!_xu+N{+01)zAAH7Uvb3ncDtEu zf34a<2J0V-cWqph_p^s1E%fNr@H(63|G6)UT3l>?ztK9BThCPTMxV*yn(ic#xKCTm z4hL;o#4BibR%Tb{*@w)_{!90WOf`Qe8)qLh_50>4$%|Q63e~o?@9DCAYyXMG`GJP9 z&8dr>o1SHV{T$|cT-3}b_-@|1>Z?+vq3ag&PCM%pr@D0AnbPZ;vk(3%T_0ffdiTti zOLj%38XND=+rKIDhAvm2-QisJsb{~uxS5-D;d8@B)%lr+Q8+2a5IPXsm&8*u~ z7XFlZP#1FV+~0E*e=JwLd8Rkj{>10I=St>$d=Oy2y)!BxV(o<;Ra`b^*I+ z81onJ+1&4+e3L!X-Yi$kUr>E=v3AnGU1yK4o^sbDV)cEQ^UV(~KRdWN`^)U7zvj5> zZw*%aF=3Nkux82u7x~uxwsEzsKjYGDYiAs{w8^V{U?!cpZ+E1AhVa&fIaO|dw;BCk z7Wu#9{Bx0~$IJd09^2jdHOcz0@{ioq>B4;SfA76N_pn}TN_uL=J@=TO?t)0buM zvaZ|T`|-_{{qlZa^ed{KPx>_D>*KKeJMKH){CKMVQSb8NJw^K8|7(1g4~+P_>+HSR zH~9Y41#^9S|L0)hJNM6j+RyCo?XiFUP<8LD)Y^r<37-zn-c#pi&$r1g|7jgde!G)g zjl)gnzO!+=Puo1w&bYrmXV$*nmrE;SPghlG1p1flIe+=KWL|l}`p1Qm{qiRLt7rb} zHS|V>-{^fzAkTi`_!#9mf_Z&JBNN`sBXEPz5MVbUd^}W2DZXF?8n=MbHd9t ze|*=x_Idube}(?`@4vpfYcucjj|%?FrJ}c+A3weuv%mN2Z@#v2@x#Sm%ME4AtG+I| zt{%ysaYyBF`PY==TbN>wf0cjwYi`f{r2A#lUavfT<^7||V>bV_UTYt;K3j5k(j~u= zIUjGS&)|F1ef!S7nJ<;AtM+f2{bYAUzt+6Epx^9!$`&nOkucp_@?A4myF=H@PLV&C zuEyTEnnx0{jYc4|9WSi|3UlU z{pvz*i*@3|>*pR?ICFEdlzV%G{FB1E-`WxTV}EP!srsa?oqfgr)z#;F<>~q|?^OLl#o&E8ztlRWIIlm9@STFzil-{|!uRqRx^DA=OWuDu|HP_GkbHcOj zci$AFm-nSB=DiQN(LeLiujf1NJw3YaUo%gAcX(O5-z z=Wl-H#?;UH`R2`!lPt^R^fN^j#xs|z^Z#aHitpJu0}xBs~I|EbsCJI{;zFZufQf4@KfIA33#ukz-h|K6(azYU+6 zU%dNl)8yO1aewVUp4!6qOXc*`Cw{Nz)E}%8ESz~u{_~fR%3scJ|M%REy`#2!;o(pI z1-3s|w(q>JI_-ON&+_xXe1Ex2XQ_%&v;JfHclVL1TKnnZdq3?D`&Lk5{8}@%tit7H zsm#rT=^+&ov)7c@6=~mYUEN<%7vf*`KXRV`oE86dQ~6hF+V4^iTvqeAc#VF@vOSMK zpZdjF{_ENG`^zW%53=+4_;b6Y|Cz5_=6iqq$K9hJ`QP>3`v+%={!Xu`%iDKlzTe(` zi*oKg{^WBi`176qM=!#K-@1$Zv46UI|MG%W(|xzZuivolht&7okq-qPTlvqQ7jEXi z=V*3$<;g8h^M3oLe!gfe@=5Ac`@XY}{k7I8YuNu?cgX5`?)>0C)d7m{0_}b~x0W6% z<*NI>=a8z1)zlvo53LNJ_i@K#ok{8KzjxQNi|5y^5a_?V$4hQr$8lY?W4ph}Z@%ZN z5yMq*JVCI(`19hr`eOxdJMTw}>ZM!G|5~>GUF5s(n|G+B>x*e#Gd;Sgcz^n_&}rK& zd!NLAHdFmCyV&&n{TKf?X?@+FJpaxoUim4Ncj{jI$L+3o-Tv>x?f>i<=lq!gz5mU% literal 13400 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 { //main sequence diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 993d49d72f..045a0bd75b 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -111,23 +111,26 @@ public class SectorDamage{ float damage = getDamage(state.rules.sector.info); //scaled damage has a power component to make it seem a little more realistic (as systems fail, enemy capturing gets easier and easier) - float scaled = Mathf.pow(damage, 1.6f); + float scaled = Mathf.pow(damage, 1.2f); - //apply damage to units - float unitDamage = damage * state.rules.sector.info.sumHealth; Tile spawn = spawner.getFirstSpawn(); //damage only units near the spawn point if(spawn != null){ Seq allies = new Seq<>(); + float sumUnitHealth = 0f; for(Unit ally : Groups.unit){ if(ally.team == state.rules.defaultTeam && ally.within(spawn, state.rules.dropZoneRadius * 2.5f)){ allies.add(ally); + sumUnitHealth += ally.health; } } allies.sort(u -> u.dst2(spawn)); + //apply damage to units + float unitDamage = damage * sumUnitHealth; + //damage units one by one, not uniformly for(var u : allies){ if(u.health < unitDamage){ @@ -335,9 +338,9 @@ public class SectorDamage{ info.waveDpsSlope = reg.slope; //enemy units like to aim for a lot of non-essential things, so increase resulting health slightly - info.sumHealth = sumHealth * 1.18f; + info.sumHealth = sumHealth * 1.2f; //players tend to have longer range units/turrets, so assume DPS is higher - info.sumDps = sumDps * 1.18f; + info.sumDps = sumDps * 1.2f; info.sumRps = sumRps; info.wavesSurvived = getWavesSurvived(info); @@ -348,13 +351,12 @@ public class SectorDamage{ Queue frontier = new Queue<>(); float[][] values = new float[tiles.width][tiles.height]; - float damage = fraction*80; //arbitrary damage value //phase one: find all spawnpoints for(Tile tile : tiles){ if((tile.block() instanceof CoreBlock && tile.team() == state.rules.waveTeam) || tile.overlay() == Blocks.spawn){ frontier.add(tile); - values[tile.x][tile.y] = damage; + values[tile.x][tile.y] = fraction * 80; } } @@ -368,14 +370,16 @@ public class SectorDamage{ int radius = 3; //only penetrate a certain % by health, not by distance - float totalHealth = damage >= 1f ? 1f : path.sumf(t -> { + float totalHealth = fraction >= 1f ? 1f : path.sumf(t -> { float s = 0; for(int dx = -radius; dx <= radius; dx++){ for(int dy = -radius; dy <= radius; dy++){ int wx = dx + t.x, wy = dy + t.y; if(wx >= 0 && wy >= 0 && wx < world.width() && wy < world.height() && Mathf.within(dx, dy, radius)){ Tile other = world.rawTile(wx, wy); - s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f; + if(!(other.block() instanceof CoreBlock)){ + s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f; + } } } } @@ -385,7 +389,7 @@ public class SectorDamage{ float healthCount = 0; out: - for(int i = 0; i < path.size && (healthCount < targetHealth || damage >= 1f); i++){ + for(int i = 0; i < path.size && (healthCount < targetHealth || fraction >= 1f); i++){ Tile t = path.get(i); for(int dx = -radius; dx <= radius; dx++){ @@ -405,7 +409,7 @@ public class SectorDamage{ removal.add(other.build); - if(healthCount >= targetHealth && damage < 0.999f){ + if(healthCount >= targetHealth && fraction < 0.999f){ break out; } } @@ -430,10 +434,10 @@ public class SectorDamage{ } } - float falloff = (damage) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); + float falloff = (fraction) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); int peak = 0; - if(damage > 0.1f){ + if(fraction > 0.1f){ //phase two: propagate the damage while(!frontier.isEmpty()){ peak = Math.max(peak, frontier.size);