From 257ecd397f04d7d305657ec31f6626d421324022 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 9 Feb 2022 00:00:50 -0500 Subject: [PATCH] Payload resprites --- .../blocks/drills/cliff-crusher-top.png | Bin 351 -> 352 bytes .../sprites/blocks/drills/cliff-crusher.png | Bin 1742 -> 1283 bytes .../sprites/blocks/payload/ballistic-silo.png | Bin 2904 -> 0 bytes .../blocks/payload/constructor-out.png | Bin 0 -> 565 bytes .../blocks/payload/constructor-top.png | Bin 1510 -> 1752 bytes .../sprites/blocks/payload/constructor.png | Bin 1578 -> 1723 bytes .../blocks/payload/deconstructor-in.png | Bin 0 -> 1166 bytes .../blocks/payload/deconstructor-top.png | Bin 2030 -> 2823 bytes .../sprites/blocks/payload/deconstructor.png | Bin 4242 -> 4219 bytes .../blocks/payload/large-constructor-out.png | Bin 0 -> 1163 bytes .../blocks/payload/large-constructor-top.png | Bin 2555 -> 3182 bytes .../blocks/payload/large-constructor.png | Bin 4197 -> 4144 bytes .../blocks/payload/payload-router-edge.png | Bin 129 -> 0 bytes .../reinforced-payload-conveyor-edge.png | Bin 0 -> 569 bytes .../reinforced-payload-conveyor-icon.png | Bin 0 -> 1013 bytes .../reinforced-payload-conveyor-top.png | Bin 0 -> 518 bytes .../payload/reinforced-payload-conveyor.png | Bin 0 -> 416 bytes .../reinforced-payload-router-icon.png | Bin 0 -> 1197 bytes .../reinforced-payload-router-over.png | Bin 0 -> 1231 bytes .../payload/reinforced-payload-router-top.png | Bin 0 -> 463 bytes .../payload/reinforced-payload-router.png | Bin 0 -> 307 bytes .../blocks/payload/small-deconstructor-in.png | Bin 0 -> 599 bytes .../payload/small-deconstructor-top.png | Bin 1187 -> 1180 bytes .../blocks/payload/small-deconstructor.png | Bin 1724 -> 1700 bytes core/assets/icons/icons.properties | 2 + core/assets/logicids.dat | Bin 4032 -> 4074 bytes core/src/mindustry/ai/ControlPathfinder.java | 58 +++++++++++++++--- core/src/mindustry/ai/types/CommandAI.java | 4 -- core/src/mindustry/content/Blocks.java | 29 ++++++--- .../mindustry/entities/comp/BuildingComp.java | 1 + core/src/mindustry/type/UnitType.java | 4 -- .../blocks/payloads/PayloadConveyor.java | 2 +- 32 files changed, 75 insertions(+), 25 deletions(-) delete mode 100644 core/assets-raw/sprites/blocks/payload/ballistic-silo.png create mode 100644 core/assets-raw/sprites/blocks/payload/constructor-out.png create mode 100644 core/assets-raw/sprites/blocks/payload/deconstructor-in.png create mode 100644 core/assets-raw/sprites/blocks/payload/large-constructor-out.png delete mode 100644 core/assets-raw/sprites/blocks/payload/payload-router-edge.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor-edge.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor-icon.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor-top.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-router-icon.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-router-over.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-router-top.png create mode 100644 core/assets-raw/sprites/blocks/payload/reinforced-payload-router.png create mode 100644 core/assets-raw/sprites/blocks/payload/small-deconstructor-in.png diff --git a/core/assets-raw/sprites/blocks/drills/cliff-crusher-top.png b/core/assets-raw/sprites/blocks/drills/cliff-crusher-top.png index a5554ae6e1def7d223b5e6a973d0590f04774ce7..3541f6e3966d9b5186e7433b1e6bbad8b4ec09ef 100644 GIT binary patch delta 312 zcmV-80muH|0^kCWF@G9KL_t(|obB1W4Z<)Kh2axK%R;Qc3aO)1h!HXZqKc?lffZPY z0iZ{K?N~SG+CE>21o-~S!vR1%=3WdP$^7~fSeyF)@F7JloG-88c;$6^WOx$N1*Qm z*c5=h0Jf?FTrtj5@cL7A03aNp`T#)Okz#7BnG7C_`@PB|&fKrAB46XsO!yk5! z=+C@A_lwsPLc0s343!cq74Yu<0B|F?2mtURxCy}GCIIWU=pq1fPe2dA z-Vjj(u!jeT0Xz&37(5G%L*KW~V?Y5lpWEB}6d)P0)J;`aXb7 z0oV&*t2)5tJTL{XKUD_+!V#(u0K^>$O^ErsTtq}fL_|bd@CK(_PCc;ME=T|X002ov JPDHLkV1oDOf0zIO diff --git a/core/assets-raw/sprites/blocks/drills/cliff-crusher.png b/core/assets-raw/sprites/blocks/drills/cliff-crusher.png index 384a6b7e92a5333c3e6997273b63758354a3d2e1..6429f1c9bcbd78d1290e22a9144f6c558280d2cf 100644 GIT binary patch delta 1264 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 V>BJdjnf(9&002ovPDHLkV1j{!9bEtb diff --git a/core/assets-raw/sprites/blocks/payload/ballistic-silo.png b/core/assets-raw/sprites/blocks/payload/ballistic-silo.png deleted file mode 100644 index c70a9079eaa748821a681f08a81381f8db2e6509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2904 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 W*%+gAOca<77(8A5T-G@yGywpo@9rJ| literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/constructor-top.png b/core/assets-raw/sprites/blocks/payload/constructor-top.png index 39a3ca79f354cd47c5902cee3907a1b6e6bf2960..bf852e56351ac7080892d3511c9cc176d355c322 100644 GIT binary patch delta 1724 zcmV;t21EJg3)l^iFnJ8PUr6o$_(!H_~}(k3K@(g@t7h{1m#uuBqz zs(@-CTnIJkTx^jaAXFIR+K@^%Nsu6aKt+l)0yP#PA+8K=;=*8zHjU0^c6MgYIWuQ2 z-)i1Um*v};_nG_Ue4~TI*?enj6GGbG+Z_cz(B;(QCr{_pXMe_5FD~Hn@+$d3UCZKn zHU?V@>VX#k zK!-p{Bkv;sfXQ?x_@K=%?n0leElb1v{k`4M!n70!(~WZg0QmI#N4EmPKR-Q~0|1=9 zxgY%uEU-(4#eYCR^HJ*#0nJCnKrma26|*D|Z1Yj;3c)rXC4pc!)lQ>05PrD#D)>d~ z2Ek`OiUYybPdZ0IXQwAY^FI3fclho6b@0om1P@7^y!cuJly8s{G}=`YzP$5x@$=`O zY{1v|KMsEJ&})LUAh~KnXoN_bV?r>^M};6@Vgy6f(SPG7Pp_Gujne+!?ic`Ars7bO zD&4kB2vpu##!RL=bC>xj7X-T`Fd$?%-$)Ay!5-(wK;RTScJuIXdlF2r3BlJP1rk)u zd?PJh2);>{1Om6|6}8VC2=DKH6MTjPLUHqrw5&j&X1E*(l726^7G&$k=V!qOKl}5& zbnU2``F}TQxdx*Ua+VjU;ih!ZAp!v4hw#U{4*`I;fOl{>n?q&uQ3&BCO)U8!#Ekf& zhlpl#gyx&_tsR+gs0BXMFF!wzNg{mv-8SoUF=+x=ZjNGy+eu^ehuf36%Y2j#!BsP; z49A*}q9DYi$<%b?JZY{YZh}lveS+B>`I@CrbAOd;KJ|>4G}%g>XsXOoIcrCh>{6#; zzA3vVa7-?-2cou2;Df+1AB7p#HXnr$BqiJjL2Cm_b)CkBATb|x_2NP;Jubzh$%df0 z`=`E8h7fX?e|CDp>a!-(o#5~`1%me0YnGKt$(S0&G~a$Mrhnz{IUpP#&D8zMwNyMh zIDee6Cs|r0-lfhi(qck8G&5t^Sq|7MD;LZJ4fV59hk1y>D#yGk-ROp&!m&JkN#@s?wz(_&RxnAW5V4o_6&M8o41* zBP_{v)f@*3nz*8r3xbCEs3BcZin^p1+39&N>1mpe8pI{NlxwP5H6e%jgSe)uaZy_m zC?iHG=A)XtsI3vI0EdOSW}-M7j|rb(tEo^08o@g3iIFx0dnrU|gqG}|#(xzhvcsjW z{kZRs3t8rqS@pRW;$oX4EB;!uaCRLk5H|aE5HkPf|0`)V^YqutH{|;hxI@(B@bw{KO%Md% z$X*jD^G#viefjp)1hw$>)C(LqqGF4-E=kmQ0L2$Lgqj^LgrS>{;(tO21@;!b!i3Z2 zQxMk0d=v%Y-_O2^T00WI#>$ir!n&D{@$_kUI#Gf SR@2J>0000J!@1!6o$_(R*GdXLXe1xkWMUYEyUVVNa|oE z@gL+LM64ur(%T7QVJisf7Q~1m0V63z?Odx9CzF{uA9Lo;y?5uW5{Y-uyw7~^%(;`7 zyLG|Ii@lr1j(+0DuNTsvIwZ000^Uu5vwy0sv?bC|Q(!0s!!IYdiU% zwY8hj7Hel^Vg93s_a~>Oo&%g?M#xM;8G#@o~ z2xvY^1HtVr&VQLDf#92u8Y=|fe3S%&-&F^V;y}1_=_L6nC3+^j5I7;J@#KP@*MYWOx;qTqY$!GY5=By~S5HvFrDjrTO zl5sD&7v$^N?tb#YZ+|R{_KvvAdCg*n`+ubIP|uZ4I#m5~s3m;4ck+xP z6cV>3Xn%l7V+zHhnenLyMi+u>J}L&mZ6PHfXwBEe;SxX<|bN)_+?nMfPW2?(T`VqPsF5rGfBdbHm&( z(Mp&rshM4yulY>PbeW@KT@V1Tmenxd6(>g5eCsaAv<3KsFlFxY>Pq#2niHcd>vK?M z0I0QqFD%#)Ao#L`aKY+968W_Xe@7#z@1(U#Rg&54uu4TJG6<&>8_cjJlrkTH23uo1 z>VF(SN+qUwzDfets5bz*{LZ*f5PAb(QPlucmKlK5v6ZnY_oRj^(-yD@5G>6HD9{Cs z8G^O>0ENbYF+wO|K0v`icuWvVnGaBS7BmJ3CCvwD)6nW_04l2isH_H{vKoNODheQV zZgeQhxs1(GF#uyQA5{`U5ddQ{A5{v1Ie&mLnvW_0!4$xl%|}^7Faxj%=A$ejv}tH% zH2{^>8vtFVK9io}E2-W90O$sS=IDG$bq=6r62Mn)-px~IQEMDcta3J#x)fcyCHQAi z0qR|+GHU_S(`L1=t-38iYW^VZhylniKhzMXB9y$KQS2DFq*m2}AZdlmt1Cs$uYVR9 zgr!ZoMt3Cr%u+G->Y8d-EkR@EAg-yli`sIvR0V_vk*c62>(DEE5a#Tw)V>R>QCF$^ zizaOH6>13@II$y-n(rj2n5gt?)e<&QDa&GV3v6k=CKhf?F$mRCmQhLjD6OsCEMmSU z78Dhe55X#FpLh(2J*HbTW;E2jM-FHc{#se6>z<}8L@2(@oTJH#ahCc%y$)Q30NUDZyXfQ z$$j|{#%eywhv4@HQV8r<8K#5~#%?|eA;h|32?W;5JUJTbR8uRf7obj>`FdGE$o@iR zQOyV7B>|+q)X4&{$mXMRAwj4CH1q!}2Z9PfGylA_5X1nQ`Eh9=hyXP6X-Ofl0W|aZ il0aYqXy(hsh42qM2Q#XW5vEE20000g?+_z|Kq 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/deconstructor-top.png b/core/assets-raw/sprites/blocks/payload/deconstructor-top.png index e75a3e44cfe94f51317a2b76f63a387672ac1da2..ced9f4de1e0a66231521fad3999b1b771674c8b5 100644 GIT binary patch delta 2816 zcma);`8(8$7sqE%nGilCU&%USCtH_EhC9}oL6+e%3{4WDvZgGJ7}+As5RxT{;o2@^ zr;H+G8QIEK%-AY2*+${I|H1eC^gieO@_wH4ywCGm6O0#2lP7|}!S)tNP}QL13J7$v z6J`1*_HN$yXR7{A7@_D=$14!o&c+0`t+V9GAnQNnYT*KlWC?0{%i8a;5a~;i{%qx!r6lUQ;sh82YYY52zPkKFUQ$xh%gB%2%P^r& z6L3>qmWLgLMZ7*)AvUeFhw;}sn z@W#3+T3kTfL$>{s{Tf36sP{^hOV2-*4Xq9r{YF~^1%0=UrP5fTw7 zao-diYPm0dGedK{bu=RlS=O(Sj~)HYp$#zSTrt_JC;c$u8G<*|3AcPcm=NicO?o*S zRA9bIThzt|@gkE%33OJ6IIv|ap)XP^On~RQ>fZ0)`bEHhqf*YEazwmnAmyQ6W3|G& zSzXUYn}NNNdYq10E@v@epzQW^8*RQXel)`t$(yK;`Ac+r$Sn!om6`U>wCSLK1@l$!$O6D%4^BBO|NTVYUx9;QQ-dF!($*&m0Nq7TAQ1fFOfV{a{W^oAr42Uk`4SJ zn4Lz)y!QbxQ%;&aVhhsSsVJK35LJGNEc8FFm<*+{|mWwkD4x@w4(O|8np?>wbOVT8DvJ zI0K@J^@Pb}H;kAFQP*z_G@`*^I&iSRUVW$%HD%)mYqGNTv_uYYoStg(w0cs8U^}Ua z$(s@4ZZD-C(AS*nB0=1|ylJzsFD>u3Zw??a@pk& z%dm}KF-=%bn(*U-<}!?s*ZX)t1CQW=QQ969i8>~JvC_9!yq@)rw_1i|OBN#Ez9^3_ zlM`0(Ff=FIUIHt4M44yU>IRXk&lOuLiPiQ_>b4sHmafvb35e z=hMRD4cwvT_LckZ#TG>VkfYzs>=D3vX~K#v?$jg+UFEWTd0<3}ExSx|lv_HD<*IZ29 zzY?lAJ3H&nVwz;h5o{35S&sY|8?2OOpJ=bc^TvU)_sdlb_HY8i=GwP;7lP>^&70@-rx8SNPN^<{Yc+ttRm@ znrd6zNUDuo!qM$;ow5L&cHyie-K}Furf8369w!s3tkCTP*h{x$lbTMIMJfD!G4SBl zJ9{XzVYh>HV3TkiGG>EBx&~4jSDFaE#n64QkED=NadK7Ba%vzpMD*EL$!B- z@x@~DU_*H?tP&{q%caHyv@8e{?~7#x@5=EkZuE`u1#Hh#mzU~8d&+^Xo6n|C(l=%j z^fW1wM!`QK45oh;c$Q86Kl z5~_;51iAGf^6p{W){L|2AM}j_i5pgN!oCo^*3kEFNfX3Ct{T4VmU>}gxC9kge8W&9 z4Ak4f_-RQFus0vzCCRg99_${M65wS^OdbhK&_z$mS;HX?6!fyRfNFZ0;c`$zX^f=Z`+kV5;HywY+J@kTU2cY z7d4RJ41IONR%||;2*Kq4K?x`q&j7X`on4rJ7te&gXb8eWPBQ=#hG$m z*|BpwVuySE`!s+98i@&PabESV%c%@KH6*aap;LYrM#xKU7IT^1)sGzAFrOP3`EhAf{NL4z9O(FIz#f!-8#Y)jw`MaY-!QVndD1Y<1L>9IWwd3cxcW#BN(gzLM$fEv@=Khl9X)_99e+r@bg>+HbuO8czie<24E=gsKfoFxAe67fas z)_JZ4s`f3Bxw87MHM*pLOTO9BN4QIy*NJAw@;+tckXpV_I3E;0xL-x1#6@eI^n8I; z)A?Kjwv*d;tvpm2U$23f32-2Lr2;}im2nH4iQEIE_$I@*eSyB`eQI9 z3Y;{fhWYT~TI0o}?SI6YbGu%Q#ABb8-2z*WUi8seUlaD#cmyw|O}CoAqzPrk+&cm_ zvGnfu=Y?->4a0z&IqnyaXzm_QuD0KAb4C9rBlNLK6q&) QyMvAjWoBbqg}f5;FK4z=zW@LL literal 2030 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 Qm;e9(07*qoM6N<$f?~?&fB*mh delta 2546 zcmVKq}6E1`~!hc*#DZ)<^LGZmc&AsD7m@~{Zlp^d-2*IbhcU%bb#RDITa5ymp-yIRI zm`BE1S0jWbh~T>u!WHw#TA+c zSbm#XPk>~r)vIr`LZkpC`(9bdY@FH26ayf7!nUGb=~!C;)a-vnAqc*zSmSXr~j zK0^Uo#_%jeg3pSOF~*9zJ^L8~&^ks`vwASJ2$^Ge*KXM_($}Q`8Dn@9g8rs55PIPA ztY5oNNq>JCW4vd_Pe62W83;Y`dG$cEKWTrhV|-+{V?ZW8&&?a57Y^@F?ryvhvI^M+ z-wK2tI70BXL|uwO_aVIq9F0$dP;z6R4I~s_ix)y`LDIVr(de`YB~O=Cyg?W7T9q*y>{;^jOPn zGs1@;Y>R^;^u%{nlLg_qJ}W}z+TA82d?SSC#hD>of$vseFT7-C#e#5FpA;dhrdtMmNoGTcZjty}G=B)u`U)W-5`0pCuPqW^i)0Sc`U;^T-uNW1 zn)9v|nS-{@La4|pd6;exEjH$u3&b_8D`bW9Y!9>Ay`pa2UYIg*3%c2>y3 zcLtcL7wj|ty4Tx@2A|}zM7uVK0F3TM3kncL*n5hm5Wd;)AqdZRM@9gndvOj5aDRqy z^eES(5i;Vd_9DtgX=TG=w8gCMTqq5kqABT9T6gD zcnx86FVIL4N_zGvgr4|XGw*tt0R^b-+wBpqz}L3B;cJmxPAY_lti(4%7~KnN(2MDX z@LMAAZQU>+S^Am2r-jciS^Ao`w||AtKUw;luE$6-3Lht{5F&k#?!|i~O(=Yvcq5eb zKXoId#TPz2o(QGukg^Gd&p%lZrfops^Un%|sn?*+cHn1lLJOXzC=SF2jVTF2mG?=+Hd+LiD3=10~60*WmFt!V~1NYhWoHDL#Dz5@fap zjCF{vu^VgAD8RH0NDu@cYkw`GYyA{P!4iP!8jv6;KIVEv*ZdwV#t(d@Yj3 z6hd9H^fzsf3!z`K^fi5N3n4#Q`ngR{BM@%?6z@gqYZ{bUiLkz?rho8tvjSm#RafB~ z#uK6RtLdYAfoAkov-M?#ig+MIzpiyRguQS1tgmY&gozOS!s^`+_U3wpu)eTb5eCB1 z*VUr{Gd6g1JbOks>OtX~#DZ|tcnQL6jYiJq8$zT9g>MoKLZtC1!b}a9TuzeopzuwC zUS>f4>_`!2Y5aK}EPs5`W8%!m#jc4$nBlj-H;2L(kktq?{0SP(q3{J{6~YY1LC72m zUqHMOW;hs^%%SiF#0#P3k_5Xp$=H(1P8xvh+HMs#Ld!*2R!tgwD8geO3ZF6Ux*rQ6 z9Q7gdwSUi)xw-?QMdXCUq6+XE zp$3d~f4!g6{29u;&E`MCXYFM#DG{>qA^RNttOQ_Ygvi`y_!#{>Clx{ue6#%`KQ958 z5g|Hn1RtxX$D}~$g>SZRbRQCcnGj0mjN)VU^q5eDo`3je`}de<7KGCIM)dTU5QN_N zW@C8GHyWWQK6X!!S&q;f-)s!8Iim=#e#Ua`(HoyfPmf6j(0dH8c{A{>K$xkg$D{$6 z@e>f8I|H95!i+tACDkWj_GW1iO7UqB?)poe@)*!knD;^;V=(YZ5N4=Zv(J!QbP|Bl z!n{9OC4XbhU|0bnW2~%KI#$>{VktnhFwaj_W-UyB8EZxM_4>ux3gE1;hy}6KlW`2@ zJdk}z5iTu2Qds1IXzI#526G*i=3H1Nd@U>H zu|uuWwL%f9-buqesMbJTofY%QT&s4QAymB>$$#U_E;GKC74yhgs~1Am+qpb1FJ#8| z#CRf9y&`VKHLk*!D;@|{FUf2>i9i_C`^vX4*Ajh6=BKmc^G;SG4DNm9TNrEET%a$> z{6IL`*)F%7D)un&%@B645u!U~B8+Z!r5^^qD}ziXDs7ROJb2o|vsyv+*<5(@*du!!J4AZt)? z7q(b#FYLl%BUo76a=~VsU9i90!eR?0T<$**(89vNYmpa8;B8j8jVXi>af_G9&O4bo zbI!~;GxI#}^98}=narG-`8;QSJo97e=STngy0NhirL?`W%YO>Lb97tDl6i6M%2liR zDrJ|^@??Jx#^Xt`1i2Y31xCq&AK?32%K!iagfo?>fC0XFEt~%g5YD7o5d(Z@wQT<| zKsb{|g$(fdwe0?4fN& z8o8bjD@bY~W8pAQ=zHr+dBPUr_T?4xgjiWh)KyNt$R5y$<7u!rgKD(v31dx;lqU@7 z#+Uc#^LOX2tEL}&(OgeR?b1lpRf;E61yD)`LTZ0U)5e+rQoX!^P->QdBQAvGCK#X& zd;kDzqkk1vXM550_V^;KjaI6p&25g!0M>%fc${yqp0ARA7iG#S=B>5Ffso|^b2QoC zV-FPE0vsTW%Pk`=gemouqapy>8KPz`RB!`?VTHA@mWAS6Q#dIk$-!?hs$0=d!Y~T^@_ucsN9)BGmrPPyzR6QV8XrX5@_ztE=01%&e zja66*e6cjCVYs$Xr(R6igcK^Pb?p zFCiK-@p9oax_RL0vMpDukS};DqJO1&U8Zo5aWC$(+&C z>3<=NMytWU!v+^vfxi6k@$~;#{HaO-$(F|arTxO)zj`GY4x0=7|*fw(lMgeKUHiG2;hGU zLW%$W+plMSNA-jp_^9#w6e?^fk17>E_J4v=Js|}?TO3cA0-(qsgaaQy+!G#5kCNew z#m@;V;ZddHkA;nS!h`7%8$Rs!Qe%Q_0J-oPVFilyn_}=$;+GE7iVaxVU}YMMUlT&L zX_y~>dK3-Ag^&s#C4NcoqZvOpZC@GXzz3i+xHDRM`rz(Y?nupT|FO0|<_Q7t41bzV zJQqFH2KQI}!a`)Zb+KDawK4THTk6zX%EMDdO%liTFRn|V)XDH6~0jUt02z(Is5xzwd7eWIc zmmQ-sgOFH6ZUi=j1AP4u6++kZaoGU~jDkZEg^r&+*}ONv*E7W+3^lu4c7oF|&tA{( zvWlI39C|*$*Ik7mjCnfuId)JcIuB?dq@ED(h8y7PzFY{YeLWK{c7IB1^mMFeudl$y z1}RMdm_fL`vRf5C-zc3nETZ0e#JyqJf=xk}_ zAxGSOIn-r*Pwzg0L-~TJ5_zD5Q=K#RqL7#aen}7z-Od=oUW9*Vy7z& z2t@&m!B=84lJ;@BQfk%CSQ^q0iUHUHd`2Z#uH>jyJ4-?s1W+=O8rv|ta-43fc1os+ zIVaQuN#q4<%)*7Vkbv2__kMeXG`*>E`V-TU8%^f z*hvuuJ^;ok`F~yagwpEs=~%ghtMXx#GYF;2DHSUoYA>_3?D9Qc6B0 zKPSOHRZ5>v$MR`3S`}r%r|2p95()O9QWoKKEL(OSBw28U&I6_<>`SoAm6Bq6-|{QT zg01Mu2(c*|PJ*M+YVuSAR-v^v=1~5&mTem4EXjfq>3>@=m3~Ts8s0?9+epM)%Qh{q zEy)4^!2`MpuLX|gy|Y3;x`E>vIGeR4y^SO|wQSQUXMh)z)lN9*LtNA6}E%1BMR5UJ@>n&bgfZ^7|NV>_bO8!QoTE!(uVeM+(bK=6RvlhMs7`95`VLw1fQ z)V5ixs}RbsBnw8U2jnJbC+w~!4V zeZd2KJWZ#EbN>eYEe?d|0s0T0JFUdIA1_i(hRUR>2x^MA?)OkKZ+LsFPsoxZATfUm8zF_na{$W>hf zd~Ms{Qz;0^+cIr&`gq##rEVI^t$4|mE4A`Ki9ckQ55knG8ny>)2|lCJ8`w2guGHFu zFPTn?XJi4`B78>Fg3^GG@{FQVdEiPDLNb6Y!)K(ufxX1am0FwdW72|<1R!@_Z-3{> z7Aw4@LIqUp!tN^6?8YE;pJNcR?urXRc7J~F75s1a|G`8C2)ie&&$l*Ofp4$+dv9EJ*tcc6 z5uM+Ab^8AS!hR?QpOFh8mmL7+eZg)-Hhe|{gxwYuJ|hER>J3Wd8`E9+;4|tYgo|)G z78gFFP;(s8nH$r&@I8Bd1>OaYXf?ththrY>M}0mW3!A&d-~#}7ckX(0x_`x$fp9qm zK09GdJ_yaZAbo_e>+t#J_$crhr9jB~7Hq@kGr%VsLh8A}t*g(cW7!aL;4|VvNN&7+ z@Y#mk2;81%)ED@S`U0F!Z;vlVyJeW;`Lwzfoq#qXc|Z(4ia~vYZxMuja*MTk0CZ0n z1n~Kb0|21GXXG>NWb+>R?|%oir9VELocSFEJ|hF+!|&IEVNehF@ZW!u6Em_6#Ncan znf@XQ>rU7Za^N!>ee(nQJbFrg$|~1)=dKU%bxbh`Q{Xep__9yQ=R(-U4N8M#HzK(V zWS^2xHDFQT8;w@y{`Ex?5QZ4=LAdnv!QHRs2g+hYZ0A!he7?!)7Js1)0oUTxOlp~8 zFI6f7MrS_70nqOU3B3gx@L|8NrB;vA^(m)JQ#>Jc>xS(KmjUuGr_q8BVD`4OvVfu0 z<8*!6d9sBrBG!VCDg)ut-RMi`yJa*$HrV#Su0N zm28ev4y95%o=qA)0Dt~cE-Zdd)2@A-u9Tes{xZ_^gt^KFFmxJfEMr{wjHnP&3YHQ^ z`#4=GI|1;r$$>DG4~bJ#MLZxELM+2(e@V`wR*u)e!bQ|~Ce|iMt@#M^a zgIoWY*d7ogKjsO!@B#3a_e)RNNPr`~63ERX7d`-dJB3?U8yo9$b)HiHm{=Z=>UOzr z!gxH1t|yFnLJU5;U{c=FR8N=!AJx|1fBQ8FKBIT%uCvO50~aS=GJxDRpK64iu@nen zmFz3H5)kIXXMYs4)n^w4K5G1!ZJ4O>s!hXC40gkC_n4%>N43or2Pi4{u-}K$;=o6V zpBg4rs@F7NhKHU}Axwpj`rIc9Sd#EjpPMwf@KNH|zH~^f3AW|BV@js5<~X*>TC>n% z-Gr2Nb5zBeHEeJ}u`8vXsBwi<5%dirDVw6 zZ8yLd*U9F+IZw#-$ffW3BYQxtn{r|@1vtP*mnkdF?f@pvECZ_vt_9(p+n2?@N-To5 zS9Z~PQ%!NFxI{n2xx#>@#^D~6nLGN;Rn0*N0DoSPx~*2Ct^f)F2oN`l;w@uwxbPW; zAe4d+vwuByVgRE+Tv-(*WoW lgdoKMTx9r4r_}`r{{m1LJ=Djj#FGF3002ovPDHLkV1jG}$dUj6 delta 4188 zcmV-i5Toy~Amt#CFnziVAN7RQetTO>AN3uEH^AjHHbU`S!&Z3e?M zlOp{VA*t70Ci5R;<}V1tG)uPK9a3zcVx|d%G~?jH@L=!@&kT<9f^o5g{HT&G-s-Ka zCmo$59qH=cr!NE?Us*bmKKI-!UFm4g!DaC<8tKiw9I{!V}Wq8|&lFQ;~9gb&Tn#obXZg z;@M6y@BttI0_25oba2S_Y9&KhB76VAj0f*H+H4Ubbgl!}&G1 zwsNkKvbi9W0c;9B^~n3?{HT%g+bGpmzSo6R;y}pqfHCU#2ke1@*?<*7zsxq`LKxCd zG0FmUuDuvo=mc@lIq@N_k`Vx{tDqk*qN-H1sVX(jF z&41tZe~LnYl7JAib+EtZEQ1Omr!6>XIdg&HUqV#jql3d!Mi2J)V0G<=^Y5_11=gUy zy#6%#8OuLZAt32WF@LGwaJMdWmjJs}4^ zYW_C48e7VvO68B;U{p^?fln956NUgNG6>u-{9K38Dey!l#5aDE8jugO8HGbed9Zz}g0DQ(yimAxt(6v;E+{Hw_m;Dt~;G z{3X3l%KW)y+uA4wK7cfXJEgft+xNb3M{4HtAA9!uJRtyHLG=>Pg)fDu9U(m!3Xysz zObH){1Dh@!?~XlS>_`n;{UG59OMnj`{Ucjazr6mG6+W)i)`rO=mXV24m@ zFG!al?4qO|yEX=FI|{9%VDoXzecs1Dj;orHmL_sHRjH zyU8P%>j^*KyyLuv!S}<@&4i1Plx^A~<&vdb3R&I{fUmN)Nspm;>K%{@p~}Dp;Vi;O zxz-kOAyn{j*-@Grg!nQtGteQNW%xL0N*5JE)AMoJ0dS0hT^YH;&wqZtd8fh`n6^~; zAap%;x$HQnVRqjykuvaI?*e?YDi?%4PiJ1o0%fA}fC@rtgm^Pug|GcGA*8(UwaObI1KFzHJOH|%O@@L|8F zD)lZpU8(92BksN&>VGmm@~1csgiS5A@^w%S2vfmFy`D;(aye^AS>J+7hLGAoDIrV^ zA2*$pQo#ohura+v2)P}S0>WJIg{BWxO85Yf;6&Wan%amI(-EZ%OiHbTT>Vb!#9!3U5aI8lYL-O33cK!2j>Sf!jrTP3Gd$2DX- zDJhjo8AvptF4VpC00M+}LC?iyVNPO5}HG4 zb?t^I3pRP9VUlBv~+p&I5)PY%8$MoqrNyd)MkK$$~C#WCY*nm{Z{D z+6|G>V$Kn03`kP-#q!scqHT3avYTr3gil<1y4!-YMFlN%#N)V?mjyxt-g{h=yC!W zJ1MOf+~&?u$~h7*L3$k|Sun*qD=wtqE_8-c&XITt8tm_hvS1VYw9Hvo%3~V3F7IiX zK7aV?w#>0|j>Ow0Uvyj(!pSJO!pBnu&aKhGA-X+NA03m{16KH|xT1Q(UWKnJl_(IR z^MDfY)uS2OD~V5$J_wy(LL@!k_JjM`!?cxj-Y!=q*ew|LN^V?cD!V8$foK*$=_v{4Z@JA8ny>42|lIV8?jRahkq<} zGdZW65YNa0utfNja)qKuc}zp8;WSc0NCvQE_>@wgx0@qKW(j8o$Ck^1kOUxiUhm=E zEmnF-r8;jnXOPSi&I~qn>(UukdMbq8LCD6!F}wjffNHJ(!@FDX!_UvjeRB-N&7$XgVi=3O*$t zgs$rq!uHDb*!4kZUdJG0ofYRi@9X6gc>Bli&O*8X;jD$`z~1?;t(=2z&X26u*z8a< zaAnkc`DF5Qg>W|DQ!*jsvI7tpBYLu_Sc6Y#mLZ%a_>>fcp(iK>$B4GUr++ky5Y8fe zO0LJTOVKf+ci%6;(IO5K24NTW3J>=8PW@}Uu(?YNJ^+BD#Vzl2i>b*|Gz31qU`#d$ zRY-;|K-d*2_-u206!?@vAY^?D*5R`mV3Q6ZHEwWKbJ8K?z^BB8kPM&=KFknP6~6X} z^0fo&a}IBo=mhY^vmF4S!KY+1?DNe#fOTWHdp86dH zJ|zX=S6^>B)1V&Eb=Wi}-9QY!QkUt^qOeiC4j~6VrIo+_4ZZG-k{`0l^=NUc!q+nS zAPj*|E#r%hlFx;(jT@AzWH%z23`9rCry4LT@U5=hIQ6e9l7P^~fPW3bxkuagzNr6D zhTquEr&#!GlhY+ao9ni0dv$0U!4Jrj&A1lC)ylG{h59 zw{Ga3kQ61~r&RC(jPI6G7BJ-4lq98xcel_*#Hk>pNQS zi7S8Zqn!&D_i-#`Cx5{7iX&_kD)~4L2}+eLJexFp0Q{v~SpJ+xdx%%#{Ed{I0QNRY z=?P;M4WKI;s;^>P_>`y+QW}<$Cgzb!`CBPF0r0kofzVYCiKwX}9*_$mR$;ZjBxX@7 z$7^6|CEn+-Jf!Rdz}rN%C$@;#m48b300iCvb-CUF^vAIeK7Ui^uUvPgx4jcej+&|4 zQGJqJjA47V@xf<``ju+?!F?DV98L{5xc!fb?Ex|JeV&jD9{_K8zx0%i1US+wfy_E` z;RC?8Q<#0VeD(6FJ`d@COe_ybb-UaLqQ>WIkKIU=&RJx;uiWij)jk#PFL>)?|Q( z@kupcg^w=PRw2viCB&I!V0pl%AUuENy4Y8VS!U3A_wrMOdE>_JGsKOoNuV!%@K z&;w;&IDg(18-TP?zJUn9>3PA8g=6xzT8X|2QP8(w0KZWbZ|Td!jMA#)f=~)R%ywTa z9c*#0R7biXbUh_}5K8ow%42(Z!d&oCBZ>L8I7oX!>VNyO=?PQbY*bHJ#DUd%Lr~!Z7&m-r z@KMrAdP2_NOmExN14^nVECN7)vB4bp0C;h0d}U+e#!#gEjT8XfHrQA=&NiDtfv^|= zS3c}d0wPgVGJMp(Z34m<&vv5f#FY=iBHjVH4HCPJlq#u?D%IXxb^*BG2^;r-r8b(R zmsQB+aky<$f+uVgz_!CToL?i`R3WrO*cgCafY0``MBcG#6NHTb*d_R|-^G*>tF}Ox m9l$QaN4XYKR;=0p;eP=TvU0$#33`$M0000+&<^P4_tx+!&0RW(Xcw@w$(t;N`BxDt3%whd-z?Es^GrS8`bO62zP- zy-&qfeSd%b^OAis*W%)91?xW>|5?9vzoNqg-NVy41d?6@m6>c$|5017>fl}7uK$rU zkae z*)mC`K{DJ~+G?(T_x6SQiVn%u$^r@p=5eraY*J;?KADg$7~!clv)f>wjc)_XV~)#r z8MdpbMMR(Yz{#=gn{a3+!@_sGK&xh;I!h?r`7PY1Jq&3e+a(##{7{o=@D^k(FkHu= z=PrK0X<5TojyEmBJ^5$mzH9%)LJ! zDsUdZD#3gB`GI9j7Ms>E@V(Ve=x|_Iyl=nIfnJ~u9ve!6x?CDeWWs|P*v*dKGC7^e zvaZeS$j7g&9~j!1Dq1`lZH_EwkV_6du$SYHwA7ooU!NZP%*>Ub8p)u2k}1Md?10xM lhOkMj8z$*AKwNy&yx;NA=AuHGPr$Um;OXk;vd$@?2>@V~;voP4 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor-icon.png b/core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6a9ce4ba85197287147e1d04a7ef72c0032046a7 GIT binary patch literal 1013 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-HD>U|#R(;uumf z=j~iyKN&}!R@=ZnqnrslJSKE3y2D(^lGpM;%OhvTZWV1Mlb5ePo!7pd{3nc~^mhKe z>!yE=WAC>AZa;2cvh4Ni$3OR*ef?H8ORsrNYsj?oKYVXbxh)aNy;SF+FfT*F>|)-O zrU{xgi)0yMgkzK?6;in8XD~Hnw`FSxIUW1ZDZ#L#wPS;Tl1O2|K_&%F3*!@i8J2$! zzgBc2O5^>c-Zvi}fBRnFzOZ`N@1NeAc6jNZ_y7OTF7ED(tXjVNx2@gZ2rkG?Seq}& z`TTWN^>Ys%hubHD!kH7d^lkq>GlW5hck5Rbfwa?A)%Pb$HEi9ujE|j3e9HFk6OULw z)Qv35TfKjJde^r+DMtBAQk{JFA2B|aHDZdYa&&X>Ue6}51_S9BHax!C`%~&~_#5L% z90$@DYx{=3-mGrcpxdnN6aLy*nESvy!zC}XYAt3lJ&R1LLWwFawe|ea& zEHJ$A`UI;z|A$*etG-AwZMegyWEi`)KV-M^f+!0~MW6jmt6C@XGG)sL=+5yGxMBS; z>tRZxf)&>)F+VnrM~5$DJ#=vnn9Cl*tuEB`%VkZJMWBFB`k||bIvW!9i3IA(iEv$+^>!ClF9dR5Fz=U%)s*SC^M1#@N~q6$eyVv|D97=|{`V!t*Q7G& zq_3Jxu`aAHS_P54!g0D-T zG@TW6wtM{Z(r*uznaXVj(QEm`pIIh(Y`*%dAZ3>FwnI5v?TlAG?^tURz4rXPUl)%a zd}aN(=_&&j^i?+0JN>!(jpmPj@7KR65V)th-Xy)BA*6Vn<&(vVJGTbh z+Zicn$f$7A`%Go`V_x1wE(N8UlLF7UBxN>T(`(Rr=$&2dBmoTKeOubaTYMQp4^RL0 cso{h88sqb~gIFY_f%%xh)78&qol`;+0G_|YzyJUM literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor-top.png b/core/assets-raw/sprites/blocks/payload/reinforced-payload-conveyor-top.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4f8fd597e7290613c2c2515c9f48a5bb419af7 GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%z4|uvbhE&XX zdnY=t*+8H*aXYu0PNQnb-GW~&ElNys66blA|NnlcU`-)cpZ*q*A#m_y_Oqv^XHR#_ z$j48!ugib&{(RD}KlNuVFUkIR8U5&P#@0E;v5D#b7sd64oqky;b)~v~&uyS!T)X16 z_RCk@RzHoX;n`tjw81P&_xP*ZzncP`t)|LckG?SN>FmYRk{^B(xEH+9;;PlbREer3 zNrhUaPCJ2m=5R`SZVB6LA!>E7MsVw+lyavN{Ik|}9XtG)Rod-WSzg&L`LngP;peUm6dM# z(Iy|Kb7J0;4qCpCn8JVN=HYEq)N{Q9wY|zdMki-K`Y^{h=bY?}%gt|JHWyVDIwU*v z9X;N?N_1(`$7tydN@AsZf>n=y6$|mFuqX1=zn@@XhP3C{uq`=s~Zys#1ZL v>3P1cJy~m_`c`LNtC|=T!UvB4AVc5q1-7x?3+T~A~ z-#y;*^Wn#rl@+|H^@p=HzAHNTG|XTyWK3c@!qUMhAgrJ^SOv^v{fqzd{=fFoKRp&+e@N*~dhYG3(Gxg;{d(Knad Q0fU^u)78&qol`;+0FC0Dpa1{> literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/reinforced-payload-router-icon.png b/core/assets-raw/sprites/blocks/payload/reinforced-payload-router-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9d601a3c145df462df37c71fd069bc59add862 GIT binary patch literal 1197 zcmV;e1XBBnP)Px(XGugsRCt{2oiT3{F%-xD4X{=SsavEh2}7igAjWou3WWF;sf6+o`Vm;*ld!{x z)Ui^QWJqPhRSeUeRuCY``OO<{ie3LoX`JXY~Njd@!tFO+3j*UhmnWL_VNOo z%{KRORLcYaOhP^;?gx{Qhe`7nlaQWC`wu1|E%yWfCLtwW0f0$JMW+D3B&6Ws&<5Mf z3jl!cVr{e8{(ZfRtE=y<16rM~S=)2@^zj30`{{Jn`}%xw=*@;oZwqkvS^_0}V7LNp zxB+SIn{w=-y#z@>yC7=#juIqjgzpHE@L=(Dc}Cs%`uYcc{eHv>-?6{{7&kXR$=jcw zf5WrqFWBYy&oy5{eU08^s9-`E+qU)v3xEq9_5ig%1=Y zpvLflLIl(rK2U&wn!^V&3#dJOAfo^a{|=FW(1#Po7{2rgA+`VuzZ;1JmH-QX7_J1e z01KZEM*>NJh0lj7LH#VK#_&0)3b62pQ4?U{)5!jeSeu%{2MT#c%u!qTKmj-79H~Mn zDSV)iXT(Z=k2cw#5eo?=RXLil1*}fjq=~4M3daZ~RXIaUr!&!{WtMrTeBFyKg-;js(^qZ1A8A$i>Wx7$cOH zU;>mGl3)T7&?mtJB%(`#2}p=ff(b}WTY?G5KvM$iUXT$Fck%WIr2No6v>`;|00000 LNkvXXu0mjfe`Orq literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/reinforced-payload-router-over.png b/core/assets-raw/sprites/blocks/payload/reinforced-payload-router-over.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b14a86bce4438bd34dee170a576dccf4fcdb36 GIT binary patch literal 1231 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V43FW;uuoF_;#*!-jx86Hd)u3 z41r}16)s7v2iPi1E?jB|aA}<&AbNJmf>yD>%T9+EFK=X3U|n>QE9eZLkz@R#$ri`@ zi{IV&o|1M>J@)L0Z+DXa&p)1AtyBH=XZOX6kJbI%zrVBZcsAkSt6#rK_ zW!U0*?{Xzrbzzdx+VUbHJmX9bJH&Ix8U50yM5 zlxh~v=@s3|Fu`e->Hee2~BkF~(FsalWFlyCU@$~n0|7CC2H?%~~`jXrzsydxzYD3YFCReAdAM>6}S|C*L z`rFxCIwnHT3~Lg@IK$V+PG2V#$eHnah3_GocKtI-3w6yC(-;HP69o^62dSnAGo*5M zi|m`Aq_~>FfoZv1#r}>6)fDjwo6g(jN2sKTZs2*y9mRQ*MJM=2lbcgM(~WiJa~H-O z`_O8}`KH4pHOy_Rw3nhEdx&++vk$DBR?gd|P;)H&^D1ZE2L9=)EJL(;(?h04}3TZmYFlkWQFq^HI?0~|8b)- zRCa}*tAodd#k}%YfRR>`%qi~!q)n1}<<9`=KmJ}nCa5qxa{p;F%XXfXlY>91X=*GM z!c228EKytC@JaN*LC%;BbCeF&SXmv)S95LhbZEKX8`>1*(6auxlB24^q3w&OE)Wv< z|9{!SpMiXg%tGh}ol#)g!7;VZ@7qamm<#4t|N@eA1-hoD_?kvdl5sc ziR?AQexY55#80&3obXVnnYVSZqbh@jgCf_m30jSJ?fSHWqffE2-U4ZrHrmv}pT+3F z$Q5Y7`dX9wkpIeHw!$#ZH9Al2OeS#N%(z~2P=z5#HRAo2+wMP_LYcI?LYr*v@Nu5F zkR%W=$7rUENc-ijNy(2dz1(0nFV{XQQ#$_Xxx4M|R}(jHs!Yu`0cM(u-#&jm{d{iq zcljQZ%kSU46aW4A{_)9Cnz^h%%JN*#QB4yP*s^${02A9XZzqlu4zpVXCUmNCDk>qP%EJaH3LdmUl&23Sxrc)I$ztaD0e0syhr7bXAz literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/reinforced-payload-router-top.png b/core/assets-raw/sprites/blocks/payload/reinforced-payload-router-top.png new file mode 100644 index 0000000000000000000000000000000000000000..34a8fe8144a6233f83336c651b5b1e1dadbcd99f GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%zJ3U<-Ln`LH zy>m10u!BI$!?uQ4K1am>zZ-Q0fe)B<-kwW6`(O1!^yMVo5>KFBI5_azN@n`!hdbtc zpOpMmS?Nig!t(V;Rn4`IPx{UD-%4t2yYSTHv!#XWw=u1L=<>9pAo|9w+KMuZK+8C% zZ;!&=fYOgo);KOsSBM5N-x^ml-e2S=yL#@TX*ZhcZWpzV8_tXf}DXNu4~Zr&v=?hku|53QY2+b>kNj_QDv(p!Gth?g+kKbtm3o`Qmu3Fo*3Ay<53nSk$ca zV2o|o7u8ts`Gcz7v6;_$9u#c}Jg1R&LgLAp2h*OUoYToW<^Lq&!Nw^EWwdQ(m`+IU zbQd;%7V-GuoxOH*PJg)mkhM1@^`7A5U%c^JCGI*|8dKZ!MQ=7$_+Dky&su+YIoG6* r8~ai;rz`!4@ny2R!2%CUAfsg`!>!h4?Y2dI9Ux&(S3j3^P6 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/reinforced-payload-router.png b/core/assets-raw/sprites/blocks/payload/reinforced-payload-router.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9cacb3f84e5f9fefbbff462bfd7413245acb09 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D$|-g>$?hE&XX zd(n`WL6PBrgM)z1kL}-1?08tsHLK)Z@qWRymks-~8Lly`VT@qjz?Q&!K&ru%VTcOI Yg)U(Vm~P6~5A-;Lr>mdKI;Vst0Gt$DasU7T literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/small-deconstructor-in.png b/core/assets-raw/sprites/blocks/payload/small-deconstructor-in.png new file mode 100644 index 0000000000000000000000000000000000000000..f8427f0ba98993527d66ff96c50fbbe399178ba1 GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-HD>U=s9naSW-L z^Y+eOU*0YDW2xT9A>i~v?qe(RapyaeAiJ_BY;wmN&myRG=Airf9P}Lq&_6Z#iR%$o6u;||fDy=YJozRhx%BLWB z@Q~_(*QY-peEj^)#on*%I;TCimw)%&-q8Quys6gsF4MH9Prg>a2`gtf_Wh!0!^giS z>)`Jn1CIgdPSMkz>qoKJQqu{j?@Cpz;9yHxXQ~X7n#TaO`OW*RN7r9@VD# z?_M(~{V<5_5IlJ9Po3lEnkT%oc`8nCO4*YdX;jQ`Y`YbP0l+XkKhG+!v literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/small-deconstructor-top.png b/core/assets-raw/sprites/blocks/payload/small-deconstructor-top.png index b3e82d05299c307fb576cc0d3c47e8489986574d..4e5aa251ee910d24b035ac964c73aaddaedb76c7 100644 GIT binary patch delta 1129 zcmV-v1eW`w37iR#F@IJ`L_t(|ob8=GZreZ*Mn4H@a)k6!V?Y;4%CxQpRfdrh=mbHK zDsY`PWpWV%YOFp-Na-}0h$6YWGrKcOay74tC54{-p142Kl3qPL9$)Y7Hi&W9->;%C za7Ov|^!+vUn)UhR8K={^_(0Az+|1Sh;1YC^WVNP$xC9-f8Go(2Ke&W4a(hPzE0GE(LqwOmIc>m#J^gx^K4!&5sMkD;g{(kj8G?&0f zD}3PJ89=y%G@9W9Jpq7Ah@l-mFd_hO31e7<4+I1NE}@H6_&`Je;1U4a@PUK?;I<`L zhYv6W0QDrq8Z5kj7he$edHNl$r?eI>oZk~&2@}75{)iq(W5rx^MO~v7?pe`ID6LVYfm{i(SyI2@+Kaco1W7F+ zG-_09Bu7FDYPi+PnIxp9%iUT+Xw|6N(2xX9_{4wLFGtglEgl|^?AeZW*9a&J0EQCg z6h2WRLHq19X)sBcWB5dl1dFcGtkIGN)()STLyeQ40aJxfa3n1143LZgQ-@E)BrIwS zkj#SS5~1BQ>tx zta1h{Q9`XtXRCEVOOjCYy5*{4fMhrFRMf7~wCQK(x*TN!Qq|rN%8eO>fu~qTBG)yD>z6*In+na;aLZC79i^ zEX8KKQwyIckr1oJQbN`kpwUO?&URw^O>_66rfRVq6Vz{8$)Ve~OOD44SaK#vYOy#I zL@(A3UvgaOyPG2+rxtAq>@LVE{MdivmgLr=-5s$6SccDiUX#*VG$j<@zMjKUuNAJ* z9YvqK3Be~k{0o*6Mj!O>hgeC-ni8gHEqua4!qpERej05FSu4^It%px&N?36Y z$l+GPC$uE2Jp6n#Bou!mcB|n7IxFTP0k<4JQ7R!@fQNsfL_(GT4}VCm1hFvy4?j$f v1d#v_KaEs^+MhCXE=VM({4q~w2v@>iaI+>;rgGMV00000NkvXXu0mjf$UX!* delta 1153 zcmV-{1b+LR38M*+F@If2L_t(|ob8=4a@#NvMZYwe$rVz#NTG^F&Y;Sr#|KEANtMYF ze1uFYk82+w<1&@ckV2IU7b<*(R8Et%D2f1ffnAV<_Eokd(~JK^5THP6b$fUJ`r+dR zVq9NtSJ4+Zqx|~)_?mjndbfMR%k#c?L(VbW%+>(l5_FMdwST4`T!IeLjMn{MTtXQ+ z*{p{TxP&}%GdU3exCALBS&Rw*TmqNU41xjxmyklE?JEHI_WdThp|0D&Cu_%Ognxax zUA=|o68LC^5B%Q)2$zsXGkjnm0B{L0w8IBR1OP5!42$rAfB?WH^sx#bhzI~&0$>|H zkPrZzw*>3(0e^-7pq_+SgRlNRrvChhhxc2vTDWljPjn_s{QPkf-H^tNx#oJ=TZq{2kKD6wdN0@ z?nP2dh|(HW8pxFp8zl`Ju044hN|4kNLZe2tMsg&ipoUw`oJm4zxZJNLgjS8J4Gl@) zgin0^^4avX#qHfad$eQSH3G^4fKv%`3ZE#EpuKmRG?*mJF?=FNf<@P8)@VrsYllzF zp~lJgfPbmNCpZ!owFgL!0aJ%h#3U^07$6x1%_V$dOv0i@L6UjE+`=dN5*9TNNQF;y z-DbAo6P!!72n`AB4`ei$d-y>88mkFNeWEreYAzzEB4A136SX9m3s_?KL=6d5j{(jp zE?{EbX>83rA28~IT9jZBK45qZXi0)q_<-?2 zxCIH8;R8Mjnj9A}F)m(be3UC@#w)VyxF>M=mF8hI*e*XT<`W%z~K5f(KH(zsQ@ZubPh zZbh}EYpgX7P?-sHPBT!roaZf0TlBZdsioFkdEz44L-G4?ce4<1`tQJcNS;qj4K00@_6I*YZyB0N7 zi{&vv{kD}H`hB}(d)$B}dxE4Ei#-iJ#I;EE!y1? zOMqqg+~+kZtwmEp@$Kt5EcII98r@OR7dUWOYWRe;gy0h%{sBt~qYrxcr&vkI8hR3@ zXf1rgLc-B69)22a30X7J5Uqz#Xi8XdHpt;z!Y8yOtUUaDG$a&%B6hCf13EM2A_3yQql diff --git a/core/assets-raw/sprites/blocks/payload/small-deconstructor.png b/core/assets-raw/sprites/blocks/payload/small-deconstructor.png index f3d979408feaa99538b1d72e920a7d72e8194fb4..a35d68ca801347a6d5938a2076981cf79b04939c 100644 GIT binary patch delta 1670 zcmV;126_3s4Wtc_F@Ii3L_t(|ob6q^YFtSWEe%Qx3Y8cJlw2iZ^#cw!aA1R%wfzmo zcwsRP6>X%@II#l##Ij<;{fhx5a}&XU5`_YX+Ca4E>FGyRS9NvW8J|d+`{=53x~u#4 zbMMd3e?6R>48XyM=VSKz&*S} zQ-nuo+qm!lGcFeZ06?u1E^mjXhSz2cZrzrHRJ}F}f2b`9ttwhhsccoEC4Jox0Kkq2 z5(G+%AnoIR>Ow9YrJNd<3%CM+v%`aAf>(D7v~k1nDf-?VuKxKOeeW+B+t2Ur0br4| zt0v?{OMpYHB!A?{#~>$8?K`F3fwe95&YIGe6~HCtUd$!mK}&=dvs>B z8&kzDWeCQh$0FSy99y~Js8|AWiR5ya6>=qz^MzXyiUQP-@30LbV0_?+kQG3x6|xJc z6(QLSO~H?CrBbk3-N2_6H3fkA{D}S#0;|<{^P?&fR;wF! zIMOEHAr+3oPRort;LEdzH4!lFS&ZTw5wsyy2ZbWUdW@qX$dw8V`ILT^R+XzHq-}JW zGu2(6tbYT-&=doO{9Q(FtR&kE^&bqoVQa|m5l*O(sCNMHeM{(85O>6D3gkO*ZKZVV zk-h_b5hzAZiF}7z|ERsHlDd%p!i26-eDGN_fwD~c*^8EwDj-tc6bay zEkxJ`@*P_E=NdInb%3M@+eE&Dqr1GV#l@0)IFbCBPZ7qUNNK10G(gDDa2BMpxtwe|sQQL9XGo9MuSJH==G;+C6 zGKXrVQ-f{-U>uhqM=PCLbP=F;u8X0UOQwQ z_LO*x&W;YJQ(y+?FTQ^(-opVkr?rmhSn_?uc-$xfvAHa*S5KBuQ_Ooeb+J5}ZiWKz zi0mx_2Brnj`V#I5vjS-K1@(qW0a_4dReuC?0%(l~Sb-@4v_`}%!IS{I2vY)Rbck8& z9W^BYKwE;Wkq=-{003KS#9G6o001`Dh-tvA001(?StcLAxBvh=0flRIYR9ty!73y>aMml(|FrU8KCF&To!y~gZU+JL@+xuPI7SF^7KU0%}|U866E)U*_m6)d^_K2hOI$UV z(qdQ67fXQFe)?LWKr`f=9Uc@*!hf0o;T}Q163KT(ymwq}g&P0P4iDf(z@xw5@hJph zHfX{a7yi91ko3=wDl-6C@^imU6)pU8BFtKlkGVD#wDj-8^O61?aCtjC#W2f#EE1sj zcYb$YwOE@ZfM0n~h@GMcwf<2>KnuX#s$fbYaBZcCu=n5lx5-LieEBx}@P9V$oY*3x z{QEJzy>qezU^Z}i^V{!r7VQ{v(IYB=BOkLij3R>d+z%jcqgyMM5@90*`8nS`EU|@g ztz+C}u(d;{rBE~+pBDGbj`0_E?PL$}@mKnBMCe7ngR}^))L&nZNfEHzp<6+<;ixzH zoOi`+_kB#ApFlZ9gY+Fh6@S43`P_H?hphkpkAm1V93x|9F!da34_&NbYJ|+HZ zoTy!6bMA1{;rLXp1o$tGfl81D`P65r4T93ive-kh$>RZB5wys!d4C7D#S?Oa5rGtf zFer_%QFdvUI?IxBu$rX(4!Lk7Ix~(tyct6KL~RUee9V;uF#)8>chEXfn*vD@$Y;n% z8AL%VA~^_89K^u+;fEvD$+_H9IyBJQ#;_!)2`~ln9W+Hy5nxK>J7|gUKV0#;o%~qb Qo&W#<07*qoM6N<$f)wr-$^ZZW delta 1695 zcmV;Q24MN54ZIDIF@JVRL_t(|ob6q^Zd*qXJt7RKaU&pw3l$bXH3XCoNF_L33Kl`2 zPjD9}pO7kbf;55ZR4Q4d3J86J46qRaxnSYKfEqWdoI+S(dAX07o!QyFlusq`lDjkK z?9T4p=fU5X|9pA%`WO<-AFh+n7l-Gf^jpEgugPk)#>WpEaeqQ7U)B;*BafPX`%CZx!xASF&|np$a4ZHuK@QrnUOxXfI_Qt}1r)@acW<g&mU_*4H5Q%e1{tTxqnX0QwY)&VV}r%(DcvmQEqiZha!At zuJ_qT;(e6(cXf1vPl=Tj*+$rEVeRzv%;ZhkDj$G0nM3LY)fT}gq$W95`2h6UK=Opl zt_V8eCPYN(z+KCHN~d4h?*W=fl|s!DYL!n3nh8L0T!S2|d`i(ofYzlhgjO~+4M92N z;(s%xN7H-PxQPH7V@RAHP0wRi#R9zj zkhUFB0cNu)X=$CN2omzC-_ab?q1cn-F}ON*?5A0Zxh zYCveARqfrAIh0iM)?HmHk6m{|0U434MSq~6YXPj@gj=Fp0j$P?TBAz=Y7o||2;B)_ zH6PFmx)Q)@Myw}vCBSn;R{~fJi1ju)+LZu6U4nWeALvj3pszh*wb7*jKp%U=EYPh0 zfDUmzlMi$*03aiN6kKlleJFLtU`|HOQwt1MDaBbC8J8?aDaK z$@QL>CwAQprHG(GeoJ(_GR_*KTNx*X)pEg}mn8y?Ly*-L*Pgf1l6S}qH|t$084x;~ zq1I?<&3uNNw5dC0NHw7Lk?vMoTz@UM(o%QLXKR4fdHPnNz%t}q+}~wu!j=HTGlJec z@G^8&ymefyg%bZR?(gv3fJcAB<5LKt9MD8DZus}UK+``zs!RY~@>8FU6*c^GB1~$K zPkA;L)bwxuaLs=YSR9@|#ju{oSTw-#@9OBJXtOp;0Kf6z5IaT@O8w)CKz|lMdS1ks zM3CCb5n<=#Tpyp`zDxdiA5TuKQBeN)KK?9P11JYLz4>9BcSKqv6+MCiIPxib!#E=J zUitxj8{J;9mVsLxg+<2O2biW@+E17Y=8HCjNPBWxkZEZ9>5i$2lAz9`aXmT*iZ!S6(-~mG|ZHW z)Npn$H*IU!m@1sbAxQJezUPWuVI^H<7y?CvFu&?ePq`p@_h~$}p6X|M`4#gJt5kOU7oK7B_0YOw16z#0~qD`P9wifbz;X>Gb9h z);DTXP~u~%Ca4LZO}>NGjoKV&icl1SGz{XP7LgJRZycl`6pl<6=Spwsut04ahc&@W pfH9EoU@3x$0AnKG!5B(}{{cv|#WL8(B6g|4N>T;nqf`8$9m(<@rT9DY^wk`N^rp#rZ`H(nYD6d1?7Y$*Dlm#LArf#1!4+ Z{JgT%N}!}97RjRg(vsB8-+4|l0RYU{A_@Qi delta 46 zcmaDQe?Xpz;pRrB8$7Z+DMk5tsk+Ijc_pbu4E*K!ML8+D1x5MEsl~ requests = new IntMap<>(); - - - /** @return the next target ID to use as a unique path identifier. */ - public int nextTargetId(){ - return lastTargetId ++; - } + ObjectMap requests = new ObjectMap<>(); public ControlPathfinder(){ Events.on(WorldLoadEvent.class, event -> { @@ -41,6 +38,16 @@ public class ControlPathfinder implements Runnable{ Events.on(ResetEvent.class, event -> stop()); } + + /** @return the next target ID to use as a unique path identifier. */ + public int nextTargetId(){ + return lastTargetId ++; + } + + public void getPathPosition(Unit unit, int pathId, Vec2 destination){ + + } + /** Starts or restarts the pathfinding thread. */ private void start(){ stop(); @@ -56,6 +63,15 @@ public class ControlPathfinder implements Runnable{ requests.clear(); } + //distance heuristic: manhattan + private static float dstCost(float x, float y, float x2, float y2){ + return Math.abs(x - x2) + Math.abs(x2 - y2); + } + + private static float tileCost(Tile a, Tile b){ + return 1f; + } + @Override public void run(){ while(true){ @@ -88,10 +104,34 @@ public class ControlPathfinder implements Runnable{ } class PathRequest{ - public int lastRequestFrame; + GridBits closed; + PQueue queue; - public void update(long maxUpdateNs){ + //TODO how will costs be computed? where will they be stored...? + int lastId; + int curId; + int lastFrame; + + PathRequest(){ + clear(); + + lastId = curId; + } + + void update(long maxUpdateNs){ + if(curId != lastId){ + clear(); + } + + + } + + void clear(){ + //TODO + + closed = new GridBits(world.width(), world.height()); + queue = new PQueue<>(16, (a, b) -> 0); } } } diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index 39953aa7f3..7bafe3ad4e 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -14,15 +14,11 @@ public class CommandAI extends AIController{ updateVisuals(); updateTargeting(); - //TODO - if(attackTarget != null){ if(targetPos == null) targetPos = new Vec2(); targetPos.set(attackTarget); } - - if(targetPos != null){ moveTo(targetPos, attackTarget != null ? unit.type.range - 10f : 0f); diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index e817555b52..38b21406bd 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -145,7 +145,8 @@ public class Blocks{ droneCenter, //payloads - payloadConveyor, payloadRouter, payloadPropulsionTower, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader, + payloadConveyor, payloadRouter, reinforcedPayloadConveyor, reinforcedPayloadRouter, payloadPropulsionTower, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader, + //logic message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank, @@ -3550,12 +3551,26 @@ public class Blocks{ //region payloads payloadConveyor = new PayloadConveyor("payload-conveyor"){{ - requirements(Category.units, with(Items.graphite, 10)); + requirements(Category.units, with(Items.graphite, 10, Items.copper, 10)); canOverdrive = false; }}; payloadRouter = new PayloadRouter("payload-router"){{ - requirements(Category.units, with(Items.graphite, 15)); + requirements(Category.units, with(Items.graphite, 15, Items.copper, 10)); + canOverdrive = false; + }}; + + reinforcedPayloadConveyor = new PayloadConveyor("reinforced-payload-conveyor"){{ + requirements(Category.units, with(Items.tungsten, 10)); + moveTime = 35f; + canOverdrive = false; + health = 800; + }}; + + reinforcedPayloadRouter = new PayloadRouter("reinforced-payload-router"){{ + requirements(Category.units, with(Items.tungsten, 15)); + moveTime = 35f; + health = 800; canOverdrive = false; }}; @@ -3570,7 +3585,7 @@ public class Blocks{ }}; smallDeconstructor = new PayloadDeconstructor("small-deconstructor"){{ - requirements(Category.units, with(Items.thorium, 80, Items.silicon, 80, Items.graphite, 80)); + requirements(Category.units, with(Items.beryllium, 100, Items.silicon, 100, Items.oxide, 50, Items.graphite, 80)); itemCapacity = 100; consumes.power(1f); size = 3; @@ -3579,7 +3594,7 @@ public class Blocks{ //TODO consider usefulness and applicability to serpulo deconstructor = new PayloadDeconstructor("deconstructor"){{ - requirements(Category.units, with(Items.thorium, 250, Items.silicon, 200, Items.graphite, 250)); + requirements(Category.units, with(Items.beryllium, 250, Items.oxide, 100, Items.silicon, 250, Items.carbide, 250)); itemCapacity = 250; consumes.power(3f); size = 5; @@ -3588,7 +3603,7 @@ public class Blocks{ //TODO move completely to erekir tech tree? constructor = new Constructor("constructor"){{ - requirements(Category.units, with(Items.silicon, 80, Items.graphite, 120)); + requirements(Category.units, with(Items.silicon, 100, Items.beryllium, 150, Items.tungsten, 80)); hasPower = true; consumes.power(2f); size = 3; @@ -3596,7 +3611,7 @@ public class Blocks{ //yes this block is pretty much useless largeConstructor = new Constructor("large-constructor"){{ - requirements(Category.units, with(Items.silicon, 150, Items.graphite, 150, Items.phaseFabric, 40)); + requirements(Category.units, with(Items.silicon, 150, Items.oxide, 150, Items.tungsten, 200, Items.phaseFabric, 40)); hasPower = true; consumes.power(2f); maxBlockSize = 4; diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index f41330321c..41a399fd4b 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1164,6 +1164,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, if(value instanceof Item) type = Item.class; if(value instanceof Block) type = Block.class; if(value instanceof Liquid) type = Liquid.class; + if(value instanceof UnitType) type = UnitType.class; if(builder != null && builder.isPlayer()){ lastAccessed = builder.getPlayer().name; diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 03237f17f6..f667ba50c6 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -1249,10 +1249,6 @@ public class UnitType extends UnlockableContent{ } public void applyOutlineColor(Unit unit){ - if(unit.isBoss()){ - Draw.mixcol(unit.team.color, Mathf.absin(7f, 1f)); - } - if(unit.drownTime > 0 && unit.lastDrownFloor != null){ Draw.color(Color.white, Tmp.c1.set(unit.lastDrownFloor.mapColor).mul(0.8f), unit.drownTime * 0.9f); } diff --git a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java index 6880b6662a..5169652282 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java @@ -15,7 +15,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class PayloadConveyor extends Block{ - public float moveTime = 40f, moveForce = 201f; + public float moveTime = 45f, moveForce = 201f; public @Load("@-top") TextureRegion topRegion; public @Load("@-edge") TextureRegion edgeRegion; public Interp interp = Interp.pow5;