Emp more effects (#14550)

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
Slava0135
2023-05-06 04:38:09 +03:00
committed by GitHub
parent 7b667663fa
commit 4d47562dde
18 changed files with 245 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
using Content.Server.DeviceNetwork;
using Content.Server.DeviceNetwork.Components;
using Content.Server.DeviceNetwork.Systems;
using Content.Server.Emp;
using Content.Server.Power.Components;
using Content.Shared.ActionBlocker;
using Content.Shared.DeviceNetwork;
@@ -57,6 +58,9 @@ public sealed class SurveillanceCameraSystem : EntitySystem
SubscribeLocalEvent<SurveillanceCameraComponent, SurveillanceCameraSetupSetName>(OnSetName);
SubscribeLocalEvent<SurveillanceCameraComponent, SurveillanceCameraSetupSetNetwork>(OnSetNetwork);
SubscribeLocalEvent<SurveillanceCameraComponent, GetVerbsEvent<AlternativeVerb>>(AddVerbs);
SubscribeLocalEvent<SurveillanceCameraComponent, EmpPulseEvent>(OnEmpPulse);
SubscribeLocalEvent<SurveillanceCameraComponent, EmpDisabledRemoved>(OnEmpDisabledRemoved);
}
private void OnPacketReceived(EntityUid uid, SurveillanceCameraComponent component, DeviceNetworkPacketEvent args)
@@ -271,6 +275,10 @@ public sealed class SurveillanceCameraSystem : EntitySystem
if (setting)
{
var attemptEv = new SurveillanceCameraSetActiveAttemptEvent();
RaiseLocalEvent(camera, ref attemptEv);
if (attemptEv.Cancelled)
return;
component.Active = setting;
}
else
@@ -392,6 +400,21 @@ public sealed class SurveillanceCameraSystem : EntitySystem
_appearance.SetData(uid, SurveillanceCameraVisualsKey.Key, key, appearance);
}
private void OnEmpPulse(EntityUid uid, SurveillanceCameraComponent component, ref EmpPulseEvent args)
{
if (component.Active)
{
args.Affected = true;
args.Disabled = true;
SetActive(uid, false);
}
}
private void OnEmpDisabledRemoved(EntityUid uid, SurveillanceCameraComponent component, ref EmpDisabledRemoved args)
{
SetActive(uid, true);
}
}
public sealed class OnSurveillanceCameraViewerAddEvent : EntityEventArgs
@@ -414,3 +437,6 @@ public sealed class SurveillanceCameraDeactivateEvent : EntityEventArgs
Camera = camera;
}
}
[ByRefEvent]
public record struct SurveillanceCameraSetActiveAttemptEvent(bool Cancelled);