From 36aa56f25174b858b341f1e838cc7358c122c02a Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 29 Jun 2022 17:37:32 -0400 Subject: [PATCH] New WIP missile turret --- .../turrets/scathe/scathe-blade-heat.png | Bin 0 -> 2204 bytes .../blocks/turrets/scathe/scathe-blade-l.png | Bin 0 -> 1072 bytes .../blocks/turrets/scathe/scathe-blade-r.png | Bin 0 -> 1046 bytes .../blocks/turrets/scathe/scathe-mid-heat.png | Bin 0 -> 2089 bytes .../blocks/turrets/scathe/scathe-mid.png | Bin 0 -> 1357 bytes .../blocks/turrets/scathe/scathe-preview.png | Bin 0 -> 4866 bytes .../turrets/scathe/scathe-side-heat.png | Bin 0 -> 1185 bytes .../blocks/turrets/scathe/scathe-side-l.png | Bin 0 -> 534 bytes .../blocks/turrets/scathe/scathe-side-r.png | Bin 0 -> 502 bytes .../units/weapons/scathe-missile-cell.png | Bin 0 -> 236 bytes .../sprites/units/weapons/scathe-missile.png | Bin 0 -> 1158 bytes core/assets/icons/icons.properties | 2 + core/assets/logicids.dat | Bin 4541 -> 4549 bytes core/src/mindustry/ai/types/MissileAI.java | 3 +- core/src/mindustry/content/Blocks.java | 210 +++++++++++++++--- core/src/mindustry/content/Fx.java | 66 +++++- .../entities/abilities/MoveEffectAbility.java | 4 +- .../mindustry/entities/bullet/BulletType.java | 15 +- .../src/mindustry/entities/comp/UnitComp.java | 4 +- .../mindustry/entities/part/RegionPart.java | 13 +- core/src/mindustry/type/UnitType.java | 2 + core/src/mindustry/ui/dialogs/ModsDialog.java | 10 +- .../world/blocks/defense/turrets/Turret.java | 3 - core/src/mindustry/world/draw/DrawTurret.java | 2 +- 24 files changed, 282 insertions(+), 52 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-heat.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-l.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-r.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-mid-heat.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-mid.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-preview.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-heat.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-l.png create mode 100644 core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-r.png create mode 100644 core/assets-raw/sprites/units/weapons/scathe-missile-cell.png create mode 100644 core/assets-raw/sprites/units/weapons/scathe-missile.png diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-heat.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..2e17525b3ceea6c13b32c11e1a0f49ddbd5e9dcb GIT binary patch literal 2204 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z!B!@ z;uumf=k46gU}<-Ow)s;J#xP0W6o~IUz4FihdJ*-)8fK$*UN;Uk`KnvSQr=G4WvY|* z_+P!krFe46@453{CWnb8t!oj`T5xLqs#RJ#uimd*SKpb@bml{OgI|qIgZ6_-telQa zGng;_C~tV0Q)2KqKIL)IJ*5c@QEJBjxHj;WG@2%GN-(7#NPi$A!Em^;D(s`_|%u9t>}T5?}wdy1+b-X+M*H1MdTw8_K$z`&7<@G zW*d9w>$A^&r2I^YiE}}$)|>woqQ({cHx5o~(AD9J=wGkN`oN7}vE|w#X3hn%cew8y zz4OOSCe}wl^l|$B=j?x~`kr!0xie*mi#O!6O*d@TPfmO&v^d*-$&m{lbqXy4t5)sG z`o%wm;nw0)Zp$U+@s?bF&%_at_dw={(DBSal{b#bYcighzK8F@p${MQ6O8|BPvd`) zte7P4Ei$)VVBM^H+*7jqGp1c)4iRq47ug*Va^dizwzWTMcKVpK**I{gC??GOuODlt zB6vqJSM2)Z2-RF6)rQ-CXZ}2GmB0V9{BbF-aYmeA$*HqRdJ>!u%qE}xQL}u1+s+T| z5pV7vcG`bw>F;0f`~PnKq`Jsdr9pa9=+505c`Rq4x-XA@_JL28{$Ul|MDhwWM`?``ny8gG{{CtY#o*LKV{G?;G zEt0+x@^{~{HAqE+(}n0AQQ$LBG9 zz8SAp-`C*0M&e8B6t-y$dCacu=hf2wq#xj3bLID(E%(Yj7v70omj2H!*;kRhP$r2< z;zE!tgGz(E;`%hQ1A3<<6`6c zz4LeH@_$x4`=|Ry-TnBIjZfLmyl|G%&uE`o7(N1njF@ zuh`wI$c$iG;ePMoW-qNx|(f8=}qq($vqx6=jgU+#aOy~RX_@k(+`d%t*Y z-IX8WGd|kRzo5*Sz&iWu?Vk0@cO*Cy%9fS>=;8kO>F&R9H|M=~ewA#qA%sye$$8v+m)oT+@Wbh|yFHPiJ5P9cA_>w*Qr1ziCSTTKf zt$Cez@$Y>tKQ;wb%{n&8N$9}Y6Q{RUYL+*wy{o=t=KJ*jdNcF>sJijq&hl?yF|hu* zD^4w~X0P0_*P3G2cc1=#_qV8K%bb)ydjgk~sx(wRId=Z_x8@4okA-%he}8-)*%SYb z<43YA?{3v6djEK|Z~VAf$A9tEynl>oH$rvR?LYV9>Hg3@H|tiA*2KBzKiQ?-;M2@D zKhU$aMYT&Sr~LiQ!>@bh>uatpWA|h*4hjwBQ2e1A>$kD$uY1rPzG-V-Ca^^vY}x3! zNusNV~;@#KhwT#+5 zVXU9`>@EL4?d9!FX#wZ{)IKo%!2Ur<_+Yip`hvE*u4^_XKN51V-J^JgzbG$R@h;yr zfujB`=kzE0{X6t!)F*n7{#XBCt=43Iqv*rTEu1+#oD1ac32kdz`*U}M`-Nnk zefO2-{waLyf9l24t4{Yr_8m|A<9+7Gdc(ju0=EyB+SEAu?09)u@0!Fe@2bP-sTggFuV%9_vNIp_4glk8;#HY_-Wh3zNByd_ZbiGCpLYU zdH>ejLn;kbXKo3Zc`GhIqxH>muG9Uf{TV;6Z4`2_P0Qt+eQZbCL}ed_+Dn}auJ!T@ zImm(pkA9s#*QvU&;^~HuJ@-{aSnu>i&Ne;8cG2eccex7b^|hNmH|z@kuz&J_7lsBN ztaI-CNZs~cSFJ|PF1I;viCdN z6y8Othn8Oji&pt$aej_-Fpr5l|9#y;;heVjiSPFL{Ma%LWKclAP5J!$r=Ic{&r4^} z_jow>JL|6-$t91?r?;F}0i`+VoykGo5&b0#HXm|%xb9!emmE509`65Z z(TSaJzo{!SUQyS7SjE1f{%^GTzGueIKG{#Yv^(!lYh7qgCriNO9pXEV@Njtw9KYcv za7oQ@|MmM$W|h|sr+-fW@7h((Ql0;x=+9SHwWeaRJtuebaXw%Zxz9a8{?iASi>loB zp2W7ZTwsXY{^7)4hWyPBTLqjr6kDi9T$K6G;P#;E&Z0>cd<+Z>44$rjF6*2UngD?D BCFTGC literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-l.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-l.png new file mode 100644 index 0000000000000000000000000000000000000000..473e136ddc0ba08653509fa52210aedf7d253fdd GIT binary patch literal 1072 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&!2HV7 z#WAE}&fB~8K_QL;4Ik^KwSQm`Dq>M`;7n{wWd#P-t%v=q+#DEsquS?x>1tq*%HXwsDagnea!Ic4(OB=L!Z2%!n?UXlC6)_1=1m=k#T6Mu ziv^$X{r{1-^i!4Bp7Q^F+#mja_<6lw{t;h%i+aPZvk#xYGOZD03NXF(!Ii_|EJ#m7 zo)S-d3&XAxlK-9_oOim4fzjf$Y+aHpBcp|uY+aHhBcsJi*}5cAMn(ziebJ`;_8U7I z7OJpxH>Q}gTjYxu`DB_jtnEq5kbR(?gj>?&m9d6O`H1~ z7}ydd85wyFX)!TzWZbT6wR=^p!JY_i-@p$ddi1)(Z}3aFkBC!O!rG zx#2H^z&B=x8~hB3_6#i$jwEBrwCcBi)ZX#l5i~vQzr(zsKo?8}NP#JXSzt;)3`7}N zoPMZoDkyNEPqVjyf$73N;{_^AOdN~CSy%)-`fodPC`i2L;80LF&%trP^W|E_IKh^^ zr&M-*-Sw_LUp-yi*M3)R#NG7zx9exm-~9P0=Yut0|1G$q?)nK+i2G5K-aR9q@p;Ba literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-r.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-blade-r.png new file mode 100644 index 0000000000000000000000000000000000000000..7547140cde7a671481ea89c4ecd8ad46c5c70eb0 GIT binary patch literal 1046 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-mid.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-mid.png new file mode 100644 index 0000000000000000000000000000000000000000..c703ef84ca8e6c37acf421cd28d976f688405cb0 GIT binary patch literal 1357 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z{>9F z;uumf=j~kUqALy}uKIdRVF$S0T<}&XVpB_Ej$?d!L6NcXu%?oenS+btvlHG5Cfp15 zaLiueDE8}%|Eu3|_k}C%=FOT_{pHHtN%I&KTLhdq@DdS^B46uoFkgRvPqmDlot~cf5p@Ta~Yyr($58t0%Ad?|bw3bFTsmX1RSgCmrZv_n`Mcug(@VKF ziTsA8$EMG(w+OBvRY%Tcw`1kcC6Os<6A8%#Q)LDCLsn>(Xbu1l`o8J01<*|4~ zu7B^@q{ni?GU9SK%M~V_-gn8GmO+PekPF_pkW3 z^ZERGu~^G9UD}Lo;UBL|dGP1+{s((KAGkHF^xl!>VZdYmz>`UwX-W*^oNjT>Gu#)H z{xq<2`fy(``qNO#d4}tNK;3~&ENQF)r4tzDK8|XTlC{|zuktFaVbLKxOSMmgGFO!-}+V- z)rZDgXDk+E*r41v{R5*BV}lXrw;i=UCrfK{9x}HuG3*hl;FebqWq2_8K=KcUjSLL^ zEOCd~8=kM-e?ZDxXw6*4KfliIK7L7b&x{W@o#UEzF|82{R@}C)dI!X^+nyJke>5;N zHvAI$B4qc#g<-)w7TZ>S3n2!L=?k`hU}WCh5VCKNRp%_(mi@ugO82(%TdZbioVGS; z?ZY631-`2zx@U+S$XXrYmci1&Yq}?&pEKxi|I`LgF)7A|uK~x`=W9B?o3>v}FZc(; zOojtBD^{NG_nf$3%bVqP_l2w&8@}l7UB<%jaFs_KOBc3*Z4X6kXiAKkR{!*jXK$!-lhKka+|m+APKR&bJE z(|X6LY3qcw9tlnjQJWiPMa+JG-qD&{!r1(jKj;6aSHB+l*%&|H=2r=W+`gl8S*j|H z_b!d*ls5=sWZJ3Scp&D-WtqLb`%heXbS1w-ld)k(GUMaxL5KKzR3o^|zD6(zKVxBd zwC&G_d2>E6J2uTo&~4*q2#M9tiaQgyd$If3>c4L<9#;^Xr7yHX@nG27m@JP2B6bcM z3;}8fukEezQb_>E)QQOn>)re;g$&yG1-KcOcy1^cUoXNLahUxCE5jp|jH`!q-I$(z hXa$v5F3bNg^0}x_{S#H=%D}+D;OXk;vd$@?2>>pSO~L>G literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-preview.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..458cd8b1438008ed31d974e9869bb80af91db44e GIT binary patch literal 4866 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 JtaD0e0stWDmrMWv literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-heat.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..ab062426dfafe23c2a1987b146b859e95ab96e2c GIT binary patch literal 1185 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z!L50 z;uumf=k1+re`$A-_K)d1ZYpwmbp)-PT2*=Z{r|a9UzKhx>0mMVVN_fAE#w{*&{3HMDIWTmC*@^^3rH1clv zc}GE_!S8C+_lCpIZYfLE&kWa0{k(F2GJ{n}_FZ+UzY-N}HmrONq6M6L*w=Lkta<-C znr(sc;korLCciX4h<*^7!EAmY`a%E0k3u{4>a(!_|7O3Y{@jJq)a{J`}??1$iwz873#E}=7olbf~}v#>4Dmu%4a zAIVt9;Mbw|z|zoeM%nxFwgU`bRGAIbrT&Oi`1UaSbvQnlv++;85lFe^dwUhBUoQ(} z`TGTOZ<+lmu}#osVOwA?+0^{dDo5_N>%!enoC4Qwy%u!p7(+?Y3`U>zdrzMKox}gn z?vK?5wOt)gKh(r#uVq^xymU%b_F9+ZXIm3@A4wNTJDWW<e=||@L@A{Z`?h;=zN72y_tQ+$_ zbj{E`(^+_U9^(t|X`fj?@cqc%q1TXYw~l3Jx`BEc*YU%jWemiaFHGk-AX?xz<+Jgu z()w-87tTo(Z7Xmv4mMz@J$dmDZ{hX*vg?YK7`%@$_}n$k-oW%F#p20EMW+oaO&b*6 z{n7bv={#fA~?BJ7@iWmW2M3o`)(gPZ<{WvUVLGh zydxok?HEHz=JmV;>!ZzY86W5de!DGt*jMu?gH2LyKwn4K#jviuQLA4w$nMHF)>vMb z8$Pj`(K6XWv1vm;x8vQLTP3Fi?>2p`bRqWm@p$1xi!=+%6oy}y^4MYpZtu>QnBG*Z zudv!-o`PNC97CJsH+jFKcYe{gv^EAJcAx1Fx*!<2yXE_B^hW>*p zERp}#H`;gVB{f^rJIA%*_3C7^2jNF-toZ+a(qR6;Vf*Cu sW1a)b-&ErjG_hoLtoeV^zB~8hx3B#r_RFM=fq{X+)78&qol`;+0JC=&ga7~l literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-l.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-l.png new file mode 100644 index 0000000000000000000000000000000000000000..134fff35e78b68b3ed5e8410d07793307ab012ee GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z<9ya z#WAE}&f7bueGfZ`I0Vj)O7P?iVesZ!z+@-NAgW-sfMHqyqw0p1xHG4OI5*lF7dG90 zBBQz5B5+B0s^!dzSs;TM5TJqK*8hJDYhLZj`|@-4?&DLL_wBd)FZ21|H!F+l+hS{9 zX}rEHcZZ`(mGf)ge4$1LtstRB zh9(O;OJA$JV3y?nTtW^CyE_~h4xW*1WY9`8HCXU``R~a0*EUH>T(~3HBY42+sat~K z3MXelo>-139xH`nSA~WH&p?Xr B&7S}O literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-r.png b/core/assets-raw/sprites/blocks/turrets/scathe/scathe-side-r.png new file mode 100644 index 0000000000000000000000000000000000000000..37fd18e6e3edc82b7925c23512d38a1845333690 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z_`KF z#WAE}&f7a1eGfZ`G$ba7Y0PZm^ZMo>si^Go#*tGtIN*@pLWgOKCfs;`j_=Oynt1V( zojQBtC(bQ?_lSuB1vIee{r}CPQT+eIj=QzBwZ*?*&v<^;%I5lN)^nZ5Y}Q`8{c>>~ z$AaLC94r$~{JZ{tiU$jm$D)!S%_})rCOEwPpv-b%$BPf<<)!oW8`^w%>;H>wP-9{= zSyl3*`4R`qg$1`B@_Q)>I3z#gs~6~XVCZydx9@OKXi)KLx1Z7Fz>w|-LUSYbUf=7_ zAiJ{Dfnly@uLFau7Kqj5rqJLgv+I7pi$X)+6_BodcJ@xkWxEpItW;oBDeB^2nQ-Qk zAjg8_FlOPZ>e|RJ_oKp?g`=#R44E=QGFil$tx9y7lEs_En$MjG668?WsH!C3P*kie z;P6;Uyt!CugR_Uw#Qz+Aww5&+&jlD&jMSTwZy)1Om^q8%*f$;_2PaiQpIiymh9ydZ zE_w>A6K+JXT%13Nb;6y69A4K1SuQl*<@i^mIvR~0|NtNage(c!@6@aFBupZ zmU+53hE&XXd*!sRv!Q^)Meao+t33XD&1#5}tM+gb$!ueNzDDIxK$#`K6$$m eBgoQ*{oh#k9C7z{=M;?t@jYGrT-G@yGywqCDphy@ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/weapons/scathe-missile.png b/core/assets-raw/sprites/units/weapons/scathe-missile.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a25eaeda2b0acf2ed5c892818d3d4c899d3def GIT binary patch literal 1158 zcmeAS@N?(olHy`uVBq!ia0y~yV6b9fV2I~nV_;y|*>vR~0|NtNage(c!@6@aFBuqE z96VhdLn`LHo$cEd>?m;D`=e0P=^d2|+5-v}8Z63VEpJ|}=zcEzD!Il09b!GnbL3l-U&vaU)G3vojk+j5N8v<+WT)zOr}TxofZA zzW8czX4lVm(=G}L{f?fpt6^J1)xoyrB8RF2ZB1SbixLkzm^Qi}x;N`nQMQBgt_fE} zJ+~*VS}k~Y;_ic+zCJ!Q?QFC8n$?DD_AgD?$ahls+F60CN0K*$NWWlxT_%ya$<489 zn)LN$b$jobHBUGBc+d3e-aQp85*IC6t^|572)sM-bZg&L-WagV(hyDxIBMuP>eO^4AomCD~z7^_JIlW?tO<^U<>J z6TDx&&)KISe39iW?-#jfufKsC79C#kUE$W{`8)P_$m#z1^<{Rhc=YS98i#AXZ`!jf zXW#k8rPl)NEQ}hLF>IS1S{%#W(&V#k?S`ximo~CZ-9#lzI=piG{*_6*w^7KZ;> z55G#ZFiE%FeD~|{z8z1mK0Vj&a<-?=B3?!$Nvrtw*{tvn^Y>Jr;Zs>F+a`IMUHw|j zlWS*r0~i??=Ip64tvcJNdwq&o)~V!$3XCknfiyL1sdNr|i8gHhJ=bE*%rM>v=AD*RJ}kVf_X%ZFST8cg~&o zGePtIt<;8V%*YIrM-FW_es9mDh-!co_-mV0y>xOdoXKES;3Ay+&$Fi40@(tt|&uIT*Ij+b}~{ zcg>F*)9x+Ks$280aB-~Hl)$swCBGJUNp-(2;7PE5zVTl~v-O&?T*jpnJVkWA?o(fL zJ6FnVs2U_U6gVcEGAJPyAvO#5t^UEJRk zR4rFLhh3xc%=Gm~_sMW=6W#pFV9}gsuJ&2EdRm6dJ~gq1a;s(OHatGV5q#EA%;!qf zx-;hYeg@~AWsc$BEwj@{V$nPI-FzD+SNRB;a7mU&C7xce=j~RJBKs&|u_@baeO6Vj zG_laq$gehC$$t3GgB^~Qx3yDeH3T2@Z2q)u`suGXz4dYf?tPmS^Y3(+ Mathf.sin(9f, 0.2f) * p.warmup); + mirror = false; + under = true; + moveY = -5f; + }}, new RegionPart("-missile"){{ + progress = PartProgress.reload.curve(Interp.pow2In); + + colorTo = new Color(1f, 1f, 1f, 0f); + color = Color.white; + mixColorTo = Pal.accent; + mixColor = new Color(1f, 1f, 1f, 0f); + outline = false; + under = true; + + layerOffset = -0.01f; + + moves.add(new PartMove(PartProgress.warmup.inv(), 0f, -4f, 0f)); + }}); + }}; + + recoil = 0.5f; + + coolantMultiplier = 6f; + + minWarmup = 0.94f; + shootWarmupSpeed = 0.03f; + targetAir = false; + + shake = 6f; + ammoPerShot = 30; + maxAmmo = 30; + shootY = -1; + outlineColor = Pal.darkOutline; + size = 4; + envEnabled |= Env.space; + reload = 600f; + range = 1350; + shootCone = 1f; + scaledHealth = 220; + rotateSpeed = 0.9f; + researchCostMultiplier = 0.05f; + + coolant = consume(new ConsumeLiquid(Liquids.water, 15f / 60f)); + limitRange(); + }}; + //TODO 3 more turrets. //endregion diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index ef48d53fcd..06bbd39026 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -436,12 +436,64 @@ public class Fx{ float rad = fout * ((2f + intensity) * 2.35f); Fill.circle(e.x + x, e.y + y, rad); - Drawf.light(e.x + x, e.y + y, rad * 2.5f, Pal.berylShot, 0.5f); + Drawf.light(e.x + x, e.y + y, rad * 2.5f, b.color, 0.5f); }); }); } }), + missileTrailSmoke = new Effect(180f, 300f, b -> { + float intensity = 2f; + + color(b.color, 0.7f); + for(int i = 0; i < 4; i++){ + rand.setSeed(b.id*2 + i); + float lenScl = rand.random(0.5f, 1f); + int fi = i; + b.scaled(b.lifetime * lenScl, e -> { + randLenVectors(e.id + fi - 1, e.fin(Interp.pow10Out), (int)(2.9f * intensity), 13f * intensity, (x, y, in, out) -> { + float fout = e.fout(Interp.pow5Out) * rand.random(0.5f, 1f); + float rad = fout * ((2f + intensity) * 2.35f); + + Fill.circle(e.x + x, e.y + y, rad); + Drawf.light(e.x + x, e.y + y, rad * 2.5f, b.color, 0.5f); + }); + }); + } + }).layer(Layer.bullet - 1f), + + scatheExplosion = new Effect(60f, 160f, e -> { + color(e.color); + stroke(e.fout() * 5f); + float circleRad = 6f + e.finpow() * 60f; + Lines.circle(e.x, e.y, circleRad); + + rand.setSeed(e.id); + for(int i = 0; i < 16; i++){ + float angle = rand.random(360f); + float lenRand = rand.random(0.5f, 1f); + Tmp.v1.trns(angle, circleRad); + + for(int s : Mathf.signs){ + Drawf.tri(e.x + Tmp.v1.x, e.y + Tmp.v1.y, e.foutpow() * 40f, e.fout() * 30f * lenRand + 6f, angle + 90f + s * 90f); + } + } + }), + + scatheLight = new Effect(60f, 160f, e -> { + float circleRad = 6f + e.finpow() * 60f; + + color(e.color, e.foutpow()); + Fill.circle(e.x, e.y, circleRad); + }).layer(Layer.bullet + 2f), + + scatheSlash = new Effect(40f, 160f, e -> { + Draw.color(e.color); + for(int s : Mathf.signs){ + Drawf.tri(e.x, e.y, e.fout() * 25f, e.foutpow() * 66f + 6f, e.rotation + s * 90f); + } + }), + dynamicSpikes = new Effect(40f, 100f, e -> { color(e.color); stroke(e.fout() * 2f); @@ -1559,6 +1611,18 @@ public class Fx{ } }), + shootSmokeMissile = new Effect(130f, 300f, e -> { + color(Pal.redLight); + alpha(0.5f); + rand.setSeed(e.id); + for(int i = 0; i < 35; i++){ + v.trns(e.rotation + rand.range(21f), rand.random(e.finpow() * 90f)).add(rand.range(3f), rand.range(3f)); + e.scaled(e.lifetime * rand.random(0.2f, 1f), b -> { + Fill.circle(e.x + v.x, e.y + v.y, b.fout() * 9f + 0.3f); + }); + } + }), + regenParticle = new Effect(100f, e -> { color(Pal.regen); diff --git a/core/src/mindustry/entities/abilities/MoveEffectAbility.java b/core/src/mindustry/entities/abilities/MoveEffectAbility.java index 87ef2633a5..049a8dd086 100644 --- a/core/src/mindustry/entities/abilities/MoveEffectAbility.java +++ b/core/src/mindustry/entities/abilities/MoveEffectAbility.java @@ -9,7 +9,7 @@ import mindustry.gen.*; public class MoveEffectAbility extends Ability{ public float minVelocity = 0.08f; public float interval = 3f; - public float x, y; + public float x, y, rotation; public boolean rotateEffect = false; public float effectParam = 3f; public boolean teamColor = false; @@ -37,7 +37,7 @@ public class MoveEffectAbility extends Ability{ if(unit.vel.len2() >= minVelocity * minVelocity && (counter >= interval)){ Tmp.v1.trns(unit.rotation - 90f, x, y); counter %= interval; - effect.at(Tmp.v1.x + unit.x, Tmp.v1.y + unit.y, rotateEffect ? unit.rotation : effectParam, teamColor ? unit.team.color : color, parentizeEffects ? unit : null); + effect.at(Tmp.v1.x + unit.x, Tmp.v1.y + unit.y, (rotateEffect ? unit.rotation : effectParam) + rotation, teamColor ? unit.team.color : color, parentizeEffects ? unit : null); } } } diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 8ef0d5dfb2..7c43f734bd 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -654,10 +654,19 @@ public class BulletType extends Content implements Cloneable{ spawned.set(x, y); spawned.rotation = angle; //immediately spawn at top speed, since it was launched - spawned.vel.trns(angle, spawnUnit.speed); + if(spawnUnit.missileAccelTime <= 0f){ + spawned.vel.trns(angle, spawnUnit.speed); + } //assign unit owner - if(spawned.controller() instanceof MissileAI ai && owner instanceof Unit unit){ - ai.shooter = unit; + if(spawned.controller() instanceof MissileAI ai){ + if(owner instanceof Unit unit){ + ai.shooter = unit; + } + + if(owner instanceof ControlBlock control){ + ai.shooter = control.unit(); + } + } spawned.add(); } diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index d90b90a8e4..c453d9ef3c 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -406,7 +406,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I //make sure trail doesn't just go poof if(trail != null && trail.size() > 0){ - Fx.trailFade.at(x, y, trail.width(), team.color, trail.copy()); + Fx.trailFade.at(x, y, trail.width(), type.trailColor == null ? team.color : type.trailColor, trail.copy()); } } @@ -584,7 +584,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } for(WeaponMount mount : mounts){ - if(mount.weapon.shootOnDeath && !(mount.weapon.bullet.killShooter && mount.shoot)){ + if(mount.weapon.shootOnDeath && !(mount.weapon.bullet.killShooter && mount.totalShots > 0)){ mount.reload = 0f; mount.shoot = true; mount.weapon.update(self(), mount); diff --git a/core/src/mindustry/entities/part/RegionPart.java b/core/src/mindustry/entities/part/RegionPart.java index 9f0ddc5c7b..e0f933d22e 100644 --- a/core/src/mindustry/entities/part/RegionPart.java +++ b/core/src/mindustry/entities/part/RegionPart.java @@ -34,7 +34,7 @@ public class RegionPart extends DrawPart{ public float outlineLayerOffset = -0.001f; public float x, y, rotation; public float moveX, moveY, moveRot; - public @Nullable Color color, colorTo; + public @Nullable Color color, colorTo, mixColor, mixColorTo; public Color heatColor = Pal.turretHeat.cpy(); public Seq children = new Seq<>(); public Seq moves = new Seq<>(); @@ -105,6 +105,13 @@ public class RegionPart extends DrawPart{ }else if(color != null){ Draw.color(color); } + + if(mixColor != null && mixColorTo != null){ + Draw.mixcol(mixColor, mixColorTo, prog); + }else if(mixColor != null){ + Draw.mixcol(mixColor, mixColor.a); + } + Draw.blend(blending); Draw.rect(region, rx, ry, rot); Draw.blend(); @@ -118,6 +125,9 @@ public class RegionPart extends DrawPart{ Draw.xscl *= sign; } + Draw.color(); + Draw.mixcol(); + Draw.z(z); //draw child, if applicable - only at the end @@ -162,6 +172,7 @@ public class RegionPart extends DrawPart{ heat = Core.atlas.find(realName + "-heat"); for(var child : children){ + child.turretShading = turretShading; child.load(name); } } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index be59f6225b..d91d3f422d 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -73,6 +73,8 @@ public class UnitType extends UnlockableContent{ riseSpeed = 0.08f, /** how fast this unit falls when not boosting */ fallSpeed = 0.018f, + /** how many ticks it takes this missile to accelerate to full speed */ + missileAccelTime = 0f, /** raw health amount */ health = 200f, /** incoming damage is reduced by this amount */ diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index d13645dcfc..31e864bf49 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -520,7 +520,7 @@ public class ModsDialog extends BaseDialog{ ui.showInfo("@mods.browser.noreleases"); }else{ sel.hide(); - BaseDialog downloads = new BaseDialog("@mods.browser.releases"); + var downloads = new BaseDialog("@mods.browser.releases"); downloads.cont.pane(p -> { for(int j = 0; j < releases.size; j++){ var release = releases.get(j); @@ -570,14 +570,6 @@ public class ModsDialog extends BaseDialog{ }); } - private String trimText(String text){ - if(text == null) return ""; - if(text.contains("\n")){ - return text.substring(0, text.indexOf("\n")); - } - return text; - } - private void handleMod(String repo, HttpResponse result){ try{ Fi file = tmpDirectory.child(repo.replace("/", "") + ".zip"); diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 25ac2ff0cf..0d16454700 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -208,8 +208,6 @@ public class Turret extends ReloadTurret{ public float curRecoil, heat, logicControlTime = -1; public float shootWarmup, charge; public int totalShots; - //turrets need to shoot once for 'visual reload' to be valid, otherwise they seem stuck at reload 0 when placed. - public boolean visualReloadValid; public boolean logicShooting = false; public @Nullable Posc target; public Vec2 targetPos = new Vec2(); @@ -503,7 +501,6 @@ public class Turret extends ReloadTurret{ protected void updateShooting(){ if(reloadCounter >= reload && !charging() && shootWarmup >= minWarmup){ - visualReloadValid = true; BulletType type = peekAmmo(); shoot(type); diff --git a/core/src/mindustry/world/draw/DrawTurret.java b/core/src/mindustry/world/draw/DrawTurret.java index 51acf17491..d4cdc36790 100644 --- a/core/src/mindustry/world/draw/DrawTurret.java +++ b/core/src/mindustry/world/draw/DrawTurret.java @@ -67,7 +67,7 @@ public class DrawTurret extends DrawBlock{ Draw.z(Layer.turret); } - float progress = tb.visualReloadValid ? tb.progress() : 1f; + float progress = tb.progress(); //TODO no smooth reload var params = DrawPart.params.set(build.warmup(), 1f - progress, 1f - progress, tb.heat, tb.curRecoil, tb.charge, tb.x + tb.recoilOffset.x, tb.y + tb.recoilOffset.y, tb.rotation);