From 79dcfefd69d49a68e775a631bf89aee280245819 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 9 Feb 2022 23:27:04 -0500 Subject: [PATCH] More payload block recolors / Bugfixes --- .../blocks/payload/payload-loader-in.png | Bin 0 -> 599 bytes .../blocks/payload/payload-loader-out.png | Bin 0 -> 565 bytes .../blocks/payload/payload-loader-top.png | Bin 1032 -> 1025 bytes .../sprites/blocks/payload/payload-loader.png | Bin 1412 -> 1439 bytes .../blocks/payload/payload-unloader-in.png | Bin 0 -> 599 bytes .../blocks/payload/payload-unloader-out.png | Bin 0 -> 565 bytes .../blocks/payload/payload-unloader-top.png | Bin 1033 -> 1020 bytes .../blocks/payload/payload-unloader.png | Bin 1417 -> 1445 bytes .../blocks/turrets/afflict/afflict.png | Bin 1879 -> 2076 bytes core/src/mindustry/ai/ControlPathfinder.java | 5 ++--- core/src/mindustry/ai/types/MissileAI.java | 5 +++-- core/src/mindustry/content/Blocks.java | 18 +++++++++++++++--- core/src/mindustry/content/UnitTypes.java | 4 ++++ core/src/mindustry/entities/Units.java | 6 ++++-- core/src/mindustry/input/DesktopInput.java | 7 ++++++- 15 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/payload/payload-loader-in.png create mode 100644 core/assets-raw/sprites/blocks/payload/payload-loader-out.png create mode 100644 core/assets-raw/sprites/blocks/payload/payload-unloader-in.png create mode 100644 core/assets-raw/sprites/blocks/payload/payload-unloader-out.png diff --git a/core/assets-raw/sprites/blocks/payload/payload-loader-in.png b/core/assets-raw/sprites/blocks/payload/payload-loader-in.png new file mode 100644 index 0000000000000000000000000000000000000000..f8427f0ba98993527d66ff96c50fbbe399178ba1 GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z$EDD z;uumf=k1-nzRZCFt`A>}rmlIyr?8NVW94LlRSJ!KI=S)_7?`T}zE4lP$5OqIL%`{U z+|7!&?Wzn66COYO_|o`y`Hjt0mOK4(^XGUH#JQ_II?pY;V2*K{)o3A#n`DhMV{ zSDxO@Ilbp&FPG{a50cnF|7Qf( zes2^xmcRMue@4^fPk;9FiYJ}qn9#!jBXW!x&gUH~wx8Byrg%IkK>tky*Q*)*OAj1- z8o~9e)RsrJY5u#{3`#!?Vmky6p8Heh__^i@?`)om)0$h)VtCyD sRiEK;|99zzkCQ(naWOF5SgQZx(^|V78@5kpU|?YIboFyt=akR{0ETD;@Bjb+ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/payload-loader-out.png b/core/assets-raw/sprites/blocks/payload/payload-loader-out.png new file mode 100644 index 0000000000000000000000000000000000000000..afb61bf138431a4132364abfe10ab922cac804a9 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&!1&(N z#WAE}&fB|=euo`++#brG3+$9W&=$Pq^u7AVE7em%RYNXz+I~AS?bAL}!4v%~D~(fB z7#JEBTgI>ZzWtT_qZQ|-zmA>65%9pUrjud!Z)*@)CAZI|;qD)E5WB*(rjy}xZ=1eg z!pgM|y;&lT8P#+$ct^DB3o6V_{~^Q}R0(39J@Y}8X~_)PeJ%|fPJB>hYH?}T7fgsc z24WVltNi}+tBn6k$uExD^WQIAz3}#%@UD3boJxWm6H?5W7=_NdC^#79voPsA=yYgs zT_eb`VS*|XquA{(hlV5;4L3MZ_Tp>9#pnOe&;NYB?#8yQaR+1*Og4W=+S$gyH;?1m zdew%>sT<}6uv8>|IU~<|~U(~ zUHmZJW)_FR16jMz2^@wFk{_`iID;jijL zvH?8|M>!D028r82TpM+l3ZPII-t01D6mk)J%PAmo*YIGK1A~5!))DQ~QV;kt8m@<# z9q5jhesJ|D?}tzC*eYsknPnbaU~r#dazN3Jx1cAKS?0+#26sub1Bvr^3+Ci9%e=Vb kaIK1ose^&RVPX8as+o;3O2Yc8=QpI;xiIQ2?YkmQ3MFlp+1j!A(SEE$a`zHUi_*`giJp22~yiGf&-~2waznb&= znT+c6@@*S8vdKqZK6&D|V&|u{{{>>dYHI#GmhS88+pO>KCu38+G&6(h75CXUBlt8H z%4tUSo|V^FIOj^wv2Xesiu32>tm9zNP;9^BGlz-6%VVKRw;+Q}-KR6vja#d~AAHVY zulg|GSAFs64;qSdFMVk27E}mmnkV&;c^X55kjWJ;`2vt`m$M%j`xzR9Vy^JXb8s+d z98Br>(0HJjfuZKtk8}0aNpCD4e!e%qwbD=Hr{2cC6|a`AR8IW+=I7Ioi{D1a_OlrO zdGDP+`P|hrOs@*I2%Y)R8mGFWYF}7W8J8cIn%cvccc|39>DX59Fp`jB~7_MMxd zuN$9vTxhxP^acya-g#N;|Aw)#t!d-p#w z?*H~#)t3KrmVJD1>4mS^t2Qd$-qljMegCW3pBA3dbUK~gv@Cb4cKybP&;NF)jJREY)@q1=0{m%Sw8&526(S${{X5UJ# z1pQF^7Lrn?5N~=STl1EJ@}y7GIxMpqr{)d$rh9$b@xnltVD@rEuHw z3y0P&ymZtd!b$%j_r|OVTfM%AYu?L!H0eV0k0$R!>+j1mT)Az(a7WEv?qH|&54o4I zaK^7tRQ$!h@*%hO>DhPN^?lUYjjd}IhB$o_Q!{j$daXKT#oL%oW*<8@W<2C}_VBoO zOzT+fqBi|2(((r6Yk5(&%`h+PhttXy z!NdB?U7WuCXO{S9?^PyqM(DtY^^>#}BN+~VpRBy_mRsJFIU$@`j6CuFT`W@>+UEC# jIfXDBKJTvlP@m^upj^m;3%3~<7#KWV{an^LB{Ts5uqe?V delta 975 zcmZqV=-`-OSbxaV#WAE}&fB@V`5}%XZTIiC1hgwMItIB+p5(>B+(H7kUeO;E^aa=7xqOQ1W$Uvk;!!e@{3(rZ6Dxdxl*$CZG3=}o#o9K0fqo4zMV5ISQ(~FaPkyWX1GzY_2u7&sZ&)y z*d6ru{P8+__2SPTG!*Av`p~$UOF+ZXzxM;9H-iJGR8}j$1q;IzfkkOQ8r&HiIQ6pH z`B_*PrX(1-{BU?+$H1_yJ}$qCzvr&{p8LOQQ{M@D?eor2T9uZWrF!Srrzd~DZtk5O z8{Q=OZ#}#GQkQx2|KRe)=kFy~Td5y8_G(p;;@3yY* zyI8Di7MgOF{b+J?I{9<0MazVicK>{q{#@54{hGuR-Q7zjZ|I)8SNt5~kwfn}<3+FU z*tFV=`K;H4miwpPh$n?I{E6q>s<(P|n}N;TH|MH&;xBlusPqrs!!q;7H08-*huKS# zSJygQdPwY>d8O!w+Gm;n35_@67ft`rdha;@gD>70*RF=Wto<{&fJtm}4HIX5iQoJF zA7_&P)Oegfyyw{Y;~}yoe`jQ^Nr|3r@cv_XZIIm+OV^B_a~4QOzdaY9bFI+r`dO&hmR^q<&+5xRK{BZ_$KhwPxRn zt_1y1`xcbqrx0&`!aMVpcvkdFXO%5d`|1^hVyb`e7r8sA``ROir$@cQ~ zJnM|d*8*NADd;Sm{-HI({6y5+->XgDn-zM#(5*SBn)vXWU_;e!b&>7s%M-m`nARMe zq5yJ`%YOyanukv+Hvaz5`ZA?FtzCbL7soyJCvE&+>_7WD-CtUA{NNhjnxvLncfOwy zsD4$ilAkR4cvYMJm1z^UOpNYXEw?WqxT#9}u*7xMnuXI?uBOd1To?VriI?-@+nnT> z>mOQ!IF;Mt{W@FT{AV}#Q$OX6#SGPkhw&=mPMa9o-mAMiZSB2tLUX0i6()&&^F%nc o7=5vBEei2L_ zau#kLJ1kx`t>8aa5*ceUy?*iaoc}fjtEc?Axw-uP&Z~?Jj@%bkIh?$(Ay$XsKxNm0 z)XiNC47-#}rkiJ_Mow9oxw?K91H;d*3EDpy7#Uaeg;vFLNFB-CuC}gs;SJ3jOe^>g z#reyodT=bc*S%JH>gM}_Voz7H`t=>q|v)%iOqZwj@rWHOp7;(8Sj4DYAU`o zb!oiu^|Y?Z+4armi@FMQFO=`Pq!(=}z`Ve9;nIVL%t{#k5mu?#15@UzotL`sMAv?@QnGJ5N8YS8q3= z#-X?F@q%w^De5t<9L<-fZgz7N5%lWo@myWtV}DAnEy-nr%KprCe06IYqBe;0B)JqG zn80!ENwVGLLlbl_2`=$em^Q2C%>N}DHk~vPy2jS_;1W~){v?(K0@0H=TsaOXZV?ge z5=c0+f@zLKXoK)#4#uJr54Si8GBMmxdH$>+iG|_9>Br|ekLsS{_v4?{QiF%rpnF1?#xm z4+=J_IH=n5t>R#}u1~31vE;I&=lk%R%3+S}!fv_KQ#h8gy2VCZuifu`iA#0z`-I%) znGDGa_YYp0_DJlhe`}K1)8iidnp<-h*(R-inRKP)cR|kk<_wX{S(4>?6I9YGqZw59 z?n+|MtNI_vy<)cMn+LB=`B+vwxxHB5sifV9r~G^IR`X>)menuyySJ$R%)(8EFXpK% z+T{M`U7g-8d4-&w6x)M~eAXI$n_L)mx6h?zhN0NXPO(El8}F;GWbNaKNYudZxhj9`^UyZJy zm*e$m6FA-(uj0sH{Iz6$H;0|{uX?2~p36HLgcMx9-EfsywOd%x#Vo9)+kgK4J$$hZ znjOVk7JfasOw-TrXbq$5bM}PLC2}7oG|6Ni++cQm9XFRlsoD*$r8bwZd$GI{&wEj| zp5e~oSzFFezY3#$kUsGI}(0>de?K}x!vKY bmimS#^9qEOEL<2E7#KWV{an^LB{Ts5JnxL) delta 1380 zcmbQw-NHS=u-?wo#WAE}&fB@W^R76EwE2f=URt{FM$*!pjoND`d}65N6wsfj*W&&_ zRDjpZw|~Ln#kbiVHYp_*PSnu2lrvpV z`DdqDGhTf8##H(@Z*%BL_i)Xp*KTj~8df@ZoULi7 zXJEM0G@&W!Y2~$liydxgr^WT}{=Z_?t!m+|7w_e63w%}CXYuTJ+&#PdX|~rl%A2?b z+A1R5lMzQ57?yA=hJI$$Vc5W{{oQW1O3!3H-zyTi$?Dmh z2kbPy{FV-f2<^@x1eSdEe7UHL?+62fUG1NSeaFRRST6}=2B~m8cy>1W)81_lEF6#fOkVZ)_ip17 z`5pc;pLr^Z-(+6dWm&;^^clN=cmoq>flQ3dL|vHxMhF0eHOFH zvc_(?)w?wwE)dic_;O{t(vot$6}$(x^{6Z_wKGhqF04IWaN_QTE7!jt5m|mMVQrVi z-n|W1e{nM`FD z7BnV^FV#~2+T^6rlbIqT#JyEk)!%i;x9Xz?`)?axtXuY4TVlEJ;aS|ba<>K4_x)e? zU2$eWkhxJ$A2wpa_KW?|vH)^BFZk45`YM*iT=T-m%uP@b{gK zmzJ!!sj8{!=edFPD5qK4tdP$0tbqzYnl44m@%H?D^RxJi>KZ3zj-RrbJS~d*Ws~RC zR@OfKJ2UOnO(qS7V>Ox_nl(H4PdZzRNwa*m*J(*$h`qd1AjshUiK)}~N$e8XwJceI zg>l17-B{VBYT@^IS!Ul{D9{(Tud4pyoM>I2R^ z#akL%kG;jFvQwXEXOj32e}x^ZHjD! Ak44ofy`glX=O&z$EDD z;uumf=k1-nzRZCFt`A>}rmlIyr?8NVW94LlRSJ!KI=S)_7?`T}zE4lP$5OqIL%`{U z+|7!&?Wzn66COYO_|o`y`Hjt0mOK4(^XGUH#JQ_II?pY;V2*K{)o3A#n`DhMV{ zSDxO@Ilbp&FPG{a50cnF|7Qf( zes2^xmcRMue@4^fPk;9FiYJ}qn9#!jBXW!x&gUH~wx8Byrg%IkK>tky*Q*)*OAj1- z8o~9e)RsrJY5u#{3`#!?Vmky6p8Heh__^i@?`)om)0$h)VtCyD sRiEK;|99zzkCQ(naWOF5SgQZx(^|V78@5kpU|?YIboFyt=akR{0ETD;@Bjb+ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/payload-unloader-out.png b/core/assets-raw/sprites/blocks/payload/payload-unloader-out.png new file mode 100644 index 0000000000000000000000000000000000000000..afb61bf138431a4132364abfe10ab922cac804a9 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&!1&(N z#WAE}&fB|=euo`++#brG3+$9W&=$Pq^u7AVE7em%RYNXz+I~AS?bAL}!4v%~D~(fB z7#JEBTgI>ZzWtT_qZQ|-zmA>65%9pUrjud!Z)*@)CAZI|;qD)E5WB*(rjy}xZ=1eg z!pgM|y;&lT8P#+$ct^DB3o6V_{~^Q}R0(39J@Y}8X~_)PeJ%|fPJB>hYH?}T7fgsc z24WVltNi}+tBn6k$uExD^WQIAz3}#%@UD3boJxWm6H?5W7=_NdC^#79voPsA=yYgs zT_eb`VS*|XquA{(hlV5;4L3MZ_Tp>9#pnOe&;NYB?#8yQaR+1*Og4W=+S$gyH;?1m zdew%>sT<}6uv8>|IU~<|~U(~ zUHmZJW)_FR16jMz2^@wFk{_`iID;jijL zvH?8|M>!D028r82TpM+l3ZPII-t01D6mk)J%PAmo*YIGK1A~5!))DQ~QV;kt8m@<# z9q5jhesJ|D?}tzC*eYsknPnbaU~r#dazN3Jx1cAKS?0+#26sub1Bvr^3+Ci9%e=Vb kaIK1ose^&RVPX8as+o;3O2fk4L>fXn6oi>)vxF`+q|*Hk@Ks^ z$*i0@XU?Zf(oDA1J8=Gdl2Yu<;J|75B<+z1Lx2;PYGegZBw&QLVbynfYAKoq9A5=YAAgU}$DCk`M!Quwr7jq0E zt&aa(zyDrxwUzpjW3N^fDSmyVoE>&+YQct$MPI)*tAF44=fl0;Io4eoo0#t51>o1F!_0QY|Nn$VcXr`Fx#G0}Du zuG8Ke-x13Ap$t=w2Z1t>1swa+YmzlXm%5H&l^jqmuj)y*+ zT{7*k`ON1(*tw7V6WH6L|HZD3L0sNx^SW(b?;opAE@Tp)T*t&-zofXT{z$sqE|qGZ)BDKOWNG$y({n9!&yIVJw15i zS12y5;QXX(J$dQpOVjh%;twyAIvqH%;l?caNf%DNVLy~Cxl8(qg75E~H&0hA{owm% z>4`ZG`|>7izqCdF%C<}G9vP-J^^Ph#R$ZS~pq;B-d$-tB$b@%pl*47-OV@47FC1ID z@Y+#_2q*oA+#B;IY>oOJo_R0#(WDE}KbpJ`&7QxX@yc!cg*$5ZatAxDf5^Rzg)@GI zqT(<1l@GburM2(2>&y6WPcQr7w6f)mu1`{n)!OeT0&ee2$$cc8eDRQY+k^>wdP93^ zU3ueI=qhF^ZV1NQT4TCo3P>8i(^Q|oVRoL`h_@3wB5gZ>{Jtza;KWuEdgC!4~-2Ar*dy_6Bc?b zd*EK9p`l}zo

>uFnnz&R#LKSqV;wxm(3P9JH{uzyD`WD%-u~Q4#0f&G|laezDUz z^Tl`f{(bqjy8J?q7!G2XfiBl5%Jn2!Fb?wxb;2$h`4?H z_tbxAa@Hr;=9b9GsV)hYvMVrSV)42VtXy+Ih#{b}Vz%i_1MKU3>;a_14NMXRPS>uXu=JzsC%gNsXE zPfTe0|L}+BrH!*99c25$nk4`IoL-`J@apHSLR*3hf(#5f&xh~(xqpQ*=fX^NHO17w z-0K+47Mdo0{lTDa|G%pLZKiL>)~lwcTCa5XuZhd-Z#mmK`SbPda`%rsx+`sbync^$ z1p`CH#-D3mPTa72yFIIb%-JSep`vwvHXRn=O#9KK>v%{!YO2CRZcU*g{oUP77IShc z+gEvPI4mADIiX!YLuJaE{G*C3Dm9T&oN~9jSmJ*injkLj*}b8={dWFb-j3G$!utYa z9-mql#c$%?r1mGQYQKOq>w*8u3$LY?UKOb4Q;)tZcUXLjP}aT6BL0qQ`(B<{a`gja z?Cq@k0enJj>(#f)>^o_5+de|!o97pyeHW^KGtQaUk`|Xc_1bm&C3) zeD!nnqzO{{0-T*biaeQJ7S_-2Wxq?ZhIMw9kGm^VQgNM!llESDj_s*0vL-Z(yxqKU z`QmAZ%r`Dq+RXfOm1CUO#eD%cz2ub^Uj4v2@qyIdZ7trK(JxoeTRm}s=8G##v$7`a zd$qG!ERT1p9@`zMnw%0oq{;U#T))IGE z+=o*Lh$6L(F@qPQDHHh=z?}j@c8vj-A^L!EGRW5Vp))95L6=!PC z^K4x1_sJ~Ga9!39r(8}?>77S+yn4uOs=8vkQBPs)A@MBFfZS)2kK=c>>R*{4aQB?q zu~Oc6jj0AnKb}tUIPtHZ;qd+iDaQ}$F!Iz-i{U)UB(ZP44Chs|BIV^vyaKorepCgi qtY9(tQ?f;95tBrnofPMPh5)9N=PbWw$1*T5FnGH9xvX)tiabpGxS!k60i4bK7Qxk-)CVfzh|F+c7EqoMg~Xj3#%MXUFwMC zVR&Gnm~nIs6N7{Jq2-?o!VOdEXU^KVijkp1+-c1-<_d-Y_OO?gc9{~(@6Os`_^U`g zpL;oV=aw{My@h%X9T!Os!)%sMfd&(@UV8KbMAuzKw6 zx6Y6A%@+wBUL-fmTU)Qo zc-!ehxnn8E)%&#qL1yHx8#_?b)3ax z^}adLAr}wtF#G%Kr)=$;vflzSFJ2u_P6=FQJuS%0ZPm;V*Y)S0e4fC&Kx%31vL|!& ze76|6_Wkr*xIm|8lEg~Zho2VR*~*~F()rVGU;P4|o=XM+QEjtl-R)bdi;7M`LQ#xYfrWE{sTOiP-d3b9;?S-jjH&=B^Fz9mo`igB_$;=?3 z&a!%j4+BF_J$F;8P8tKlF~);dZJg@AmujSPTq})V_iVRV0?eUqM*Xqkes0;n^_{llc6J#clp#w3=9dIEzH?enHe1NW$S&s@`CoA zez4G}pwoq6ms-ZJHiIcYo7Zw5I@1^Fyy9O3r*Jb16E{O@meJInExuEB6)R3)d{UXX z-$KBHVbjmVKt-87ikFwwU-Ldy8Ro)hJHgWggg`v|`LfQ+MnQgilPGq~R zo}_awE0=M~)2orzh10*AM>*6*9`?)KdyKImXW!me0^b;RJd2OjPcdD!Vqg8E$j5=( zTxVY0WVy;Ipwiukxk+E5Gf^xxYwE^&iRD+{dMLCsZH$i(>X(!CD#-D0K^-7n9+{K7N$;l7%$VSl9`oz!LcY(z)FfjjqC2wY%zRliK0yJefiD}h(bf)y4p{5T_L-Lh_%HHY2i zjRJmg`z!z7C}mitaPC^$HS5{mHWq6=W7fE3&)_|A*Fk6bXA#VYkI7h_<8H8;k)VC$ z`MiB$0xRTqta}{ISg<|o(!Kbg^zqh&S6H%OB<@?y=^rap_2SJB5&!VTS zlw8eK$MDwQmFrShB+mnhv*njMV!s&V1+VL`vrlBW`ESx2u?2ra3{pM!Bru+MW`6YR zlC9jEj4WDHKirw?!ceg9>ha!t_k{fp)~K)Em3OLCS@AWigV!_budD}U8oqAZG%fWz l<3SMzpJ&DE6L}xX^ZcK)_Ui`r6b1$c22WQ%mvv4FO#puroGJhS delta 1385 zcmZ3=-N`+{u-@6z#WAE}&fB@Zd6yj|+V;EcbrAPhImK1%CEFEi0X~N#s++W*a>Ouh zbd25X{*Xbpe8m&ry$OvXOO(EHq)zO6YB6vA`+TG1^V*6RPsyGCZujkv|MMre&whXY zvW876YVQ4o>+a`F*ZTQFYiW(|s#R_K_y1p^(s$P4nnYKSkvu~}Jrje07{|(){2!PY z6m&T>HNxhpzm?}|nVaz3c$t5)qb57d5pwoG#AoaY_M``$l&`#JYgvFvZhWRa`F zLJa4a+co;c*Zk-s3+y4*hx)sH59!qFSFU%FHl9uO;Lx`v!&sVQcRE&Y5K3_bYqRv5eQ&k^33m zG&`-|Us=`aH9cA3+r0~W689FC#>{mMc+tE;vWwC2bj{)mGin#J-K#rLVwYUL>s9;j z=KFVJVm4ha@KpNSs@}V5)!b62(5rC_j#D@2PJCIzcKPR-nVf41H8oY*^u00ag3!61{~> zRAUrwxN4sAT)RMk!}*nD`w^$L?kCR%h_^^Q)7R7c{x9>isPJ;Z!&2P0a;68^ADKVl zrEyJR;Yz-^q}KRwEm=d~o%g=U{FaMk13K4oXK5ds;j?|Nd^W=d z?RTH*j2N!Jxv`P$n90*uHwqOdbS;>$@?=caB1Nvw)?H3~ybI27-*#`@Yl}&9wqTDZ$~$kdx*u?!NNm)N|oad{bIVUA*k|7fZlgHJXUK7=1QAUNoVNVoR&bY~NEMwn9mp5x50C>uRAB^9R1kDvS3EN#wzu_t`nvmwA5*S{^mQ^$FYX0dKRk?Q6 zuLaIxtPXz9q>nZ&;B)vL5qWk?vO@stgh@ZIq-Qw);MZI^pDkG;(Vu~Vfx*+&&t;uc GLK6TPNr6oO diff --git a/core/assets-raw/sprites/blocks/turrets/afflict/afflict.png b/core/assets-raw/sprites/blocks/turrets/afflict/afflict.png index d62f5abc791b22716658b6a1b2d5b67a6a732f0d..8b2c7fd1f81095a4cfd5781b637141ae821dedf9 100644 GIT binary patch delta 2049 zcmcc4H%DNCVf{5v7srr_IdA9Mhsjt99OK^4Yr(+Co}hG3rm^G9y))tpcQWMJ6%;-& zKC`?vfqTNua~&2;=Pwp8u*)=@k=~FbeR0yNkpEY7|0?B3Yz?`;d{R`Cj%`8kv^!$r%sQ3{n$vEn6*KFY21rc1VHV81MJG-> z;`oU(49+z+(>59z9uSz{S08%j3a`PD^~aUU-f=rJ$A|D5RN2eFl~^U2(4pU+rgL22 zg5_a`xyC%Wsm&bB9=febr#9{huhss4?fc`Z_Lt6mo^gnwQDBBt+4C~STG9CjF1}Q(vCdU~>t86(l+~0OIPIvZ&a3D{ zR~e)jAEXHOZ`$koz>Fos%tmZgT872VoU=zZ%Ir&uF>2WQI(yyr7AvoWJcjpEt{cg1 z6f}3pJ3H&r0kOP^OBQTV6<6;4%dpwfq4&qbeU`5E+S@~yR?W-VR#4gA-}rQng9-Bz znOoWC`zM}YxfJODiYuA5GaZgFIM+z&&RkH%r||O7yd(Sp&sa2jxct%Wuhq`;3DqyoM(&&EzWk+?M+y^Pp5y|Rf45F-J!vewL*hVC zjbFji*3646^~>0H?1}FCF)7tYbLN3t9IM!7m@T`qLF!|%dZ7yQOzqVrQW9!$w!L6=n`^Ytzq2sn{y4jc=jg;4mSUX z%Ui0ZOl#KE`R3rkmHW|F?o`iu&0LSw3pZKSCTwrE>S=@{Tl)g zrZHW9o51}s*~|8f5%-jJsxx^v7_PCM?`YO={Ihj zPd}X87qpo7B*U~v$^LA|o$51YDdeHT{1Y{&&V~ z<@9w^0w3?}bn!7rc+RqdC*bzym7>T0)vkP=nbH_E^Tut5wKI++m}>8GQF@ykGe7Hv z33I^vtxJs5x9(QA2Pu=f>wni8 z+6Ae%WNqO(X2CGy{Zpy+Rf8LwL^v*!&-QVnUP9EL-2J0_hzx&m(h|i(2 zUVhq+#3>I7#DW}%QuN@QPexu~hV4DU!{U6KkQi;K-Ck;+cF4 za+$Ikb{uYGxngx?MuV0e>nD{7kMvHZEZtWAgk{2w2`8rpW;^6WugsTQe^cl`L%{aw zIi@NJ^)rN>ip=xY>AZcj_~vWIf7j=fN^4{?z1y_>X~BWLVrfr>xxXv$RLeTtVv$j1 zNi_NP$a&_S%eK0m{0dtHTud9&%zk`&y`jp+NAT3+9KFPr?PBr?Neu5kCcXUHbZfd* z#^ONz-rv7vg4f>f(A)Sm`|b>(JDeHWUnj3Pe}&=E@k6%tVSLlQxaYb)-Pw@XWTe}{ zzu-s02?NJjVMo|!SPH4te!9MSW6-isYbI~`@i8U-??r>ty-TiLymjGW!nY=lY+(K&$fLq{kC&eh{X9$le!lwCJFDy@pMLdS z^zJ>^w6r|e&ub@GJhM}-|C+RB+Kk)@SB)EX>KwTFNN3_Hj)=uqj=1kyYkKDB@|F2~ zTNkM*ubCRk%P2PU^y7~ezG=K0o^13BUZC1N|5C|RX9oeVQzyK|_8nQ(*1$M-3F9;y z9u}3VcT!dLey7un56lYVj?VMm%r>Fva`W{IzrEMoV_+zC`lev#aF8K;20Kf=M$bBUc{BUfUx{5t2OikEGH0A)Ui1BcVeZCx-!qOeTo$`(-kP-GhT2-u z&{b#Uq7U9MTVJHFaNzCPho7_OiBDi!BFNEuZ{gHq*|+oOGHSe4XFv66Cu3H@nq&D{ zJUYA%y^XJLa3~1NtY_8Eky*nNAk6-CeNUC)z_AGk!hsQ?2$di9C3@ zZcdGE`u8oo558U9cyDk1f$I%>g)Dp?w7a}hP(ndQV(8bU|?YIboFyt=akR{ E08TW<*#H0l delta 1851 zcmbOuaGh_0VZETIi(^Q|oVRlgi|$wmxb8RqqiT-qp> z+q2@KaE9TzpvBGxB_A$66Yu3Yn17LR!`DAwBsRU(m?g!)&79tz5XGR=J6p0zlQBWU zOq=C0|M&E3^_4PRxqAMu6&G0?{M+}o zuF5@c5`T%^c)Rh|szq!ElFsM*n%t`KjPJR#Btefd>JDC$|gO^_abL+oE?RAmD!uf7NssGnf?WcS!}*4ejfXT|FS;-%yC7*gKLNG&s&(cse;b_Otb!NIhG;T^5x6b%^wyoExYya2t$SXqM6fjZB4R4!Y^%)uKDQ2 z(y-;=Z+)}XX*OrJ3rIKFdS>fRse)8|=7i?v+2mFARCnsrzBt5JYd#gd=5B=#sK z%;LAW!(-*G(ERgO#2$r&+58gBAHLqL`y|%6;q3LAXKVbsKb{Oc+n04m>$7r0X+y*O zpSR9$Qrsa@zj)h};D*!%_nu{M|Jc-!Xy+iqyn#vY)E1rDvfP`eU2#;<{^0XWd}C75 zdyg-x8D6s(&5BQvmA+kbAk%k2sM5@{`kT5g9g3?J)4EYg+a#jgx`nr_w#qkT6D}kJdr(!!;ewo?4SCMd@kGIG>%maI-lSE zI>FWWOY6a`v+v((b2ZHhVbJ;f`}Y~PMu~=rXY+S9P0TT7W=Ue0Q9X0%&%KKu-Aey{ z>l{a;n%Y&(2FAwrpRPh2=jv$I;i)3~$xeRh2|uzrXql!=At2zPv7Nd~jyT zt$FH(JHE}_ymwd5Zq~Bd&TccA5_^;x}@%Q@md#{PC z*mB+|{*v3v=;U)|$8+DA`u+z?&Hl!>?dPOzQF`C+)m3{X+D&-y@q^N7*X2FY*Qe!r z70bT+_(9p#VM6H4Gwed=m@AwL{vR#hq*kx|;3We?4cAuFd(2He&zLzGF8tZIe(E=# zbf*iyb{~=BVrTfE>vA^Z{AEYB&yB(icJ);i4@EoN9aY$>9Uf%k~K8QTvWOUYT>nqUSuC_A$k>PGoM6I>t z&Yx7euIzB-kNNB0j1r&LP1Iz#`QqNGN52_wbXj=Kl4o>le=zF|yT|f|K*b$qpBvd2 zmIU|832e#B|M-_-uVKcv>Bp`ah2FQ>uK(BZ$!3=SKY!P+KP<6ifAo!Px!Zr{$;^Dl zEX%;~SKta)@R7C!p<>U(WuKlflYha&kkRfCG-FYYK*X&0l9`L!e>N~OG{`aeCU$Ld zIAE}U#giAQb_pyD3hfKjUu1C1cqU$XrEv8^u?mJlfr=UO3l}!&erihy``qZr$nZyD z#?6|91O|rvl}*OICRug{77PshP1y$WGZ+{S$Tejf)@MS&ORulOhd1B#owNM~KLY~; NgQu&X%Q~loCII5odNcq4 diff --git a/core/src/mindustry/ai/ControlPathfinder.java b/core/src/mindustry/ai/ControlPathfinder.java index cc0d09d66e..c6e1c5aa86 100644 --- a/core/src/mindustry/ai/ControlPathfinder.java +++ b/core/src/mindustry/ai/ControlPathfinder.java @@ -16,10 +16,9 @@ import mindustry.world.*; import static mindustry.Vars.*; import static mindustry.ai.Pathfinder.*; -//TODO I'm sure this class has countless problems public class ControlPathfinder{ private static final long maxUpdate = Time.millisToNanos(20); - private static final int updateFPS = 50; + private static final int updateFPS = 60; private static final int updateInterval = 1000 / updateFPS; public static boolean showDebug = false; @@ -202,6 +201,7 @@ public class ControlPathfinder{ for(int i = len - 1; i >= idx; i--){ Tile tile = tile(items[i]); float dst = unit.dst2(tile); + //TODO maybe put this on a timer since raycasts can be expensive? if(dst < minDst && !permissiveRaycast(pathType, tileX, tileY, tile.x, tile.y)){ req.pathIndex = Math.max(dst <= range * range ? i + 1 : i, req.pathIndex); minDst = Math.min(dst, minDst); @@ -401,7 +401,6 @@ public class ControlPathfinder{ } } - //TODO each one of these could run in its own thread. static class PathRequest{ final PathfindThread thread; diff --git a/core/src/mindustry/ai/types/MissileAI.java b/core/src/mindustry/ai/types/MissileAI.java index 80ceee9f93..d1d6bbc962 100644 --- a/core/src/mindustry/ai/types/MissileAI.java +++ b/core/src/mindustry/ai/types/MissileAI.java @@ -29,7 +29,8 @@ public class MissileAI extends AIController{ } @Override - public void updateTargeting(){ - //no + public boolean retarget(){ + //more frequent retarget due to high speed. TODO won't this lag? + return timer.get(timerTarget, 10f); } } diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 93dfbe413f..6f944bff4f 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -145,7 +145,7 @@ public class Blocks{ droneCenter, //payloads - payloadConveyor, payloadRouter, reinforcedPayloadConveyor, reinforcedPayloadRouter, payloadPropulsionTower, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader, + payloadConveyor, payloadRouter, reinforcedPayloadConveyor, reinforcedPayloadRouter, payloadMassDriver, payloadPropulsionTower, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader, //logic @@ -3575,6 +3575,18 @@ public class Blocks{ canOverdrive = false; }}; + //TODO + if(false) + payloadMassDriver = new PayloadMassDriver("payload-mass-driver"){{ + requirements(Category.units, with(Items.tungsten, 120, Items.silicon, 120, Items.oxide, 60)); + size = 3; + reloadTime = 150f; + chargeTime = 120f; + range = 300f; + maxPayloadSize = 2.5f; + consumes.power(3f); + }}; + payloadPropulsionTower = new PayloadMassDriver("payload-propulsion-tower"){{ requirements(Category.units, with(Items.thorium, 300, Items.silicon, 200, Items.plastanium, 200, Items.phaseFabric, 50)); size = 5; @@ -3623,14 +3635,14 @@ public class Blocks{ }}; payloadLoader = new PayloadLoader("payload-loader"){{ - requirements(Category.units, with(Items.graphite, 50, Items.silicon, 50, Items.copper, 100)); + requirements(Category.units, with(Items.graphite, 50, Items.silicon, 50, Items.tungsten, 80)); hasPower = true; consumes.power(2f); size = 3; }}; payloadUnloader = new PayloadUnloader("payload-unloader"){{ - requirements(Category.units, with(Items.graphite, 50, Items.silicon, 50, Items.copper, 100)); + requirements(Category.units, with(Items.graphite, 50, Items.silicon, 50, Items.oxide, 30)); hasPower = true; consumes.power(2f); size = 3; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 2086bf09bb..197996422a 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -3130,6 +3130,7 @@ public class UnitTypes{ isCounted = false; envDisabled = 0; + targetPriority = -2; lowAltitude = false; mineWalls = true; mineFloor = false; @@ -3186,6 +3187,7 @@ public class UnitTypes{ isCounted = false; envDisabled = 0; + targetPriority = -2; lowAltitude = false; mineWalls = true; mineFloor = false; @@ -3254,6 +3256,8 @@ public class UnitTypes{ isCounted = false; envDisabled = 0; + ; + lowAltitude = false; mineWalls = true; mineFloor = false; diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index e51c95b13e..095c380c86 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -271,14 +271,16 @@ public class Units{ result = null; cdist = 0f; + cpriority = -99999f; nearbyEnemies(team, x - range, y - range, range*2f, range*2f, e -> { if(e.dead() || !predicate.get(e) || e.team == Team.derelict || !e.type.targetable) return; float dst2 = e.dst2(x, y) - (e.hitSize * e.hitSize); - if(dst2 < range*range && (result == null || dst2 < cdist)){ + if(dst2 < range*range && (result == null || dst2 < cdist || e.type.targetPriority > cpriority) && e.type.targetPriority >= cpriority){ result = e; cdist = dst2; + cpriority = e.type.targetPriority; } }); @@ -297,7 +299,7 @@ public class Units{ if(e.dead() || !predicate.get(e) || e.team == Team.derelict || !e.within(x, y, range + e.hitSize/2f) || !e.type.targetable) return; float cost = sort.cost(e, x, y); - if((result == null || cost < cdist) && e.type.targetPriority >= cpriority){ + if((result == null || cost < cdist || e.type.targetPriority > cpriority) && e.type.targetPriority >= cpriority){ result = e; cdist = cost; cpriority = e.type.targetPriority; diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 80803cff07..07ab619cbc 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -124,8 +124,13 @@ public class DesktopInput extends InputHandler{ Position lineDest = ai.attackTarget != null ? ai.attackTarget : ai.targetPos; Tmp.v1.set(lineDest).sub(unit).setLength(unit.hitSize / 2f); + Tmp.v2.set(Tmp.v1).scl(-1f).setLength(3.5f); - Drawf.line(Pal.accent, unit.x + Tmp.v1.x, unit.y + Tmp.v1.y, lineDest.getX(), lineDest.getY()); + Drawf.line(Pal.accent, unit.x + Tmp.v1.x, unit.y + Tmp.v1.y, lineDest.getX() + Tmp.v2.x, lineDest.getY() + Tmp.v2.y); + + if(ai.attackTarget == null){ + Drawf.square(lineDest.getX(), lineDest.getY(), 3.5f); + } } Drawf.square(unit.x, unit.y, unit.hitSize / 1.4f + 1f);