From 6f02e6c19c44de1ffe0f2255c67df74924e35cdf Mon Sep 17 00:00:00 2001 From: YotaXP Date: Fri, 10 Oct 2025 19:01:33 -0400 Subject: [PATCH] Decouple power sink from tickrate (#40789) * Fix typo in `BatterySystem.ChangeCharge`. * Decouple power sink behavior from tickrate. * Fix power sink's price per joule --- Content.Server/Power/EntitySystems/BatterySystem.cs | 2 +- Content.Server/PowerSink/PowerSinkSystem.cs | 2 +- Resources/Prototypes/Entities/Objects/Power/powersink.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Server/Power/EntitySystems/BatterySystem.cs b/Content.Server/Power/EntitySystems/BatterySystem.cs index 28b14f6925..c49a2f0f6b 100644 --- a/Content.Server/Power/EntitySystems/BatterySystem.cs +++ b/Content.Server/Power/EntitySystems/BatterySystem.cs @@ -171,7 +171,7 @@ namespace Content.Server.Power.EntitySystems if (!Resolve(uid, ref battery)) return 0; - var newValue = Math.Clamp(0, battery.CurrentCharge + value, battery.MaxCharge); + var newValue = Math.Clamp(battery.CurrentCharge + value, 0, battery.MaxCharge); var delta = newValue - battery.CurrentCharge; battery.CurrentCharge = newValue; diff --git a/Content.Server/PowerSink/PowerSinkSystem.cs b/Content.Server/PowerSink/PowerSinkSystem.cs index 2bf9046cc3..df0980883d 100644 --- a/Content.Server/PowerSink/PowerSinkSystem.cs +++ b/Content.Server/PowerSink/PowerSinkSystem.cs @@ -66,7 +66,7 @@ namespace Content.Server.PowerSink if (!transform.Anchored) continue; - _battery.SetCharge(entity, battery.CurrentCharge + networkLoad.NetworkLoad.ReceivingPower / 1000, battery); + _battery.ChangeCharge(entity, networkLoad.NetworkLoad.ReceivingPower * frameTime, battery); var currentBatteryThreshold = battery.CurrentCharge / battery.MaxCharge; diff --git a/Resources/Prototypes/Entities/Objects/Power/powersink.yml b/Resources/Prototypes/Entities/Objects/Power/powersink.yml index 7385b9a825..089610883c 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powersink.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powersink.yml @@ -40,8 +40,8 @@ acts: [ "Destruction" ] - type: PowerSink - type: Battery - maxCharge: 7500000 - pricePerJoule: 0.0003 + maxCharge: 250000000 + pricePerJoule: 0.000009 - type: ExaminableBattery - type: PowerConsumer voltage: High