diff --git a/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs b/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs index 0a216217b7..4d116d9b38 100644 --- a/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs +++ b/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs @@ -92,6 +92,8 @@ namespace OpenRA.Mods.Common.Traits totalProvided += amount; else if (amount < 0) totalDrained -= amount; + + UpdatePowerState(); } public void RemoveActor(Actor a) @@ -108,6 +110,21 @@ namespace OpenRA.Mods.Common.Traits totalProvided -= amount; else if (amount < 0) totalDrained += amount; + + UpdatePowerState(); + } + + void UpdatePowerState() + { + isLowPower = ExcessPower < 0; + + if (isLowPower != wasLowPower) + UpdatePowerRequiringActors(); + + if (isLowPower && !wasLowPower) + nextPowerAdviceTime = 0; + + wasLowPower = isLowPower; } void ITick.Tick(Actor self) @@ -129,18 +146,9 @@ namespace OpenRA.Mods.Common.Traits } wasHackEnabled = devMode.UnlimitedPower; + UpdatePowerState(); } - isLowPower = ExcessPower < 0; - - if (isLowPower != wasLowPower) - UpdatePowerRequiringActors(); - - if (isLowPower && !wasLowPower) - nextPowerAdviceTime = 0; - - wasLowPower = isLowPower; - if (--nextPowerAdviceTime <= 0) { if (isLowPower)