diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 123c305bae..9718e0cd25 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4426,7 +4426,8 @@ public class Blocks{ disperse = new ItemTurret("disperse"){{ requirements(Category.turret, with(Items.thorium, 50, Items.oxide, 150, Items.silicon, 200, Items.beryllium, 350)); - ammo(Items.tungsten, new BasicBulletType(){{ + ammo( + Items.tungsten, new BasicBulletType(){{ damage = 65; speed = 8.5f; width = height = 16; @@ -4448,6 +4449,58 @@ public class Blocks{ trailRotation = true; trailEffect = Fx.disperseTrail; + hitEffect = despawnEffect = Fx.hitBulletColor; + }}, + Items.thorium, new BasicBulletType(){{ + damage = 90; + reloadMultiplier = 0.85f; + speed = 9.5f; + width = height = 16; + shrinkY = 0.3f; + backSprite = "large-bomb-back"; + sprite = "mine-bullet"; + velocityRnd = 0.5f; + collidesGround = false; + collidesTiles = false; + shootEffect = Fx.shootBig2; + smokeEffect = Fx.shootSmokeDisperse; + frontColor = Color.white; + backColor = trailColor = hitColor = Color.valueOf("e89dbd"); + trailChance = 0.44f; + ammoMultiplier = 2f; + + lifetime = 34f; + rotationOffset = 90f; + trailRotation = true; + trailEffect = Fx.disperseTrail; + + hitEffect = despawnEffect = Fx.hitBulletColor; + }}, + Items.silicon, new BasicBulletType(){{ + damage = 35; + homingPower = 0.03f; + + reloadMultiplier = 0.9f; + speed = 8.5f; + width = height = 16; + shrinkY = 0.3f; + backSprite = "large-bomb-back"; + sprite = "mine-bullet"; + velocityRnd = 0.11f; + collidesGround = false; + collidesTiles = false; + shootEffect = Fx.shootBig2; + smokeEffect = Fx.shootSmokeDisperse; + frontColor = Color.valueOf("dae1ee"); + backColor = trailColor = hitColor = Color.valueOf("858a9b"); + ammoMultiplier = 3f; + + lifetime = 34f; + rotationOffset = 90f; + trailLength = 7; + //for chasing targets + extraRangeMargin = 32f; + hitEffect = despawnEffect = Fx.hitBulletColor; }}); @@ -4503,7 +4556,7 @@ public class Blocks{ coolant = consume(new ConsumeLiquid(Liquids.water, 20f / 60f)); coolantMultiplier = 6.25f; - limitRange(5f); + limitRange(16f); }}; afflict = new PowerTurret("afflict"){{ diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 71329a947f..2c18fa158a 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -141,6 +141,8 @@ public class BulletType extends Content implements Cloneable{ public float rangeOverride = -1f; /** When used in a turret with multiple ammo types, this can be set to a non-zero value to influence range. */ public float rangeChange = 0f; + /** When used in turrets with limitRange() applied, this adds extra range to the bullets that extends past targeting range. Only particularly relevant in vanilla. */ + public float extraRangeMargin = 0f; /** Range initialized in init(). */ public float range = 0f; /** % of block health healed **/ diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 806cbd151a..183cf78743 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -209,7 +209,7 @@ public class Turret extends ReloadTurret{ public void limitRange(BulletType bullet, float margin){ float realRange = bullet.rangeChange + range; //doesn't handle drag - bullet.lifetime = (realRange + margin) / bullet.speed; + bullet.lifetime = (realRange + margin + bullet.extraRangeMargin) / bullet.speed; } public static abstract class AmmoEntry{