diff --git a/core/src/mindustry/entities/abilities/MoveLightningAbility.java b/core/src/mindustry/entities/abilities/MoveLightningAbility.java index d91a0d6cc8..5b74b73570 100644 --- a/core/src/mindustry/entities/abilities/MoveLightningAbility.java +++ b/core/src/mindustry/entities/abilities/MoveLightningAbility.java @@ -14,7 +14,7 @@ import mindustry.gen.*; public class MoveLightningAbility extends Ability{ /** Lightning damage */ public float damage = 35f; - /** Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed. */ + /** Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed */ public float chance = 0.15f; /** Length of the lightning. <= 0 to disable */ public int length = 12; @@ -24,8 +24,10 @@ public class MoveLightningAbility extends Ability{ public Color color = Color.valueOf("a9d8ff"); /** Shifts where the lightning spawns along the Y axis */ public float offset = 0f; - /** Offset along the X axis. */ + /** Offset along the X axis */ public float width = 0f; + /** Whether the spawn side alternates */ + public boolean alternate = true; /** Jittering heat sprite like the shield on v5 Javelin */ public String heatRegion = "error"; /** Bullet type that is fired. Can be null */ @@ -36,6 +38,8 @@ public class MoveLightningAbility extends Ability{ public Effect shootEffect = Fx.sparkShoot; public boolean parentizeEffects; public Sound shootSound = Sounds.spark; + + protected float side = 1f; MoveLightningAbility(){} @@ -64,10 +68,10 @@ public class MoveLightningAbility extends Ability{ public void update(Unit unit){ float scl = Mathf.clamp((unit.vel().len() - minSpeed) / (maxSpeed - minSpeed)); if(Mathf.chance(Time.delta * chance * scl)){ - float x = unit.x + Angles.trnsx(unit.rotation, offset, width), y = unit.y + Angles.trnsy(unit.rotation, offset, width); + float x = unit.x + Angles.trnsx(unit.rotation, offset, width * side), y = unit.y + Angles.trnsy(unit.rotation, offset, width * side); shootEffect.at(x, y, unit.rotation, color, parentizeEffects ? unit : null); - shootSound.at(unit); + shootSound.at(x, y); if(length > 0){ Lightning.create(unit.team, color, damage, x + unit.vel.x, y + unit.vel.y, unit.rotation, length); @@ -76,6 +80,8 @@ public class MoveLightningAbility extends Ability{ if(bullet != null){ bullet.create(unit, unit.team, x, y, unit.rotation + bulletAngle + Mathf.range(bulletSpread)); } + + if(alternate) side *= -1f; } }