EMP disables suit sensors (#24869)
* EMP disables suit sensors * update to supersede and not disable * Revert "update to supersede and not disable" This reverts commit 337028c31af1c0fa2b1838bcf5d6759bfd7ed97c. * separate logic out into just emp events
This commit is contained in:
@@ -72,4 +72,17 @@ public sealed partial class SuitSensorComponent : Component
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("server")]
|
[DataField("server")]
|
||||||
public string? ConnectedServer = null;
|
public string? ConnectedServer = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The previous mode of the suit. This is used to restore the state when an EMP effect ends.
|
||||||
|
/// </summary>
|
||||||
|
[DataField, ViewVariables]
|
||||||
|
public SuitSensorMode PreviousMode = SuitSensorMode.SensorOff;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The previous locked status of the controls. This is used to restore the state when an EMP effect ends.
|
||||||
|
/// This keeps prisoner jumpsuits/internal implants from becoming unlocked after an EMP.
|
||||||
|
/// </summary>
|
||||||
|
[DataField, ViewVariables]
|
||||||
|
public bool PreviousControlsLocked = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ using Content.Server.Access.Systems;
|
|||||||
using Content.Server.DeviceNetwork;
|
using Content.Server.DeviceNetwork;
|
||||||
using Content.Server.DeviceNetwork.Components;
|
using Content.Server.DeviceNetwork.Components;
|
||||||
using Content.Server.DeviceNetwork.Systems;
|
using Content.Server.DeviceNetwork.Systems;
|
||||||
|
using Content.Server.Emp;
|
||||||
using Content.Server.GameTicking;
|
using Content.Server.GameTicking;
|
||||||
using Content.Server.Medical.CrewMonitoring;
|
using Content.Server.Medical.CrewMonitoring;
|
||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
using Content.Server.Station.Systems;
|
using Content.Server.Station.Systems;
|
||||||
using Content.Shared.Damage;
|
using Content.Shared.Damage;
|
||||||
|
using Content.Shared.Emp;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
using Content.Shared.Inventory.Events;
|
using Content.Shared.Inventory.Events;
|
||||||
using Content.Shared.Medical.SuitSensor;
|
using Content.Shared.Medical.SuitSensor;
|
||||||
@@ -44,6 +46,8 @@ public sealed class SuitSensorSystem : EntitySystem
|
|||||||
SubscribeLocalEvent<SuitSensorComponent, GetVerbsEvent<Verb>>(OnVerb);
|
SubscribeLocalEvent<SuitSensorComponent, GetVerbsEvent<Verb>>(OnVerb);
|
||||||
SubscribeLocalEvent<SuitSensorComponent, EntGotInsertedIntoContainerMessage>(OnInsert);
|
SubscribeLocalEvent<SuitSensorComponent, EntGotInsertedIntoContainerMessage>(OnInsert);
|
||||||
SubscribeLocalEvent<SuitSensorComponent, EntGotRemovedFromContainerMessage>(OnRemove);
|
SubscribeLocalEvent<SuitSensorComponent, EntGotRemovedFromContainerMessage>(OnRemove);
|
||||||
|
SubscribeLocalEvent<SuitSensorComponent, EmpPulseEvent>(OnEmpPulse);
|
||||||
|
SubscribeLocalEvent<SuitSensorComponent, EmpDisabledRemoved>(OnEmpFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnUnpaused(EntityUid uid, SuitSensorComponent component, ref EntityUnpausedEvent args)
|
private void OnUnpaused(EntityUid uid, SuitSensorComponent component, ref EntityUnpausedEvent args)
|
||||||
@@ -239,6 +243,24 @@ public sealed class SuitSensorSystem : EntitySystem
|
|||||||
component.User = null;
|
component.User = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnEmpPulse(EntityUid uid, SuitSensorComponent component, ref EmpPulseEvent args)
|
||||||
|
{
|
||||||
|
args.Affected = true;
|
||||||
|
args.Disabled = true;
|
||||||
|
|
||||||
|
component.PreviousMode = component.Mode;
|
||||||
|
SetSensor(uid, SuitSensorMode.SensorOff, null, component);
|
||||||
|
|
||||||
|
component.PreviousControlsLocked = component.ControlsLocked;
|
||||||
|
component.ControlsLocked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEmpFinished(EntityUid uid, SuitSensorComponent component, ref EmpDisabledRemoved args)
|
||||||
|
{
|
||||||
|
SetSensor(uid, component.PreviousMode, null, component);
|
||||||
|
component.ControlsLocked = component.PreviousControlsLocked;
|
||||||
|
}
|
||||||
|
|
||||||
private Verb CreateVerb(EntityUid uid, SuitSensorComponent component, EntityUid userUid, SuitSensorMode mode)
|
private Verb CreateVerb(EntityUid uid, SuitSensorComponent component, EntityUid userUid, SuitSensorMode mode)
|
||||||
{
|
{
|
||||||
return new Verb()
|
return new Verb()
|
||||||
|
|||||||
Reference in New Issue
Block a user