From ce5218db58e8348d81d5d6ae0dac3deef67c68de Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 19 Mar 2019 19:25:48 -0400 Subject: [PATCH] Wave editor clipboard save+load / Bugfixes / Balancing --- core/assets/bundles/bundle.properties | 7 +++ core/assets/maps/groundZero.mmap | Bin 11872 -> 11879 bytes .../io/anuke/mindustry/content/Blocks.java | 13 ++--- .../src/io/anuke/mindustry/content/Mechs.java | 4 +- .../src/io/anuke/mindustry/content/Zones.java | 2 +- .../mindustry/editor/WaveInfoDialog.java | 51 ++++++++++++++---- core/src/io/anuke/mindustry/game/Stats.java | 4 +- .../anuke/mindustry/input/InputHandler.java | 10 ++++ .../mindustry/desktop/DesktopLauncher.java | 4 +- 9 files changed, 72 insertions(+), 23 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index d1b21c1851..96c1aa9a89 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -203,6 +203,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Name: @@ -256,6 +262,7 @@ filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore diff --git a/core/assets/maps/groundZero.mmap b/core/assets/maps/groundZero.mmap index 2616fe35c5ac3b19902a8bf87214806d8059d787..f4638b98f51cb51eeb91ad9e29f14107ef6bdbc0 100644 GIT binary patch delta 11569 zcmaD5^E_sPA)k75bxCDGs#Qv2dU|Tn#6{8{pHM-bgS+& ztGqgorl@;{X2%^rUi|C^e_iqKv-=PD|5N;DTlY!aoI&8^oeeAk9zxG!j2fjIJ9gI; zCNm0X7+*_!+I;Y&Xa0#Zi{rjexElBU+%En8UCWoR`Bikow(_d|Ys31_2^VaWu5SJp z`F%(IzgeN@;&|KsEGVgJuvt@d%l?%-PhaF;mhfFO*Gvw-d->kE?suOP|2LTWop0B# zw!XV~@xk&nWmQHJ-^%>h+Rxa$m6P9et+?*)xq}bBo_rwl{OaWQZLuNOFW>l|=C+;x zrQfc@##hQO)fS&Qb^iQs_x9cI-p{N5z5D&Yeb4{xd;hQQKvw(SdnaeVliZ@yDgSs) z_v6c(4;J=^E?}-$9`IRoN2%V$z7uLoR_~RP;dQwul*4qnp}yqUs=v+m&b|EjfcM6#f6TA1@mewWvr>pw!@J$(3c<9XM)2fNGteyzB<FAU zdcR9tUqXLwbWpGt+OevO=fJ$9{WX6~Uz|CbaJu>Bxsw~}-L>Y(&;5FLva0w@>*edK z-Je{{|K)x>=P%Q87OQ#UT)QXKUVdHIy~dYmb$#mVgdcYw9KBfi|3m42eT#gKGhLIX zu}6I0^Cm9D`Yq#*yT&4M_793`y^r%=->8!O_sJiQuV4SSir=!gYnXpm+m9{3>hRor z_P@>@ZpW85e^zw3=HOeue(z+dxdH2*1^z!TaKU@!WXZ;-iRiuOI_>r0%-O*5 zS_h+end+5FJv*d+9?x4?%LtyUVI!DS!Ll{OWqfXP3Ge z*N7%8ILR=-Ks72x^u^C@-(`24-sfbu`q$T=9}h;#Pt4~GeD@*sz0yk6l<((HGe~St zs^)-ev z3RSi0ehC-ueb_oZ#Idyf`CsE}EX!QpKB~WRv^9KtHCO4rMDKT<>%Cq(iEh{N7q%)5 zthBLsbI|eM#_R&~bMp)BR@=Ovw{YM4h|9JG#%mXzwPjxsaQocpdF+W&C_xkD1fl+B6Fj(FzX+jY4vlHQ zFXZQMy!uWs#mV2)C8GY_&azBdr^a_jca~nWhNdb`Yg2rKOU4U zx0Wf}pIo|St~0|t^(n2!h7TV4rHEd?x#m@+;NzoqA)1T#E|6cbk!$sSnIeJz%*Uj} zleJzSE%>0n_wjj#m%%NQ9#;OZD5(22JN%D~;2ee8AFAsfyPv4L@i_PEn(wdwbsJw> zav@b_EYLPg@E22X0+pPLgrwjNc@oa(tG^j%CR zN1&ct)vBeve?Gq2B)<4Sz0iahs~u8Pv=*f?IOyKu{&PGyY^OxgRZr%(5C7V|J*0h& zWyi|Oz<$-TQ%5JP=#F}_q+Z4I-iP&fuCw+AOP%O^oBeb{ z|MFH*zlx{(^fHu|HqMcF7uNUl#s%LvCyB=z$4_2ema|||*;}s<_R;_PRQ`zjDuf1g z)Ia?&ZRr%#WqmR4HP}y1RZ$J_T=~t$q~&$nf1A@{o~=y(H*ML>^#7@qhh@k*iIq+s zw~{pSnH;aG?DDj%Pgp1Plu<78^ki+;)JQkWBC%OD($Bc0H9M!oX;0`ooN0E(-*}JI z6fG?wu4$_(GPgHLEaRAF{PEKipW3-A57c}8I=1=noo}HgjGa?d<%+b^rMlENI?M6Y z`D%nRJc&8c6YawGORN3zp}?vK`XA;C%yiX0(Xh-hyzArAA5NAfp>|uDI=3#lZnZ9@ zcz4R`FEKK4lU6%MuCo7K)OjzE?|O)4uK05HhMJ(dE7PBfKNXnj=eSp-$v&6iiRAyE z6I0erUdSoMB&9uhFQArNdnwL-{ z>NCm8d1Z^oKD&x}&u^+``)~esgH^S-T<(L;&CR>#STW98dsL)Och9WrGW9DIV>mCo z%2YNx`BbZSTlLJe=CZD`(qHSv9p+{(&Ggj1Hg6)!e9qoE@$9{aK0Q*{(rTTvl;NRC zwC|mgn?$@}VK6J1Q5l9C#hWu-<9!+N@ZyWa=|u@-xLm+-AFE7O*}d0sKbRfu`dudl9AF+GubXI7akx_m`@Qu(flf7p&Q z1uv=(VC$LsB4WG6%4?}Yw#rrIZywB)s=OA{6Z_dS+vmhotKBur9BNmj?L2UKP3@9r z*?*qtKd_NrT0T?ECUoPj9a(Q@UYDxYk@{xfDB&#oZ~E2jhh64QjSkE0laE;(+mx%8 znjOCQr_;-*$GxqGWkyUlYC~%G%RHak>S=ro-`*I#6uDNCAD67b z6mgPyM%)5zp2~HZmt7jfY`^h7Rf=sA(>0Zj+i;cJ<>@pl<&I0A8&+JD6VNcyE&mtI zounz8*r1yHjf#s`ktOiq=auf^Hu{yg6~`1#aM2Bt+%lLBpRe7kIJT4ZmtN&UC!_P%<-9b2b3zMU>& z-fg;cg-O>^)ve`=+*=KQ&M1ptyfJ{yKj}=iOLg*+Tjks?jjW7cCsll!QgQyYcv*wt z=FR6b-aNTy>DBwJ_Y_x&>H>!^D<(O6pOVj!;LTu)745d)dDmz2JstM{*C+mwGiKNj z)b^F@(2;{1%1-|g*)J0Z<&PH6c6tIxG?&6Pk>?`Q`Wn=>sRupioOp_bD7s)(!}U=q-;~sE!n#I zXyYF|vp?*xW7}}FxG?>V!gG_C2c_3;&fmqo=MU$}8HX*kvJMMfmaLopu(K%jxM;YZ zo0L~#YgK2|vdmw4^MU{Lk7mE86|GHQz5j)YulV%+`hDJi);-F*yJ%_i ziX>g?|ef})7zw@o8c00Th z&##@u(X+an_q(p{`zuStowY>1B{v-TaP2_2rp}J11E*1+&1+W^Y)*!L}HA$T*-6`Sk4~2m`~YT*nHQPJ*r1;mU$;!WisGedF*=c z;$ETCHJu7AQ|p_~NH#x7d3N^h-k#Sj@`Ab7oS(1%VeYc%QcUpiN%4ji$BynZdyv`U z<~R4fzbLn{V(yGHC%WQ2rzJHWU82_8{&r^N8ou{yRT|WN{KdlsrwUBE+95V!USHv@ zxf4UD*CeUEwp%T1v147v&%*Rm)A()%oO3MlymC(B^Q{L@+zsvG>x*m)Crxd#RH>i& zy?M*-**B-@Fl<&3iFs2ic1N_{v8iX%$G4_!z49sZe!jn@&lIw$x}+fHP&TLNf4PIk zRV;rWH5R)D%oNl%I&{ordz^7jjmVw3(XKBtQr~|mysvufGtUy&FvrLF8``RBA6Ls>o5WQA{>2jA74@P!Di#$#|M8uD(Z{yMCvUs9E!g?`t>xEc z@l(9MpDlV+|3UhhkC6GHXL?doex&`=v`D)3^3m2!0d~JET7r+s&se$aqFYngs~$t~ zW1ocAdivS-(M!BnYMX~MwvQKo@IP1=eX%hXQKtz68ZMt+!Z&YWS3|9&C9{} zKiu=*@14eyetPodcW-8icr3mdmiYPnscp-)-!QH3-Xq&@I?K!cL&0v>_bhiGjSV?Lw|5@RPfHYO;auax?a5oHm%h)v@F=kTe%|Daddci>YvOl47Q0v;cjLQv&(}FynEvoUpxGUEqI6iuJ?EJtuIH2_|;gqE>mCOB&|6k(e6f}?H`TjtrHvM zk8aPIx9ssjq1@XMJM>k*zq~i)VWC3lv8di7D_t%e^^J+9HC5+(bK9PW?2N%e_d`ANo`2XEA;UA} zA^?q*q$tJk|< zz3cw#?^E7z{H|z$=u z;@9ef+n(0-)U8{tw1(;IV&0;Fnf7H$i)AafJX_!Y^H|`c=}Y)_74&AfJU-lZV*3*{ z!9&T+#bw?67ri${c{R*RsW1QNwbMOi%aln!cG&#=Zaw`&eDa)!9EA$o)Et&?@LXqT zy<4-Eb){b19l7}M7=!mcZ=P)PTC6GdY~jaBk(|OuvGr_i4D ze4>-%_ijFJp}Wh!UjK4W`=cXbxhMDTahx=rsdtgp<1+tQ|GrLLdm%R|-(J2dXY1zW zv9AByR3i6@ZDyNXaxt@PO`yNkqjziGXdc`3rAz+)b#HY~j+W|OMe(bPw|^*It1RWT zXpx@ngWQ0bv&>(L&0e+fL4KFDJ+ws@Gp$zy99ON-n)| z#`@^pJ>UGrW|@Un#82?-|L6Cqjqg^bg+XWjeOSGO%&S24Np->stb z^^@dzRx~%-@A3aJ!QsU0d2I6w-b&Tqt2^Nx=1|U>cK`9Gl5ekeIyG4tm>gYpe3F9T zvumpkMl1F6JX^|sAf$ouikzd9-GK#s{9y^s|DIGNEL_ZD%fC(g+bOxqNC!bJhqW?` zoHU(YeNhzB?DuauI`u}+6a&kDw)@^F8csZAdAw6;MM#Q+YRDIb2{AeuPej!xdzc!m zt5-^kIPt+LOR7bt$NM_dnLCf&ch33gUi}})=VnIS{#2+QoUEo=!;&gh=T#hUIL{^b{epEe-r+nRGZQ*bR@i3gWp243A{u+peA)U~ z^XX<=HaUgQnS4${qP|?TgUhCQ-xleYdtW|NVM%-S-R7}wXN8u5!T-<2lAQ~ zmz;7b{cf72Msw7p2Z;+GOm`N#zr3&O@a}Mix*(nz?2=+LGhPX@H-6vbxFAL)I@xFI z2WYWom8mm#aNG74OZD!H-XZ$9x-qv)-E2e{k3 zI;+K>pFV0Sk~wkZB%X?%Z8?i(oJ_CZy;bm^s8ejt1JMt&{X!*Yi%wTNsDIi0Q&IOW zri#fcl$1>vOQ(9uPmT82@HBXp>$0jxC)5r_x%IDnE*!$T#ck!RAGw+zHF69qUz2zeUWxtJ%*O&zbVuP<_gS zyukWi1(RICH)-=WPVrwUHgn4k2d#@~8x+}NFYnV|f3Mt9B=aC=M^tz6vD%IEZT?+e zwrQcAgS?9M{B>s*dUX5AZj+Nw__JEoMCX2gE%zqL?=QD9<#fB>6F1*-pzzD_lQC~D zay9>8nu;!)@YS&#@Z!BqA>-6zdN0a&4*>(oyMOwy3 zI9I8@FXO)QbkZr|Jg;}s3wPg|)xOu`cUOy|;A^3`Dl?r=#8$tVx?JzTJK_3&2J0O! zN9;`C4$@TouteIoeplbMQkI8%8Yf$O&)v9g_P00_)sH(5&-r0u>l>=9Xv}4va%=vN zH#dVqR=X`X+RIXF7|`>o{H2)o2Q}uRh0G`FDs}FpHdtNzxUG5F+ZkWH`98&7^H(KKke#^6ZO+5`UAsLNdDqX< zP`IHg{yFsEfp@<)FPPEj%>6)BLHD2Vq?&J9|1EF7%)825$@0Xf^?v;Js z|K^g+m$MI8{9M%V;gPceXZ*ZXmrvIRuiV38C2Q7pw7q7l%nbw4J*s*AI~N3Q^p#9V zE;+wt-lgShmc3T0y0N-pyF{xtdyvkCmz%z~tSl+Zp2^%_c%}7qbaCI_ilbV`LrWe@ zwAj9^K6K^9zm-})o}NA7d38$q{5^^RHT`N!bvuu&j+?YUQrPLNR`2&idPdL1T0BpM z^wn>Ve{ z-E8`r@N*l@FN>(zepdUN_;sgB3V8WlNGha-*c|wt6 z>S9%AYY7vPp6{k-RyR8Tmz*)x=D~%o#fJ`EP?_p2$7C$c`;4pcpL2s|AAh=s#Ojke zD!xWezq1;2xBNbJ&oN5*z=x*T#1p+y36ZSFL=L?PV_d7vyLL&rVNxU4mZ!2yiu`qF z=7hJb)84ghZ*ye*`NQH1qI?2U_df_*I{oyY+3`znEaUFfc&ZoHzM^Np_(~SA?gsiR=le)5fWnvr}0_j0uZ ziyQZdf6hN)x}Zp1i?v^&+&=VISO}ZLq)K6%IogbhbKmJ0>{NVltNxNk#gR>wr4J8W zmJCg|sxT?6Hfi475R_ zGK%V2IZgsn9-A3_a#pYyCU-7hTVde;!}Otniq<5Vf<-UxZE~pLT(RhmV7K?Yo2G_- z%XAN|ihSsPrs|4|oc`w2#nDvYx;d*cddIU-s(n?^zRCVtvK>o-DdD zi|5Lldt&?TL=1MX3YT547HhOgT#{#B)7o1v!zZP&Pi|VGa8v5><*?F;+e79?6gfT& zjGf?;5T8_a{OJnrAHv-F8d|HkZ+JU?wK1OdqJHba6T1(cTd{7ziU55L%M**GBG)}On`I{VzZT#NY+{HL==a@bD$$80c^Lq=nS0-<_$H*;yZMRYO z$@PG9#`f=ze-o=vE4lFDH{TE5NB@u9Q=6%K>h;HMb3}JHf8O;u{)N>uo!i!5vLE(0 z{?GrWc6DRQd*^3tC28j*Q|jZl-FKD^J+-^-OYnzV-+sRS;>hJ0e-4^$c z-sjJqU7;k;9AD11qWb1Pj+$p{9{-WpwCznW)z2m3M>fSR2&;Is&LUZy%!4FYR zv;1!C?)}31Tim01_7Cp|uXp5$n(gkcy8h-rM|FKjgzUeK2OgI_+%@%NnAOj{Z+@lE z{Z#K*kzCek`Y@fl)TGhh%_eVlXiU7*OsT{*Y;x-lZ#cb%_0Q)&)9$+M<2@0$Y`@gY z@1hl{*S1~1Ya{ma)`5*}pG?A-?dp9irzQTkdbNge{RZW1NA0@O*0qbjNvW(8D%$x~ zD@JQu)1Up1p4M;ReR3h;`KG_?W;btlpS$*;(|+f!lQ|Iq?7K`dR(D=IdTrt_cdx_) zT+gLq?9-H=*C+AD#BZPfd9~~@v$ysS&m4&lpK@?pgXP(}6IpuG-yE?xXQxni*DT-| z_c>;FkFN|eykhSfUoUw3X_D57-I5PpT==TEGQn)YFF z{)OM?%gEl@K38kC^Q-m^SM3A&c(?9*8xkRGb(j6S<;jl|_Jk+pb}cxwuX&1|*A1p` zr#4K>yU+UEzmKtVUWXWacE&f`ZE63F*KK}#+~c;BUER{-7jK#sh6RRkPO?+rVtKqcJtOrPFr)M{lxAZd)D`S>vV4~*VupdYufi* z_Ls{wmbR|GcWC{CIg0GhUz~B-?d%)B<>vo~^=CHaFKQ|Fx?aHcWaC!-+rR!_{r78q z?zjD0_6Mz7w%2p%hfmik_}<>%`v2trfc58AmC3Hm4>-oWBujkh|Lr4LnCTwxD zl&e?F%g8x=+HvLf1)*pE?dxvfPk7$$u719;DB$WonWBcKnLmgl@?v zca2I65>}Ttyq~{u(l@u?=5Om4Tr+bPIr82r`cSFp@8TtYpWeUyO#D{7=2yEfoBm9B z@3A;{N|khJj`6*76{nc1JMT8=^K`lHiPdAj6qUp5UeES5uP5po*W^DztMeS z>stSX<@jom@c+h(J|=JZW7>7E!VAqWE1ZM3=!e&DvW|Osj_plY@jb^rsrSqi4o?=k=Wu(q(p$zq z+aI}YZeO?M`yAgTVHd3LvuBy@aOvyS2wAx4)Qj~z1upYW&(ZP>akF39xVcp#Q( zPOy4^$+nA^UTwH!dusXS^>b!BbUc_6FrRUMKD))9HRTTic@3+RRa#GfSxAkzo*7uI!$}_6o@Le z92AQ2?*7mh{AJ^`{w%q*t0m4~3DB3{e>bJ(%nIfAT-(*B3;s=M-CDCGOh8m>%Km2- z9s6_daUV!7J@Q_yw|=d}uZu#_PBt2sPt5Kwdmrp)w<+lk`-w=`KW3HnY$sPwSmzOT6d*lguSu1}!_ITrl6(ot&}G-vOL+xC8orWt3;%o86uzOD(< z-_V+|z3Ih~=g$2H*K$`M3f|Ec6fXGubez`BwM^32Cw}9cu+h!*(-zY&^`g92{%Fd7 zHnN*#vT|POmvz36Zp#!txxM|3X-|%q1LrB1cl`}-dCiUN+P3C>m?&HK`o~{}+*Ib& zLOcCR=KZEy7Jomu|KYX0&HJ_X+;@~Le|UU(ihEB~NB)LX^HpmOq~Cc~epBt%1mDMd zbEkwq?fCkb>-^Dbj-Kp0KfamOq#V$%k3La-x>sM?hHJ51`^QbLFdwQw7 z>7v++p;k-v9SKyVOqHJnoD!s zd$#)>+)C!4YVX_S<0=jWbFwr4B**t{Opeogk+>AlkF zzEu6s!%i>TKC>)7_x*yf<%ay;{vU~Lwl`kZe#i^l$5ydtp7Ns)F}w;ByubCHerU`% z_fr9%{OQ|v-_3T!FJ`~eQQiEwAMj|mHPKh{sN{&3K2hxdlgKFPE9n{K<= z#5i-E?>6hWAK$c_XC3Qm(*s9O$n5Xmu~hS^+^g#DARRgP9~~_9-V((&P5<62q;mec z>;CVyNqwZ-sr!Q8`-<6PBBYBq-4}eWXK_Zh_Cw%Zw!V6A&F>TY&;LAS5+1#|p5MRV zA9FhY=NqQK`7N^RH@iEq&AY0_ZUR=y?3T{i=9{5lGVC3`9oDpyBuKw@eaLvlAwnOsQuD|>nUPx7U zS-v$p=2CxPPbzP+l3mcIg};qXy-$eQ(i-uRcfMSUwn7f z@d|Ah_?^2X|BzaJ|GfooxB5r?W2=Y`(f=WH{fbxJsYx~Ptdq@HUooaS%WUsxWoLH~XCyH7Va?QS}7;q=GV`yc#Oj;-y# z7HHu9C|%-uhbXUfY7M7~PH&G({^eW!Gwj3MgMR#)$tjcbc$L?IciR{8K0DzfeRAz@ z_jtpVR*E9Hw{;B=h-&@gpgJI6Bj)3=y zN>?9x&i+xl-p$M0fd5wevC1?B!UKm+JW$;F zZ_{mVgC{Ek=b5QI)b@z^q~`XD|BmQRsk8DW)%>ZZ4>Gw;KNa4tRp{*Z{`PaniKqID z-FH8~@Pbe3!yo?0-XE)H$m-sn&&VqFtB-5V4Y&Gw>B3LOPRk!`&6u~X$0I?|&8}H= z+MO+GXRn4atTn1X`XWBymhzHZ=k-FD!UW5`Os4&o*|p{6uH082-G25zIH?=6xij0O zVtrD*=mT?sv!y3CzWm(E$9tr1?y>!;zo&or!c`T0u>QpHt>4xQ91Xj;`dY1=@LPVv zOi|k!X1VPVuFqc^m|dzn8!olN_h!mxt+bjyv+n=+(lWneC%3UVB3G)m^4lzSB4J zoYdV?ac|Y?j@sKta-IF{y4Egm&2hA1JI8$GxI3G9!u9+YcS_zl3P~r=QO$_mxPM__ z&gq|%!t8x}CdLKt*SNOpXGeZ*Oa10|>pa%oP~X5AZ)%nivp46zd%TlNNTIUk8+n3{1A~)Gix)XQ%?%S7TVlzXh3Uzy`drrN& z-ZuT$mzk9_wtw7nR)5CwpNhrL#LtSGGYFiF=}>KOm}K#M66YNbmpf0prMVj%W^Uxu ze$U_E|64gt?prncns2-6Z&g>`u(nLRI(_lIkE;)6&YxNT`|v%*)${oLs@$O_AOIYVMcq@n7ckv;AIESY%dp^Zq+oIlleL zTPHt$xMF{;jZMNc&-X7Hw$A(fdfWH*_5JPX7VG8e&0j6tweQ$JbK@#zkMcXxa~JJ< zd~ddLSY4f&h0Tq^`trN=_iev_xBdRT_WO6{FzXlJ`|p48TbSzkM`F3H%=|fg{lC^Q z$sVw7oVEVI+TzY_u4am{Z?AqR(D*bhL3jq+pTognvTwd`_wQ@VFF5yK+M?Z(pItw0 z&W1}FJN}>L^m@FiD|zz&3!#tp99v(+&wsA3M(-6*+@4w+hqG#b^Y=gGyJ=T1`}Oy2 z_B-)ki`lZf-u!M)S6}k#AT_eAm#Uh@4LQlsy{Hx@!7i{FYo<$`TN4xr-A)j*6op+cgd0W=pL~>R-W1y!k->z zYW(BzV3n2;L$#Rwr;pbc7>hUS@-Mr6e6d~q%7U^As{;R9dPdv*B{}zj!%@X$i)U|&vc0cSsy!qh4*9YSZ?g`8gRoCU;@UHUa-W6q+ z*bAzcYwX!~{^_r2ebVcaJ&*nRcvJC}^dD~hl7cP#_PfJn`0sylzkQ#Non4@}&%Z5Q zxnWJ?thoAWbyKT_F=r1SoUgcGdXTy?)9Lp1HN|y%YHv74x8$C)Tz~FB1gAk9U);Ao zzl#N{m#=qY^5=c16?iA;!4ci{FMql}iIB7|{T#9Gy34eu4`$9@{O(sniksDMNny}y`!~6o( zs2I@~Kezpt-Qm5@$!_(puQxCLd&w|yeXmCOhfVeKt_W@V{XCVSCwile)VztN{A}vW z7a#m=9G5t`yVdP;+HciIdWO@dc&?>=F5gN*tw zx4c&^*wwuGpk_8x@S?K9SM`q$t-fvBYIT3Zw(3W#FIj~j)jfT=#V>wNX{74NODmGIy3S)EaQo>A+{w!fR+AFMqYta`#q+O}PsY0X#Wmh1mk z@E7!@=Jxr;v-wG@J73vad&l|}^O{Cs{y%bG-2Te_++$i%+oSw{kFbHY4db4z_5J<7 z($`-+^*z>&nUUevZgnM@9g!=4-+1@`X^DzgHXnO?}!0F>sRc*uKYXt zh=tW{`#19!%KzNfzT;q)!T-$ucD68EYb%*=6@S*re|xYcJm5`(BzwAZ$&ueF8EN}o z@$$|5$=292mA~5k_nz~wd%sP5?3@2(R#kiby@%VK4-^*E)SR$B`2HJzC4c%p3+sa~ zPa4iT#PQ*I|iq?CIASMPAIEAH96V zU(4n(UtvnmIX3shneha8_yp%XOoy|)4dnMB^TTO z?vLncUHHzzx2VWlQFMxTec)P?)8~FJ{Np_%V7 zPv_~r2s*|2N!3eeUxB@5+flu#kvr45xtwPz*4wEBz2s0`vH$$84_&5=PxnpZka(Kp zaYdE)gUhB#MF+%x^sic3WT^6Lk(i~XXZOo2u=$N?_79iBq#30!%ye zg7{|CuXd?yaKH8GiI-#Kw7|YOt!nq%b{=x`Qd)YQYsuq+X}q5=^Q>oE+SS$4v{WnZ z)>?%&&8DY5du>#M(f zdn+%6gjZde6z!ce`}C(c;fYrVL`-0Y>1o~N&^o5(Vsvv*EB zd+*^-e-yT~?#|iC@K7h(_i}A2PuInZGmb2&{Bq8vLZbWuBGRzO`kd z!9oMePp3^D%)M-qS=(2>K=c5&@9SjeBRm_Y>-V2=ziaV9&C#{~_}6!Q#~OQ?@~2OH zDjO1-sPA4P`Ko3Xm)4o-yRB6Xc{MZiVt3Ss1YUjktW}6%eKp@6uCLoxl}7UHy5Pah z;^y$6HJh_8wMo9Om#MK>Q{vaE>r$l;KbTG3wdU5{l_jb6?FFKqJRe?N7tbs-OxtO& z`cj8q@OqDXFWo*#%W(U2);mcWge^+G`)Enj^vo|kFYb0Wr)NEhEHx}UtG?DyG5poL z4>Os*E}Zq0$$#^=3A5IJoV~x{bIzQ5sZk$7j=p--wKY2~`_0CT8;4mEnM!}ehplhb zz9+%TH1}VRfQ3unosO*;e|h{7Vqt=uI}l1p=KQ{c&8#Ita&?A=ERk!r|B%)ZJ66X z!;;~~=I$lI5tsK?_AcZ|P~}gkYFuaVWalzxVaBL0H;kurmoP?cxsp?HFic-yYV@l< zMX&SBi;h)0EI6^{&d+?^j-@^=jMI8HR{Phl`a3mx)(dML?GG#+<}WUZIAzy(tiRZD z@yWTn%+IuMKFZqZ5aLnatL(MlM2OsiV}T)$K8N)!ifT*JiTytHs>Z)r43jqfp46z( zvhU0T=Bc*7=FjDs+rpn8uRY7bZ(456G8GoNx%+v2=Z32>adb@UcK!OnME6t5<264& zP5F5`ue#pt!L=Z^t?>bObgoTVbjf1ct*rMh{oKi)4ByUkOJ2w`@5qidf^YpMWZl;l zU=?Gz;{E7k@FQFO_#2GJ&b*Ubym4~%a}Cp7IU!*Sv>90!xlfge3i_9DxWYmB#j1!u zC*P*c`kH3>V}IY1?=u)1rW&mY7f|DC+Zz0=KceIM^Wd7S!1|{OpJxRKgtTaDZ`EQ6 zv8Xt~$3s<3VK=J#Uvo#v4EBcL; zKh-P|<`GcZHfieRm!Ily&pMcXqviNl&Ia9i-MfX^EthBV-^;jbdpY*OQ-6X$d)Hga@Tex7CQ#m&|d`t;k!wT7OjmU{L6ajXwCUU&Iy z!@_C1s;_K$`Txwy7?z;@6|XOcB*et#?8wioT&}iPB52_Td1jTi?QHv;5)bO`*Je}{ z*SIQrE~Dfu!((@$!?!NJG;>$YV{!1R`o~sD+*23 zGcDEmDcYPK^d_5mo?FI~D?k5*Y%~zQ)ONCG&5x-mnqmTZFSrwcMzroO7n=wdvtw?g#Jg3~lKP`{p)3C$cFP}c zza?z@arUaUpAv0n)aUhD?Rao6zI^u^<+=m%6T31G^!P46(Xip(uN_~_UL1TDBz~Ez z{(tVjCt1~sJTvA>>a!hwX`p=DPRPHsEcTq--X)Q}i9xMlXD=*yHplFCsqe1|JS$3P zI_Ga&C#p6#_fqAzFIUX>e82pDlH|dgU!H8)ZLP+7DPvpcjX#?=t$nFmR)1DG|9Eom zvP=9nck(V-JDUHH-fjKw*2||$W7R*uQdAVbF@KJk?F0YmcbC|8cW&3*d8XRr=Pl)P zeLwy-W=&T`e!dvBtXjJf0tcWll5Cpts+zg$Ly^=i|iu(CL=nZ^lOjQP!K ztmZ%8h5p&Cu6=i}Q0H5F-JLFJ*U!h-TWg)Mb4y&#{Lj7Vp6&6S63GnD)p~o6n$6bU zQtcd4yY^k*k8M-@a#g0xp7LA6+5Bi_{>9JJZ|uAMU0kZ$@86}9ZL9zEp5EJ1w&HU8 zeo5a;XASb5G|OY!_9bsLe^mE<5j*dzy4t8suXnF>2Lg9$GhV6z3=(u zXO5;N1m1nXfAiCZoi695{yvcVdXsB&OhDVcDW4BKcX2RV`S#8u^UVfahgiavv8VTS zO|{N*yqi9Ex4+JN8@1yvYs%Cv8=XB={_?k9#>W+>^S67}Z|O0uzqbBPVfPDb{hU|l zV}8y*@l9&+@jqP0mp(LoXYuOIgRRz@GnTro4}6_i)~tC){BHTX>2ou6xYYN}b-FAZ zvana=jDh@{9ddP3J|FTp(Eljf%>VMogwAcbI(Mc|`dyNL>Vw4utMs*Qk3y7QJW^Y` zUQBP=vqvA}EYIB?%!Rhji?w)OcKn$v+x~RfUq${;xBY)AeskZt z=k=jwjdybA?!FyAyZ3FO@2ca=-}Tp?bO_w}TKwYgSbpYvo8BIdP%T+v_S3uEeSgZU zB{FQ?+-&tst_cF#JPYNxXKHwb#m7(TD|x`qB#<)`EXWS*?QKL2!P z#_~Bvj;&{UWo=IWRrmPIzIRdWs}-|FM5o^T{p$1)=Wh=@<@t@w+dm%tRwZB`;PUTF zD3eXdp7%OO+N*f3>(~kT7|q&pUc73O`@dP9CD+4uS6k&?w102d*0Q$3Z(}BdLTdc< zpbw@pf6Kmbhrhh#alSD0j@0)f<&s&#lj>ti+Dm78CR-;J&e5~cd;9s(yyMr8{|vk@ z9NGP-c6({}2ft^l+P@r<(N)twf9dhd-*=znx=dK2-@`GzwQiQxC2uk5&1+M3&Nq6} z#ljdY6d&T5_x!`Y2pOI!%=i3Fl0V(5KGR;UU%TS=<_0rqX5asv7jEitZ1r|4l32pn za3vw2e%>3^#lboIf19ZC`Mg-ide3&xgYVwIJ5I;SA6s~{!qRzvw_(tml@q4;C!BxH zr1tLp_GY%3kKg^|>w5LtwehTl2o8@|^3I5*^b=0=%`1w3Y++D0|Y&;L4bIqCOn zo1AGcyl+nI(O)h9C3EZPyosu>PyTrt?e_eA(Af=Fm42V*?|=ALHMK|Uh1>MIOT>k= z@6MIjdn06ahIrYW-2pET)mNS3(9z3O{3DvE_`)bk-F)g#V|Amb$?mKFP1=#KqX_$aoXO;P24 z()y$BF_+{grkZe=tBco&ol#EqGhBSnZl0s~ZuKs$(*IW<`|w;^&@Zi3+%9u{j`azS zhCj=4Or|J4qI<;!?XE=gRa_4* z{L0Dq>)i4(`uvkkJNZO|6ZY;tZK1o%zh3{+oc2dY#BxvW-QzcDI#cf=tLJ6@v;KXZ zy7t1^q>QaS!)9Qt)9JG^G5U7t}k8k_pf`advdhw z-c=O8x_JAC(zV)BPKy@l**wS%m^sV*z1Zwk8y`fNM{`gAdpqt6SJ2Mg*)bOl~yU^tdn6dSZ~X)?b4U(nPnd@HFvMOd28F1Qu*|xEnYfN zwI@q|ef_$7a^LYtg=ep?@h$#4xpkSZ=soe2ON;kk-V@KDz}I@SAoM_kAdktdqWI4f zAHSZraHaOWlsWsi-MPE=2|M$vga`cZh3!-XKD}FhP(8-Ft$w?F(QU35>khox9W(D; zo^7~C0DIfA8($)XR1V!qHm&e}GV$P^4-7N73>vJGJx;JoTzPnqE9b;~8GfCTDGQz- zEISf+GkHCah7;?Gsm>u9t{!vkT$G+#c5T=pG<%|un)?3Z(`{9j1zA3~2xOVs#j~QN zOO9pIXV%_5k5Z&ovKOUIOjpI*bo_IY&kJDma-!k*< zvBCW_EguBx1=Sfo?k_t1MUnrZujcI-m(~kaeF|GPOtGwscrdf2YqzIP?UCT1htD;3 zEqJ`+QH#>9?QsEY5nha$c3ro$J{*4WZpQA!a5=e%AV2Xtw(XMquG5or#Ol{x{NjGA zEd3sD(&bspu9(!$7OUT0^~`$4^~OW9&ErlQYH_)5UvlV}K=bMgw@hDpE^I6M{#3@8 zGf`RExM_*a1!)z-j;>#A9h2GZ<2*ks@#K_uoY^}6($e)3{)_v{1H${3YO^iz*>EIf zk6fu{=9UX0qOk|RFIyjLKHY4~Ca3T@ldnoh)NdE>;Ie7nw?+Ep)tApqSkhj7w|T7F zS)pa1kgn~)ne-vutM^4T+tM$Q+bj7_EtsZK5ux$p>4YQSS1x|^;hkv1d=chnj%}`L zv#O3bKG>Thpdo(p8cVS5A1;AOyrxyFwO{pF@fY#!iEKE@{9%f{K~>4ERo?$54;;$8DK*dyj8F1xe#r}Ev~A(mRD z8IEbLmY29T=<-Px9=x{9a{VRqhD+ab?mdZ2xwLzo=VY4+*IvB4!hD|DJ$N!RTCuBsPoNz-k*d&YR$C(Wx$lf}e6RB!Q^Jz0=_?fcWKzxCRc zbS)SIR~Meyq5f_1@%mdKW>?r>G^aejJk?Sp^Ww_W*B&wV)NgHRds@9Q-_h)`-QKW< z+>a-IKWY=R==*0ev)eW*QQ-c8Plsb=HYM%dHlg+YXXTSq7X&?M*5C5l?zqp96ZMak zd>8+>Vs)4%(df9Uto+ob3mO-zb_%5(TzRH>-j6%}EX=RosoFhBv2Yc;_hi-zhS?z- zLN($f13xUQyv+X0&o8yj!g1@9yLpYfVuC79`JS{@E(wqRyg@uOexiX&QtYC+D#aW- zv-|gcI>UOy_EEgund}QDVR|>3LcBO^Ub;=LU$?ka*0JK|fs=EWo{PNhTdhB9(vLfd zel@e^En78lf@G_-(OcizZ);?)uDZC=N8fQizsTZWvAd3P?K#;H^MYYh_&kns$pw9- zd*3d|v{w7u)Lb*YlzI8gpXRn}Lz$JOwcK0g|EYdwJc(yt*NOeIE8DN6`aS%4e0G*Z ziu;l^g6TWz-|0d%#Ji~i~$ z$7mU>_<`$$s-f)P^MW7LY^x8RzGiv(!H3(A{Ttg_jw>bQJH2LI*03y!q0Tc-XK7BXfUl{T=h~?L=XMlAG0sLUvhiJ=1vH z;?<$AYb}q*?Ma&YSZh}y&!Kr=Y!kCe{)dSE`IPo#N!F>&{`Ukl_PI~KG|lBvsQ$_O zYd9CCO+8kfC_b~8`;bbimV13v#>3R!FKH7^H~tOuiFetOYwhpm$1>Z}viVqG-$spV z9`A4GPWyfDuY~c%=1Rw2r`7jQPTuNly3YIb{59T|#}-8|Hu?TFedm=a(FrlxI!_OO z`n2`5F_S)XqSWNRJ52?u>}J!~grD1JeqBV(_OsgG#IN3-pEeciY+kdIEHaoO7A>AWbTo9j4Y!%K22*+19MYu9(!I%C19x`S)I^r!zc-|w~2S6nFY zRO}kQK*@UjAkJw#-MLE`<(}4saLwb=wK(xUFKzOZ+kX|O=tkGbbIRP<#9IBAm&|>TYC0 zk@JPE^-BvsbfkWMb*OQ<^}2I8A2J?&%U~<#TyMjw>;M1jnghXH_4yaOB6ci4tz)El zb^rd%Q*V#1lV&}Wcd6Ue(#bF6MvH>Ugfzw(Hv%}5jtTike@vM7A^T9GM~I5$1DA_? zQyYH>1-R~17MpIfIXh{NPjpM@=0p86zOLxBiAy`p^ma-;vw1Fe7q7~`*W!*EKiSW! zwkz!XA$dOkW4U7aDp!R`EQ*4y%W|j86?2_Y=38NJ)RN?xQBWc(F}cmK_uIeJ%W)69 zrUu>QOSO9o~1 zdT{yLS4#OSt+qaCI<$C~Lg#^f2fp;34ix{eTr4giBt(3}^rly*&qOS$zs{!op38dq zuBJs!dlx)W=+8>o$+tCSN@b|0rQbRg)r|#ScA)@+h@*m^%?dqRaX-|>bd?MKT`eR z%G=cCocDIcvh^>V)Ad=on)Bza6Z_wUOk8$z*5<71bLK0(ZU4q~Dawy|f9RCGjQ7q@ z{FgkXK6LB#xtn5(N~T;sG`}zV-|E`?D{q<~(4X9+`{b&^@%qj07s<3`=RMlVoy-Z0>)-xT z=XUIz>vR7*T{lcWd2d-fcRkOa`pxDm`nK(5pDBG|rseVp^|dGK_)9}H-)mj+Kk)j- z``yI$-RKxB3>_daX5l z|05n0?k>1{Dn)zlpSZHWo85lySJ-2?`^c;hn_I1B9Z*-6+kTd7o&G|fUV|{^{_BZ1 zQm--ntE@ZyPT{`Q6OGI9y7EsMA6wbNxPL-&hXtdkE_>V>PH>`>>HWc5iyMFfI?ZxN95*OZAJep#r zvw}HRYRgrZ*GbtPf0dUSB(xUuu9M$9@w5F#wsq@opZ|H4FIoEA{DQPc>(x&s%swzD z%|69+x_4QUOuD?l{yb@o$E?pAm6ud8^s#Y&KUjL9tkP5T$z6_uk{7=Og1+9=jaYQ1 z#G`Wl-3|5M@5<~^nLPDjcl(9k{(XG!Zu?EWs`%CU#;f@n?QK!_%e2;T&VASXd(M*z zk9*o1`CJ3i?mK$%tL89Or$%^hf8X?3{dj|mze{(ssmX7-=&k=HuiyNZyd+mie*dM% zFLJsqv^7?_2&Nv`?QjlhBw!M40;7as`RcZD2T@SEt`0T6@nryE;r~cGqJB!mF zHlMR&JjDAuIg9_qQJznEl2#HMu38`Xem=spdhy@c-|Pdj+ZDMUmG^Efj6M2KCbRzM z_r9O4-@?82^6%BLe`OC6%R*FHW`zu;bP z;OV%uJ?5)!%y&Gb7Bu~UX@Re#+{4@jN&iL4GB${A`N#E1f1^-P)VJktI%Az@@AcFz zki4Uw@o@fz?HB99=SClSyFjFIUf*BC-<_XZEWT@&8NPCFzGM1Zy(jwp?{mps_Rkm1 zXZWsL;N@^*)8FJ%-!x3$6JD z@0&cDrf_xBU*>O`Cyz(Jh&}S?{l@bveeb$=@9e(upYiw1%Py~D+-6rf{AJl(ep7!A z+v-El+k)HE%~r-Inf$Am{#Uocd&7U(>dRY=-cP^R#9PYNzj^<{I?v`-xy{EfWVb|o zKTyY#{poSNYQ~oddt3LYzv!R$prZBBt9mz+x}ItKy)H@%&i|`jSmEs!lOErbSi=AJ zT69L^>5ferCtV{h=LwZ_21YYqKYYz~pF@~%dVce5$5qGneLC%?($-&j%l5$*H>+2R z>X!5Jm>L-EK3;MDz}pp@=YK9^Wvu+AwVSRY-iR#Cua+XALm!e55L124xg@Km%A#k z`TFso9XanWSWG&8rS!^n#`@m--_}=gRlk05+N?2zO}iqq zpR7@8n!U%pnJv^KXyF{SqP(K&MSG;zxGtVpedTlE>MIefKea5(=Cp6)y*n*&E^nOv z?P4pDxh%(go>a6{g{_dk;j$;%t>%&OqT>(NDb2%C3`kj8b7M`3~kf zB}rG-8=gz8VaW_S8G8Lx>6bOWUfV5iomiiLbM+dpYdH>^QlG4Qe5=3VU8%X5UE9{Y z4;y9cUjO*Zur^gzwb*Wby6k?_Ela*1-2c#P)7flRu3Z|B_4fRn@}{GZ`y=nRC y z{^+^=NAI?S_NL4u+gm@alG$9B@^EK`eB;Dk>4*2)`gwlTrwUi*?-Wd%dpz;VbA#X> z3nmVu!lS~c&Ys@YFLiO#3$3}AZcq4Nm=)JL-^az`i~oU3!C$zfTSOHU4%~LxSA37{ z)<@wlMtj~~6tj`TmO85 zg-tj!$CF95kBff9I4rlBbJ+d!w)1;=-(7#fZ2IWl1B(Se`%mUsuFvG#VL36ZiD&=f zi9L?Rf@hyioc%kZ=l5xk|GZJvv%fnvZc+QOe^d04>ldzVpAhDLW+$h-(H7PEc}47Y zH<-5b&VDiD@*mwDvMxtLmwech(fs4D>JIM*Q5&L|V|vbh{M`{fE9l+AecLsTJ}PYK z_xy1E*ow!3U+UR4b6=Fp|IEM4lg6o8?|#SnoNPg2?wM0{?sIlOFev|X@ObHKi+{RH z@3`C9z1F^*lY8}_t-IUlCbdG1FP_wzp!Ew(RE6=>9+X0SSIk^g>9Kgn5l-G0`yr1zfJNZ9&2lfA_?TYK#89H{AAQBA2oJ z^JTO5G5OU?7nXCslrH(JrINRhf5XImjI;mPR<-tBw@dsf{UA4J?}Or);OZq8IgF3g zPub8XqjY`O<&V*&t^dVS7v3|y(r{1E^oC!y4gdegsmWh9_58|t@{9RaZnx>5eUI3J z!W0$#Gbgpr%FEGUch4($YP9CW=R%bkKb+^cX51{?DWkrhvHsf+pABrh`47t_H{}OO z|5sfTSGqO(!HSo6j@=hpdh@`^=`X}zE!yt#J5%vdXJC}D>YXk7o#rPU+_y)6*Xie{ z-$^k!>mOhLuj%`wlCQQ=o(FY0=O?BpUo**>@=&);n@JM-*^*5dlVcAu^^1h5;u+TwQc$e(29)GKfJ6PH^}s1?o(eRTW5bwlMR ze|Ue?bAOcD$Y^0IxbU8{%c{eZ%|5=4>z$I9ptgm*_q9amJ%^vX*;Y9Fa8(EJ-*C*_F;@fjoen)nZ=`6<=-}Fvp9k?u( z^+b95ZwDdy>2E$>oOn9kslV*}!jG~h4}QvTlKL2KU>~)~o|#MMi>zqG#^$*HW{;kv zxA+~*zUY(7Iq`r}PYs*)mb+Wj&R(0wxYnrt=!^J(Tgppv9oGw83KJ;zGFkRpW>?9J zUAnJ69{bt<;G}QN=EiK3iuFnLq7Tdk&X%6o`0#TpAMcU6xo!tie^3AL#i%O!VEqaA zZQs@l91Xj$`dY1=@LPVvOjg?(X1VPVuFtg%%`VlQy)L!F_h!mxt!FiVX5Ihshxbz; z>!0;M_i)x5J~i9HTfTH={Kq48q8<;eY@cQO9ol|@ZLzo3N=NN|Hj`|QiQ4pD4>(lW zneCG;&U`}i)m@fVzSB3eoYdV?ac|Y?j@sxWZyo&Yy4Egm&2h3~JI8$GxI3G9!u9+Y zcS_zl3P~r=G2624#{CN#+n&~VzMijk%wzq^c#+k2B@7t_9qZ4{+O4)TNB*!{&D|Rd z3cpVJoBpHCk~xaq?Pblpr2i)^8)Y+PncsHzSO4dH+h@7HK=j!D6*JerpZ(3=x_;TV zjjz@<{S|y(Gq-}b?yv1x|N7Sb)_K1-Ojz$D__F+5e&D~~SHz?aT$VSOC!oCad&b^f zUXK&g{$G1KdCj@@2iFh&wpQKpP5r_4#LZSUf4FCre=z;O>9g&VTqgVYfVno0BF;Vk KFTbt1^$P$gjOH2u diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index b1a6bb483b..fdcef283b8 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -1069,7 +1069,7 @@ public class Blocks implements ContentList{ range = 95f; shootCone = 15f; ammoUseEffect = Fx.shellEjectSmall; - health = 210; + health = 250; inaccuracy = 2f; rotatespeed = 10f; }}; @@ -1092,7 +1092,7 @@ public class Blocks implements ContentList{ inaccuracy = 17f; shootCone = 35f; - health = 220*size*size; + health = 260*size*size; }}; hail = new ArtilleryTurret("hail"){{ @@ -1107,7 +1107,7 @@ public class Blocks implements ContentList{ range = 230f; inaccuracy = 1f; shootCone = 10f; - health = 120; + health = 260; }}; wave = new LiquidTurret("wave"){{ @@ -1125,7 +1125,7 @@ public class Blocks implements ContentList{ shootCone = 50f; shootEffect = Fx.shootLiquid; range = 100f; - health = 360; + health = 250*size*size; drawer = (tile, entity) -> { Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90); @@ -1156,7 +1156,7 @@ public class Blocks implements ContentList{ chargeBeginEffect = Fx.lancerLaserChargeBegin; heatColor = Color.RED; size = 2; - health = 320; + health = 280*size*size; targetAir = false; }}; @@ -1174,6 +1174,7 @@ public class Blocks implements ContentList{ heatColor = Color.RED; recoil = 1f; size = 1; + health = 260; }}; swarmer = new BurstTurret("swarmer"){{ @@ -1190,7 +1191,7 @@ public class Blocks implements ContentList{ range = 140f; xRand = 6f; size = 2; - health = 380; + health = 300*size*size; }}; salvo = new BurstTurret("salvo"){{ diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index 4ba2506664..cc96e1ece2 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -36,7 +36,7 @@ public class Mechs implements ContentList{ speed = 0.5f; boostSpeed = 0.85f; engineColor = Color.valueOf("ffd37f"); - health = 250f; + health = 300f; weapon = new Weapon("blaster"){{ length = 1.5f; @@ -62,7 +62,7 @@ public class Mechs implements ContentList{ boostSpeed = 0.95f; itemCapacity = 15; mass = 0.9f; - health = 220f; + health = 250f; weaponOffsetX = -1; weaponOffsetY = -1; engineColor = Color.valueOf("d3ddff"); diff --git a/core/src/io/anuke/mindustry/content/Zones.java b/core/src/io/anuke/mindustry/content/Zones.java index 9d94ce230e..881fbb5fdd 100644 --- a/core/src/io/anuke/mindustry/content/Zones.java +++ b/core/src/io/anuke/mindustry/content/Zones.java @@ -22,7 +22,7 @@ public class Zones implements ContentList{ alwaysUnlocked = true; conditionWave = 5; launchPeriod = 5; - resources = new Item[]{Items.copper, Items.scrap}; + resources = new Item[]{Items.copper, Items.scrap, Items.lead}; rules = () -> new Rules(){{ waves = true; waveTimer = true; diff --git a/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java b/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java index 33642245d0..45eef72a81 100644 --- a/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java +++ b/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.editor; import io.anuke.arc.Core; import io.anuke.arc.collection.Array; import io.anuke.arc.graphics.Color; +import io.anuke.arc.input.KeyCode; import io.anuke.arc.math.Mathf; import io.anuke.arc.scene.ui.TextField.TextFieldFilter; import io.anuke.arc.scene.ui.layout.Table; @@ -45,11 +46,41 @@ public class WaveInfoDialog extends FloatingDialog{ } }); + keyDown(key -> { + if(key == KeyCode.ESCAPE || key == KeyCode.BACK) { + Core.app.post(this::hide); + } + }); + addCloseButton(); - buttons.addButton("$settings.reset", () -> ui.showConfirm("$confirm", "$settings.clear.confirm", () ->{ - groups = null; - buildGroups(); - })).size(270f, 64f); + buttons.addButton("$waves.edit", () -> { + FloatingDialog dialog = new FloatingDialog("$waves.edit"); + dialog.addCloseButton(); + dialog.setFillParent(false); + dialog.cont.defaults().size(210f, 64f); + dialog.cont.addButton("$waves.copy", () -> { + ui.showInfoFade("$waves.copied"); + Core.app.getClipboard().setContents(world.maps.writeWaves(groups)); + dialog.hide(); + }).disabled(b -> groups == null); + dialog.cont.row(); + dialog.cont.addButton("$waves.load", () -> { + try{ + groups = world.maps.readWaves(Core.app.getClipboard().getContents()); + buildGroups(); + }catch(Exception e){ + ui.showError("$waves.invalid"); + } + dialog.hide(); + }).disabled(b -> Core.app.getClipboard().getContents() == null || Core.app.getClipboard().getContents().isEmpty()); + dialog.cont.row(); + dialog.cont.addButton("$settings.reset", () -> ui.showConfirm("$confirm", "$settings.clear.confirm", () ->{ + groups = null; + buildGroups(); + dialog.hide(); + })); + dialog.show(); + }).size(270f, 64f); } void setup(){ @@ -67,7 +98,7 @@ public class WaveInfoDialog extends FloatingDialog{ }).growX().height(70f); }).width(390f).growY(); cont.table("clear", m -> { - m.add("Preview").color(Color.LIGHT_GRAY).growX().center().get().setAlignment(Align.center, Align.center); + m.add("$waves.preview").color(Color.LIGHT_GRAY).growX().center().get().setAlignment(Align.center, Align.center); m.row(); m.addButton("-", () -> {}).update(t -> { if(t.getClickListener().isPressed()){ @@ -114,16 +145,16 @@ public class WaveInfoDialog extends FloatingDialog{ t.row(); t.table(spawns -> { - spawns.addField("" + group.begin, TextFieldFilter.digitsOnly, text -> { + spawns.addField("" + (group.begin + 1), TextFieldFilter.digitsOnly, text -> { if(Strings.canParsePostiveInt(text)){ - group.begin = Strings.parseInt(text); + group.begin = Strings.parseInt(text) - 1; updateWaves(); } }).width(100f); spawns.add("$waves.to").padLeft(4).padRight(4); - spawns.addField(group.end == never ? "" : group.end + "", TextFieldFilter.digitsOnly, text -> { + spawns.addField(group.end == never ? "" : (group.end + 1) + "", TextFieldFilter.digitsOnly, text -> { if(Strings.canParsePostiveInt(text)){ - group.end = Strings.parseInt(text); + group.end = Strings.parseInt(text) - 1; updateWaves(); }else if(text.isEmpty()){ group.end = never; @@ -211,7 +242,7 @@ public class WaveInfoDialog extends FloatingDialog{ for(int i = start; i < displayed + start; i ++){ int wave = i; preview.table("underline", table -> { - table.add(wave + "").color(Pal.accent).center().colspan(2).get().setAlignment(Align.center, Align.center); + table.add((wave+1) + "").color(Pal.accent).center().colspan(2).get().setAlignment(Align.center, Align.center); table.row(); int[] spawned = new int[Vars.content.getBy(ContentType.unit).size]; diff --git a/core/src/io/anuke/mindustry/game/Stats.java b/core/src/io/anuke/mindustry/game/Stats.java index d99edd78ce..05917231c5 100644 --- a/core/src/io/anuke/mindustry/game/Stats.java +++ b/core/src/io/anuke/mindustry/game/Stats.java @@ -30,7 +30,7 @@ public class Stats{ //each new launch period adds onto the rank 'points' if(wavesLasted >= zone.conditionWave){ - score += (float)((wavesLasted - zone.conditionWave) / zone.launchPeriod + 1) * 1.3f; + score += (float)((wavesLasted - zone.conditionWave) / zone.launchPeriod + 1) * 1.2f; } int capacity = zone.loadout.core().itemCapacity; @@ -42,7 +42,7 @@ public class Stats{ frac += Mathf.clamp((float)itemsDelivered.get(item, 0) / capacity) / (float)obtainable.size; } - score += frac*2.0f; + score += frac*1.6f; if(!launched){ score *= 0.5f; diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index f9e0432e48..46e442a818 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -15,6 +15,7 @@ import io.anuke.arc.math.geom.Point2; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.util.Time; +import io.anuke.arc.util.Tmp; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.Effects; @@ -378,14 +379,23 @@ public abstract class InputHandler implements InputProcessor{ float angle = Angles.angle(startX, startY, endX, endY); int baseRotation = (startX == endX && startY == endY) ? rotation : ((int)((angle + 45) / 90f)) % 4; + Tmp.r3.set(-1, -1, 0, 0); + for(int i = 0; i < points.size; i++){ Point2 point = points.get(i); + + if(block != null && Tmp.r2.setSize(block.size * tilesize).setCenter(point.x*tilesize + block.offset(), point.y*tilesize + block.offset()).overlaps(Tmp.r3)){ + continue; + } + Point2 next = i == points.size - 1 ? null : points.get(i + 1); line.x = point.x; line.y = point.y; line.rotation = next != null ? Tile.relativeTo(point.x, point.y, next.x, next.y) : baseRotation; line.last = next == null; cons.accept(line); + + Tmp.r3.setSize(block.size * tilesize).setCenter(point.x*tilesize + block.offset(), point.y*tilesize + block.offset()); } } diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 8be38a1feb..028218e723 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -3,11 +3,11 @@ package io.anuke.mindustry.desktop; import io.anuke.arc.ApplicationListener; import io.anuke.arc.backends.lwjgl3.Lwjgl3Application; import io.anuke.arc.backends.lwjgl3.Lwjgl3ApplicationConfiguration; -import io.anuke.net.KryoClient; -import io.anuke.net.KryoServer; import io.anuke.mindustry.Mindustry; import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.net.Net; +import io.anuke.net.KryoClient; +import io.anuke.net.KryoServer; public class DesktopLauncher extends Lwjgl3Application{