From efb86724a1e738c8043b17db759fde9f64f4551f Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Sep 2024 13:22:57 -0400 Subject: [PATCH 01/45] WIP overgrowth remake submission + Extraction Outpost edits --- core/assets/maps/extractionOutpost.msav | Bin 21115 -> 23902 bytes core/assets/maps/overgrowth.msav | Bin 35371 -> 56524 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/assets/maps/extractionOutpost.msav b/core/assets/maps/extractionOutpost.msav index 25e8901438dc97d2816db1644f556eb0ac69b609..3896db82520cf2c53d01bcdad117d83b7fc3e5e7 100644 GIT binary patch literal 23902 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 literal 21115 zcmV(vK^#ue8?J>dkdX->X*c;~DHZb^g**2;st$m(HG_eRB5P6Hm@Q zbs7ru_0{!8z4lzA-dbzIg|}B*wc6Ru{Cfw|tM&PMqtb-rV!76=K&sqYU#>SG`BL@W zD&k(N&zEa>JNDlDkR+0t!C!s*z4eW?%9Vxk(o&^ywz*cGudXg#dE#sntJ2x|_s@DY z?o^hlt5?p4)SNl@g!)|$Z83Ycvbu2PLRdrTV!lznUy~LWLi@OM`TWJ%C!aW5Ua7ZM z*RRZ)w)Y$5>iRM_y%^p!6tPQT7%?eNm=^2R_42BrJ&Xo{y|i3!)eHr*QuF+57$S@H z#yZNYY3e^2%AI#0v0k0O3quz#&RjZodG^Bjix)3lI6r#{m2kbh-h`LmyVI)H7O-~n zI-aZ}>!e_=f{N8#Z?xvuD+>q~)q1|Na2-|Q?hVDk_ef=?S6lP7N~?M0!u#(-dZoO^ zdc06wuQy7sk||W0>j)2utf#fg!W&2eYCNhQ8`t`N){Z-u)+E7xN1jMG#Lt>@AfL`!zEWBS`SYL+tg_#*hEmx{b%j^0g z*=V7sOl03%uasAsSKgbs^4|MrXRo|hMKxbVj$T_?sb4{>s=WXHS>;L9#aSe-Jb(A) z`a(rt)2-KyNk1_&Llqj;J1w*(0@x%Bn^(epu=N-h&Rx*Iv(4pdrMB?8aSbzPD~pSj z`SmNSD3Z-P>b}6O*6)?O`S45DOZ5e7GY;N|H#=iI{)I5Wi?wp2(&79s^#t1o2P5M{ zU*J~I<3`4gutpfStKY4!_KGB-%}(hXePLd1+})@ybVjEOGkpNMQ*Sm6pzpNG z&9dR>#jx<)0jGy9UYZdgPemcaT656@_s-c`y}VFwt)uCoF|S;iudl74#7$B$GlNy? zcfO4cs$|=5zwZIsHjwdHbY2_tIh9{MJ1);yidy;fO3R7&WaFmqWgVLT|^DK{&n z%IbQxQK@a5E9G);EYo#mWuvrQZkC#r^-^oCR4$>C->nPmwZuP;}d2w}d8jn9@E z)%oQTdCvt5_SMyMrB~|frOLZ&M9u0F)+=c@br#!Istw&O0$4+Ti|8&?7SYTr3+Hl_ zOe~aMM)fVV(CIbLmA--mG+L|N@P4IyS66RV@aAikW~JP~zV+REHyQH z#yYZ;Qu|VUQI)OL?^hb7rABpuID4#BKarLs_M ztxPYM8w;iTkC!kzL-d<;iPc_0O+bwA5+aE9oz_ybgc@=4mARL0zW#dYg;#FA`NA95 zP$NsPeC5q+r5n%Ry!rag68Z&dg@_=-jzEq^IF$wkI0$9|4&BKCj6+J>0wl1<1<0;c z*2_y2X(6-JD6cJ}xj=%l7f8(4%QeWT)EH5PG>tXrB#GuxUW0VATB{Kl-4u2CksR$qYP9cnQ>Utd{6gIvJD*hT}ziCt&!R2mz# z8iC5Jw=ln5udG6{{w|6F((~oU9Xcs4lD=TFu%eO;7+9z`R?4dgaHF{%1iub(%qkE~ zioTGXuT>WpA*IrT^L(7;;{`rme2i&zB>rre8L`fF4_=mVS9omFe@M)X~>*v;i1G z+sBN4dcLtyU#zvN3y@!_W8$?D6szVdkgTk%t#8n%13ecEpp+57w7yDUF4sUV zpr5bdXm`1eg9IG2WLL^dD`j=6kx*G3WDF9JSg1BI=UQnkKuRa8kZCM$)N6D$XwIf} zUr@x+@zV0NRLC?cOLVpj0~-~^D}x)VLVeX-Euz<|&hu4~uQbReDw|d*bAK3_fa;1R zs}(LPa1moa>h?8_+KuTPWE;poU43wYJmR!1NYg0}HlRomRb}KF(twJvrssl?i>_=P z@=S!j;F{`U*h4@S6{R*iMN>W$@4FYwo)~e7+5)B&dI-w+%pm7hx3CRrpn^u=e zm2*?RjPc^-wR3k6-*P(v-Q+%hlGum&YKPOo6XiCSo~628vs ztVLg>xK*}USu0~Tg1%5~qQkAMARbtoU4TM7x7Mm*m(}m8e(I#^=&~Et#nw^<@>R_2 zS1TIGsG$fm?P*MNS1B+LU^+ZcvvL~*V4}Q^o_TG#qM}@VRe@5Chbd7i)4*jK!}ZD? z>P^@ruLkKzVGRc;^8_!i3veW&cufsmT!%Ozv)mt4bsXA?n#WRM zY<{D>T3@2XV`CN5@up(Qutviz8em+?8WFA1tToQXbghi=F?V7;=8)iBa-Bg(CseIH zZ3SF!fHhcG8gZ|Oa`a#7lVO_ra&EA8N|uSEqfWt6 zbqU=kCfb>Gj6vFUinVEoWB#@9i|x(u%e^#sX?0il?rBtT&{c2DlLxir?GG(Bd^Fmj z`RHC5Ec9r;!Z8(1YE{JzI-=p!zpb@!w2r2O?(JU1DJT3LuRF2856O;^Nyuwyz{0aEvF_(rdR7Y z&>phqY_dF}*9MYYs8X%;9W@N!fC8Uz-7$>3n6avGgr>$pV;EgLj@D~V(O{D%DV&1w z1st+h8Z=erRV*~tmz>LdvyMIK)Ch*13*$SD?>1qih^kSZw_zoFhx%2d=G3XCOBZ8$ zc^9#5q1#&3+@?_;WvZ8d)q0fZdQOp@IOgF1d2hRb_D&Cb&hgU0gatYP46b(5F zO?g}mgVk!Kg@ZVZ+qxi+El?DE!LC_XRpb2Wie8f@&o@sg(>=|xdbQ@Np{1ZE zM<_fumr2J7uaz>U#|<1OYiH*c4KV+7$HhvcrDjR_I;RGZY7UE%96Vp7*&UUSU^H-+ zA^8f&9nL)*lc3qxXay3l%JYr-8s_h6TxxVSd9RG5K}LMam~Td0ZOAFrE#eEUI;5L= zaSHt>b}_#UiRE&&#uLA(8ZA{dAdYz#4z@6*tJTWyVw?Nu45@1zBHbexm8BILZKv0p zt<~~M6%varT8eK}*Vbw@N3}6uQ$y%QTB%0g$;!KHNS(Gz|JL61 z3T2_4ZE%#mMu=$NUEnLUt40MKBl#SjE@WS@TwU`D$Tr-9Vb!Ejaf?(VzeqLnibmEN z)s>20R#d=j)?QSQoNEQfUXS0QX@6TVy;5Ijq1<)&GPLRRVXeHOf|e7ZjGV=W74(YiKXCQ=G_Z6eYZ$(XUh}n#1;p1uxQp>h_eYJ_v$p) zNNX_WMpj*@auaj;j)}19p7h5z2h6pGs742-9Xg*D=6PCOYL%t({KmAB+Zv92N4Y== z$Y}rGkiu!2G~O3>Lz@*jrj-?%NTKl!&ARG^57o;)nvQLtuUxIDOr$(Nj{`65{?jWs z1S~I++1{_NqtOpy_-NEAf1KCj(!pAN3AM^8Sl*x!jxETqR8|NTgj$n}I~1=Ax-B`2 zT6qJ>Rig6?Q}gB3d*!B=br_@u@7EhTndPo>x((v5FT1 zdVEf8@hXK30gQtig-Df;!|af*qKBzp*v5|>Jg+UZ>6bsy~YZO zdzD(5R&g5lFp#Es$sLkq^u83Y)~YB;3>A897vog@-TE4yB-I)^&D^VnXGndwvPu){ z85}{jR_-*)kgi}hu+~)b!K-yhVEEm@b2JD@VCM@cU<90OR8dWk$Cw^r1iI7M!0ajB ztW;5?D=h?*LciW>;<5hj#%dk4etx4uW|}Tnma4RSElrVV6_HJQizvph+^QmYB)?u&bSzh?(U3WtUeW7B7*SE~ zWfBqwb;KW%m0AnYPSQLO#`5}|dsP*A5in`JI!J4b(M`&9V31Gb4wAY`6X;1COOQ@i z?$wbeDH1yAdIi0O0((bm5nfgo>oxQw96vVDL#rhV9nS^sUL75^7jg!zX-M%zeu5U2 z^@Ma2eas5aIP3HHVtol?Vhhs;8c3HLm`2tr%`6;)oc3jJA zw9t-cO&G4oW=XSG5;Hoq8k)Z4tmIi^0=dQ3Dtd@lY26}6_J`=+Mq6g<)~WZ{Uan;{&P{Ml^B|q>4>Q)XH}$ zAd%~CR!FzY>uArk9EN10*f7?wqMnr-sCUV=O8IURMP9x~h!-(er{&>k9H!i@(sToQ zuhpex5-+l=a*tM8lFe#`W>V1GH=7NNUI_axLPPUJD_p9s79fqb(?V-xFo~rqsrG7p z9Zf%t$q7Ow&w#O|Rm1cXS%U7fIRrVf(tAn;Dd(Vt0=)q$g}lSjKi*a|A9w1+@c|XF zUezHKvh@FJwBnC33{S7?S@wbso6>DqdIjaG^3bu>YuZLvzjfVEbm*&@y^Av05J zWty6Vc!L(2o8Jn~24`Ukpa^q-XifkmVT}H%GraNt&<%A4`0rQg9}IM>{D0GpG@T97 zS(a`joGNn~N_)LbJE;EZC8#V$cmKU#FC7AJ+x6P$NYLH?OJjv+Lz+#U@Y?DXyY(9g zy>0apK8yc@R2h_Jpb__g#_7iYE0sreWv_~Adxp*wv;VPQ8M;+g9Qq$4D=T=92^t`n z{-cm)iog_=o%Ol#-#L{nc)XmZ%amwISUtt|b5c*?{15$l34y2TWu)JqO1*@m@*d>J z=`!b69@dpR>kZJ^?@7H8>71(=$*8hGB>fMhg|)oFcJQWcTr<&d{J(Xu>e3=cWf|Qs z-uQ1ERrXrU_${*1;_vDkbBtPyF5@8p&WohuK7hY3kb}@>h9xLySbVJxFI? z5F}5FCI)i$Y;P!s=xkoZc+VrTg9efx*OAEVcEB|_cl=CLTVVOFX@gvFLg^t z2nAq_K@B)uGj8OXl%=KZ+tfBsXLDNmp7~klc1`pu<*V{H1i(!J5Qqt7d^8lO>%Moi zpuR4ko)u7esh1Kuu50D*1n@PwG2jEpb;BSbDxVc@ye0si>juDLU;~f^@G9LXXaH7E zr?^TR8qfG))e`W-1uFH5ty4m$`m5dt*b4XAS0X;Cf( z^a(mE;@Kw6fMRl4mob4zf9mTaedXU?E zlY*QQx1JJ*SI{wjLg0BMSjcaP^RPJI5OvIG-W%^|fwrN`c|;VtbG?Bws7|1Hak(HS z-liot#lPhJ{Mn{?1)tf0up|(c%ZMPg8Srf+yyzQj;ArO* zr%{T#2gOqda@QtuG2a$!zi+^t>&H`Kzb_dmp9GTYSu2~+mTWz%#o0u#*Ze4%7K*+q z_>Bp?5h^<(-(wX<1VNKpMQ zhcwG+k8TKz314iovn=$gW+m;Zm47kK0-v4AAgU5CLEOIz%tr*km=7TE`(2ShplCZP z&Bi5X;FxTi85ykz+XIoHYI{uE0-o)4q&g_ZAdDhInme`1l|#W7ibo9=lblZ zfX|Ct%83o8d=^{8Z68Su1+d8rw8q)NdjsoG;O}|Ta(&jFR zJk(`UGZAqKJghzqMArf>Eps*~NM`Xg1Cf}Km<_o$qGbE+Q?EWe@&eJnNGwVEwNH?)z)BT?^;)CHG9CXT-5oH zK|CgiANCOkL43@Yf_A^hXa z(pcG;goz{4`IO(e%NNzQO}CKB`~XC5do)W7LYJktJsyWX zwG%xD#k0orC}xh*8PC%M(%X40=_wx3+eGA|03G-BIgIE-;=W=!ImWYn(xq|~Ga3zr zcw0vvW5w)^K`3qazz=GiJ@9Ih{D6p23G{*wIo5822K&6eF{cMGKZ=W!PC9AI9800C z%K)BdB^=d!F`bXf*=z_WErH;Zn(Ky3!b$TC`8KMZ6I_(uk7>wrY;Ot|o}u@03qi;U zR2fm=JwDspR?{pu6b3QrZA$m{Jp7tMNP*fbXvErO?uINq0BjR?+{yV(zexdljLuSi zZ{yM%_^J$DG~!cm$TtEQ3n5>oxEwT;^&HiHNMV4ufRD@bzPOXV;H@zgLa-`^uq5FO zWECR}F8ip(A+aqmSp8Z|5K<0huAL=D070ko{nU+MCPYi+&Tu>>-myz^68DL=XDRKL zx(L87Ma6xh_iMMQTrQFt7gCiOJfnld2QF3#Ig9z(99@2zlrxKcQjp{X+<4J=Bx-87 z9+zNqKx-HxnGnB`lC!LM`M5t<(B}CegrZo;nXMO=GTD0Z?$VlaXC^qjoBS_YC~DR; zEj&;YTWL)ylAn|_#fSu$Y}3y3tJLL5K_ljo-=6x#L?^pxELi<>Q%N_`G@y)+$eHMD zv!M2~v{+eDl(l0~YL0_zQd(rSxQ(r*#cvFYGVmxt<(WjR~RXwUFqiNQn8eOqzt{Q}81b zrKUf!KrL!%9f=LIQxaEGf?7^gFC+0XtrMjwnw~HSB?S$u8$6izvN=1Mnb*P4a40F> zJ1G`W&|NAEnB!GJl`vQ6^0W`Hpi>Qxm?4Rw3f`~~V6&!CoaSCuQQu?iX018zo_}-DRQN!8=79?%}n%q}R?m=<~1Db|+20Gf+xrd|LDNJy#C!jRLEW809ULcf@=-kInDw+Y{F`a4{ z$QveI__bIhJi9WL^NF6)W@?E3uB0DrnCAQeN6hC&TsvAL8J=e~kd@>4(81KpZj#RI zx#wRJ-GCmIsPW4J)Mj`VXu=n_i_N*v0c z@>Rg{z;4q>iO5oZLeE>9Ja`|6z-uGl`iP_$v2_aPMcXstZa(%6JLXH@hE(f#!hoI( z0U8ehI^a`j6Q!8%XlH#)W5Uk3FCz;tqcvwtxI0B7f6Ko)4her!pu~I==T)syj%sm{ zepchBa&KdZ8Hwk=?2~G(rzk*UdPkX6c@v{z!Y~Utt-UCg{YOSJzZQtMZCmLd7WGjs z=n0`WBT#-I^xD*5#EIty)Q}@&lbR~jPWwPrLjRE#iqYq>5O^tBq)s>y$Bgb&AE$iC zO2@zNpgYIuWgFyV$VP`@fp6K90%G7WkjH4pmXQSJ|C-J@*}&VDDU%SL?}{QS`_c?Bw#@lcrXM? z+~@9TEpr3KPFxm!D3&&hi(R}wt>xPZMcw@sKg7g@LtUY$GCK`EB)GWiZw42uiEU66 z?@PknFenO_tUvo!5NX+cMi$DjKpF6%WE}rupd8W0X)MpKK`Lzu#GHSrJqVAo*OLug znzkd_I1N0zzOVEut|JcK{ifs_$9)MZO#Q84TI=kNl%swhb|*qcB%}KH6MiUf>%-;( z3E{?+_Ik!!SQkz#`NWP`z7A$_DsF@xUNnbV|m4VI5_ChP@$4prUA0D6;O=Qk0dB zV#2z(urBViuC1fjg`$&w#A(|!l@JedOc<6B$=D1a=exr|81cGLblPWK5E3RbzKo9e z(@$0-tohk}mTBRiQq0F9dutOEkJL?XfsmRKPFhkYCBnApK`exrk^s#L32nPYCM69R z_Qh@CSptvC%tS)0Tirb^EZHZ?iQU$d(}_rD24x|i&@+5ftXyhr&y#1y6YdueXE*L- z1aiiQcV2sbGecl^I_;M<52UxWpSao$osSC?QLa#|{*1<|6Nkk>#Htcmayk%{cnxmuzWbFVKCy9q%- z$w|N8kbV>Gy-o2XN8opvkS^`hL<)@&=`txDWrf*qNk=gu5Tr}Bp@}C#JG)fi)m)#- zxrU@8ewxVZ=LeRw4OA7upHoG22l)_=mz zcZ%GSNWW?<9lA&uVzuYr$gQ}X~Q4DurVv=CSng#%HzqSRA@8WI1e*u?A8 zhQ&nrCyJtP3#J1CV4oPQ>U>hPBqQ8?Qn+RT6a)Z>H`^Ilj1WB}`27U|kd(8S zP=3Yg&Q))IO0I~u=l^qiRhlKZO zzgbH9Rp^duD#u(usWN~g4(}1bj|D*52cU+{>iIG?z(1}BKW13ZDZ9x9Y_>k)ByAq3 z0-fyJnoFz4jO~7qS zP3@*{CG+<+sfN1)K4c}bDY3U=2t0ReW#Fk{pM55YGhdUf=R^9ilb&iMvQJ#lu(%9& z`MYzRlJYxG3Qv>Lkvp$!*c3?Ts>?C)*>*otT|_#7JYBa>a;8<*%}_X|+J&NkhIk5EA@bW%{eDfv)_&Oi`S$=$e= zwaINz9Dof<2`O_|ex|f>{E)yd2xju18h~u%iWQ>FQk;TPbf-n)A)W__O zHd8qu!rLcKVM4feV>4J4#A*v78HJU)`?%I;v#6qQQEm5k>(?sCgh-*S5BqFJQu|DlS z%M?d;etga7eO&ZDA2KUc@+D|B%uW-eM01{|7MFGBQ?$*cvyY53X=f%}V$$1TA7>DX z?8L&eRPTq~v7h4g8F%GzigTox57~}1)!B1Y?`vS5*1iSfnpy&XqzQb@D!ibK>N3)trE(hgi334 zffmIa8IH*w)H26U+BI>CAC5_B0LtP`+vCz!MY_L9E#mF-rv~SkKuHJ`rASGAHb?ah zJQXYccKZyeftQe|mh`de3Qzg=|5~&p37vUFO8C+S<+u;!A4rRs(3b7iR&m$ndcP;J zaj;v9f@ssQ-}WC$G#&CKm>1F72&>BerC(1?9i&Cq;^O%yrR~3vJdvkyr`)Aq`$8Yp zLJeEW0;MT!V^S|Bcc-MxE+KwPdrUlA6W^YddMCu9ZcDwo)Vm-Qf#7mW>b)e9>9Dl8 zD0l61O7G|hF~#pmu&H&Z$kb8kAUjQ80~#w0%)B4;z#1?%tda zCD#qg%T!OqOm9o)+Of zE?rtsW1{@_8N2-<;N92NOvyBrnHwnxhdBA1;%#rky0YnQG{nRw1iwRiuwr_|oh0t>$EcDJyMfd=e(K4jFk2i@DfctZuexdgHx9-o66sEYJIWjA+Q-E@gf`#q>KU zuCyrq+HD33=ygY*N2#8n*Y-Q>>%oYTzPHnzwXS_bd)p57uFn~UJ)q$}N8nZle}lZX zk0I@DjJDe`aT}Ftf6kCkWzMJ4?&PqO7jbCY4c@kQ{{yWD-lGdsE~a6R2E>GQAdhs| zM|Bl|yjY&yj0f7`u~Pr4T`|5PR4P3kb|#{Xx40lw+E=h-RHp4A3_OJGdI*tP-Wq7Y~oTCzUx+n!x&(=hwcP|*1ZM%ZH+ z4n;|Mh(TH2A#Ewf2IqY23(i!S5f7~%eqs}^0sko%i(fpX%*Eb&#{GP^&f|XP85!)^ zVbBR-Y$3!r-6t$f=c>!&U?NjSR1^e_u#HbPW9)c9P3=T58TScMhGM9Ob>W81`YdYs z5S6lfsM6vE>=Qv2Av{%2va^I+}-)6-vQ~@-RC>Us}zNh$$_JezIab-Cq)zi zbPCD}?~vAKqaZ~wu$(wXyLeg%QH!IJS`D`I{(}y|NBf*(!h3}ay-Go6%_{eq)Kr=Q zIrtdZ$p#**gyjrV5@Efw!_u!EOD3et=Vbb1P&_NYEVa$1jUvVLUGI_OFo)O1jd+M; zl$Rot{8hU-1H??fEb}jelF)NH-L_rZ=voJAVcAlr%~%;(Ej}Pz81cgi*PnUJF=x)A-i z_@QCZm$n76wl_Jwq}_u_?N!+ug4#LJh@#xh`cN#XF(0*Pc>6@#+uH6GHB)VWAo0Vt zhzmt8)7b>rb=@gm?vHB=FpQlPM{9ZTiu4xvz47duX~8e%onl+HqOeYjR{`dDX!((p zStxdf>M@yx;w@KI3XfCD4Wg2!aU{R4Q+ae1EW(fuFbv4qEccr5V!TuA!~JPtbdsr>~!et^d* zJdWXUr0xDJ-#?4TJRbM({Vd$GM*&Jbnw0aXcR6`YCQ7gtR+`#{?cze4mcDm|l|eD|kGL$HREcGTa#7CqBH) z_YW~%F~tYcaSiK3rY*rbaSV?KS%$!M3BLr_eTwTAx$XhQ2QpnvLk2+AZQ=D77?<|C zq*G}CCHt7dY; z-)+SQbIh`R7{j4~BU?-=KU^n)^M^ z?E>b}A!P;Hzl;jcLD^Z7@t9S12TGsITxXnhInH>2(m5@+_BLO0@S-+*8J9HoV`O^{ zk0%(XH_$Vw)+jewg}1-vG;boa-mJKE;4;qgh9PloxL z08sVc;Ok+wd#xL~JstORTjEVx(V=0)83x&7mF+mIa0m7op#0Ja_Jdi+HzfGlz!*_J zPQ%Estr!>wx&L8BxAiAUr>*Hf&Gy;emVDy`%OK8e?y?_N z1In&}ZOpbw^1UqgmlPecyrQ^p6lf523-wy-P>k`O5Z+tb>Oe75*FVDe#F$5u%#Q^7 zEb{H&VZ8~I-_z|5u@3~Mb%OOe#r>Feqs)&yQ0{w6!JlN^1IFhH>(gPTYmD_T$^6x^ zRLdw}{UJW?16qu^h4I$r7BOxg7rE>H2LU*T008FyB->5EeH;K#IhuiYkntF0cmrVl z`-sR_^C`{r41$i|CdW9)FrVbMCT}vf4vdenYqCupW3&v2mj(8xIqv%))BOauG594} zhB1Z*Y=Z}t9cem~43FyN85ZSdmzb6jJ|;x(b^Z}!-+Dm71eJRRY(M(}RDRSB!`MNN z+wKP)gAcRpC{LPYzw5TiGHjCle$cUZjN46eU+1~r2-6;i+sq#=3)9~oWwW=HKd1g? zz{bxQ*u2rmFv&EJa=+x`_bFe1Iv!jOp#2YYOfzted`)~!F�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

NyI_R_n>4eNE3J1-v+m1&-=a&<?+3W@06Hk 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 literal 35371 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 Date: Fri, 13 Sep 2024 17:58:11 -0400 Subject: [PATCH 02/45] WIP campaign difficulty dialog --- .github/workflows/pr.yml | 2 +- core/assets/bundles/bundle.properties | 14 +-- core/src/mindustry/ai/WaveSpawner.java | 13 ++- core/src/mindustry/content/Blocks.java | 12 +-- core/src/mindustry/content/Planets.java | 2 + core/src/mindustry/core/Control.java | 4 +- core/src/mindustry/core/Logic.java | 6 +- core/src/mindustry/game/CampaignRules.java | 15 ++++ core/src/mindustry/game/Difficulty.java | 26 ++++++ core/src/mindustry/game/Universe.java | 2 +- core/src/mindustry/type/Planet.java | 34 +++++++- .../ui/dialogs/CampaignRulesDialog.java | 86 +++++++++++++++++++ .../ui/dialogs/CustomRulesDialog.java | 2 +- .../mindustry/ui/dialogs/PlanetDialog.java | 13 ++- core/src/mindustry/world/meta/BlockFlag.java | 2 +- 15 files changed, 204 insertions(+), 29 deletions(-) create mode 100644 core/src/mindustry/game/CampaignRules.java create mode 100644 core/src/mindustry/game/Difficulty.java create mode 100644 core/src/mindustry/ui/dialogs/CampaignRulesDialog.java diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index eb2dcff192d5..71185f740f68 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -22,7 +22,7 @@ jobs: - name: Run unit tests and build JAR run: ./gradlew desktop:dist - name: Upload desktop JAR for testing - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Desktop JAR (zipped) path: desktop/build/libs/Mindustry.jar diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 28645744579d..c27355fb688d 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -197,6 +197,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nMore difficult. Higher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended, more content.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Researched techtree = Tech Tree techtree.select = Tech Tree Selection @@ -800,6 +801,11 @@ threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication + planets = Planets planet.serpulo.name = Serpulo @@ -1172,12 +1178,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Scaling setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Always Diagonal Placement -setting.difficulty.training = Training -setting.difficulty.easy = Easy -setting.difficulty.normal = Normal -setting.difficulty.hard = Hard -setting.difficulty.insane = Insane -setting.difficulty.name = Difficulty: setting.screenshake.name = Screen Shake setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1397,6 +1397,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index e23dbbff5e00..58f770f20df7 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -66,12 +66,19 @@ public void spawnEnemies(){ if(group.type == null) continue; int spawned = group.getSpawned(state.wave - 1); + if(spawned == 0) continue; + + if(state.isCampaign()){ + spawned = Math.max(1, Mathf.round(spawned * state.getPlanet().campaignRules.difficulty.enemySpawnMultiplier)); + } + + int spawnedf = spawned; if(group.type.flying){ float spread = margin / 1.5f; eachFlyerSpawn(group.spawn, (spawnX, spawnY) -> { - for(int i = 0; i < spawned; i++){ + for(int i = 0; i < spawnedf; i++){ Unit unit = group.createUnit(state.rules.waveTeam, state.wave - 1); unit.set(spawnX + Mathf.range(spread), spawnY + Mathf.range(spread)); spawnEffect(unit); @@ -82,7 +89,7 @@ public void spawnEnemies(){ eachGroundSpawn(group.spawn, (spawnX, spawnY, doShockwave) -> { - for(int i = 0; i < spawned; i++){ + for(int i = 0; i < spawnedf; i++){ Tmp.v1.rnd(spread); Unit unit = group.createUnit(state.rules.waveTeam, state.wave - 1); @@ -153,7 +160,7 @@ private void eachGroundSpawn(int filterPos, SpawnConsumer cons){ private void eachFlyerSpawn(int filterPos, Floatc2 cons){ boolean airUseSpawns = state.rules.airUseSpawns; - + for(Tile tile : spawns){ if(filterPos != -1 && filterPos != tile.pos()) continue; diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 873e1a9d45ae..f3a2d9332b8c 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -156,7 +156,7 @@ public class Blocks{ //payloads payloadConveyor, payloadRouter, reinforcedPayloadConveyor, reinforcedPayloadRouter, payloadMassDriver, largePayloadMassDriver, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader, - + //logic message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank, canvas, reinforcedMessage, @@ -1282,7 +1282,7 @@ public static void load(){ itemCapacity = 0; consumePower(100f / 60f); }}; - + slagHeater = new HeatProducer("slag-heater"){{ requirements(Category.crafting, with(Items.tungsten, 50, Items.oxide, 20, Items.beryllium, 20)); @@ -3405,7 +3405,7 @@ Items.surgeAlloy, new MissileBulletType(3.7f, 18){{ lightningLength = 10; }} ); - + shoot = new ShootBarrel(){{ barrels = new float[]{ -4, -1.25f, 0, @@ -5326,7 +5326,7 @@ Items.surgeAlloy, new BasicBulletType(7f, 250){{ requirements(Category.units, with(Items.copper, 150, Items.lead, 130, Items.metaglass, 120)); plans = Seq.with( new UnitPlan(UnitTypes.risso, 60f * 45f, with(Items.silicon, 20, Items.metaglass, 35)), - new UnitPlan(UnitTypes.retusa, 60f * 50f, with(Items.silicon, 15, Items.metaglass, 25, Items.titanium, 20)) + new UnitPlan(UnitTypes.retusa, 60f * 35f, with(Items.silicon, 15, Items.titanium, 20)) ); size = 3; consumePower(1.2f); @@ -5930,7 +5930,7 @@ Items.surgeAlloy, new BasicBulletType(7f, 250){{ worldCell = new MemoryBlock("world-cell"){{ requirements(Category.logic, BuildVisibility.worldProcessorOnly, with()); - + targetable = false; privileged = true; memoryCapacity = 128; @@ -5939,7 +5939,7 @@ Items.surgeAlloy, new BasicBulletType(7f, 250){{ worldMessage = new MessageBlock("world-message"){{ requirements(Category.logic, BuildVisibility.worldProcessorOnly, with()); - + targetable = false; privileged = true; }}; diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index 7eec1f10b0f6..a37488943c43 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -85,6 +85,8 @@ public static void load(){ r.coreDestroyClear = true; r.onlyDepositCore = true; }; + campaignRuleDefaults.fog = true; + campaignRuleDefaults.showSpawns = true; unlockedOnLand.add(Blocks.coreBastion); }}; diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index bc730c44c41c..bdf8ab573c90 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -16,9 +16,9 @@ import mindustry.content.TechTree.*; import mindustry.core.GameState.*; import mindustry.entities.*; +import mindustry.game.*; import mindustry.game.EventType.*; import mindustry.game.Objectives.*; -import mindustry.game.*; import mindustry.game.Saves.*; import mindustry.gen.*; import mindustry.input.*; @@ -30,7 +30,6 @@ import mindustry.type.*; import mindustry.ui.dialogs.*; import mindustry.world.*; -import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.CoreBlock.*; import java.io.*; @@ -441,6 +440,7 @@ void playSector(@Nullable Sector origin, Sector sector, WorldReloader reloader){ state.wave = 1; //set up default wave time state.wavetime = state.rules.initialWaveSpacing <= 0f ? (state.rules.waveSpacing * (sector.preset == null ? 2f : sector.preset.startWaveTimeMultiplier)) : state.rules.initialWaveSpacing; + state.wavetime *= sector.planet.campaignRules.difficulty.waveTimeMultiplier; //reset captured state sector.info.wasCaptured = false; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index d1c7c5ca602c..bbf4d7f3edd8 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -92,7 +92,7 @@ public Logic(){ if(wavesPassed > 0){ //simulate wave counter moving forward state.wave += wavesPassed; - state.wavetime = state.rules.waveSpacing; + state.wavetime = state.rules.waveSpacing * state.getPlanet().campaignRules.difficulty.waveTimeMultiplier; SectorDamage.applyCalculatedDamage(); } @@ -221,7 +221,7 @@ private void checkOverlappingPlans(Team team, Tile tile){ public void play(){ state.set(State.playing); //grace period of 2x wave time before game starts - state.wavetime = state.rules.initialWaveSpacing <= 0 ? state.rules.waveSpacing * 2 : state.rules.initialWaveSpacing; + state.wavetime = (state.rules.initialWaveSpacing <= 0 ? state.rules.waveSpacing * 2 : state.rules.initialWaveSpacing) * (state.isCampaign() ? state.getPlanet().campaignRules.difficulty.waveTimeMultiplier : 1f);; Events.fire(new PlayEvent()); //add starting items @@ -270,7 +270,7 @@ public void skipWave(){ public void runWave(){ spawner.spawnEnemies(); state.wave++; - state.wavetime = state.rules.waveSpacing; + state.wavetime = state.rules.waveSpacing * (state.isCampaign() ? state.getPlanet().campaignRules.difficulty.waveTimeMultiplier : 1f); Events.fire(new WaveEvent()); } diff --git a/core/src/mindustry/game/CampaignRules.java b/core/src/mindustry/game/CampaignRules.java new file mode 100644 index 000000000000..c0be0548a541 --- /dev/null +++ b/core/src/mindustry/game/CampaignRules.java @@ -0,0 +1,15 @@ +package mindustry.game; + +public class CampaignRules{ + public Difficulty difficulty = Difficulty.normal; + public boolean fog; + public boolean showSpawns; + public boolean sectorInvasion; + + public void apply(Rules rules){ + rules.staticFog = rules.fog = fog; + rules.showSpawns = showSpawns; + rules.teams.get(rules.waveTeam).blockHealthMultiplier = difficulty.enemyHealthMultiplier; + rules.teams.get(rules.waveTeam).unitHealthMultiplier = difficulty.enemyHealthMultiplier; + } +} diff --git a/core/src/mindustry/game/Difficulty.java b/core/src/mindustry/game/Difficulty.java new file mode 100644 index 000000000000..3018f9c3f14b --- /dev/null +++ b/core/src/mindustry/game/Difficulty.java @@ -0,0 +1,26 @@ +package mindustry.game; + +import arc.*; + +public enum Difficulty{ + //TODO these need tweaks + easy(1f, 0.75f, 1.5f), + normal(1f, 1f, 1f), + hard(1.25f, 1.5f, 0.6f), + eradication(1.5f, 2f, 0.4f); + + public static final Difficulty[] all = values(); + + //TODO add more fields + public float enemyHealthMultiplier, enemySpawnMultiplier, waveTimeMultiplier; + + Difficulty(float enemyHealthMultiplier, float enemySpawnMultiplier, float waveTimeMultiplier){ + this.enemySpawnMultiplier = enemySpawnMultiplier; + this.waveTimeMultiplier = waveTimeMultiplier; + this.enemyHealthMultiplier = enemyHealthMultiplier; + } + + public String localized(){ + return Core.bundle.get("difficulty." + name()); + } +} diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 4aa77d8be7d4..a22d073f9d3c 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -252,7 +252,7 @@ public void runTurn(){ } //queue random invasions - if(!sector.isAttacked() && sector.planet.allowSectorInvasion && sector.info.minutesCaptured > invasionGracePeriod && sector.info.hasSpawns){ + if(!sector.isAttacked() && sector.planet.campaignRules.sectorInvasion && sector.info.minutesCaptured > invasionGracePeriod && sector.info.hasSpawns){ int count = sector.near().count(s -> s.hasEnemyBase() && !s.hasBase()); //invasion chance depends on # of nearby bases diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 047a288093c9..23cc55efecc8 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -19,6 +19,7 @@ import mindustry.graphics.*; import mindustry.graphics.g3d.*; import mindustry.graphics.g3d.PlanetGrid.*; +import mindustry.io.*; import mindustry.maps.generators.*; import mindustry.world.*; import mindustry.world.blocks.*; @@ -127,15 +128,21 @@ public class Planet extends UnlockableContent{ public boolean allowWaves = false; /** If false, players are unable to land on this planet's numbered sectors. */ public boolean allowLaunchToNumbered = true; + /** If true, the player is allowed to change the difficulty/rules in the planet UI. */ + public boolean allowCampaignRules = false; /** Icon as displayed in the planet selection dialog. This is a string, as drawables are null at load time. */ public String icon = "planet"; /** Plays in the planet dialog when this planet is selected. */ public Music launchMusic = Musics.launch; /** Default core block for launching. */ public Block defaultCore = Blocks.coreShard; + /** Global difficulty/modifier settings for this planet's campaign. */ + public CampaignRules campaignRules = new CampaignRules(); + /** Defaults applied to the rules. */ + public CampaignRules campaignRuleDefaults = new CampaignRules(); /** Sets up rules on game load for any sector on this planet. */ public Cons ruleSetter = r -> {}; - /** Parent body that this planet orbits around. If null, this planet is considered to be in the middle of the solar system.*/ + /** Parent body that this planet orbits around. If null, this planet is considered to be in the middle of the solar system. */ public @Nullable Planet parent; /** The root parent of the whole solar system this planet is in. */ public Planet solarSystem; @@ -183,6 +190,7 @@ public Planet(String name, Planet parent, float radius){ //calculate solar system for(solarSystem = this; solarSystem.parent != null; solarSystem = solarSystem.parent); + allowCampaignRules = isVanilla(); } public Planet(String name, Planet parent, float radius, int sectorSize){ @@ -200,17 +208,38 @@ public Planet(String name, Planet parent, float radius, int sectorSize){ } } + public void saveRules(){ + Core.settings.putJson(name + "-campaign-rules", campaignRules); + } + + public void loadRules(){ + campaignRules = Core.settings.getJson(name + "-campaign-rules", CampaignRules.class, () -> campaignRules); + } + public @Nullable Sector getStartSector(){ return sectors.size == 0 ? null : sectors.get(startSector); } public void applyRules(Rules rules){ + applyRules(rules, false); + } + + public void applyRules(Rules rules, boolean customGame){ ruleSetter.get(rules); rules.attributes.clear(); rules.attributes.add(defaultAttributes); rules.env = defaultEnv; rules.planet = this; + + if(!customGame){ + campaignRules.apply(rules); + } + } + + public void applyDefaultRules(CampaignRules rules){ + JsonIO.copy(campaignRuleDefaults, rules); + rules.sectorInvasion = allowSectorInvasion; } public @Nullable Sector getLastSector(){ @@ -327,6 +356,9 @@ public void load(){ @Override public void init(){ + applyDefaultRules(campaignRules); + loadRules(); + if(techTree == null){ techTree = TechTree.roots.find(n -> n.planet == this); } diff --git a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java new file mode 100644 index 000000000000..0805234ef8b9 --- /dev/null +++ b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java @@ -0,0 +1,86 @@ +package mindustry.ui.dialogs; + +import arc.*; +import arc.func.*; +import arc.scene.ui.*; +import arc.scene.ui.layout.*; +import mindustry.*; +import mindustry.game.*; +import mindustry.gen.*; +import mindustry.type.*; +import mindustry.ui.*; + +public class CampaignRulesDialog extends BaseDialog{ + Planet planet; + Table current; + + public CampaignRulesDialog(){ + super("@campaign.difficulty"); + + addCloseButton(); + + hidden(() -> { + if(planet != null){ + planet.saveRules(); + + if(Vars.state.isGame() && Vars.state.isCampaign() && Vars.state.getPlanet() == planet){ + planet.campaignRules.apply(Vars.state.rules); + Call.setRules(Vars.state.rules); + } + } + }); + } + + void rebuild(){ + CampaignRules rules = planet.campaignRules; + cont.clear(); + + cont.top().pane(inner -> { + inner.top().left().defaults().fillX().left().pad(5); + current = inner; + + current.table(Tex.button, t -> { + t.margin(10f); + var group = new ButtonGroup<>(); + var style = Styles.flatTogglet; + + t.defaults().size(140f, 50f); + + for(Difficulty diff : Difficulty.all){ + t.button(diff.localized(), style, () -> { + rules.difficulty = diff; + }).group(group).checked(b -> rules.difficulty == diff); + } + }).left().fill(false).expand(false, false).row(); + + if(planet.allowSectorInvasion){ + check("@rules.invasions", b -> rules.sectorInvasion = b, () -> rules.sectorInvasion); + } + + check("@rules.fog", b -> rules.fog = b, () -> rules.fog); + check("@rules.showspawns", b -> rules.showSpawns = b, () -> rules.showSpawns); + }).growY(); + } + + public void show(Planet planet){ + this.planet = planet; + + rebuild(); + show(); + } + + void check(String text, Boolc cons, Boolp prov){ + check(text, cons, prov, () -> true); + } + + void check(String text, Boolc cons, Boolp prov, Boolp condition){ + String infoText = text.substring(1) + ".info"; + var cell = current.check(text, cons).checked(prov.get()).update(a -> a.setDisabled(!condition.get())); + if(Core.bundle.has(infoText)){ + cell.tooltip(text + ".info"); + } + cell.get().left(); + current.row(); + } + +} diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 247625c24864..4905cbad3e26 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -329,7 +329,7 @@ void setup(){ for(Planet planet : content.planets().select(p -> p.accessible && p.visible && p.isLandable())){ t.button(planet.localizedName, style, () -> { - planet.applyRules(rules); + planet.applyRules(rules, true); }).group(group).checked(b -> rules.planet == planet); if(t.getChildren().size % 3 == 0){ diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 6ef9bb6397a1..1a040bc00a33 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -67,10 +67,11 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ public Label hoverLabel = new Label(""); private Texture[] planetTextures; + private CampaignRulesDialog campaignRules = new CampaignRulesDialog(); public PlanetDialog(){ super("", Styles.fullDialog); - + state.renderer = this; state.drawUi = true; @@ -387,7 +388,7 @@ boolean canSelect(Sector sector){ //preset sectors can only be selected once unlocked if(sector.preset != null){ TechNode node = sector.preset.techNode; - return node == null || node.parent == null || (node.parent.content.unlocked() && (!(node.parent.content instanceof SectorPreset preset) || preset.sector.hasBase())); + return sector.preset.unlocked() || node == null || node.parent == null || (node.parent.content.unlocked() && (!(node.parent.content instanceof SectorPreset preset) || preset.sector.hasBase())); } return sector.planet.generator != null ? @@ -474,7 +475,7 @@ public void renderSectors(Planet planet){ if(state.uiAlpha > 0.001f){ for(Sector sec : planet.sectors){ if(sec.hasBase()){ - if(planet.allowSectorInvasion){ + if(planet.campaignRules.sectorInvasion){ for(Sector enemy : sec.near()){ if(enemy.hasEnemyBase()){ planets.drawArc(planet, enemy.tile.v, sec.tile.v, Team.crux.color.write(Tmp.c2).a(state.uiAlpha), Color.clear, 0.24f, 110f, 25); @@ -612,6 +613,10 @@ public void draw(){ t.top().left(); ScrollPane pane = new ScrollPane(null, Styles.smallPane); t.add(pane).colspan(2).row(); + t.button("@campaign.difficulty", Icon.bookSmall, () -> { + campaignRules.show(state.planet); + }).margin(12f).size(208f, 40f).padTop(12f).visible(() -> state.planet.allowCampaignRules).row(); + t.add().height(64f); //padding for close button Table starsTable = new Table(Styles.black); pane.setWidget(starsTable); pane.setScrollingDisabled(true, false); @@ -1133,7 +1138,7 @@ void updateSelected(){ if(sector.isAttacked()){ addSurvivedInfo(sector, stable, false); - }else if(sector.hasBase() && sector.planet.allowSectorInvasion && sector.near().contains(Sector::hasEnemyBase)){ + }else if(sector.hasBase() && sector.planet.campaignRules.sectorInvasion && sector.near().contains(Sector::hasEnemyBase)){ stable.add("@sectors.vulnerable"); stable.row(); }else if(!sector.hasBase() && sector.hasEnemyBase()){ diff --git a/core/src/mindustry/world/meta/BlockFlag.java b/core/src/mindustry/world/meta/BlockFlag.java index 314c0424b6d6..257fa0c20a8c 100644 --- a/core/src/mindustry/world/meta/BlockFlag.java +++ b/core/src/mindustry/world/meta/BlockFlag.java @@ -32,5 +32,5 @@ public enum BlockFlag{ public final static BlockFlag[] all = values(); /** Values for logic only. Filters out some internal flags. */ - public final static BlockFlag[] allLogic = {core, storage, generator, turret, factory, repair, battery, reactor}; + public final static BlockFlag[] allLogic = {core, storage, generator, turret, factory, repair, battery, reactor, drill}; } From a0c567b92179a067e90da632f96c602bba5b30b5 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 13 Sep 2024 21:59:16 +0000 Subject: [PATCH 03/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 13 +++++++------ core/assets/bundles/bundle_bg.properties | 13 +++++++------ core/assets/bundles/bundle_ca.properties | 13 +++++++------ core/assets/bundles/bundle_cs.properties | 13 +++++++------ core/assets/bundles/bundle_da.properties | 13 +++++++------ core/assets/bundles/bundle_de.properties | 13 +++++++------ core/assets/bundles/bundle_es.properties | 13 +++++++------ core/assets/bundles/bundle_et.properties | 13 +++++++------ core/assets/bundles/bundle_eu.properties | 13 +++++++------ core/assets/bundles/bundle_fi.properties | 13 +++++++------ core/assets/bundles/bundle_fil.properties | 13 +++++++------ core/assets/bundles/bundle_fr.properties | 13 +++++++------ core/assets/bundles/bundle_hu.properties | 13 +++++++------ core/assets/bundles/bundle_id_ID.properties | 13 +++++++------ core/assets/bundles/bundle_it.properties | 13 +++++++------ core/assets/bundles/bundle_ja.properties | 13 +++++++------ core/assets/bundles/bundle_ko.properties | 13 +++++++------ core/assets/bundles/bundle_lt.properties | 13 +++++++------ core/assets/bundles/bundle_nl.properties | 13 +++++++------ core/assets/bundles/bundle_nl_BE.properties | 13 +++++++------ core/assets/bundles/bundle_pl.properties | 13 +++++++------ core/assets/bundles/bundle_pt_BR.properties | 13 +++++++------ core/assets/bundles/bundle_pt_PT.properties | 13 +++++++------ core/assets/bundles/bundle_ro.properties | 13 +++++++------ core/assets/bundles/bundle_ru.properties | 13 +++++++------ core/assets/bundles/bundle_sr.properties | 13 +++++++------ core/assets/bundles/bundle_sv.properties | 13 +++++++------ core/assets/bundles/bundle_th.properties | 13 +++++++------ core/assets/bundles/bundle_tk.properties | 13 +++++++------ core/assets/bundles/bundle_tr.properties | 13 +++++++------ core/assets/bundles/bundle_uk_UA.properties | 13 +++++++------ core/assets/bundles/bundle_vi.properties | 13 +++++++------ core/assets/bundles/bundle_zh_CN.properties | 13 +++++++------ core/assets/bundles/bundle_zh_TW.properties | 13 +++++++------ 34 files changed, 238 insertions(+), 204 deletions(-) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 0906453b03d9..091b8e38b7e7 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -189,6 +189,7 @@ campaign.select = Выбраць Пачатковую Кампанію campaign.none = [lightgray]Выберыце з якой планеты пачаць.\nГэта можна змяніць ў любы час. campaign.erekir = Навей, больш удасканаленага кантэнту. Больш лінейнае праходжанне кампаніі.\n\nБольш якасныя карты і агульны вопыт. campaign.serpulo = Старэйшы кантэнт; класічны вопыт. Больш адкрытая.\n\nЗусім не збалансаваныя карты і механікі кампаніі. Менш удасканаленага. +campaign.difficulty = Difficulty completed = [accent]Завершаны techtree = Дрэва\n Тэхналогій techtree.select = Выбар Дрэва Тэхналогій @@ -774,6 +775,10 @@ threat.medium = Сярэдняя threat.high = Высокая threat.extreme = Экстрымальная threat.eradication = Вынішчэнне +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Планеты planet.serpulo.name = Серпуло @@ -1142,12 +1147,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Маштаб карыстальніцкага інтэрфейсу [lightgray] (перазапусьціцца)[] setting.uiscale.description = Каб змены ўжыліся патрабуецца перазапуск. setting.swapdiagonal.name = Заўсёды дыяганальнае размяшчэнне -setting.difficulty.training = Навучанне -setting.difficulty.easy = Лёгкая -setting.difficulty.normal = Нармальны -setting.difficulty.hard = Складаная -setting.difficulty.insane = Вар’яцкая -setting.difficulty.name = Складанасць: setting.screenshake.name = Трасяніна экрана setting.bloomintensity.name = Інтэнсіўнасць Цвету setting.bloomblur.name = Размыты Цвет @@ -1364,6 +1363,8 @@ rules.title.teams = Кманды rules.title.planet = Планета rules.lighting = Асвятленне rules.fog = Туман Вайны +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Агонь rules.anyenv = <Любы> rules.explosions = Падрыўныя пашкоджанні Блока/Адзінкі diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index aa59e73f4ed8..904203a69e06 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -193,6 +193,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Завършено techtree = Tech Tree techtree.select = Tech Tree Selection @@ -782,6 +783,10 @@ threat.medium = Средна threat.high = Висока threat.extreme = Екстремна threat.eradication = Унищожителна +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Планети @@ -1153,12 +1158,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Размер на Интерфейсът[lightgray] (изисква рестарт)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Винаги Диагонално Поставяне -setting.difficulty.training = Тренировка -setting.difficulty.easy = Лесно -setting.difficulty.normal = Нормално -setting.difficulty.hard = Трудно -setting.difficulty.insane = Безумно -setting.difficulty.name = Трудност: setting.screenshake.name = Клатене на Екрата setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1375,6 +1374,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Светкавици rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Огън rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 0ab0af8c3890..7c62a873fe6d 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -193,6 +193,7 @@ campaign.select = Trieu la campanya inicial campaign.none = [lightgray]Trieu en quin planeta voleu començar.\nEs pot canviar en qualsevol moment. campaign.erekir = [accent]Recomanat per a jugadors novells.[]\n\nContingut revisat nou. Una campanya de progressió més o menys lineal.\n\nMapes de qualitat més alta i experiència més satisfactòria. campaign.serpulo = [scarlet]No recomanat per a jugadors novells.[]\n\nContingut antic; l’experiència clàssica. Campanya més oberta.\n\nPotser els mapes i mecàniques de la campanya no estan massa equilibrats. Contingut en general menys polit que el d’Erekir. +campaign.difficulty = Difficulty completed = [accent]Completat techtree = Arbre tecnològic techtree.select = Selecció de l’arbre tecnològic @@ -786,6 +787,10 @@ threat.medium = Mitjana threat.high = Alta threat.extreme = Extrema threat.eradication = Erradicació +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planetes @@ -1156,12 +1161,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Escala de la interfície setting.uiscale.description = Cal reiniciar perquè s’apliquin els canvis. setting.swapdiagonal.name = Permet sempre construir en diagonal -setting.difficulty.training = Entrenament -setting.difficulty.easy = Fàcil -setting.difficulty.normal = Normal -setting.difficulty.hard = Difícil -setting.difficulty.insane = Molt difícil -setting.difficulty.name = Dificultat: setting.screenshake.name = Sacseig de pantalla setting.bloomintensity.name = Intensitat de l’efecte «bloom» setting.bloomblur.name = Desenfocament «bloom» @@ -1378,6 +1377,8 @@ rules.title.teams = Equips rules.title.planet = Planeta rules.lighting = Il·luminació rules.fog = Amaga el terreny inexplorat +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Foc rules.anyenv = rules.explosions = Dany de les explosions als blocs/unitats diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index d6e155a6ff1e..f02c289756e2 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -193,6 +193,7 @@ campaign.select = Vybrat Začínající Kampaň campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Dokončeno[] techtree = Technologie techtree.select = Výběr Výzkumného Stromu @@ -784,6 +785,10 @@ threat.medium = Střední threat.high = Velké threat.extreme = Extrémní threat.eradication = Vyhlazující +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planety @@ -1155,12 +1160,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Škálování uživatelského rozhraní[lightgray] (je vyžadován restart)[] setting.uiscale.description = Pro aplikování změn, je potřeba restart. setting.swapdiagonal.name = Vždy pokládat úhlopříčně -setting.difficulty.training = Zácviková -setting.difficulty.easy = Lehká -setting.difficulty.normal = Normální -setting.difficulty.hard = Těžká -setting.difficulty.insane = Šílená -setting.difficulty.name = Obtížnost: setting.screenshake.name = Chvění obrazovky setting.bloomintensity.name = Intenzita Bloom setting.bloomblur.name = Rozmazání Bloom @@ -1377,6 +1376,8 @@ rules.title.teams = Týmy rules.title.planet = Planeta rules.lighting = Osvětlení rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Výstřel rules.anyenv = rules.explosions = Výbušné poškození bloku/jednotky diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 859cac0b8574..2fd355ce70d1 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Færdiggjort techtree = Teknologi træ techtree.select = Tech Tree Selection @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1144,12 +1149,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI-skalering[lightgray] (genstart kræves)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Altid diagonal placering -setting.difficulty.training = Træning -setting.difficulty.easy = Let -setting.difficulty.normal = Normal -setting.difficulty.hard = Svær -setting.difficulty.insane = Sindssyg -setting.difficulty.name = Sværhedsgrad: setting.screenshake.name = Skærm-ryst setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1366,6 +1365,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lys rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Ild rules.anyenv = rules.explosions = Blok/Enheds-eksplosionsskade diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 19cb5bf3de2b..5a5edf0d1697 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -196,6 +196,7 @@ campaign.select = Startkampagne auswählen campaign.none = [lightgray]Wähle einen Planeten, auf dem du starten möchtest.\nDies kannst du jederzeit ändern. campaign.erekir = Neuerer, besserer Inhalt. Größtenteils linearer Fortschritt.\n\nSchwieriger. Höhere Karten- und Spielqualität. campaign.serpulo = Ältere Inhalt; das klassische Spiel. Offener, mehr Inhalt. \n\nKarten und Spielmechanismen möglicherweise qualitativ schlechter und ohne Balance. +campaign.difficulty = Difficulty completed = [accent]Abgeschlossen techtree = Forschung techtree.select = Forschungsauswahl @@ -794,6 +795,10 @@ threat.medium = Mittel threat.high = Hoch threat.extreme = Extrem threat.eradication = Zerstörung +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planeten @@ -1166,12 +1171,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI-Skalierung setting.uiscale.description = Neustart erforderlich. setting.swapdiagonal.name = Immer diagonale Platzierung -setting.difficulty.training = Training -setting.difficulty.easy = Leicht -setting.difficulty.normal = Normal -setting.difficulty.hard = Schwer -setting.difficulty.insane = Verrückt -setting.difficulty.name = Schwierigkeit: setting.screenshake.name = Wackeleffekt setting.bloomintensity.name = Bloomstärke setting.bloomblur.name = Bloomunschärfe @@ -1388,6 +1387,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Blitze rules.fog = Kriegsnebel +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Feuer rules.anyenv = rules.explosions = Explosionsschaden diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 6e100da71792..a47b7057af55 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -193,6 +193,7 @@ campaign.select = Elegir campaña campaign.none = [lightgray]Elige un planeta donde empezar.\nPuedes cambiar en cualquier momento. campaign.erekir = [accent]Recomendado para nuevos jugadores.[]\n\nContenido más reciente y pulido. Progresión de campaña lineal.\n\nNiveles y experiencia de mayor calidad. campaign.serpulo = [scarlet]No recomendado para jugadores novatos.[]\n\nContenido más antiguo; La experiencia clásica. More open-ended.\n\nNiveles y mecánicas de juego potencialmente desequilibrados. +campaign.difficulty = Difficulty completed = [accent]Completado techtree = Investigaciones tecnológicas techtree.select = Selección de esquemas de tecnologías @@ -790,6 +791,10 @@ threat.medium = Media threat.high = Alta threat.extreme = Extrema threat.eradication = Erradicación +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planetas @@ -1162,12 +1167,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Escala de interfaz setting.uiscale.description = Es necesario reiniciar para aplicar los cambios. setting.swapdiagonal.name = Construir siempre en diagonal -setting.difficulty.training = Entrenamiento -setting.difficulty.easy = Fácil -setting.difficulty.normal = Normal -setting.difficulty.hard = Difícil -setting.difficulty.insane = Demencial -setting.difficulty.name = Dificultad: setting.screenshake.name = Vibración de pantalla setting.bloomintensity.name = Intensidad de desenfoque de Bloom setting.bloomblur.name = Difuminado de puntos de luz (Bloom) @@ -1384,6 +1383,8 @@ rules.title.teams = Equipos rules.title.planet = Planeta rules.lighting = Iluminación rules.fog = Ocultar terreno inexplorado (Fog of War) +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fuego rules.anyenv = rules.explosions = Daño de explosiones a bloques/unidades diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 47c6e6573e25..4289650bbc02 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Olemas techtree = Uurimispuu techtree.select = Tech Tree Selection @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1144,12 +1149,6 @@ setting.fpscap.text = {0} kaadrit/s setting.uiscale.name = Kasutajaliidese suurus[lightgray] (vajab mängu taaskäivitamist)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Paiguta alati diagonaalselt -setting.difficulty.training = Treening -setting.difficulty.easy = Lihtne -setting.difficulty.normal = Keskmine -setting.difficulty.hard = Raske -setting.difficulty.insane = Hullumeelne -setting.difficulty.name = Raskusaste: setting.screenshake.name = Ekraani värisemine setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1366,6 +1365,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 047ad0c794a1..abe6201974d7 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -190,6 +190,7 @@ campaign.select = Hautatu hasierako kanpaina campaign.none = [lightgray]hautatu hasteko planeta.\nHau edonoiz aldatu daiteke. campaign.erekir = [accent]Jokalari berrientzak aholkatua.[]\n\nEduki berriagoa eta landuagoa. Kanpaina aurreratze lineala.\n\nKalitate hobeko mapak eta esperientzia orokorra. campaign.serpulo = [scarlet]Ez aholkatua jokalari berrientzat.[]\n\nEduki zaharra; esperientzia klasikoa. Irekiagoa.\n\nAgian desorekatuak dauden mapak eta kanpainaren mekanikak. Ez horren landua. +campaign.difficulty = Difficulty completed = [accent]Ikertua @@ -777,6 +778,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1146,12 +1151,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Interfaze-eskala[lightgray] (berrabiarazi behar da)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Kokatu beti diagonalean -setting.difficulty.training = Entrenamendua -setting.difficulty.easy = Erraza -setting.difficulty.normal = Arrunta -setting.difficulty.hard = Zaila -setting.difficulty.insane = Zoramena -setting.difficulty.name = Zailtasuna: setting.screenshake.name = Pantailaren astindua setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1368,6 +1367,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index da90f63ad484..c93f65904f31 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Suoritettu techtree = Edistyspuu techtree.select = Edistyspuun valinta @@ -775,6 +776,10 @@ threat.medium = Kohtalainen threat.high = Korkea threat.extreme = Äärimmäinen threat.eradication = Täystuho +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planeetat planet.serpulo.name = Serpulo @@ -1143,12 +1148,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Koko[lightgray] (vaatii uudelleenkäynnistyksen)[] setting.uiscale.description = Muutosten toteuttaminen vaatii uudelleenkäynnistyksen setting.swapdiagonal.name = Aina vino korvaus -setting.difficulty.training = Treenaus -setting.difficulty.easy = Huoleton -setting.difficulty.normal = Haasteeton -setting.difficulty.hard = Taidonnäyte -setting.difficulty.insane = Hullun Vaikea -setting.difficulty.name = Vaikeustaso: setting.screenshake.name = Näytön keikkuminen setting.bloomintensity.name = Bloom-intensiteetti setting.bloomblur.name = Bloom-sumennus @@ -1365,6 +1364,8 @@ rules.title.teams = Joukkueet rules.title.planet = Planeetta rules.lighting = Salamointi rules.fog = Sodan sumu (Fog of War) +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Tuli rules.anyenv = rules.explosions = Palikkojen/Yksikköjen räjähdysvahinko diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index ddf46dbb044e..183dc8f99f79 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Completed techtree = Tech Tree techtree.select = Tech Tree Selection @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = Mataas threat.extreme = Sobra-sobra threat.eradication = Tiyak na talo sa hind handa +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Mga planeta planet.serpulo.name = Serpulo @@ -1143,12 +1148,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Scaling[lightgray] (restart required)[] setting.uiscale.description = Kinakailangan ang pag-restart upang mailapat ang mga pagbabago. setting.swapdiagonal.name = Palaging Diagonal na Placement -setting.difficulty.training = Training -setting.difficulty.easy = Easy -setting.difficulty.normal = Normal -setting.difficulty.hard = Hard -setting.difficulty.insane = Insane -setting.difficulty.name = Difficulty: setting.screenshake.name = Screen Shake setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1365,6 +1364,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 50f5f561273d..57ba9b25b9dc 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -197,6 +197,7 @@ campaign.select = Sélectionnez la Campagne de Départ campaign.none = [lightgray]Sélectionnez votre planète de départ.\nCela peut être changé à tout moment. campaign.erekir = Contenu récent et mieux travaillé. Une progression dans la campagne assez linéaire.\n\nPlus difficile. Des cartes et une expérience de qualité. campaign.serpulo = Contenu ancien, l'expérience classique de Mindustry. Avec plus de contenu et de possibilités.\n\nCartes et mécaniques de campagnes possiblement moins équilibrées. Moins travaillé. +campaign.difficulty = Difficulty completed = [accent]Complété techtree = Arbre technologique techtree.select = Sélection de l'Arbre technologique @@ -797,6 +798,10 @@ threat.medium = Normale threat.high = Grande threat.extreme = Extrême threat.eradication = Éradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planètes @@ -1168,12 +1173,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Échelle de l'interface setting.uiscale.description = Redémarrage du jeu nécessaire pour appliquer les changements. setting.swapdiagonal.name = Autoriser le placement en diagonale -setting.difficulty.training = Entraînement -setting.difficulty.easy = Facile -setting.difficulty.normal = Normal -setting.difficulty.hard = Difficile -setting.difficulty.insane = Extrême -setting.difficulty.name = Difficulté: setting.screenshake.name = Tremblement de l'Écran setting.bloomintensity.name = Intensité de l'effet de Bloom setting.bloomblur.name = Flou de l'effet de Bloom @@ -1392,6 +1391,8 @@ rules.title.teams = Équipes rules.title.planet = Planète rules.lighting = Éclairage rules.fog = Brouillard de Guerre +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Feu rules.anyenv = rules.explosions = Dégâts d'explosion des Blocs/Unités diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index ed60bdcc3666..e0cbbdadab39 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -197,6 +197,7 @@ campaign.select = Válassz ki egy kezdő hadjáratot campaign.none = [lightgray]Válassz egy bolygót a kezdéshez.\nEzt bármikor megváltoztathatod. campaign.erekir = Újabb, csiszoltabb tartalom. Többnyire lineáris játékmenet.\n\nSokkal nehezebb. Magasabb minőségű pályák és élmények. campaign.serpulo = Régebbi tartalom. A klasszikus élmény. Nyíltabb végű, több tartalommal.\n\nPotenciálisan kiegyensúlyozatlan pályák és hadjárat. Kevésbé csiszolt. +campaign.difficulty = Difficulty completed = [accent]Kész techtree = Technológia fa techtree.select = Technológia fa kiválasztása @@ -799,6 +800,10 @@ threat.medium = Közepes threat.high = Magas threat.extreme = Extrém threat.eradication = Irtózatos +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Bolygók @@ -1171,12 +1176,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Felület méretezése setting.uiscale.description = A módosítások érvénybe lépéséhez újraindítás szükséges. setting.swapdiagonal.name = Mindig átlós elhelyezés -setting.difficulty.training = Kiképzés -setting.difficulty.easy = Könnyű -setting.difficulty.normal = Normál -setting.difficulty.hard = Nehéz -setting.difficulty.insane = Őrült -setting.difficulty.name = Nehézség: setting.screenshake.name = Képernyő rázkódása setting.bloomintensity.name = Bloom intenzitása setting.bloomblur.name = Bloom elmosása @@ -1396,6 +1395,8 @@ rules.title.teams = Csapatok rules.title.planet = Bolygó rules.lighting = Világítás rules.fog = Köd +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Tűz rules.anyenv = rules.explosions = Épület/egység robbanási sebzése diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 412af5eef497..8601f74f95b9 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -197,6 +197,7 @@ campaign.select = Pilih untuk Memulai Kampanye campaign.none = [lightgray]Pilih planet untuk memulai.\nPilihan ini dapat diubah setiap saat. campaign.erekir = Konten baru yang disempurnakan. Kemajuan kampanye lebih linier.\n\nKualitas peta yang tinggi dan pengalaman lebih mantap. campaign.serpulo = Konten lawas; pengalaman klasik. Lebih terbuka dan banyak konten.\n\nPeta dan mekanisme kampanye yang berpotensi tidak seimbang. Kurang halus +campaign.difficulty = Difficulty completed = [accent]Terselesaikan techtree = Pohon Teknologi techtree.select = Pemilihan Pohon Teknologi @@ -799,6 +800,10 @@ threat.medium = Sedang threat.high = Tinggi threat.extreme = Berbahaya threat.eradication = Pemusnahan +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planet @@ -1171,12 +1176,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Skala UI setting.uiscale.description = Mulai ulang diperlukan untuk menerapkan perubahan. setting.swapdiagonal.name = Penaruhan Selalu Diagonal -setting.difficulty.training = Latihan -setting.difficulty.easy = Mudah -setting.difficulty.normal = Normal -setting.difficulty.hard = Susah -setting.difficulty.insane = Sangat sulit -setting.difficulty.name = Tingkat Kesulitan: setting.screenshake.name = Layar Getar setting.bloomintensity.name = Intensitas Bloom setting.bloomblur.name = Blur Bloom @@ -1395,6 +1394,8 @@ rules.title.teams = Tim rules.title.planet = Planet rules.lighting = Penerangan rules.fog = Kabut Perang +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Api rules.anyenv = rules.explosions = Kekuatan Ledakan Blok/Unit diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index dda8fdf7a2a9..64db91f017f7 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -191,6 +191,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Completato techtree = Albero Scoperte techtree.select = Seleziona albero delle scoperte @@ -780,6 +781,10 @@ threat.medium = Media threat.high = Alta threat.extreme = Estrema threat.eradication = Catastrofe +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Pianeti @@ -1149,12 +1154,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Ridimensionamento Interfaccia[lightgray] (richiede il riavvio)[] setting.uiscale.description = Riavvio necessario per applicare le modifiche. setting.swapdiagonal.name = Posizionamento Sempre Diagonale -setting.difficulty.training = Allenamento -setting.difficulty.easy = Facile -setting.difficulty.normal = Normale -setting.difficulty.hard = Difficile -setting.difficulty.insane = Impossibile -setting.difficulty.name = Difficoltà: setting.screenshake.name = Movimento dello Schermo setting.bloomintensity.name = Intensità d'illuminazione (Bloom Intensity) setting.bloomblur.name = Illuminazione sfocata (Bloom Blur) @@ -1371,6 +1370,8 @@ rules.title.teams = squadre rules.title.planet = pianeta rules.lighting = Illuminazione rules.fog = Nebbia di guerra +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fuoco rules.anyenv = rules.explosions = Danno da Esplosione Blocchi/Unità diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index fcdbb46ff4e0..25217fe844ca 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -193,6 +193,7 @@ campaign.select = 開始するキャンペーンを選択 campaign.none = [lightgray]キャンペーンを始める惑星を選んでください。\n惑星はいつでも変更可能です。 campaign.erekir = より新しく、より洗練されたコンテンツ。 ほぼ一貫して進行するキャンペーン。\n\n高品質のマップと総合的な体験。 campaign.serpulo = 昔のコンテンツ。クラシックな体験。より自由な発想。\n\nマップやキャンペーンの仕組みがアンバランスになる可能性があり、あまり洗練されてない。 +campaign.difficulty = Difficulty completed = [accent]完了 techtree = テックツリー techtree.select = テックツリーの選択 @@ -784,6 +785,10 @@ threat.medium = 中 threat.high = 高 threat.extreme = 過酷 threat.eradication = 破滅的 +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = 惑星 @@ -1155,12 +1160,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UIサイズ setting.uiscale.description = 再起動が必要です。 setting.swapdiagonal.name = 常に斜め設置 -setting.difficulty.training = トレーニング -setting.difficulty.easy = イージー -setting.difficulty.normal = ノーマル -setting.difficulty.hard = ハード -setting.difficulty.insane = クレイジー -setting.difficulty.name = 難易度: setting.screenshake.name = 画面の揺れ setting.bloomintensity.name = きらめきの強さ setting.bloomblur.name = 光のぼやけ @@ -1377,6 +1376,8 @@ rules.title.teams = チーム rules.title.planet = 惑星 rules.lighting = 霧 rules.fog = 戦場の霧 +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = 火災 rules.anyenv = rules.explosions = 爆発ダメージ diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index c5f66651536e..48576e0bd7ee 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -193,6 +193,7 @@ campaign.select = 캠페인 시작지점 선택하기 campaign.none = [lightgray]시작할 행성을 선택하십시오.\n언제든지 전환할 수 있습니다. campaign.erekir = [accent]신규 플레이어에게 추천합니다.[]\n\n보다 새롭고 세련된 컨텐츠. 대부분 순차적으로 캠페인이 진행됩니다.\n\n더 높은 완성도의 지도와 다채로운 경험. campaign.serpulo = [scarlet]신규 플레이어에게 권장되지 않습니다.[]\n\n오래된 컨텐츠: 고전적인 경험. 좀 더 개방적이죠.\n\n잠재적으로 불균형한 지도와 캠페인 메커니즘. 덜 세련됩니다. +campaign.difficulty = Difficulty completed = [accent]완료됨 techtree = 연구 기록 techtree.select = 연구 기록 선택 @@ -785,6 +786,10 @@ threat.medium = 보통 threat.high = 높음 threat.extreme = 매우 높음 threat.eradication = 극한 +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = 태양계 @@ -1154,12 +1159,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI 스케일링 setting.uiscale.description = 적용하려면 재시작이 필요합니다. setting.swapdiagonal.name = 항상 대각선 배치 -setting.difficulty.training = 훈련 -setting.difficulty.easy = 쉬움 -setting.difficulty.normal = 보통 -setting.difficulty.hard = 어려움 -setting.difficulty.insane = 박멸 -setting.difficulty.name = 난이도: setting.screenshake.name = 화면 흔들림 setting.bloomintensity.name = 광원 세기 setting.bloomblur.name = 광원 번짐 @@ -1376,6 +1375,8 @@ rules.title.teams = 팀 rules.title.planet = 행성 rules.lighting = 조명 표시 rules.fog = 전장의 안개 +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = 방화 허용 rules.anyenv = <모두> rules.explosions = 블록/기체 폭발 피해 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index aef0a6fd8104..5da270cae32c 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Išrasta techtree = Technologijų Medis techtree.select = Tech Tree Selection @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1144,12 +1149,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI mastelio keitimas[lightgray] (reikalingas perkrovimas)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Visada Įstrižinis Padėjimas -setting.difficulty.training = Mokymai -setting.difficulty.easy = Lengvas -setting.difficulty.normal = Normalus -setting.difficulty.hard = Sunkus -setting.difficulty.insane = Beprotiškas -setting.difficulty.name = Sunkumas: setting.screenshake.name = Ekrano Drebėjimas setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1366,6 +1365,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Apšvietimas rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index f62e2b77ffb6..14cdc7e38c5c 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -197,6 +197,7 @@ campaign.select = Selecteer een veldtocht om mee te starten campaign.none = [lightgray]Kies een planeet om op te starten.\nJe kan op elk moment omschakelen naar de andere planeet. campaign.erekir = Nieuwere, meer gepolijste inhoud. Grotendeels lineair veldtochtverloop.\n\nKaarten en algemene ervaring van hogere kwaliteit. campaign.serpulo = Oudere inhoud; de klassieke ervaring. Meer open veldtochtverloop.\n\nKans op ongebalanceerde kaarten en veldtocht mechanismen. Minder gepolijst. +campaign.difficulty = Difficulty completed = [accent]Voltooid techtree = Techniekboom techtree.select = Techniekboom selectie @@ -786,6 +787,10 @@ threat.medium = Gemiddeld threat.high = Hoog threat.extreme = Extreem threat.eradication = Uitroeiing +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planeten planet.serpulo.name = Serpulo @@ -1156,12 +1161,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Schaal[lightgray] (herstart vereist)[] setting.uiscale.description = Herstart vereist om veranderingen door te voeren. setting.swapdiagonal.name = Altijd Diagonaal Plaatsen -setting.difficulty.training = Oefening -setting.difficulty.easy = Makkelijk -setting.difficulty.normal = Normaal -setting.difficulty.hard = Moeilijk -setting.difficulty.insane = Krankzinnig -setting.difficulty.name = Moeilijkheidsgraad: setting.screenshake.name = Schuddend Scherm setting.bloomintensity.name = Bloom Intensiteit setting.bloomblur.name = Bloom Waas @@ -1378,6 +1377,8 @@ rules.title.teams = Teams rules.title.planet = Planeet rules.lighting = Belichting rules.fog = Mist van de Oorlog +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Vuur rules.anyenv = rules.explosions = Blok/Eenheid Explosieschade diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 424e76e1b173..643b03f138cd 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Voltooid techtree = Technische vooruitgang techtree.select = Tech Tree Selection @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1144,12 +1149,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Scaling[lightgray] (requires restart)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Always Diagonal Placement -setting.difficulty.training = training -setting.difficulty.easy = easy -setting.difficulty.normal = normal -setting.difficulty.hard = hard -setting.difficulty.insane = insane -setting.difficulty.name = Difficulty: setting.screenshake.name = Screen Shake setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1366,6 +1365,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 0af2fc512541..b396fb331fde 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -193,6 +193,7 @@ campaign.select = Wybierz początkową kampanię campaign.none = [lightgray]Wybierz planetę, na której chcesz zacząć.\nMożesz zmienić planetę w każdej chwili. campaign.erekir = Nowsza, bardziej dopracowana zawartość. Kampania postępuje bardziej liniowo.\n\nWyższej jakości mapy oraz rozgrywka. campaign.serpulo = Starsza zawartość; klasyczne doświadczenia. Bardziej otwarta.\n\nPotencjalnie niezbalansowane mapy i mechaniki. Słabiej dopracowana. +campaign.difficulty = Difficulty completed = [accent]Ukończony techtree = Drzewo Techno-\nlogiczne techtree.select = Wybór Drzewa Technologicznego @@ -782,6 +783,10 @@ threat.medium = Średni threat.high = Wysoki threat.extreme = Ekstremalny threat.eradication = Czystka +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planety @@ -1153,12 +1158,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Skalowanie interfejsu[lightgray] (wymaga restartu)[] setting.uiscale.description = Aby zastosować zmiany, wymagane jest ponowne uruchomienie. setting.swapdiagonal.name = Pozwala na ukośną budowę -setting.difficulty.training = Treningowy -setting.difficulty.easy = Łatwy -setting.difficulty.normal = Normalny -setting.difficulty.hard = Trudny -setting.difficulty.insane = Szalony -setting.difficulty.name = Poziom trudności setting.screenshake.name = Siła wstrząsów ekranu setting.bloomintensity.name = Intensywaność Rozmycia setting.bloomblur.name = Niewyraźność Rozmycia @@ -1375,6 +1374,8 @@ rules.title.teams = Drużyny rules.title.planet = Planet rules.lighting = Oświetlenie rules.fog = Mgła Wojny +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Ogień rules.anyenv = rules.explosions = Uszkodzenia Wybuchu Bloku/Jednostki diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index bec67c253099..22b09fa4e282 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -193,6 +193,7 @@ campaign.select = Selecione a campanha inicial campaign.none = [lightgray]Selecione um planeta para começar nele.\nVocê pode mudar de planeta a qualquer momento. campaign.erekir = Novo, conteúdo mais polido. Uma progressão mais linear na campanha.\n\nExperiência geral e mapas de maior qualidade. campaign.serpulo = Conteúdo antigo; a experiência clássica. Mais aberto.\n\nMapas e mecânicas de campanha potencialmente desbalanceados. Menos polido. +campaign.difficulty = Difficulty completed = [accent]Completado techtree = Árvore Tecnológica techtree.select = Seleção de Árvore Tecnológica @@ -790,6 +791,10 @@ threat.medium = Média threat.high = Alta threat.extreme = Extrema threat.eradication = Erradicação +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planetas @@ -1163,12 +1168,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Escala da\ninterface[lightgray] (reinicialização requerida)[] setting.uiscale.description = Reinicialização necessária para aplicar as alterações. setting.swapdiagonal.name = Sempre colocação diagonal -setting.difficulty.training = Treinamento -setting.difficulty.easy = Fácil -setting.difficulty.normal = Normal -setting.difficulty.hard = Difícil -setting.difficulty.insane = Insano -setting.difficulty.name = Dificuldade setting.screenshake.name = Vibração da Tela setting.bloomintensity.name = Itensidade do Bloom setting.bloomblur.name = Desfoque do Bloom @@ -1385,6 +1384,8 @@ rules.title.teams = Times rules.title.planet = Planeta rules.lighting = Iluminação rules.fog = Névoa de Guerra +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fogo rules.anyenv = rules.explosions = Dano de explosão de unidades/blocos diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 879f70e3d9a6..ce72726f11c5 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Completado techtree = Árvore de tecnologia techtree.select = Tech Tree Selection @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1144,12 +1149,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Escala da IU[lightgray] (reinicialização requerida)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Sempre colocação diagnoal -setting.difficulty.training = Treinamento -setting.difficulty.easy = Fácil -setting.difficulty.normal = Normal -setting.difficulty.hard = Difícil -setting.difficulty.insane = Insano -setting.difficulty.name = Dificuldade setting.screenshake.name = Balanço do Ecrã setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1366,6 +1365,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 6dc92b3282ac..c770946c09a4 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -193,6 +193,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Finalizat techtree = Cercetează techtree.select = Tech Tree Selection @@ -784,6 +785,10 @@ threat.medium = Medie threat.high = Mare threat.extreme = Extremă threat.eradication = Eradicare +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planete @@ -1155,12 +1160,6 @@ setting.fpscap.text = FPS {0} setting.uiscale.name = Scară Interfață setting.uiscale.description = Repornire necesară pt a aplica schimbările. setting.swapdiagonal.name = Plasează Mereu Diagonal -setting.difficulty.training = Antrenament -setting.difficulty.easy = Ușor -setting.difficulty.normal = Normal -setting.difficulty.hard = Greu -setting.difficulty.insane = Nebunesc -setting.difficulty.name = Dificultate: setting.screenshake.name = Agitare Ecran setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1377,6 +1376,8 @@ rules.title.teams = Echipe rules.title.planet = Planet rules.lighting = Luminozitate Ambientală rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Foc rules.anyenv = rules.explosions = Explozia Deteriorează Blocul/Unitatea diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index ca9409ba10c8..953522662bad 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -194,6 +194,7 @@ campaign.select = Выберите стартовую кампанию campaign.none = [lightgray]Выберите планету, с которой хотите начать.\nПереключить планету можно в любое время. campaign.erekir = Новый, более отточенный контент. В-основном линейное продвижение по кампании.\n\nКарты и игровой процесс более высокого качества. campaign.serpulo = Старый контент; классический опыт. Более вариативное прохождение.\n\nПотенциально несбалансированные карты и механики кампании. Менее отточено. +campaign.difficulty = Difficulty completed = [accent]Завершено techtree = Дерево\n технологий techtree.select = Выбор дерева технологий @@ -785,6 +786,10 @@ threat.medium = Средняя threat.high = Высокая threat.extreme = Экстремальная threat.eradication = Истребляющая +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Планеты @@ -1155,12 +1160,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Масштаб пользовательского интерфейса setting.uiscale.description = Для вступления изменений в силу может потребоваться перезагрузка игры. setting.swapdiagonal.name = Всегда диагональное размещение -setting.difficulty.training = Обучение -setting.difficulty.easy = Лёгкая -setting.difficulty.normal = Нормальная -setting.difficulty.hard = Сложная -setting.difficulty.insane = Безумная -setting.difficulty.name = Сложность: setting.screenshake.name = Тряска экрана setting.bloomintensity.name = Интенсивность свечения setting.bloomblur.name = Размытие свечения @@ -1377,6 +1376,8 @@ rules.title.teams = Команды rules.title.planet = Планета rules.lighting = Освещение rules.fog = Туман войны +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Огонь rules.anyenv = <Любая> rules.explosions = Урон от взрывов блоков/единиц diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index a61662f92998..bf1b243a7675 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -193,6 +193,7 @@ campaign.select = Izaberite Početnu Kampanju campaign.none = [lightgray]Izaberite planetu gde bi ste počeli.\nOvo se može promeniti u svakom trenutku. campaign.erekir = [accent]Preporučeno za novije igrače.[]\n\nNovije, poboljšane funkcije. Uglavnom linearni tok kampanje.\n\nKvalitetniji doživljaji i mape. Veća težina. campaign.serpulo = [scarlet]Nije preporučeno za novije igrače.[]\n\nStarije funkcije; renesansno iskustvo. Otvoreniji pristup.\n\nMoguće je da mape i tok kampanje nisu glatki i balansirani. +campaign.difficulty = Difficulty completed = [accent]Završeno. techtree = Drvo Tehnologija techtree.select = Izbor Drveća Tehnologija @@ -785,6 +786,10 @@ threat.medium = Srednje threat.high = Visoko threat.extreme = Ekstremno threat.eradication = Istrebljenje +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planete @@ -1157,12 +1162,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Skala setting.uiscale.description = Restartovanje je zahtevano da bi se učitale promene. setting.swapdiagonal.name = Uvek Dijagonalno Postavljanje -setting.difficulty.training = Training -setting.difficulty.easy = Easy -setting.difficulty.normal = Normal -setting.difficulty.hard = Hard -setting.difficulty.insane = Insane -setting.difficulty.name = Difficulty: setting.screenshake.name = Screen Shake setting.bloomintensity.name = Bloom Intezitet setting.bloomblur.name = Bloom Magliranje @@ -1379,6 +1378,8 @@ rules.title.teams = Timovi rules.title.planet = Planeta rules.lighting = Osvetljenje rules.fog = Magla Rata +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Plamen rules.anyenv = rules.explosions = Blokovna/Jedinična Šteta Eksplozije diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 4c5d9f190b2c..1a2892db9884 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Avklarad techtree = Teknologiträd techtree.select = Teknologiträd Väljare @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1144,12 +1149,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Scaling[lightgray] (requires restart)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Always Diagonal Placement -setting.difficulty.training = Träning -setting.difficulty.easy = Lätt -setting.difficulty.normal = Normalt -setting.difficulty.hard = Svårt -setting.difficulty.insane = Galet -setting.difficulty.name = Svårighetsgrad: setting.screenshake.name = Skärmskak setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1366,6 +1365,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 16fb8134b3c5..fa861a89ccd9 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -193,6 +193,7 @@ campaign.select = เลือกเนื้อเรื่องที่จ campaign.none = [lightgray]โปรดเลือกดาวที่จะเริ่มต้น\nคุณสามารถสลับกลับไปตอนไหนก็ได้ campaign.erekir = เนื้อหาที่ใหม่กว่าและขัดเกลามามากกว่า เนื้อเรื่องดำเนินเป็นเส้นตรงโดยซะส่วนใหญ่\n\nแมพมีคุณภาพที่ดีกว่า ให้ประสบการณ์โดยรวมที่มีคุณภาพ campaign.serpulo = ประสบการณ์สุดคลาสสิก เนื้อหาเยอะกว่า เปิดกว้างมากกว่า\n\nแมพและกลไกของแคมเปญอาจไม่สมดุล ขัดเกลามาน้อยกว่า +campaign.difficulty = Difficulty completed = [accent]วิจัยแล้ว techtree = ต้นไม้เทคโนโลยี techtree.select = เลือกต้นไม้แห่งเทคโนโลยี @@ -785,6 +786,10 @@ threat.medium = กลาง threat.high = สูง threat.extreme = วิบัติภัย threat.eradication = ทำลายล้าง +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = ดาว @@ -1156,12 +1161,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = อัตราขนาด UI setting.uiscale.description = อาจจะต้องรีสตาร์ทเพื่อใช้งานการเปลี่ยนแปลง setting.swapdiagonal.name = วางเป็นเส้นทแยงเสมอ -setting.difficulty.training = ฝึกซ้อม -setting.difficulty.easy = ง่าย -setting.difficulty.normal = ปานกลาง -setting.difficulty.hard = ยาก -setting.difficulty.insane = โหดเหี้ยม -setting.difficulty.name = ระดับความยาก: setting.screenshake.name = การสั่นของจอ setting.bloomintensity.name = ความรุนแรงของบลูม setting.bloomblur.name = ความเบลอบลูม @@ -1378,6 +1377,8 @@ rules.title.teams = ทีม rules.title.planet = ดาว rules.lighting = แสง rules.fog = หมอกแห่งสงคราม +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = ไฟ rules.anyenv = <อะไรก็ได้> rules.explosions = ดาเมจการระเบิดของบล็อก/ยูนิต diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 69f1995e6feb..53502c60f05c 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -190,6 +190,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]Completed techtree = Tech Tree techtree.select = Tech Tree Selection @@ -775,6 +776,10 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Planets planet.serpulo.name = Serpulo @@ -1144,12 +1149,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI Scaling[lightgray] (requires restart)[] setting.uiscale.description = Restart required to apply changes. setting.swapdiagonal.name = Always Diagonal Placement -setting.difficulty.training = training -setting.difficulty.easy = kolay -setting.difficulty.normal = orta -setting.difficulty.hard = zor -setting.difficulty.insane = cok zor -setting.difficulty.name = Zorluk derecesi: setting.screenshake.name = Ekran sallanmasi setting.bloomintensity.name = Bloom Intensity setting.bloomblur.name = Bloom Blur @@ -1366,6 +1365,8 @@ rules.title.teams = Teams rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 733fdac6707b..52ed3e003064 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -193,6 +193,7 @@ campaign.select = Başlangıç Mücadelesi Seç campaign.none = [lightgray]Başlamak için bir gezegen seç.\nBu seçim herhangi bir zamanda değiştirlebilir. campaign.erekir = Daha yeni ve cilalanmış içerikler. Genellikle kararlı ilerleme.\n\nDaha kaliteli haritalar ve deneyim (herhalde). campaign.serpulo = Eski içerik; klasik deneyim. Daha serbest.\n\nDaha dengesiz harita ve deneyim. Cilayı unutmuşlar işte... +campaign.difficulty = Difficulty completed = [accent]Tamamlandı techtree = Teknoloji Ağacı techtree.select = Teknoloji Ağacı Seç @@ -784,6 +785,10 @@ threat.medium = Orta threat.high = Yüksek threat.extreme = Aşırı threat.eradication = İmkansız +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Gezegenler @@ -1153,12 +1158,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Arayüz Ölçeği [lightgray](yeniden başlatma gerekebilir)[] setting.uiscale.description = Değişikleri uygulamak için yeniden başlatma gerekli. setting.swapdiagonal.name = Her Zaman Çapraz Yerleştirme -setting.difficulty.training = Eğitim -setting.difficulty.easy = Kolay -setting.difficulty.normal = Normal -setting.difficulty.hard = Zor -setting.difficulty.insane = İmkansız -setting.difficulty.name = Zorluk: setting.screenshake.name = Ekran Sarsılması setting.bloomintensity.name = Parlaklık Şiddeti setting.bloomblur.name = Parlaklık Bulanıklılığı @@ -1375,6 +1374,8 @@ rules.title.teams = Takımlar rules.title.planet = Gezegen rules.lighting = Işıklandırma rules.fog = Savaş Sisi +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Ateş rules.anyenv = rules.explosions = Blok/Birlik Patlama Hasarı diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index c4e9a0211d51..27c087b705dc 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -195,6 +195,7 @@ campaign.select = Виберіть початкову кампанію campaign.none = [lightgray]Виберіть планету для старту.\nЇї можна змінити в будь-який момент. campaign.erekir = Новіший, більш відшліфований зміст. Переважно лінійний розвиток кампанії.\n\nВища якість мап та ліпший загальний досвід. campaign.serpulo = Старий зміст; класичний досвід. Більш відкрита.\n\nПотенційно незбалансовані мапи й механіки кампанії. Менш відшліфована. +campaign.difficulty = Difficulty completed = [accent]Завершено techtree = Дерево технологій techtree.select = Вибір дерева технологій @@ -793,6 +794,10 @@ threat.medium = середня threat.high = висока threat.extreme = екстремальна threat.eradication = викорінювальна +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Планети @@ -1164,12 +1169,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Масштабування користувацького інтерфейсу setting.uiscale.description = Потрібен перезапуск для застосування змін. setting.swapdiagonal.name = Завжди діагональне розміщення -setting.difficulty.training = Навчання -setting.difficulty.easy = Легка -setting.difficulty.normal = Нормальна -setting.difficulty.hard = Важка -setting.difficulty.insane = Неможлива -setting.difficulty.name = Складність: setting.screenshake.name = Тряска екрану setting.bloomintensity.name = Інтенсивність світіння setting.bloomblur.name = Розмиття світіння @@ -1386,6 +1385,8 @@ rules.title.teams = Команди rules.title.planet = Планета rules.lighting = Світлотінь rules.fog = Туман війни +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Вогонь rules.anyenv = <Будь-яка> rules.explosions = Шкода від вибухів блоків і одиниць diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 1ca135c45a62..db8a36351105 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -197,6 +197,7 @@ campaign.select = Chọn chiến dịch khởi đầu campaign.none = [lightgray]Chọn một hành tinh để bắt đầu.\nCó thể thay đổi sang hành tinh khác bất cứ lúc nào. campaign.erekir = Nội dung mới và được trau chuốt. Quá trình chiến dịch liền mạch hơn.\n\nKhó hơn. Bản đồ chất lượng hơn và trải nghiệm tổng thể tốt hơn. campaign.serpulo = Nội dung cũ; trải nghiệm cơ bản. Tiến trình mở hơn, nhiều nội dung hơn.\n\nRất có thể vẫn còn cơ chế bản đồ và chiến dịch bị mất cân bằng. Ít được trau chuốt. +campaign.difficulty = Difficulty completed = [accent]Hoàn tất techtree = Cây công nghệ techtree.select = Chọn nhánh công nghệ @@ -799,6 +800,10 @@ threat.medium = Trung bình threat.high = Cao threat.extreme = Cực cao threat.eradication = Hủy diệt +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = Hành tinh @@ -1171,12 +1176,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = Tỉ lệ giao diện setting.uiscale.description = Cần khởi động lại để áp dụng các thay đổi. setting.swapdiagonal.name = Luôn đặt theo đường chéo -setting.difficulty.training = Luyện tập -setting.difficulty.easy = Dễ -setting.difficulty.normal = Vừa -setting.difficulty.hard = Khó -setting.difficulty.insane = Điên loạn -setting.difficulty.name = Độ khó: setting.screenshake.name = Rung chuyển khung hình setting.bloomintensity.name = Mức độ phát sáng setting.bloomblur.name = Xoá mờ phát sáng @@ -1396,6 +1395,8 @@ rules.title.teams = Đội rules.title.planet = Hành tinh rules.lighting = Ánh sáng rules.fog = Sương mù chiến tranb +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = Lửa rules.anyenv = rules.explosions = Sát thương nổ của Khối/Đơn vị diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index cd23704e1c74..8324c1f1d7a6 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -196,6 +196,7 @@ campaign.select = 选择战役出发点 campaign.none = [lightgray]选择初始星球。\n可以在任意时刻切换。 campaign.erekir = 更新,更精致的内容。 战役大部分是线性的。\n\n难度更高,但地图质量与整体体验也更好。 campaign.serpulo = 较旧的内容; 经典的体验。 更加开放,且内容更丰富。\n\n地图与战役机制可能不平衡。 更不完美。 +campaign.difficulty = Difficulty completed = [accent]己研究 techtree = 科技树 techtree.select = 切换科技树 @@ -794,6 +795,10 @@ threat.medium = 中度 threat.high = 高度 threat.extreme = 极高 threat.eradication = 毁灭 +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = 行星 @@ -1166,12 +1171,6 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI缩放比例 setting.uiscale.description = 需要重新启动 setting.swapdiagonal.name = 总是斜线建造 -setting.difficulty.training = 训练 -setting.difficulty.easy = 简单 -setting.difficulty.normal = 普通 -setting.difficulty.hard = 困难 -setting.difficulty.insane = 疯狂 -setting.difficulty.name = 难度: setting.screenshake.name = 屏幕抖动 setting.bloomintensity.name = 光效强度 setting.bloomblur.name = 光效模糊 @@ -1388,6 +1387,8 @@ rules.title.teams = 队伍 rules.title.planet = 星球 rules.lighting = 环境光 rules.fog = 战争迷雾 +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = 允许火焰产生并蔓延 rules.anyenv = <任意> rules.explosions = 建筑/单位爆炸伤害 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 9e04d0b99c03..30345d6acda3 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -193,6 +193,7 @@ campaign.select = Select Starting Campaign campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time. campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience. campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished. +campaign.difficulty = Difficulty completed = [accent]完成 techtree = 科技樹 techtree.select = 選擇科技樹 @@ -790,6 +791,10 @@ threat.medium = 中 threat.high = 高 threat.extreme = 極高 threat.eradication = 毀滅性 +difficulty.easy = Easy +difficulty.normal = Normal +difficulty.hard = Hard +difficulty.eradication = Eradication planets = 行星 @@ -1161,12 +1166,6 @@ setting.fpscap.text = {0}FPS setting.uiscale.name = 操作介面大小 setting.uiscale.description = 需要重新啟動遊戲以更改大小 setting.swapdiagonal.name = 預設對角線放置 -setting.difficulty.training = 訓練 -setting.difficulty.easy = 簡單 -setting.difficulty.normal = 普通 -setting.difficulty.hard = 困難 -setting.difficulty.insane = 瘋狂 -setting.difficulty.name = 難度: setting.screenshake.name = 畫面抖動 setting.bloomintensity.name = 火花強度 setting.bloomblur.name = 火花模糊 @@ -1383,6 +1382,8 @@ rules.title.teams = 分隊 rules.title.planet = 星球 rules.lighting = 光照 rules.fog = 戰爭迷霧 +rules.invasions = Enemy Sector Invasions +rules.showspawns = Show Enemy Spawns rules.fire = 火 rules.anyenv = rules.explosions = 方塊/單位爆炸傷害 From 6260e146c3ac717d9cd491d652b0b8a8314e8799 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Sep 2024 18:26:00 -0400 Subject: [PATCH 04/45] Experimental rule for randomized air unit targets --- core/src/mindustry/ai/WaveSpawner.java | 5 ++++- core/src/mindustry/ai/types/FlyingAI.java | 18 +++++++++++++++++- core/src/mindustry/game/CampaignRules.java | 1 + core/src/mindustry/game/Rules.java | 2 ++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 58f770f20df7..7935418c5f98 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -69,7 +69,10 @@ public void spawnEnemies(){ if(spawned == 0) continue; if(state.isCampaign()){ - spawned = Math.max(1, Mathf.round(spawned * state.getPlanet().campaignRules.difficulty.enemySpawnMultiplier)); + //when spawning a boss, round down, so 1.5x (hard) * 1 boss does not result in 2 bosses + spawned = Math.max(1, group.effect == StatusEffects.boss ? + (int)(spawned * state.getPlanet().campaignRules.difficulty.enemySpawnMultiplier) : + Mathf.round(spawned * state.getPlanet().campaignRules.difficulty.enemySpawnMultiplier)); } int spawnedf = spawned; diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index a938b5d3b69b..c9eba7a8d9a8 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -6,9 +6,10 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; +import static mindustry.world.meta.BlockFlag.*; -//TODO very strange idle behavior sometimes public class FlyingAI extends AIController{ + final static BlockFlag[] randomTargets = {core, storage, generator, launchPad, factory, repair, battery, reactor, drill}; @Override public void updateMovement(){ @@ -44,6 +45,21 @@ public Teamc findMainTarget(float x, float y, float range, boolean air, boolean return core; } + if(state.rules.randomAirTargeting){ + //when there are no waves, it's just random based on the unit + Mathf.rand.setSeed(unit.type.id + (state.rules.waves ? state.wave : unit.id)); + //try a few random flags first + for(int attempt = 0; attempt < 5; attempt++){ + Teamc result = targetFlag(x, y, randomTargets[Mathf.rand.random(randomTargets.length - 1)], true); + if(result != null) return result; + } + //try the closest target + Teamc result = target(x, y, range, air, ground); + if(result != null) return result; + //default to the core + return core; + } + for(var flag : unit.type.targetFlags){ if(flag == null){ Teamc result = target(x, y, range, air, ground); diff --git a/core/src/mindustry/game/CampaignRules.java b/core/src/mindustry/game/CampaignRules.java index c0be0548a541..10157cc17335 100644 --- a/core/src/mindustry/game/CampaignRules.java +++ b/core/src/mindustry/game/CampaignRules.java @@ -11,5 +11,6 @@ public void apply(Rules rules){ rules.showSpawns = showSpawns; rules.teams.get(rules.waveTeam).blockHealthMultiplier = difficulty.enemyHealthMultiplier; rules.teams.get(rules.waveTeam).unitHealthMultiplier = difficulty.enemyHealthMultiplier; + rules.randomAirTargeting = difficulty.ordinal() >= Difficulty.hard.ordinal(); } } diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 7bee6a6e681b..daeec9687da0 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -61,6 +61,8 @@ public class Rules{ public boolean fire = true; /** Whether units use and require ammo. */ public boolean unitAmmo = false; + /** EXPERIMENTAL! If true, air units target random things each wave instead of only generators. */ + public boolean randomAirTargeting = false; /** EXPERIMENTAL! If true, blocks will update in units and share power. */ public boolean unitPayloadUpdate = false; /** If true, units' payloads are destroy()ed when the unit is destroyed. */ From 6e5561a36eefcbdd38c5e37dd2f3f619cd082afe Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Sep 2024 18:50:46 -0400 Subject: [PATCH 05/45] Campaign rule for unpredictable wave AI --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/ai/Pathfinder.java | 22 +++++++++++++++++++ core/src/mindustry/ai/types/FlyingAI.java | 22 +++++++++---------- core/src/mindustry/game/CampaignRules.java | 3 ++- core/src/mindustry/game/Rules.java | 4 ++-- .../ui/dialogs/CampaignRulesDialog.java | 1 + 6 files changed, 38 insertions(+), 15 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index c27355fb688d..4a89d17453c4 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1399,6 +1399,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index e93713acc0fa..e37adc91b03c 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -2,6 +2,7 @@ import arc.*; import arc.func.*; +import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.util.*; @@ -16,6 +17,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; +import static mindustry.world.meta.BlockFlag.*; public class Pathfinder implements Runnable{ private static final long maxUpdate = Time.millisToNanos(8); @@ -454,8 +456,28 @@ private void updateFrontier(Flowfield path, long nsToRun){ } public static class EnemyCoreField extends Flowfield{ + private final static BlockFlag[] randomTargets = {storage, generator, launchPad, factory, repair, battery, reactor, drill}; + private Rand rand = new Rand(); + @Override protected void getPositions(IntSeq out){ + if(state.rules.randomWaveAI && team == state.rules.waveTeam){ + rand.setSeed(state.rules.waves ? state.wave : (int)(state.tick / (5400))); + + //maximum amount of different target flag types they will attack + int max = 2; + + for(int attempt = 0; attempt < 5 && max > 0; attempt++){ + var targets = indexer.getEnemy(team, randomTargets[rand.random(randomTargets.length - 1)]); + if(!targets.isEmpty()){ + max --; + for(Building other : targets){ + out.add(other.tile.array()); + } + } + } + } + for(Building other : indexer.getEnemy(team, BlockFlag.core)){ out.add(other.tile.array()); } diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index c9eba7a8d9a8..f7d533658eb4 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -45,7 +45,7 @@ public Teamc findMainTarget(float x, float y, float range, boolean air, boolean return core; } - if(state.rules.randomAirTargeting){ + if(state.rules.randomWaveAI){ //when there are no waves, it's just random based on the unit Mathf.rand.setSeed(unit.type.id + (state.rules.waves ? state.wave : unit.id)); //try a few random flags first @@ -56,17 +56,15 @@ public Teamc findMainTarget(float x, float y, float range, boolean air, boolean //try the closest target Teamc result = target(x, y, range, air, ground); if(result != null) return result; - //default to the core - return core; - } - - for(var flag : unit.type.targetFlags){ - if(flag == null){ - Teamc result = target(x, y, range, air, ground); - if(result != null) return result; - }else if(ground){ - Teamc result = targetFlag(x, y, flag, true); - if(result != null) return result; + }else{ + for(var flag : unit.type.targetFlags){ + if(flag == null){ + Teamc result = target(x, y, range, air, ground); + if(result != null) return result; + }else if(ground){ + Teamc result = targetFlag(x, y, flag, true); + if(result != null) return result; + } } } diff --git a/core/src/mindustry/game/CampaignRules.java b/core/src/mindustry/game/CampaignRules.java index 10157cc17335..3f55661772a7 100644 --- a/core/src/mindustry/game/CampaignRules.java +++ b/core/src/mindustry/game/CampaignRules.java @@ -5,12 +5,13 @@ public class CampaignRules{ public boolean fog; public boolean showSpawns; public boolean sectorInvasion; + public boolean randomWaveAI; public void apply(Rules rules){ rules.staticFog = rules.fog = fog; rules.showSpawns = showSpawns; + rules.randomWaveAI = randomWaveAI; rules.teams.get(rules.waveTeam).blockHealthMultiplier = difficulty.enemyHealthMultiplier; rules.teams.get(rules.waveTeam).unitHealthMultiplier = difficulty.enemyHealthMultiplier; - rules.randomAirTargeting = difficulty.ordinal() >= Difficulty.hard.ordinal(); } } diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index daeec9687da0..592be5ddbb62 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -61,8 +61,8 @@ public class Rules{ public boolean fire = true; /** Whether units use and require ammo. */ public boolean unitAmmo = false; - /** EXPERIMENTAL! If true, air units target random things each wave instead of only generators. */ - public boolean randomAirTargeting = false; + /** EXPERIMENTAL! If true, air and ground units target random things each wave instead of only the core/generators. */ + public boolean randomWaveAI = false; /** EXPERIMENTAL! If true, blocks will update in units and share power. */ public boolean unitPayloadUpdate = false; /** If true, units' payloads are destroy()ed when the unit is destroyed. */ diff --git a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java index 0805234ef8b9..c528bbcaae27 100644 --- a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java @@ -59,6 +59,7 @@ void rebuild(){ check("@rules.fog", b -> rules.fog = b, () -> rules.fog); check("@rules.showspawns", b -> rules.showSpawns = b, () -> rules.showSpawns); + check("@rules.randomwaveai", b -> rules.randomWaveAI = b, () -> rules.randomWaveAI); }).growY(); } From 0ce3f4fd85c283d7382b6cf4eb6391e46d31c64d Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 13 Sep 2024 22:51:44 +0000 Subject: [PATCH 06/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 + core/assets/bundles/bundle_bg.properties | 1 + core/assets/bundles/bundle_ca.properties | 1 + core/assets/bundles/bundle_cs.properties | 1 + core/assets/bundles/bundle_da.properties | 1 + core/assets/bundles/bundle_de.properties | 1 + core/assets/bundles/bundle_es.properties | 1 + core/assets/bundles/bundle_et.properties | 1 + core/assets/bundles/bundle_eu.properties | 1 + core/assets/bundles/bundle_fi.properties | 1 + core/assets/bundles/bundle_fil.properties | 1 + core/assets/bundles/bundle_fr.properties | 1 + core/assets/bundles/bundle_hu.properties | 1 + core/assets/bundles/bundle_id_ID.properties | 1 + core/assets/bundles/bundle_it.properties | 1 + core/assets/bundles/bundle_ja.properties | 1 + core/assets/bundles/bundle_ko.properties | 1 + core/assets/bundles/bundle_lt.properties | 1 + core/assets/bundles/bundle_nl.properties | 1 + core/assets/bundles/bundle_nl_BE.properties | 1 + core/assets/bundles/bundle_pl.properties | 1 + core/assets/bundles/bundle_pt_BR.properties | 1 + core/assets/bundles/bundle_pt_PT.properties | 1 + core/assets/bundles/bundle_ro.properties | 1 + core/assets/bundles/bundle_ru.properties | 1 + core/assets/bundles/bundle_sr.properties | 1 + core/assets/bundles/bundle_sv.properties | 1 + core/assets/bundles/bundle_th.properties | 1 + core/assets/bundles/bundle_tk.properties | 1 + core/assets/bundles/bundle_tr.properties | 1 + core/assets/bundles/bundle_uk_UA.properties | 1 + core/assets/bundles/bundle_vi.properties | 1 + core/assets/bundles/bundle_zh_CN.properties | 1 + core/assets/bundles/bundle_zh_TW.properties | 1 + 34 files changed, 34 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 091b8e38b7e7..4339ad0bf541 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -1365,6 +1365,7 @@ rules.lighting = Асвятленне rules.fog = Туман Вайны rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Агонь rules.anyenv = <Любы> rules.explosions = Падрыўныя пашкоджанні Блока/Адзінкі diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 904203a69e06..3dcf9650fd1e 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -1376,6 +1376,7 @@ rules.lighting = Светкавици rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Огън rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 7c62a873fe6d..3c50ea9b066a 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -1379,6 +1379,7 @@ rules.lighting = Il·luminació rules.fog = Amaga el terreny inexplorat rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Foc rules.anyenv = rules.explosions = Dany de les explosions als blocs/unitats diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index f02c289756e2..a2b2d678fa39 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -1378,6 +1378,7 @@ rules.lighting = Osvětlení rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Výstřel rules.anyenv = rules.explosions = Výbušné poškození bloku/jednotky diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 2fd355ce70d1..37586f2cc268 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -1367,6 +1367,7 @@ rules.lighting = Lys rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Ild rules.anyenv = rules.explosions = Blok/Enheds-eksplosionsskade diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 5a5edf0d1697..25e9c7160f4e 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -1389,6 +1389,7 @@ rules.lighting = Blitze rules.fog = Kriegsnebel rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Feuer rules.anyenv = rules.explosions = Explosionsschaden diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index a47b7057af55..19b6c045d816 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1385,6 +1385,7 @@ rules.lighting = Iluminación rules.fog = Ocultar terreno inexplorado (Fog of War) rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fuego rules.anyenv = rules.explosions = Daño de explosiones a bloques/unidades diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 4289650bbc02..944497cf205a 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -1367,6 +1367,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index abe6201974d7..5a647854e6e0 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -1369,6 +1369,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index c93f65904f31..9f1d916275cd 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -1366,6 +1366,7 @@ rules.lighting = Salamointi rules.fog = Sodan sumu (Fog of War) rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Tuli rules.anyenv = rules.explosions = Palikkojen/Yksikköjen räjähdysvahinko diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 183dc8f99f79..29c4a10496e2 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -1366,6 +1366,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 57ba9b25b9dc..884e9bc8540b 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -1393,6 +1393,7 @@ rules.lighting = Éclairage rules.fog = Brouillard de Guerre rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Feu rules.anyenv = rules.explosions = Dégâts d'explosion des Blocs/Unités diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index e0cbbdadab39..980e1b8aae59 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1397,6 +1397,7 @@ rules.lighting = Világítás rules.fog = Köd rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Tűz rules.anyenv = rules.explosions = Épület/egység robbanási sebzése diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 8601f74f95b9..0f6682e54680 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -1396,6 +1396,7 @@ rules.lighting = Penerangan rules.fog = Kabut Perang rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Api rules.anyenv = rules.explosions = Kekuatan Ledakan Blok/Unit diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 64db91f017f7..f6d6f8100075 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -1372,6 +1372,7 @@ rules.lighting = Illuminazione rules.fog = Nebbia di guerra rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fuoco rules.anyenv = rules.explosions = Danno da Esplosione Blocchi/Unità diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 25217fe844ca..e2c883da7122 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -1378,6 +1378,7 @@ rules.lighting = 霧 rules.fog = 戦場の霧 rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = 火災 rules.anyenv = rules.explosions = 爆発ダメージ diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 48576e0bd7ee..16b935c6ef6a 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1377,6 +1377,7 @@ rules.lighting = 조명 표시 rules.fog = 전장의 안개 rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = 방화 허용 rules.anyenv = <모두> rules.explosions = 블록/기체 폭발 피해 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 5da270cae32c..15cc2830f17e 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -1367,6 +1367,7 @@ rules.lighting = Apšvietimas rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 14cdc7e38c5c..28148bbc1172 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -1379,6 +1379,7 @@ rules.lighting = Belichting rules.fog = Mist van de Oorlog rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Vuur rules.anyenv = rules.explosions = Blok/Eenheid Explosieschade diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 643b03f138cd..30366b171674 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -1367,6 +1367,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index b396fb331fde..2c4bee5733be 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -1376,6 +1376,7 @@ rules.lighting = Oświetlenie rules.fog = Mgła Wojny rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Ogień rules.anyenv = rules.explosions = Uszkodzenia Wybuchu Bloku/Jednostki diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 22b09fa4e282..67b7149ae5ca 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -1386,6 +1386,7 @@ rules.lighting = Iluminação rules.fog = Névoa de Guerra rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fogo rules.anyenv = rules.explosions = Dano de explosão de unidades/blocos diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index ce72726f11c5..d47d0a9f3fdc 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -1367,6 +1367,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index c770946c09a4..b460cd31f4dc 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -1378,6 +1378,7 @@ rules.lighting = Luminozitate Ambientală rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Foc rules.anyenv = rules.explosions = Explozia Deteriorează Blocul/Unitatea diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 953522662bad..ed3df4196a24 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -1378,6 +1378,7 @@ rules.lighting = Освещение rules.fog = Туман войны rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Огонь rules.anyenv = <Любая> rules.explosions = Урон от взрывов блоков/единиц diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index bf1b243a7675..02d7803f2e5b 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -1380,6 +1380,7 @@ rules.lighting = Osvetljenje rules.fog = Magla Rata rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Plamen rules.anyenv = rules.explosions = Blokovna/Jedinična Šteta Eksplozije diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 1a2892db9884..b71af6d348d8 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -1367,6 +1367,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index fa861a89ccd9..2adc3a52a3f3 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -1379,6 +1379,7 @@ rules.lighting = แสง rules.fog = หมอกแห่งสงคราม rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = ไฟ rules.anyenv = <อะไรก็ได้> rules.explosions = ดาเมจการระเบิดของบล็อก/ยูนิต diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 53502c60f05c..7175db755382 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -1367,6 +1367,7 @@ rules.lighting = Lighting rules.fog = Fog of War rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Fire rules.anyenv = rules.explosions = Block/Unit Explosion Damage diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 52ed3e003064..c9feab8f50d5 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -1376,6 +1376,7 @@ rules.lighting = Işıklandırma rules.fog = Savaş Sisi rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Ateş rules.anyenv = rules.explosions = Blok/Birlik Patlama Hasarı diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 27c087b705dc..fd20fb50d45d 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -1387,6 +1387,7 @@ rules.lighting = Світлотінь rules.fog = Туман війни rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Вогонь rules.anyenv = <Будь-яка> rules.explosions = Шкода від вибухів блоків і одиниць diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index db8a36351105..54da72f432e4 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -1397,6 +1397,7 @@ rules.lighting = Ánh sáng rules.fog = Sương mù chiến tranb rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = Lửa rules.anyenv = rules.explosions = Sát thương nổ của Khối/Đơn vị diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 8324c1f1d7a6..3c7ed67af27d 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -1389,6 +1389,7 @@ rules.lighting = 环境光 rules.fog = 战争迷雾 rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = 允许火焰产生并蔓延 rules.anyenv = <任意> rules.explosions = 建筑/单位爆炸伤害 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 30345d6acda3..401a86afe69a 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -1384,6 +1384,7 @@ rules.lighting = 光照 rules.fog = 戰爭迷霧 rules.invasions = Enemy Sector Invasions rules.showspawns = Show Enemy Spawns +rules.randomwaveai = Unpredictable Wave AI rules.fire = 火 rules.anyenv = rules.explosions = 方塊/單位爆炸傷害 From 0ffa6f1d00cb68f8244b39aa6431c050f2cbd424 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Sep 2024 18:59:28 -0400 Subject: [PATCH 07/45] Added random wave AI to custom rules dialog --- core/assets/bundles/bundle.properties | 3 ++- core/src/mindustry/ui/dialogs/CustomRulesDialog.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4a89d17453c4..f997ca75e0e8 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1350,7 +1350,7 @@ rules.allowedit.info = When enabled, the player can edit rules in-game via the b rules.alloweditworldprocessors = Allow Editing World Processors rules.alloweditworldprocessors.info = When enabled, world logic blocks can be placed and edited even outside the editor. rules.waves = Waves -rules.airUseSpawns = Air units use spawn points +rules.airUseSpawns = Air Units Use Spawn Points rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier @@ -1409,6 +1409,7 @@ rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 4905cbad3e26..baf69a5526b8 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -220,6 +220,7 @@ void setup(){ check("@rules.wavesending", b -> rules.waveSending = b, () -> rules.waveSending, () -> rules.waves); check("@rules.wavetimer", b -> rules.waveTimer = b, () -> rules.waveTimer, () -> rules.waves); check("@rules.waitForWaveToEnd", b -> rules.waitEnemies = b, () -> rules.waitEnemies, () -> rules.waves && rules.waveTimer); + check("@rules.randomwaveai", b -> rules.randomWaveAI = b, () -> rules.randomWaveAI, () -> rules.waves); check("@rules.airUseSpawns", b -> rules.airUseSpawns = b, () -> rules.airUseSpawns, () -> rules.waves); numberi("@rules.wavelimit", f -> rules.winWave = f, () -> rules.winWave, () -> rules.waves, 0, Integer.MAX_VALUE); number("@rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> rules.waves && rules.waveTimer, 1, Float.MAX_VALUE); From 49c696ab5cb0b881d5eb6e9111fa04dd1dbcf853 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 13 Sep 2024 23:00:30 +0000 Subject: [PATCH 08/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 + core/assets/bundles/bundle_bg.properties | 1 + core/assets/bundles/bundle_ca.properties | 1 + core/assets/bundles/bundle_cs.properties | 1 + core/assets/bundles/bundle_da.properties | 1 + core/assets/bundles/bundle_de.properties | 1 + core/assets/bundles/bundle_es.properties | 1 + core/assets/bundles/bundle_et.properties | 1 + core/assets/bundles/bundle_eu.properties | 1 + core/assets/bundles/bundle_fi.properties | 1 + core/assets/bundles/bundle_fil.properties | 1 + core/assets/bundles/bundle_fr.properties | 1 + core/assets/bundles/bundle_hu.properties | 1 + core/assets/bundles/bundle_id_ID.properties | 1 + core/assets/bundles/bundle_it.properties | 1 + core/assets/bundles/bundle_ja.properties | 1 + core/assets/bundles/bundle_ko.properties | 1 + core/assets/bundles/bundle_lt.properties | 1 + core/assets/bundles/bundle_nl.properties | 1 + core/assets/bundles/bundle_nl_BE.properties | 1 + core/assets/bundles/bundle_pl.properties | 1 + core/assets/bundles/bundle_pt_BR.properties | 1 + core/assets/bundles/bundle_pt_PT.properties | 1 + core/assets/bundles/bundle_ro.properties | 1 + core/assets/bundles/bundle_ru.properties | 1 + core/assets/bundles/bundle_sr.properties | 1 + core/assets/bundles/bundle_sv.properties | 1 + core/assets/bundles/bundle_th.properties | 1 + core/assets/bundles/bundle_tk.properties | 1 + core/assets/bundles/bundle_tr.properties | 1 + core/assets/bundles/bundle_uk_UA.properties | 1 + core/assets/bundles/bundle_vi.properties | 1 + core/assets/bundles/bundle_zh_CN.properties | 1 + core/assets/bundles/bundle_zh_TW.properties | 1 + 34 files changed, 34 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 4339ad0bf541..2f0dc18f2d5c 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -1374,6 +1374,7 @@ rules.weather = Надвор'е rules.weather.frequency = Частата: rules.weather.always = Заўсёды rules.weather.duration = Працягласць: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 3dcf9650fd1e..5408ae51812a 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -1385,6 +1385,7 @@ rules.weather = Климат rules.weather.frequency = Честота: rules.weather.always = Винаги rules.weather.duration = Продължителност: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 3c50ea9b066a..139cdfd00ce2 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -1388,6 +1388,7 @@ rules.weather = Estat meteorològic rules.weather.frequency = Freqüència: rules.weather.always = Sempre rules.weather.duration = Durada: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = No es permet que els jugadors puguin posar res a prop dels edificis enemics. Quan s’intenta posar una torreta, l’abast augmenta i la torreta no podrà arribar a l’enemic. rules.onlydepositcore.info = No es permet que les unitats deixin elements a dins dels edificis excepte els nuclis. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index a2b2d678fa39..cdf876164699 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -1387,6 +1387,7 @@ rules.weather = Počasí rules.weather.frequency = Četnost: rules.weather.always = Vždy rules.weather.duration = Trvání: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 37586f2cc268..66f2d4e2295c 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -1376,6 +1376,7 @@ rules.weather = Vejr rules.weather.frequency = Frekvens: rules.weather.always = Always rules.weather.duration = Varighed: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 25e9c7160f4e..b201de730762 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -1398,6 +1398,7 @@ rules.weather = Wetter rules.weather.frequency = Häufigkeit: rules.weather.always = Immer rules.weather.duration = Dauer: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 19b6c045d816..81ccf9eb8019 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1394,6 +1394,7 @@ rules.weather = Clima rules.weather.frequency = Frecuencia: rules.weather.always = Siempre rules.weather.duration = Duracion: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Evita que las unidades depositen materiales en calquiera estructura a excepción del nucleo. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 944497cf205a..dc930ba05cd6 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -1376,6 +1376,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 5a647854e6e0..88582c929902 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -1378,6 +1378,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 9f1d916275cd..b0f06221ca7c 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -1375,6 +1375,7 @@ rules.weather = Sää rules.weather.frequency = Tiheys: rules.weather.always = Aina rules.weather.duration = Kesto: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 29c4a10496e2..105e138a05d8 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -1375,6 +1375,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 884e9bc8540b..f65a688aabcf 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -1402,6 +1402,7 @@ rules.weather = Météo rules.weather.frequency = Fréquence : rules.weather.always = Permanent rules.weather.duration = Durée : +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 980e1b8aae59..3cf89cbbca71 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1406,6 +1406,7 @@ rules.weather = Időjárás rules.weather.frequency = Gyakoriság: rules.weather.always = Mindig rules.weather.duration = Időtartam: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Megakadályozza, hogy a játékosok lövegtornyokat helyezzenek el az ellenséges épületek közelében.\nAmikor megpróbálnak egy lövegtornyot elhelyezni, az építési távolság megnő, így a lövegtorony nem fogja elérni az ellenséget. rules.onlydepositcore.info = Megakadályozza, hogy az egységek nyersanyagokat helyezzenek el a támaszponton kívül más épületekbe. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 0f6682e54680..6a13dbabe9ef 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -1405,6 +1405,7 @@ rules.weather = Cuaca rules.weather.frequency = Frekuensi: rules.weather.always = Selalu rules.weather.duration = Durasi: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Mencegah pemain menempatkan apa pun di dekat bangunan musuh. Ketika mencoba memasang menara, jangkauannya akan ditingkatkan sehingga menara tidak akan bisa menjangkau musuh. rules.onlydepositcore.info = Mencegah unit menyimpan bahan ke dalam bangunan apa pun kecuali inti. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index f6d6f8100075..8a8fad77d181 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -1381,6 +1381,7 @@ rules.weather = Meteo rules.weather.frequency = Frequenza: rules.weather.always = sempre rules.weather.duration = Durata: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index e2c883da7122..e29dee59809d 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -1387,6 +1387,7 @@ rules.weather = 気象 rules.weather.frequency = 頻度: rules.weather.always = 常時 rules.weather.duration = 継続時間: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 16b935c6ef6a..6b60c6207855 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1386,6 +1386,7 @@ rules.weather = 날씨 추가 rules.weather.frequency = 빈도: rules.weather.always = 항상 rules.weather.duration = 지속 시간: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = 플레이어가 적 건물 근처에 건설 불가 구역을 생성합니다. 만일, 플레이어가 포탑을 건설하고자 할 경우 반경이 증가되어 적 건물이 포탑의 사정거리에 닿지 않게됩니다. rules.onlydepositcore.info = 코어를 제외한 어떠한 건물에도 자원을 투하할 수 없게 만듭니다. diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 15cc2830f17e..8ed948b7b3a2 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -1376,6 +1376,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 28148bbc1172..bb44df7b2aec 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -1388,6 +1388,7 @@ rules.weather = Weer rules.weather.frequency = Frequentie: rules.weather.always = Altijd rules.weather.duration = Duur: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 30366b171674..eb4c30578079 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -1376,6 +1376,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 2c4bee5733be..0e340c4c4bad 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -1385,6 +1385,7 @@ rules.weather = Pogoda rules.weather.frequency = Częstotliwość: rules.weather.always = Zawsze rules.weather.duration = Czas trwania: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 67b7149ae5ca..df116db9f96e 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -1395,6 +1395,7 @@ rules.weather = Clima rules.weather.frequency = Frequência: rules.weather.always = Sempre rules.weather.duration = Duração: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index d47d0a9f3fdc..caa61863d85a 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -1376,6 +1376,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index b460cd31f4dc..3de1da874d5d 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -1387,6 +1387,7 @@ rules.weather = Vreme rules.weather.frequency = Frevență: rules.weather.always = Încontinuu rules.weather.duration = Durată: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index ed3df4196a24..f51a8b535b57 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -1387,6 +1387,7 @@ rules.weather = Погода rules.weather.frequency = Периодичность: rules.weather.always = Всегда rules.weather.duration = Длительность: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 02d7803f2e5b..2b7960099fde 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -1389,6 +1389,7 @@ rules.weather = Vreme rules.weather.frequency = Učestalost: rules.weather.always = Stalno rules.weather.duration = Dužina: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index b71af6d348d8..8ea4b2f6ca02 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -1376,6 +1376,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 2adc3a52a3f3..3c65a3055119 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -1388,6 +1388,7 @@ rules.weather = สภาพอากาศ rules.weather.frequency = ความถี่: rules.weather.always = ตลอด rules.weather.duration = ระยะเวลา: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 7175db755382..4331850b3eb3 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -1376,6 +1376,7 @@ rules.weather = Weather rules.weather.frequency = Frequency: rules.weather.always = Always rules.weather.duration = Duration: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index c9feab8f50d5..f7b24bb97914 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -1385,6 +1385,7 @@ rules.weather = Hava Durumu rules.weather.frequency = Sıklık: rules.weather.always = Her zaman rules.weather.duration = Süreklilik: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Oyuncuların düşman üssüne yakın inşa etmesini engeller. Bu, silah kurarken daha da fazla. rules.onlydepositcore.info = Birimlerin Merkez dışında malzeme aktarmasını engeller. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index fd20fb50d45d..744fbafa2c60 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -1396,6 +1396,7 @@ rules.weather = Погода rules.weather.frequency = Повторюваність: rules.weather.always = Завжди rules.weather.duration = Тривалість: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 54da72f432e4..978cdc74419d 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -1406,6 +1406,7 @@ rules.weather = Thời tiết rules.weather.frequency = Tần suất: rules.weather.always = Luôn luôn rules.weather.duration = Thời gian: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Ngăn chặn người chơi khỏi việc đặt bất kỳ thứ gì gần công trình kẻ địch. Khi cố đặt một bệ súng, phạm vi sẽ bị tăng lên, để bệ súng không thể bắn tới kẻ địch. rules.onlydepositcore.info = Ngăn chặn các đơn vị khỏi việc thả vật phẩm vào bất kỳ công trình nào ngoài lõi. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 3c7ed67af27d..9b9658483d8c 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -1398,6 +1398,7 @@ rules.weather = 天气 rules.weather.frequency = 周期: rules.weather.always = 永久 rules.weather.duration = 时长: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 401a86afe69a..b1d946e908ab 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -1393,6 +1393,7 @@ rules.weather = 天氣 rules.weather.frequency = 頻率: rules.weather.always = 永遠 rules.weather.duration = 持續時間: +rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. rules.placerangecheck.info = Prevents players from placing anything near enemy buildings. When trying to place a turret, the range is increased, so the turret will not be able to reach the enemy. rules.onlydepositcore.info = Prevents units from depositing items into any buildings except cores. From 3b287b1bbef7aff7a2e825626ab1712d45f92243 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Sep 2024 19:11:19 -0400 Subject: [PATCH 09/45] Apply difficulty spawn multiplier to unit production --- core/src/mindustry/game/CampaignRules.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/mindustry/game/CampaignRules.java b/core/src/mindustry/game/CampaignRules.java index 3f55661772a7..13e3389d4371 100644 --- a/core/src/mindustry/game/CampaignRules.java +++ b/core/src/mindustry/game/CampaignRules.java @@ -13,5 +13,7 @@ public void apply(Rules rules){ rules.randomWaveAI = randomWaveAI; rules.teams.get(rules.waveTeam).blockHealthMultiplier = difficulty.enemyHealthMultiplier; rules.teams.get(rules.waveTeam).unitHealthMultiplier = difficulty.enemyHealthMultiplier; + rules.teams.get(rules.waveTeam).unitCostMultiplier = 1f / difficulty.enemySpawnMultiplier; + rules.teams.get(rules.waveTeam).unitBuildSpeedMultiplier = difficulty.enemySpawnMultiplier; } } From 5ac7f204e3178bff92b3c76f550a2bdf543cbc86 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Sep 2024 19:45:09 -0400 Subject: [PATCH 10/45] Added extra retusa weapon --- .../sprites/units/weapons/retusa-weapon.png | Bin 0 -> 301 bytes core/src/mindustry/content/UnitTypes.java | 19 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 core/assets-raw/sprites/units/weapons/retusa-weapon.png diff --git a/core/assets-raw/sprites/units/weapons/retusa-weapon.png b/core/assets-raw/sprites/units/weapons/retusa-weapon.png new file mode 100644 index 0000000000000000000000000000000000000000..183907169c2c36bdcbe89f80c57cf1050e49399a GIT binary patch literal 301 zcmV+|0n+}7P)Px#=Sf6CRA_gxki9@}g05mX2!lYNQ1wN@ zblalHi{U@F5lLP*+g&pugb@GC$U9+CmrXnWF*|sdNEoBp&6=Vv(E_x987$#0aIKz0 z;bti40kQ)_5}mW*1~x)b66hKDGET0z3#_wcvZf`F9f*{`Mkq=GJp&OE_(hgo++QmR z5jQa^5h7s5NuUCc+dWwm5}3fd`8=OfCCm&G=ze)p0uh+Zro9*?fsIg<1oCS*Rp-yE zvpr7x-PXMxvICpdqSq+VybwYNA%qY@2=N0i1q42>1>5;V00000NkvXXu0mjf6TES( literal 0 HcmV?d00001 diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 20993b2d37e0..4c7e9def50ef 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1862,6 +1862,23 @@ public static void load(){ }}; }}); + weapons.add(new Weapon("retusa-weapon"){{ + shootSound = Sounds.lasershoot; + reload = 22f; + x = 4.5f; + y = -3.5f; + rotateSpeed = 5f; + mirror = true; + rotate = true; + bullet = new LaserBoltBulletType(5.2f, 10){{ + lifetime = 30f; + healPercent = 5.5f; + collidesTeam = true; + backColor = Pal.heal; + frontColor = Color.white; + }}; + }}); + weapons.add(new Weapon(){{ mirror = false; rotate = true; @@ -1913,7 +1930,7 @@ public static void load(){ trailWidth = 3f; trailLength = 8; - splashDamage = 36f; + splashDamage = 40f; splashDamageRadius = 32f; }}; }}); From 6b93873fcee205808fdc1faf2c989de1ff21d000 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Sep 2024 21:42:00 -0400 Subject: [PATCH 11/45] Difficulty scaling tweaks --- core/src/mindustry/game/Difficulty.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/game/Difficulty.java b/core/src/mindustry/game/Difficulty.java index 3018f9c3f14b..314262f8ef73 100644 --- a/core/src/mindustry/game/Difficulty.java +++ b/core/src/mindustry/game/Difficulty.java @@ -6,8 +6,8 @@ public enum Difficulty{ //TODO these need tweaks easy(1f, 0.75f, 1.5f), normal(1f, 1f, 1f), - hard(1.25f, 1.5f, 0.6f), - eradication(1.5f, 2f, 0.4f); + hard(1.25f, 1.5f, 0.75f), + eradication(1.5f, 2f, 0.5f); public static final Difficulty[] all = values(); From a15a0d945fb79c2c7960634abedbd3831ef1900e Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 14 Sep 2024 09:22:56 -0400 Subject: [PATCH 12/45] Difficulty & AI tweaks --- core/src/mindustry/ai/Pathfinder.java | 8 +++++--- core/src/mindustry/ai/types/FlyingAI.java | 25 +++++++++++++++++++++++ core/src/mindustry/game/Difficulty.java | 4 ++-- gradle.properties | 2 +- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index e37adc91b03c..a18364e8f5d5 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -462,17 +462,19 @@ public static class EnemyCoreField extends Flowfield{ @Override protected void getPositions(IntSeq out){ if(state.rules.randomWaveAI && team == state.rules.waveTeam){ - rand.setSeed(state.rules.waves ? state.wave : (int)(state.tick / (5400))); + rand.setSeed(state.rules.waves ? state.wave : (int)(state.tick / (5400)) + hashCode()); //maximum amount of different target flag types they will attack - int max = 2; + int max = 1; for(int attempt = 0; attempt < 5 && max > 0; attempt++){ var targets = indexer.getEnemy(team, randomTargets[rand.random(randomTargets.length - 1)]); if(!targets.isEmpty()){ max --; for(Building other : targets){ - out.add(other.tile.array()); + if((other.items != null && other.items.any()) || other.status() != BlockStatus.noInput){ + out.add(other.tile.array()); + } } } } diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index f7d533658eb4..b9f718b8a327 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -2,6 +2,7 @@ import arc.math.*; import mindustry.entities.units.*; +import mindustry.game.*; import mindustry.gen.*; import mindustry.world.meta.*; @@ -29,6 +30,30 @@ public void updateMovement(){ } } + @Override + public Teamc targetFlag(float x, float y, BlockFlag flag, boolean enemy){ + if(state.rules.randomWaveAI){ + if(unit.team == Team.derelict) return null; + var list = enemy ? indexer.getEnemy(unit.team, flag) : indexer.getFlagged(unit.team, flag); + if(list.isEmpty()) return null; + + Building closest = null; + float cdist = 0f; + for(Building t : list){ + if((t.items != null && t.items.any()) || t.status() != BlockStatus.noInput){ + float dst = t.dst2(x, y); + if(closest == null || dst < cdist){ + closest = t; + cdist = dst; + } + } + } + return closest; + }else{ + return super.targetFlag(x, y, flag, enemy); + } + } + @Override public Teamc findTarget(float x, float y, float range, boolean air, boolean ground){ var result = findMainTarget(x, y, range, air, ground); diff --git a/core/src/mindustry/game/Difficulty.java b/core/src/mindustry/game/Difficulty.java index 314262f8ef73..1f7943d72e20 100644 --- a/core/src/mindustry/game/Difficulty.java +++ b/core/src/mindustry/game/Difficulty.java @@ -6,8 +6,8 @@ public enum Difficulty{ //TODO these need tweaks easy(1f, 0.75f, 1.5f), normal(1f, 1f, 1f), - hard(1.25f, 1.5f, 0.75f), - eradication(1.5f, 2f, 0.5f); + hard(1.25f, 1.5f, 0.8f), + eradication(1.5f, 2f, 0.6f); public static final Difficulty[] all = values(); diff --git a/gradle.properties b/gradle.properties index 7e507f48ef6f..8ceca6591812 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=8073823706 +archash=25e8455084 From f0027a3eff2c3a169220946016ee3bc1fe7f34c4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 14 Sep 2024 09:43:30 -0400 Subject: [PATCH 13/45] Minor AI fix --- core/src/mindustry/ai/Pathfinder.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index a18364e8f5d5..c6a2ed052846 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -470,12 +470,16 @@ protected void getPositions(IntSeq out){ for(int attempt = 0; attempt < 5 && max > 0; attempt++){ var targets = indexer.getEnemy(team, randomTargets[rand.random(randomTargets.length - 1)]); if(!targets.isEmpty()){ - max --; + boolean any = false; for(Building other : targets){ if((other.items != null && other.items.any()) || other.status() != BlockStatus.noInput){ out.add(other.tile.array()); + any = true; } } + if(any){ + max --; + } } } } From 56c9e9620149eeef77c131477ad776bf499d3f0d Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 14 Sep 2024 14:44:13 -0400 Subject: [PATCH 14/45] Fixed reconstructors not assigning default command --- core/src/mindustry/type/UnitType.java | 3 +++ core/src/mindustry/world/blocks/units/Reconstructor.java | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index af3cd1b562c8..4466ecd536d5 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -458,6 +458,9 @@ public Unit create(Team team){ Unit unit = constructor.get(); unit.team = team; unit.setType(this); + if(controller instanceof CommandAI command && defaultCommand != null){ + command.command = defaultCommand; + } unit.ammo = ammoCapacity; //fill up on ammo upon creation unit.elevation = flying ? 1f : 0; unit.heal(); diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index 25b6e72226dc..94b40a96fe0d 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -311,10 +311,8 @@ public void updateTile(){ if(commandPos != null){ payload.unit.command().commandPosition(commandPos); } - if(command != null){ - //this already checks if it is a valid command for the unit type - payload.unit.command().command(command); - } + //this already checks if it is a valid command for the unit type + payload.unit.command().command(command == null && payload.unit.type.defaultCommand != null ? payload.unit.type.defaultCommand : command); } progress %= 1f; From 0889da2bc7fb4102b71d747d615614391a45f9c0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 14 Sep 2024 21:34:27 -0400 Subject: [PATCH 15/45] Minor arrival fixes for enter payload command --- core/src/mindustry/ai/types/CommandAI.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index 0a90db901d39..b9a77a544a7c 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -218,8 +218,13 @@ public void defaultBehavior(){ vecMovePos.add(group.positions[groupIndex * 2], group.positions[groupIndex * 2 + 1]); } + Building targetBuild = world.buildWorld(targetPos.x, targetPos.y); + //TODO: should the unit stop when it finds a target? - if(stance == UnitStance.patrol && target != null && unit.within(target, unit.type.range - 2f) && !unit.type.circleTarget){ + if( + (stance == UnitStance.patrol && target != null && unit.within(target, unit.type.range - 2f) && !unit.type.circleTarget) || + (command == UnitCommand.enterPayloadCommand && unit.within(targetPos, 4f) || (targetBuild != null && unit.within(targetBuild, targetBuild.block.size * tilesize/2f * 0.9f))) + ){ move = false; } From aafdd35796bca850054199499d06ff4aed92b8f5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Sep 2024 11:36:09 -0400 Subject: [PATCH 16/45] Polar Aerodrome sector submission / Shields absorb unit wrecks --- core/assets/bundles/bundle.properties | 2 ++ core/assets/maps/polarAerodrome.msav | Bin 0 -> 55489 bytes core/src/mindustry/content/Blocks.java | 6 +++--- core/src/mindustry/content/SectorPresets.java | 6 +++++- .../src/mindustry/content/SerpuloTechTree.java | 12 +++++++++++- core/src/mindustry/entities/comp/UnitComp.java | 8 +++++++- .../world/blocks/UnitWreckShield.java | 9 +++++++++ .../world/blocks/defense/ForceProjector.java | 17 +++++++++++++++-- core/src/mindustry/world/meta/BlockFlag.java | 4 +++- 9 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 core/assets/maps/polarAerodrome.msav create mode 100644 core/src/mindustry/world/blocks/UnitWreckShield.java diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index f997ca75e0e8..b02f1d641e2a 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -833,6 +833,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -856,6 +857,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis diff --git a/core/assets/maps/polarAerodrome.msav b/core/assets/maps/polarAerodrome.msav new file mode 100644 index 0000000000000000000000000000000000000000..a4137801c887332d3ea88fa6db14f8f03961339f GIT binary patch literal 55489 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%0A*4)b$E!KVmqNPxtupx-kOvT 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 literal 0 HcmV?d00001 diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index f3a2d9332b8c..82b80e12b829 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1889,21 +1889,21 @@ public static void load(){ titaniumConveyor = new Conveyor("titanium-conveyor"){{ requirements(Category.distribution, with(Items.copper, 1, Items.lead, 1, Items.titanium, 1)); - health = 65; + health = 70; speed = 0.08f; displayedSpeed = 11f; }}; plastaniumConveyor = new StackConveyor("plastanium-conveyor"){{ requirements(Category.distribution, with(Items.plastanium, 1, Items.silicon, 1, Items.graphite, 1)); - health = 75; + health = 90; speed = 4f / 60f; itemCapacity = 10; }}; armoredConveyor = new ArmoredConveyor("armored-conveyor"){{ requirements(Category.distribution, with(Items.plastanium, 1, Items.thorium, 1, Items.metaglass, 1)); - health = 180; + health = 280; speed = 0.08f; displayedSpeed = 11f; }}; diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index 1e39b411059e..75c991be2a87 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -8,7 +8,7 @@ public class SectorPresets{ public static SectorPreset groundZero, craters, biomassFacility, taintedWoods, frozenForest, ruinousShores, facility32m, windsweptIslands, stainedMountains, tarFields, - fungalPass, infestedCanyons, extractionOutpost, saltFlats, overgrowth, + fungalPass, infestedCanyons, extractionOutpost, polarAerodrome, saltFlats, overgrowth, impact0078, desolateRift, nuclearComplex, planetaryTerminal, coastline, navalFortress, @@ -76,6 +76,10 @@ public static void load(){ difficulty = 5; }}; + polarAerodrome = new SectorPreset("polarAerodrome", serpulo, 68){{ + difficulty = 7; + }}; + coastline = new SectorPreset("coastline", serpulo, 108){{ captureWave = 30; difficulty = 5; diff --git a/core/src/mindustry/content/SerpuloTechTree.java b/core/src/mindustry/content/SerpuloTechTree.java index ec0973bf36da..c12fbde5893d 100644 --- a/core/src/mindustry/content/SerpuloTechTree.java +++ b/core/src/mindustry/content/SerpuloTechTree.java @@ -378,7 +378,7 @@ public static void load(){ node(flare, () -> { node(horizon, () -> { node(zenith, () -> { - node(antumbra, () -> { + node(antumbra, Seq.with(new SectorComplete(polarAerodrome)), () -> { node(eclipse, () -> { }); @@ -514,7 +514,17 @@ public static void load(){ new Research(airFactory), new Research(mono) ), () -> { + node(polarAerodrome, Seq.with( + new SectorComplete(fungalPass), + new SectorComplete(overgrowth), + new Research(multiplicativeReconstructor), + new Research(zenith), + new Research(swarmer), + new Research(cyclone), + new Research(blastDrill) + ), () -> { + }); }); }); diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index ffa2bc359281..f5cc151a2cdc 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -25,8 +25,10 @@ import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; +import mindustry.world.blocks.*; import mindustry.world.blocks.environment.*; import mindustry.world.blocks.payloads.*; +import mindustry.world.meta.*; import static mindustry.Vars.*; import static mindustry.logic.GlobalVars.*; @@ -713,7 +715,11 @@ public void destroy(){ //if this unit crash landed (was flying), damage stuff in a radius if(type.flying && !spawnedByCore && type.createWreck && state.rules.unitCrashDamage(team) > 0){ - Damage.damage(team, x, y, Mathf.pow(hitSize, 0.94f) * 1.25f, Mathf.pow(hitSize, 0.75f) * type.crashDamageMultiplier * 5f * state.rules.unitCrashDamage(team), true, false, true); + var shields = indexer.getEnemy(team, BlockFlag.shield); + float crashDamage = Mathf.pow(hitSize, 0.75f) * type.crashDamageMultiplier * 5f * state.rules.unitCrashDamage(team); + if(shields.isEmpty() || !shields.contains(b -> b instanceof UnitWreckShield s && s.absorbWreck(self(), crashDamage))){ + Damage.damage(team, x, y, Mathf.pow(hitSize, 0.94f) * 1.25f, crashDamage, true, false, true); + } } if(!headless && type.createScorch){ diff --git a/core/src/mindustry/world/blocks/UnitWreckShield.java b/core/src/mindustry/world/blocks/UnitWreckShield.java new file mode 100644 index 000000000000..062320cef2e5 --- /dev/null +++ b/core/src/mindustry/world/blocks/UnitWreckShield.java @@ -0,0 +1,9 @@ +package mindustry.world.blocks; + +import mindustry.gen.*; + +//TODO: horrible API design, but I'm not sure of a better way to do this right now. please don't use this class +public interface UnitWreckShield{ + /** @return whether the shield was able to absorb the unit wreck; this should apply damage to the shield if true is returned. */ + boolean absorbWreck(Unit unit, float damage); +} diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 58ee4b6c2d52..96d7efcb922c 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -19,6 +19,7 @@ import mindustry.logic.*; import mindustry.ui.*; import mindustry.world.*; +import mindustry.world.blocks.*; import mindustry.world.consumers.*; import mindustry.world.meta.*; @@ -68,6 +69,7 @@ public ForceProjector(String name){ envEnabled |= Env.space; ambientSound = Sounds.shield; ambientSoundVolume = 0.08f; + flags = EnumSet.of(BlockFlag.shield); if(consumeCoolant){ consume(coolantConsumer = new ConsumeCoolant(coolantConsumption)).boost().update(false); @@ -120,7 +122,7 @@ public void drawPlace(int x, int y, int rotation, boolean valid){ Draw.color(); } - public class ForceBuild extends Building implements Ranged{ + public class ForceBuild extends Building implements Ranged, UnitWreckShield{ public boolean broken = true; public float buildup, radscl, hit, warmup, phaseHeat; @@ -214,6 +216,17 @@ public void deflectBullets(){ } } + @Override + public boolean absorbWreck(Unit unit, float damage){ + boolean absorb = !broken && Intersector.isInRegularPolygon(sides, x, y, realRadius(), shieldRotation, unit.x, unit.y); + if(absorb){ + absorbEffect.at(unit); + hit = 1f; + buildup += damage; + } + return absorb; + } + public float realRadius(){ return (radius + phaseHeat * phaseRadiusBoost) * radscl; } @@ -238,7 +251,7 @@ public void draw(){ Draw.z(Layer.block); Draw.reset(); } - + drawShield(); } diff --git a/core/src/mindustry/world/meta/BlockFlag.java b/core/src/mindustry/world/meta/BlockFlag.java index 257fa0c20a8c..82d073a780d2 100644 --- a/core/src/mindustry/world/meta/BlockFlag.java +++ b/core/src/mindustry/world/meta/BlockFlag.java @@ -22,6 +22,8 @@ public enum BlockFlag{ extinguisher, /** Is a drill. */ drill, + /** Force projector block. */ + shield, //special, internal identifiers launchPad, @@ -32,5 +34,5 @@ public enum BlockFlag{ public final static BlockFlag[] all = values(); /** Values for logic only. Filters out some internal flags. */ - public final static BlockFlag[] allLogic = {core, storage, generator, turret, factory, repair, battery, reactor, drill}; + public final static BlockFlag[] allLogic = {core, storage, generator, turret, factory, repair, battery, reactor, drill, shield}; } From 7520f72361747e300c4cdf4d5495360fecdcaa7e Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sun, 15 Sep 2024 15:37:16 +0000 Subject: [PATCH 17/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 ++ core/assets/bundles/bundle_bg.properties | 2 ++ core/assets/bundles/bundle_ca.properties | 2 ++ core/assets/bundles/bundle_cs.properties | 2 ++ core/assets/bundles/bundle_da.properties | 2 ++ core/assets/bundles/bundle_de.properties | 2 ++ core/assets/bundles/bundle_es.properties | 2 ++ core/assets/bundles/bundle_et.properties | 2 ++ core/assets/bundles/bundle_eu.properties | 2 ++ core/assets/bundles/bundle_fi.properties | 2 ++ core/assets/bundles/bundle_fil.properties | 2 ++ core/assets/bundles/bundle_fr.properties | 2 ++ core/assets/bundles/bundle_hu.properties | 2 ++ core/assets/bundles/bundle_id_ID.properties | 2 ++ core/assets/bundles/bundle_it.properties | 2 ++ core/assets/bundles/bundle_ja.properties | 2 ++ core/assets/bundles/bundle_ko.properties | 2 ++ core/assets/bundles/bundle_lt.properties | 2 ++ core/assets/bundles/bundle_nl.properties | 2 ++ core/assets/bundles/bundle_nl_BE.properties | 2 ++ core/assets/bundles/bundle_pl.properties | 2 ++ core/assets/bundles/bundle_pt_BR.properties | 2 ++ core/assets/bundles/bundle_pt_PT.properties | 2 ++ core/assets/bundles/bundle_ro.properties | 2 ++ core/assets/bundles/bundle_ru.properties | 2 ++ core/assets/bundles/bundle_sr.properties | 2 ++ core/assets/bundles/bundle_sv.properties | 2 ++ core/assets/bundles/bundle_th.properties | 2 ++ core/assets/bundles/bundle_tk.properties | 2 ++ core/assets/bundles/bundle_tr.properties | 2 ++ core/assets/bundles/bundle_uk_UA.properties | 2 ++ core/assets/bundles/bundle_vi.properties | 2 ++ core/assets/bundles/bundle_zh_CN.properties | 2 ++ core/assets/bundles/bundle_zh_TW.properties | 2 ++ 34 files changed, 68 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 2f0dc18f2d5c..9e27ad9b3a83 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -806,6 +806,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Планетарны Пускавы Тэрмінал sector.coastline.name = Берагавая Лінія sector.navalFortress.name = Марская Крэпасць +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Аптымальнае месца каб пачаць. Нізкая варожая пагроза. Мала рэсурсаў.\nВазімце як мага болей свінца і медзі.\nІ рухайцеся далей. sector.frozenForest.description = Нават тут, бліжэй да гор, распаўсюдзіліся споры. Ледзяныя тэмпературы не могуць утрымліваць іх заўсёды.\n\nПачніце выкарыстоўваць энергію. Пабудуйце генератары на цвёрдым паліве. Даведайцеся як выкарыстоуваць рэгенератары. @@ -828,6 +829,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Пачатак sector.aegis.name = Ахова sector.lake.name = Рака diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 5408ae51812a..515342b4723d 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -815,6 +815,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Терминал за космически мисии sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Перфектното място за започване отначало. Ниска заплаха. Ниски ресурси.\nСъбери колкото можеш мед и олово.\nПродължи напред. sector.frozenForest.description = Дори тук, близо до планините, спорите са се разпространили. Мразовитите температури не могат да ги задържат вечно.\n\nОвладейте електричеството. Постройте горивни генератори. Научете се да ползвате възстрановители. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 139cdfd00ce2..f21106cb634f 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -819,6 +819,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Terminal de llançament interplanetari sector.coastline.name = Línia de costa sector.navalFortress.name = Fortalesa naval +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = El lloc adequat per a començar de nou. Amenaça enemiga baixa. Pocs recursos.\nRecolliu tot el coure i plom que pugueu.\nDesprés, continueu en un altre sector. sector.frozenForest.description = Les espores han arribat fins aquí, prop de les muntanyes. Les temperatures baixes no les podran contenir per sempre.\n\nComenceu el camí del poder. Construïu generadors a combustió. Apreneu a fer servir els reparadors. @@ -841,6 +842,7 @@ sector.navalFortress.description = L’enemic ha establert una base en una illa sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = El principi sector.aegis.name = L’ègida diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index cdf876164699..625aae16d57f 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -817,6 +817,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetární odpalovací terminál sector.coastline.name = Pobřežní čára sector.navalFortress.name = Námořní pevnost +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. @@ -839,6 +840,7 @@ sector.navalFortress.description = Nepřítel si vybudoval základnu na odlehlé sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Nástup sector.aegis.name = Aegis sector.lake.name = Jezero diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 66f2d4e2295c..ad2453c4410d 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index b201de730762..3d7e48327229 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -827,6 +827,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetares Launchterminal sector.coastline.name = Küstenlinie sector.navalFortress.name = Wasserfestung +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Der optimale Ort, um anzufangen. Schwache Gegner und weniger Ressourcen.\nSammele so viel Kupfer und Blei wie möglich.\nGeh weiter. sector.frozenForest.description = Auch hier, näher an den Bergen, sind die Sporen. Sogar die niedrigen Temperaturen können sie nicht zurückhalten.\n\nLerne, Strom zu verwenden. Baue Verbrennungsgeneratoren und Reparateure. @@ -849,6 +850,7 @@ sector.navalFortress.description = Der Gegner hat auf einer abgelegenen, von Nat sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Der Anfang sector.aegis.name = Aegis diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 81ccf9eb8019..127af4fbecb1 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -823,6 +823,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Terminal de Lanzamiento Interplanetario sector.coastline.name = Ruta Costera sector.navalFortress.name = Fortaleza Naval +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = La ubicación adecuada para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúne la mayor cantidad de plomo y cobre posible y sigue adelante. sector.frozenForest.description = Incluso aquí, cerca de las montañas, se han extendido las esporas. Las gélidas temperaturas no las contendrán para siempre.\nDescubre la energía eléctrica. Construye generadores de combustión. Aprende a usar reparadores. @@ -845,6 +846,7 @@ sector.navalFortress.description = El enemigo ha establecido una base en una rem sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = El Inicio sector.aegis.name = Égida diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index dc930ba05cd6..b73390a2bca3 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 88582c929902..739831b8ad93 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -809,6 +809,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -831,6 +832,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index b0f06221ca7c..6ac8d62fd9f4 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetaarinen laukaisuterminaali sector.coastline.name = Rantaviiva sector.navalFortress.name = Laivastolinnoitus +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Optimaalinen sijainti aloittaa jälleen kerran. Matala vihollisuhka. Vähän resursseja.\nKerää niin paljon kuparia ja lyijyä, kuin mahdollista.\nJatka matkaa. sector.frozenForest.description = Itiöt ovat levittäytyneet jopa tänne, lähemmäs vuoria. Jäätävät lämpötilat eivät voi torjua niitä ikuisesti.\n\nAloita seikkailusi virtaan. Rakenna polttogeneraattoreita. Opi käyttämään korjaajia. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Alku sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 105e138a05d8..16e847ae451d 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Ang pinakamainam na lokasyon upang magsimulang muli. Mababang banta ng kaaway. Kaunting mapagkukunan.\nMagtipon ng mas maraming tingga at tanso hangga't maaari.\nItuloy. sector.frozenForest.description = Kahit dito, mas malapit sa mga bundok, ang mga spore ay kumalat. Ang napakalamig na temperatura ay hindi maaaring maglaman ng mga ito magpakailanman.\n\nSimulan ang pakikipagsapalaran sa kapangyarihan. Bumuo ng mga generator ng pagkasunog. Matutong gumamit ng mga mender. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index f65a688aabcf..3374a8447ed3 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -830,6 +830,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Un endroit optimal pour commencer. Avec une menace ennemie faible et peu de ressources disponibles.\nRassemblez autant de cuivre et de plomb que possible pour continuer votre exploration. sector.frozenForest.description = Même ici, près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir indéfiniment.\n\nCommencez votre production d'énergie en construisant des générateurs à combustion et apprenez à utiliser les bâtiments de soin. @@ -852,6 +853,7 @@ sector.navalFortress.description = L’ennemi a établi une base sur une île is sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 3cf89cbbca71..3d26ba4bc591 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -832,6 +832,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Bolygó körüli kilövőállás sector.coastline.name = Partvonal sector.navalFortress.name = Haditengerészeti erőd +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az elektromosság erejét! Építs égetőerőműveket! Tanuld meg a foltozók használatát! @@ -854,6 +855,7 @@ sector.navalFortress.description = Az ellenség bázist létesített egy távoli sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = A kezdet sector.aegis.name = Égisz diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 6a13dbabe9ef..6163d6ee8b7a 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -832,6 +832,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Pusat Peluncuran Planet sector.coastline.name = Tepi Pantai sector.navalFortress.name = Benteng Laut +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Sedikit sumber daya.\nKumpulkan timah dan tembaga sebanyak yang Anda bisa.\nMulai dari sini. sector.frozenForest.description = Di sini, dekat dengan gunung, spora sudah menyebar. Suhu dingin tidak dapat menahannya.\n\nMulailah hasilkan listrik. Bangun generator pembakar. Pelajari cara menggunakan mender. @@ -854,6 +855,7 @@ sector.navalFortress.description = Musuh telah mendirikan markas di sebuah pulau sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Serangan Awal sector.aegis.name = Aegis diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 8a8fad77d181..8c5d5924d44f 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -813,6 +813,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Terminale di Lancio Planetario sector.coastline.name = Coastline sector.navalFortress.name = Fortezza navale +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = La posizione ottimale per ricominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nParti. sector.frozenForest.description = Anche qui, più vicino alle montagne, le spore si sono diffuse. Le temperature gelide non possono contenerle per sempre.\n\nInizia l'avventura nell'energia. Costruisci generatori a combustione. Impara a usare i riparatori. @@ -835,6 +836,7 @@ sector.navalFortress.description = Il nemico ha stabilito una base su un'isola r sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Nome diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index e29dee59809d..d2bea334921c 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -817,6 +817,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = 惑星間発射ターミナル sector.coastline.name = 海岸線 sector.navalFortress.name = 海軍要塞 +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = 奪回を始めるには最適な場所です。敵の脅威は小さいですが、資源が乏しいです。\nできるだけ多くの銅と鉛を集めましょう。\n始めましょう。 sector.frozenForest.description = ここでさえ、山に近づくほど胞子が広がっています。\n極寒の気候もでさえ胞子を永遠に封じ込めることはできませんでした。\n\n電気に挑みましょう。\n火力発電機を建設し、修復機の使い方を学びましょう。 @@ -839,6 +840,7 @@ sector.navalFortress.description = 敵は、自然要塞化した離島に基地 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = オンセット sector.aegis.name = イージス sector.lake.name = レイク diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 6b60c6207855..597ac1745d2c 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -818,6 +818,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = 대행성 출격단지 sector.coastline.name = 해안선 sector.navalFortress.name = 해군 요새 +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배워야 합니다. @@ -840,6 +841,7 @@ sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = 시작 sector.aegis.name = 보호 sector.lake.name = 호수 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 8ed948b7b3a2..ca2428d3c565 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index bb44df7b2aec..65f5f27e9e74 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -818,6 +818,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetery Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = De optimale locatie om nog een keer te beginnen. Lage vijandelijke dreiging. Enkele grondstoffen.\nVerzamel zoveel mogelijk lood en koper.\nGa door. sector.frozenForest.description = Zelfs hier, dichter bij de bergen, hebben de schimmels zich verspreid. De koude temperaturen kunnen ze niet eeuwig tegenhouden.\n\nBegin de onderneming in energie. Bouw verbrandingsgeneratoren. Leer herstellers te gebruiken. @@ -840,6 +841,7 @@ sector.navalFortress.description = De vijand heeft een basis gevestigd op een af sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index eb4c30578079..bdf839b00d62 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 0e340c4c4bad..97afe7c59fa4 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -815,6 +815,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetarny Terminal Startowy sector.coastline.name = Linia Brzegowa sector.navalFortress.name = Morska Forteca +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz możliwie jak najwięcej miedzi i ołowiu.\nPrzejdź do następnej strefy jak najszybciej. sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki się rozprzestrzeniały. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nZacznij od produkcji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. @@ -837,6 +838,7 @@ sector.navalFortress.description = Wróg założył bazę na odległej, naturaln sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Początek sector.aegis.name = Egida diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index df116db9f96e..de8848bf34ef 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -823,6 +823,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Terminal de Lançamento Planetário. sector.coastline.name = Litoral sector.navalFortress.name = Fortaleza Naval +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue. sector.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores. @@ -845,6 +846,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = O Começo sector.aegis.name = Aegis diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index caa61863d85a..e7461ac4739a 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 3de1da874d5d..ef064ebe42c4 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -817,6 +817,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Terminalul de Lansare Planetară sector.coastline.name = Zona de Coastă sector.navalFortress.name = Fortăreața Navală +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe. sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare. @@ -839,6 +840,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index f51a8b535b57..3825b34c4b05 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -818,6 +818,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Планетарный пусковой терминал sector.coastline.name = Береговая линия sector.navalFortress.name = Прибрежная крепость +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Оптимальная локация для повторных игр. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше. sector.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором. @@ -840,6 +841,7 @@ sector.navalFortress.description = Враг возвел базу на удал sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Начало sector.aegis.name = Защита diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 2b7960099fde..bbf7f2dfbbfc 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -818,6 +818,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetarno Lansirni Terminal sector.coastline.name = Obala sector.navalFortress.name = Pomorska Tvrđava +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Savršena lokacija za ponovni početak. Niska neprijateljska pretnja, ali i mala količina resursa.\nSakupite sav bakar i svo olovo koje možete. Nastavite dalje. sector.frozenForest.description = Čak i ovde, u blizini planina, spore su se proširile… ledene temperature ih neće večno zadržati.\n\nZapočnite upotrebu elektriciteta. Graditei sagorevne generatore. Naučite primenu popravljača. @@ -840,6 +841,7 @@ sector.navalFortress.description = Neprijatelj je sagradio bazu na dalekom, prir sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Žačetak sector.aegis.name = Okrilje diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 8ea4b2f6ca02..ea0653b95129 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 3c65a3055119..bb1eeaa20b77 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -818,6 +818,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = ท่าปล่อยจรวดอวกาศยาน sector.coastline.name = แนวชายฝั่ง sector.navalFortress.name = ปราการแห่งวารี +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = จุดที่ดีที่สุดในการเริ่มต้นอีกครั้งนึง ศัตรูน้อย ทรัพยากรน้อย\nเก็บ[accent]ตะกั่ว[]และ[accent]ทองแดง[]ให้ได้มากที่สุด\nแล้วลุยต่อ sector.frozenForest.description = แม้แต่ที่นี่ ณ ที่ที่อยู่ใกล้ภูเขา [accent]สปอร์[]ก็ยังแพร่มาถึงที่นี่ อากาศอันแสนเย็นเยือกไม่สามารถหยุดยั้งพวกมันได้ตลอดไป\n\nเริ่มต้นการใช้ไฟฟ้า สร้างเครื่องกำเนิดไฟฟ้าเผาไหม้ เรียนรู้ที่จะใช้เครื่องซ่อมแซม @@ -840,6 +841,7 @@ sector.navalFortress.description = ศัตรูได้ตั้งฐาน sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = การเริ่มต้น sector.aegis.name = เกราะกำบัง diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 4331850b3eb3..d3571621482a 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -807,6 +807,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index f7b24bb97914..b05796d9ad44 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -817,6 +817,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Gezegenler Arası Terminal sector.coastline.name = Kıyı Şeridi sector.navalFortress.name = Deniz Kalesi +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle. sector.frozenForest.description = Burada, dağlara yakın bölgelerde bile sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren. @@ -839,6 +840,7 @@ sector.navalFortress.description = Düşman bu uzak adaya doğal olarak korunan sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Yeni Başlangıç sector.aegis.name = Siper sector.lake.name = Göletçik diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 744fbafa2c60..c850fda20472 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -826,6 +826,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Термінал планетарного запуску sector.coastline.name = Узбережжя sector.navalFortress.name = Морська фортеця +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗберіть якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі. sector.frozenForest.description = Навіть тут, ближче до гір, уже поширилися спори. Холодна температура не змогла стримати їх назавжди.\n\nЗважтесь створити енергію. Побудуйте генератори внутрішнього згорання. Навчіться користуватися регенераторами. @@ -848,6 +849,7 @@ sector.navalFortress.description = Ворог створив базу на ві sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Перший наступ sector.aegis.name = Егіда diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 978cdc74419d..a014e4058b2e 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -832,6 +832,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ địch thấp. Ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. sector.frozenForest.description = Dù ở đây, gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy xây dựng máy phát điện đốt. Học cách sử dụng máy sửa chữa. @@ -854,6 +855,7 @@ sector.navalFortress.description = Kẻ địch đã thiết lập một căn c sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset sector.aegis.name = Aegis diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 9b9658483d8c..efdad2824e92 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -827,6 +827,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = 行星发射终端 sector.coastline.name = 边际海湾 sector.navalFortress.name = 海军要塞 +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = 踏上旅程的最佳位置。 这里的敌人威胁很小,但资源也少。\n\n尽你所能收集铅和铜,出发吧! sector.frozenForest.description = 一个靠近山脉的地方。 哪怕是在这里,也有了孢子扩散的痕迹。\n连极寒也无法长久地约束它们。\n\n开始运用电力,建造火力发电机并学会使用修理器。 @@ -849,6 +850,7 @@ sector.navalFortress.description = 敌人在一个有天然防御屏障的偏远 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = 始发地区 sector.aegis.name = 庇护前哨 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index b1d946e908ab..6f034a957f8b 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -823,6 +823,7 @@ sector.infestedCanyons.name = Infested Canyons sector.planetaryTerminal.name = 星際發射站 sector.coastline.name = 海岸 sector.navalFortress.name = 海上要塞 +sector.polarAerodrome.name = Polar Aerodrome sector.groundZero.description = 再次開始的最佳位置。敵人威脅程度低。資源少。\n盡可能地採集鉛與銅。\n繼續前進。 sector.frozenForest.description = 即使是在如此靠近山脈的地方,孢子也已經擴散了。低溫無法永遠遏止它們。\n\n開始探索電力。建造火力發電機。學習如何修理方塊。 @@ -845,6 +846,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon +sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = 著陸點 sector.aegis.name = 神盾 From f6ee9b7ffa74d1e8d9e59b67336bb2da19814155 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Sep 2024 11:51:39 -0400 Subject: [PATCH 18/45] Draw selected building for payload enter command --- core/src/mindustry/input/InputHandler.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 6853502541a9..8375a433eb51 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1055,6 +1055,13 @@ public void drawCommanded(){ if(ai.attackTarget == null){ Drawf.square(lineDest.getX(), lineDest.getY(), 3.5f); + + if(ai.currentCommand() == UnitCommand.enterPayloadCommand){ + var build = world.buildWorld(lineDest.getX(), lineDest.getY()); + if(build != null && build.block.acceptsPayloads && build.team == unit.team){ + Drawf.selected(build, Pal.accent); + } + } } } From 20a7f3f3001dd88deb75d1fbdc5c60c0470de977 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Sep 2024 12:24:52 -0400 Subject: [PATCH 19/45] Atolls sector map submission / Windswept Islands rework submission --- core/assets/bundles/bundle.properties | 2 ++ core/assets/maps/atolls.msav | Bin 0 -> 43056 bytes core/assets/maps/windsweptIslands.msav | Bin 13486 -> 19186 bytes core/src/mindustry/ai/types/CommandAI.java | 2 +- core/src/mindustry/content/SectorPresets.java | 6 +++++- .../mindustry/content/SerpuloTechTree.java | 10 ++++++++-- core/src/mindustry/input/InputHandler.java | 2 +- core/src/mindustry/world/Block.java | 2 +- .../world/blocks/payloads/BlockProducer.java | 4 ++-- .../world/blocks/payloads/PayloadBlock.java | 2 +- .../blocks/payloads/PayloadConveyor.java | 2 +- .../world/blocks/payloads/PayloadSource.java | 2 +- 12 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 core/assets/maps/atolls.msav diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index b02f1d641e2a..bcd0ca3ce3f7 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -834,6 +834,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -856,6 +857,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, #do not translate sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/maps/atolls.msav b/core/assets/maps/atolls.msav new file mode 100644 index 0000000000000000000000000000000000000000..6f608eb951d08e8f4e0eb5e6b49aeb9aa0ee3a39 GIT binary patch literal 43056 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%0Df~qo?t>Lrf7KyS-mT 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 U@&U%b(v3H1I9I>_54sg*FxqMfa{vGU literal 0 HcmV?d00001 diff --git a/core/assets/maps/windsweptIslands.msav b/core/assets/maps/windsweptIslands.msav index 690a92471679dfe2ce578d23af5fb08dace93a09..32daa4dbffc77df0765526fb48dd3005213cf64e 100644 GIT binary patch literal 19186 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 N?LPzM{{hk(n7E)H5W)Ze literal 13486 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 diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index b9a77a544a7c..b72cba2d6879 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -326,7 +326,7 @@ public void defaultBehavior(){ void finishPath(){ //the enter payload command never finishes until they are actually accepted - if(command == UnitCommand.enterPayloadCommand && commandQueue.size == 0 && targetPos != null && world.buildWorld(targetPos.x, targetPos.y) != null && world.buildWorld(targetPos.x, targetPos.y).block.acceptsPayloads){ + if(command == UnitCommand.enterPayloadCommand && commandQueue.size == 0 && targetPos != null && world.buildWorld(targetPos.x, targetPos.y) != null && world.buildWorld(targetPos.x, targetPos.y).block.acceptsUnitPayloads){ return; } diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index 75c991be2a87..d739ed46e2f0 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -8,7 +8,7 @@ public class SectorPresets{ public static SectorPreset groundZero, craters, biomassFacility, taintedWoods, frozenForest, ruinousShores, facility32m, windsweptIslands, stainedMountains, tarFields, - fungalPass, infestedCanyons, extractionOutpost, polarAerodrome, saltFlats, overgrowth, + fungalPass, infestedCanyons, atolls, extractionOutpost, polarAerodrome, saltFlats, overgrowth, impact0078, desolateRift, nuclearComplex, planetaryTerminal, coastline, navalFortress, @@ -97,6 +97,10 @@ public static void load(){ difficulty = 4; }}; + atolls = new SectorPreset("atolls", serpulo, 1){{ + difficulty = 7; + }}; + overgrowth = new SectorPreset("overgrowth", serpulo, 134){{ difficulty = 5; }}; diff --git a/core/src/mindustry/content/SerpuloTechTree.java b/core/src/mindustry/content/SerpuloTechTree.java index c12fbde5893d..3a5563e4e04f 100644 --- a/core/src/mindustry/content/SerpuloTechTree.java +++ b/core/src/mindustry/content/SerpuloTechTree.java @@ -427,8 +427,8 @@ public static void load(){ }); node(additiveReconstructor, Seq.with(new SectorComplete(biomassFacility)), () -> { - node(multiplicativeReconstructor, () -> { - node(exponentialReconstructor, Seq.with(new SectorComplete(overgrowth)), () -> { + node(multiplicativeReconstructor, Seq.with(new SectorComplete(overgrowth)), () -> { + node(exponentialReconstructor, () -> { node(tetrativeReconstructor, () -> { }); @@ -565,7 +565,13 @@ public static void load(){ new Research(UnitTypes.mace), new Research(UnitTypes.flare) ), () -> { + node(atolls, Seq.with( + new SectorComplete(windsweptIslands), + new Research(multiplicativeReconstructor), + new Research(mega) + ), () -> { + }); }); }); diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 8375a433eb51..fcf7aedfb9ab 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1058,7 +1058,7 @@ public void drawCommanded(){ if(ai.currentCommand() == UnitCommand.enterPayloadCommand){ var build = world.buildWorld(lineDest.getX(), lineDest.getY()); - if(build != null && build.block.acceptsPayloads && build.team == unit.team){ + if(build != null && build.block.acceptsUnitPayloads && build.team == unit.team){ Drawf.selected(build, Pal.accent); } } diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index c324ae4978e2..3bd6c3977ccf 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -58,7 +58,7 @@ public class Block extends UnlockableContent implements Senseable{ /** If true, this block can output payloads; affects blending. */ public boolean outputsPayload = false; /** If true, this block can input payloads; affects unit payload enter behavior. */ - public boolean acceptsPayloads = false; + public boolean acceptsUnitPayloads = false; /** If true, payloads will attempt to move into this block. */ public boolean acceptsPayload = false; /** Visual flag use for blending of certain transportation blocks. */ diff --git a/core/src/mindustry/world/blocks/payloads/BlockProducer.java b/core/src/mindustry/world/blocks/payloads/BlockProducer.java index e5eccb570f08..2bc66e0e1ffa 100644 --- a/core/src/mindustry/world/blocks/payloads/BlockProducer.java +++ b/core/src/mindustry/world/blocks/payloads/BlockProducer.java @@ -30,7 +30,7 @@ public BlockProducer(String name){ hasItems = true; solid = true; hasPower = true; - acceptsPayloads = false; + acceptsUnitPayloads = false; rotate = true; regionRotated1 = 1; @@ -69,7 +69,7 @@ public void setBars(){ addBar("progress", (BlockProducerBuild entity) -> new Bar("bar.progress", Pal.ammo, () -> entity.recipe() == null ? 0f : (entity.progress / entity.recipe().buildCost))); } - + public abstract class BlockProducerBuild extends PayloadBlockBuild{ public float progress, time, heat; diff --git a/core/src/mindustry/world/blocks/payloads/PayloadBlock.java b/core/src/mindustry/world/blocks/payloads/PayloadBlock.java index ab7dc9532062..e6a913390bec 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadBlock.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadBlock.java @@ -25,7 +25,7 @@ public PayloadBlock(String name){ update = true; sync = true; group = BlockGroup.payloads; - acceptsPayloads = true; + acceptsUnitPayloads = true; envEnabled |= Env.space | Env.underwater; } diff --git a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java index ec5523dd1c0a..650846987b3c 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java @@ -31,7 +31,7 @@ public PayloadConveyor(String name){ update = true; outputsPayload = true; noUpdateDisabled = true; - acceptsPayloads = true; + acceptsUnitPayloads = true; priority = TargetPriority.transport; envEnabled |= Env.space | Env.underwater; sync = true; diff --git a/core/src/mindustry/world/blocks/payloads/PayloadSource.java b/core/src/mindustry/world/blocks/payloads/PayloadSource.java index 1354b9edc167..b20c9b0a13f1 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadSource.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadSource.java @@ -37,7 +37,7 @@ public PayloadSource(String name){ noUpdateDisabled = true; clearOnDoubleTap = true; regionRotated1 = 1; - acceptsPayloads = false; + acceptsUnitPayloads = false; commandable = true; config(Block.class, (PayloadSourceBuild build, Block block) -> { From 2f8729752f27e7c0e80f2dd61d1dd4cd8f37ff04 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sun, 15 Sep 2024 16:25:48 +0000 Subject: [PATCH 20/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 ++ core/assets/bundles/bundle_bg.properties | 2 ++ core/assets/bundles/bundle_ca.properties | 2 ++ core/assets/bundles/bundle_cs.properties | 2 ++ core/assets/bundles/bundle_da.properties | 2 ++ core/assets/bundles/bundle_de.properties | 2 ++ core/assets/bundles/bundle_es.properties | 2 ++ core/assets/bundles/bundle_et.properties | 2 ++ core/assets/bundles/bundle_eu.properties | 2 ++ core/assets/bundles/bundle_fi.properties | 2 ++ core/assets/bundles/bundle_fil.properties | 2 ++ core/assets/bundles/bundle_fr.properties | 2 ++ core/assets/bundles/bundle_hu.properties | 2 ++ core/assets/bundles/bundle_id_ID.properties | 2 ++ core/assets/bundles/bundle_it.properties | 2 ++ core/assets/bundles/bundle_ja.properties | 2 ++ core/assets/bundles/bundle_ko.properties | 2 ++ core/assets/bundles/bundle_lt.properties | 2 ++ core/assets/bundles/bundle_nl.properties | 2 ++ core/assets/bundles/bundle_nl_BE.properties | 2 ++ core/assets/bundles/bundle_pl.properties | 2 ++ core/assets/bundles/bundle_pt_BR.properties | 2 ++ core/assets/bundles/bundle_pt_PT.properties | 2 ++ core/assets/bundles/bundle_ro.properties | 2 ++ core/assets/bundles/bundle_ru.properties | 2 ++ core/assets/bundles/bundle_sr.properties | 2 ++ core/assets/bundles/bundle_sv.properties | 2 ++ core/assets/bundles/bundle_th.properties | 2 ++ core/assets/bundles/bundle_tk.properties | 2 ++ core/assets/bundles/bundle_tr.properties | 2 ++ core/assets/bundles/bundle_uk_UA.properties | 2 ++ core/assets/bundles/bundle_vi.properties | 2 ++ core/assets/bundles/bundle_zh_CN.properties | 2 ++ core/assets/bundles/bundle_zh_TW.properties | 2 ++ 34 files changed, 68 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 9e27ad9b3a83..a452f54d784c 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -807,6 +807,7 @@ sector.planetaryTerminal.name = Планетарны Пускавы Тэрмін sector.coastline.name = Берагавая Лінія sector.navalFortress.name = Марская Крэпасць sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Аптымальнае месца каб пачаць. Нізкая варожая пагроза. Мала рэсурсаў.\nВазімце як мага болей свінца і медзі.\nІ рухайцеся далей. sector.frozenForest.description = Нават тут, бліжэй да гор, распаўсюдзіліся споры. Ледзяныя тэмпературы не могуць утрымліваць іх заўсёды.\n\nПачніце выкарыстоўваць энергію. Пабудуйце генератары на цвёрдым паліве. Даведайцеся як выкарыстоуваць рэгенератары. @@ -828,6 +829,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Пачатак diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 515342b4723d..10dda802d7bf 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -816,6 +816,7 @@ sector.planetaryTerminal.name = Терминал за космически ми sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Перфектното място за започване отначало. Ниска заплаха. Ниски ресурси.\nСъбери колкото можеш мед и олово.\nПродължи напред. sector.frozenForest.description = Дори тук, близо до планините, спорите са се разпространили. Мразовитите температури не могат да ги задържат вечно.\n\nОвладейте електричеството. Постройте горивни генератори. Научете се да ползвате възстрановители. @@ -837,6 +838,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index f21106cb634f..fdbbfbf357fb 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -820,6 +820,7 @@ sector.planetaryTerminal.name = Terminal de llançament interplanetari sector.coastline.name = Línia de costa sector.navalFortress.name = Fortalesa naval sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = El lloc adequat per a començar de nou. Amenaça enemiga baixa. Pocs recursos.\nRecolliu tot el coure i plom que pugueu.\nDesprés, continueu en un altre sector. sector.frozenForest.description = Les espores han arribat fins aquí, prop de les muntanyes. Les temperatures baixes no les podran contenir per sempre.\n\nComenceu el camí del poder. Construïu generadors a combustió. Apreneu a fer servir els reparadors. @@ -841,6 +842,7 @@ sector.coastline.description = S’han detectat restes de tecnologia naval a pro sector.navalFortress.description = L’enemic ha establert una base en una illa distant amb defenses geològiques naturals. Destruïu el post avançat i aconseguiu i investigueu les seves tecnologies navals avançades. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 625aae16d57f..3dd0c33bfa5d 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -818,6 +818,7 @@ sector.planetaryTerminal.name = Planetární odpalovací terminál sector.coastline.name = Pobřežní čára sector.navalFortress.name = Námořní pevnost sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. @@ -839,6 +840,7 @@ sector.coastline.description = V této lokaci byly objeveny pozůstatky techniky sector.navalFortress.description = Nepřítel si vybudoval základnu na odlehlém, přírodou opevněném ostrově. Zničte tuto základnu. Získejte jejich pokročilou technologii námořních plavidel a vyzkoumejte ji. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Nástup diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index ad2453c4410d..68eed2ffb961 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 3d7e48327229..7c9f870a8e23 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -828,6 +828,7 @@ sector.planetaryTerminal.name = Planetares Launchterminal sector.coastline.name = Küstenlinie sector.navalFortress.name = Wasserfestung sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Der optimale Ort, um anzufangen. Schwache Gegner und weniger Ressourcen.\nSammele so viel Kupfer und Blei wie möglich.\nGeh weiter. sector.frozenForest.description = Auch hier, näher an den Bergen, sind die Sporen. Sogar die niedrigen Temperaturen können sie nicht zurückhalten.\n\nLerne, Strom zu verwenden. Baue Verbrennungsgeneratoren und Reparateure. @@ -849,6 +850,7 @@ sector.coastline.description = Überreste alter Schiffstechnologien wurden hier sector.navalFortress.description = Der Gegner hat auf einer abgelegenen, von Natur aus sicheren Insel eine Basis aufgebaut. Zerstöre diesen Außenposten. Finde deren fortgeschrittene Schiffstechnologien und erforsche diese weiter. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 127af4fbecb1..80dcb56f99fb 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -824,6 +824,7 @@ sector.planetaryTerminal.name = Terminal de Lanzamiento Interplanetario sector.coastline.name = Ruta Costera sector.navalFortress.name = Fortaleza Naval sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = La ubicación adecuada para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúne la mayor cantidad de plomo y cobre posible y sigue adelante. sector.frozenForest.description = Incluso aquí, cerca de las montañas, se han extendido las esporas. Las gélidas temperaturas no las contendrán para siempre.\nDescubre la energía eléctrica. Construye generadores de combustión. Aprende a usar reparadores. @@ -845,6 +846,7 @@ sector.coastline.description = Se han detectado restos de tecnología de unidade sector.navalFortress.description = El enemigo ha establecido una base en una remota isla naturalmente fortificada. Destruye este puesto de avanzada. Hazte con su tecnología naval avanzada, e investígala. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index b73390a2bca3..e8aa85c3b01a 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 739831b8ad93..40fea745bebf 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -810,6 +810,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -831,6 +832,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 6ac8d62fd9f4..69912720ccbe 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetaarinen laukaisuterminaali sector.coastline.name = Rantaviiva sector.navalFortress.name = Laivastolinnoitus sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Optimaalinen sijainti aloittaa jälleen kerran. Matala vihollisuhka. Vähän resursseja.\nKerää niin paljon kuparia ja lyijyä, kuin mahdollista.\nJatka matkaa. sector.frozenForest.description = Itiöt ovat levittäytyneet jopa tänne, lähemmäs vuoria. Jäätävät lämpötilat eivät voi torjua niitä ikuisesti.\n\nAloita seikkailusi virtaan. Rakenna polttogeneraattoreita. Opi käyttämään korjaajia. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Alku diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 16e847ae451d..5b07d13b0427 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Ang pinakamainam na lokasyon upang magsimulang muli. Mababang banta ng kaaway. Kaunting mapagkukunan.\nMagtipon ng mas maraming tingga at tanso hangga't maaari.\nItuloy. sector.frozenForest.description = Kahit dito, mas malapit sa mga bundok, ang mga spore ay kumalat. Ang napakalamig na temperatura ay hindi maaaring maglaman ng mga ito magpakailanman.\n\nSimulan ang pakikipagsapalaran sa kapangyarihan. Bumuo ng mga generator ng pagkasunog. Matutong gumamit ng mga mender. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 3374a8447ed3..13e00b1dcc77 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -831,6 +831,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Un endroit optimal pour commencer. Avec une menace ennemie faible et peu de ressources disponibles.\nRassemblez autant de cuivre et de plomb que possible pour continuer votre exploration. sector.frozenForest.description = Même ici, près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir indéfiniment.\n\nCommencez votre production d'énergie en construisant des générateurs à combustion et apprenez à utiliser les bâtiments de soin. @@ -852,6 +853,7 @@ sector.coastline.description = Des restes d’unités navales ont été détect sector.navalFortress.description = L’ennemi a établi une base sur une île isolée, avec des défenses naturelles. Détruisez cet avant-poste. Acquérez leur technologie navale avancée. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 3d26ba4bc591..31e85a6a0022 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -833,6 +833,7 @@ sector.planetaryTerminal.name = Bolygó körüli kilövőállás sector.coastline.name = Partvonal sector.navalFortress.name = Haditengerészeti erőd sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az elektromosság erejét! Építs égetőerőműveket! Tanuld meg a foltozók használatát! @@ -854,6 +855,7 @@ sector.coastline.description = Ezen a helyen egy haditengerészeti egység techn sector.navalFortress.description = Az ellenség bázist létesített egy távoli, természetes erődítményes szigeten. Pusztítsd el ezt az előőrsöt. Szerezd meg a fejlett hadihajó-technológiájukat, és fejleszd ki te is. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 6163d6ee8b7a..49127c6b5ab1 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -833,6 +833,7 @@ sector.planetaryTerminal.name = Pusat Peluncuran Planet sector.coastline.name = Tepi Pantai sector.navalFortress.name = Benteng Laut sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Sedikit sumber daya.\nKumpulkan timah dan tembaga sebanyak yang Anda bisa.\nMulai dari sini. sector.frozenForest.description = Di sini, dekat dengan gunung, spora sudah menyebar. Suhu dingin tidak dapat menahannya.\n\nMulailah hasilkan listrik. Bangun generator pembakar. Pelajari cara menggunakan mender. @@ -854,6 +855,7 @@ sector.coastline.description = Sisa-sisa teknologi Unit Laut telah terdeteksi di sector.navalFortress.description = Musuh telah mendirikan markas di sebuah pulau terpencil, dibentengi secara alami. Hancurkan pangkalan ini. Dapatkan teknologi Unit Laut mereka yang canggih, dan telitilah sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 8c5d5924d44f..caaee1e6803b 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -814,6 +814,7 @@ sector.planetaryTerminal.name = Terminale di Lancio Planetario sector.coastline.name = Coastline sector.navalFortress.name = Fortezza navale sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = La posizione ottimale per ricominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nParti. sector.frozenForest.description = Anche qui, più vicino alle montagne, le spore si sono diffuse. Le temperature gelide non possono contenerle per sempre.\n\nInizia l'avventura nell'energia. Costruisci generatori a combustione. Impara a usare i riparatori. @@ -835,6 +836,7 @@ sector.coastline.description = In questo settore sono stati rilevati resti di te sector.navalFortress.description = Il nemico ha stabilito una base su un'isola remota e fortificata naturalmente. Distruggi questo avamposto. Acquisisci la loro tecnologia navale avanzata e fate ricerche. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index d2bea334921c..37a9e744a046 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -818,6 +818,7 @@ sector.planetaryTerminal.name = 惑星間発射ターミナル sector.coastline.name = 海岸線 sector.navalFortress.name = 海軍要塞 sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = 奪回を始めるには最適な場所です。敵の脅威は小さいですが、資源が乏しいです。\nできるだけ多くの銅と鉛を集めましょう。\n始めましょう。 sector.frozenForest.description = ここでさえ、山に近づくほど胞子が広がっています。\n極寒の気候もでさえ胞子を永遠に封じ込めることはできませんでした。\n\n電気に挑みましょう。\n火力発電機を建設し、修復機の使い方を学びましょう。 @@ -839,6 +840,7 @@ sector.coastline.description = ここで、海軍の技術の残骸が発見さ sector.navalFortress.description = 敵は、自然要塞化した離島に基地を設けています。この前哨基地を破壊しましょう。\n彼らの高度な艦艇技術を入手し、研究しましょう。 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = オンセット diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 597ac1745d2c..abad7074118b 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -819,6 +819,7 @@ sector.planetaryTerminal.name = 대행성 출격단지 sector.coastline.name = 해안선 sector.navalFortress.name = 해군 요새 sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배워야 합니다. @@ -840,6 +841,7 @@ sector.coastline.description = 이 장소에서 해상 기체 기술의 잔재 sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 섬에 기지를 세웠습니다. 이 전초기지를 파괴하여 적의 발전된 함선 건조 기술을 습득하고 연구하십시오. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = 시작 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index ca2428d3c565..9c793024f382 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 65f5f27e9e74..1483dcab7e58 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -819,6 +819,7 @@ sector.planetaryTerminal.name = Planetery Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = De optimale locatie om nog een keer te beginnen. Lage vijandelijke dreiging. Enkele grondstoffen.\nVerzamel zoveel mogelijk lood en koper.\nGa door. sector.frozenForest.description = Zelfs hier, dichter bij de bergen, hebben de schimmels zich verspreid. De koude temperaturen kunnen ze niet eeuwig tegenhouden.\n\nBegin de onderneming in energie. Bouw verbrandingsgeneratoren. Leer herstellers te gebruiken. @@ -840,6 +841,7 @@ sector.coastline.description = Op deze locatie zijn resten van marinetechnologie sector.navalFortress.description = De vijand heeft een basis gevestigd op een afgelegen, natuurlijk versterkt eiland. Vernietig deze voorpost. Verkrijg hun geavanceerde marinetechnologie en onderzoek die. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index bdf839b00d62..6da0ffaee271 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 97afe7c59fa4..b1b038f01ea0 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -816,6 +816,7 @@ sector.planetaryTerminal.name = Planetarny Terminal Startowy sector.coastline.name = Linia Brzegowa sector.navalFortress.name = Morska Forteca sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz możliwie jak najwięcej miedzi i ołowiu.\nPrzejdź do następnej strefy jak najszybciej. sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki się rozprzestrzeniały. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nZacznij od produkcji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. @@ -837,6 +838,7 @@ sector.coastline.description = W tej lokalizacji zostały znalezione resztki tec sector.navalFortress.description = Wróg założył bazę na odległej, naturalnie ufortyfikowanej wyspie. Zniszcz tę bazę. Zdobądź zaawansowaną technologię statków morskich i zbadaj ją. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index de8848bf34ef..0722f71bd9a3 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -824,6 +824,7 @@ sector.planetaryTerminal.name = Terminal de Lançamento Planetário. sector.coastline.name = Litoral sector.navalFortress.name = Fortaleza Naval sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue. sector.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores. @@ -845,6 +846,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index e7461ac4739a..cf61f164acf2 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index ef064ebe42c4..33c26b4fada3 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -818,6 +818,7 @@ sector.planetaryTerminal.name = Terminalul de Lansare Planetară sector.coastline.name = Zona de Coastă sector.navalFortress.name = Fortăreața Navală sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe. sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare. @@ -839,6 +840,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 3825b34c4b05..507b6395777e 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -819,6 +819,7 @@ sector.planetaryTerminal.name = Планетарный пусковой терм sector.coastline.name = Береговая линия sector.navalFortress.name = Прибрежная крепость sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Оптимальная локация для повторных игр. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше. sector.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором. @@ -840,6 +841,7 @@ sector.coastline.description = В этом месте были обнаруже sector.navalFortress.description = Враг возвел базу на удаленном острове с естественными укреплениями. Уничтожьте её. Овладейте их технологией по производству кораблей и изучите ее. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index bbf7f2dfbbfc..46272c4c28cb 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -819,6 +819,7 @@ sector.planetaryTerminal.name = Planetarno Lansirni Terminal sector.coastline.name = Obala sector.navalFortress.name = Pomorska Tvrđava sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Savršena lokacija za ponovni početak. Niska neprijateljska pretnja, ali i mala količina resursa.\nSakupite sav bakar i svo olovo koje možete. Nastavite dalje. sector.frozenForest.description = Čak i ovde, u blizini planina, spore su se proširile… ledene temperature ih neće večno zadržati.\n\nZapočnite upotrebu elektriciteta. Graditei sagorevne generatore. Naučite primenu popravljača. @@ -840,6 +841,7 @@ sector.coastline.description = Ostaci tehnologije pomorskih jedinica su detektov sector.navalFortress.description = Neprijatelj je sagradio bazu na dalekom, prirodno-formiranom ostrvu. Uništite ovu bazu. Preuzmite njihovu naprednu pomorsku tehnologiju, i izuči te je. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index ea0653b95129..cf2a4413b538 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index bb1eeaa20b77..2bec34f154ad 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -819,6 +819,7 @@ sector.planetaryTerminal.name = ท่าปล่อยจรวดอวกา sector.coastline.name = แนวชายฝั่ง sector.navalFortress.name = ปราการแห่งวารี sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = จุดที่ดีที่สุดในการเริ่มต้นอีกครั้งนึง ศัตรูน้อย ทรัพยากรน้อย\nเก็บ[accent]ตะกั่ว[]และ[accent]ทองแดง[]ให้ได้มากที่สุด\nแล้วลุยต่อ sector.frozenForest.description = แม้แต่ที่นี่ ณ ที่ที่อยู่ใกล้ภูเขา [accent]สปอร์[]ก็ยังแพร่มาถึงที่นี่ อากาศอันแสนเย็นเยือกไม่สามารถหยุดยั้งพวกมันได้ตลอดไป\n\nเริ่มต้นการใช้ไฟฟ้า สร้างเครื่องกำเนิดไฟฟ้าเผาไหม้ เรียนรู้ที่จะใช้เครื่องซ่อมแซม @@ -840,6 +841,7 @@ sector.coastline.description = ถัดมาจากที่ราบเก sector.navalFortress.description = ศัตรูได้ตั้งฐานทัพอยู๋บนเกาะห่างไกลที่มีกำแพงธรรมชาติปกป้องฐานเอาไว้ ทำลายฐานทัพ ยึดและวิจัยเทคโนโลยีเรือรบที่ล้ำหน้านั้นมา sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index d3571621482a..fbd8952313d8 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -808,6 +808,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -829,6 +830,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = The Onset diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index b05796d9ad44..c5fddc741c78 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -818,6 +818,7 @@ sector.planetaryTerminal.name = Gezegenler Arası Terminal sector.coastline.name = Kıyı Şeridi sector.navalFortress.name = Deniz Kalesi sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle. sector.frozenForest.description = Burada, dağlara yakın bölgelerde bile sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren. @@ -839,6 +840,7 @@ sector.coastline.description = Bu bölgede denizel birim teknoloji kalıntılar sector.navalFortress.description = Düşman bu uzak adaya doğal olarak korunan bir üs kurmuş. Bu üssü yok et. Onların gelişmiş savaş gemisi teknolojilerini elde et ve araştır. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.onset.name = Yeni Başlangıç diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index c850fda20472..c55ef856fcba 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -827,6 +827,7 @@ sector.planetaryTerminal.name = Термінал планетарного зап sector.coastline.name = Узбережжя sector.navalFortress.name = Морська фортеця sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗберіть якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі. sector.frozenForest.description = Навіть тут, ближче до гір, уже поширилися спори. Холодна температура не змогла стримати їх назавжди.\n\nЗважтесь створити енергію. Побудуйте генератори внутрішнього згорання. Навчіться користуватися регенераторами. @@ -848,6 +849,7 @@ sector.coastline.description = На цьому місці виявлено за sector.navalFortress.description = Ворог створив базу на віддаленому, природно-укріпленому острові. Знищте цей форпост. Заволодійте їхніми передовими технологіями морських кораблів і дослідіть їх. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index a014e4058b2e..3fb0137b573e 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -833,6 +833,7 @@ sector.planetaryTerminal.name = Planetary Launch Terminal sector.coastline.name = Coastline sector.navalFortress.name = Naval Fortress sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ địch thấp. Ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. sector.frozenForest.description = Dù ở đây, gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy xây dựng máy phát điện đốt. Học cách sử dụng máy sửa chữa. @@ -854,6 +855,7 @@ sector.coastline.description = Phát hiện tàn dư công nghệ của các đ sector.navalFortress.description = Kẻ địch đã thiết lập một căn cứ từ xa, trên đảo tự nhiên. Phá hủy tiền đồn này. Chiếm công nghệ chế tạo đơn vị hải quân tiên tiến của địch và nghiên cứu nó. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index efdad2824e92..27eb8179f653 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -828,6 +828,7 @@ sector.planetaryTerminal.name = 行星发射终端 sector.coastline.name = 边际海湾 sector.navalFortress.name = 海军要塞 sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = 踏上旅程的最佳位置。 这里的敌人威胁很小,但资源也少。\n\n尽你所能收集铅和铜,出发吧! sector.frozenForest.description = 一个靠近山脉的地方。 哪怕是在这里,也有了孢子扩散的痕迹。\n连极寒也无法长久地约束它们。\n\n开始运用电力,建造火力发电机并学会使用修理器。 @@ -849,6 +850,7 @@ sector.coastline.description = 这里探测到了海军单位科技的遗迹。 sector.navalFortress.description = 敌人在一个有天然防御屏障的偏远岛屿上建立了基地。 摧毁它,并研究高级海军科技。 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 6f034a957f8b..d515e7d35ffc 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -824,6 +824,7 @@ sector.planetaryTerminal.name = 星際發射站 sector.coastline.name = 海岸 sector.navalFortress.name = 海上要塞 sector.polarAerodrome.name = Polar Aerodrome +sector.atolls.name = Atolls sector.groundZero.description = 再次開始的最佳位置。敵人威脅程度低。資源少。\n盡可能地採集鉛與銅。\n繼續前進。 sector.frozenForest.description = 即使是在如此靠近山脈的地方,孢子也已經擴散了。低溫無法永遠遏止它們。\n\n開始探索電力。建造火力發電機。學習如何修理方塊。 @@ -845,6 +846,7 @@ sector.coastline.description = Remnants of naval unit technology have been detec sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it. sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.atolls.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 From bc7c8ee508929fed4c9afd33404c396cf410bdad Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Sep 2024 16:30:26 -0400 Subject: [PATCH 21/45] Force projector 2x crash damage multiplier --- core/src/mindustry/world/blocks/defense/ForceProjector.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 96d7efcb922c..5798bd98489a 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -40,6 +40,7 @@ public class ForceProjector extends Block{ public float cooldownBrokenBase = 0.35f; public float coolantConsumption = 0.1f; public boolean consumeCoolant = true; + public float crashDamageMultiplier = 2f; public Effect absorbEffect = Fx.absorb; public Effect shieldBreakEffect = Fx.shieldBreak; public @Load("@-top") TextureRegion topRegion; @@ -222,7 +223,7 @@ public boolean absorbWreck(Unit unit, float damage){ if(absorb){ absorbEffect.at(unit); hit = 1f; - buildup += damage; + buildup += damage * crashDamageMultiplier; } return absorb; } From 9911e602a0e8e366f7eb4f8a6d6a0d207c6e1da1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Sep 2024 17:20:34 -0400 Subject: [PATCH 22/45] Quads+Horizons damage shields / RTS AI toggle for Serpulo --- core/assets/bundles/bundle.properties | 2 ++ core/src/mindustry/ai/RtsAI.java | 2 +- core/src/mindustry/content/Planets.java | 2 ++ core/src/mindustry/content/UnitTypes.java | 11 ++++++++--- core/src/mindustry/entities/Units.java | 2 +- core/src/mindustry/game/CampaignRules.java | 19 ++++++++++++++++++- core/src/mindustry/type/Planet.java | 17 ++++++++++------- .../ui/dialogs/CampaignRulesDialog.java | 5 ++++- .../world/blocks/defense/ForceProjector.java | 2 +- 9 files changed, 47 insertions(+), 15 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index bcd0ca3ce3f7..dbf74d3235c3 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1359,6 +1359,8 @@ rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI [red](WIP) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/src/mindustry/ai/RtsAI.java b/core/src/mindustry/ai/RtsAI.java index 16fcf3ec7a1d..b97e58e46433 100644 --- a/core/src/mindustry/ai/RtsAI.java +++ b/core/src/mindustry/ai/RtsAI.java @@ -343,7 +343,7 @@ float estimateStats(float fromX, float fromY, float x, float y, float selfDps, f //other can never be destroyed | other destroys self instantly if(Float.isInfinite(timeDestroyOther) || Mathf.zero(timeDestroySelf)) return 0f; //self can never be destroyed | self destroys other instantly - if(Float.isInfinite(timeDestroySelf) || Mathf.zero(timeDestroyOther)) return 1f; + if(Float.isInfinite(timeDestroySelf) || Mathf.zero(timeDestroyOther)) return 100000f; //examples: // self 10 sec / other 10 sec -> can destroy target with 100 % losses -> returns 1 diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index a37488943c43..1413b40a3a35 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -87,6 +87,7 @@ public static void load(){ }; campaignRuleDefaults.fog = true; campaignRuleDefaults.showSpawns = true; + campaignRuleDefaults.rtsAI = true; unlockedOnLand.add(Blocks.coreBastion); }}; @@ -146,6 +147,7 @@ public static void load(){ r.placeRangeCheck = false; r.showSpawns = false; }; + showRtsAIRule = true; iconColor = Color.valueOf("7d4dff"); atmosphereColor = Color.valueOf("3c1b8f"); atmosphereRadIn = 0.02f; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 4c7e9def50ef..729a245f8c73 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1042,6 +1042,7 @@ public static void load(){ status = StatusEffects.blasted; statusDuration = 60f; + damage = splashDamage * 0.75f; }}; }}); }}; @@ -1446,6 +1447,7 @@ public static void load(){ healPercent = 15f; splashDamage = 220f; splashDamageRadius = 80f; + damage = splashDamage * 0.75f; }}; }}); }}; @@ -2364,7 +2366,8 @@ public static void load(){ //region core alpha = new UnitType("alpha"){{ - aiController = BuilderAI::new; + aiController = () -> new BuilderAI(true, 400f); + controller = u -> u.team.isAI() ? aiController.get() : new CommandAI(); isEnemy = false; lowAltitude = true; @@ -2402,7 +2405,8 @@ public static void load(){ }}; beta = new UnitType("beta"){{ - aiController = BuilderAI::new; + aiController = () -> new BuilderAI(true, 400f); + controller = u -> u.team.isAI() ? aiController.get() : new CommandAI(); isEnemy = false; flying = true; @@ -2443,7 +2447,8 @@ public static void load(){ }}; gamma = new UnitType("gamma"){{ - aiController = BuilderAI::new; + aiController = () -> new BuilderAI(true, 400f); + controller = u -> u.team.isAI() ? aiController.get() : new CommandAI(); isEnemy = false; lowAltitude = true; diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index c0f02cb196e4..5cdf7547b580 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -475,7 +475,7 @@ public static boolean nearEnemy(Team team, float x, float y, float width, float Seq data = state.teams.present; for(int i = 0; i < data.size; i++){ var other = data.items[i]; - if(other.team != team){ + if(other.team != team && other.team != Team.derelict){ if(other.tree().any(x, y, width, height)){ return true; } diff --git a/core/src/mindustry/game/CampaignRules.java b/core/src/mindustry/game/CampaignRules.java index 13e3389d4371..052315f6563e 100644 --- a/core/src/mindustry/game/CampaignRules.java +++ b/core/src/mindustry/game/CampaignRules.java @@ -1,16 +1,33 @@ package mindustry.game; +import mindustry.*; +import mindustry.gen.*; +import mindustry.type.*; + public class CampaignRules{ public Difficulty difficulty = Difficulty.normal; public boolean fog; public boolean showSpawns; public boolean sectorInvasion; public boolean randomWaveAI; + public boolean rtsAI; - public void apply(Rules rules){ + public void apply(Planet planet, Rules rules){ rules.staticFog = rules.fog = fog; rules.showSpawns = showSpawns; rules.randomWaveAI = randomWaveAI; + if(planet.showRtsAIRule && rules.attackMode){ + rules.teams.get(rules.waveTeam).rtsAi = rtsAI; + rules.teams.get(rules.waveTeam).rtsMinWeight = 1.2f * difficulty.enemyHealthMultiplier; + + if(Vars.state.isGame()){ + Groups.unit.each(u -> { + if(u.team == rules.waveTeam && !u.isPlayer()){ + u.resetController(); + } + }); + } + } rules.teams.get(rules.waveTeam).blockHealthMultiplier = difficulty.enemyHealthMultiplier; rules.teams.get(rules.waveTeam).unitHealthMultiplier = difficulty.enemyHealthMultiplier; rules.teams.get(rules.waveTeam).unitCostMultiplier = 1f / difficulty.enemySpawnMultiplier; diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 23cc55efecc8..41344793f342 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -136,12 +136,6 @@ public class Planet extends UnlockableContent{ public Music launchMusic = Musics.launch; /** Default core block for launching. */ public Block defaultCore = Blocks.coreShard; - /** Global difficulty/modifier settings for this planet's campaign. */ - public CampaignRules campaignRules = new CampaignRules(); - /** Defaults applied to the rules. */ - public CampaignRules campaignRuleDefaults = new CampaignRules(); - /** Sets up rules on game load for any sector on this planet. */ - public Cons ruleSetter = r -> {}; /** Parent body that this planet orbits around. If null, this planet is considered to be in the middle of the solar system. */ public @Nullable Planet parent; /** The root parent of the whole solar system this planet is in. */ @@ -161,6 +155,15 @@ public class Planet extends UnlockableContent{ /** Loads the planet grid outline mesh. Clientside only. */ public Prov gridMeshLoader = () -> MeshBuilder.buildPlanetGrid(grid, outlineColor, outlineRad * radius); + /** Global difficulty/modifier settings for this planet's campaign. */ + public CampaignRules campaignRules = new CampaignRules(); + /** Defaults applied to the rules. */ + public CampaignRules campaignRuleDefaults = new CampaignRules(); + /** Sets up rules on game load for any sector on this planet. */ + public Cons ruleSetter = r -> {}; + /** If true, RTS AI can be customized. */ + public boolean showRtsAIRule = false; + /** @deprecated no-op, do not use. */ @Deprecated public Seq itemWhitelist = new Seq<>(), hiddenItems = new Seq<>(); @@ -233,7 +236,7 @@ public void applyRules(Rules rules, boolean customGame){ rules.planet = this; if(!customGame){ - campaignRules.apply(rules); + campaignRules.apply(this, rules); } } diff --git a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java index c528bbcaae27..317d321287e6 100644 --- a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java @@ -24,7 +24,7 @@ public CampaignRulesDialog(){ planet.saveRules(); if(Vars.state.isGame() && Vars.state.isCampaign() && Vars.state.getPlanet() == planet){ - planet.campaignRules.apply(Vars.state.rules); + planet.campaignRules.apply(planet, Vars.state.rules); Call.setRules(Vars.state.rules); } } @@ -60,6 +60,9 @@ void rebuild(){ check("@rules.fog", b -> rules.fog = b, () -> rules.fog); check("@rules.showspawns", b -> rules.showSpawns = b, () -> rules.showSpawns); check("@rules.randomwaveai", b -> rules.randomWaveAI = b, () -> rules.randomWaveAI); + if(planet.showRtsAIRule){ + check("@rules.rtsai.campaign", b -> rules.rtsAI = b, () -> rules.rtsAI); + } }).growY(); } diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 5798bd98489a..a976773de75c 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -40,7 +40,7 @@ public class ForceProjector extends Block{ public float cooldownBrokenBase = 0.35f; public float coolantConsumption = 0.1f; public boolean consumeCoolant = true; - public float crashDamageMultiplier = 2f; + public float crashDamageMultiplier = 2.5f; public Effect absorbEffect = Fx.absorb; public Effect shieldBreakEffect = Fx.shieldBreak; public @Load("@-top") TextureRegion topRegion; From 9797026a41ebdecf61ba17a29727bb6af5e5dc77 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sun, 15 Sep 2024 21:21:32 +0000 Subject: [PATCH 23/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 ++ core/assets/bundles/bundle_bg.properties | 2 ++ core/assets/bundles/bundle_ca.properties | 2 ++ core/assets/bundles/bundle_cs.properties | 2 ++ core/assets/bundles/bundle_da.properties | 2 ++ core/assets/bundles/bundle_de.properties | 2 ++ core/assets/bundles/bundle_es.properties | 2 ++ core/assets/bundles/bundle_et.properties | 2 ++ core/assets/bundles/bundle_eu.properties | 2 ++ core/assets/bundles/bundle_fi.properties | 2 ++ core/assets/bundles/bundle_fil.properties | 2 ++ core/assets/bundles/bundle_fr.properties | 2 ++ core/assets/bundles/bundle_hu.properties | 2 ++ core/assets/bundles/bundle_id_ID.properties | 2 ++ core/assets/bundles/bundle_it.properties | 2 ++ core/assets/bundles/bundle_ja.properties | 2 ++ core/assets/bundles/bundle_ko.properties | 2 ++ core/assets/bundles/bundle_lt.properties | 2 ++ core/assets/bundles/bundle_nl.properties | 2 ++ core/assets/bundles/bundle_nl_BE.properties | 2 ++ core/assets/bundles/bundle_pl.properties | 2 ++ core/assets/bundles/bundle_pt_BR.properties | 2 ++ core/assets/bundles/bundle_pt_PT.properties | 2 ++ core/assets/bundles/bundle_ro.properties | 2 ++ core/assets/bundles/bundle_ru.properties | 2 ++ core/assets/bundles/bundle_sr.properties | 2 ++ core/assets/bundles/bundle_sv.properties | 2 ++ core/assets/bundles/bundle_th.properties | 2 ++ core/assets/bundles/bundle_tk.properties | 2 ++ core/assets/bundles/bundle_tr.properties | 2 ++ core/assets/bundles/bundle_uk_UA.properties | 2 ++ core/assets/bundles/bundle_vi.properties | 2 ++ core/assets/bundles/bundle_zh_CN.properties | 2 ++ core/assets/bundles/bundle_zh_TW.properties | 2 ++ 34 files changed, 68 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index a452f54d784c..e8ca1c944052 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -1325,6 +1325,8 @@ rules.attack = Рэжым атакі rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Мінімальны Размер Атраду rules.rtsmaxsquadsize = Максімальны Размер Атраду rules.rtsminattackweight = Мінімальная Вага Атакі diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 10dda802d7bf..593f6b1917ba 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -1336,6 +1336,8 @@ rules.attack = Режим Атака rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index fdbbfbf357fb..4ed30ab6cd59 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -1339,6 +1339,8 @@ rules.attack = Mode d’atac rules.buildai = IA constructora de bases rules.buildaitier = Nivell de construcció de la IA rules.rtsai = IA avançada (RTS AI) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Mida mínima de l’esquadró rules.rtsmaxsquadsize = Mida màxima de l’esquadró rules.rtsminattackweight = Pes d’atac mínim diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 3dd0c33bfa5d..e62ce30a4ffd 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -1338,6 +1338,8 @@ rules.attack = Režim útoku rules.buildai = Umělá AI staví rules.buildaitier = Úroveň AI stavitele rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min velikost skupiny rules.rtsmaxsquadsize = Max velikost skupiny rules.rtsminattackweight = Min váha útoku diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 68eed2ffb961..713024aec9f3 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -1327,6 +1327,8 @@ rules.attack = Angrebsmode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 7c9f870a8e23..e5840b6b0957 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -1349,6 +1349,8 @@ rules.attack = Angriff-Modus rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS KI [red](unfertig) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min. Squadgröße rules.rtsmaxsquadsize = Max. Squadgröße rules.rtsminattackweight = Min. Attackiergewicht diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 80dcb56f99fb..d0531aee4bae 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1345,6 +1345,8 @@ rules.attack = Modo de ataque rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = IA enemiga avanzada (RTS AI) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Tamaño mínimo de escuadrón rules.rtsmaxsquadsize = Tamaño máximo de escuadrón rules.rtsminattackweight = Peso mínimo de ataque diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index e8aa85c3b01a..6f20503a2ee8 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -1327,6 +1327,8 @@ rules.attack = Mänguviis "Rünnak" rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 40fea745bebf..56ddc06499af 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -1329,6 +1329,8 @@ rules.attack = Eraso modua rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 69912720ccbe..f4f10713e19c 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -1326,6 +1326,8 @@ rules.attack = Hyökkäystila rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min. hyökkäysjoukon koko rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min. hyökkäyksen paino diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 5b07d13b0427..02ab0d6ba44e 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -1326,6 +1326,8 @@ rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 13e00b1dcc77..0b1a48f8efd5 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -1353,6 +1353,8 @@ rules.attack = Mode « Attaque » rules.buildai = IA de Construction de Base rules.buildaitier = Niveau de l'IA de Construction de Base rules.rtsai = IA de RTS [red](WIP) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Taille Minimale d'une Escouade rules.rtsmaxsquadsize = Taille Maximale d'une Escouade rules.rtsminattackweight = Poids Minimum d'une Attaque diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 31e85a6a0022..c1a4c4d99bd4 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1357,6 +1357,8 @@ rules.attack = Támadási mód rules.buildai = Bázisépítő MI rules.buildaitier = Építő MI szintje rules.rtsai = RTS MI [red](WIP) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Minimális osztagméret rules.rtsmaxsquadsize = Maximális osztagméret rules.rtsminattackweight = Minimális támadási súly diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 49127c6b5ab1..14c971c210dd 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -1356,6 +1356,8 @@ rules.attack = Mode Penyerangan rules.buildai = A.I. Pembangun Markas rules.buildaitier = Tingkat A.I. Pembangun rules.rtsai = A.I. RTS [red](WIP) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Ukuran Regu Minimum rules.rtsmaxsquadsize = Ukuran Regu Maksimum rules.rtsminattackweight = Berat Serangan Minimum diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index caaee1e6803b..e47ee89bbaea 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -1332,6 +1332,8 @@ rules.attack = Modalità Attacco rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Dimensione minima squadra rules.rtsmaxsquadsize = Dimensione massima squadra rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 37a9e744a046..bd6949cfda48 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -1338,6 +1338,8 @@ rules.attack = アタックモード rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = チームの最少人数 rules.rtsmaxsquadsize = チームの最大人数 rules.rtsminattackweight = 最小攻撃力 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index abad7074118b..6ee3b2cf3f55 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1337,6 +1337,8 @@ rules.attack = 공격 모드 rules.buildai = 기지 건설 AI rules.buildaitier = 건설 AI 등급 rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = 최소 부대 규모 rules.rtsmaxsquadsize = 최대 부대 규모 rules.rtsminattackweight = 최소 공격 중량 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 9c793024f382..994ff3bfe003 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -1327,6 +1327,8 @@ rules.attack = Puolimo Režimas rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 1483dcab7e58..3f1c22694575 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -1339,6 +1339,8 @@ rules.attack = Aanvalmodus rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Ploeg Grootte rules.rtsmaxsquadsize = Max Ploeg Grootte rules.rtsminattackweight = Min Aanvalsgewicht diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 6da0ffaee271..33201743f916 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -1327,6 +1327,8 @@ rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index b1b038f01ea0..cb32a1046bf2 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -1336,6 +1336,8 @@ rules.attack = Tryb Ataku rules.buildai = AI Budowania Baz rules.buildaitier = Poziom Budowania AI rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Minimalny Rozmiar Składu rules.rtsmaxsquadsize = Maksymalny Rozmiar Składu rules.rtsminattackweight = Minimalna Waga Ataku diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 0722f71bd9a3..0fd2f6e274f4 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -1346,6 +1346,8 @@ rules.attack = Modo de ataque rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Tamanho mínimo do esquadrão rules.rtsmaxsquadsize = Tamanho máximo do esquadrão rules.rtsminattackweight = Peso Mínimo de Ataque diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index cf61f164acf2..86272b4bf062 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -1327,6 +1327,8 @@ rules.attack = Modo de ataque rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 33c26b4fada3..cc28415b801d 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -1338,6 +1338,8 @@ rules.attack = Modul Atac rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 507b6395777e..3a022f09a4c7 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -1337,6 +1337,8 @@ rules.attack = Режим атаки rules.buildai = ИИ строит базы rules.buildaitier = Уровень баз ИИ rules.rtsai = ИИ в реальном времени +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Минимальный размер отряда rules.rtsmaxsquadsize = Максимальный размер отряда rules.rtsminattackweight = Минимальный вес для атаки diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 46272c4c28cb..c16e721ef9a8 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -1340,6 +1340,8 @@ rules.attack = Mod Napada rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI [red](Nedovršeno) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Minimalna Veličina Odreda rules.rtsmaxsquadsize = Maksimalna Veličina Odreda rules.rtsminattackweight = Minimalna Težina Napada diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index cf2a4413b538..39252e07d60c 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -1327,6 +1327,8 @@ rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 2bec34f154ad..db16ff12e01e 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -1339,6 +1339,8 @@ rules.attack = โหมดการโจมตี rules.buildai = AI สร้างฐานทัพ rules.buildaitier = ระดับการสร้างของ AI rules.rtsai = RTS AI [red](ไม่เสถียร) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = ขนาดกองทัพเล็กที่สุด rules.rtsmaxsquadsize = ขนาดกองทัพใหญ่ที่สุด rules.rtsminattackweight = ขนาดน้ำหนักการโจมตีน้อยที่สุด diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index fbd8952313d8..4e9e1c679ae4 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -1327,6 +1327,8 @@ rules.attack = Attack Mode rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Min Squad Size rules.rtsmaxsquadsize = Max Squad Size rules.rtsminattackweight = Min Attack Weight diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index c5fddc741c78..ef06aa173b57 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -1336,6 +1336,8 @@ rules.attack = Saldırı Modu rules.buildai = Üs inşa edici YZ rules.buildaitier = İnşaatçı YZ sınıfı rules.rtsai = RTS YZ +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Asgari Gurup Boyutu rules.rtsmaxsquadsize = Azami Gurup Boyutu rules.rtsminattackweight = Asgari Saldırı Boyutu diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index c55ef856fcba..a06215767623 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -1347,6 +1347,8 @@ rules.attack = Режим атаки rules.buildai = Базовий ШІ-будівельник rules.buildaitier = Рівень ШІ-будівельника rules.rtsai = ШІ зі стратегій реального часу +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Мінімальний розмір загону rules.rtsmaxsquadsize = Максимальний розмір загону rules.rtsminattackweight = Мінімальна ударна вага diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 3fb0137b573e..9dd8502bc5b4 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -1357,6 +1357,8 @@ rules.attack = Chế độ tấn công rules.buildai = AI Xây dựng căn cứ rules.buildaitier = Cấp độ AI xây dựng rules.rtsai = AI Chiến thuật [red](WIP - Đang hoàn thiện) +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = Kích thước đội hình tối thiểu rules.rtsmaxsquadsize = Kích thước đội hình tối đa rules.rtsminattackweight = Sức tấn công tối thiểu diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 27eb8179f653..b7a7811521bb 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -1349,6 +1349,8 @@ rules.attack = 进攻模式 rules.buildai = 基础建筑者 AI rules.buildaitier = 建筑者 AI 等级 rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = 最小部队规模 rules.rtsmaxsquadsize = 最大部队规模 rules.rtsminattackweight = 最低进攻强度 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index d515e7d35ffc..57d3cb8d8d5c 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -1344,6 +1344,8 @@ rules.attack = 攻擊模式 rules.buildai = Base Builder AI rules.buildaitier = Builder AI Tier rules.rtsai = RTS AI +rules.rtsai.campaign = RTS Attack AI +rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. rules.rtsminsquadsize = 最小隊伍規模 rules.rtsmaxsquadsize = 最大隊伍規模 rules.rtsminattackweight = 最小攻擊力 From 8ede0fa6f4100f4dfdae04442ba814d84bc04d0d Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Sep 2024 19:21:24 -0400 Subject: [PATCH 24/45] Fixed shields not blocking blast compound explosions --- core/src/mindustry/content/UnitTypes.java | 4 ++-- core/src/mindustry/entities/Damage.java | 14 ++++++++++---- core/src/mindustry/entities/comp/UnitComp.java | 2 +- core/src/mindustry/game/CampaignRules.java | 3 ++- .../mindustry/world/blocks/ExplosionShield.java | 7 +++++++ .../mindustry/world/blocks/UnitWreckShield.java | 9 --------- .../world/blocks/defense/ForceProjector.java | 10 +++++----- 7 files changed, 27 insertions(+), 22 deletions(-) create mode 100644 core/src/mindustry/world/blocks/ExplosionShield.java delete mode 100644 core/src/mindustry/world/blocks/UnitWreckShield.java diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 729a245f8c73..d50ea28261e2 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1042,7 +1042,7 @@ public static void load(){ status = StatusEffects.blasted; statusDuration = 60f; - damage = splashDamage * 0.75f; + damage = splashDamage * 0.7f; }}; }}); }}; @@ -1447,7 +1447,7 @@ public static void load(){ healPercent = 15f; splashDamage = 220f; splashDamageRadius = 80f; - damage = splashDamage * 0.75f; + damage = splashDamage * 0.7f; }}; }}); }}; diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index 988b92660eb2..7f13c16546af 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -16,6 +16,8 @@ import mindustry.graphics.*; import mindustry.type.*; import mindustry.world.*; +import mindustry.world.blocks.*; +import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -101,9 +103,13 @@ public static void dynamicExplosion(float x, float y, float flammability, float float damagePerWave = explosiveness / 2f; for(int i = 0; i < waves; i++){ + var shields = ignoreTeam == null ? null : indexer.getEnemy(ignoreTeam, BlockFlag.shield); int f = i; Time.run(i * 2f, () -> { - damage(ignoreTeam, x, y, Mathf.clamp(radius + explosiveness, 0, 50f) * ((f + 1f) / waves), damagePerWave, false); + if(shields == null || shields.isEmpty() || !shields.contains(b -> b instanceof ExplosionShield s && s.absorbExplosion(x, y, damagePerWave))){ + damage(ignoreTeam, x, y, Mathf.clamp(radius + explosiveness, 0, 50f) * ((f + 1f) / waves), damagePerWave, false); + } + Fx.blockExplosionSmoke.at(x + Mathf.range(radius), y + Mathf.range(radius)); }); } @@ -166,7 +172,7 @@ public static float findLaserLength(Bullet b, float length){ public static float findPierceLength(Bullet b, int pierceCap, float length){ return findPierceLength(b, pierceCap, b.type.laserAbsorb, length); } - + public static float findPierceLength(Bullet b, int pierceCap, boolean laser, float length){ vec.trnsExact(b.rotation(), length); rect.setPosition(b.x, b.y).setSize(vec.x, vec.y).normalize().grow(3f); @@ -358,7 +364,7 @@ public static void collidePoint(Bullet hitter, Team team, Effect effect, float x */ public static Healthc linecast(Bullet hitter, float x, float y, float angle, float length){ vec.trns(angle, length); - + tmpBuilding = null; if(hitter.type.collidesGround){ @@ -644,7 +650,7 @@ public Collided set(float x, float y, Teamc target){ this.target = target; return this; } - + @Override public void reset(){ target = null; diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index f5cc151a2cdc..548e34965eb8 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -717,7 +717,7 @@ public void destroy(){ if(type.flying && !spawnedByCore && type.createWreck && state.rules.unitCrashDamage(team) > 0){ var shields = indexer.getEnemy(team, BlockFlag.shield); float crashDamage = Mathf.pow(hitSize, 0.75f) * type.crashDamageMultiplier * 5f * state.rules.unitCrashDamage(team); - if(shields.isEmpty() || !shields.contains(b -> b instanceof UnitWreckShield s && s.absorbWreck(self(), crashDamage))){ + if(shields.isEmpty() || !shields.contains(b -> b instanceof ExplosionShield s && s.absorbExplosion(x, y, crashDamage))){ Damage.damage(team, x, y, Mathf.pow(hitSize, 0.94f) * 1.25f, crashDamage, true, false, true); } } diff --git a/core/src/mindustry/game/CampaignRules.java b/core/src/mindustry/game/CampaignRules.java index 052315f6563e..2865c7d12fa5 100644 --- a/core/src/mindustry/game/CampaignRules.java +++ b/core/src/mindustry/game/CampaignRules.java @@ -17,10 +17,11 @@ public void apply(Planet planet, Rules rules){ rules.showSpawns = showSpawns; rules.randomWaveAI = randomWaveAI; if(planet.showRtsAIRule && rules.attackMode){ + boolean swapped = rules.teams.get(rules.waveTeam).rtsAi != rtsAI; rules.teams.get(rules.waveTeam).rtsAi = rtsAI; rules.teams.get(rules.waveTeam).rtsMinWeight = 1.2f * difficulty.enemyHealthMultiplier; - if(Vars.state.isGame()){ + if(swapped && Vars.state.isGame()){ Groups.unit.each(u -> { if(u.team == rules.waveTeam && !u.isPlayer()){ u.resetController(); diff --git a/core/src/mindustry/world/blocks/ExplosionShield.java b/core/src/mindustry/world/blocks/ExplosionShield.java new file mode 100644 index 000000000000..892795632cb1 --- /dev/null +++ b/core/src/mindustry/world/blocks/ExplosionShield.java @@ -0,0 +1,7 @@ +package mindustry.world.blocks; + +//TODO: horrible API design, but I'm not sure of a better way to do this right now. please don't use this class +public interface ExplosionShield{ + /** @return whether the shield was able to absorb the explosion; this should apply damage to the shield if true is returned. */ + boolean absorbExplosion(float x, float y, float damage); +} diff --git a/core/src/mindustry/world/blocks/UnitWreckShield.java b/core/src/mindustry/world/blocks/UnitWreckShield.java deleted file mode 100644 index 062320cef2e5..000000000000 --- a/core/src/mindustry/world/blocks/UnitWreckShield.java +++ /dev/null @@ -1,9 +0,0 @@ -package mindustry.world.blocks; - -import mindustry.gen.*; - -//TODO: horrible API design, but I'm not sure of a better way to do this right now. please don't use this class -public interface UnitWreckShield{ - /** @return whether the shield was able to absorb the unit wreck; this should apply damage to the shield if true is returned. */ - boolean absorbWreck(Unit unit, float damage); -} diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index a976773de75c..f62e8fa12eb8 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -40,7 +40,7 @@ public class ForceProjector extends Block{ public float cooldownBrokenBase = 0.35f; public float coolantConsumption = 0.1f; public boolean consumeCoolant = true; - public float crashDamageMultiplier = 2.5f; + public float crashDamageMultiplier = 2f; public Effect absorbEffect = Fx.absorb; public Effect shieldBreakEffect = Fx.shieldBreak; public @Load("@-top") TextureRegion topRegion; @@ -123,7 +123,7 @@ public void drawPlace(int x, int y, int rotation, boolean valid){ Draw.color(); } - public class ForceBuild extends Building implements Ranged, UnitWreckShield{ + public class ForceBuild extends Building implements Ranged, ExplosionShield{ public boolean broken = true; public float buildup, radscl, hit, warmup, phaseHeat; @@ -218,10 +218,10 @@ public void deflectBullets(){ } @Override - public boolean absorbWreck(Unit unit, float damage){ - boolean absorb = !broken && Intersector.isInRegularPolygon(sides, x, y, realRadius(), shieldRotation, unit.x, unit.y); + public boolean absorbExplosion(float ex, float ey, float damage){ + boolean absorb = !broken && Intersector.isInRegularPolygon(sides, x, y, realRadius(), shieldRotation, ex, ey); if(absorb){ - absorbEffect.at(unit); + absorbEffect.at(ex, ey); hit = 1f; buildup += damage * crashDamageMultiplier; } From 4e19a3c4d0c884f80c7b1905163b9800914bb2e9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 16 Sep 2024 16:05:03 -0400 Subject: [PATCH 25/45] Atolls map fixes / Extraction outpost edits / Option to hide objectives --- core/assets/maps/atolls.msav | Bin 43056 -> 42463 bytes core/assets/maps/extractionOutpost.msav | Bin 23902 -> 24405 bytes core/src/mindustry/ai/types/BuilderAI.java | 2 +- core/src/mindustry/content/UnitTypes.java | 2 +- core/src/mindustry/entities/Units.java | 2 +- core/src/mindustry/game/MapObjectives.java | 1 + core/src/mindustry/game/Rules.java | 2 ++ .../mindustry/ui/fragments/HudFragment.java | 2 +- 8 files changed, 7 insertions(+), 4 deletions(-) diff --git a/core/assets/maps/atolls.msav b/core/assets/maps/atolls.msav index 6f608eb951d08e8f4e0eb5e6b49aeb9aa0ee3a39..83931ae31dce4b56c25f6f1b9281284dfd7d7244 100644 GIT binary patch literal 42463 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%0Df~qo?t>Lrf7KyS-mT z4RyS`>Fw&+`8IW2{|oAP#b2r8PJJBF$Fcvdj+38L#{++@j@RnrA$|YG_3HTi4S3XI z4rHu%OTJXd_ikzkk$#oYlAXL{s)N~x)Sv!Gx`QHf^ zlsC!|XLrdH-xl+Jmx)9omcBBuw6d9g*Lvpyjyc&9{<6<}`Kz*w5Pyvjh$HVbHizJn z7sU0CT=<~`<*&UuR7gPYkt0kmlwy#={mC0_;eL402=^$E>n)ZpsQ(qA6wIY@sAG;1 z^)-0CEyl7B|AOu@J|DAWq`{{L`1Amuo@0;KQZiFk(%9oaBK0}gbY<>iTGqB{S-Vrq zV2q63pruhyjk1;`sdzj3PL4kuSMXoo_RBwaed+M`p@gvHt&*197yB*KmpJq#9_UNO zE!@NbH+IRjuCKO|{{kidLLB;<;_TFg3kfvyk9QpSr?@;`JFSj)eoh@@ z|599qx$63>`wazE>$RVc$m8|zQpZDAsN><6tK-pI)bZGRBF`aCpDpKj)Ohk23$RGv zDZ@vdQfhN>EDHMb72*qG27c3w2`eV>>WdV#dhqy~)^_uwb-(k_>5qohHuf#RcxB5! z`0fSIXg$_xRpS?pyI?iDbE3Al9mnb-loz3H*_y--*V1w_w)}3#miNa<$d13^ib>VI zT@A!pe&=QKDE%geSu#LC`x7=l-v-Cog~O!UgG*)E0g~Ns2RkkLoZ_tDd>s zA$T_VMFCpVrYEI2h5QL$AgNpfqn)|Uu`?qw=>J*eS2t{Hmbdgfs=v-1A-+nOHkLD8SWN$xK7fwGb&z8}^8c%8ws2IJ|0voHUQUT5&U%$LKS{NuZsiXHi(BVJnCR*|og zJwqc97}FsR-u%M-ii5BF?O*#d$-zOhD-UPir)w><$Goe>jJHp`!rP4jwz_EkJ`ItI z7!ByW6O0sHDR9@~#%71=aE)swHt$*}+2I|26A?9(iF(gdqUEKm`tkkGLKDwZ>@Q>T zo6BSJ@b>>SVLw?eSb3|dOV6kTqr5L%IMVUj$o0Q7_4}c!rB0<0U}pb~G_hyI|JLGO zDGmHpGUS!$mst6(EpY!%s_=xwN`j2eKoW}WNWd_g1SL-Rf}s$DDTcV zd@gK0zco}#2utH!Zqc>iNWO}Z+Zx7+k++M}&qa(p$m))eJ~#6VjGb3k$IeBhuFrVs7QKD9f0MjdnCP{&t%OC8UCQypLR(MuV>I{dEk zI29gm`e${#c~%{t|IZgEepS7`V2Tc(;dzB372CeLzHRt@HF-!6wueQA9=s~_$(GP3 z`$Hp8FAaUNJ+!vL&?h^?YJ23rq{5zTxjWR06BW|j2EYE>Zkn42pFCeXPwsNl=Rb;f zY9Eb&SvV7a@P;p)>7C5)7ZGdvBs-o!w{p9!mtR|Imr))J5JRE*) zLDdxH_7rS;?8w02cdvrBE;or#UuL08DOP;PiU!%(4bJv_tP1|?D_LC#)D{uDRM7mm zz8}~3AG5w7J~W}Sh9r|?E3UnbRNbTZLX8Vg?C@;!!Lv;V9Yp-u10T8mQ=j_die`xV z@m!ICiRX&S{rbQeoBywu!+Iu+7jEJI%S(i7;Rjg-X>Ap35^7~=yIw1Y`7ih>H?u;o z|DvX6M~Q|Sv>ATm4=&S~FnEg<433E}h*|OXVo}cjeG!hTufbNvoAvx&9dqe5 zX9cYO?&W6NG@c=GxxRThc#r=Pt*d|kR%Z25wMPvqJLR=U8K3K1y4RYqUWI>OL2Li< zEuj&*zmm8dy>7hgt;nroSt zws9Sv1Ht2%!7o$}Zz z)bq|rMjcaw>e!_3x4%OjJ2z{7j;%_+1@TK_&Gf91k${m``$l>8*;|AL{d z(FCZ+wXW5X3pCU||8)_%Apt%s&xmYT<9Jr9~PeR^B#oKm1|Ioa)zwzUD~A@-j5>$mcYA?rCsio zrmfo3Pk^<&wu$!b^O)$sN+Y6)$zCAua3XF8;>E0*Gh>>3-aF{ zwN-cYi=vu(ZQR51gwL-HQ;pyJz#6Qk4%3nqG#$<)*glzzq;^5fnPk@vH&l=@%6K+wHWl!GvEA}P^&S@`=cdR zjZ0jEV2Xq=&D+D4ZGQCeu*J`>`$pJ1AKMW6BokKKD?bqm!B@iGDb0pGDgK|ZCoeB( zL3p8psgGN?z7|B|)p|)(r`|%>Y)|~3^tQ%vivemDP#=9XYwTio3wc;oP!G+npQrtyuYq9kgR2@gFks>lRSTqlmc!I;*v_U7Nj zci~^4jA#ZSjXjJLa!tR78zh7I2Yrft0Xf_o2EGlJDL8gvG6RhQ6P!_t&0hhg#KX!k zAbFB0lP5lRTb5Q5!xO{e$p7NNjB&1^W?5?l_20LDT|^E&^X!A_tq=|mmO8_J%__bj zmRYlYMdHN^TY_HDOVI5^D@DC71)=G<%`qJ#;)h_imv2f{&cz9fixa@b3BXap37}Lf z8H|h5n%=@RTF}mt^-H8RwSxkeOF#0R|EIR3=mwS}hSw1$wQ8A2wIxftWj7#gcj?W_ z@0L4;H@X*fpXD%m);`p=%a?~gR!zQKJe%WbcsfecknMn1^#P8wutU9(!-Z!b5aOC_ zQDNX|wlcz{K!D>y@+sVLkrH5-lOAb($C$Ie!`=R3@ZWZYt?fXgx_tja)k*lf;p$Gs zqrv+eQn~AY<9%yd&Tdy!+QnKiWBEP;ZQ_jAEtcW;%1Ufp<4zetnLzF0m9=C7t;!e* zjiy@uGK-&#oblW!N}3TbeWu(R&V{dXjZdeJ4~=Q3XG!h_aj{JyBdQ`H(f;6wOnKd5 zk(-+56&j4{JnbprWk>yjHi91f!PWLg&|gwgyNi&WdjOX0325c`IIdOsg1c&F zLU^YB<-GRiKU#f3S*R7ikg!H;0lH;YpxT;!N=KPJ{Z*(}!cl!Otw#5#$TERvC2L<6 zx|aC#$9`SY+CUQ$R*@_oytRzd+ibviX7>Bg*xq-V_e34eki>5#O=MuL?vhj~8DOMd zFl!R(a?#NyDBly}JK}+m9i~IR=21)JISH!&L?|G&nKY|gI#Fvz5GxOBg89N<*mId1 z(L!r{fxv2vleOJOk%UlSGV^emf8BU8bGJ+cR124UUckFS(Ux+77bcAAD_J$I;-b`7y%dX7BO-%@;pKm)&aY4e8gJ(JS^36c z>y5HIv{roGjVJ3IblBDs-jA%T1~R!?SLQkPJsJWhk>>lS%-fLh5%D1z?7iqkk6C|+J-`x zb%PUi)ES(bwb@F3h|1KgufgwGTEf}o#1lOqebqFXUXR698=F^}PHDIXM`*9Y3@aZJ z6IZHXNXp+G5U*P6cSFP!uAx{(`)e1XuM|bRZs2Q*Fn6v#qhnC;ho?I%c@)tyD54jZ z?GPBGXf)9DGQH%ZMM^Wwwb)|K2&pZd|A%%da3H?=TN64X;Nn!-1 zu7f0!kvNys_8_TtOyY;hKLP}Gf2hM(PtC^39(J5;^_krWGMOzTZus2qenNJ4S0ffo z1^iZh5+WM@REmcB7{AduFcTcCX2E0xf8M%7e*t$|drr8~<8~1^mt6Dq=fQ6WdU$_# zB82zv(-K5|zS`tIR9n2%xP`I`-d>F*A%efm*8m5up|u(I(E&rp&$*#+xp{oyX2F_H zJ5~SqY1u3)8zE*EwaN~8LG*Bi;LqB(YOkZ9wR`QH{xwlwnr$WT#lrHRAeO@<2wD%g zGN5&ht$~0~Y&jXKL2m^tORk_9#2QlP&C1YQG)AHPJM?X1=n1eGZw>*XzJxCnW~YU1 zM65O-QT73EFDcG=UE)<5MU_38dJ<)l6__|UR$sHKHuHWVri`-Cl_^8tfdNzIL;v>; zlCZ*sr2tip-zz&Izpt_g$16pk6Cd2SKfeKB4P@5O{k?F_h}vp=RL;!?5&ui|K2oie z@}iFEwN>Z#3bI-j=%n=mof`SI_UJ;b9PLal->iN$<}iURQpXevzZJ92y&Cl`zNIsS z8)B12za!w<3pUZGWhDPTIRUv%RLj|}N}}WtZ*?4EeBJ#sfYN@oA85xPIm@Ny-H~(W~c^iXUh&EA<=DYZVd-Dsh3k zv7V;|1ZRFCa=l?;gyL%ST9`YGfxU4nu$L15Cf;qxa6J>wW*mv4g5kA4p>9!4Gy zz(_^ItL7v;<5jM8L}fL07SGdgM3tQzwTi^#=vP~(_zV1V+Ba!g^@++yF8ouak2qEk zgw?IDpp;%6Iq=Pzt$OxKh@Dz)Vi;jb%FRY4RnUT$aGmAfh0xUxNsAGZzz9h|O)}7S zDkn}Yv&)EcP2X)8OD~j57nD3Vi%!)KQCQ|-gZ=q1POB)GF4E$%AV*41J!7ttWrj{8ZRHy81wlPaIvs@XQIdk!Gmms%bw9CDc5z$696)k)p9jR^J2SqgC8* ze@;V)YrgrDsy-HnK_BI_gO>2F-Z$u}$r~g!?kW?d0eSHkKBM#E(VD-`vgVt;jCg~G z`yO2(&cg3OxiVrsSoD4H8-QQGc*yG&ukyBwhcx}0HSw#lG0pT{&}3U}w&q5iz?QbY z#f7f#7H5G@xx8u6ORXwJ{UfKQ<5-&U$bI8&G;*tyy5TZ4OkxJcw#M%ci+WA`c}VnX zn+|?ltu14r({5rRD;sJPg0;#@C57wR;DiKy`PV9|gbKp8UHRca5M;H=)Rg5-->{V^cD}%dGS=He5R{0W0>Jj0r{H>tg zj9hcQj-9NX6?uoA{ENsdvm?(T_ZJw^_;i^g5hgWN9W}a-p_?aus**%pZLWY4UO{=u z;Q>X*1d*A7UlI?(Zv}p5#lMPW@eKT)h2K{}spH2Wz6R#U7tQujlDRLjVc8~E2nKhw zQ7IiX*-&{`cY8m`%DcMPQZiFk(${i;WUiEmUU!VKo~08N*9xxFtFMF(NThVKjL=iw zxF6VQoEWKW9m>BTi6SndBn5iP#;+Sl8wrJg5hO^I5oJ8Usk z@<@ZEq7rn0{YBXr{N%F>Vzt6i=q(Z|QMIvEE_T90xD^+)lCH5kCvWZUIzNG)QyN;i-bu^TF7FI8rN zt@RhTDu31K(VAsem6BDyWXP#CZJOs(n%ARxF-4oU=7uB|YPO#O`CM2m>_$9-C_P%+ zcbI5z+j=ZDwWSgg!MNV7HYiEc=V$888+#fit_u4^sa$ildaeP3eQh^}sU<83W1BaFvFWOj{qr1@5c ziPjElE2vv+jme#Htxd@4r-bTb9M${xZr94&&}hHDAJ;q*3*Wc;Ilj~Q z8o8QjNBSb|Ih>lPQ5=3dow5`7QY;9+~!^C>8j=Le@cj;9x>$Er&ngNnk zg`oD}1G1k$B$1UVL^W;v*qcA$Xybu0HZZXyP5w0}M=A{~G&6K)CNPWc@oy^}(Nn%E zU~KK2;aYbV4e~6%6PS}#&k8QKg;z_D&8u32b;xsPDqT^E7)fZ05c6t!^_+9SMp04( z1>H>uch|;hN;G^iq_U!V^_XLiw&=0mtOZ^GF6v0lq`@%GU@ZgMa6G3r??zEYC3DZG z&OGu%Dw=_*3g78kT?DAwr#n_9<~q#+Ax)G^`qQUrz2Kl#imok|=!!{aeM+2@&N@2p z#M<(=dJC*a@F!XOG*M#5wqHuk>WH?=YndCR>Z;EB_0QkJVpD}HJ)bq{w;a=}a)zt9 zzDhK64z6Fsb?EQ`P9^kdYU!neTi#oB=wn9!_A2kzw^lSzaUrev zhWJ@~9pv?Y@Y8Cvf~h3XdaTz~4U%XrUcW;^X_*!KW~}JKh3hpZL74^#^^%&Z>H|6c zuZV6GZ`G@oU+--ePk2{|H+$>FIXFJ%^@^YLc8NE6+l?)yql2r;q_{*jW|!V{2uBe! z0gBqzY|%ERr=#;-4M$HlTA~!e8`3Og^!?UQ)~eyF)@v+A!x*G;AYD>+&D1Swq{GJF zbU*Rb@Mke9*pXdw>l|f2b_->vx9WY9yS)MQG(1+&L!Mf#`A;$?sM$l4;kTlR{RWqD*k<^)qcn!%cTEBC%M)v=NgwU z4cp2|>C)wD@maI!|@26{O#weQLm8WVMrIx8%MSj|4e z)l#hbE!l*z<4x9=ZwUt+~vmPyT(_ zQlG>}LYDe$*U{~*a>hl;tS-_h!P9uhKDF0K(~#+5HBS)#&*J)ltxwVPaIKQZq-V)2 z`!We6NcwOJ?`1NdmtySfhXn{Sfb|ari_uT3mhmSG#j*C+%- z=5itdb2+t&%r%8EaF2@WVk-N0B&IHQD50tmvR>zfd0MTX7HU=RCJOup?Nu-(&iPi- zG$3yRc5=}5R@%wICvUpe+G%toQ&>LR!JlFI6s{~?S6r?gw3Gvy7EfRJTF_pywiQu_ zv0F(hmGjWx|C#aeQ2102Cd+E$!2b)BCKp3OpfT&361B~d*WAL|hDGW&K%SeAQVQTe zmF(hau1e_H`>d7(gEfRo*a~^IV}%6qd^lh4(=JAr-kSmM_OFhMgPn6n^Ot|i^(*41 zEvZ%;H3?C#grTQ9?T2+FkLXeCZMnSSAky}sJ+Z}UtK_W zwE;^Z1~eB%G#8mX>xf>J{xZpFiktj-&==oA->cWh<6np7E}XXRyr^zwfUVnbUCBCm z5iQzVEsM4tko&aUrTkySFNl8v4o5Ekns}4=flPyYJN(`X=Wi9?hu`<$_Y9PK7Jfez z=QMYP=EMX94kJf*Kii}C$_jqkt;32KpxkT)D0%u0${l*<%dZ#eqfR*CTaRPTljq?Q zpb|fUg%&WxPd{dcg$2S{f&N%1dMXYOA zE|pIszg+x$;52g0+8+K6XvyPg$*7I3_^F^Kfd(i^3MAuE`nrP<61ZLR)Tk{$IIbSQ~5IOJSx@k587!3-@5B#4y z>`&2OE#6W~2s&e;FlH5gVDNt6Z*GTHhs9eo?rM`)!CqUJ=Jcqw<5`;}36S%peP3a( z*hXv==6M{w4!sZqp9EMN^|-fRlw$YDp6Xv)udigLtfZg)eiZ7fUJ41a9wRCmLRvLv z7J4@-xE?DvZG@E|TT`hz@)^qvDm48_7=5*OO4wrG6Sb~7smBD01k5BwbiP@wpJEAV zPnxz@TBdE>+acbLA!84>?H&}r1i!ax$%D%9{rXpqmyP1BY-sNK#S7-Ez^nUIOsGjk z-+&DixUV<}b$!({bCO2j=o|)`?Xy)XyI-BwMnGmG+zx$>-($QlT-eogryi5XZ1pgy z#b8v6!Ia+ep`-3FZJ3CUT9Tw1)s%-h&=E3!wHsMc!g@WcB28Iia+S|LM-C1C?bAZ| zOr{`%3{9V(m5S4bG;J&84)OCs=BZxVzqOMDRY!tMT{OIQ3BT#l z7cLz6(Dz1V`p_;t`Q?08)f*8%=j{}4@wV&i-O4?-t+jIh0{jxnvi-{OE!w{b)07FB z9;5bdSmy*N7IZ*=i{%gz1@?oY68 zd7|8N1P#|AeojT4THB8IboS%D<2_w(Q^%fl>e%~p>bOo{_v`Bo`g-HftK%kpy;(oc z=<6%=_0|pQxJ_PPcDP%+Ns7yArAnyJSlI*K^gBC!f%|f6NE|x*`+pg#<=5OVuA|SD z;%PNcSzPzqzxHPV+FpcebDU;K(%M1g@5Z$s{1T!3-p$wwMKK!F*avll4{@5*nmelf z>}Gur|AHnSswVu3&se|9jUz9;pIWAa>R5MN>ja&N)BE2?8h9EW@22>_*~iFpqx-lT zNr-F4uTYgd?b#EhB!j$!wo8FhkMDl@87YM?)n9NwBEEhseDlbK3)jBq75{qeQ+I!w z`f=WKq!;@|QStWY!Y`^M-|M~a>I0-p!~Mo`s<%YKDv{77DnsSQ-Wt_|KlTGIReh_s z?yI+f=d4A2_DV(1{~e#)aS1&C^6kdP#oOfajS=ybw^h8`yHdQvy9$08IM0Y*@~(jM zE#g-c3rp>bbE^Z++^PteSFIig2#BG-=;2ky(A)HEo+o!6QM)|GwQYg6gj_i(FrlQL z82UA|7TkQ8R9Ov30p|Pl?N$7JWgB>6()zr!(Cdr;S^E=m4&_@$y#PAD0l)9di_e5i za14IyFDYmm5?HY^1jV6ezWk>`nPNdJHOi*QtE^I5YZJj30L}!kPzqfsX#6wh)kXAc zs)*=|YdqDaCjPzNsV8|P(xAIF@b&NdoQ@!OtCY-MWOvIrCT8Ng!QPn3MsgnA^o5`a z8ucxfKEaLk?tT-E-MjRrc_a`G*VDk2rWyBd~FxmL#cb7kb$Z^EzD{aRdsRb
&u(3FV{(l*$|CrKwo$q2fp?-9T@l$I#U0@$9$$^=pIuIn~p)tcl0cG;7)|$`xlnKWtl{@L?sAQ-EvE9^&KO> zkX*kCAsK5}_*uUOWu<6TJU_>G@Ut>XT{R2!9kP}X1>N?<>BAF`0>iR zj7}3_8xyXMweyMwe*Xm_(Y1yZUY8cI19BTw6>7X!s1LiafUVW<4i>9wSNv+<#u0Ui zOC-0zP2FDfBF%O|5yBPmZr@%mmsWsYslOi4B$sX|0m>q?R--n^OukgHOcjK`(F(%1 z;@(Lz5d3ZN%i=rYU0z(gA5i>OFDl;QCEynmZ-;kq)%jE62lA&38MA&hDEPdZeGf?% zxpsly1z$^xj@KCkc?K)7TS9z>mDheYWJlnY58v3h?NLY{u8!w zymcj~jt~63I=*U39UuA!b$mo$KdPTUrmtV4pTBO4IzIkhb$tCcb$r9S)$xr(c$D77 zcz|~i5liCNP&_KW#C;^+_QQbHFuWeg>6N`}=Q2ox=V*T3B|4*C6g32G%5{;$9YdN^ znzXsR*5QrXGqlz+o*Nd=v-Hb zP^;JXy|~{YP->@3n^aM`&+C2SZlS&dEkBi6!**U6gat(uYXJ-nr{r>%aD1 z`|NM+v-UY>l2~*2ZPsM(wbx#cZ+-9YTif60ay1kDN^E}G9=Tt;wZ_-H0z@MOe-(n? z+4W%oFfuz(O3sqClKh69IlK3R;)r@3EG&g8)k_C{4V}DXYi@90CvV71s)slQ0XYdF zvIiwufj`L$8j8my7qLX@u4aqmV?jrNQip+3JK%c6yN1tgi|nx}soZX9#yN6kK2j}4 zLDtN)w@VoMZT$XdrsuAla*wL9F6LzB>GANW7x??P;ZECxU>`e zNE9i4}6Bv z@~^3)Oi?wG&r@j_8nIQNlY^j>C5KLiXB4icfhB=PG3~K9ts<(VD$bBAYRDBeL2W9E*0Ig2@-zc= zv`$g*1l_yHJVDhVMs3RB#hZN=gyHSkLz|BbK97vYHe>acTKI<HkWVK zGCI{}a1(8}z`F<;-Ly!p+PL1hHB;2xbJ8KNBz*|VA+O$J%C{YF%J-K|`6q8N<=<~N zA^CQELfJxC z44Dv|P6;7kzmfKW2;P;ygq-oG(Z_YJ_|xc*>BXrWcwFCkzY4YM`~yyAeREi3jMOb> z&-n#j=-v8}<8IQVz^865;=Ap1hGJ3isPtv;lPo0FtDrqnTW{H-yEpACQudhj-#F2m zJ*NHuMIj+aG!(^G0X*u*l71YRkKv5dz;tqXcTd=U_W5+%G{{?=G|0LaMJ!pA9DtB! zO7oR!#bdeLSj+^^htjq+^nlyAj7tT?*(&H*jea2J#3sKy`A`fKE>~!UO?J`}1;;PFBjtAKJh}fl z-;<9=z9)az<9qU@+fz@HJO|@nCd_s&26os!36F&-A*xu(?1@lxjpCWFp+D5o@cB4% z6*1H9!mU8$IvNGnr& z;ce^6&_gnc`-h{*J%QeRvPt#g1o|it#0=^!tFHIt?XK7SHu`9u7Eg2_(iw1;IoXd& zI&!MhGOEYyG3HiPFPEL2ocR1Mi|C0>xd~b0%b&CE^u>E3!{&Ilxyu>}VkKCd@#qGXt$^23pk&v^u-PkALdnyYkth+ATJd zt@h`24r9-PWnit5U6seDX=XER~rG2_@B#bQ^shjA|PU@2$k#U}Dzv;>@joy(__)p*W`j-bk?7 zfFrBM4Gn!a!Rc*vb4|eDR>N8lR}JBqnU&z9T7at-<|bkBht!mW(U+akm(}RYs^?`A zlM4&Fz&yp?vlqrtAts?2|IrRgC83c|p!v=_Q-Z1Uo3*^ioJHZg$5(^dC z^kIsjrPtAe>iVos!|_`6_YL%Eb$v?x`#}fKSOMi^bLA)nNPQ#0oh?YHz=(TTSi{;U zS~nG!I9>y_O&e_WPo(QaS&%k))KYluJNL}FyCb`*A5GFM%|_sX~R{jxW8uKmn+j`em47AB+ zpt#=T8D}K*b<74!sm)ChF*se{y_~P{2st?33MB%&R7sm zY3@;f&67|L+&OUPSNBfi{EA;rD(3gFf4Q$$snEpHcj;rlnUf}s%NV!449ENk{7x}!gkZ}NnzoGh-cKi5Fv#n%a)nA^pS1lX*6nasEcCigexLg7-6VABj zdjgTJ;k8*Wi9KL-I?&$Sw3o2Z)fUeKFn6H61MU6lw^!6soK?ByB}Qq?mg|o{3Sl<8 zVMpaNHRj>??w7()w_0TVJWhlGPl(7-rzfd{0=dCGRacmM`LL?BDAq!Bng_G9ad^`( z>??~L`$~zfpg*Du=}%F|IunIh90KgL9+#%ru^$@dNNAm$*3-^Q)mB%_ba5u<9t7tL zsVoniKvb{sP|h3o6=UR*a~(XgOg(L*&j9#>RZnt8ghwuO4-9Rg&&a3xjX&~HRVP2! z#DP0|=gz)TZOm=VR1eN*>ecjQTKnjn=BFY1-5r|C)(ah5Bumhi!VgE5T-72;L8^tE ztj!^T2~nU{K!~uU+vv}1{VH;uJyt4i*ScghKVnQcJTVY(R^yz63aBiHZu_aMKM++4 zKX29@Ia&4l96K#lIV5{hF2ojb-NJXCpEWa|Nx8sL?Q`L^SR_A@4Flqnb$h|ro(hA} z=9mi|j$9L!lO9qrh)RYpUf=m-!sTx)<*VJe}gx!Yw_TcN=neH>%>>vcd6h*L)xcu6~Yg zQh%E@?N4k{0yo;?tYC{;!IqRZ&#h&lv_(N_;hND%q?7PZSOzFLJ^MEFl-Z!s&%Vj< z09!uy$*-$-@}t8#!6F{K4_s4tzGQq+^YjU)C%bC&B#b7_DZ{H*?qFf%C|g^AV1ayvB=Tg0i*Cl5su3 zC4SVAReRZ>Fv~fZ-c_r;MCJL~i+>LWAul`0%^MV<*~$N?Vkc#MD5k(~(=I3;xY5|df8mgh)195L-;$I17fxq5bX z+h=<&*!smUeyIi$syEG!pW#gOIGsQ}CiAyJGp#^99guE%bUmZTl~B*Vz0(Z8={O+O zJ=6SJU*oX~%qJ5a4fow}1xCG!&5lB(ysdUbaezu-$;3`C<-IkgybgVxLt1O-V@21R z(IR;zj&Cv^JuLv}3IO^vxNt?NQ$Yl7V(OZTuQ?Exedk_?Iia6;DW!5k$6YK`+ri)^ zN|IR}vQIQ?EwOgT{HNW?;`}BQ=Qde#$}f-uB`a=L1DS+xJ0*NO^}3c_7T-n{fmy%T z>;2b)S<4T#E{>xOaJK2cj2*Uwd|2E@F94U@d#G&w4C-X_3T{|(G(Jf!QQuRb!_ott( z7iODisXkhBJu{li@xxRDhey=yc`|!9$xh0*Y!weh^P{vpot@B5K(-edd@tYV0bfRH zbIaGr-X^Z+HlW}{fk?3R!jrQHGdPMA^0)Zg3of*S~LrfIOgPoF&JXsQU}l-*1X{tYO64QNJ&DW$L?_t!)fCC7Hfo&xzx(nYOSwnhru9 zss*q-wCU4*4TQ3^%oytCnEf=EtpoEpplR4lAeXa0K%siBVD37RF@BI(ohs9^qA+B!oE!@k4og`|;v6#@i`xgM#O*dcrdV{x8P7|u z)_V{-A3HY#n4322HJ+PYn45OYO$Bqa7Syv9dy(+(xfx;ZspM^nAWn;mJt!>ptw8y9 zKqhTCYg{bw8Me-}!Qhsd0jg6A{ZvA%sYMZwss8cb81kC~lDFzDZ9sA!2o+EJp*pFC z|L~B}%*4A!CYy+&c1=$DCieZQ8C5GmN#jnx85P~4w~Xm`H&D<9lu-;S{$%~dB7ce) z%}cTv_tcDDhi(lmRtPa;ItB9{AtvZ%4dNyovBw!(KZ%;BP!(k(@{~J~VZkzHsND4m z0NhX*v+GX=g}oU|Tp=44MRXV_ti;hyMb&xTc7<$}hQ@A2GY<>b2K-aPs47sD@UvcU za92~3)3FZ=co=}P0t_wC%HrmVpz4iys04n(EN&+jwY_SJB8R2w#k5=rcB>z7y$OQ2 zpqneGiWgwyZCMzJYlTTzoq**|XK1#xD%tt4GhB|L4WK**D_^Hud{Ik8LFkbAb>m<@ z09dujXG%c8Wir;4UcGCRQ8Qv*0LkX$IT%~KXr_z&nL%`|4EW*lOeBMvhpt`bbiaZv zO!#*Mc;!z{Yq6j}x5de8$HWZbYxaav-uSNo!yLiJTCOrtUFJ-92|aB^$&MjItmw*>TU+gc0FGJ(q3W9CMj*^e+! zXF)LQz_&UuKdo?iIURKeKuQSM!_M_`)U%0nZM;zl5V2rRoxH{$?i1@8EO#Na>Fv;_ zlhfA{HqZnhn&)d7?i19K5#AHVAX@?-?M~ZgJQ4Vt5v?rso9Fp_N=|1PA*-Gs+6k^~ z0PD~F9e2iMVS7mIuk8_ezs>V-9$=3=-|hiCl$<#mqnWr5OPU$;ETpk}B|RQ{y6t|r zzbfj(Aj5MVYaWw{PK;p+^Rrx!#jLgUuOSDX$AAl@vCKyLWQYm5M?dajW!P-wv)5P$ z?Q}m&pw!(}$`bCwae%?4WEBBM&1tbJ@5x@QNiX`&^+v_M6Z+;;wwrx@E(i``{<kuN>n5Ly&q|`atSQqI4f@`;6!W zYQ}jE_D?s2Umn9|NCD#xj_h}&g)Y#AF2D%(zmg%Ol*Ed?(bpW z@$|PJu(5&?g+UAU5I49M(&1{%Ssx`T*LmpgA~Lf0Lieyd;VgB#t0=R>Be~aWulDr1 z4_K`m5Isl)0cZwLYkD7HMb`jZtidSy@m@rU9h`sxnTKfyWGu!gn@92d0Uo|t82IWJ zYRp0xdOL{qC}S3^f^Ib#$M-dWJ>Dl{Wcd@be*An;=$#uk)J!TMj`Y9I5J#GL*I6oM zM_mR-G9RPv!)STU4k06M4y$rGW}_01cJJE7rHmQ%wk1WJ*8Qd@YB%1gnKRG}tmZG? z<$+r^)xCv}RGBd^$MXsiglXqWiS@yDlp{t=H)inDT0=BI1l2W}=1POBjxH>+F$ z==k;m4|J5V-&?@#m&mArti;FEi19Z|0poy_!vIN)uU7(6N@UDT-7=(n_eFuBB)ro1 z6j0hlBK+y~%=ODE$Glu14h>qXqU$nPx+4b%^Nzg;xOSeyQAWVU_V8Y7r0)kO$ul+V zNHn}=8?a`Jux7nvq%$k6wd&pfW7U&)MXvvs-k*v$Ji+eC?w*r+Zul;%q)zI&3FVt7 zO!>BPQ@(wvDc`xoly|H$<$G3`@=iRz2miirnJGWC+LZUNG36&N(!OURL_O1@W=_qM za74=q^h0$$iFM;Ky*oQ5*U&#jPm|`e_UhG(#`>!~_`Kc08J%Qva2sBorN@3s&Q{c_WtxHXMml8E+)Hpq zr`BQ^oY6%I&am355^#ssmZiKzlYS>2mE%8J3OiaDC!lt+nX6-t#U`+{A=C^Kc|5JF zzYv>$r#^G;SM68|z|PI*|4_qDJzbghY*U!*p z7>WW#;YB|5>_9dq5CDQ0*2GgS*+`2zCS5WyL*GjSQsN1hyfgBxc?v|&rSHKLPI7s^ z_M!*1YBj5LU3T3Ey-L?P4Tu8Z_LEUG>;%KZz&SvPccMjV78r*h>KqQhU8n`qX;^g) z;Le9SlQ%$1Y^-sSSOFJm>)sI-ju~c_Hj=e(&A@Ikqjm0GWOSGoaLiAp!7q_7yNszcB-*nYi z;XW^?Gf-Sfyw{h^RJqVQS1tGZMeDv*^{&*L*B*Ua4t@wi&aw(%CJrBZH5mgDvq1w| zOeQ*#tdZHMGRZ+4!!gpaELnlh%*BZz`{Vf}KT@^6NmI|7wQN^UTdCl$mESn2`}Pl( zbotxQnDTdan(}|GH02!^neul(P%>`}Y#-^=%zyyg*8UbmyOc&`qe z`EsDWIo~t4)w^fv-DQJ=59>WKICPFF7n(gXIC8Ej7vcHnIi1*-@&5aODc`-^l)rbM zDSv;dDc}2trDo4mK*(U$;nL>V_^Cssq;~H5_Qn8?R2EiB4u8se+-1>lRC*?wr0*#K{28{xI6!i( z*t%cH?h+4M%=Y@R6h*wPX1fIr2p89Ocl+N4g$9oO*Qr&Zf!0egfUmjn8|mDWGL$`h zcirlQ;5l$4rxH9JEMzW)^fL&^+yuMA0_gh~GRHj6?I-Ga0yJ66;-7;K(xqjs{)8a3m#rOXmRp2&@C zOyjD`pkmK%;thH!8Ir-jA*eEJ>>5FTwFwf*VAV!-w`OjxJ?=hNV;V5z&;YG?#V3O) zNw7Yv&7<@+!R(2yJ5l;hPCsPfSeK&J=HCCOzf^Jhaa(Rb+!&u~Y01cGq1;-1n7U!O zZ7^Gkoq^itsir}+LPlujbKR{MV+r7AL2>~0fgTN#**>^*BaEvl28Ti1iQp}FqP4SR zz2%zbd6G^hB}4Pg_rKeL=1>e96+%0au=@F#oLhhv zkA-UAg}D}ZNv;9RS?%wV+M3)jyybcf3Tx`bGYUAP)oHI)wbx3w1cu`C=ll|m-vV$3 zJsVp92z)>!;Ja$BVJ>);CUAT8@`nRAk7#ag;QyXu%CGJ)<<}lD|d7wxZ z)^v=-@lK3Hm*Uud9GyciL_6r2=*9G`Zhag5Bs!jcsP6qBI#b;{Tgk^~)4xY&S?R(_ zKvA8P!AJvDNg1YQ-Zi1$OJKWkXg(@RUDCP51$0f>v{qNpzgMMm$zN01N7!I8hNDYV zc_MtZCILtMvr!@?z|L5J&c<>D{SFKfr2TBNGsTrNha8|L|$*uN|va! zI?LLsmemR|d0uK>CE^+MPYKdr6QvJes8asS&TiZOiJeZ0@gk@`L2Su(k&%cs2$B9< zVw$UK{7~1ZJ|@dW2~}i8+`RLJEi~U5&3rYQ`D!%t#mzh4*+Ooueb-*mFW;K;Wf^|6 zDSk&m5?>6~>Nsdb%h=+El5_LRXkXNY=94nU>U2@SfJ!C=(Ga9@2Z#>?zYj^#Lb0$n^4$`Sj zOL8!MNsu1>DybmpQFc?7xyP(GX=&=lZ*i*A-5P|+DA3Y zYe|)Fc(BF$N*+Ox?kCnjb2tkB8apq~Y{O)et;lRL3E}e3Y6k+u*!c=9@^;w;syx-% zWo-~x-M}=vvlhYF+<_gpGREBEPTKht_KR~!ii2Zosa}16Tn)On#i0B8pT1X3*!|3j zP_jGIoJeVEF`pZ^<@Qg0NZ+|Xl1xX{9D-l%lE#b@3tmO#G$vRf@O;cA-Ti}4shL}T z%R_pC%siE&ZR(AY(zZ9JlqPzaKb?lmT^2G0PY{KOqf6;|bv+kduH?SU=wF?k&_w2; zCUPGI*u4aNxdpojp4=^{W3_!;&V#vh!<nog#ldW?*vs;~kXxCmgB#aZXkFJhcE{(mME z&U(iWE=%F8erE+NnM#`i^YBvW9A*L5=XxPywhoQi-aq~t1%7SsxmS1551t35f`b#c zmc@Ji!t-R&D`q_$+nPh(i*0Ik$&z_G%b{l1DT_|8ROs|d`nkIPHQK34#XV#Cr9i%s zFEeG5sN~`Y{@wFr{Po*?Po6weJxQb{j)U4kq)+DK8J_|ovb z5F>yXXlrqf3Hg0(=?YDL4S>pVG~u|;k1ze;XW5H1t8EkzyHC4pcJ}x$E_+-nAP$P8 zD08)l(M9wNETm;!q+q>~fA}3&4RR$t7bqyntv$I@0qRbAPKyBwBA=6(BQXH*>EqO! zSDH6d`EQ)9^T5A(w$75zZ}&VIfBiP!6AgSKSbp=%B5F1x#m9yvt{-e?$9Okoru2QKPhd~EIdDUt=s3u~x5r*i(rH-)n!o_S2 zd9v8>FTd%7uZQmUJ^9-8-mjaCVhnv}0{XUr9<`I`++c(=Cn7O zsp%S?{NyOjU+wM9@3%8p{)4x}!mr#|WoM8O#qfLIF)O*Mha(05EH#g-cQ^65syrL~ z%yt-XYLE{-BaQ=$z`6g)&^qOZvS_!8lc~eb5fi*^R30csFW-oC=7QR_ndI8)MS5JVko=`CTJd zhpP1!W2@|j!Q{H4J_-(}nc}Tf2hXCPLnzIDnR$d2DITH3o6F<>o1R{Brk8Z&$}Qgb zi`s8yQ7<{*Mhe`D*Yx!!t&7o%4nji4P!of*KMta}4~bpl_rp)bzsB{&Qp@_)!#61q z2t!$d!Gj1!lC3M>ZYD~S)|`4Yq5m$38}d zX83iV(%XpC$ z(JQ!t^!350073G2u6n&5Pm6<1_;?G}Yw(>h;Je=VaC1{0j{3KdIf9|D23wb_Jq${A zAu+nO;Mn5<^6c+{+SPA<7w2+%x#0u?6H@|VjsSdkLN9?|!Odh3;P%T;HH>67g+yTW z1mr3nN3s&$(R%Xl{W7h}leOu0{3*=8*->zG$5BpnM~7xFPK_2sr>OQ`rmsqLTGXxX zwW;kpU-fc6I)IZXLYL)&P4TkW^RX6T&Y4JEOz9JwZm2o;X2zb)W%X*saD;$-S)A3; zlRA>jGa+mB-FvZCJ?lQ=k?WK5Jt7a9Sfsugm~S;JK5)xM#6D%2>DNJ#1^r=w{#sy` zBM}CE12D_{It42^{5CHHeXeX6`8xe%DCr|v9_sN|;IC$cH zdQ~T!^}h_p{tDUiHx0HgJ8*C@R9@``6#!wdlIM~z*R~xFA=~JLkd+WeZ-Sl@h~Yr8 zSAT7oXwxH@q1|4(V@`6jl=2YluPsi}{0MW~0^C+6kunO76o*BNJ&qKHOUb_B!o2%N z_G{Tl{P^9RNPIV(#IBo-Y)a>KU}?#6WQSo^&IF%ep-|$$8nN6-J@(p)i`4bUUN;m- zmWprm56Xa;)zh7U$=m>q^;I60e3%zFO4JnkXCyF~9I3%V{rQ6R+`Ia&Ye5*y<_HLh611Gzi!!{LS*(Bstbk1^W2c&9?b-TmW`D*5dBJK`a|Id~ z3W)uB_l!BaN3UIhUFOs&Xy;KmY9aB^;sR$QK)wTX;KCRhw9eA zLuQA!0|vRlKEU7+pc2-Ow+jF61C@DIynCkND+nraRqG2fTh^xsO=L&EGeje-j61RU z)7Iu}Va`E&i8GDo0a1=)dM^wD1Uol%1F4V$ZA-LNk%O^loto8^(ZcA6XhK~}qGQ$H z$13u0r26+E>TkBn9T}~}#_TVK5X3oZ6S8%2PbSsZl+RWVzHA`LD~dqZ^WLtsHt8WcH>wol=TH@o>z!W&GI*%v?k^f!||Tp z>ce_CZ*=t&dAv=d3D`$Da};^ zy$*~%^@M_J@lcWPf2iu%;X5Ncigp3g9A2X)_wXW+y$$ionsN-v%n6V`Vf^7RE-207 znz7PM#N^IQ-ImPMlmC{PkKC0%R*TPA`K*gL*R||KS+Nsk#ZHv9i+Fo33$Y1vw-R%9 zm@bW{-x%iY8vjm-m19Ll{@d}$^Y)2_0JBf-Q~&?yGn39fDLxbR;+y*O1xjrl1@(Ib z^Yn~{P&4~IRS-OmmFSB7*}N;#l%4FZ(&{Ss6#8=Icy z0u5hglpA4EZoyt9wwK5A-Eu6Lez1ay%@`IY%K{7mv+O_m4#PN6DP* zz(jc|6o*0tQ8R&0o{A^V@i7%oc-flA&htHa^y|oNBTi_*VjDK)Xfo%YU+66O5nxf5 zVYaRTcuUM&Hq_8X4*2Dghj52Uk?ne9neWM?Uq|~zkWjsFVC-`*g2x4CVm*WG@tkJ% z<~fQTCVR~cIxS{hsehC*%F5;f(WhL%=OLL}oA2rx=;}t5Oj>Z)edbpCi4^!o#>RMMNa~FZ<64_Iw z6QwQh`<3uA;5FEap7mpWmZQ8ZwnF>&zYQsAc92n$^2yY)zf8tL=YCkM>^_O8jps=M zvT`h*hwdcnP~QdNa!?=ZYv^7pR&5$9zXG`FQmlOQn5Cw~5>EF0aF+(IbZljf7AaII zlPJ`S(E*;}AuJ_+}=I7Dn(uv`IBvoqyYKu6D4LWx#MdPC{ZBt^ihD7TTV1-UKHzl zcf|DsXKoEMRhXffyC+m#me0i*?yZE9=c)}Z?hzo@9<+A_aq`pbeCkut0!(ztyzNRN z)jfS4isDOnnibV!ezE3B6LpFR)7Z4rI&QB;Z(hDtkqAO#9G9Kk29*lvuq8!F@{7)#*BqgWQ^|^q`9QzDuup1%cwYf_5@j5be zg@5a-7VRxC?@9`Q8sHQ^A99{My)O)MO^(Q!rY(*><#ohb1Zyv}D9il&2K8_DIgoT! z!3*ixlUSBiyvVfHLcf7n&t`fsA3bWvzu!RS;H|kt`}OU~`jBW7miC;tB};22aZ*jv zZ>Yacro?NN_wGTM#Ix1E`P`9?T$oEQ&omvc-g+%@n73(lL(Iori|?Y<22Al;sf7n+ z`JPDeJ(1eMktnrrP0JtHTGO-*y*?Vfd>;U)(=mlNx&$d7nPj3SVg-XKhhlcrl-($; z%jaqE&*=_cj{iYypD{-3d0^Wvf*(pxb7{a4Kp9;?8Oy5%vmM;c1^B!aS7|Y^X^kN9 z@^-%({`8jk&%~`b?u(92xv2z z13>z!7I&M|#(K2TQPsxri1pcl(GA9mT+`2$+9YYz-MoK~lXNaoX1oRNuxxY{fNvV> zmyYzZveT4cn0VO%oEwl5R4je4Ze$7?PL}7}VxSJNKj5=%wlVe6*y<|Lm`6Pfv z=oU{kco-$l*=>|6{d!kTYlkSSDrkjL_;zB`O)+S_ zwZj%|I?}9cot|` z!E~n++ewkoSX}Kch-jAJJJyW31>YIMce*g_GQJbGJYn>qnY3o1>f12qh>WhBY-bD{vn% zSLs-~(*3fIQ=VCdhTmntqA>0=sulo7&M{DG_`;=Rav_z_{T6h;9TVRbhqD>o%Lnx^ z!WMKuSePtl$~|bo7q^04s9@>sRee+z$RNwXgiq*G;*|dZP;sl zj_U!Je~6A&4|qA+vx7XAl4CyX5k^)UIHb|K`QH7+GMa(TN<$+%h>Ww=G3W(>K$NlQ zd${Mq;w57^7%gnpT3;e-!RNRCQnxpq7USb@A56xP?r6Npd*t&P_{?eXt>CJ=s_J}! z%;8V#@&1vN#ME|U_6T+Vnpg=qtwbd=!$*QGj8J!x)7}Qm^ig2X7US7=%ry7sa58#U zuEXr)80zphHsaYvEhU)#E^*pF!g-fD=Qco87v{U{^w)l86WG@_N@7VF`+W&By8-WR zbRegP457Ax2fUtNM19+?*+#61Gbf35f*2ARB=C1+uy5qd-5Q$KjKw^fjx8sxsC$aT z_4BvaI`8y5?^p}w-;>cYFg9OBi9LZKX|?kXGZNoG`(3EpjXFI470h7^>V6A#c|2B;OelfUaeV9vV6?`uA1qyoD4kkw2xD@U;@rlg=;t^s54RwuEn` z^M2&O$8wDCE7|s)oo*z?p3F`7#j-eTCmnQ7175L_uQ-|9d z$FsF~{~OM;F+4j2ef=i-@gh89O1PekW!6$thB3B{AB8#-#40aSr;IiDHYJDub)l~1 zf)6Gul$iDCBg52`F^_FztrMm_i(e0=#KU65nH%OvSI`XT$4qQ!vV7jRoH@7Qn1=vf zx&A^2j+T+}&S)ni?ziEchfxmdd7RO3wGwsbVGKVfW05Xl-><~n+C9hg(EDmeuf$Hg{J2y+F8sm-GF*0DG42;d{G*+bwMIy$=Hp`0tNn&S&?ti)q3l-M12@ U@&U%b(v3H1I9I>_54sg*FxqMfa{vGU diff --git a/core/assets/maps/extractionOutpost.msav b/core/assets/maps/extractionOutpost.msav index 3896db82520cf2c53d01bcdad117d83b7fc3e5e7..6ea0ae63dd3dbe16e3347179474317c6e0405ddd 100644 GIT binary patch literal 24405 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 literal 23902 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 diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index ccbe64b7c6e8..09f8e082ab51 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -195,7 +195,7 @@ public void updateMovement(){ } if(!unit.type.flying){ - unit.updateBoosting(moving || unit.floorOn().isDuct || unit.floorOn().damageTaken > 0f); + unit.updateBoosting(moving || unit.floorOn().isDuct || unit.floorOn().damageTaken > 0f || unit.floorOn().isDeep()); } } diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index d50ea28261e2..c1d6274c475a 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1872,7 +1872,7 @@ public static void load(){ rotateSpeed = 5f; mirror = true; rotate = true; - bullet = new LaserBoltBulletType(5.2f, 10){{ + bullet = new LaserBoltBulletType(5.2f, 12){{ lifetime = 30f; healPercent = 5.5f; collidesTeam = true; diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 5cdf7547b580..d74b41dad561 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -95,7 +95,7 @@ public static boolean canCreate(Team team, UnitType type){ public static int getCap(Team team){ //wave team has no cap - if((team == state.rules.waveTeam && !state.rules.pvp) || (state.isCampaign() && team == state.rules.waveTeam)){ + if((team == state.rules.waveTeam && !state.rules.pvp) || (state.isCampaign() && team == state.rules.waveTeam) || state.rules.disableUnitCap){ return Integer.MAX_VALUE; } return Math.max(0, state.rules.unitCapVariable ? state.rules.unitCap + team.data().unitCap : state.rules.unitCap); diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index d1ba8ffbc67b..aacfbafa5e99 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -164,6 +164,7 @@ public void each(Cons cons){ /** Base abstract class for any in-map objective. */ public static abstract class MapObjective{ + public boolean hidden; public @Nullable @Multiline String details; public @Unordered String[] flagsAdded = {}; public @Unordered String[] flagsRemoved = {}; diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 592be5ddbb62..b30d373b271b 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -135,6 +135,8 @@ public class Rules{ public int winWave = 0; /** Base unit cap. Can still be increased by blocks. */ public int unitCap = 0; + /** If true, the unit cap is disabled. */ + public boolean disableUnitCap; /** Environment drag multiplier. */ public float dragMultiplier = 1f; /** Environmental flags that dictate visuals & how blocks function. */ diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 70a1d1527966..cf7a2866b5da 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -806,7 +806,7 @@ public void draw(){ if(state.rules.objectives.any()){ boolean first = true; for(var obj : state.rules.objectives){ - if(!obj.qualified()) continue; + if(!obj.qualified() || obj.hidden) continue; String text = obj.text(); if(text != null && !text.isEmpty()){ From 34310cbc51783e3447a727d93c0175b1f7abdad9 Mon Sep 17 00:00:00 2001 From: buthed010203 Date: Mon, 16 Sep 2024 20:11:24 -0400 Subject: [PATCH 26/45] Update io ip (#10207) --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index 6a2520b88aeb..9a56780fe1db 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -121,7 +121,7 @@ }, { "name": "io", - "address": ["159.69.7.83", "159.69.7.83:1000", "159.69.7.83:2000", "159.69.7.83:3000", "159.69.7.83:4000"] + "address": ["148.251.184.58:3000", "148.251.184.58:3000:1000", "148.251.184.58:3000:2000", "148.251.184.58:3000:3000", "148.251.184.58:3000:4000"] }, { "name": "Korea", From aad88412114217911b0639cbf3995ec68c1262b3 Mon Sep 17 00:00:00 2001 From: buthed010203 Date: Mon, 16 Sep 2024 20:31:18 -0400 Subject: [PATCH 27/45] Whoops (#10208) --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index 9a56780fe1db..51897f609702 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -121,7 +121,7 @@ }, { "name": "io", - "address": ["148.251.184.58:3000", "148.251.184.58:3000:1000", "148.251.184.58:3000:2000", "148.251.184.58:3000:3000", "148.251.184.58:3000:4000"] + "address": ["148.251.184.58", "148.251.184.58:1000", "148.251.184.58:2000", "148.251.184.58:3000", "148.251.184.58:4000"] }, { "name": "Korea", From cec743a8416a95fc10b2209ce1782daa7f070a80 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 16 Sep 2024 20:38:42 -0400 Subject: [PATCH 28/45] Bulk tile update Call methods --- core/assets/maps/atolls.msav | Bin 42463 -> 42462 bytes core/src/mindustry/world/Tile.java | 36 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/core/assets/maps/atolls.msav b/core/assets/maps/atolls.msav index 83931ae31dce4b56c25f6f1b9281284dfd7d7244..1768c32aaf6f083e35ffacc5ba339f3095bb4d2c 100644 GIT binary patch delta 40822 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 W0wwYRM!&-4S133SfByxiiKQNqfbt9g delta 41048 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%0A%glFns&TD`Ev(*=rgv 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 diff --git a/core/src/mindustry/world/Tile.java b/core/src/mindustry/world/Tile.java index 9fedd0aa27c0..fb1a912853ba 100644 --- a/core/src/mindustry/world/Tile.java +++ b/core/src/mindustry/world/Tile.java @@ -690,6 +690,42 @@ public String toString(){ //remote utility methods + /** Positions are in 'packed position' format - left bits x, right bits y. */ + @Remote(called = Loc.server) + public static void setTileBlocks(Block block, Team team, int[] positions){ + if(block == null || positions == null) return; + for(int pos : positions){ + Tile tile = world.tile(pos); + if(tile != null){ + tile.setBlock(block, team, 0); + } + } + } + + /** Positions are in 'packed position' format - left bits x, right bits y. */ + @Remote(called = Loc.server) + public static void setTileFloors(Block block, int[] positions){ + if(positions == null || !(block instanceof Floor floor)) return; + for(int pos : positions){ + Tile tile = world.tile(pos); + if(tile != null){ + tile.setFloor(floor); + } + } + } + + /** Positions are in 'packed position' format - left bits x, right bits y. */ + @Remote(called = Loc.server) + public static void setTileOverlays(Block block, int[] positions){ + if(positions == null || !(block instanceof OverlayFloor floor)) return; + for(int pos : positions){ + Tile tile = world.tile(pos); + if(tile != null){ + tile.setOverlay(floor); + } + } + } + @Remote(called = Loc.server) public static void setFloor(Tile tile, Block floor, Block overlay){ tile.setFloor(floor.asFloor()); From b81553f49014f4e472f7ab1aacb0120ed2a375e6 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 17 Sep 2024 14:29:24 -0400 Subject: [PATCH 29/45] Minor bugfixes / New easier difficulty mode --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/ai/types/CommandAI.java | 4 ++-- core/src/mindustry/game/Difficulty.java | 1 + core/src/mindustry/world/blocks/defense/ForceProjector.java | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index dbf74d3235c3..549651a1974e 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -801,6 +801,7 @@ threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index b72cba2d6879..d7b5d480fd99 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -358,8 +358,8 @@ void finishPath(){ public void commandQueue(Position location){ if(targetPos == null && attackTarget == null){ - if(location instanceof Teamc target){ - commandTarget(target, this.stopAtTarget); + if(location instanceof Teamc t){ + commandTarget(t, this.stopAtTarget); }else if(location instanceof Vec2 position){ commandPosition(position); } diff --git a/core/src/mindustry/game/Difficulty.java b/core/src/mindustry/game/Difficulty.java index 1f7943d72e20..fe657294ed1b 100644 --- a/core/src/mindustry/game/Difficulty.java +++ b/core/src/mindustry/game/Difficulty.java @@ -4,6 +4,7 @@ public enum Difficulty{ //TODO these need tweaks + casual(0.75f, 0.5f, 2f), easy(1f, 0.75f, 1.5f), normal(1f, 1f, 1f), hard(1.25f, 1.5f, 0.8f), diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index f62e8fa12eb8..0013d4c2ffe5 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -51,7 +51,7 @@ public class ForceProjector extends Block{ protected static ForceBuild paramEntity; protected static Effect paramEffect; protected static final Cons shieldConsumer = bullet -> { - if(bullet.team != paramEntity.team && bullet.type.absorbable && Intersector.isInRegularPolygon(((ForceProjector)(paramEntity.block)).sides, paramEntity.x, paramEntity.y, paramEntity.realRadius(), ((ForceProjector)(paramEntity.block)).shieldRotation, bullet.x, bullet.y)){ + if(bullet.team != paramEntity.team && bullet.type.absorbable && !bullet.absorbed && Intersector.isInRegularPolygon(((ForceProjector)(paramEntity.block)).sides, paramEntity.x, paramEntity.y, paramEntity.realRadius(), ((ForceProjector)(paramEntity.block)).shieldRotation, bullet.x, bullet.y)){ bullet.absorb(); paramEffect.at(bullet); paramEntity.hit = 1f; From d1648004cbb1021f83dd386be1258215efd05832 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Tue, 17 Sep 2024 18:30:26 +0000 Subject: [PATCH 30/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 + core/assets/bundles/bundle_bg.properties | 1 + core/assets/bundles/bundle_ca.properties | 1 + core/assets/bundles/bundle_cs.properties | 1 + core/assets/bundles/bundle_da.properties | 1 + core/assets/bundles/bundle_de.properties | 1 + core/assets/bundles/bundle_es.properties | 1 + core/assets/bundles/bundle_et.properties | 1 + core/assets/bundles/bundle_eu.properties | 1 + core/assets/bundles/bundle_fi.properties | 1 + core/assets/bundles/bundle_fil.properties | 1 + core/assets/bundles/bundle_fr.properties | 1 + core/assets/bundles/bundle_hu.properties | 1 + core/assets/bundles/bundle_id_ID.properties | 1 + core/assets/bundles/bundle_it.properties | 1 + core/assets/bundles/bundle_ja.properties | 1 + core/assets/bundles/bundle_ko.properties | 1 + core/assets/bundles/bundle_lt.properties | 1 + core/assets/bundles/bundle_nl.properties | 1 + core/assets/bundles/bundle_nl_BE.properties | 1 + core/assets/bundles/bundle_pl.properties | 1 + core/assets/bundles/bundle_pt_BR.properties | 1 + core/assets/bundles/bundle_pt_PT.properties | 1 + core/assets/bundles/bundle_ro.properties | 1 + core/assets/bundles/bundle_ru.properties | 1 + core/assets/bundles/bundle_sr.properties | 1 + core/assets/bundles/bundle_sv.properties | 1 + core/assets/bundles/bundle_th.properties | 1 + core/assets/bundles/bundle_tk.properties | 1 + core/assets/bundles/bundle_tr.properties | 1 + core/assets/bundles/bundle_uk_UA.properties | 1 + core/assets/bundles/bundle_vi.properties | 1 + core/assets/bundles/bundle_zh_CN.properties | 1 + core/assets/bundles/bundle_zh_TW.properties | 1 + 34 files changed, 34 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index e8ca1c944052..4211e9f3baee 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -775,6 +775,7 @@ threat.medium = Сярэдняя threat.high = Высокая threat.extreme = Экстрымальная threat.eradication = Вынішчэнне +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 593f6b1917ba..d40375a9dd3c 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -783,6 +783,7 @@ threat.medium = Средна threat.high = Висока threat.extreme = Екстремна threat.eradication = Унищожителна +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 4ed30ab6cd59..9877db3d4b45 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -787,6 +787,7 @@ threat.medium = Mitjana threat.high = Alta threat.extreme = Extrema threat.eradication = Erradicació +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index e62ce30a4ffd..490efc78c04a 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -785,6 +785,7 @@ threat.medium = Střední threat.high = Velké threat.extreme = Extrémní threat.eradication = Vyhlazující +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 713024aec9f3..6bc53f0e4fd8 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index e5840b6b0957..2e4f776cab26 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -795,6 +795,7 @@ threat.medium = Mittel threat.high = Hoch threat.extreme = Extrem threat.eradication = Zerstörung +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index d0531aee4bae..e58a263d0604 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -791,6 +791,7 @@ threat.medium = Media threat.high = Alta threat.extreme = Extrema threat.eradication = Erradicación +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 6f20503a2ee8..8b5f117850f9 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 56ddc06499af..3b69bb472194 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -778,6 +778,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index f4f10713e19c..c7e8e4b65830 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -776,6 +776,7 @@ threat.medium = Kohtalainen threat.high = Korkea threat.extreme = Äärimmäinen threat.eradication = Täystuho +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 02ab0d6ba44e..abe72cc34a3e 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = Mataas threat.extreme = Sobra-sobra threat.eradication = Tiyak na talo sa hind handa +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 0b1a48f8efd5..0be129105838 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -798,6 +798,7 @@ threat.medium = Normale threat.high = Grande threat.extreme = Extrême threat.eradication = Éradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index c1a4c4d99bd4..71f4c7bcd44a 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -800,6 +800,7 @@ threat.medium = Közepes threat.high = Magas threat.extreme = Extrém threat.eradication = Irtózatos +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 14c971c210dd..8714a9612b6a 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -800,6 +800,7 @@ threat.medium = Sedang threat.high = Tinggi threat.extreme = Berbahaya threat.eradication = Pemusnahan +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index e47ee89bbaea..051564b167a8 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -781,6 +781,7 @@ threat.medium = Media threat.high = Alta threat.extreme = Estrema threat.eradication = Catastrofe +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index bd6949cfda48..86c4161bf1ff 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -785,6 +785,7 @@ threat.medium = 中 threat.high = 高 threat.extreme = 過酷 threat.eradication = 破滅的 +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 6ee3b2cf3f55..23b5b82405df 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -786,6 +786,7 @@ threat.medium = 보통 threat.high = 높음 threat.extreme = 매우 높음 threat.eradication = 극한 +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 994ff3bfe003..4954e3f96637 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 3f1c22694575..c42b7e64e4cf 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -787,6 +787,7 @@ threat.medium = Gemiddeld threat.high = Hoog threat.extreme = Extreem threat.eradication = Uitroeiing +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 33201743f916..d979df1ae34d 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index cb32a1046bf2..dfe72ebc4c4a 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -783,6 +783,7 @@ threat.medium = Średni threat.high = Wysoki threat.extreme = Ekstremalny threat.eradication = Czystka +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 0fd2f6e274f4..94c528731a06 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -791,6 +791,7 @@ threat.medium = Média threat.high = Alta threat.extreme = Extrema threat.eradication = Erradicação +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 86272b4bf062..6895ba8fba5c 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index cc28415b801d..df87fd185bd3 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -785,6 +785,7 @@ threat.medium = Medie threat.high = Mare threat.extreme = Extremă threat.eradication = Eradicare +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 3a022f09a4c7..f3f3022f2abb 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -786,6 +786,7 @@ threat.medium = Средняя threat.high = Высокая threat.extreme = Экстремальная threat.eradication = Истребляющая +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index c16e721ef9a8..a78d662a3554 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -786,6 +786,7 @@ threat.medium = Srednje threat.high = Visoko threat.extreme = Ekstremno threat.eradication = Istrebljenje +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 39252e07d60c..57547037b806 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index db16ff12e01e..2a42d3b6f982 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -786,6 +786,7 @@ threat.medium = กลาง threat.high = สูง threat.extreme = วิบัติภัย threat.eradication = ทำลายล้าง +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 4e9e1c679ae4..59a99e61b192 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -776,6 +776,7 @@ threat.medium = Medium threat.high = High threat.extreme = Extreme threat.eradication = Eradication +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index ef06aa173b57..99e32440088f 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -785,6 +785,7 @@ threat.medium = Orta threat.high = Yüksek threat.extreme = Aşırı threat.eradication = İmkansız +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index a06215767623..229127ae737d 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -794,6 +794,7 @@ threat.medium = середня threat.high = висока threat.extreme = екстремальна threat.eradication = викорінювальна +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 9dd8502bc5b4..60a0b255396f 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -800,6 +800,7 @@ threat.medium = Trung bình threat.high = Cao threat.extreme = Cực cao threat.eradication = Hủy diệt +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index b7a7811521bb..405207ad7246 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -795,6 +795,7 @@ threat.medium = 中度 threat.high = 高度 threat.extreme = 极高 threat.eradication = 毁灭 +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 57d3cb8d8d5c..d31aec90d35f 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -791,6 +791,7 @@ threat.medium = 中 threat.high = 高 threat.extreme = 極高 threat.eradication = 毀滅性 +difficulty.casual = Casual difficulty.easy = Easy difficulty.normal = Normal difficulty.hard = Hard From 5b9d3029a51552f65e79d5070f36eb7d503eece1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 20 Jun 2024 17:26:10 -0400 Subject: [PATCH 31/45] Loop unit transfer command --- core/assets/bundles/bundle.properties | 2 + core/src/mindustry/ai/UnitCommand.java | 7 ++- core/src/mindustry/ai/types/CommandAI.java | 61 ++++++++++++++++--- .../mindustry/entities/comp/PayloadComp.java | 3 +- core/src/mindustry/input/Binding.java | 1 + core/src/mindustry/input/InputHandler.java | 14 +++++ core/src/mindustry/io/TypeIO.java | 4 +- core/src/mindustry/type/UnitType.java | 2 +- .../ui/fragments/PlacementFragment.java | 4 ++ 9 files changed, 86 insertions(+), 12 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 549651a1974e..0f88f8d18d36 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -359,6 +359,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1274,6 +1275,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region diff --git a/core/src/mindustry/ai/UnitCommand.java b/core/src/mindustry/ai/UnitCommand.java index 51a0edfcf8b4..85eff6be0048 100644 --- a/core/src/mindustry/ai/UnitCommand.java +++ b/core/src/mindustry/ai/UnitCommand.java @@ -17,7 +17,7 @@ public class UnitCommand extends MappableContent{ @Deprecated public static final Seq all = new Seq<>(); - public static UnitCommand moveCommand, repairCommand, rebuildCommand, assistCommand, mineCommand, boostCommand, enterPayloadCommand, loadUnitsCommand, loadBlocksCommand, unloadPayloadCommand; + public static UnitCommand moveCommand, repairCommand, rebuildCommand, assistCommand, mineCommand, boostCommand, enterPayloadCommand, loadUnitsCommand, loadBlocksCommand, unloadPayloadCommand, loopPayloadCommand; /** Name of UI icon (from Icon class). */ public final String icon; @@ -110,5 +110,10 @@ public static void loadAll(){ drawTarget = true; resetTarget = false; }}; + loopPayloadCommand = new UnitCommand("loopPayload", "resize", Binding.unit_command_loop_payload, null){{ + switchToMove = false; + drawTarget = true; + resetTarget = false; + }}; } } diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index d7b5d480fd99..8ba3e24be1a3 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -20,11 +20,12 @@ public class CommandAI extends AIController{ protected static final Vec2 vecOut = new Vec2(), vecMovePos = new Vec2(); protected static final boolean[] noFound = {false}; protected static final UnitPayload tmpPayload = new UnitPayload(null); + protected static final int transferStateNone = 0, transferStateLoad = 1, transferStateUnload = 2; public Seq commandQueue = new Seq<>(5); public @Nullable Vec2 targetPos; public @Nullable Teamc attackTarget; - /** Group of units that were all commanded to reach the same point.. */ + /** Group of units that were all commanded to reach the same point. */ public @Nullable UnitGroup group; public int groupIndex = 0; /** All encountered unreachable buildings of this AI. Why a sequence? Because contains() is very rarely called on it. */ @@ -36,6 +37,7 @@ public class CommandAI extends AIController{ protected Vec2 lastTargetPos; protected boolean blockingUnit; protected float timeSpentBlocked; + protected int transferState = transferStateNone; /** Stance, usually related to firing mode. */ public UnitStance stance = UnitStance.shoot; @@ -113,6 +115,13 @@ public void clearCommands(){ attackTarget = null; } + void tryPickupUnit(Payloadc pay){ + Unit target = Units.closest(unit.team, unit.x, unit.y, unit.type.hitSize * 2f, u -> u.isAI() && u != unit && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize)); + if(target != null){ + Call.pickedUnitPayload(unit, target); + } + } + public void defaultBehavior(){ if(!net.client() && unit instanceof Payloadc pay){ @@ -123,10 +132,7 @@ public void defaultBehavior(){ //try to pick up what's under it if(command == UnitCommand.loadUnitsCommand){ - Unit target = Units.closest(unit.team, unit.x, unit.y, unit.type.hitSize * 2f, u -> u.isAI() && u != unit && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize)); - if(target != null){ - Call.pickedUnitPayload(unit, target); - } + tryPickupUnit(pay); } //try to pick up a block @@ -223,7 +229,8 @@ public void defaultBehavior(){ //TODO: should the unit stop when it finds a target? if( (stance == UnitStance.patrol && target != null && unit.within(target, unit.type.range - 2f) && !unit.type.circleTarget) || - (command == UnitCommand.enterPayloadCommand && unit.within(targetPos, 4f) || (targetBuild != null && unit.within(targetBuild, targetBuild.block.size * tilesize/2f * 0.9f))) + (command == UnitCommand.enterPayloadCommand && unit.within(targetPos, 4f) || (targetBuild != null && unit.within(targetBuild, targetBuild.block.size * tilesize/2f * 0.9f))) || + (command == UnitCommand.loopPayloadCommand && unit.within(targetPos, 10f)) ){ move = false; } @@ -330,6 +337,46 @@ void finishPath(){ return; } + if(!net.client() && command == UnitCommand.loopPayloadCommand && unit instanceof Payloadc pay){ + + if(transferState == transferStateNone){ + transferState = pay.hasPayload() ? transferStateUnload : transferStateLoad; + } + + if(transferState == transferStateUnload){ + //drop until there's a failure + int prev = -1; + while(pay.hasPayload() && prev != pay.payloads().size){ + prev = pay.payloads().size; + Call.payloadDropped(unit, unit.x, unit.y); + } + + //wait for everything to unload before running code below + if(pay.hasPayload()){ + return; + } + }else if(transferState == transferStateLoad){ + //pick up units until there's a failure + int prev = -1; + while(prev != pay.payloads().size){ + prev = pay.payloads().size; + tryPickupUnit(pay); + } + + //wait to load things before running code below + if(!pay.hasPayload()){ + return; + } + } + + //it will never finish + if(commandQueue.size == 0){ + return; + } + } + + transferState = transferStateNone; + Vec2 prev = targetPos; targetPos = null; @@ -341,7 +388,7 @@ void finishPath(){ commandPosition(position); } - if(prev != null && stance == UnitStance.patrol){ + if(prev != null && (stance == UnitStance.patrol || command == UnitCommand.loopPayloadCommand)){ commandQueue.add(prev.cpy()); } diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 9b9d6e640576..9cf23876d2af 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -147,7 +147,8 @@ boolean dropUnit(UnitPayload payload){ Unit u = payload.unit; //can't drop ground units - if(!u.canPass(tileX(), tileY()) || Units.count(x, y, u.physicSize(), o -> o.isGrounded()) > 1){ + //allow stacking for small units for now - otherwise, unit transfer would get annoying + if(!u.canPass(tileX(), tileY()) || Units.count(x, y, u.physicSize(), o -> o.isGrounded() && o.hitSize > 14f) > 1){ return false; } diff --git a/core/src/mindustry/input/Binding.java b/core/src/mindustry/input/Binding.java index 039829ebd447..973e2e961e50 100644 --- a/core/src/mindustry/input/Binding.java +++ b/core/src/mindustry/input/Binding.java @@ -60,6 +60,7 @@ public enum Binding implements KeyBind{ unit_command_load_units(KeyCode.unset), unit_command_load_blocks(KeyCode.unset), unit_command_unload_payload(KeyCode.unset), + unit_command_loop_payload(KeyCode.unset), category_prev(KeyCode.comma, "blocks"), category_next(KeyCode.period), diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index fcf7aedfb9ab..f3d7fa84cf65 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1088,6 +1088,20 @@ public void drawCommanded(){ } } } + + if(ai.targetPos != null && ai.currentCommand() == UnitCommand.loopPayloadCommand && unit instanceof Payloadc pay){ + Draw.color(Pal.accent, 0.4f + Mathf.absin(5f, 0.5f)); + TextureRegion region = pay.hasPayload() ? Icon.download.getRegion() : Icon.upload.getRegion(); + float offset = 11f; + float size = 8f; + Draw.rect(region, ai.targetPos.x, ai.targetPos.y + offset, size, size / region.ratio()); + + if(ai.commandQueue.size > 0){ + region = !pay.hasPayload() ? Icon.download.getRegion() : Icon.upload.getRegion(); + Draw.rect(region, ai.commandQueue.first().getX(), ai.commandQueue.first().getY() + offset, size, size / region.ratio()); + } + Draw.color(); + } } for(var commandBuild : commandBuildings){ diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index c02ceb4ae69d..5be1d5440363 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -246,7 +246,7 @@ public static WeaponMount[] readMounts(Reads read, WeaponMount[] mounts){ //this is irrelevant. static final WeaponMount[] noMounts = {}; - + public static WeaponMount[] readMounts(Reads read){ read.skip(read.b() * (1 + 4 + 4)); @@ -581,7 +581,7 @@ public static UnitController readController(Reads read, UnitController prev){ if(ai.command == null) ai.command = UnitCommand.moveCommand; } - //command queue only in type 7 + //command queue only in type 7/8 if(type == 7 || type == 8){ ai.commandQueue.clear(); int length = read.ub(); diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 4466ecd536d5..1eb43fec672c 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -853,7 +853,7 @@ public void init(){ cmds.add(UnitCommand.mineCommand); } if(example instanceof Payloadc){ - cmds.addAll(UnitCommand.loadUnitsCommand, UnitCommand.loadBlocksCommand, UnitCommand.unloadPayloadCommand); + cmds.addAll(UnitCommand.loadUnitsCommand, UnitCommand.loadBlocksCommand, UnitCommand.unloadPayloadCommand, UnitCommand.loopPayloadCommand); } } diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 8bbc475022a8..b0986bffa741 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -529,6 +529,10 @@ public void build(Group parent){ if(stances.size > 1){ u.row(); + if(commands.size > 1){ + u.add(new Image(Tex.whiteui)).height(3f).color(Pal.gray).pad(7f).growX().row(); + } + u.table(coms -> { coms.left(); int scol = 0; From 65c4dd6695d443c0b3dc9727d2fffab4b1d87ddb Mon Sep 17 00:00:00 2001 From: Github Actions Date: Tue, 17 Sep 2024 22:04:39 +0000 Subject: [PATCH 32/45] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 ++ core/assets/bundles/bundle_bg.properties | 2 ++ core/assets/bundles/bundle_ca.properties | 2 ++ core/assets/bundles/bundle_cs.properties | 2 ++ core/assets/bundles/bundle_da.properties | 2 ++ core/assets/bundles/bundle_de.properties | 2 ++ core/assets/bundles/bundle_es.properties | 2 ++ core/assets/bundles/bundle_et.properties | 2 ++ core/assets/bundles/bundle_eu.properties | 2 ++ core/assets/bundles/bundle_fi.properties | 2 ++ core/assets/bundles/bundle_fil.properties | 2 ++ core/assets/bundles/bundle_fr.properties | 2 ++ core/assets/bundles/bundle_hu.properties | 2 ++ core/assets/bundles/bundle_id_ID.properties | 2 ++ core/assets/bundles/bundle_it.properties | 2 ++ core/assets/bundles/bundle_ja.properties | 2 ++ core/assets/bundles/bundle_ko.properties | 2 ++ core/assets/bundles/bundle_lt.properties | 2 ++ core/assets/bundles/bundle_nl.properties | 2 ++ core/assets/bundles/bundle_nl_BE.properties | 2 ++ core/assets/bundles/bundle_pl.properties | 2 ++ core/assets/bundles/bundle_pt_BR.properties | 2 ++ core/assets/bundles/bundle_pt_PT.properties | 2 ++ core/assets/bundles/bundle_ro.properties | 2 ++ core/assets/bundles/bundle_ru.properties | 2 ++ core/assets/bundles/bundle_sr.properties | 2 ++ core/assets/bundles/bundle_sv.properties | 2 ++ core/assets/bundles/bundle_th.properties | 2 ++ core/assets/bundles/bundle_tk.properties | 2 ++ core/assets/bundles/bundle_tr.properties | 2 ++ core/assets/bundles/bundle_uk_UA.properties | 2 ++ core/assets/bundles/bundle_vi.properties | 2 ++ core/assets/bundles/bundle_zh_CN.properties | 2 ++ core/assets/bundles/bundle_zh_TW.properties | 2 ++ 34 files changed, 68 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 4211e9f3baee..362b6f45b92f 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -348,6 +348,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1241,6 +1242,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Перабудаваць Рэгіён keybind.schematic_select.name = Абраць Вобласць keybind.schematic_menu.name = Меню Схем diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index d40375a9dd3c..14fdc186fc3d 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1252,6 +1253,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Избери Регион keybind.schematic_menu.name = Меню със Схеми diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 9877db3d4b45..991db75325eb 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -353,6 +353,7 @@ command.enterPayload = Entra bloc command.loadUnits = Carrega unitats command.loadBlocks = Carrega blocs command.unloadPayload = Descarrega +command.loopPayload = Loop Unit Transfer stance.stop = Cancel·la les ordres stance.shoot = Comportament: Dispara stance.holdfire = Comportament: Mantén el foc @@ -1255,6 +1256,7 @@ keybind.unit_command_load_units.name = Ordre d’unitat: Carrega unitats keybind.unit_command_load_blocks.name = Ordre d’unitat: Carrega blocs keybind.unit_command_unload_payload.name = Ordre d’unitat: Descarrega blocs keybind.unit_command_enter_payload.name = Ordre d’unitat: Entra blocs +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Reconstrueix la regió keybind.schematic_select.name = Selecciona una regió keybind.schematic_menu.name = Menú de plànols diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 490efc78c04a..49d261ed0f14 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -354,6 +354,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1254,6 +1255,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Přestavět Region keybind.schematic_select.name = Vybrat oblast keybind.schematic_menu.name = Nabídka šablon diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 6bc53f0e4fd8..f1740a07ab9c 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1243,6 +1244,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Vælg region keybind.schematic_menu.name = Skabelon-visning diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 2e4f776cab26..949c65e94b5e 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -356,6 +356,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1265,6 +1266,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Region wiederaufbauen keybind.schematic_select.name = Bereich auswählen keybind.schematic_menu.name = Entwurfsmenü diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index e58a263d0604..e1908f08dc46 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1261,6 +1262,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Reconstruir región keybind.schematic_select.name = Seleccionar región keybind.schematic_menu.name = Menú de esquemas diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 8b5f117850f9..cb19f92b0a09 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1243,6 +1244,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 3b69bb472194..eb9667efe4dc 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -351,6 +351,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1245,6 +1246,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Hautatu eskualdea keybind.schematic_menu.name = Eskema menua diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index c7e8e4b65830..812d1da97845 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1242,6 +1243,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Valitse alue keybind.schematic_menu.name = Kaavio Valikko diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index abe72cc34a3e..2d602c3eeef4 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1242,6 +1243,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 0be129105838..3315051c2849 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -359,6 +359,7 @@ command.enterPayload = Entrer dans Bloc de Transport command.loadUnits = Transporter Unités command.loadBlocks = Transporter Blocs command.unloadPayload = Poser Chargement +command.loopPayload = Loop Unit Transfer stance.stop = Annuler les Ordres stance.shoot = Ordre: Tirer stance.holdfire = Ordre: Ne pas Tirer @@ -1268,6 +1269,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Reconstruire la Zone keybind.schematic_select.name = Sélectionner une Région diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 71f4c7bcd44a..dc8835338aa0 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -359,6 +359,7 @@ command.enterPayload = Berakodás a raktérbe command.loadUnits = Egységek felvétele command.loadBlocks = Blokkok felvétele command.unloadPayload = Kirakodás a raktérből +command.loopPayload = Loop Unit Transfer stance.stop = Parancsok visszavonása stance.shoot = Viselkedés: lövés stance.holdfire = Viselkedés: tüzet szüntess @@ -1272,6 +1273,7 @@ keybind.unit_command_load_units.name = Egységparancs: egységek berakodása keybind.unit_command_load_blocks.name = Egységparancs: blokkok berakodása keybind.unit_command_unload_payload.name = Egységparancs: kirakodás keybind.unit_command_enter_payload.name = Egységparancs: berakodás +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Régió újraépítése keybind.schematic_select.name = Terület kijelölése diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 8714a9612b6a..a7e31673a293 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -359,6 +359,7 @@ command.enterPayload = Masukkan Muatan Blok command.loadUnits = Muat Unit command.loadBlocks = Muat Blok command.unloadPayload = Turunkan Muatan +command.loopPayload = Loop Unit Transfer stance.stop = Batalkan Perintah stance.shoot = Posisi Unit: Menembak stance.holdfire = Posisi Unit: Gencatan Senjata @@ -1271,6 +1272,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Perintah Unit: Masuk ke Muatan +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Membangun Wilayah Kembali keybind.schematic_select.name = Pilih Daerah diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 051564b167a8..b813286a218b 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -351,6 +351,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1248,6 +1249,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Seleziona Regione keybind.schematic_menu.name = Menu Schematica diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 86c4161bf1ff..c67b1a071642 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1254,6 +1255,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = リージョンの再構築 keybind.schematic_select.name = 範囲選択 keybind.schematic_menu.name = 設計図メニュー diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 23b5b82405df..18ddb0f7e256 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -353,6 +353,7 @@ command.enterPayload = 화물 블록에 들어가기 command.loadUnits = 유닛 적재 command.loadBlocks = 블록 적재 command.unloadPayload = 화물 내려놓기 +command.loopPayload = Loop Unit Transfer stance.stop = 명령 취소하기 stance.shoot = 명령: 사격 stance.holdfire = 명령: 사격 중지 @@ -1253,6 +1254,7 @@ keybind.unit_command_load_units.name = 유닛 제어: 유닛 적재 keybind.unit_command_load_blocks.name = 유닛 제어: 블록 적재 keybind.unit_command_unload_payload.name = 유닛 제어: 화물 투하 keybind.unit_command_enter_payload.name = 유닛 제어: 화물 건물에 착륙/진입 +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = 지역 재건 keybind.schematic_select.name = 영역 설정 keybind.schematic_menu.name = 설계도 메뉴 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 4954e3f96637..47218ec69859 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1243,6 +1244,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Pasirinkite Regioną keybind.schematic_menu.name = Schemų Meniu diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index c42b7e64e4cf..2acf0e053e50 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -357,6 +357,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1255,6 +1256,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Herbouw Regio keybind.schematic_select.name = Selecteer gebied keybind.schematic_menu.name = Ontwerpmenu diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index d979df1ae34d..5d1cfb44899f 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1243,6 +1244,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index dfe72ebc4c4a..7650f980a509 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Załaduj Jednostki command.loadBlocks = Załaduj Bloki command.unloadPayload = Rozładuj Ładunek +command.loopPayload = Loop Unit Transfer stance.stop = Analuj Rozkazy stance.shoot = Strzelaj stance.holdfire = Wstrzymaj Ogień @@ -1252,6 +1253,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Odbuduj Region keybind.schematic_select.name = Wybierz Region keybind.schematic_menu.name = Menu Schematów diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 94c528731a06..91150efc17d5 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1262,6 +1263,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu de Esquemas diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 6895ba8fba5c..d97088fb5364 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1243,6 +1244,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu esquemático diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index df87fd185bd3..ea64fcbc01e7 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1254,6 +1255,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Selectează Regiunea keybind.schematic_menu.name = Meniu Scheme diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index f3f3022f2abb..bde22abbc0fb 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1254,6 +1255,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Перестроить в области keybind.schematic_select.name = Выбрать область keybind.schematic_menu.name = Меню схем diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index a78d662a3554..2d50761af1a4 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1256,6 +1257,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Ponovo Sagradi Region keybind.schematic_select.name = Izaberi Region keybind.schematic_menu.name = Menu Šema diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 57547037b806..bd52fc7da642 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1243,6 +1244,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 2a42d3b6f982..2110e7b6c124 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1255,6 +1256,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = เลือกพื้นที่สร้างใหม่ keybind.schematic_select.name = เลือกพื้นที่ keybind.schematic_menu.name = เมนูแผนผัง diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 59a99e61b192..bcf0e4aed7fa 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -349,6 +349,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1243,6 +1244,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 99e32440088f..965e0158024e 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -353,6 +353,7 @@ command.enterPayload = Kargo Bloğu Seç command.loadUnits = Birim Yükle command.loadBlocks = Blok Yükle command.unloadPayload = Birim Bırak +command.loopPayload = Loop Unit Transfer stance.stop = Emri İptal Et stance.shoot = Duruş: Saldırı stance.holdfire = Duruş: Hazır Ol @@ -1252,6 +1253,7 @@ keybind.unit_command_load_units.name = Birim Komutu: Birim Kargola keybind.unit_command_load_blocks.name = Birim Komutu: Blok Kargola keybind.unit_command_unload_payload.name = Birim Komutu: Kargo Boşalt keybind.unit_command_enter_payload.name = Birim Komutu: Kargoya Gir +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Alanı Geri İşaa Et keybind.schematic_select.name = Bölge Seç keybind.schematic_menu.name = Şema Menüsü diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 229127ae737d..8a88a31e4bc0 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -355,6 +355,7 @@ command.enterPayload = Увійти до вантажного блока command.loadUnits = Завантажити одиниці command.loadBlocks = Завантажити блоки command.unloadPayload = Вивантажити вантаж +command.loopPayload = Loop Unit Transfer stance.stop = Скасувати накази stance.shoot = Позиція: стріляти stance.holdfire = Позиція: припинити вогонь @@ -1263,6 +1264,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Команда одиниці: завантажити вантаж +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Відбудувати регіон keybind.schematic_select.name = Вибрати ділянку keybind.schematic_menu.name = Меню схем diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 60a0b255396f..c1ca434a30ac 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -359,6 +359,7 @@ command.enterPayload = Nhập Khối hàng vào Công trình command.loadUnits = Nhận Đơn vị command.loadBlocks = Nhận Khối công trình command.unloadPayload = Dỡ Khối hàng +command.loopPayload = Loop Unit Transfer stance.stop = Hủy Mệnh lệnh stance.shoot = Tư thế: Bắn stance.holdfire = Tư thế: Ngừng bắn @@ -1272,6 +1273,7 @@ keybind.unit_command_load_units.name = Mệnh lệnh đơn vị: Nhập đơn v keybind.unit_command_load_blocks.name = Mệnh lệnh đơn vị: Nhập khối công trình keybind.unit_command_unload_payload.name = Mệnh lệnh đơn vị: Dỡ khối hàng keybind.unit_command_enter_payload.name = Mệnh lệnh đơn vị: Vào khối hàng +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Xây dựng lại khu vực keybind.schematic_select.name = Chọn khu vực diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 405207ad7246..e398b56a451f 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -356,6 +356,7 @@ command.enterPayload = 进入载荷建筑 command.loadUnits = 拾取单位 command.loadBlocks = 拾取建筑 command.unloadPayload = 卸载载荷 +command.loopPayload = Loop Unit Transfer stance.stop = 取消指令 stance.shoot = 姿态: 射击 stance.holdfire = 姿态: 停火 @@ -1265,6 +1266,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = 重建建筑 keybind.schematic_select.name = 框选建筑 keybind.schematic_menu.name = 蓝图目录 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index d31aec90d35f..309bd136f32a 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -353,6 +353,7 @@ command.enterPayload = Enter Payload Block command.loadUnits = Load Units command.loadBlocks = Load Blocks command.unloadPayload = Unload Payload +command.loopPayload = Loop Unit Transfer stance.stop = Cancel Orders stance.shoot = Stance: Shoot stance.holdfire = Stance: Hold Fire @@ -1260,6 +1261,7 @@ keybind.unit_command_load_units.name = Unit Command: Load Units keybind.unit_command_load_blocks.name = Unit Command: Load Blocks keybind.unit_command_unload_payload.name = Unit Command: Unload Payload keybind.unit_command_enter_payload.name = Unit Command: Enter Payload +keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer keybind.rebuild_select.name = Rebuild Region keybind.schematic_select.name = 選擇區域 keybind.schematic_menu.name = 藍圖目錄 From a293cb46871242d708e130e40aa03a664e2d35dd Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 18 Sep 2024 07:05:34 -0400 Subject: [PATCH 33/45] Fixed campaign rules in portrait mode --- core/src/mindustry/ui/dialogs/CampaignRulesDialog.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java index 317d321287e6..64adb4df2c10 100644 --- a/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CampaignRulesDialog.java @@ -29,6 +29,10 @@ public CampaignRulesDialog(){ } } }); + + onResize(() -> { + rebuild(); + }); } void rebuild(){ @@ -50,6 +54,10 @@ void rebuild(){ t.button(diff.localized(), style, () -> { rules.difficulty = diff; }).group(group).checked(b -> rules.difficulty == diff); + + if(Core.graphics.isPortrait() && diff.ordinal() % 2 == 1){ + t.row(); + } } }).left().fill(false).expand(false, false).row(); From 63e246cc9d51f91b80e6cc186f633ebe23f8c5e1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 18 Sep 2024 09:02:05 -0400 Subject: [PATCH 34/45] Headless crash fix --- core/src/mindustry/game/MapObjectives.java | 1 + gradle.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index aacfbafa5e99..06f151527baf 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -1126,6 +1126,7 @@ public void draw(float scaleFactor){ public void setTexture(String textureName){ this.textureName = textureName; + if(headless) return; if(fetchedRegion == null) fetchedRegion = new TextureRegion(); lookupRegion(textureName, fetchedRegion); } diff --git a/gradle.properties b/gradle.properties index 8ceca6591812..032e5b438319 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=25e8455084 +archash=f2ffd0e34f From e521a567127a3bea35fbaa2564bb404863037dd9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 18 Sep 2024 16:27:54 -0400 Subject: [PATCH 35/45] Many bugfixes / Support for repairing derelict in selection --- core/assets/maps/atolls.msav | Bin 42462 -> 42467 bytes core/src/mindustry/ai/types/CommandAI.java | 14 +++++- core/src/mindustry/ai/types/FlyingAI.java | 5 +- core/src/mindustry/entities/Units.java | 4 ++ .../mindustry/entities/comp/PayloadComp.java | 2 + core/src/mindustry/input/DesktopInput.java | 2 +- core/src/mindustry/input/InputHandler.java | 46 +++++++++++++++--- core/src/mindustry/type/UnitType.java | 4 +- 8 files changed, 66 insertions(+), 11 deletions(-) diff --git a/core/assets/maps/atolls.msav b/core/assets/maps/atolls.msav index 1768c32aaf6f083e35ffacc5ba339f3095bb4d2c..02f2737debd9f6fc60dc2d57f8325cf56e822aa3 100644 GIT binary patch delta 40511 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 delta 40671 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 mZ}g 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 bX~Hbkw*n>d0Y<;Vh diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index 8ba3e24be1a3..283f2a836702 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -272,6 +272,13 @@ public void defaultBehavior(){ vecOut.set(vecMovePos); }else{ move = controlPath.getPathPosition(unit, vecMovePos, targetPos, vecOut, noFound) && (!blockingUnit || timeSpentBlocked > maxBlockTime); + + //TODO: what to do when there's a target and it can't be reached? + /* + if(noFound[0] && attackTarget != null && attackTarget.within(unit, unit.type.range * 2f)){ + move = true; + vecOut.set(targetPos); + }*/ } //rare case where unit must be perfectly aligned (happens with 1-tile gaps) @@ -403,6 +410,11 @@ void finishPath(){ } } + @Override + public void removed(Unit unit){ + clearCommands(); + } + public void commandQueue(Position location){ if(targetPos == null && attackTarget == null){ if(location instanceof Teamc t){ @@ -444,7 +456,7 @@ public boolean keepState(){ @Override public Teamc findTarget(float x, float y, float range, boolean air, boolean ground){ - return !nearAttackTarget(x, y, range) ? super.findTarget(x, y, range, air, ground) : attackTarget; + return !nearAttackTarget(x, y, range) ? super.findTarget(x, y, range, air, ground) : Units.isHittable(attackTarget, air, ground) ? attackTarget : null; } public boolean nearAttackTarget(float x, float y, float range){ diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index b9f718b8a327..a412c6f4daf5 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -10,6 +10,7 @@ import static mindustry.world.meta.BlockFlag.*; public class FlyingAI extends AIController{ + final static Rand rand = new Rand(); final static BlockFlag[] randomTargets = {core, storage, generator, launchPad, factory, repair, battery, reactor, drill}; @Override @@ -72,10 +73,10 @@ public Teamc findMainTarget(float x, float y, float range, boolean air, boolean if(state.rules.randomWaveAI){ //when there are no waves, it's just random based on the unit - Mathf.rand.setSeed(unit.type.id + (state.rules.waves ? state.wave : unit.id)); + rand.setSeed(unit.type.id + (state.rules.waves ? state.wave : unit.id)); //try a few random flags first for(int attempt = 0; attempt < 5; attempt++){ - Teamc result = targetFlag(x, y, randomTargets[Mathf.rand.random(randomTargets.length - 1)], true); + Teamc result = targetFlag(x, y, randomTargets[rand.random(randomTargets.length - 1)], true); if(result != null) return result; } //try the closest target diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index d74b41dad561..d3346510927f 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -112,6 +112,10 @@ public static boolean canInteract(Player player, Building tile){ return player == null || tile == null || tile.interactable(player.team()) || state.rules.editor; } + public static boolean isHittable(@Nullable Posc target, boolean air, boolean ground){ + return target != null && (target instanceof Buildingc ? ground : (target instanceof Unit u && u.checkTarget(air, ground))); + } + /** * Validates a target. * @param target The target to validate diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 9cf23876d2af..0122166c94e5 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -90,6 +90,8 @@ void addPayload(Payload load){ } void pickup(Unit unit){ + if(unit.isAdded()) unit.team.data().updateCount(unit.type, 1); + unit.remove(); addPayload(new UnitPayload(unit)); Fx.unitPickup.at(unit); diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 48d6d9c6b7c3..9b8f16bb42ae 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -457,7 +457,7 @@ public void update(){ cursorType = cursor.build.getCursor(); } - if(cursor.build != null && !state.rules.editor && player.team() != Team.derelict && cursor.build.team == Team.derelict && cursor.build.block.unlockedNow() && Build.validPlace(cursor.block(), player.team(), cursor.build.tileX(), cursor.build.tileY(), cursor.build.rotation)){ + if(canRepairDerelict(cursor)){ cursorType = ui.repairCursor; } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index f3d7fa84cf65..66fe7933a285 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -53,6 +53,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ /** Used for dropping items. */ final static float playerSelectRange = mobile ? 17f : 11f; final static IntSeq removed = new IntSeq(); + final static IntSet intSet = new IntSet(); /** Maximum line length. */ final static int maxLength = 100; final static Rect r1 = new Rect(), r2 = new Rect(); @@ -1383,10 +1384,10 @@ protected void drawBreakSelection(int x1, int y1, int x2, int y2, int maxLength, Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y); } - protected void drawRebuildSelection(int x, int y, int x2, int y2){ - drawSelection(x, y, x2, y2, 0, Pal.sapBulletBack, Pal.sapBullet); + protected void drawRebuildSelection(int x1, int y1, int x2, int y2){ + drawSelection(x1, y1, x2, y2, 0, Pal.sapBulletBack, Pal.sapBullet); - NormalizeDrawResult result = Placement.normalizeDrawArea(Blocks.air, x, y, x2, y2, false, 0, 1f); + NormalizeDrawResult result = Placement.normalizeDrawArea(Blocks.air, x1, y1, x2, y2, false, 0, 1f); Tmp.r1.set(result.x, result.y, result.x2 - result.x, result.y2 - result.y); @@ -1396,6 +1397,20 @@ protected void drawRebuildSelection(int x, int y, int x2, int y2){ drawSelected(plan.x, plan.y, content.block(plan.block), Pal.sapBullet); } } + + NormalizeResult dresult = Placement.normalizeArea(x1, y1, x2, y2, rotation, false, 999999999); + + intSet.clear(); + for(int x = dresult.x; x <= dresult.x2; x++){ + for(int y = dresult.y; y <= dresult.y2; y++){ + + Tile tile = world.tileBuilding(x, y); + + if(tile != null && intSet.add(tile.pos()) && canRepairDerelict(tile)){ + drawSelected(tile.x, tile.y, tile.block(), Pal.sapBullet); + } + } + } } protected void drawBreakSelection(int x1, int y1, int x2, int y2){ @@ -1684,13 +1699,20 @@ boolean tryStopMine(Tile tile){ } boolean tryRepairDerelict(Tile selected){ - if(selected != null && !state.rules.editor && player.team() != Team.derelict && selected.build != null && selected.build.block.unlockedNow() && selected.build.team == Team.derelict && Build.validPlace(selected.block(), player.team(), selected.build.tileX(), selected.build.tileY(), selected.build.rotation)){ + if(selected != null && !state.rules.editor && player.team() != Team.derelict && selected.build != null && selected.build.block.unlockedNow() && selected.build.team == Team.derelict && + Build.validPlace(selected.block(), player.team(), selected.build.tileX(), selected.build.tileY(), selected.build.rotation)){ + player.unit().addBuild(new BuildPlan(selected.build.tileX(), selected.build.tileY(), selected.build.rotation, selected.block(), selected.build.config())); return true; } return false; } + boolean canRepairDerelict(Tile tile){ + return tile != null && tile.build != null && !state.rules.editor && player.team() != Team.derelict && tile.build.team == Team.derelict && tile.build.block.unlockedNow() && + Build.validPlace(tile.block(), player.team(), tile.build.tileX(), tile.build.tileY(), tile.build.rotation); + } + boolean canMine(Tile tile){ return !Core.scene.hasMouse() && player.unit().validMine(tile) @@ -1898,8 +1920,8 @@ public void tryDropItems(@Nullable Building build, float x, float y){ } } - public void rebuildArea(int x, int y, int x2, int y2){ - NormalizeResult result = Placement.normalizeArea(x, y, x2, y2, rotation, false, 999999999); + public void rebuildArea(int x1, int y1, int x2, int y2){ + NormalizeResult result = Placement.normalizeArea(x1, y1, x2, y2, rotation, false, 999999999); Tmp.r1.set(result.x * tilesize, result.y * tilesize, (result.x2 - result.x) * tilesize, (result.y2 - result.y) * tilesize); Iterator broken = player.team().data().plans.iterator(); @@ -1910,6 +1932,18 @@ public void rebuildArea(int x, int y, int x2, int y2){ player.unit().addBuild(new BuildPlan(plan.x, plan.y, plan.rotation, content.block(plan.block), plan.config)); } } + + intSet.clear(); + for(int x = result.x; x <= result.x2; x++){ + for(int y = result.y; y <= result.y2; y++){ + + Tile tile = world.tileBuilding(x, y); + + if(tile != null && tile.build != null && intSet.add(tile.pos())){ + tryRepairDerelict(tile); + } + } + } } public void tryBreakBlock(int x, int y){ diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 1eb43fec672c..3819a23e3c53 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -1276,7 +1276,9 @@ public void draw(Unit unit){ if(drawCell) drawCell(unit); drawWeapons(unit); if(drawItems) drawItems(unit); - drawLight(unit); + if(!isPayload){ + drawLight(unit); + } if(unit.shieldAlpha > 0 && drawShields){ drawShield(unit); From ab392916263de85475b363a3c0af31a2aa24ea8f Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 18 Sep 2024 19:22:51 -0400 Subject: [PATCH 36/45] Pathfinder bugfixes --- core/assets/maps/atolls.msav | Bin 42467 -> 42478 bytes core/src/mindustry/Vars.java | 2 + core/src/mindustry/ai/ControlPathfinder.java | 35 +++++++++++++----- core/src/mindustry/game/Saves.java | 2 +- .../mindustry/ui/dialogs/PausedDialog.java | 2 +- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/core/assets/maps/atolls.msav b/core/assets/maps/atolls.msav index 02f2737debd9f6fc60dc2d57f8325cf56e822aa3..7fb5a58537a5af545a6184a045caa7fb1b9a6354 100644 GIT binary patch delta 41504 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 delta 41490 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 diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index e7bca60cd616..7531b849b35d 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -170,6 +170,8 @@ public class Vars implements Loadable{ public static boolean confirmExit = true; /** if true, UI is not drawn */ public static boolean disableUI; + /** if true, most autosaving is disabled. internal use only! */ + public static boolean disableSave; /** if true, game is set up in mobile mode, even on desktop. used for debugging */ public static boolean testMobile; /** whether the game is running on a mobile device */ diff --git a/core/src/mindustry/ai/ControlPathfinder.java b/core/src/mindustry/ai/ControlPathfinder.java index f3ed9130d72e..a4586e087382 100644 --- a/core/src/mindustry/ai/ControlPathfinder.java +++ b/core/src/mindustry/ai/ControlPathfinder.java @@ -124,7 +124,7 @@ public class ControlPathfinder implements Runnable{ //TODO: very dangerous usage; //TODO - it is accessed from the main thread //TODO - it is written to on the pathfinding thread - //maps position in world in (x + y * width format) | type (bitpacked to long) to a cache of flow fields + //maps position in world in (x + y * width format) | path type | team (bitpacked to long with FieldIndex.get) to a cache of flow fields LongMap fields = new LongMap<>(); //MAIN THREAD ONLY Seq fieldList = new Seq<>(false); @@ -188,6 +188,7 @@ static class FieldCache{ final IntQueue frontier = new IntQueue(); //maps cluster index to field weights; 0 means uninitialized final IntMap fields = new IntMap<>(); + //packed (goalPos | costId | team) long key to use in the global fields map final long mapKey; //main thread only! @@ -200,7 +201,7 @@ static class FieldCache{ this.team = team; this.goalPos = goalPos; this.costId = costId; - this.mapKey = Pack.longInt(goalPos, costId); + this.mapKey = FieldIndex.get(goalPos, costId, team); } } @@ -241,7 +242,7 @@ public ControlPathfinder(){ Events.run(Trigger.update, () -> { for(var req : unitRequests.values()){ //skipped N update -> drop it - if(req.lastUpdateId <= state.updateId - 10){ + if(req.lastUpdateId <= state.updateId - 10 || !req.unit.isAdded()){ req.invalidated = true; //concurrent modification! queue.post(() -> threadPathRequests.remove(req)); @@ -1024,10 +1025,12 @@ private void initializePathRequest(PathRequest request, int team, int costId, in //no result found, bail out. if(nodePath == null){ request.notFound = true; + //stop following the old path, it's not relevant now, it's just not possible to reach the destination anymore + request.oldCache = null; return; } - FieldCache cache = fields.get(Pack.longInt(goalPos, costId)); + FieldCache cache = fields.get(FieldIndex.get(goalPos, costId, team)); //if true, extra values are added on the sides of existing field cells that face new cells. boolean addingFrontier = true; @@ -1143,7 +1146,7 @@ public boolean getPathPosition(Unit unit, Vec2 destination, Vec2 mainDestination boolean any = false; - long fieldKey = Pack.longInt(destPos, costId); + long fieldKey = FieldIndex.get(destPos, costId, team); //use existing request if it exists. if(request != null && request.destination == destPos){ @@ -1152,13 +1155,14 @@ public boolean getPathPosition(Unit unit, Vec2 destination, Vec2 mainDestination Tile tileOn = unit.tileOn(), initialTileOn = tileOn; //TODO: should fields be accessible from this thread? FieldCache fieldCache = fields.get(fieldKey); + if(fieldCache == null) fieldCache = request.oldCache; if(fieldCache != null && tileOn != null){ FieldCache old = request.oldCache; FieldCache targetCache = old != null ? old : fieldCache; boolean requeue = old == null; //nullify the old field to be GCed, as it cannot be relevant anymore (this path is complete) - if(fieldCache.frontier.isEmpty() && old != null){ + if(fieldCache != request.oldCache && fieldCache.frontier.isEmpty() && old != null){ request.oldCache = null; } @@ -1449,7 +1453,7 @@ private void clusterChanged(int team, int pathCost, int cx, int cy){ int index = cx + cy * cwidth; for(var req : threadPathRequests){ - long mapKey = Pack.longInt(req.destination, pathCost); + long mapKey = FieldIndex.get(req.destination, pathCost, team); var field = fields.get(mapKey); if((field != null && field.fields.containsKey(index)) || req.notFound){ invalidRequests.add(req); @@ -1535,7 +1539,7 @@ public void run(){ continue; } - long mapKey = Pack.longInt(request.destination, request.costId); + long mapKey = FieldIndex.get(request.destination, request.costId, request.team); var field = fields.get(mapKey); @@ -1543,7 +1547,7 @@ public void run(){ //it's only worth recalculating a path when the current frontier has finished; otherwise the unit will be following something incomplete. if(field.frontier.isEmpty()){ - //remove the field, to be recalculated next update one recalculatePath is processed + //remove the field, to be recalculated next update once recalculatePath is processed fields.remove(field.mapKey); Core.app.post(() -> fieldList.remove(field)); @@ -1551,6 +1555,10 @@ public void run(){ for(var otherRequest : threadPathRequests){ if(otherRequest.destination == request.destination){ otherRequest.oldCache = field; + + if(otherRequest != request){ + queue.post(() -> recalculatePath(otherRequest)); + } } } @@ -1584,6 +1592,15 @@ public void run(){ } } + @Struct + static class FieldIndexStruct{ + int pos; + @StructField(8) + int costId; + @StructField(8) + int team; + } + @Struct static class IntraEdgeStruct{ @StructField(8) diff --git a/core/src/mindustry/game/Saves.java b/core/src/mindustry/game/Saves.java index 6927813008bf..575c8bb69799 100644 --- a/core/src/mindustry/game/Saves.java +++ b/core/src/mindustry/game/Saves.java @@ -111,7 +111,7 @@ public void update(){ if(state.isGame() && !state.gameOver && current != null && current.isAutosave()){ time += Time.delta; - if(time > Core.settings.getInt("saveinterval") * 60){ + if(time > Core.settings.getInt("saveinterval") * 60 && !Vars.disableSave){ saving = true; try{ diff --git a/core/src/mindustry/ui/dialogs/PausedDialog.java b/core/src/mindustry/ui/dialogs/PausedDialog.java index 677b3d53ed8c..2ff15e272b39 100644 --- a/core/src/mindustry/ui/dialogs/PausedDialog.java +++ b/core/src/mindustry/ui/dialogs/PausedDialog.java @@ -159,7 +159,7 @@ public void runExitSave(){ return; } - if(control.saves.getCurrent() == null || !control.saves.getCurrent().isAutosave() || wasClient || state.gameOver){ + if(control.saves.getCurrent() == null || !control.saves.getCurrent().isAutosave() || wasClient || state.gameOver || disableSave){ logic.reset(); return; } From bd1f7506736f627439aa4f65c0d1baa4727a9897 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 19 Sep 2024 20:37:22 -0400 Subject: [PATCH 37/45] Minor fixes / Desktop detach camera hotkey --- core/src/mindustry/content/UnitTypes.java | 2 +- core/src/mindustry/core/Control.java | 1 + core/src/mindustry/input/Binding.java | 1 + core/src/mindustry/input/DesktopInput.java | 44 +++++++++++++++++----- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index c1d6274c475a..8e83af02f4bf 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1042,7 +1042,7 @@ public static void load(){ status = StatusEffects.blasted; statusDuration = 60f; - damage = splashDamage * 0.7f; + damage = splashDamage * 0.5f; }}; }}); }}; diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index bdf8ab573c90..045b96d9a2f9 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -74,6 +74,7 @@ public Control(){ ui.showInfo("@mods.initfailed"); }); } + checkAutoUnlocks(); }); Events.on(StateChangeEvent.class, event -> { diff --git a/core/src/mindustry/input/Binding.java b/core/src/mindustry/input/Binding.java index 973e2e961e50..d5c52930d313 100644 --- a/core/src/mindustry/input/Binding.java +++ b/core/src/mindustry/input/Binding.java @@ -81,6 +81,7 @@ public enum Binding implements KeyBind{ block_select_10(KeyCode.num0), zoom(new Axis(KeyCode.scroll), "view"), + detach_camera(KeyCode.unset), menu(Vars.android ? KeyCode.back : KeyCode.escape), fullscreen(KeyCode.f11), pause(KeyCode.space), diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 9b8f16bb42ae..49bd8eb068d9 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -226,18 +226,31 @@ public void update(){ boolean locked = locked(); boolean panCam = false; float camSpeed = (!Core.input.keyDown(Binding.boost) ? panSpeed : panBoostSpeed) * Time.delta; + boolean detached = settings.getBool("detach-camera", false); - if(input.keyDown(Binding.pan) && !scene.hasField() && !scene.hasDialog()){ - panCam = true; - panning = true; - } + if(!scene.hasField() && !scene.hasDialog()){ + if(input.keyTap(Binding.detach_camera)){ + settings.put("detach-camera", detached = !detached); + if(!detached){ + panning = false; + } + } - if((Math.abs(Core.input.axis(Binding.move_x)) > 0 || Math.abs(Core.input.axis(Binding.move_y)) > 0 || input.keyDown(Binding.mouse_move)) && (!scene.hasField())){ - panning = false; + if(input.keyDown(Binding.pan)){ + panCam = true; + panning = true; + } + + if((Math.abs(Core.input.axis(Binding.move_x)) > 0 || Math.abs(Core.input.axis(Binding.move_y)) > 0 || input.keyDown(Binding.mouse_move))){ + panning = false; + } } + panning |= detached; + + if(!locked){ - if(((player.dead() || state.isPaused()) && !ui.chatfrag.shown()) && !scene.hasField() && !scene.hasDialog()){ + if(((player.dead() || state.isPaused() || detached) && !ui.chatfrag.shown()) && !scene.hasField() && !scene.hasDialog()){ if(input.keyDown(Binding.mouse_move)){ panCam = true; } @@ -859,9 +872,20 @@ protected void updateMovement(Unit unit){ float ya = Core.input.axis(Binding.move_y); boolean boosted = (unit instanceof Mechc && unit.isFlying()); - movement.set(xa, ya).nor().scl(speed); - if(Core.input.keyDown(Binding.mouse_move)){ - movement.add(input.mouseWorld().sub(player).scl(1f / 25f * speed)).limit(speed); + if(settings.getBool("detach-camera")){ + Vec2 targetPos = camera.position; + + movement.set(targetPos).sub(player).limit(speed); + + if(player.within(targetPos, 15f)){ + movement.setZero(); + unit.vel.approachDelta(Vec2.ZERO, unit.speed() * unit.type().accel / 2f); + } + }else{ + movement.set(xa, ya).nor().scl(speed); + if(Core.input.keyDown(Binding.mouse_move)){ + movement.add(input.mouseWorld().sub(player).scl(1f / 25f * speed)).limit(speed); + } } float mouseAngle = Angles.mouseAngle(unit.x, unit.y); From c36e638826ac17f51b9afee95b1100662c410b96 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 20 Sep 2024 11:17:12 -0400 Subject: [PATCH 38/45] Polar aerodrome fixes / Objective timer multiplier for difficulty --- core/assets/maps/polarAerodrome.msav | Bin 55489 -> 55293 bytes core/src/mindustry/game/CampaignRules.java | 1 + core/src/mindustry/game/MapObjectives.java | 4 ++-- core/src/mindustry/game/Rules.java | 2 ++ 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/assets/maps/polarAerodrome.msav b/core/assets/maps/polarAerodrome.msav index a4137801c887332d3ea88fa6db14f8f03961339f..b960bbd922f58aaafab45954a15b383fbca3541a 100644 GIT binary patch delta 54773 zcmV(xK<|D1Alm&?7c~^U0IeMwoiNedtb*kn)}FzVm3vFBFG3vWJqPHD(gN< za!Af}l`O!896Y{vNj~N4>NOF`OjM*wITIX_!2moIBtZYbuxwB4fdo(O6d=HWHSx%R z4G&~bJac(>Ykh0&voC|0s**e~0g~sQW}m&j)vw*0zx4;d`+uJpWBSJQUYM(r&}dGJTa zmxqUUf1Q7RWPf_cCwnJn%X8B_**!d8ns)c{;@QcW=|6k+Z2MsQy$?`zR6aj^GeqTyoqBAo3V?VkF+Z~f{Y{pz3n>c9EbfBmcf;#dFdU;gR8{0G1KZ-4dQ znQ83j;d1{EpPw!*o%Ypc_;h*v>~VV&Ms}An!oz9i{z>3;U>T>HKu}v*YuR|LA8Ima31RSgtMa9_{|*+7_j~v6?jD_79$$R?;O_FtljYvU$Hynfwtt}wi~PY)Pmb?CUOqiI z{`h_O2LJX4zTNj8aJ%>4`S7EM_aDChVbcEn`+x7;|L}tkAMk7L=U#Jqa`-&H<0F2@ z!_arU;#R`wzeO{znf! z_LEkt8<;#F%^$b&d>kkM|TfTcK1&%FRVgX-8=et@8tA!c}9JD&+3ouiobHW+}+Qe zKU!YwK0Vw$KWCh9?djR>=`(x8G~&|5!GFc>@xkR$?vm4}?3MF_!vkxVyixE!UfA66`cX0gsmuI^d2PenTcG$c4%maVV-pR?~ z{>f+dhKJw#=>9{iRrXCMkN=)U?!XzLKl<68qxs`MwC>^Tu9bqP=fAtZzuf=$kAF_B z3%J~KP5r^e?%BnU?p`c^a`EwB<7eMl9xsm$mgl>t_RihCXO=B@_vz)K)2CLZjxX#> zesp)ae{gYf_Jb2En(w~<(FY$r{F5J9gYK-KDc&=q{pI=I*}&t?H(SUJU4^$Q|oB&ou2HQsi)@N-pSFa z6~28NDm-^gv#%aJUY%G zA6Zhy`zL2d7Jz$u&(AN4;vbo6_u$NS)43

>VCFd16}cUEhoU-;e)4i2uJI|NkKV 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 delta 54855 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

%`b43cWay9*bgTOY00 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 duration; + return (countup += Time.delta) >= duration * state.rules.objectiveTimerMultiplier; } @Override @@ -454,7 +454,7 @@ public void reset(){ @Override public String text(){ if(text != null){ - int i = (int)((duration - countup) / 60f); + int i = (int)((duration * state.rules.objectiveTimerMultiplier - countup) / 60f); StringBuilder timeString = new StringBuilder(); int m = i / 60; diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index b30d373b271b..37632948b02a 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -101,6 +101,8 @@ public class Rules{ public float buildSpeedMultiplier = 1f; /** Multiplier for percentage of materials refunded when deconstructing. */ public float deconstructRefundMultiplier = 0.5f; + /** Multiplier for time in timer objectives. */ + public float objectiveTimerMultiplier = 1f; /** No-build zone around enemy core radius. */ public float enemyCoreBuildRadius = 400f; /** If true, no-build zones are calculated based on the closest core. */ From 68dccab5ca0abaa6df42397fe39d8d811f2d84ef Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 20 Sep 2024 13:15:26 -0400 Subject: [PATCH 39/45] Improved crash logs; source mod of crashes now included in report --- .../mindustry/android/AndroidLauncher.java | 2 +- core/src/mindustry/mod/Mods.java | 1 + core/src/mindustry/mod/Scripts.java | 24 +++----- .../{CrashSender.java => CrashHandler.java} | 57 +++++++++++++++---- .../mindustry/desktop/DesktopLauncher.java | 15 +++-- ios/src/mindustry/ios/IOSLauncher.java | 2 +- .../src/mindustry/server/ServerLauncher.java | 10 ++-- 7 files changed, 71 insertions(+), 40 deletions(-) rename core/src/mindustry/net/{CrashSender.java => CrashHandler.java} (64%) diff --git a/android/src/mindustry/android/AndroidLauncher.java b/android/src/mindustry/android/AndroidLauncher.java index c8175aa4f0e7..1a3126234fc1 100644 --- a/android/src/mindustry/android/AndroidLauncher.java +++ b/android/src/mindustry/android/AndroidLauncher.java @@ -38,7 +38,7 @@ protected void onCreate(Bundle savedInstanceState){ UncaughtExceptionHandler handler = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler((thread, error) -> { - CrashSender.log(error); + CrashHandler.log(error); //try to forward exception to system handler if(handler != null){ diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 9fa83c39eed5..bfd27e609167 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -1252,6 +1252,7 @@ public void cleanup(){ if(name != null) name = Strings.stripColors(name); if(displayName != null) displayName = Strings.stripColors(displayName); if(displayName == null) displayName = name; + if(version == null) version = "0"; if(author != null) author = Strings.stripColors(author); if(description != null) description = Strings.stripColors(description); if(subtitle != null) subtitle = Strings.stripColors(subtitle).replace("\n", ""); diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 3ba21c03b359..fdbc717c6d1c 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -10,7 +10,6 @@ import rhino.module.*; import rhino.module.provider.*; -import java.io.*; import java.net.*; import java.util.*; import java.util.regex.*; @@ -85,7 +84,7 @@ public float[] newFloats(int capacity){ public void run(LoadedMod mod, Fi file){ currentMod = mod; - run(file.readString(), file.name(), true); + run(file.readString(), mod.name + "/" + file.name(), true); currentMod = null; } @@ -95,15 +94,10 @@ private boolean run(String script, String file, boolean wrap){ //inject script info into file context.evaluateString(scope, "modName = \"" + currentMod.name + "\"\nscriptName = \"" + file + "\"", "initscript.js", 1); } - context.evaluateString(scope, - wrap ? "(function(){'use strict';\n" + script + "\n})();" : script, - file, 0); + context.evaluateString(scope, wrap ? "(function(){'use strict';\n" + script + "\n})();" : script, file, 0); return true; }catch(Throwable t){ - if(currentMod != null){ - file = currentMod.name + "/" + file; - } - log(LogLevel.err, file, "" + getError(t, true)); + log(LogLevel.err, file, getError(t, true)); return false; } } @@ -123,10 +117,10 @@ public ScriptModuleProvider(){ @Override public ModuleSource loadSource(String moduleId, Scriptable paths, Object validator) throws URISyntaxException{ if(currentMod == null) return null; - return loadSource(moduleId, currentMod.root.child("scripts"), validator); + return loadSource(currentMod, moduleId, currentMod.root.child("scripts"), validator); } - private ModuleSource loadSource(String moduleId, Fi root, Object validator) throws URISyntaxException{ + private ModuleSource loadSource(LoadedMod sourceMod, String moduleId, Fi root, Object validator) throws URISyntaxException{ Matcher matched = directory.matcher(moduleId); if(matched.find()){ LoadedMod required = Vars.mods.locateMod(matched.group(1)); @@ -134,18 +128,16 @@ private ModuleSource loadSource(String moduleId, Fi root, Object validator) thro if(required == null){ // Mod not found, treat it as a folder Fi dir = root.child(matched.group(1)); if(!dir.exists()) return null; // Mod and folder not found - return loadSource(script, dir, validator); + return loadSource(sourceMod, script, dir, validator); } currentMod = required; - return loadSource(script, required.root.child("scripts"), validator); + return loadSource(sourceMod, script, required.root.child("scripts"), validator); } Fi module = root.child(moduleId + ".js"); if(!module.exists() || module.isDirectory()) return null; - return new ModuleSource( - new InputStreamReader(new ByteArrayInputStream((module.readString()).getBytes())), - new URI(moduleId), root.file().toURI(), validator); + return new ModuleSource(module.reader(Vars.bufferSize), new URI(sourceMod.name + "/" + moduleId + ".js"), root.file().toURI(), validator); } } } diff --git a/core/src/mindustry/net/CrashSender.java b/core/src/mindustry/net/CrashHandler.java similarity index 64% rename from core/src/mindustry/net/CrashSender.java rename to core/src/mindustry/net/CrashHandler.java index 26f90007a8b5..b559d654e8c2 100644 --- a/core/src/mindustry/net/CrashSender.java +++ b/core/src/mindustry/net/CrashHandler.java @@ -17,13 +17,17 @@ import static arc.Core.*; import static mindustry.Vars.*; -public class CrashSender{ +public class CrashHandler{ - public static String createReport(String error){ - String report = "Mindustry has crashed. How unfortunate.\n"; + public static String createReport(Throwable exception){ + String error = writeException(exception); + LoadedMod cause = getModCause(exception); + + String report = cause == null ? "Mindustry has crashed. How unfortunate.\n" : "The mod '" + cause.meta.displayName + "' (" + cause.name + ")" + " has caused Mindustry to crash.\n"; if(mods != null && mods.list().size == 0 && Version.build != -1){ report += "Report this at " + Vars.reportIssueURL + "\n\n"; } + return report + "Version: " + Version.combined() + (Vars.headless ? " (Server)" : "") + "\n" + "OS: " + OS.osName + " x" + (OS.osArchBits) + " (" + OS.osArch + ")\n" @@ -31,6 +35,7 @@ public static String createReport(String error){ + "Java Version: " + OS.javaVersion + "\n" + "Runtime Available Memory: " + (Runtime.getRuntime().maxMemory() / 1024 / 1024) + "mb\n" + "Cores: " + Runtime.getRuntime().availableProcessors() + "\n" + + (cause == null ? "" : "Likely Cause: " + cause.meta.displayName + " (" + cause.name + " v" + cause.meta.version + ")\n") + (mods == null ? "" : "Mods: " + (!mods.list().contains(LoadedMod::shouldBeEnabled) ? "none (vanilla)" : mods.list().select(LoadedMod::shouldBeEnabled).toString(", ", mod -> mod.name + ":" + mod.meta.version))) + "\n\n" + error; } @@ -38,12 +43,12 @@ public static String createReport(String error){ public static void log(Throwable exception){ try{ Core.settings.getDataDirectory().child("crashes").child("crash_" + System.currentTimeMillis() + ".txt") - .writeString(createReport(Strings.neatError(exception))); + .writeString(createReport(exception)); }catch(Throwable ignored){ } } - public static void send(Throwable exception, Cons writeListener){ + public static void handle(Throwable exception, Cons writeListener){ try{ try{ //log to file @@ -59,14 +64,14 @@ public static void send(Throwable exception, Cons writeListener){ //don't create crash logs for custom builds, as it's expected if(OS.username.equals("anuke") && !"steam".equals(Version.modifier)){ - ret(); + // System.exit(1); } //attempt to load version regardless if(Version.number == 0){ try{ ObjectMap map = new ObjectMap<>(); - PropertiesUtils.load(map, new InputStreamReader(CrashSender.class.getResourceAsStream("/version.properties"))); + PropertiesUtils.load(map, new InputStreamReader(CrashHandler.class.getResourceAsStream("/version.properties"))); Version.type = map.get("type"); Version.number = Integer.parseInt(map.get("number")); @@ -87,7 +92,7 @@ public static void send(Throwable exception, Cons writeListener){ try{ File file = new File(OS.getAppDataDirectoryString(Vars.appName), "crashes/crash-report-" + new SimpleDateFormat("MM_dd_yyyy_HH_mm_ss").format(new Date()) + ".txt"); new Fi(OS.getAppDataDirectoryString(Vars.appName)).child("crashes").mkdirs(); - new Fi(file).writeString(createReport(writeException(exception))); + new Fi(file).writeString(createReport(exception)); writeListener.get(file); }catch(Throwable e){ Log.err("Failed to save local crash report.", e); @@ -103,11 +108,41 @@ public static void send(Throwable exception, Cons writeListener){ death.printStackTrace(); } - ret(); + System.exit(1); } - private static void ret(){ - System.exit(1); + /** @return the mod that is likely to have caused the supplied crash */ + public static @Nullable LoadedMod getModCause(Throwable e){ + if(Vars.mods == null) return null; + try{ + for(var element : e.getStackTrace()){ + String name = element.getClassName(); + if(!name.matches("(mindustry|arc|java|javax|sun|jdk)\\..*")){ + for(var mod : mods.list()){ + if(mod.meta.main != null && getMatches(mod.meta.main, name) > 0){ + return mod; + }else if(element.getFileName() != null && element.getFileName().endsWith(".js") && element.getFileName().startsWith(mod.name + "/")){ + return mod; + } + } + } + } + }catch(Throwable ignored){} + return null; + } + + private static int getMatches(String name1, String name2){ + String[] arr1 = name1.split("\\."), arr2 = name2.split("\\."); + int matches = 0; + for(int i = 0; i < Math.min(arr1.length, arr2.length); i++){ + + if(!arr1[i].equals(arr2[i])){ + return i; + }else if(!arr1[i].matches("net|org|com|io")){ //ignore common domain prefixes, as that's usually not enough to call something a "match" + matches ++; + } + } + return matches; } private static String writeException(Throwable e){ diff --git a/desktop/src/mindustry/desktop/DesktopLauncher.java b/desktop/src/mindustry/desktop/DesktopLauncher.java index 44f3b5b03f27..2500d18e59a3 100644 --- a/desktop/src/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/mindustry/desktop/DesktopLauncher.java @@ -7,7 +7,6 @@ import arc.discord.*; import arc.discord.DiscordRPC.*; import arc.files.*; -import arc.func.*; import arc.math.*; import arc.struct.*; import arc.util.*; @@ -19,6 +18,7 @@ import mindustry.desktop.steam.*; import mindustry.game.EventType.*; import mindustry.gen.*; +import mindustry.mod.Mods.*; import mindustry.net.*; import mindustry.net.Net.*; import mindustry.service.*; @@ -223,27 +223,30 @@ public void update(){ } static void handleCrash(Throwable e){ - Cons dialog = Runnable::run; boolean badGPU = false; String finalMessage = Strings.getFinalMessage(e); String total = Strings.getCauses(e).toString(); if(total.contains("Couldn't create window") || total.contains("OpenGL 2.0 or higher") || total.toLowerCase().contains("pixel format") || total.contains("GLEW")|| total.contains("unsupported combination of formats")){ - dialog.get(() -> message( + message( total.contains("Couldn't create window") ? "A graphics initialization error has occured! Try to update your graphics drivers:\n" + finalMessage : "Your graphics card does not support the right OpenGL features.\n" + "Try to update your graphics drivers. If this doesn't work, your computer may not support Mindustry.\n\n" + - "Full message: " + finalMessage)); + "Full message: " + finalMessage); badGPU = true; } boolean fbgp = badGPU; - CrashSender.send(e, file -> { + LoadedMod cause = CrashHandler.getModCause(e); + String causeString = cause == null ? (Structs.contains(e.getStackTrace(), st -> st.getClassName().contains("rhino.gen.")) ? "A mod or script has caused Mindustry to crash.\nConsider disabling your mods if the issue persists.\n" : "Mindustry has crashed.") : + "'" + cause.meta.displayName + "' (" + cause.name + ") has caused Mindustry to crash.\nConsider disabling this mod if issues persist.\n"; + + CrashHandler.handle(e, file -> { Throwable fc = Strings.getFinalCause(e); if(!fbgp){ - dialog.get(() -> message("A crash has occured. It has been saved in:\n" + file.getAbsolutePath() + "\n" + fc.getClass().getSimpleName().replace("Exception", "") + (fc.getMessage() == null ? "" : ":\n" + fc.getMessage()))); + message(causeString + "\nThe logs have been saved in:\n" + file.getAbsolutePath() + "\n" + fc.getClass().getSimpleName().replace("Exception", "") + (fc.getMessage() == null ? "" : ":\n" + fc.getMessage())); } }); } diff --git a/ios/src/mindustry/ios/IOSLauncher.java b/ios/src/mindustry/ios/IOSLauncher.java index cf1b6b820876..776a2ec3e0a3 100644 --- a/ios/src/mindustry/ios/IOSLauncher.java +++ b/ios/src/mindustry/ios/IOSLauncher.java @@ -250,7 +250,7 @@ public static void main(String[] argv){ UIApplication.main(argv, null, IOSLauncher.class); }catch(Throwable t){ //attempt to log the exception - CrashSender.log(t); + CrashHandler.log(t); Log.err(t); //rethrow the exception so it actually crashes throw t; diff --git a/server/src/mindustry/server/ServerLauncher.java b/server/src/mindustry/server/ServerLauncher.java index 1aea11b2cc87..d8737fc5e1f4 100644 --- a/server/src/mindustry/server/ServerLauncher.java +++ b/server/src/mindustry/server/ServerLauncher.java @@ -32,9 +32,9 @@ public static void main(String[] args){ String result = "[" + dateTime.format(LocalDateTime.now()) + "] " + format(tags[level1.ordinal()] + " " + text + "&fr"); System.out.println(result); }; - new HeadlessApplication(new ServerLauncher(), throwable -> CrashSender.send(throwable, f -> {})); + new HeadlessApplication(new ServerLauncher(), throwable -> CrashHandler.handle(throwable, f -> {})); }catch(Throwable t){ - CrashSender.send(t, f -> {}); + CrashHandler.handle(t, f -> {}); } } @@ -46,15 +46,15 @@ public void init(){ Vars.loadSettings(); Vars.init(); - + UI.loadColors(); Fonts.loadContentIconsHeadless(); - + content.createBaseContent(); mods.loadScripts(); content.createModContent(); content.init(); - + if(mods.hasContentErrors()){ err("Error occurred loading mod content:"); for(LoadedMod mod : mods.list()){ From 4f93a5c33278d9ef3bfc692777e831c86c3f9336 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 12 Jun 2024 22:21:41 -0400 Subject: [PATCH 40/45] Separator output display --- core/src/mindustry/content/Blocks.java | 1 + core/src/mindustry/ui/ItemDisplay.java | 38 ---------- core/src/mindustry/ui/LiquidDisplay.java | 39 ----------- .../world/blocks/production/Separator.java | 9 ++- .../world/blocks/units/UnitFactory.java | 2 +- core/src/mindustry/world/meta/StatValues.java | 70 ++++++++++++++++--- 6 files changed, 72 insertions(+), 87 deletions(-) delete mode 100644 core/src/mindustry/ui/ItemDisplay.java delete mode 100644 core/src/mindustry/ui/LiquidDisplay.java diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 82b80e12b829..9ee4aa02f62a 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -5786,6 +5786,7 @@ Items.surgeAlloy, new BasicBulletType(7f, 250){{ itemCapacity = 0; alwaysUnlocked = true; ambientSound = Sounds.none; + allDatabaseTabs = true; }}; //TODO move diff --git a/core/src/mindustry/ui/ItemDisplay.java b/core/src/mindustry/ui/ItemDisplay.java deleted file mode 100644 index 4967c1e09d41..000000000000 --- a/core/src/mindustry/ui/ItemDisplay.java +++ /dev/null @@ -1,38 +0,0 @@ -package mindustry.ui; - -import arc.scene.ui.layout.*; -import arc.util.*; -import mindustry.type.*; -import mindustry.world.meta.*; - -//TODO replace with static methods? -/** An item image with text. */ -public class ItemDisplay extends Table{ - public final Item item; - public final int amount; - - public ItemDisplay(Item item){ - this(item, 0); - } - - public ItemDisplay(Item item, int amount, boolean showName){ - add(new ItemImage(new ItemStack(item, amount))); - if(showName) add(item.localizedName).padLeft(4 + amount > 99 ? 4 : 0); - - this.item = item; - this.amount = amount; - } - - public ItemDisplay(Item item, int amount){ - this(item, amount, true); - } - - /** Displays the item with a "/sec" qualifier based on the time period, in ticks. */ - public ItemDisplay(Item item, int amount, float timePeriod, boolean showName){ - add(new ItemImage(item.uiIcon, amount)); - add((showName ? item.localizedName + "\n" : "") + "[lightgray]" + Strings.autoFixed(amount / (timePeriod / 60f), 2) + StatUnit.perSecond.localized()).padLeft(2).padRight(5).style(Styles.outlineLabel); - - this.item = item; - this.amount = amount; - } -} diff --git a/core/src/mindustry/ui/LiquidDisplay.java b/core/src/mindustry/ui/LiquidDisplay.java deleted file mode 100644 index d0982374ab6a..000000000000 --- a/core/src/mindustry/ui/LiquidDisplay.java +++ /dev/null @@ -1,39 +0,0 @@ -package mindustry.ui; - -import arc.graphics.*; -import arc.scene.ui.*; -import arc.scene.ui.layout.*; -import arc.util.*; -import mindustry.type.*; -import mindustry.world.meta.*; - -import static mindustry.Vars.*; - -/** An ItemDisplay, but for liquids. */ -public class LiquidDisplay extends Table{ - public final Liquid liquid; - public final float amount; - public final boolean perSecond; - - public LiquidDisplay(Liquid liquid, float amount, boolean perSecond){ - this.liquid = liquid; - this.amount = amount; - this.perSecond = perSecond; - - add(new Stack(){{ - add(new Image(liquid.uiIcon).setScaling(Scaling.fit)); - - if(amount != 0){ - Table t = new Table().left().bottom(); - t.add(Strings.autoFixed(amount, 2)).style(Styles.outlineLabel); - add(t); - } - }}).size(iconMed).padRight(3 + (amount != 0 && Strings.autoFixed(amount, 2).length() > 2 ? 8 : 0)); - - if(perSecond){ - add(StatUnit.perSecond.localized()).padLeft(2).padRight(5).color(Color.lightGray).style(Styles.outlineLabel); - } - - add(liquid.localizedName); - } -} diff --git a/core/src/mindustry/world/blocks/production/Separator.java b/core/src/mindustry/world/blocks/production/Separator.java index fd387d6960fc..1bd5351b5ef1 100644 --- a/core/src/mindustry/world/blocks/production/Separator.java +++ b/core/src/mindustry/world/blocks/production/Separator.java @@ -38,7 +38,14 @@ public void setStats(){ stats.timePeriod = craftTime; super.setStats(); - stats.add(Stat.output, StatValues.items(item -> Structs.contains(results, i -> i.item == item))); + int[] sum = {0}; + for(var r : results) sum[0] += r.amount; + + stats.add(Stat.output, table -> { + for(ItemStack stack : results){ + table.add(StatValues.displayItemPercent(stack.item, (int)((float)stack.amount / sum[0] * 100), true)).padRight(5); + } + }); stats.add(Stat.productionTime, craftTime / 60f, StatUnit.seconds); } diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index b89d945c65fc..a2b4448d3127 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -137,7 +137,7 @@ public void setStats(){ } ItemStack stack = plan.requirements[i]; - req.add(new ItemDisplay(stack.item, stack.amount, plan.time, true)).pad(5); + req.add(StatValues.displayItem(stack.item, stack.amount, plan.time, true)).pad(5); } }).right().grow().pad(10f); }else{ diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index 9c548f2836dc..5e74f1f72bc5 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -66,7 +66,7 @@ public static StatValue number(float value, StatUnit unit){ } public static StatValue liquid(Liquid liquid, float amount, boolean perSecond){ - return table -> table.add(new LiquidDisplay(liquid, amount, perSecond)); + return table -> table.add(displayLiquid(liquid, amount, perSecond)); } public static StatValue liquids(Boolf filter, float amount, boolean perSecond){ @@ -74,7 +74,7 @@ public static StatValue liquids(Boolf filter, float amount, boolean perS Seq list = content.liquids().select(i -> filter.get(i) && i.unlockedNow() && !i.isHidden()); for(int i = 0; i < list.size; i++){ - table.add(new LiquidDisplay(list.get(i), amount, perSecond)).padRight(5); + table.add(displayLiquid(list.get(i), amount, perSecond)).padRight(5); if(i != list.size - 1){ table.add("/"); @@ -90,7 +90,7 @@ public static StatValue liquids(float timePeriod, LiquidStack... stacks){ public static StatValue liquids(float timePeriod, boolean perSecond, LiquidStack... stacks){ return table -> { for(var stack : stacks){ - table.add(new LiquidDisplay(stack.liquid, stack.amount * (60f / timePeriod), perSecond)).padRight(5); + table.add(displayLiquid(stack.liquid, stack.amount * (60f / timePeriod), perSecond)).padRight(5); } }; } @@ -102,7 +102,7 @@ public static StatValue items(ItemStack... stacks){ public static StatValue items(boolean displayName, ItemStack... stacks){ return table -> { for(ItemStack stack : stacks){ - table.add(new ItemDisplay(stack.item, stack.amount, displayName)).padRight(5); + table.add(displayItem(stack.item, stack.amount, displayName)).padRight(5); } }; } @@ -110,7 +110,7 @@ public static StatValue items(boolean displayName, ItemStack... stacks){ public static StatValue items(float timePeriod, ItemStack... stacks){ return table -> { for(ItemStack stack : stacks){ - table.add(new ItemDisplay(stack.item, stack.amount, timePeriod, true)).padRight(5); + table.add(displayItem(stack.item, stack.amount, timePeriod, true)).padRight(5); } }; } @@ -126,7 +126,7 @@ public static StatValue items(float timePeriod, Boolf filter){ for(int i = 0; i < list.size; i++){ Item item = list.get(i); - table.add(timePeriod <= 0 ? new ItemDisplay(item) : new ItemDisplay(item, 1, timePeriod, true)).padRight(5); + table.add(timePeriod <= 0 ? displayItem(item) : displayItem(item, 1, timePeriod, true)).padRight(5); if(i != list.size - 1){ table.add("/"); @@ -135,6 +135,60 @@ public static StatValue items(float timePeriod, Boolf filter){ }; } + public static Table displayLiquid(Liquid liquid, float amount, boolean perSecond){ + Table t = new Table(); + + t.add(new Stack(){{ + add(new Image(liquid.uiIcon).setScaling(Scaling.fit)); + + if(amount != 0){ + Table t = new Table().left().bottom(); + t.add(Strings.autoFixed(amount, 2)).style(Styles.outlineLabel); + add(t); + } + }}).size(iconMed).padRight(3 + (amount != 0 && Strings.autoFixed(amount, 2).length() > 2 ? 8 : 0)); + + if(perSecond){ + t.add(StatUnit.perSecond.localized()).padLeft(2).padRight(5).color(Color.lightGray).style(Styles.outlineLabel); + } + + t.add(liquid.localizedName); + + return t; + } + + + public static Table displayItem(Item item){ + return displayItem(item, 0); + } + + public static Table displayItem(Item item, int amount, boolean showName){ + Table t = new Table(); + t.add(new ItemImage(new ItemStack(item, amount))); + if(showName) t.add(item.localizedName).padLeft(4 + amount > 99 ? 4 : 0); + return t; + } + + public static Table displayItem(Item item, int amount){ + return displayItem(item, amount, true); + } + + /** Displays the item with a "/sec" qualifier based on the time period, in ticks. */ + public static Table displayItem(Item item, int amount, float timePeriod, boolean showName){ + Table t = new Table(); + t.add(new ItemImage(item.uiIcon, amount)); + t.add((showName ? item.localizedName + "\n" : "") + "[lightgray]" + Strings.autoFixed(amount / (timePeriod / 60f), 2) + StatUnit.perSecond.localized()).padLeft(2).padRight(5).style(Styles.outlineLabel); + return t; + } + + /** Displays the item with a "/sec" qualifier based on the time period, in ticks. */ + public static Table displayItemPercent(Item item, int percent, boolean showName){ + Table t = new Table(); + t.add(new ItemImage(item.uiIcon, 0)); + t.add((showName ? item.localizedName + "\n" : "") + "[lightgray]" + percent + "%").padLeft(2).padRight(5).style(Styles.outlineLabel); + return t; + } + public static StatValue content(UnlockableContent content){ return table -> { table.add(new Image(content.uiIcon)).size(iconSmall).padRight(3); @@ -327,9 +381,9 @@ public static StatValue itemBoosters(String unit, float timePeriod, float speedB c.table(Styles.grayPanel, b -> { for(ItemStack stack : items){ if(timePeriod < 0){ - b.add(new ItemDisplay(stack.item, stack.amount, true)).pad(20f).left(); + b.add(displayItem(stack.item, stack.amount, true)).pad(20f).left(); }else{ - b.add(new ItemDisplay(stack.item, stack.amount, timePeriod, true)).pad(20f).left(); + b.add(displayItem(stack.item, stack.amount, timePeriod, true)).pad(20f).left(); } if(items.length > 1) b.row(); } From 65e7891991f8a37df1aec99ff8c4d40ae0ba8699 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 19 Jun 2024 16:56:20 -0400 Subject: [PATCH 41/45] Core database content icon click support --- .../abilities/EnergyFieldAbility.java | 3 +- core/src/mindustry/type/StatusEffect.java | 2 +- core/src/mindustry/ui/ItemImage.java | 35 ------- .../ui/fragments/PlacementFragment.java | 3 +- .../world/blocks/units/Reconstructor.java | 4 +- .../world/blocks/units/UnitAssembler.java | 4 +- .../world/blocks/units/UnitFactory.java | 2 +- .../world/consumers/ConsumeItemDynamic.java | 3 +- .../world/consumers/ConsumeItemFilter.java | 2 +- .../world/consumers/ConsumeItems.java | 2 +- .../consumers/ConsumePayloadDynamic.java | 2 +- .../world/consumers/ConsumePayloadFilter.java | 2 +- .../world/consumers/ConsumePayloads.java | 4 +- core/src/mindustry/world/meta/StatValues.java | 94 ++++++++++++++++--- 14 files changed, 101 insertions(+), 61 deletions(-) delete mode 100644 core/src/mindustry/ui/ItemImage.java diff --git a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java index 8c041087c08e..cedf29df4f00 100644 --- a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java +++ b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java @@ -14,6 +14,7 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; +import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -68,7 +69,7 @@ public void addStats(Table t){ t.add(Core.bundle.format("bullet.damage", damage)); if(status != StatusEffects.none){ t.row(); - t.add((status.hasEmoji() ? status.emoji() : "") + "[stat]" + status.localizedName); + t.add((status.hasEmoji() ? status.emoji() : "") + "[stat]" + status.localizedName).with(l -> StatValues.withTooltip(l, status)); } if(displayHeal){ t.row(); diff --git a/core/src/mindustry/type/StatusEffect.java b/core/src/mindustry/type/StatusEffect.java index 0e36616cd45d..e344f652f0c1 100644 --- a/core/src/mindustry/type/StatusEffect.java +++ b/core/src/mindustry/type/StatusEffect.java @@ -115,7 +115,7 @@ public void setStats(){ //don't list affinities *and* reactions, as that would be redundant if(!reacts){ for(var e : affinities.toSeq().sort()){ - stats.add(Stat.affinities, e.emoji() + "" + e); + stats.add(Stat.affinities, e.emoji() + e); } if(affinities.size > 0 && transitionDamage != 0){ diff --git a/core/src/mindustry/ui/ItemImage.java b/core/src/mindustry/ui/ItemImage.java deleted file mode 100644 index 874fa6ceff4c..000000000000 --- a/core/src/mindustry/ui/ItemImage.java +++ /dev/null @@ -1,35 +0,0 @@ -package mindustry.ui; - -import arc.graphics.g2d.*; -import arc.scene.ui.*; -import arc.scene.ui.layout.*; -import arc.util.*; -import mindustry.core.*; -import mindustry.type.*; - -public class ItemImage extends Stack{ - - public ItemImage(TextureRegion region, int amount){ - - add(new Table(o -> { - o.left(); - o.add(new Image(region)).size(32f).scaling(Scaling.fit); - })); - - if(amount != 0){ - add(new Table(t -> { - t.left().bottom(); - t.add(amount >= 1000 ? UI.formatAmount(amount) : amount + "").style(Styles.outlineLabel); - t.pack(); - })); - } - } - - public ItemImage(ItemStack stack){ - this(stack.item.uiIcon, stack.amount); - } - - public ItemImage(PayloadStack stack){ - this(stack.item.uiIcon, stack.amount); - } -} diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index b0986bffa741..0228575700f4 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -25,6 +25,7 @@ import mindustry.ui.*; import mindustry.world.*; import mindustry.world.blocks.ConstructBlock.*; +import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -465,7 +466,7 @@ public void build(Group parent){ for(int i = 0; i < counts.length; i++){ if(counts[i] > 0){ var type = content.unit(i); - unitlist.add(new ItemImage(type.uiIcon, counts[i])).tooltip(type.localizedName).pad(4).with(b -> { + unitlist.add(StatValues.stack(type, counts[i])).tooltip(type.localizedName).pad(4).with(b -> { var listener = new ClickListener(); //left click -> select diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index 94b40a96fe0d..f0448063a416 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -89,7 +89,7 @@ public void setStats(){ table.table(Styles.grayPanel, t -> { t.left(); - t.image(upgrade[0].uiIcon).size(40).pad(10f).left().scaling(Scaling.fit); + t.image(upgrade[0].uiIcon).size(40).pad(10f).left().scaling(Scaling.fit).with(i -> StatValues.withTooltip(i, upgrade[0])); t.table(info -> { info.add(upgrade[0].localizedName).left(); info.row(); @@ -104,7 +104,7 @@ public void setStats(){ table.table(Styles.grayPanel, t -> { t.left(); - t.image(upgrade[1].uiIcon).size(40).pad(10f).right().scaling(Scaling.fit); + t.image(upgrade[1].uiIcon).size(40).pad(10f).right().scaling(Scaling.fit).with(i -> StatValues.withTooltip(i, upgrade[1])); t.table(info -> { info.add(upgrade[1].localizedName).right(); info.row(); diff --git a/core/src/mindustry/world/blocks/units/UnitAssembler.java b/core/src/mindustry/world/blocks/units/UnitAssembler.java index 2d2a40115e38..aab15b2b17c6 100644 --- a/core/src/mindustry/world/blocks/units/UnitAssembler.java +++ b/core/src/mindustry/world/blocks/units/UnitAssembler.java @@ -150,7 +150,7 @@ public void setStats(){ } if(plan.unit.unlockedNow()){ - t.image(plan.unit.uiIcon).scaling(Scaling.fit).size(40).pad(10f).left(); + t.image(plan.unit.uiIcon).scaling(Scaling.fit).size(40).pad(10f).left().with(i -> StatValues.withTooltip(i, plan.unit)); t.table(info -> { info.defaults().left(); info.add(plan.unit.localizedName); @@ -170,7 +170,7 @@ public void setStats(){ } PayloadStack stack = plan.requirements.get(i); - req.add(new ItemImage(stack)).pad(5); + req.add(StatValues.stack(stack)).pad(5); } }).right().grow().pad(10f); }else{ diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index a2b4448d3127..7b908922c86a 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -122,7 +122,7 @@ public void setStats(){ } if(plan.unit.unlockedNow()){ - t.image(plan.unit.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit); + t.image(plan.unit.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit).with(i -> StatValues.withTooltip(i, plan.unit)); t.table(info -> { info.add(plan.unit.localizedName).left(); info.row(); diff --git a/core/src/mindustry/world/consumers/ConsumeItemDynamic.java b/core/src/mindustry/world/consumers/ConsumeItemDynamic.java index 45325369cde3..b026ce3df9bf 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemDynamic.java +++ b/core/src/mindustry/world/consumers/ConsumeItemDynamic.java @@ -6,6 +6,7 @@ import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; +import mindustry.world.meta.*; public class ConsumeItemDynamic extends Consume{ public final Func items; @@ -42,7 +43,7 @@ private void rebuild(Building build, Table table){ int i = 0; for(ItemStack stack : items.get(build)){ - table.add(new ReqImage(new ItemImage(stack.item.uiIcon, Math.round(stack.amount * multiplier.get(build))), + table.add(new ReqImage(StatValues.stack(stack.item, Math.round(stack.amount * multiplier.get(build))), () -> build.items != null && build.items.has(stack.item, Math.round(stack.amount * multiplier.get(build))))).padRight(8).left(); if(++i % 4 == 0) table.row(); } diff --git a/core/src/mindustry/world/consumers/ConsumeItemFilter.java b/core/src/mindustry/world/consumers/ConsumeItemFilter.java index 8993bd59e1d7..a2ed17f52d7b 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemFilter.java +++ b/core/src/mindustry/world/consumers/ConsumeItemFilter.java @@ -31,7 +31,7 @@ public void apply(Block block){ @Override public void build(Building build, Table table){ MultiReqImage image = new MultiReqImage(); - content.items().each(i -> filter.get(i) && i.unlockedNow(), item -> image.add(new ReqImage(new ItemImage(item.uiIcon, 1), + content.items().each(i -> filter.get(i) && i.unlockedNow(), item -> image.add(new ReqImage(StatValues.stack(item, 1), () -> build.items.has(item)))); table.add(image).size(8 * 4); diff --git a/core/src/mindustry/world/consumers/ConsumeItems.java b/core/src/mindustry/world/consumers/ConsumeItems.java index 791db5a71dc0..c43fa42a320a 100644 --- a/core/src/mindustry/world/consumers/ConsumeItems.java +++ b/core/src/mindustry/world/consumers/ConsumeItems.java @@ -33,7 +33,7 @@ public void build(Building build, Table table){ table.table(c -> { int i = 0; for(var stack : items){ - c.add(new ReqImage(new ItemImage(stack.item.uiIcon, Math.round(stack.amount * multiplier.get(build))), + c.add(new ReqImage(StatValues.stack(stack.item, Math.round(stack.amount * multiplier.get(build))), () -> build.items.has(stack.item, Math.round(stack.amount * multiplier.get(build))))).padRight(8); if(++i % 4 == 0) c.row(); } diff --git a/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java b/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java index d12abb009d78..ebb6f324301c 100644 --- a/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java +++ b/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java @@ -63,7 +63,7 @@ private void rebuild(Building build, Table table){ table.table(c -> { int i = 0; for(var stack : pay){ - c.add(new ReqImage(new ItemImage(stack.item.uiIcon, Math.round(stack.amount * multiplier.get(build))), + c.add(new ReqImage(StatValues.stack(stack.item, Math.round(stack.amount * multiplier.get(build))), () -> inv.contains(stack.item, Math.round(stack.amount * multiplier.get(build))))).padRight(8); if(++i % 4 == 0) c.row(); } diff --git a/core/src/mindustry/world/consumers/ConsumePayloadFilter.java b/core/src/mindustry/world/consumers/ConsumePayloadFilter.java index e43fc41a1c92..ffcf0dc2a6a2 100644 --- a/core/src/mindustry/world/consumers/ConsumePayloadFilter.java +++ b/core/src/mindustry/world/consumers/ConsumePayloadFilter.java @@ -57,7 +57,7 @@ public void build(Building build, Table table){ MultiReqImage image = new MultiReqImage(); content.blocks().each(i -> filter.get(i) && i.unlockedNow(), - block -> image.add(new ReqImage(new ItemImage(block.uiIcon, 1), + block -> image.add(new ReqImage(StatValues.stack(block, 1), () -> inv.contains(block, 1))) ); diff --git a/core/src/mindustry/world/consumers/ConsumePayloads.java b/core/src/mindustry/world/consumers/ConsumePayloads.java index ae905a4e8b59..cbbc4145e6f3 100644 --- a/core/src/mindustry/world/consumers/ConsumePayloads.java +++ b/core/src/mindustry/world/consumers/ConsumePayloads.java @@ -38,7 +38,7 @@ public void display(Stats stats){ for(var stack : payloads){ stats.add(Stat.input, t -> { - t.add(new ItemImage(stack)); + t.add(StatValues.stack(stack)); t.add(stack.item.localizedName).padLeft(4).padRight(4); }); } @@ -51,7 +51,7 @@ public void build(Building build, Table table){ table.table(c -> { int i = 0; for(var stack : payloads){ - c.add(new ReqImage(new ItemImage(stack.item.uiIcon, Math.round(stack.amount * multiplier.get(build))), + c.add(new ReqImage(StatValues.stack(stack.item, Math.round(stack.amount * multiplier.get(build))), () -> inv.contains(stack.item, Math.round(stack.amount * multiplier.get(build))))).padRight(8); if(++i % 4 == 0) c.row(); } diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index 5e74f1f72bc5..17bbf7ec20fe 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -5,12 +5,16 @@ import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; +import arc.scene.*; +import arc.scene.event.*; import arc.scene.ui.*; +import arc.scene.ui.Tooltip.*; import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.content.*; +import mindustry.core.*; import mindustry.ctype.*; import mindustry.entities.abilities.*; import mindustry.entities.bullet.*; @@ -157,6 +161,73 @@ public static Table displayLiquid(Liquid liquid, float amount, boolean perSecond return t; } + public static T withTooltip(T element, UnlockableContent content, boolean tooltip){ + if(content != null){ + if(!mobile){ + if(tooltip){ + element.addListener(Tooltips.getInstance().create(content.localizedName, mobile)); + } + element.addListener(new HandCursorListener(() -> !content.isHidden(), true)); + } + element.clicked(() -> { + if(!content.isHidden()){ + Vars.ui.content.show(content); + } + }); + } + return element; + } + + public static T withTooltip(T element, UnlockableContent content){ + return withTooltip(element, content, false); + } + + /** Displays an item with a specified amount. */ + private static Stack stack(TextureRegion region, int amount, @Nullable UnlockableContent content, boolean tooltip){ + Stack stack = new Stack(); + + stack.add(new Table(o -> { + o.left(); + o.add(new Image(region)).size(32f).scaling(Scaling.fit); + })); + + if(amount != 0){ + stack.add(new Table(t -> { + t.left().bottom(); + t.add(amount >= 1000 ? UI.formatAmount(amount) : amount + "").style(Styles.outlineLabel); + t.pack(); + })); + } + + withTooltip(stack, content, tooltip); + + return stack; + } + + /** Displays an item with a specified amount. */ + private static Stack stack(TextureRegion region, int amount, @Nullable UnlockableContent content){ + return stack(region, amount, content, true); + } + + public static Stack stack(ItemStack stack){ + return stack(stack.item.uiIcon, stack.amount, stack.item); + } + + public static Stack stack(UnlockableContent item, int amount){ + return stack(item.uiIcon, amount, item); + } + + public static Stack stack(UnlockableContent item, int amount, boolean tooltip){ + return stack(item.uiIcon, amount, item, tooltip); + } + + public static Stack stack(Item item){ + return stack(item.uiIcon, 0, item); + } + + public static Stack stack(PayloadStack stack){ + return stack(stack.item.uiIcon, stack.amount, stack.item); + } public static Table displayItem(Item item){ return displayItem(item, 0); @@ -164,7 +235,7 @@ public static Table displayItem(Item item){ public static Table displayItem(Item item, int amount, boolean showName){ Table t = new Table(); - t.add(new ItemImage(new ItemStack(item, amount))); + t.add(stack(item, amount, !showName)); if(showName) t.add(item.localizedName).padLeft(4 + amount > 99 ? 4 : 0); return t; } @@ -176,7 +247,7 @@ public static Table displayItem(Item item, int amount){ /** Displays the item with a "/sec" qualifier based on the time period, in ticks. */ public static Table displayItem(Item item, int amount, float timePeriod, boolean showName){ Table t = new Table(); - t.add(new ItemImage(item.uiIcon, amount)); + t.add(stack(item, amount, !showName)); t.add((showName ? item.localizedName + "\n" : "") + "[lightgray]" + Strings.autoFixed(amount / (timePeriod / 60f), 2) + StatUnit.perSecond.localized()).padLeft(2).padRight(5).style(Styles.outlineLabel); return t; } @@ -184,7 +255,7 @@ public static Table displayItem(Item item, int amount, float timePeriod, boolean /** Displays the item with a "/sec" qualifier based on the time period, in ticks. */ public static Table displayItemPercent(Item item, int percent, boolean showName){ Table t = new Table(); - t.add(new ItemImage(item.uiIcon, 0)); + t.add(stack(item, 0, !showName)); t.add((showName ? item.localizedName + "\n" : "") + "[lightgray]" + percent + "%").padLeft(2).padRight(5).style(Styles.outlineLabel); return t; } @@ -266,7 +337,7 @@ public static StatValue content(Seq list, Boolf if(!check.get(item)) continue; any = true; - if(item.uiIcon.found()) l.image(item.uiIcon).size(iconSmall).padRight(2).padLeft(2).padTop(3).padBottom(3); + if(item.uiIcon.found()) l.image(item.uiIcon).size(iconSmall).scaling(Scaling.fit).padRight(2).padLeft(2).padTop(3).padBottom(3).with(img -> withTooltip(img, item, false)); l.add(item.localizedName).left().padLeft(1).padRight(4).colspan(item.uiIcon.found() ? 1 : 2); if(i % 5 == 4){ l.row(); @@ -304,7 +375,7 @@ public static StatValue drillables(float drillTime, float drillMultiplier, float b.table(info -> { info.left(); info.add(block.localizedName).left().row(); - info.add(block.itemDrop.emoji()).left(); + info.add(block.itemDrop.emoji()).with(l -> withTooltip(l, block.itemDrop)).left(); }).grow(); if(multipliers != null){ b.add(Strings.autoFixed(60f / (Math.max(drillTime + drillMultiplier * block.itemDrop.hardness, drillTime) / multipliers.get(block.itemDrop, 1f)) * size, 2) + StatUnit.perSecond.localized()) @@ -325,7 +396,7 @@ public static StatValue boosters(float reload, float maxUsed, float multiplier, if(!filter.get(liquid)) continue; c.table(Styles.grayPanel, b -> { - b.image(liquid.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit); + b.image(liquid.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit).with(i -> withTooltip(i, liquid, false));; b.table(info -> { info.add(liquid.localizedName).left().row(); info.add(Strings.autoFixed(maxUsed * 60f, 2) + StatUnit.perSecond.localized()).left().color(Color.lightGray); @@ -354,7 +425,7 @@ public static StatValue speedBoosters(String unit, float amount, float speed, bo if(!filter.get(liquid)) continue; c.table(Styles.grayPanel, b -> { - b.image(liquid.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit); + b.image(liquid.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit).with(i -> withTooltip(i, liquid, false));; b.table(info -> { info.add(liquid.localizedName).left().row(); info.add(Strings.autoFixed(amount * 60f, 2) + StatUnit.perSecond.localized()).left().color(Color.lightGray); @@ -479,7 +550,7 @@ public static StatValue ammo(ObjectMap { - title.image(icon(t)).size(3 * 8).padRight(4).right().scaling(Scaling.fit).top(); + title.image(icon(t)).size(3 * 8).padRight(4).right().scaling(Scaling.fit).top().with(i -> withTooltip(i, t, false)); title.add(t.localizedName).padRight(10).left().top(); }); bt.row(); @@ -556,7 +627,8 @@ public static StatValue ammo(ObjectMap withTooltip(c, type.status)); } if(type.intervalBullet != null){ @@ -601,9 +673,9 @@ public static StatValue ammo(ObjectMap sep(Table table, String text){ table.row(); - table.add(text); + return table.add(text); } //for AmmoListValue From 0c540f952779e8589af1de789dce3e31242a14ae Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 20 Sep 2024 14:04:55 -0400 Subject: [PATCH 42/45] Minor fix --- core/src/mindustry/world/meta/StatValues.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index 17bbf7ec20fe..ac422e90d7fc 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -150,7 +150,7 @@ public static Table displayLiquid(Liquid liquid, float amount, boolean perSecond t.add(Strings.autoFixed(amount, 2)).style(Styles.outlineLabel); add(t); } - }}).size(iconMed).padRight(3 + (amount != 0 && Strings.autoFixed(amount, 2).length() > 2 ? 8 : 0)); + }}).size(iconMed).padRight(3 + (amount != 0 && Strings.autoFixed(amount, 2).length() > 2 ? 8 : 0)).with(s -> withTooltip(s, liquid, false)); if(perSecond){ t.add(StatUnit.perSecond.localized()).padLeft(2).padRight(5).color(Color.lightGray).style(Styles.outlineLabel); From f00b79906b2aade57c13ba9e570fc977be1c889d Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 20 Sep 2024 14:09:39 -0400 Subject: [PATCH 43/45] Fixed database dialog fade --- core/assets/bundles/bundle.properties | 2 +- core/src/mindustry/ui/dialogs/ContentInfoDialog.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 0f88f8d18d36..89eef6fee84a 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2022,7 +2022,7 @@ split.container = Similar to the container, units can also be transported using item.copper.description = Used in all types of construction and ammunition. item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced. item.lead.description = Used in liquid transportation and electrical structures. -item.lead.details = Dense. Inert. Extensively used in batteries.\nNote: Likely toxic to biological life forms. Not that there are many left here. +item.lead.details = Dense. Inert. Extensively used in batteries.\nNote: Likely toxic to biological life forms; not that there are many left here. item.metaglass.description = Used in liquid distribution/storage structures. item.graphite.description = Used in electrical components and turret ammunition. item.sand.description = Used for production of other refined materials. diff --git a/core/src/mindustry/ui/dialogs/ContentInfoDialog.java b/core/src/mindustry/ui/dialogs/ContentInfoDialog.java index 8defe26a2482..701ea7a21ce2 100644 --- a/core/src/mindustry/ui/dialogs/ContentInfoDialog.java +++ b/core/src/mindustry/ui/dialogs/ContentInfoDialog.java @@ -1,6 +1,7 @@ package mindustry.ui.dialogs; import arc.*; +import arc.scene.actions.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.struct.*; @@ -98,7 +99,11 @@ public void show(UnlockableContent content){ ScrollPane pane = new ScrollPane(table); cont.add(pane); - show(); + if(isShown()){ + show(scene, Actions.fadeIn(0f)); + }else{ + show(); + } } } From c6e702441d3c03b83244ead9e4b0fb4e5476fd6d Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 20 Sep 2024 14:37:53 -0400 Subject: [PATCH 44/45] Basin's missile is no longer 'nuclear' --- core/assets/bundles/bundle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 89eef6fee84a..08f271d82d30 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -720,9 +720,9 @@ objective.enemyescelating = [accent]Enemy production escalating in [lightgray]{0 objective.enemyairunits = [accent]Enemy air unit production beginning in [lightgray]{0}[] objective.destroycore = [accent]Destroy Enemy Core objective.command = [accent]Command Units -objective.nuclearlaunch = [accent]\u26A0 Nuclear launch detected: [lightgray]{0} +objective.nuclearlaunch = [accent]\u26A0 Missile launch detected: [lightgray]{0} -announce.nuclearstrike = [red]\u26A0 NUCLEAR STRIKE INBOUND \u26A0\n[lightgray]construct backup cores immediately +announce.nuclearstrike = [red]\u26A0 MISSILE STRIKE INBOUND \u26A0\n[lightgray]construct backup cores immediately loadout = Loadout resources = Resources From 63c90968c7775330066d2ec07faf32a39fddaba0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 20 Sep 2024 15:42:22 -0400 Subject: [PATCH 45/45] Triggering build to test newer Java version