From 52b5ed57bfd344802537b0b1147bc30629e71518 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 16 Jun 2022 13:46:20 -0400 Subject: [PATCH] Unfinished/WIP turret --- .../turrets/afflict/afflict-blade-heat.png | Bin 0 -> 658 bytes .../turrets/afflict/afflict-blade-l.png | Bin 0 -> 1215 bytes .../turrets/afflict/afflict-blade-r.png | Bin 0 -> 1207 bytes .../turrets/afflict/afflict-preview.png | Bin 0 -> 4086 bytes .../blocks/turrets/afflict/afflict.png | Bin 0 -> 1295 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 4509 -> 4518 bytes core/src/mindustry/content/Blocks.java | 115 +++++++++++++++++- .../blocks/defense/turrets/ItemTurret.java | 7 +- .../blocks/defense/turrets/PowerTurret.java | 4 + .../world/blocks/defense/turrets/Turret.java | 6 + .../blocks/environment/ShallowLiquid.java | 33 ++++- 12 files changed, 158 insertions(+), 8 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-heat.png create mode 100644 core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-l.png create mode 100644 core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-r.png create mode 100644 core/assets-raw/sprites/blocks/turrets/afflict/afflict-preview.png create mode 100644 core/assets-raw/sprites/blocks/turrets/afflict/afflict.png diff --git a/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-heat.png b/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7f994e5a6a77c85022d48fe61a8c89cbc04543 GIT binary patch literal 658 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z~tlU z;uumf=k1+XKjA=`wvW#*gxR??#Z|1F{_fzB*d6TQPs;9eUUw5zRSFdOT~)a3#)6f9 zC1jR={xfMZ596fzs(F^VCs-z^curFBbPn7l_n>}S%B>hbZ_USk?K@SiWBD(Ld+P0; z_s~q@KoOV2q|NKtGiNid(Kz{fU3$i3#x;s3SFcOY=w{Rj%ZrI$ucE(Oa%C*rhDH_r zUGoxy*)}XxIlpUOqA=TqCYAnO^Acm(E=*Esk3GMEk2xc7Qs8ytHK!QZ&Jl~u%&Yx2 zOy^0kZT)rY?6p74i}xlmtiH|Yc0gjrnYDsnGatseCNQj?nfs6B1~cERt?YL)_oXvL zXO$i4UnyP3A!GVl;KuUK1^&w$7b<>dQO`X|0#;!k^W-Vug>kN5>s@_c{(&0Q4E zlfb!jieTyDdWP@=;SZR8@XRs4KK;P=XX#bKt&BP=rx-2F`zQWDxPWU8!~4emD-wE! z4R1reEEnB-n||eNJ@cNW#|r#xCD$2%L@SwU814m{|8J2x!up~27ynY8gxOPr<^}iv z3(k}IzjVsWMfb0Yd44iE`B>%qq@Lej#2vP(oII>j?P=rNu66Rr?)XXIs3e2DWoFO# Ysj2x`-Y12l3=9kmp00i_>zopr0RFfY#sB~S literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-l.png b/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-l.png new file mode 100644 index 0000000000000000000000000000000000000000..bc41ab4f10bdf2400e6767f66f31d7c3ee56f767 GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z*6by z;uumf=j~koyekGG?Y4Io3bD^fG=JroaFclhJEN`RLzYn0UC$X}4>@X;9blYL)sg7D zBq8ay?QhF6oBQgatBfSoXWkdLu9rD($p8Ts;$>^Y7o^{-{ZTRN-~QcuZ+^+&dRuq> zzs*yxCvV=f|6hsM`K`7B4hK7g6dER7RB>qFaht@zXe8;%#G>)w>FU*Iy&D(=>;C?k zHz)nIkb*8>Mz)CKJy z<~lP3FA@48w6B;Wq3@~Y+>jMQ0tY5!e(>PtR59<>abQsXGtt>wWyYc9&L`Y9$e3Nb z|M{iBB}>!8^A|XKsQN7r{-WQSYOvC5KA+;;iP9b?56a3qSuJ$^vGg=wBZF5|Tl_9Q zZ-s`YSr4=GrK3GJybNDB^^yFGr+-##JSUg0H~-4R>};-=OOxWHr!P3h7JLjl#5gREXwkQ{+flz~g`O0X z#zZ!ymtO=YC)Am5T*kr?!06jQUzKxOp6c~U42(UUwhmHRm!AtA`6YN|0s~`Mf?SOc zlc%~+HmAS>Bk#s`m5h%K9840%_nniM7w+|FU=Y0_-?ymvhYaT$R>uY}59`*pTVIwg z$iBkI5ioHI%jM@noLQ#4904;Yu>AWngT=I;Tfo87PonOIqNbPs$D((+3Jz?lLQ7_~ zZdG+?@X^U?63F&yU|_wHHCy-8RIdhx)(G!}$ayYIECvU(wn&+Jc`>mVEHc@1=ly&B z<4+8oeVAAbRLqY|`Y`?9^@3|mS0w6OrI)$>*qEt#E{fs#E$<1!QE#koeL5G%@O+zU zV@h28yc^#X55#X%X4lzUVb>S#yC~uSOuDahlMbyZ7D%o%Wxq z%6s3Eh2xSFlW)PoO(v-p?F@m}rZ`C735v8#Rd8rBRXM?VPG5UFj~je2MpwC1_MftFkDuS^{ol(XbkUT0zC mnaRGd^#dcMSU@HdWd1Q2&53@yk6k|tB<|_z=d#Wzp$P!%+~eZ_ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-r.png b/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-r.png new file mode 100644 index 0000000000000000000000000000000000000000..d79cd376dae99e15f5e78a02a0526c5fc54211c4 GIT binary patch literal 1207 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z*6Yx z;uumf=j~kEqN@fXZmhhbrqT^1IV@gXUm_jUa@*8+Cr?Xcd>I^Y$nBEqO@}P4RTqvJ z%O!h$_xc{SsmAZ?v%e?m-dj&g@&3fk$N&L-hgM&+zF<7xuD)`f-2Z=Hi%;BtRr*@? z26wTf8xx~Qj|L-?hNLeOi$;P9r@(>FV5m8FBZ`S7 zJ$mrX${ zS*|HGG^JY0aBF<~^C@eQ3sb&;!$}p#cQ0c0$?cwUCyI$h!{L_le3cWu%3G!|FmhG? zeix*ni!^D@mj!n|8bH4lSF`)0uGJoKW-%^ zYje&Jvs?Vc-PiZqj=h$F?d#WSX6cJ6AK+f<9^%Dt()9mU<$7<<3?`@DTYuj2Txyv0 z?f(a+D}O3Xzw=!1(>fdY%a%{qVfBZl8}t?g>l~WC<@56N@9!2VHV9=ZOyW!MYWkV6 zXgLeVgNC$Y=V!5GJD-dbQfM$-$+~2tS*@O9mRw^y3&#e=&kuryJk%yecsDSdTf-_h zdBIU8K^B9wx|U^rkE=2%Nc)CY|E(eo^;#?7_?911izO9fII52Sz%jMTX zoO@=mu@tDO9sKlj3d_8|Oe_IGLdT5W%n;eSyh1funj^rWmt|*KVm7D10)g&X3dg1i zDLAmk)@Ol>pQt!6C}$nk{`=?g;n;2GCrn~s;aVb9ChU0I;w-M)Q>Q}7cz0jgKbyw&SfH{aHF9aHLIZ<8XVSsUZIQ|XOdKC4 zD2UHVnSDnoEqTp3K9hq-w`D4-GKmCeJ9-wJ&W*b2!4crGlI31K!@{Mj=iZc#;;iDf zXJJ|4rsdfGu)Tpn?TN|@(?0?N2YAlU+oc}+{?5G*uT~!Jv)I3*DzEf;Afz-vAuaU& YGZ^c;eRn;1QxGKK>FVdQ&MBb@0KD?shX4Qo literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/afflict/afflict-preview.png b/core/assets-raw/sprites/blocks/turrets/afflict/afflict-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb86e37f46b76b33154c5ea8dd5ca73e3b2388c GIT binary patch literal 4086 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 BEJgqT literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/afflict/afflict.png b/core/assets-raw/sprites/blocks/turrets/afflict/afflict.png new file mode 100644 index 0000000000000000000000000000000000000000..b0abd5b7105dcab4c943d644eb670e3ea314695e GIT binary patch literal 1295 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z;e>l z#WAE}&fB@x*`kgTZSk%fF8T3Xi_`j8uae4i?G~F;P?xWir=;MeEM1kQ|M)k4`ozri zk7;#8i{a$6Z(_dB`MEFu-g2usb9guZwzIajo*vsE;KZTWLN+0mnE(GnQvUxBi^_hV zUHi8C?Ao`l-kKJyE@uooYVw2sJ%9JNQmH@J_0!e*r=FZU%ldV(>J01Gx?Tx+?Lnb+ zUQHoW^L?9c@8#a0VtM`b4289~vyb$gt*hvtZ{z>3E=u@G%lrTLFPXK5_`Gq^*dxU0 zb$EW>ddaWW0^Is)2j6wuGc>r*{?5ptAOC;O-`qF=#9*$<(fWRdSAuO#0s~`%HfPd9>p3jSE&M!63=_onCBG|5n5f8Naqp(a zy=Ql4@7LDov^m2aAiOV`h0}-og3!LhyI7X7dK4B^^=)@AuNGgd{fc#k>>NuA+yDP} zhB3XJ>(Ic+*igjz=Y#B0p$HCn10{wD`i>ek?(0~>4zcraGAvQ;XnpVDnV?y7UjT+k*$pDct)-v6{~XMt-EiO2WD|=sm%uAUnb4+( zEFGo%{Tc@Yn4a|T_NW~+V4A|i)2nh&fT_UlfXy-%jKac13X0-eJ z&L~b|m@ezGah{W}X(Jb7(8G2+>!@>2Ca~0f5K|G*cgXv(@cp!ihp)W_xMFs*ELtDB z^x^M0HPr^c&FhzLsCMEIsQ2>7I$E%XQFEuS!Zx-HPJ6eL%t~GtqJ%p{5<+W#tMYe5 zNUap=5MGe}qi>>$fNH~6c4OvGDgw#}I38N7cq%wGOgvQXG0~xgVTrs*LP49L!Zkw^ z)oY3=y@@OgpHw6?YYwbn*l75F2Fu0|YxTs%H65}l%-zndnLmNWGQDms%gTq3=XD4x znC_82%x`Ztk3VL*g6KZ`RS{Z_?>-djyKqjBy4Ndc^|@F@gY*7GZO4}%3i*$4TrfH$ zzWQ6R(2KU2B9+Mne7*=!L4^(zMmmS)8 zp({ShmvtJw7^ANJKB|&2(|JWG(^RG{LX#4vgdg!S{J-FY!1VqpwzF%h)zUi3=JJFy zADO4FQ~B-PDgng@uusqr#)iiDlQ7Pf*VY252Suf3;h+W2HQ_eR#@GqOMA)|afG=uq^dfr+tUHv2yJ zAH}I3XHN63`q3c7*sz-UzVV;TNT(g2GCAZ0ZgKET+|?idoN;={w6H58R|H=zcv*VD z+0^mvY@h0dt2Xe(H{DC0t>3uq1E=ER&;0r&|DX4qQhLw8z`)??>gTe~DWM4fxW^z1 literal 0 HcmV?d00001 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index e0de3ab0ae..4408c861c0 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -564,3 +564,4 @@ 63120=mech-refabricator|block-mech-refabricator-ui 63119=ship-refabricator|block-ship-refabricator-ui 63118=slag-heater|block-slag-heater-ui +63117=afflict|block-afflict-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 26b7474472e61bf73016057525807eaeadd57b69..3ee34e9448248157e1584d85896949277034238b 100644 GIT binary patch delta 24 gcmbQMyiA#i;nPN@IeZ-KiD_v$naL%K=khTF0A<|>6aWAK delta 16 YcmZ3cJXe{C;p0Z8IeeR!^ZjQ605gIHLjV8( diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d8ae541e51..6f599608af 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4061,7 +4061,120 @@ public class Blocks{ limitRange(-5f); }}; - //TODO 3+ more turrets. + //TODO very WIP + afflict = new PowerTurret("afflict"){{ + requirements(Category.turret, with(Items.surgeAlloy, 100, Items.silicon, 200, Items.graphite, 250, Items.oxide, 40)); + + shootType = new BasicBulletType(){{ + shootEffect = new MultiEffect(Fx.shootTitan, new WaveEffect(){{ + colorTo = Pal.surge; + sizeTo = 26f; + lifetime = 14f; + strokeFrom = 4f; + }}); + smokeEffect = Fx.shootSmokeTitan; + hitColor = Pal.surge; + + sprite = "large-orb"; + trailEffect = Fx.missileTrail; + trailInterval = 3f; + trailParam = 4f; + speed = 5f; + damage = 150f; + lifetime = 80f; + width = height = 16f; + backColor = Pal.surge; + frontColor = Color.white; + shrinkX = shrinkY = 0f; + trailColor = Pal.surge; + trailLength = 12; + trailWidth = 2.2f; + despawnEffect = hitEffect = new ExplosionEffect(){{ + waveColor = Pal.surge; + smokeColor = Color.gray; + sparkColor = Pal.sap; + waveStroke = 4f; + waveRad = 40f; + }}; + + intervalBullet = new LightningBulletType(){{ + damage = 18; + collidesAir = false; + ammoMultiplier = 1f; + lightningColor = Pal.surge; + lightningLength = 5; + lightningLengthRand = 8; + + //for visual stats only. + buildingDamageMultiplier = 0.25f; + + lightningType = new BulletType(0.0001f, 0f){{ + lifetime = Fx.lightning.lifetime; + hitEffect = Fx.hitLancer; + despawnEffect = Fx.none; + status = StatusEffects.shocked; + statusDuration = 10f; + hittable = false; + lightColor = Color.white; + buildingDamageMultiplier = 0.25f; + }}; + }}; + + bulletInterval = 3f; + + lightningColor = Pal.surge; + lightningDamage = 25; + lightning = 8; + lightningLength = 5; + lightningLengthRand = 8; + }}; + + drawer = new DrawTurret("reinforced-"){{ + parts.add(new RegionPart("-blade"){{ + progress = PartProgress.recoil; + heatColor = Color.valueOf("ff6214"); + mirror = true; + under = true; + moveX = 2f; + moveY = -1f; + moveRot = -5f; + }}, + new RegionPart("-blade-glow"){{ + progress = PartProgress.recoil; + heatProgress = PartProgress.warmup; + heatColor = Color.valueOf("ff6214"); + drawRegion = false; + mirror = true; + under = true; + moveX = 2f; + moveY = -1f; + moveRot = -5f; + }}); + }}; + + consumePower(2f); + heatRequirement = 8f; + maxHeatEfficiency = 2f; + + inaccuracy = 1f; + shake = 2f; + shootY = 4; + outlineColor = Pal.darkOutline; + size = 4; + envEnabled |= Env.space; + reload = 80f; + cooldownTime = reload; + recoil = 3f; + range = 290; + shootCone = 15f; + scaledHealth = 180; + rotateSpeed = 1.5f; + researchCostMultiplier = 0.05f; + + limitRange(9f); + }}; + + //TODO 5 more turrets. //endregion //region units diff --git a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java index 956b22d63c..fb6e86aa7b 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java @@ -38,11 +38,8 @@ public class ItemTurret extends Turret{ /** Makes copies of all bullets and limits their range. */ public void limitRange(float margin){ - for(var entry : ammoTypes.copy().entries()){ - var bullet = entry.value; - float realRange = bullet.rangeChange + range; - //doesn't handle drag - bullet.lifetime = (realRange + margin) / bullet.speed; + for(var entry : ammoTypes.entries()){ + limitRange(entry.value, margin); } } diff --git a/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java b/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java index b7c6f92e5a..d18db6208c 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java @@ -19,6 +19,10 @@ public class PowerTurret extends Turret{ stats.add(Stat.ammo, StatValues.ammo(ObjectMap.of(this, shootType))); } + public void limitRange(float margin){ + limitRange(shootType, margin); + } + public class PowerTurretBuild extends TurretBuild{ @Override diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 6a3ca346f8..25ac2ff0cf 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -186,6 +186,12 @@ public class Turret extends ReloadTurret{ drawer.getRegionsToOutline(this, out); } + public void limitRange(BulletType bullet, float margin){ + float realRange = bullet.rangeChange + range; + //doesn't handle drag + bullet.lifetime = (realRange + margin) / bullet.speed; + } + public static abstract class AmmoEntry{ public int amount; diff --git a/core/src/mindustry/world/blocks/environment/ShallowLiquid.java b/core/src/mindustry/world/blocks/environment/ShallowLiquid.java index 4ab54e1086..95c4a368ee 100644 --- a/core/src/mindustry/world/blocks/environment/ShallowLiquid.java +++ b/core/src/mindustry/world/blocks/environment/ShallowLiquid.java @@ -1,11 +1,15 @@ package mindustry.world.blocks.environment; +import arc.*; +import arc.graphics.*; +import arc.graphics.g2d.*; import arc.util.*; +import mindustry.graphics.*; +import mindustry.graphics.MultiPacker.*; import mindustry.world.*; /** - * Do not use in mods. This class provides no new functionality, and is only used for the Mindustry sprite generator. - * Use the standard Floor class instead. + * Blends water together with a standard floor. No new mechanics. * */ public class ShallowLiquid extends Floor{ public @Nullable Floor liquidBase, floorBase; @@ -26,4 +30,29 @@ public class ShallowLiquid extends Floor{ cacheLayer = liquidBase.cacheLayer; shallow = true; } + + @Override + public void createIcons(MultiPacker packer){ + //TODO might not be necessary at all, but I am not sure yet + //super.createIcons(packer); + + if(liquidBase != null && floorBase != null){ + var overlay = Core.atlas.getPixmap(liquidBase.region); + int index = 0; + for(TextureRegion region : floorBase.variantRegions()){ + var res = Core.atlas.getPixmap(region).crop(); + for(int x = 0; x < res.width; x++){ + for(int y = 0; y < res.height; y++){ + res.setRaw(x, y, Pixmap.blend((overlay.getRaw(x, y) & 0xffffff00) | (int)(liquidOpacity * 255), res.getRaw(x, y))); + } + } + + String baseName = this.name + "" + (++index); + packer.add(PageType.environment, baseName, res); + packer.add(PageType.editor, "editor-" + baseName, res); + + res.dispose(); + } + } + } }