Fix inconsistent borg flashlight state (#33027)

* Fix borg light being stuck on if no cell is inserted

* Fix HandheldLightComponent.Activted becoming out of sync with SharedPointLightComponent.Enabled

* Fix for entities which don't have a handheld light component
This commit is contained in:
eoineoineoin
2025-01-16 10:34:11 +00:00
committed by GitHub
parent 85b9f919af
commit 820517eb38
2 changed files with 11 additions and 2 deletions

View File

@@ -293,8 +293,11 @@ public sealed partial class BorgSystem : SharedBorgSystem
public void BorgActivate(EntityUid uid, BorgChassisComponent component) public void BorgActivate(EntityUid uid, BorgChassisComponent component)
{ {
Popup.PopupEntity(Loc.GetString("borg-mind-added", ("name", Identity.Name(uid, EntityManager))), uid); Popup.PopupEntity(Loc.GetString("borg-mind-added", ("name", Identity.Name(uid, EntityManager))), uid);
Toggle.TryActivate(uid); if (_powerCell.HasDrawCharge(uid))
_powerCell.SetDrawEnabled(uid, _mobState.IsAlive(uid)); {
Toggle.TryActivate(uid);
_powerCell.SetDrawEnabled(uid, _mobState.IsAlive(uid));
}
_appearance.SetData(uid, BorgVisuals.HasPlayer, true); _appearance.SetData(uid, BorgVisuals.HasPlayer, true);
} }

View File

@@ -1,4 +1,5 @@
using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.Light.Components;
using Content.Shared.Toggleable; using Content.Shared.Toggleable;
using ItemTogglePointLightComponent = Content.Shared.Light.Components.ItemTogglePointLightComponent; using ItemTogglePointLightComponent = Content.Shared.Light.Components.ItemTogglePointLightComponent;
@@ -11,6 +12,7 @@ public sealed class ItemTogglePointLightSystem : EntitySystem
{ {
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!; [Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly SharedHandheldLightSystem _handheldLight = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -25,5 +27,9 @@ public sealed class ItemTogglePointLightSystem : EntitySystem
_appearance.SetData(ent, ToggleableLightVisuals.Enabled, args.Activated); _appearance.SetData(ent, ToggleableLightVisuals.Enabled, args.Activated);
_light.SetEnabled(ent.Owner, args.Activated, comp: light); _light.SetEnabled(ent.Owner, args.Activated, comp: light);
if (TryComp<HandheldLightComponent>(ent.Owner, out var handheldLight))
{
_handheldLight.SetActivated(ent.Owner, args.Activated, handheldLight);
}
} }
} }