From 78f3e23f0b719a488ae743981dbbd4476572841d Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 May 2022 22:24:45 -0400 Subject: [PATCH] WIP bullet shotgun for T4 tank --- .../blocks/units/advanced-reconstructor.png | Bin 5140 -> 2925 bytes .../blocks/units/mech-reconstructor-top.png | Bin 1684 -> 0 bytes .../blocks/units/mech-reconstructor.png | Bin 1423 -> 0 bytes .../blocks/units/ship-reconstructor-top.png | Bin 1694 -> 0 bytes .../blocks/units/ship-reconstructor.png | Bin 1382 -> 0 bytes .../blocks/units/tank-reconstructor-top.png | Bin 2664 -> 0 bytes .../blocks/units/tank-reconstructor.png | Bin 1427 -> 0 bytes core/assets-raw/sprites/ui/discord-banner.png | Bin 331 -> 338 bytes core/src/mindustry/content/UnitTypes.java | 30 +++++++++++++++--- .../mindustry/entities/bullet/BulletType.java | 27 ++++++++++++---- .../mindustry/entities/comp/BuildingComp.java | 2 +- .../mindustry/entities/comp/BulletComp.java | 1 - .../mindustry/ui/fragments/MenuFragment.java | 2 +- 13 files changed, 48 insertions(+), 14 deletions(-) delete mode 100644 core/assets-raw/sprites/blocks/units/mech-reconstructor-top.png delete mode 100644 core/assets-raw/sprites/blocks/units/mech-reconstructor.png delete mode 100644 core/assets-raw/sprites/blocks/units/ship-reconstructor-top.png delete mode 100644 core/assets-raw/sprites/blocks/units/ship-reconstructor.png delete mode 100644 core/assets-raw/sprites/blocks/units/tank-reconstructor-top.png delete mode 100644 core/assets-raw/sprites/blocks/units/tank-reconstructor.png diff --git a/core/assets-raw/sprites/blocks/units/advanced-reconstructor.png b/core/assets-raw/sprites/blocks/units/advanced-reconstructor.png index 5304816b218a003628d0cf8aacad8b8fa002af87..6709222b7b32803da821af11d7bdb574200579d1 100644 GIT binary patch delta 2919 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 HP64Bh9`br~3hZ+p5phEy=Vof~~(X|P0t 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 diff --git a/core/assets-raw/sprites/blocks/units/mech-reconstructor-top.png b/core/assets-raw/sprites/blocks/units/mech-reconstructor-top.png deleted file mode 100644 index 28e1927ffaf9d3b94aea6bf79ab330ff896291dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1684 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z~<-a z;uumf=j~kE{8(3kw&(ZQ0)vzTW6h`Ooa&hG5abrJ#MxzGXVArCc`Fy0IJ&&_5DjFq zS6tMivvi}j%Bv|IuYzV6PX1bV=FGV>?{-?|KfUq%-SOXd{?6Nc)260mm%ZJ+#;tO9 z_HQ@zFIiCc=jHRg?z?WE?k=wQ{q2%X;(Dh33F)!h7#Or$Htl)6;i!BVhq-9rH{HL- zxgOTLPOY5%FR4`^`kFKYgIx~C#ndxQ3_lDMdo*r8`!;v?RiAQq^?+#g3qSWQVcNV_ zcuVU0*03DL6;a+EzEfsc1$)2v`RGgC#90gsp9H)l^?93ISHEpMz{K#ut|hF^yD{Nr zYL?;#Mur&22WckOEd3w7m>pRjY>%%OOf}GEIe)V0OQjjZ%AYH4D!81vqB1|3@xrYB zNg^*EE)L%2n1Ao>_xyWrZ=UzQ^lt9m0{iC4cQj{;-g&{*pVb9YtQW>>*Y!Mmn`oDQApaff!ZpX3v`#MgarW`?MO)(M%-uM@_Sch=j-L!o zdM6gE7HI34#($bQ@fkBi4nxW_x9u#wKSQ=oGr0AK{rmgeb=(HZEpeX%Ejf&5@PCNs zb~wv&@KlXRt3mfq22O?sONEHp{Z)l!W>bGM%yf)MT6O$DP0gO>>+9p9)VbHk?_D$R zP3G0z+e1vMUA#TCKOYT`k5;K>UU7BK{iNjeQ4>5kmY%wzQ1kEPRh32C9JIGCi{l8} zz3Qx!i$g}J8av}z_ooV5b{XlioYu_^W3*8$&~{c_@@%mN%R39D)`Z%533YM`H{&MQ zbhk}Av%G#X&m$pc+jGJ`{zuB()fo+bIeav->Z-v96q}zT?gF;$MG6oTmKLID2mO@ye#krThQBg;|g)`ixM&Ia

