diff --git a/core/src/mindustry/entities/abilities/StatusFieldAbility.java b/core/src/mindustry/entities/abilities/StatusFieldAbility.java index 4d90de75cfbd..7860c059772c 100644 --- a/core/src/mindustry/entities/abilities/StatusFieldAbility.java +++ b/core/src/mindustry/entities/abilities/StatusFieldAbility.java @@ -1,17 +1,27 @@ package mindustry.entities.abilities; import arc.*; +import arc.audio.*; +import arc.graphics.*; +import arc.graphics.g2d.*; import arc.math.*; +import arc.struct.*; import arc.util.*; +import mindustry.*; import mindustry.content.*; import mindustry.entities.*; +import mindustry.entities.abilities.*; +import mindustry.game.*; import mindustry.gen.*; +import mindustry.graphics.*; import mindustry.type.*; +import static mindustry.Vars.*; + public class StatusFieldAbility extends Ability{ public StatusEffect effect; public float duration = 60, reload = 100, range = 20; - public boolean onShoot = false; + public boolean onShoot = false, atNotShoot = false; public Effect applyEffect = Fx.none; public Effect activeEffect = Fx.overdriveWave; public float effectX, effectY; @@ -37,14 +47,16 @@ public String localized(){ public void update(Unit unit){ timer += Time.delta; - if(timer >= reload && (!onShoot || unit.isShooting)){ - Units.nearby(unit.team, unit.x, unit.y, range, other -> { - other.apply(effect, duration); - applyEffect.at(other, parentizeEffects); - }); - - float x = unit.x + Angles.trnsx(unit.rotation, effectY, effectX), y = unit.y + Angles.trnsy(unit.rotation, effectY, effectX); - activeEffect.at(x, y, effectSizeParam ? range : unit.rotation, parentizeEffects ? unit : null); + if(timer >= reload){ + if(!atNotShoot && unit.isShooting || !onShoot && !unit.isShooting){ + Units.nearby(unit.team, unit.x, unit.y, range, other -> { + other.apply(effect, duration); + applyEffect.at(other, parentizeEffects); + }); + float x = unit.x + Angles.trnsx(unit.rotation, effectY, effectX), y = unit.y + Angles.trnsy(unit.rotation, effectY, effectX); + activeEffect.at(x, y, effectSizeParam ? range : unit.rotation, parentizeEffects ? unit : null); + } + timer %= reload; timer = 0f; }