From 2109a25e3e904913f5a2553e46aff236a0be6ec7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 16 Jun 2022 15:34:22 -0400 Subject: [PATCH] Turret progress --- .../afflict/afflict-blade-glow-heat.png | Bin 0 -> 2472 bytes core/assets/bundles/bundle.properties | 1 + core/src/mindustry/content/Blocks.java | 61 +++++++++--------- .../src/mindustry/content/ErekirTechTree.java | 3 +- .../mindustry/entities/bullet/BulletType.java | 9 ++- 5 files changed, 43 insertions(+), 31 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-glow-heat.png diff --git a/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-glow-heat.png b/core/assets-raw/sprites/blocks/turrets/afflict/afflict-blade-glow-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..a29c4daf46eaf8b028550e48f61af41c2e650709 GIT binary patch literal 2472 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 literal 0 HcmV?d00001 diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index aff42cffbb..33470678e7 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2006,6 +2006,7 @@ block.breach.name = Breach block.sublimate.name = Sublimate block.titan.name = Titan block.disperse.name = Disperse +block.afflict.name = Afflict block.fabricator.name = Fabricator block.tank-refabricator.name = Tank Refabricator block.mech-refabricator.name = Mech Refabricator diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 6f599608af..934fe6d40e 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4079,6 +4079,8 @@ public class Blocks{ trailEffect = Fx.missileTrail; trailInterval = 3f; trailParam = 4f; + pierceCap = 2; + fragOnHit = false; speed = 5f; damage = 150f; lifetime = 80f; @@ -4097,36 +4099,37 @@ public class Blocks{ 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; + fragBullet = intervalBullet = new BasicBulletType(3f, 20){{ + width = 9f; + hitSize = 5f; + height = 15f; + pierce = true; + lifetime = 30f; + pierceBuilding = true; + hitColor = backColor = trailColor = Pal.surge; + frontColor = Color.white; + trailWidth = 2.1f; + trailLength = 5; + hitEffect = despawnEffect = new WaveEffect(){{ + colorFrom = colorTo = Pal.surge; + sizeTo = 4f; + strokeFrom = 4f; + lifetime = 10f; }}; + buildingDamageMultiplier = 0.3f; + homingPower = 0.2f; }}; bulletInterval = 3f; + intervalRandomSpread = 20f; + intervalBullets = 2; + intervalAngle = 180f; + intervalSpread = 280f; - lightningColor = Pal.surge; - lightningDamage = 25; - lightning = 8; - lightningLength = 5; - lightningLengthRand = 8; + fragBullets = 20; + fragVelocityMin = 0.5f; + fragVelocityMax = 1.5f; + fragLifeMin = 0.5f; }}; drawer = new DrawTurret("reinforced-"){{ @@ -4153,7 +4156,7 @@ public class Blocks{ }}; consumePower(2f); - heatRequirement = 8f; + heatRequirement = 10f; maxHeatEfficiency = 2f; inaccuracy = 1f; @@ -4162,11 +4165,11 @@ public class Blocks{ outlineColor = Pal.darkOutline; size = 4; envEnabled |= Env.space; - reload = 80f; + reload = 110f; cooldownTime = reload; recoil = 3f; - range = 290; - shootCone = 15f; + range = 340; + shootCone = 20f; scaledHealth = 180; rotateSpeed = 1.5f; researchCostMultiplier = 0.05f; diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index 0ba1f44c57..c3e369bb3b 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -258,9 +258,10 @@ public class ErekirTechTree{ node(diffuse, Seq.with(new OnSector(two)), () -> { node(sublimate, () -> { - //TODO implement node(titan, Seq.with(new OnSector(four)), () -> { + node(afflict, Seq.with(new OnSector(four)), () -> { + }); }); node(disperse, Seq.with(new OnSector(four)), () -> { diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 281627dca8..6e2c615437 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -167,6 +167,12 @@ public class BulletType extends Content implements Cloneable{ public float bulletInterval = 20f; /** Number of bullet spawned per interval. */ public int intervalBullets = 1; + /** Random spread of interval bullets. */ + public float intervalRandomSpread = 360f; + /** Angle spread between individual interval bullets. */ + public float intervalSpread = 0f; + /** Angle offset for interval bullets. */ + public float intervalAngle = 0f; /** Color used for hit/despawn effects. */ public Color hitColor = Color.white; @@ -496,8 +502,9 @@ public class BulletType extends Content implements Cloneable{ public void updateBulletInterval(Bullet b){ if(intervalBullet != null && b.timer.get(2, bulletInterval)){ + float ang = b.rotation(); for(int i = 0; i < intervalBullets; i++){ - intervalBullet.create(b, b.x, b.y, Mathf.random(360f)); + intervalBullet.create(b, b.x, b.y, ang + Mathf.range(intervalRandomSpread) + intervalAngle + ((i - (intervalBullets - 1f)/2f) * intervalSpread)); } } }