Hotfix for errors in handheld lights and radio jammers (#25880)

This commit is contained in:
Tayrtahn
2024-03-06 08:44:14 -05:00
committed by GitHub
parent 2935e5bd78
commit e5536e0652
2 changed files with 7 additions and 4 deletions

View File

@@ -247,13 +247,16 @@ namespace Content.Server.Light.EntitySystems
public void TryUpdate(Entity<HandheldLightComponent> uid, float frameTime) public void TryUpdate(Entity<HandheldLightComponent> uid, float frameTime)
{ {
var component = uid.Comp; var component = uid.Comp;
if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery) && if (!_powerCell.TryGetBatteryFromSlot(uid, out var batteryUid, out var battery, null) &&
!TryComp(uid, out battery)) !TryComp(uid, out battery))
{ {
TurnOff(uid, false); TurnOff(uid, false);
return; return;
} }
if (batteryUid == null)
return;
var appearanceComponent = EntityManager.GetComponentOrNull<AppearanceComponent>(uid); var appearanceComponent = EntityManager.GetComponentOrNull<AppearanceComponent>(uid);
var fraction = battery.CurrentCharge / battery.MaxCharge; var fraction = battery.CurrentCharge / battery.MaxCharge;
@@ -270,7 +273,7 @@ namespace Content.Server.Light.EntitySystems
_appearance.SetData(uid, HandheldLightVisuals.Power, HandheldLightPowerStates.Dying, appearanceComponent); _appearance.SetData(uid, HandheldLightVisuals.Power, HandheldLightPowerStates.Dying, appearanceComponent);
} }
if (component.Activated && !_battery.TryUseCharge(uid, component.Wattage * frameTime, battery)) if (component.Activated && !_battery.TryUseCharge(batteryUid.Value, component.Wattage * frameTime, battery))
TurnOff(uid, false); TurnOff(uid, false);
UpdateLevel(uid); UpdateLevel(uid);

View File

@@ -30,8 +30,8 @@ public sealed class JammerSystem : EntitySystem
var query = EntityQueryEnumerator<ActiveRadioJammerComponent, RadioJammerComponent>(); var query = EntityQueryEnumerator<ActiveRadioJammerComponent, RadioJammerComponent>();
while (query.MoveNext(out var uid, out var _, out var jam)) while (query.MoveNext(out var uid, out var _, out var jam))
{ {
if (_powerCell.TryGetBatteryFromSlot(uid, out var battery) && if (_powerCell.TryGetBatteryFromSlot(uid, out var batteryUid, out var battery) &&
!_battery.TryUseCharge(uid, jam.Wattage * frameTime, battery)) !_battery.TryUseCharge(batteryUid.Value, jam.Wattage * frameTime, battery))
{ {
RemComp<ActiveRadioJammerComponent>(uid); RemComp<ActiveRadioJammerComponent>(uid);
} }