]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Bug fix for APCPowerReceiverBattery (#40188)
authorchromiumboy <50505512+chromiumboy@users.noreply.github.com>
Sun, 7 Sep 2025 14:52:27 +0000 (09:52 -0500)
committerGitHub <noreply@github.com>
Sun, 7 Sep 2025 14:52:27 +0000 (16:52 +0200)
Initial commit

Content.Server/Power/Components/ApcPowerReceiverComponent.cs
Content.Server/Power/EntitySystems/PowerNetSystem.cs

index bfd096a2539940612abeb6b9b24cf2494a54d732..80be62eaec7cf4f90117eeb6693a57f24900ca07 100644 (file)
@@ -33,8 +33,6 @@ namespace Content.Server.Power.Components
             set
             {
                 _needsPower = value;
-                // Reset this so next tick will do a power update.
-                Recalculate = true;
             }
         }
 
@@ -51,9 +49,6 @@ namespace Content.Server.Power.Components
             set => NetworkLoad.Enabled = !value;
         }
 
-        // TODO Is this needed? It forces a PowerChangedEvent when NeedsPower is toggled even if it changes to the same state.
-        public bool Recalculate;
-
         [ViewVariables]
         public PowerState.Load NetworkLoad { get; } = new PowerState.Load
         {
index 1262e231d755d2675244965c8cbfe3a7a8150e3d..6a69550fcfdf45bb4c805045caa2453ac4bc8461 100644 (file)
@@ -347,6 +347,10 @@ namespace Content.Server.Power.EntitySystems
                 // Check if the entity has an internal battery
                 if (_apcBatteryQuery.TryComp(uid, out var apcBattery) && _batteryQuery.TryComp(uid, out var battery))
                 {
+                    metadata = MetaData(uid);
+                    if (Paused(uid, metadata))
+                        continue;
+
                     apcReceiver.Load = apcBattery.IdleLoad;
 
                     // Try to draw power from the battery if there isn't sufficient external power
@@ -369,7 +373,6 @@ namespace Content.Server.Power.EntitySystems
                     if (apcBattery.Enabled != enableBattery)
                     {
                         apcBattery.Enabled = enableBattery;
-                        metadata = MetaData(uid);
                         Dirty(uid, apcBattery, metadata);
 
                         var apcBatteryEv = new ApcPowerReceiverBatteryChangedEvent(enableBattery);
@@ -382,14 +385,13 @@ namespace Content.Server.Power.EntitySystems
                 }
 
                 // If new value is the same as the old, then exit
-                if (!apcReceiver.Recalculate && apcReceiver.Powered == powered)
+                if (apcReceiver.Powered == powered)
                     continue;
 
                 metadata ??= MetaData(uid);
                 if (Paused(uid, metadata))
                     continue;
 
-                apcReceiver.Recalculate = false;
                 apcReceiver.Powered = powered;
                 Dirty(uid, apcReceiver, metadata);