covFof0`4|r+u_s=cq^MIT)fJ`G(j3{b@Y-6AnP<`+ zPy*|Duuo=)qjRjL;x)ZTeZ1tw|+v!*@0!o5(Pr|8xJo&F0)W^EDB zIi#?h+xH8{xu+gn2aR}&W<7}UTN<#o?xHZ0d9J5~N^64T$=s??M!qd`96c|uE!bwM z60JDNz+;VYx`23m=!HqowY~0avH$z#_v`uI(iK-~)|<9})%H5et`v7E`>Equ_oV_w z_iNUNmf!HMnz(-Dv`?pI_B(NG%{!ib|KwlOtAhGj%PX&)nSMf>=h9o(w-dj+Cfo~q zws_AuxhlmwGgy1~tw}B~Ny@W3AR2IPRqU#J)qz)6hrEBCrILTOz=gjnZI|KGU+pu` zxJNpkn0x6glj9ywvD(x~{gzvTFL?xRY*%CI*=-rf-B@gAE7kP->0Q&p^TIpW|IRue zA+u`9taqQ@&H1p7qi>#_2HQ#*7(~5d1#*(GN&Q!aM zweguPms3Sa$+|_V9G1-40!8)Ojwha4D%oj@IIL}2skk*i|J)0y876C^R(H1vlvQs3 zTFGQO=dx+ytT~0pSDm{YbI-PFmGvSW5M%PsOEz0d%OcqsPH>yd{yA&UlG15$y~=Ve zJ6UI4t?`{V$;$gbbI4Vl6`>1mp1uC$?Apy=l$^erYzbMgbjEs3=I!T%IAUKnm^@xO zv;S3Nz$#<$rVR5dUdA*1pFVWe7Bj8UP73?XSaa%H7Ux2SG&6ZoUPYb*LTB7voj4db zsC*6#6u85vbFn6bg(aN9+f4o`??K)JiZl8@wS3T@|JOA6w4K{L1_lNOPgg&ebxsLQ E00?v$>;M1& diff --git a/core/assets-raw/sprites/blocks/units/mech-reconstructor.png b/core/assets-raw/sprites/blocks/units/mech-reconstructor.png deleted file mode 100644 index 63f3cb6fa90fd6a4163ad92696d7b056008f2a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1423 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&!0PGg z;uumf=j~iu9}!29%YVLDv3qm<&6isg z({VLAn_3ygy`s>oqftss+ZcGeb$;mK5n}v_Lxc!2Od{Og(%$Rcm z%evx!xyLdvcwAKfk)W^c=f6rmXIi~Sps>@U|0M+nrp0;01Z}NnVQ|rRAivUaJun51V43dAU1Ra}PsKXTTZ#W1+`4PI`INVa6xXdEm$S^JFGnUfji`xPp^u$IBe6xn?_! zdjoFla7VgV#r*8v$Mg5cLt9OmcUUOde6kCR&8NDP%!V5dhyNun=Z`V@MOyQ37caUsYxWd7cdK~ zZ&Fc6=$YE!U?{Kf$jC&MrE8(4V!&B;iRRx863VKx7YC&BHXJ^1M=^yrL1+m>%Tk7x zsiqBAgiTbYm@+hc37!(v&7<(NDre>MX^Eo7#*dVlcLveoy>KabM{5dS@sS3 zGO1CM7P8Lv@m&%1LSy?Z1I`N8`YX`kVLJ@04jWB%+~6 z@%QT{-D8gFv@*N$EdJ@EyNZpyYA0)yby~Fk&*?7z&BW}p?5Ep8ftY`mzZ?DqhM)a@ zf?cuds!QlzKm>6cSGqie6G0U*|5dBxXCE z_&8_l>b@`YZ0kMGo||yvSHlIS1g=wz3;Vuo+g5(VY~u%}13AYZYBLc~Q zekTrv_ilM=i(<@bzxnb_k+90VeNFp{@g=*YAg-A+H4R(0#RwayznOc~eeT~0%;(S5 z9sYULWJ{Fs5}#vS$!`uH_fNR6y8ia6MNw-dE%wi7oB5kRU@hw_qbbGv6VLqHH)V5G zWo_~bOR3p^TWTL=^f?_WHmlUUWc=4b_jkusQD#QrK4zz`FQ?`j9FzZ4%fQOCw82my zXi50ijhQR#9j7mh+12}-^Y@e8N?yNArUV(R`gvu;o!NE2vYb90zc_>G*bM*9#p`6l zV+CC9vA2j!Ib7otQ<`5M&8m3&Z%g{~pA0QaraNu>y&~s+M`51#?89Q)-JZ^xpv%A@ t_qfRD{t6DoYzBrxwr3gpCN_THU&-^H=W$WTRR#tI22WQ%mvv4FO#rApmBs)7 diff --git a/core/assets-raw/sprites/blocks/units/ship-reconstructor-top.png b/core/assets-raw/sprites/blocks/units/ship-reconstructor-top.png deleted file mode 100644 index 7c91e756cd81c893597788238a5ffd17d703d49a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1694 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z!u@@ z;uumf=j~kE>`+I6w&(YbZE0GnaDvxK!TwNKuFIQCH&|9DWKTb5wq%lt*-Mw4E7#-& z1ymdbbXcR;CM^_JpZ#~n&ABu07Te~FPA>lbxb|J$`AG5V^WV;I-xjuD?eg8$++SU+ zUp>9}ai{C9)0-~~|M>FK$2M^_)AtFfvC|kBj9a#>dA;F?d>Tji)4*@4e~~SbBi(mu)`}-Y65~58{QyhQUNH<)mxsoAZla@8<{6>Z=v-&5AWW2v= zcY8s9`~GwGa{rR-^*wi&mL2|EBj~XDr-ol+!Gz}$uD#D44wzVWd#^R+QkT6babZH`KvLUtg_g{x3KjYSv5X8yv}YKpuqmdOyvf&`u+gS^&ADy{uV_)zMWVW;oL3zD z!ky=9mZqBIbAPsEt}E2%SZXR3;K_Ehef#|GOLf1Wvi`n#xcRT%GiHum3f? z=45)+EPjR!3=?L)zAKbGBmp-A`3L#j4!tanr)xx7 z4Z40ZFfue4DrC&=uloJ;XuvaO7q-OCm14}FuU+G^%inX&Ps}cV&$)STuC6N0*UT*I zpC%CY?A-a|QYYgWSD8M)e&fbzu_MAxtBfo;%D=DEW%$IsB_unmb-~uvQ93Q`EkUVC z0vBpRc$`*huWntibLm;F233~4RE?GkH6pDCWZjntY&kD{>ZSG0w7cWft`6Yjn zV@%SDqm@msI&WkZOEXlk?k)d+ai_@-?eu+5W(LS`ggxhcbZFTwWs~_@rqB5nRoK7%aSta7d?6l6b{pniG^sga2y=P|jJ8_sMPMCN3 zsDZyGmvu6wQ;-+i=PcT-y(&9MnSB>W^O za}uVxW+eG-6)-uZ(9Z3Z;psRc+5-4+*Y3dd6L`C1!i_*7qs@W@Yt@Z#`^N{LDK=lr8hyqO$Y9 zl??KAKL>`T^RE?Hcc!T-{@TV{cf!o&AMgj9TNS(NT6N&+@RirDU-h`R>S2eRNN-8< zsiXYLGy5+!30NUzc~M@Rq|0*dXGuQCv+3o}kJ$P@ zko$7I#_e%{>Xm}&<;PpfT?~VCWp`OSP$A-S%qB`X_?Vz$+2<&QiUU*-U!Zr!le*?@WO;U+s)HT_U{6rvGUeeS~IV08JCIZ=j>Al)^28T zx@@IzrXuUv;wXhBugUjYWJO??Yw7(iiK{gXvo}qRYSM0)c-Fnrxq#V# z^>g4nffxp#lQmPsS&A8gP2`_49uzq+<*a+8vjOu4zGsVd6#uX(hMOgR+bg?(fq{X+ M)78&qol`;+0O?o-Q~&?~ diff --git a/core/assets-raw/sprites/blocks/units/ship-reconstructor.png b/core/assets-raw/sprites/blocks/units/ship-reconstructor.png deleted file mode 100644 index bc9ddfe97fb29fde155b871c58c6896d22107ed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1382 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z^dTs z;uumf=k476+0ljq$Iq)dUvqGGRQoqXnT=+C5&JEnigV7RnMq@u8#xp}T|(7*28(q%U5ECd341rGc_mu4ch$@;R4 zDeu%@>$a>oE6C-rdHH(Dre#0ww zc+MZSyIZp%MR9kBdTGtg=?ml6*>Aq&DYZs4f8&nS@5X+SrVZKuii7kbCaRq{GMzDC z8WIWu~76EyWPt1mP5hDX9!oLQNYk z37eRNm@+hc3ZCNC&AZ@9RnF4q(*5&i zO@)G6o1S7Y;)(#`2k!` z-&S=l%S#1&5Kc~IO_&_!ks18%#p^dyi}m%6ule05V)L@PNAHm*Ppx=n(+X3@&$TCS zU3J|PzW(Rtq?*pJj5nA9xU?7-c2|f`Pu}ROGl@atcHt7P1BNE-PU0W`{9mq+z@Tbg zR4jRQ)63$lq6Nn;oV>6tF5-N|?~Y7PW8>gtuH4OP0e%sm?2@8P85#t&AT`gbH54uc`mX%v}AhDC$A&Le;w3+cbHCPZk*)DD%#FbZWH?kGZOzT;`pRA^skQX^j`;;%E43Fb@^`jmeLU;DulC-T>8sR4>ScU2 z6Z(G6vDtO2(3H*b>30SnN7XaSpIrS~wmny1)m{IJ4a&Pud3OG7*?9cHch0N-l+(kRR)GnJZmo2sIx!R&#HWH#5q@{gMop8!PC{xWt~$( F696Y(ghK!T diff --git a/core/assets-raw/sprites/blocks/units/tank-reconstructor-top.png b/core/assets-raw/sprites/blocks/units/tank-reconstructor-top.png deleted file mode 100644 index 3cdd4951b611d0dd56bcbcc95aa7880adc5f134e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2664 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 diff --git a/core/assets-raw/sprites/ui/discord-banner.png b/core/assets-raw/sprites/ui/discord-banner.png index 0b39176bda0a59f5bcc88f47a38db81990807da8..49efc827119bd0c017476cfce42aad44af844778 100644 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0y~yV2EU3U@+ofV_;w~wrxzcQ(?x&%m)I0CYtlhH0c{1n7?NN)%BmtApO0cXM=NbO2gb=O3ZI==rO#B z`)0&cQ16-2klUrioO4~t=)ks_|8_5U>LA9lNnrwOqYg)kqXIWmq`-+L+(LU9m8D{; VgbkmaZ4AnlwWYN@qed% z@^5p(yyadTDj$^Z&K7k|eD8OA=E`V!G5()R?cbEymCbu@DF5HwXZoVXWgVGfoF<_@ zn>iL}CeP}03_flm+|=~bi;3&m@`DQ!>dZMr&Qu*-kYFax!j)EiZ$U!Yb5^dj`g02s zcA2iq)B9b$bKW`ir&2!OtLimo)Ri_hy^Pn^n2~7O^zN9q0rTp{Cd)Nzc17l{OZfK0 zW(jj}a30&TO)@^YfzLl_vaPUiILfHS7f{&H#T+8D;1Po;J5Hf@oMz^pt7Xr8{lLJ$ Oz~JfX=d#Wzp$Pz1{e5l# diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 2019a293dc..5ec3a8faf0 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -290,7 +290,7 @@ public class UnitTypes{ fragBullets = 3; fragLifeMin = 0f; - fragCone = 30f; + fragRandomSpread = 30f; fragBullet = new BasicBulletType(9f, 20){{ width = 10f; @@ -2680,11 +2680,11 @@ public class UnitTypes{ sprite = "missile-large"; width = 9.5f; height = 15f; - lifetime = 30f; + lifetime = 18f; hitSize = 6f; shootEffect = Fx.shootTitan; smokeEffect = Fx.shootSmokeTitan; - pierceCap = 3; + pierceCap = 2; pierce = true; pierceBuilding = true; hitColor = backColor = trailColor = Color.valueOf("feb380"); @@ -2694,6 +2694,28 @@ public class UnitTypes{ hitEffect = despawnEffect = Fx.blastExplosion; splashDamageRadius = 20f; splashDamage = 50f; + + fragOnHit = false; + fragRandomSpread = 0f; + fragSpread = 10f; + fragBullets = 5; + fragVelocityMin = 1f; + + //TODO + fragBullet = new BasicBulletType(8f, 30){{ + sprite = "missile-large"; + width = 8f; + height = 12f; + lifetime = 15f; + hitSize = 4f; + hitColor = backColor = trailColor = Color.valueOf("feb380"); + frontColor = Color.white; + trailWidth = 2.8f; + trailLength = 6; + hitEffect = despawnEffect = Fx.blastExplosion; + splashDamageRadius = 10f; + splashDamage = 20f; + }}; }}; }}); @@ -3503,7 +3525,7 @@ public class UnitTypes{ spread = 11f; }}; - bullet = new BasicBulletType(5f, 18){{ + bullet = new BasicBulletType(5f, 24){{ homingPower = 0.19f; homingDelay = 4f; width = 7f; diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 179bfe4f04..55be83a834 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -138,6 +138,8 @@ public class BulletType extends Content implements Cloneable{ public boolean makeFire = false; /** Whether to create hit effects on despawn. Forced to true if this bullet has any special effects like splash damage. */ public boolean despawnHit = false; + /** If true, this bullet will create bullets when it hits anything, not just when it despawns. */ + public boolean fragOnHit = true; /** If true, unit armor is ignored in damage calculations. Ignored for building armor. */ public boolean pierceArmor = false; @@ -146,7 +148,8 @@ public class BulletType extends Content implements Cloneable{ /** Whether status and despawnHit should automatically be set. */ public boolean setDefaults = true; - public float fragCone = 360f; + public float fragRandomSpread = 360f; + public float fragSpread = 0f; public float fragAngle = 0f; public int fragBullets = 9; public float fragVelocityMin = 0.2f, fragVelocityMax = 1f, fragLifeMin = 1f, fragLifeMax = 1f; @@ -308,12 +311,11 @@ public class BulletType extends Content implements Cloneable{ Effect.shake(hitShake, hitShake, b); - createFrags(b, x, y); - createPuddles(b, x, y); - - if(incendChance > 0 && Mathf.chance(incendChance)){ - Damage.createIncend(x, y, incendSpread, incendAmount); + if(fragOnHit){ + createFrags(b, x, y); } + createPuddles(b, x, y); + createIncend(b, x, y); if(suppressionRange > 0){ //bullets are pooled, require separate Vec2 instance @@ -327,6 +329,12 @@ public class BulletType extends Content implements Cloneable{ } } + public void createIncend(Bullet b, float x, float y){ + if(incendChance > 0 && Mathf.chance(incendChance)){ + Damage.createIncend(x, y, incendSpread, incendAmount); + } + } + public void createPuddles(Bullet b, float x, float y){ if(puddleLiquid != null && puddles > 0){ for(int i = 0; i < puddles; i++){ @@ -361,7 +369,7 @@ public class BulletType extends Content implements Cloneable{ if(fragBullet != null){ for(int i = 0; i < fragBullets; i++){ float len = Mathf.random(1f, 7f); - float a = b.rotation() + Mathf.range(fragCone / 2) + fragAngle; + float a = b.rotation() + Mathf.range(fragRandomSpread / 2) + fragAngle + ((i - fragBullets/2) * fragSpread); fragBullet.create(b, x + Angles.trnsx(a, len), y + Angles.trnsy(a, len), a, Mathf.random(fragVelocityMin, fragVelocityMax), Mathf.random(fragLifeMin, fragLifeMax)); } } @@ -373,6 +381,11 @@ public class BulletType extends Content implements Cloneable{ if(despawnHit){ hit(b); } + + if(!fragOnHit){ + createFrags(b, b.x, b.y); + } + despawnEffect.at(b.x, b.y, b.rotation(), hitColor); despawnSound.at(b); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 6c97239273..e36d83eba9 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -85,7 +85,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, transient float efficiency; /** Same as efficiency, but for optional consumers only. */ transient float optionalEfficiency; - /** The efficiency this block would have if consValid() / productionValid() returned true. */ + /** The efficiency this block *would* have if shouldConsume() returned true. */ transient float potentialEfficiency; transient float healSuppressionTime = -1f; diff --git a/core/src/mindustry/entities/comp/BulletComp.java b/core/src/mindustry/entities/comp/BulletComp.java index 52948d9c70..f26a30a5db 100644 --- a/core/src/mindustry/entities/comp/BulletComp.java +++ b/core/src/mindustry/entities/comp/BulletComp.java @@ -187,7 +187,6 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw type.collideFloor && (tile == null || tile.floor().hasSurface() || tile.block() != Blocks.air) || type.collideTerrain && tile != null && tile.block() instanceof StaticWall ){ - type.despawned(self()); remove(); hit = true; return; diff --git a/core/src/mindustry/ui/fragments/MenuFragment.java b/core/src/mindustry/ui/fragments/MenuFragment.java index 906680d1f5..875067f8b6 100644 --- a/core/src/mindustry/ui/fragments/MenuFragment.java +++ b/core/src/mindustry/ui/fragments/MenuFragment.java @@ -54,7 +54,7 @@ public class MenuFragment{ parent.fill(c -> c.bottom().right().button(Icon.discord, new ImageButtonStyle(){{ up = discordBanner; - }}, ui.discord::show).tooltip("@discord").size(84, 45).name("discord")); + }}, ui.discord::show).marginTop(9f).marginLeft(10f).tooltip("@discord").size(84, 45).name("discord")); //info icon if(mobile){