From 0604c93d502441ec6e6025ad6aa1160f569edc12 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Tue, 2 May 2023 20:10:19 -0400 Subject: [PATCH] Defibrillator (#15922) Co-authored-by: metalgearsloth --- .../Administration/UI/AdminMenuWindow.xaml | 2 +- .../Administration/UI/AdminMenuWindow.xaml.cs | 1 + Content.Client/Ghost/UI/ReturnToBodyEui.cs | 44 +++ Content.Client/Ghost/UI/ReturnToBodyMenu.cs | 59 ++++ Content.Server/Atmos/Miasma/MiasmaSystem.cs | 17 +- Content.Server/Ghost/ReturnToBodyEui.cs | 32 +++ Content.Server/Medical/DefibrillatorSystem.cs | 257 ++++++++++++++++++ Content.Server/Medical/HealingSystem.cs | 5 +- .../Damage/Systems/DamageableSystem.cs | 6 + .../Ghost/ReturnToBodyEuiMessage.cs | 15 + .../Medical/DefibrillatorComponent.cs | 100 +++++++ .../Mobs/Components/MobThresholdsComponent.cs | 26 +- .../Systems/MobStateSystem.StateMachine.cs | 2 +- .../Mobs/Systems/MobThresholdSystem.cs | 53 ++-- Resources/Audio/Items/Defib/defib_SaftyOn.ogg | Bin 0 -> 7521 bytes Resources/Audio/Items/Defib/defib_charge.ogg | Bin 0 -> 28590 bytes Resources/Audio/Items/Defib/defib_failed.ogg | Bin 0 -> 8569 bytes Resources/Audio/Items/Defib/defib_ready.ogg | Bin 0 -> 9051 bytes .../Audio/Items/Defib/defib_saftyOff.ogg | Bin 0 -> 7553 bytes Resources/Audio/Items/Defib/defib_success.ogg | Bin 0 -> 7926 bytes Resources/Audio/Items/Defib/defib_zap.ogg | Bin 0 -> 13036 bytes Resources/Locale/en-US/ghost/ghost-gui.ftl | 3 + .../medical/components/defibrillator.ftl | 3 + .../Objects/Specific/Medical/defib.yml | 67 +++++ .../Entities/Structures/Machines/lathe.yml | 1 + .../Structures/Wallmounts/defib_cabinet.yml | 101 +++++++ .../Prototypes/Recipes/Lathes/medical.yml | 7 + .../Specific/Medical/defib.rsi/icon.png | Bin 0 -> 808 bytes .../Medical/defib.rsi/inhand-left.png | Bin 0 -> 364 bytes .../Medical/defib.rsi/inhand-right.png | Bin 0 -> 364 bytes .../Specific/Medical/defib.rsi/meta.json | 28 ++ .../Specific/Medical/defib.rsi/ready.png | Bin 0 -> 139 bytes .../Specific/Medical/defib.rsi/screen.png | Bin 0 -> 160 bytes .../Wallmounts/defib_cabinet.rsi/closed.png | Bin 0 -> 357 bytes .../Wallmounts/defib_cabinet.rsi/fill.png | Bin 0 -> 363 bytes .../Wallmounts/defib_cabinet.rsi/frame.png | Bin 0 -> 281 bytes .../Wallmounts/defib_cabinet.rsi/meta.json | 23 ++ .../Wallmounts/defib_cabinet.rsi/open.png | Bin 0 -> 377 bytes 38 files changed, 796 insertions(+), 56 deletions(-) create mode 100644 Content.Client/Ghost/UI/ReturnToBodyEui.cs create mode 100644 Content.Client/Ghost/UI/ReturnToBodyMenu.cs create mode 100644 Content.Server/Ghost/ReturnToBodyEui.cs create mode 100644 Content.Server/Medical/DefibrillatorSystem.cs create mode 100644 Content.Shared/Ghost/ReturnToBodyEuiMessage.cs create mode 100644 Content.Shared/Medical/DefibrillatorComponent.cs create mode 100644 Resources/Audio/Items/Defib/defib_SaftyOn.ogg create mode 100644 Resources/Audio/Items/Defib/defib_charge.ogg create mode 100644 Resources/Audio/Items/Defib/defib_failed.ogg create mode 100644 Resources/Audio/Items/Defib/defib_ready.ogg create mode 100644 Resources/Audio/Items/Defib/defib_saftyOff.ogg create mode 100644 Resources/Audio/Items/Defib/defib_success.ogg create mode 100644 Resources/Audio/Items/Defib/defib_zap.ogg create mode 100644 Resources/Locale/en-US/medical/components/defibrillator.ftl create mode 100644 Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml create mode 100644 Resources/Prototypes/Entities/Structures/Wallmounts/defib_cabinet.yml create mode 100644 Resources/Textures/Objects/Specific/Medical/defib.rsi/icon.png create mode 100644 Resources/Textures/Objects/Specific/Medical/defib.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Medical/defib.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Medical/defib.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Medical/defib.rsi/ready.png create mode 100644 Resources/Textures/Objects/Specific/Medical/defib.rsi/screen.png create mode 100644 Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/closed.png create mode 100644 Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/fill.png create mode 100644 Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/frame.png create mode 100644 Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/meta.json create mode 100644 Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/open.png diff --git a/Content.Client/Administration/UI/AdminMenuWindow.xaml b/Content.Client/Administration/UI/AdminMenuWindow.xaml index 458184db35..49eb9c0de6 100644 --- a/Content.Client/Administration/UI/AdminMenuWindow.xaml +++ b/Content.Client/Administration/UI/AdminMenuWindow.xaml @@ -1,4 +1,4 @@ - + { + SendMessage(new ReturnToBodyMessage(false)); + _menu.Close(); + }; + + _menu.AcceptButton.OnPressed += _ => + { + SendMessage(new ReturnToBodyMessage(true)); + _menu.Close(); + }; + } + + public override void Opened() + { + IoCManager.Resolve().RequestWindowAttention(); + _menu.OpenCentered(); + } + + public override void Closed() + { + base.Closed(); + + SendMessage(new ReturnToBodyMessage(false)); + _menu.Close(); + } + +} diff --git a/Content.Client/Ghost/UI/ReturnToBodyMenu.cs b/Content.Client/Ghost/UI/ReturnToBodyMenu.cs new file mode 100644 index 0000000000..94b5303f0d --- /dev/null +++ b/Content.Client/Ghost/UI/ReturnToBodyMenu.cs @@ -0,0 +1,59 @@ +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using static Robust.Client.UserInterface.Controls.BoxContainer; + +namespace Content.Client.Ghost.UI; + +public sealed class ReturnToBodyMenu : DefaultWindow +{ + public readonly Button DenyButton; + public readonly Button AcceptButton; + + public ReturnToBodyMenu() + { + Title = Loc.GetString("ghost-return-to-body-title"); + + Contents.AddChild(new BoxContainer + { + Orientation = LayoutOrientation.Vertical, + Children = + { + new BoxContainer + { + Orientation = LayoutOrientation.Vertical, + Children = + { + (new Label() + { + Text = Loc.GetString("ghost-return-to-body-text") + }), + new BoxContainer + { + Orientation = LayoutOrientation.Horizontal, + Align = AlignMode.Center, + Children = + { + (AcceptButton = new Button + { + Text = Loc.GetString("accept-cloning-window-accept-button"), + }), + + (new Control() + { + MinSize = (20, 0) + }), + + (DenyButton = new Button + { + Text = Loc.GetString("accept-cloning-window-deny-button"), + }) + } + }, + } + }, + } + }); + } +} + diff --git a/Content.Server/Atmos/Miasma/MiasmaSystem.cs b/Content.Server/Atmos/Miasma/MiasmaSystem.cs index d694e704fc..72748004a9 100644 --- a/Content.Server/Atmos/Miasma/MiasmaSystem.cs +++ b/Content.Server/Atmos/Miasma/MiasmaSystem.cs @@ -132,6 +132,7 @@ namespace Content.Server.Atmos.Miasma // Core rotting stuff SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnTempChange); + SubscribeLocalEvent(OnRottingMobStateChanged); SubscribeLocalEvent(OnMobStateChanged); SubscribeLocalEvent(OnGibbed); SubscribeLocalEvent(OnExamined); @@ -174,10 +175,24 @@ namespace Content.Server.Atmos.Miasma } } + private void OnRottingMobStateChanged(EntityUid uid, RottingComponent component, MobStateChangedEvent args) + { + if (args.NewMobState == MobState.Dead) + return; + RemCompDeferred(uid, component); + } + + public bool IsRotting(EntityUid uid, PerishableComponent? perishable = null, MetaDataComponent? metadata = null) + { + if (!Resolve(uid, ref perishable, ref metadata, false)) + return true; + return IsRotting(perishable, metadata); + } + /// /// Has enough time passed for to start rotting? /// - private bool IsRotting(PerishableComponent perishable, MetaDataComponent? metadata = null) + public bool IsRotting(PerishableComponent perishable, MetaDataComponent? metadata = null) { if (perishable.TimeOfDeath == TimeSpan.Zero) return false; diff --git a/Content.Server/Ghost/ReturnToBodyEui.cs b/Content.Server/Ghost/ReturnToBodyEui.cs new file mode 100644 index 0000000000..b3903f8434 --- /dev/null +++ b/Content.Server/Ghost/ReturnToBodyEui.cs @@ -0,0 +1,32 @@ +using Content.Server.EUI; +using Content.Server.Players; +using Content.Shared.Eui; +using Content.Shared.Ghost; + +namespace Content.Server.Ghost; + +public sealed class ReturnToBodyEui : BaseEui +{ + private readonly Mind.Mind _mind; + + public ReturnToBodyEui(Mind.Mind mind) + { + _mind = mind; + } + + public override void HandleMessage(EuiMessageBase msg) + { + base.HandleMessage(msg); + + if (msg is not ReturnToBodyMessage choice || + !choice.Accepted) + { + Close(); + return; + } + + if (_mind.TryGetSession(out var session)) + session.ContentData()!.Mind?.UnVisit(); + Close(); + } +} diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs new file mode 100644 index 0000000000..d2dde73b5f --- /dev/null +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -0,0 +1,257 @@ +using Content.Server.Atmos.Miasma; +using Content.Server.Chat.Systems; +using Content.Server.DoAfter; +using Content.Server.Electrocution; +using Content.Server.EUI; +using Content.Server.Ghost; +using Content.Server.Mind.Components; +using Content.Server.Popups; +using Content.Server.PowerCell; +using Content.Shared.Damage; +using Content.Shared.DoAfter; +using Content.Shared.Interaction; +using Content.Shared.Interaction.Components; +using Content.Shared.Interaction.Events; +using Content.Shared.Medical; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Timing; +using Content.Shared.Toggleable; +using Robust.Server.Player; +using Robust.Shared.Timing; + +namespace Content.Server.Medical; + +/// +/// This handles interactions and logic relating to +/// +public sealed class DefibrillatorSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; + [Dependency] private readonly ChatSystem _chatManager = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly DoAfterSystem _doAfter = default!; + [Dependency] private readonly ElectrocutionSystem _electrocution = default!; + [Dependency] private readonly EuiManager _euiManager = default!; + [Dependency] private readonly MiasmaSystem _miasma = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly UseDelaySystem _useDelay = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnUnpaused); + SubscribeLocalEvent(OnUseInHand); + SubscribeLocalEvent(OnPowerCellSlotEmpty); + SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnDoAfter); + } + + private void OnUnpaused(EntityUid uid, DefibrillatorComponent component, ref EntityUnpausedEvent args) + { + component.NextZapTime += args.PausedTime; + } + + private void OnUseInHand(EntityUid uid, DefibrillatorComponent component, UseInHandEvent args) + { + if (args.Handled || _useDelay.ActiveDelay(uid)) + return; + + if (!TryToggle(uid, component, args.User)) + return; + args.Handled = true; + _useDelay.BeginDelay(uid); + } + + private void OnPowerCellSlotEmpty(EntityUid uid, DefibrillatorComponent component, ref PowerCellSlotEmptyEvent args) + { + TryDisable(uid, component); + } + + private void OnAfterInteract(EntityUid uid, DefibrillatorComponent component, AfterInteractEvent args) + { + if (args.Handled || args.Target is not { } target) + return; + args.Handled = TryStartZap(uid, target, args.User, component); + } + + private void OnDoAfter(EntityUid uid, DefibrillatorComponent component, DefibrillatorZapDoAfterEvent args) + { + if (args.Handled || args.Cancelled) + return; + + if (args.Target is not { } target) + return; + + if (!CanZap(uid, target, args.User, component)) + return; + + args.Handled = true; + Zap(uid, target, args.User, component); + } + + public bool TryToggle(EntityUid uid, DefibrillatorComponent? component = null, EntityUid? user = null) + { + if (!Resolve(uid, ref component)) + return false; + + return component.Enabled + ? TryDisable(uid, component) + : TryEnable(uid, component, user); + } + + public bool TryEnable(EntityUid uid, DefibrillatorComponent? component = null, EntityUid? user = null) + { + if (!Resolve(uid, ref component)) + return false; + + if (component.Enabled) + return false; + + if (_powerCell.HasActivatableCharge(uid)) + return false; + + component.Enabled = true; + _appearance.SetData(uid, ToggleVisuals.Toggled, true); + _audio.PlayPvs(component.PowerOnSound, uid); + return true; + } + + public bool TryDisable(EntityUid uid, DefibrillatorComponent? component = null) + { + if (!Resolve(uid, ref component)) + return false; + + if (!component.Enabled) + return false; + + component.Enabled = false; + _appearance.SetData(uid, ToggleVisuals.Toggled, false); + _audio.PlayPvs(component.PowerOffSound, uid); + return true; + } + + public bool CanZap(EntityUid uid, EntityUid target, EntityUid? user = null, DefibrillatorComponent? component = null) + { + if (!Resolve(uid, ref component)) + return false; + + if (!component.Enabled) + { + if (user != null) + _popup.PopupEntity(Loc.GetString("defibrillator-not-on"), uid, user.Value); + return false; + } + + if (_timing.CurTime < component.NextZapTime) + return false; + + if (!TryComp(target, out var mobState) || _miasma.IsRotting(target)) + return false; + + if (!_powerCell.HasActivatableCharge(uid, user: user)) + return false; + + if (_mobState.IsAlive(target, mobState)) + return false; + + return true; + } + + public bool TryStartZap(EntityUid uid, EntityUid target, EntityUid user, DefibrillatorComponent? component = null) + { + if (!Resolve(uid, ref component)) + return false; + + if (!CanZap(uid, target, user, component)) + return false; + + _audio.PlayPvs(component.ChargeSound, uid); + return _doAfter.TryStartDoAfter(new DoAfterArgs(user, component.DoAfterDuration, new DefibrillatorZapDoAfterEvent(), + uid, target, uid) + { + BlockDuplicate = true, + BreakOnUserMove = true, + BreakOnTargetMove = true, + BreakOnHandChange = true, + NeedHand = true + }); + } + + public void Zap(EntityUid uid, EntityUid target, EntityUid user, DefibrillatorComponent? component = null, MobStateComponent? mob = null, MobThresholdsComponent? thresholds = null) + { + if (!Resolve(uid, ref component) || !Resolve(target, ref mob, ref thresholds, false)) + return; + + // clowns zap themselves + if (HasComp(user) && user != target) + { + Zap(uid, user, user, component, mob, thresholds); + return; + } + + if (!_powerCell.TryUseActivatableCharge(uid, user: user)) + return; + + _mobThreshold.SetAllowRevives(target, true, thresholds); + _audio.PlayPvs(component.ZapSound, uid); + _electrocution.TryDoElectrocution(target, null, component.ZapDamage, component.WritheDuration, true, ignoreInsulation: true); + + if (_mobState.IsIncapacitated(target, mob)) + _damageable.TryChangeDamage(target, component.ZapHeal, true, origin: uid); + + component.NextZapTime = _timing.CurTime + component.ZapDelay; + _appearance.SetData(uid, DefibrillatorVisuals.Ready, false); + _mobState.ChangeMobState(target, MobState.Critical, mob, uid); + _mobThreshold.SetAllowRevives(target, false, thresholds); + + IPlayerSession? session = null; + if (TryComp(target, out var mindComp) && + mindComp.Mind?.UserId != null && + _playerManager.TryGetSessionById(mindComp.Mind.UserId.Value, out session)) + { + // notify them they're being revived. + if (mindComp.Mind.CurrentEntity != target) + { + _chatManager.TrySendInGameICMessage(uid, Loc.GetString("defibrillator-ghosted"), + InGameICChatType.Speak, true, true); + _euiManager.OpenEui(new ReturnToBodyEui(mindComp.Mind), session); + } + } + else + { + _chatManager.TrySendInGameICMessage(uid, Loc.GetString("defibrillator-no-mind"), + InGameICChatType.Speak, true, true); + } + + var sound = _mobState.IsAlive(target, mob) && session != null + ? component.SuccessSound + : component.FailureSound; + _audio.PlayPvs(sound, uid); + + // if we don't have enough power left for another shot, turn it off + if (!_powerCell.HasActivatableCharge(uid)) + TryDisable(uid, component); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var defib)) + { + if (_timing.CurTime < defib.NextZapTime) + continue; + _audio.PlayPvs(defib.ReadySound, uid); + _appearance.SetData(uid, DefibrillatorVisuals.Ready, true); + } + } +} diff --git a/Content.Server/Medical/HealingSystem.cs b/Content.Server/Medical/HealingSystem.cs index a7f69159bd..bca0a714ee 100644 --- a/Content.Server/Medical/HealingSystem.cs +++ b/Content.Server/Medical/HealingSystem.cs @@ -30,7 +30,6 @@ public sealed class HealingSystem : EntitySystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly StackSystem _stacks = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; - [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; @@ -49,7 +48,7 @@ public sealed class HealingSystem : EntitySystem if (!TryComp(args.Used, out HealingComponent? healing)) return; - if (args.Handled || args.Cancelled || _mobStateSystem.IsDead(uid)) + if (args.Handled || args.Cancelled) return; if (component.DamageContainerID is not null && !component.DamageContainerID.Equals(component.DamageContainerID)) @@ -138,7 +137,7 @@ public sealed class HealingSystem : EntitySystem private bool TryHeal(EntityUid uid, EntityUid user, EntityUid target, HealingComponent component) { - if (_mobStateSystem.IsDead(target) || !TryComp(target, out var targetDamage)) + if (!TryComp(target, out var targetDamage)) return false; if (component.DamageContainerID is not null && diff --git a/Content.Shared/Damage/Systems/DamageableSystem.cs b/Content.Shared/Damage/Systems/DamageableSystem.cs index e7eda3bb1b..f2644d647c 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.cs @@ -2,6 +2,8 @@ using System.Linq; using Content.Shared.Damage.Prototypes; using Content.Shared.FixedPoint; using Content.Shared.Inventory; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; using Content.Shared.Radiation.Events; using Content.Shared.Rejuvenate; using Robust.Shared.GameStates; @@ -16,6 +18,7 @@ namespace Content.Shared.Damage [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly INetManager _netMan = default!; + [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; public override void Initialize() { @@ -264,7 +267,10 @@ namespace Content.Shared.Damage private void OnRejuvenate(EntityUid uid, DamageableComponent component, RejuvenateEvent args) { + TryComp(uid, out var thresholds); + _mobThreshold.SetAllowRevives(uid, true, thresholds); // do this so that the state changes when we set the damage SetAllDamage(uid, component, 0); + _mobThreshold.SetAllowRevives(uid, false, thresholds); } private void DamageableHandleState(EntityUid uid, DamageableComponent component, ref ComponentHandleState args) diff --git a/Content.Shared/Ghost/ReturnToBodyEuiMessage.cs b/Content.Shared/Ghost/ReturnToBodyEuiMessage.cs new file mode 100644 index 0000000000..3e2c99cde5 --- /dev/null +++ b/Content.Shared/Ghost/ReturnToBodyEuiMessage.cs @@ -0,0 +1,15 @@ +using Content.Shared.Eui; +using Robust.Shared.Serialization; + +namespace Content.Shared.Ghost; + +[Serializable, NetSerializable] +public sealed class ReturnToBodyMessage : EuiMessageBase +{ + public readonly bool Accepted; + + public ReturnToBodyMessage(bool accepted) + { + Accepted = accepted; + } +} diff --git a/Content.Shared/Medical/DefibrillatorComponent.cs b/Content.Shared/Medical/DefibrillatorComponent.cs new file mode 100644 index 0000000000..05652cb3ed --- /dev/null +++ b/Content.Shared/Medical/DefibrillatorComponent.cs @@ -0,0 +1,100 @@ +using Content.Shared.Damage; +using Content.Shared.DoAfter; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Medical; + +/// +/// This is used for defibrillators; a machine that shocks a dead +/// person back into the world of the living. +/// +[RegisterComponent, NetworkedComponent] +public sealed class DefibrillatorComponent : Component +{ + /// + /// Whether or not it's turned on and able to be used. + /// + [DataField("enabled"), ViewVariables(VVAccess.ReadWrite)] + public bool Enabled; + + /// + /// The time at which the zap cooldown will be completed + /// + [DataField("nextZapTime", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan NextZapTime = TimeSpan.Zero; + + /// + /// The minimum time between zaps + /// + [DataField("zapDelay"), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan ZapDelay = TimeSpan.FromSeconds(5); + + /// + /// How much damage is healed from getting zapped. + /// + [DataField("zapHeal", required: true), ViewVariables(VVAccess.ReadWrite)] + public DamageSpecifier ZapHeal = default!; + + /// + /// The electrical damage from getting zapped. + /// + [DataField("zapDamage"), ViewVariables(VVAccess.ReadWrite)] + public int ZapDamage = 5; + + /// + /// How long the victim will be electrocuted after getting zapped. + /// + [DataField("writheDuration"), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan WritheDuration = TimeSpan.FromSeconds(3); + + /// + /// How long the doafter for zapping someone takes + /// + /// + /// This is synced with the audio; do not change one but not the other. + /// + [DataField("doAfterDuration"), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan DoAfterDuration = TimeSpan.FromSeconds(3); + + /// + /// The sound when someone is zapped. + /// + [DataField("zapSound")] + public SoundSpecifier? ZapSound; + + /// + /// The sound when the defib is powered on. + /// + [DataField("powerOnSound")] + public SoundSpecifier? PowerOnSound; + + [DataField("powerOffSound")] + public SoundSpecifier? PowerOffSound; + + [DataField("chargeSound")] + public SoundSpecifier? ChargeSound; + + [DataField("failureSound")] + public SoundSpecifier? FailureSound; + + [DataField("successSound")] + public SoundSpecifier? SuccessSound; + + [DataField("readySound")] + public SoundSpecifier? ReadySound; +} + +[Serializable, NetSerializable] +public enum DefibrillatorVisuals : byte +{ + Ready +} + +[Serializable, NetSerializable] +public sealed class DefibrillatorZapDoAfterEvent : SimpleDoAfterEvent +{ + +} diff --git a/Content.Shared/Mobs/Components/MobThresholdsComponent.cs b/Content.Shared/Mobs/Components/MobThresholdsComponent.cs index c69c3dac10..c7cfb51ebe 100644 --- a/Content.Shared/Mobs/Components/MobThresholdsComponent.cs +++ b/Content.Shared/Mobs/Components/MobThresholdsComponent.cs @@ -1,7 +1,6 @@ using Content.Shared.FixedPoint; using Content.Shared.Mobs.Systems; using Robust.Shared.GameStates; -using Robust.Shared.Serialization; namespace Content.Shared.Mobs.Components; @@ -9,23 +8,18 @@ namespace Content.Shared.Mobs.Components; [Access(typeof(MobThresholdSystem))] public sealed class MobThresholdsComponent : Component { - [DataField("thresholds", required:true)]public SortedDictionary Thresholds = new(); + [DataField("thresholds", required:true), AutoNetworkedField(true)] + public SortedDictionary Thresholds = new(); - [DataField("triggersAlerts")] public bool TriggersAlerts = true; + [DataField("triggersAlerts"), AutoNetworkedField] + public bool TriggersAlerts = true; + [DataField("currentThresholdState"), AutoNetworkedField] public MobState CurrentThresholdState; -} - -[Serializable, NetSerializable] -public sealed class MobThresholdComponentState : ComponentState -{ - public Dictionary Thresholds; - public MobState CurrentThresholdState; - public MobThresholdComponentState(MobState currentThresholdState, - Dictionary thresholds) - { - CurrentThresholdState = currentThresholdState; - Thresholds = thresholds; - } + /// + /// Whether or not this entity can be revived out of a dead state. + /// + [DataField("allowRevives"), AutoNetworkedField] + public bool AllowRevives; } diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs index 38dcd33909..f3e637bca5 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs @@ -48,7 +48,7 @@ public partial class MobStateSystem if (!Resolve(entity, ref component)) return; - var ev = new UpdateMobStateEvent {Target = entity, Component = component, Origin = origin}; + var ev = new UpdateMobStateEvent {Target = entity, Component = component, Origin = origin, State = mobState}; RaiseLocalEvent(entity, ref ev); ChangeState(entity, component, ev.State); } diff --git a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs index dabd998ebc..08848808b9 100644 --- a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs +++ b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs @@ -4,7 +4,7 @@ using Content.Shared.Alert; using Content.Shared.Damage; using Content.Shared.FixedPoint; using Content.Shared.Mobs.Components; -using Robust.Shared.GameStates; + namespace Content.Shared.Mobs.Systems; public sealed class MobThresholdSystem : EntitySystem @@ -17,8 +17,6 @@ public sealed class MobThresholdSystem : EntitySystem SubscribeLocalEvent(MobThresholdShutdown); SubscribeLocalEvent(MobThresholdStartup); SubscribeLocalEvent(OnDamaged); - SubscribeLocalEvent(OnGetComponentState); - SubscribeLocalEvent(OnHandleComponentState); SubscribeLocalEvent(OnUpdateMobState); } @@ -249,6 +247,14 @@ public sealed class MobThresholdSystem : EntitySystem UpdateAlerts(target, mobState.CurrentState, threshold, damageable); } + public void SetAllowRevives(EntityUid uid, bool val, MobThresholdsComponent? component = null) + { + if (!Resolve(uid, ref component, false)) + return; + component.AllowRevives = val; + Dirty(component); + } + #endregion #region Private Implementation @@ -278,7 +284,8 @@ public sealed class MobThresholdSystem : EntitySystem return; } - thresholds.CurrentThresholdState = newState; + if (mobState.CurrentState != MobState.Dead || thresholds.AllowRevives) + thresholds.CurrentThresholdState = newState; _mobStateSystem.UpdateMobState(target, mobState); Dirty(target); @@ -334,32 +341,6 @@ public sealed class MobThresholdSystem : EntitySystem UpdateAlerts(target, mobState.CurrentState, thresholds, args.Damageable); } - private void OnHandleComponentState(EntityUid target, MobThresholdsComponent component, - ref ComponentHandleState args) - { - if (args.Current is not MobThresholdComponentState state) - return; - - if (component.Thresholds.Count != state.Thresholds.Count || - !component.Thresholds.SequenceEqual(state.Thresholds)) - { - component.Thresholds.Clear(); - - foreach (var threshold in state.Thresholds) - { - component.Thresholds.Add(threshold.Key, threshold.Value); - } - } - - component.CurrentThresholdState = state.CurrentThresholdState; - } - - private void OnGetComponentState(EntityUid target, MobThresholdsComponent component, ref ComponentGetState args) - { - args.State = new MobThresholdComponentState(component.CurrentThresholdState, - new Dictionary(component.Thresholds)); - } - private void MobThresholdStartup(EntityUid target, MobThresholdsComponent thresholds, ComponentStartup args) { if (!TryComp(target, out var mobState) || !TryComp(target, out var damageable)) @@ -378,8 +359,14 @@ public sealed class MobThresholdSystem : EntitySystem private void OnUpdateMobState(EntityUid target, MobThresholdsComponent component, ref UpdateMobStateEvent args) { - if (component.CurrentThresholdState != MobState.Invalid) + if (!component.AllowRevives && component.CurrentThresholdState == MobState.Dead) + { + args.State = MobState.Dead; + } + else if (component.CurrentThresholdState != MobState.Invalid) + { args.State = component.CurrentThresholdState; + } } #endregion @@ -394,6 +381,4 @@ public sealed class MobThresholdSystem : EntitySystem /// Damageable Component owned by the Target [ByRefEvent] public readonly record struct MobThresholdChecked(EntityUid Target, MobStateComponent MobState, - MobThresholdsComponent Threshold, DamageableComponent Damageable) -{ -} + MobThresholdsComponent Threshold, DamageableComponent Damageable); diff --git a/Resources/Audio/Items/Defib/defib_SaftyOn.ogg b/Resources/Audio/Items/Defib/defib_SaftyOn.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1630baaa7659bd018fe02b225d16115250b5afe2 GIT binary patch literal 7521 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Items/Defib/defib_charge.ogg b/Resources/Audio/Items/Defib/defib_charge.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b94279675dd354bf3f86738633943e48f5943edd GIT binary patch literal 28590 zcmagF1z1$k*Dt)!%uqw8pu~V6EubKv#Lykms5BxirJ@oCr9=r45D6VhX%Hktkum5L zkuC)ZLBRk~>f7l5z3=3?3ig#5j!M@;r={;y-N<{staGx;}6CwBi|M?3akL*kHbx>TmM|J;D)bnIqCiq>mCrOniJj`~uDfp7jk9-D?}6_*Yd_UBe0i)UZUx zkkE|wC0PQ%1c0NUD8n5$J<)=c9FfcEDY|=i&C)m0Q*JbKy4;d!`L7E>)|DLq96&{A z67uHsJbM(+aSA5{kQ6c(Fp#HT;n_!ga$Vi}`nqk1rPHB^>`O@}y6lR`N-|zM;%} zE0^*{O1qH29>w{r|6FMP@K|JKfI>Eb&TTfm$84RC zxx3#AntYcy$tw5usFt~fktIAX*jZmZJ9P2F(8W;O^r+MIp|W_KBmd_k;;+6yM)qe)JGrv-)0a^_HL(EaNPz7U%;OUUTU_|dJ%knxFB z#FqK)UpX70oJ%Nn(6hF#tz>7 zcFp?QO|w__zpD=s%FSt*vnBf)AvA%~nT`J;{~g|-M20&gnKsdU-uMJ<{i5rpW?aGr zLD&9rP5>a1>8}?5*X6G&|I_09uv7#+kysFf=2xk-QQ(Re#pLM)jBC_WX^8)mi@vzj+ z?B2uVtACOjcgMUVDBDr$JnHK8wqZGFS;v!5?i-UlKb)WCOsN z&I~Uam15Q-I+tYDA@hmbOkeR)mU)jNHBV%R3}yCpCeZ?J^B&Pw?#M2+Pg&Rd)IU**=||6lNOeptd{RBEXO#EENg{~ zSdEN+T3E7bS+ZNcOEa>p@#&R4J7Qru!D0En_Usr(n04BPsiQ`=@Np1QFASxHIt=>Q zrT?cXBeuUy9kU#&l{*<^dD8N%t%arS#k01*EUgDa4ItIrXoTI;vet5B&Brn=^h1!P zo%Pv~UzWBUVW)?pKCFj+;M{9@==}vqbs9YDRCi%Y#3RGQGqHg_oQB^)Cn#wjiU<3UdioNH#pTcU@z6W4g%MWo?CxwK9 za~W`?#buerB}-Ml;;&1W)K6N5+NGYIlDD(n=Q|~zaC#^{xA=2|Smz7ak<56@dG2S@ z+;(HfAR)V|j5gGz?H5h2*I0}H=JA>J3wafEG_8qHH;_HuVC^90@QY(m1q4v?&$F2` zi8T{~n9M#C@-1X2`2&sho4Hd=^*#Ah2Ey@HJeU!vUp6>k77qz7K8^1)uCDwS=gyvzErZTwd!36tPECfL&yAkCrI^z144X%@Yzb%x>1qjRtzltq+_k-Rr{ut`LEVPuHxV*Fmv>h|-)T?YWRWvsH^V z>(TRI3g}W4qfzft6fO!dR2LPs>{6o^s_9V_6>T0=q!udRFc6b$w(=4cg+n*L(!WPA(_bXOGSPydJwl2Z9sn^v7!g&T zbPc?An*@C(23+3rnfi)UIVswrErgV0GuRzusVIOB&Rw(B9wFt_G6AZFx7UZ^=cQ!B?7xol9l%`^}(z za=Mg413KjehwddQS~KW;s|Lqq)E1mzRc^=6f1p^+t>O7N^355!HkkX4Wya)k46v? zHqJKKQ6x?jkSfW2GG}nOS(YPsI(%znV7~_zFh#b}-Hx@PV__|h$aOvrY|c2gQK5A4 z@lS5jE*v3K*o|KxL=tfPvCRlu5_+B0H~1sHN&QQj<5~p_{}NyX@B)xbPY@8uP)uM* zWK3eZ&790~hcyMNF96dB$_P+FirCm#w}iacGgv`Q*U0=gvpAu@thS40yg)@q;KdMy0B9{CAwiuq6}NL)mplw$087xD))J8q}VA4!xdswy#kz{pyj zJsB;&!=V$)zZme=y@#e0xwKLf6zGjJ^voy)PM7-gR1tiywEZZcHiH971NiO(YYBn<&!hI%y#undVeW3E7nnsP= z(XZBBlO}oLYhHT2KJ1n2cc6Jz zMg0zTRbbqj!TMWA5QYit9HUs5SX^6jIiqjLtN)x%Y!@R9z`{OG93V4@1C((X`PvIm zo`b*b z6xP-PM}>e54dM_v2! z4s1*#fcOBVSgpm%-tU$Xkp{bAVj%XCSOgB>0+`Wjd3aFj2}k{L96B@~D5z0u==eSo zC_qyg3tR!9Fi8We&|yPO1i|}kA=5ZOIz%y5AqH!Gda9q~4h&sV0Cv5NIYostUSgnU*d5?-P zP49SM9I42y2(W0N0poBMAg1*E1N6zJ@Hc901cD($s4xH)r%qD2k0*Qj;DmBF(iQ(hlHxD!#P`Bnr^+)xF_Y( zzl~6%H;^sW$9zyGAOwZ8%NHRbObJ3v?*dQ=ILJ?_NNW52N`WJmuW%6hw|*0_0xOWCB!m z05^3lIx2boUhiTE{>_Y>-EC)V;^0!4LpP0(1tx8~m|; zb;5(BV32p7jsqf!7AL6E9#Vd^$KTj*bFlWDFf^|Z0>2Yy>Kb)(V_vEKp(R5-aUexd z0zOAPKof~g1h}-mqyWPVPgwyzSn}xgYZBKI`A#7EVEHg+denLyKmBK_8VU=z$wMXc zgPDZjBnv?OnV{~Tg~fWUDNumo2rl@EDEe`;9DpEh@Jfo+kIM0Sfn{pamGx8{AYNk@ z>Ze>ivlw$e9_x*O_+E<110YHE0GNh0`i*(|b%~Nr$fvh8-`;q<6KfV>-g#ANSWhh@ zX~WJ^DJT-ypWS&@v+e-HL<-j(&H*Yp6gm#Ab%EbEXJj1A%vO-@_SoMPj?ke=RZ>H5 zF$hrcN^CGAn7$5khG7|Ls^>;v{B{=!_+1#q4YQMlF<_b&dKW5PsB?2r#L$t0{`di5$JA$QUpP%yPvnh zw8E4e=zErf<8uTjDL~6w-*ASaZ-1L@&kW{9zeRlH1F?Hg0yh-u>9X`Qj&_8&Ut)=| zTO1!@C4iknpO!5X0ggI->l}o*BB5jN!-y03bZ|aDvhxB52XmW3V}>n+m?dfJg&O z@xPBXLwyUw5OH|ImtU8blDtD6Ur+-YL7wOG`mlXhTfYh%y$aQ2dY)f;hlUar5qL?( zMBW{u06T6p3buESk62KOSv=u$HcB}n8}Y__*j8hoO^cKNNQdhwN~;N{FgGriY*t{u zJ}&*Mp*2h8Hb&9=O3D@h^<cXcRpf7#!=TKhYo zyn6jo=i8)Amj?$h_NimK!Neq$kO__gkP(6E^YLD$n@Ak~}>D^ELHYSUd@1JPap~aP|FG^JuWem)x(*7%a=C|H*Ir=Dlp(_uu*{ppY$3*|tb& zfdzj8l#0Z@e|n(PlPmZP+17}P&>Eg|Z$xv8wtjQCYf7oECDWu0I3GdhZe>MUd$h-H z$BJ3wL-~vEdb<6#enkCDuIkGX^K!2*+JNSM&A9H|^V#FP6KQ4xuTOg?=KNvg92NlE zmylB&Fx1$%`qGNZ52bg!)(1{w+MZ%;0B4>WGIoY9L~(3~XZBR?{Q7xc27KPoJqv67 z;>jZpMT>_irn52yv@69dQx1*T+ldyi<>$UQhwsmS|M}yumx~LQvhpI#INTaRmgO5t|giB*psXpTP0?i28gS^IQbo1|vuHF)9dj{>V^ z<2MQsLtFSijq1LKR_Q4jE}Xq*O83cK?l{?OuE*g9q{5lcdd3kYZk!-8Qf*eIu=C*l0Uco{~e3jn0z43?t zc4>itcjm`-IW`1r@)aDV15G%h%oK3EO#{*=KD%Rq$e4vxzE+x4DTWo8IquZV%_%jSab5#u1dVxpBIf@$|B%mMo zpl_!B0R7uG18|fAm6p`>eM0CyAg)B$PC_%^oK&DW9q~ zACwzj@zhGorO3H|h;c+}lFiZ=A zC~}YnoL{wCOk^twESw25PS6|nW>V7pBZ@x<`JQ`+1+^#gAr~lo0>t-lza$w8<3T~I zpy`($LYneziRI0-2S6AN7G;sp>=7d%X!CbAO3ux1`{DXqouLOTOO(jyhtEvc!fJW~yi$z*B)PCLb#)5h9dGN{i1> ztHF@csrx@1#}?oHX?E_dFq8)Q4gjcsmIr7fAj=8Kk}Wab<@^-p_>W)Y+pD>HcDMeJ zxMdE04}#v@L=`(|x);QfvAUxt05Qi+0WQHehONJT2H>bC0Mfu=Gk5GMj%?a<)MbML zCjH>myBkjs9I#+QzzrwkG+#k#u%A9;`65QdNsj+gCf&?X%o=8PUzxOj^cPpvcjxjX zZ|WD*Bpf^_gx?x+Ji}$TrEqmYdHAL#rV`6LH}JL|nK;uq8X~(?e$Cb8!MIdH1%v^& zF)056WMKzE6Yuo_Ym9a&6Tq6c|1VyzYe+T}ld5xqNX2I#IoBcYnPFiIe{ zM@GvxJ*Gg&!t91PkmRSOgK*CHKn-L%5Fd2qTt`SoG&NrFOyv{>3DGyTRF`KD!UmS+ z&YvR|13J=jX#84p=%FipB3kz#|@5gT+-Ve;Y9~tW&`21t??Z9jM!Jy_1%8Ux}V@+m#mj2#!73(**{p5i= z&~1VaZWzYsR}r)%xexHsOuJ!|1oZS@3d$@!sFAouu}x6t2FXh4{wukAOv1ppEX( zisqcQZ4vP;G7VicR6?}Cz=t_b(d72;V~b(=l`!)~`>;TF?Eo|l&~OTV;{H^p8|pt^=U16Uq+RSL0@oQ3wnnnBMaeQ zO|evcY@Y^s*KZICZqR{r{iJyt4ko==b2}Ga|~#w?-xYx zlh}@bDE{mm-M}Rh^J(rpy{qt2MxnD$rB%^PjnG(b$W@Mdx(|w*{fUq2cbg;B4-sL8 z^deetcmb<*Su#5$78vC*19OR4G)hJ9< zh1BSHoT|O*M&-o3!3_3`gavYmZyiG=PzBfqYBZt{w>8YMkRH~-|& z?ihb+F4&*uSVnvumCsX#-8uqPw8tG+Z!JciX2^1@rP%h>xb{W05cP}Cn{BINJtfY) zJ^$we?a{QgW1AzpBX3^5e)ltL%R0QP_HA5A`~}|kuYSa3=Xt%J3p#$G54Vu~a{lbT z3;S-xY6=_>KlBPSX@bdgypVHJRtw&Zg1&hs3N@IHU((&rd12CHBm5J!<64B)=mm*c{qaMJ|MZsh>vE6P0N z3e7t)(Ht@c$dd8q_*;Tv~Q`N(z zjoW3RQs*l#in;HVt`-4Qo46N7d%RqVpD>^jqaKPh;{2cpEwR!8`3vtJggb4*<0nELpWRF0`fKh>l#d^V z(5gs4C46GNcTP5YNm6#7T%=CcpkW8ZyKMom*S!=O1d>l6 zBxGb(my&{IyaBIElDOm<9Sckk9LIo<;-YxaWDEpBAFn6yrLZAf200}^@*8{{adu#e^-Cmj*1ZC3oGXQ|C;0Xi> zOxqU{xpDT)W@T2zcpK)sm4}H;R_}Q?3xqJ~UPb01`(%75A(l!Bb8j~UK)1}rOmhrw zPx1q@&@{E9oOZV z_~g^uTHnQ_)OF0Z@DG(EPz778&0#1l3IS0O2vnrDeW&{ihaTl1j|dWyvm8wwL0l@1 zSnj!$0>Hx`#t?GbG&cZ1$&iW&847Hr_z%8uE06rR0H)uN>B>%Fh$R4#3(SCf5aNJr zlMWa_CJ}Om{IhU5i3#XR@q_8(d|hMR3JXOD*;YwCYKv17!l;!f)qiia~*`{glM2SFIEkt+nkkIntkD4VpUTtdLjVy`c zO>7}pKZ>e0KwZRP03QiLqL$87esBZP1qW_LjOzhY}BjsiP*}|pZzUQ0pjZ( zdqA!e2Yoe25|o>#0_1EDFHFAAi3fc?2nd@Hf<=)~MZ+QZ3y+PhAp}^80F(wW`$AN; z>!ntAZFARXxgEl?UD8{E0r%8crr`%`H;-Vv{pg2YUbKDw>gsD&%fkMuq10GhNKq@7 z{JA~~x}=*p@BuvU<347HpT$->aQ5<0fs!srzw86-k*xjJ9w+ua{dg`UYGqkajjo4hmf@z# zbla@k1qJFXV0t>S48>E_o^vN9x@VTH7kam@+m;kX326b#O zmeig6%myIhgg(0lXUh@(#9+)!M!?}NT99Rg1AUlEH%S93_tDTBZ@`DK(sXt}P*wn0 zo`7&Lm+cssF2ntMx-*+9octaW0K4e zPZcoh`K?fXwe#ZiGB1pwf0XXFmu%>UU2L%RW z@6{$txaW#epyMKVb%X%-_jFbpYXHy$q>a2-@nC-W?GIhL`)lMc_M;76L#(NA|VH`j<(+(QMgEV<|C4(VriVjNs38ZCyw-khp7rdnDD36*Nl_B zHP$EIR5C_|lr#b8m|^;bGWubmY;qj{>mEpmzYKnZk-vImd>3_1|YLQ29p&_qOi+EfI9-jDRB4$D@* z;1!Zz6kGZ=W`&K?gJSVngSn<8hWXyfx=XJJt-X5Z?%|HQUHXEN?hC!?XDlE{$d@D& zVNAQKhf|=qB5B3NL;c`-fzx=u;?cThic_3UQBNx#BeI5!gUgfe2Fo5XWE$^ZjmqjP zq2XtkGIRhh?si2|<<6bwqN{zRGEwJ+9np$WMhGsi?5}WB6NTsZw&|k|@_E}gO~_B| zY=8XS8n5Q?z@zX==2x~m&f`bpc(Xj7ZHm@#zkPV_`W*t1d44!^;UiT7wAsepAl5Jdm4{Dmd^-Ab zb=BhZg;$2$EbqcB+?5SW05zy0Q<8t&BQ`--$p|Wia*+F=5@LU1JfJRkt%NVU=hzRU z&NzXul%#gYGlkOxcC8^1L;+@XXh1#8=%jqb0nt`o0Fbg3a}0^~pwKlx>bI~yL<5s{0-arE*Fj}t!psiq5aq`0MwXOurwaT{}Qsp=HC$PR>z z0PoyvY}nkD#rvOc1qM30xNe6@{A`sv1yjlI0JMcc)?j>ai-vv`ht3}$@fS#l5Z33$ zweL00tQIXEZxQC4IzYyN>)Xg(C%A~q5iz97>UkjOD(8d%@+QlIe$ak1&RJF7uf0|v zCD?dO1N@|}T2!{y0BBQaqANytnFPJi2L{Gd2#`QF*sbbj?;UH4yh}X1EEr=&t*d{5 z?e*85;;maORY_(>ClfO6g>+BWxK!m385=cA>Je8U{pi*k=N>Nhb#9Jk1ty@<5-Bku z71BRd&Ndq{5^XV&m~e1oBb5T6Ke2%Dm}+C?Di(r=!5MvU`?*)1j6nst*jASn#twGL zj8FF3UygPR)yJZ^1+NG}&SzA-)Q+NpFeQb%pkWxGnQ(|3Zp~!sA*Tuw`Z1Pjnp+=i zse=!t_vnO4d4gO16>+h1RjCauQKs}7($~QFnwQay1FJffMBtJUS=NH$FNskf?78U3 z!gMw-^F04i_X38@!87kmJ8u_fh6Qls)Py*Q;{`-czgMNG_B+l^;z_8Xbfi)lbUi*< z;eX>@YO&HS#ga|icxBbAaK&M|0>MKFjwl24oTfW^9$ci?6Vs)N9Xd5r;&*v$v^6_{ z>Bdeb1q9r_2NMVAfB^w6ghUTjm^Mhl%{$ZDD~w+%U*QDF4fqNC{rXR%wFY*&fVka! z%<;7cHH6sYGXRj|T-U@(&j~!J`@qx#oFiecZ zqD0;8>r+jC0Y~;o$_-;6FWJt)rfX6&@Z?*C+t8eQG2m6aD>)Z z(*{2ncn-ZFC=y{Gns#!ON=ptn#`3%6+Am#gBKa z1S*3mZ=YfVVqaGxfX%B=hqq_|(QP z_RjY-wN;cXN5#HefgB_xQgZ)-z!tC};wqm2;z?sY_)UO$PGljWT>H^t&wyB2sU>pF z(j$E)h5|fnFLg|0o8-vJA_72hxLowSB@xW6%t9L@#*4TU%%a#TD}wkXX@c->{3{+D z3Ll<`%lb%9mNs|atw^3X5OjB>&bb>#F>sk9qd(E(Ezg|o3k=-#AfKWQ7 zCJymcg?3T;iz+Pb!~1P5B#b`eCMvoawF_@=7@aJ7Gt3#PQ#!5H{JDTzG?N$aR8HVR z^Il9m9Dd1F$Uv4$@8@L6jaP9)&3RM?W#3-LJihzlx32$eExd7TZ%Y0mLcqAH)EqLkqDRF&q)?=*{k6U@+<~RBi?&`^GQ-aEUU_*hLzETK! zZ-V$D7oJ#63O^DfE`NG+;p@yNrK)3qgr=CWX~|4h4<6;gY(nrFp%K+T`TW60B#BT( z9CJs&`JjE@2zED+;>|geugWShLZyXfmh3l`FLOPtRNdZvK*LkN+bG0Mw`61UDQx8l zje(6oJdpcT*0a*+0&s6=!2S-8n7hra`5P%UPoA%f*l69*JbHev!z@Z`%!FccxbhYA zeQjFPyE5Gk#EXx7QcH)bzm)oE)AWzZ&V@PtbJmNUBqr&q7_*s^vF=4zs2%N7qnka z8X{R^G+E1>woaVSW_LYZ`8(&|tYmN9j}%zIkbI_ASj@?6I_VLdo!^({53!9_Nr{LM zrOR~O8Xw{V$e~%lkROif^og}CbKWoBcP8iJg2DBVO6FP`VV%Mf^wnC=vp784t)DOz(#8}cW5q7iW*d`h zy=CSH6gfP7soq_V@qWMqX20m8^9Yxy(4CVZS_1^$Cw}zlipQ;NonzN8c6WVsm1E9m z*zvlPu7A){XmDVn;P;7&5&9-OM50GYgy|LM^9yQTa#*oieR9jniJ_{i^Qo1Kf5Pr| zji`n?)gL^V@P72#Z*6TgiBH5CvFGk9;OAS@4s3~x`o{sCwqZFoK8MSaf&Fe<-ACp<~?p@5I#NEug#p`lYfk)@``IUa^mxK6R zJMwt;gyP+L#n=5hH#3-}?WYFnoHW%Z!<7KY@O?xTqe-X50;2m0jWwz1NWFg3 z-L5j<=;wz%GmlNqAFU_qCJ<`J$3I<&KK7{HdEd=9dg@-Yer<|7{RW(*jGMLAs>Vf4 zv`QcBZvnI?twj4-OyioqwGVGt!o9EUjWv^bTa(Y6yVBLVq=iUIz~1e7fvF5>S8PXj zyD$5&cI=ae7ZuEyq{cqS{`Ix9-F-l}n~iwln00B>FPr$6?qdtqTOFKNI#Pe1)}wIV zJ=dAK;KBPM!+akg-3fcM!g~~$TH#TfF#plMug%Nrb;j|$Y-qLA@u`k5ju#1tcJ0@z zp_-~>_gj=qzAY*U$+b_V_e9T|O?txDL%R~Dn{~JEoEHugi-W3+TZIQ zy{PA^=<`JO6%>C(NATy*!Pib;k_$% zzbi<7AU<;A>Go5%1_UK-w#+;erUzsxLdL*({i2DOBHO@BEfrd1F`E zU~fyS`J$nCM8lxappBl5h4)<6A(hxN2u0773E_rch)5$D;Tbe;F=f|YMNmu#}OZ@}y* zbk=^md?k_<4GmqN*`A)rqy~K{YIWRqM2t3KonFnP%@NLQ6Q$F|E zZM|7lC-=Ovs^fzT8S_YRNt*K36jmM8>%V1I($vyvRMD(pg47)8O5Lt~lXLDeG~a&f z-Z$Ns<<+O-O*ZcpuS6U&Y8wQhsr*?9g*Z~qXd9xq!}Mj~tjKLKcIlDYS!p`LnWn`$P>>LdD^T|8Nx)B{4 zo(p&Pyqj-R*ZQKBq*KXWAkNX!2quV~O@j(@(nG5sm!(e>J|wOj5pK20>Noi^_< z#E#^o`uyxDZIk)=^G1mtcgL%52s#73EA8Fek1k&?ADKKM%Lc>VIu@O)!Ln6YosSJ* z=}dGCIXJk~iaMOfh=;Nf3-sygXYi|`9N2)D548oybFWvjeY;=ZYxWrFJ@8@O+RwzgBuN7}~Fw zFP8@=CO?(>`&>E4J)UIuiqYGPqL_KuCsatNgBwDA8;fh-nxc#w5HKCre@k4G{JRA1 zvX)A`+N$h5IJT6>5ado&KIRv2(Q|jR?Y%H2s1{;sVv~jZzgi#b`KvS^vWjs8AaT$| z<-0WvdF^L?rG@^v``H*GRYVzPbce37`sUdKi#Pkv*}gr*1ZBWI?n|!}KHPri9bbr2 z{B!@xkH5VYu?zHw>k9_MKSLV++<)%{o{2H8jI6U@wx{-06iUnfj3$d&5@#UYD{h51_K>iZ}7K zg)HpGxUn}TzBf6Yz{__C2X^+&y0Gm(UAn~!NDMEWR1ZQIG_>#WJMx>1K|t93aGntv zo*yEs^av>((g@-$Nb_8+GImyvdW4;HoBgF+67Q~e_MN=L_V5rpUv zEy%hY+={8X3WD>zUhTrsYKBd^?dbe%kd{5)On0dYoPxEkVj-{%FvUbz- zW4$!xoVTF^Jo*0W5L5p`R759}8IF0bdXsVBS-bSKnw<^dFv9y);n!4M|XKC9+LuCgxFELCQ1^*5*d}F|3vZ#8PLIVNo?>=3%!jP==En|HL z#r!=SdnVI5U+iQye0kYxl*WCSoF4ppt8-c8OH1OEiRy}f{j+j=G63g^j~zbZfS@+a zOj$wF$~*>0?7MjZk!Jstq*7x%YE$bRepTmM!$H=LTUJ*N#A~gB{~!rkdrQVYBmpL% z;PKRwKj+KphKiz`iiWyJwH0}#m5=V`l^5le-p#u2rX)b^oNqVy`zN33#Z42VA%~&J za^wi0MG;hf@cq*qS~co5<|KZ~q~w*6&SzJjHLCT>TGz#dbh*y#+!j{-!}&0|0NTsem+d5Gp5&Ue!^F9`3X5b6^((yn8YcgLexfIqnub3=c-{-1T zS8=|Z9+;u+jd2@Cq=x}^r}d8b6-q$%QcwEz;v@g|z_ZPv_SiBYyS1tbD%n|;h)mai zW!{pxOQ|+Y|4g6%HVK(@d#)+oqxu}<{A0^%Az1u-w%D=Jew3^J%f2L6Z!$57N_Pmj zF#yCI+?nrPE*E+v^iGP8SN8N(r47eKs`ElzA%uHnn((u^-7BH@LmyD>{NgWK`aQ3d zPMww@k4BdmnvL1(zcBx@dzBnkdEn_8s`S9^xf+eubxP}UEI7Gx{k73@PA(M?83=oF zNfvB+^Yp)6-RIeH8*F~UqO`!YhJr!;*)HSyp&x6kV&WH+SnS=-DDB&)8nUrfc6{qI zovLl_v!TUNKa>gXNHa!@ltfZ37^q2mCTU4yr@s|%zpvd<^*=ZGYo}zW%ptyF_`}iY zm8!|MR4GT$S306tH@Z;6pR)_WpgQD*J zbRl+^x+CV~*{~?%rw?VjN^F4-DeNzgyz(_u?>I488lO}W41T?k@C(JrLZt}<4}U+o z?DXePAr_!FcB%+1`_tWFq*R*R^)`I=u7i{c+j`Rj%p0!qHJ#UQ;omEk7&{IdfQ7El z+c*N7zQ&7ql;KNSqg5Nt{>xBX!{QFLTCTqF3-1Zy6+kk=0X@mrmAptF6Z2|ltKe(X%%ShCh7S6*y@ zo1_4QXEuku+Mp}E>qL>hr6WWGbmsH+_D2;sRNR)Mb@%aoyRBJx6j+$Jw-Z88#py#IsNFtin0G>(Hz^oY|dq;l_`hH#p&)+pYH?sfqEMX z)!tvrE2>YO3ZHr4+;Q~1xM6FE%u-S*(7_zHhM_M#eMkqpNo1RFDNx83eOxjN(r%pdvCw!X$2Bk3YjVE2ZnLDgwUXipJBgX z{V*UPDE-dapu?YR@BHDHy30RiKq6kLbu&Izj?vwu2ae__59vta68!!TAHBkVGZGVo z2aX|szAnCQSueSFx2|x;<9xVk=!BAi2;tpj3WXm+pDEF)-Atm=9@MReey&J7I&=Es z=aAdbxuV4$m(Tfaevo2(p(MUPI7>w3Al02IMpeV1YBx4|$gN8mabR)(x9b>fZg7 z0zd5cIZiTRu&PDe+nCULF1!Z??Rj$(Ihx0G&}_(Cr_Et-{F;ZD?2q|M!A5zHIW|+rlh}5ZR1CWGbk#ifk28E1 zwT6zNp`i1|U8`b_IA*t7yIe0;80G#{BBX3=NiSa7k&fkQ7>4vf1=<)x+^1$PNZe#q z_Q>XhND0~5ijYtg%DPA;vy5ySMt1hTzt8>tey`W>{NrBdocnpsbDsTqKM(z#hp|4T zWQ+j_9o2bsb;q5|LkrarQZ~LVl&SO4%YjxEOES*?sbLr8d_M2fFF6yr@B?;h&Z}em z!ibjjerO98l+lo=V?}}S7i-P)&POUX5?l(cyrNVGF zG!ZIe^Qt5Nx*%Ky^oUcPrujIc7fCmR*-52)U9QU|e$Y|@7`oK!-PdCu8 zPmdOryw*dke!CMTf2i(p(57>NUa$x!$pbBNVO|PBesnTo|AhYwK?o#PLSWW@?eWq$ z3(fj{(ojb_ACo52{;j?mJy{Q}w>;Ws9I7ji-+<+EU>skB)z~PShu8$js0#sQYr9wc zv}IGPpjxifi59z@5J;$WjHaat4Qw3f;8zCO4_u5QbJnbbZKNB84jxDPPja}~%(J~0 z1wau0Cm+!|m6e)%0FpaA#VO10vuMOKG!;*~KY+yY8zXo|5LU4gkcA`I@8H*&z#(oR zCz%Zpv@Bn+%Ey@A@#rbP#zfs};brk1XEuW)XQ+2<6f$~Jmn_%C=(JpouUo5kUz-)M z7+ZA~hu#*TjYf?0V)6wPFQ0$`7c|0aOpyDtKAP08>YYIT zFnYp5rto+LVsM%vBoc3FXJBqKDd4vw9j>2gUX_nJF)}`xrg^;YP5!t8Jk90=x_C-; z8ij3uqs4EP?WYjqi~GTG_qMI7QdX>tdvO0}JKvifLR@qc$pwQ0{ zF+D!z(s@gW6%g+Qo$CDO-8#JZSN$oO@DM^-8fHhm*11esq@u#QBRi@e_zK*D*lw)+ zTACm&s{ZwyDuM={zJ!2uX>hrz_&$*f9FlmS4nTZ0wZ)Qd))R? z5Db7~Myk}tY5YoB*r(>kVJYhz0HOX;Qvu;lgb(cZ{0xeXeiH&<%?muOdUP!)W?obV zpvhQ^3!q21VIh3>3&`yhMs|PGhQSq?gV6V+M+$+3&>CikNV@P@+N*P4rdx_=-mT|U zRuOBS55V6QF?ucY#<+)1V2!0qQ-oyoLS1#rWEYsTIC@&nfe|TusOP zprNp`@XMt6K&TAx(EIFLq}ldX>Mz{fS5LgH{29M&8AYx&;1oXgC^+L}-C^BESr)s4 zex>i94B|oV6_a|)vhic()aQWOg=%!sVf=()w);uG0JuQeGk2?hpf;zjo#3NMJ zr^!7L??%Qn9X>RqiH)!fVVWAK2@YWA(weZAt{Fo`8j^hslF;|vd2(${=C$5j`+MiF z49p_CgB+3wRi>o;8K;M*C!xWVASC@ts2jzh;$%KeYgKh02H<*SLBei{G8; zl&KVtK|utBfDNbHC<}CuG^oDXNE$m_80?PERqjPFiDtvkAZDf|RHxgyb@R5|*++>! zsg1FpU$N(g7tI{)P&vJ+j3Lz{n|Tnzh-Uq+{CWvtoaaM;rBW1s zzU-lqZZ*fn;tE95p8KNQ!7~ctfqR{MQ&NCMEaj#il?cstAyfk6k@HhGG^8I0$VBjy zzO_rvM2d=4J{G>*>hmFZz?;%S2sB&MKRA*_7_TEK0b53+=f;*h1NX_rx_`+m#g;F-C0%f1!!1Qhy`uoqv#$4X8>L_-S@v+-{r@kR`GmLY%6(tDF zkyf=wov@=ybBR&?vNiss(Q7?-u^-rMTux-m-3cDv@4Nfod95rAq!FcpB*6gCPBGLtW zi$IjS6ok1eJ07CBtF=QdT&-z2XsA^=t5b0n$ylwFgJ>{(*FG|wiPLWT#q^r7^#ojk zn7$*VNS;uW+lcP39Uj`r{cQMa>Tm0ofz3HTMW6kJLJ+>Vf;Hd(l}-pLu0*TP&t8V> zB^I61=Ixk{=sbMZr+K>d;Tn|1wy`Qq^Ut5tEvovphSAxvxo`jI5j{&6IyK&aUtj0$ zS$~{Kf#5tD0Bv9p_kBwKJF1w#kT-RxZSmtm%x6b26|x^4T9S35OW*-{TAvCcLZ=0Q zT(cf(Cuun&zM=~knXlU`_Kv@&GrQi_^1Js(uq9qroPYO;xJ8L)f$kvZkv{hljuT9@ z*Jc^`SHoFBc7EwWxDGsY2l9=++nevUN7n6S9%Zuurp!JMnF%JBwY?fb%dOAiR)wi3 zu_IVsY2{ZoU=+7j;JRr(w^9D^VpXtnb~t);fCHehuz7ezf6osVo>=JKIi)p)yN8&cz`UdnHx&aJyrP26M+Yf1QRNiXiRoXbSu zR?~Xh3Dbt%&{EVe74Ybo0Evm-?VZFuK1huzwOkXxg1m{>*fMFkAvpezKK%j7)PWmT)W~|nm+c-I%yw07UtiPt^ zskgCRO|H~o31_sa8MYMosbB|&k+M7joae1tloL~ew=Y$W489%RKDJlJY};SLW1S}i z86ZN|jOnD}NA=g7E|mB7_+!)1^UG?Cr74M0V9;uwos;0qBdKOBD4U!R+Ru02_q*$% zzwDzuNOpkJCKVXdfp9wLt$kx~z*L?pQ-^ozO>PlwxIJgi(t)#oJ>GwKvuGKId}1e+ zXiK2Hhq13MkBst5$m5^mL6C)y22qt;BVliLzVw#VvrQJT`M#NAoFmrO@G~)zgkpC{ zAh_t~|77UeziWv4@}H(Yxv_}}osjx%p1pSxX3YIu0@h~VtjV?gQ}HkLv`j9!x~~j< zxaWyKfB~qSISm-@EXP!B;AUVFdi>32abY@V@xtujfiFMwt*+jYiFAsiRm65M$wRrD(?&j8rpYD#!d3vh$q-#>jE5obDh84IjUJ0Qal)_i-^HR*Y zljdV7ifB>}!GQcv_02U5|0`iCgxYocok!&Tp+S9!V;pE_&mt#2?$_(fpL>nGaH1a8 z&lxQUQF(y_nd%3pSmk7Z&4emuEmn>~tLM}~G2|9;DocKOtl4Gp1GqlH6Xcvh?*~(S{>JzI2=3 zC2re(B~K_$2_CQgFvg6Ni;17If>*}(n>;4#{9dtwCCBy7KeLaTD%;wJiZM@Q4iY0& zt#3~y-C1L9!acsOiNC@yH~L%*)JFONd0yClfCrgMQMc%uJCeH;vq>=*PvTj30KT0ZgffoZe5sGjF4JDgx`jdCvnE$@4yKFA6E%NP{ zuv1-#fhSv=k`znIO-vg?&kQR%X?yJ}?_Bf&FktHJ@~_B}-6t>n+UQm{w?v&h&m>nckyKCk6X(>X-?AVu+{~4OeUe~o#`Sb6exzj)QgMr|K@2umI_G^t? zy-Aj$sf>fodOtsVyf3;z6~RFliF)|g$|6Cl{{5RI!8yu?rX%;UKKyG1o z9=cd6-7Rp5IL3m0>TH?C%aHu2{zPRoF5jdiL+Hko_o8Lc$;vBGN~PD>n|;A3m(wy_%r(3w9Mt zStqG)&?PV@8GNA;Ml=oD;~3-4;;svw1WhzJY}+><`Qcc41Sm<&PMm^ZuTZ}^>HfSZ z+v#v>4c@Q?`}o}+UubwqmRwQ3tV-DI4~M{J;-v!S1H|-UJ<{r;W?GCBybt9p`bU28 z=h{qn5a(uT*@Hw7d(I+hUQ`JT9}~FK>*7gwh2hA8N*!}h3vcy{;{Z>XXLg`GX@F+_ ze{uCFg-*`MYyOG~G{RBi9ezKBIV`cJ$Ps-|@e8Qpf!=WJ5HsL{^7Jq9)DXGTHoA0| zuWBRc-M5vY2FbP77CqH+a9pjx{3`;J1=6>@7v{OOV#XX7N%hP%Nyq`QZlmCEGv)yf z(x)r|E)EY4H9(r0GLnoB2*`dOctT}AXTfrwTFxxYxcm1QpOj5bqyM5j4p?@u103v= zAUK=P-$E=EajVFPN+!pw=-2WQ&8_iUX|hQdjZKj_g!3w94n$CFf@##}!s# zGYuW6q8Nf*>8mHEg*LAX$I^W0SVg2 zE62SyV)EX97N{g^knP{UM6XpZJJPFMKD*^szTbB@K4AVT8e1e~cFzfUiRN!mxvFxPf|9Ao; z0~&;rxt(dY=5z8uTC%qQF4({8Um>nZ+3@qBo)mxz1m=0Jx-EO1gFM7*p8X5Q7z{?# zZ?4uaCgsa5LCVfA@}9(=C7c$^UX0`pKFGl+L~OXLR)S^uZmugWvH!f^8#cI{1}u0_ zEXs}nyPRPE;xyF}1q5zkZ*!VOn7PZZlEn73re!yO3B1Nc-D{U)j{1wnnt9xR<^Qp07F~ea{6fZMBG)MM|3}$H*x`_&ic~9ZV~irsld^ zg^%v9X$Tk7fO=Q|z1jpu$i#)8TrT+z)CT;^blM)CT)VTsqZx-WVJ`r0UDMHP zHOK1TW`2AmWAW!_mTx2RBIoKLYE=Fbu74B(1?#leUw+}DqkA8883p+*_m#XN9*c-Z13&tNvFalmf23|{VaL(sQ zot;5YV%nq;QX;PtFs>(s^8VF?G9V% z^E48(f{oH@F~D?kxKk3yn^Og(Tmj?IR`-plpSk7zEN$8zZ(1>_` z*8VPTD)PC8t>mSYj%>TXhY0Vqcw}EIp`I$FNlKznpQUueETpV@eQJF5@SC}MjSl+Y z88>GfZ2TefvjUZb+W-T)pyt{ht?Ni0j)u4NP!WkiW+KmJr@q=sm}Ig8-<{7A$wmfE z?l{`w=@S)Q%FVKPkD*)s$sw18p4^6{)N7qKJ9$9s)%6z+B`QyLxv}oVzw57`d>-RY1Hk{em+GF zF4GH=lPU!{!pPD9EqJ?d*tEVf$~*Fg`=*ckai6`Z%$f!($|Eiv5U&`!B#Du;13~gk6K= z>-BrW)L)uU23$pLPjDy3!z~@n1)RpRdrxt@I3Nus>{r^4zehL?z_?!^^|uRjU|MzZ zwml}uHoxZ#JSmb}&4Pziu4Mdyz zK+jU_0wX$j?PILe*o_s2(eEjTSA{+_vG^n*XxFJ?PmMa(%P?CDQndLUP?s||X#c4; zU7@7mhQF0h3iT4T2Z@~>KdmIN%TMHzv^CF zsED(=9VqUJ9t6Z1%I*?an|oBbSgrxF$Q0AGJc%>MZn|_;NGV%6!)F}4*U;HG+#)h2 z1*b=Cv<7{A^{Te|05AZF>qg4z<=dF9b(s6`L5L zFE*CH9Y$ZGY`EtHL4rdYoCa}N;Y@ILD+J{LpZSwjrEf?XkMlojmw-Mpw+`~aENZj7 z=!)5CRfk&pEee+i4Sg27vS-C%J*s9@%fG?AO33Ay9J8p|cOYhz>OUw7H=fK0R-z^H46dyXP!eU*-cIxVItfxR2SV?@ zB<1hcPW9>GX~IKwv0#Mi(BviRY_s0R093b#&O)Q=lMtHE07w(ik#jWTf^5?{x+jeL zj^^zy8x@s*`sn#cAZX+ol+Oe~Y?ogc1XX2EGiOJ*dBJr!)m!uw-Jg@FF50pi6yOAz znO5UKT*O75P~+4~BKIUHv{ZF}Y{Mg&hATSZ8m9sJrT(K)NX!GOkeb(izXK{(h`HmYb*JFw1pVDx2j@OS;fzpcBWn(A*F5OrFBGa{tvGH(!Y%-r^B=VVk-hauj#MwiWYfK zmRijgiv_ay&sy>2kt+mJyiJEirvN&RUscz}-sQ)G7qI5+>-UHfT?L%j_%$$3-i|X_ z`guwYp&?xHHp7J6ZN+We8m5C;!1UVk@8}%LlfbD>R>zzks=L9Y48q(V+^!2_8INji zI0`KEQ}*kw=T?N%zJ8X!`P+6cxldsN=W2#U@j_-5g`fE96xH)sw1y78FqN&}aAw@A ztc}@5#!S4lIS}yno(+1PibY;z1jF+Rx>`6GP9|%tUkBMNz7i4kSc;Grx5)teLfud3 zgDwB@=gsav7hhsY-B{EV2YdgfeZOzIGRVpQ@N(F;56ZAv4eKU7Wr2@a-A^*K1*D)X zPN=vJ>9f8+#K1HdHL1BRsa;FgCo`I1b=&)~Yoz1qS^lL!tUljsEh3;{AlB007_@Ix z7N=22`FiLOAUVG+nee&PkUv~ds3*(AC*co>)@17$T}_8%69TMN2JE_Q4%&girO(@^ zM$6@H0u{ZgZ@ui;yKrj{_{V(!&N=ea9i@!W5d=rU^gjb-E^*7DkfMLsy4LfbqKvqI zvD*5d;ImsQj`3`41ZpA+J_Mm*1fG!xjaldz+;n04BADr)GRQ6&T2}i-O5hO%OE%Ht zCbU38b@R`DcP%w4MHDX#vimP!hFh5G0XQIb?A^fr;*hk4@q_A^BN*mg4rnlleOT1Y z5SFhQJ=qfngLo)UIjUI0Asym6+fn)=>;1MDvDb?%LplwQ8pPGn~LQwQ+b{6F( z>86$!LrNH*{-;tGDc{%g>uUn!s*~YI^ms<_qL9qND$&&*ugC(svc4jp@9HN{z8Cnb zcm-K1k}x{QK{CJzHUh$@Q94s)QnIhA>tB#UAlz$7AE2oqEx;b)QN>*kb1O3A>fiNO z+hmh1W?f7Q;uQxQKxdhE)?gPr>s}b#5FeZ6w=v3`n0##UXqNXOwr3;%xiXbtez0Zx zWvYG_8^8XtZc_?Pgv&mf-T?=cz+7iyt5uVs?c-Dxncugx^S>>+Vj;E|H$28p!ncAh z2g?CvS_{hZgXUuuUK-C6Mq54V!&(z}Fnaz3YQjNO1pHlxf`wBL z#ksFdv@Z`wxS?D~K#RtCdQt>MPGf`O111g^L@R#nOBdd=ZdT!g8`7#6P$Fh_*MWsF zAF2joUCi#8Byt*ul44muqq4h1niOq`(C&SDDVhf>>hJ_i}S)c-A=K$=#Va zwx3X5VewR@nILfBvHd#LcM-!O5F30PD%kT4DWXESMu0fA!{=qr)&4gd*Bq^>-r|UN zzZ?_+qqe*KN4Ad(u2}ow{X7MP-5LgCaxl8I9_L|2*}_*Gv|ax0N8|&fzjytbuB#8l zt9ipQUoYwN55K}z1=`N6F%Pl9m5FZ+#*JDW;-f9~Zla3lP;%!EZwg)d!B{D;M^RRs z>C`>eSaRQ6FgdWa`)_5>M1UECo<<0%BYUD!+_utoGxNWwi}I$60eYYgio>Z|9->2i zd3SKkxp~eb)lG=AAdy-_&)G2;Y~DYIqFNH$ls65$9xiPJ?Hg;wrN*nR!TIT6v-LSD)PJ7H;7)F&ZEHL-XLMH7~ zPp*7^NJn-5CKgbO_NjYl;p=R7HA4OCH4-%wRR%B1-kSFULrf5}z#5BVaoENZHOZEw zkb`tX6mw2MOI`+B1v$K}7(2n(`^rx;1h5;2gsU6-2qvsW=(T;wh8GDc@@HQWzGprX zC|JGM6mx*YJ>BV2d!=Qhn5x291HB#uJO8Da1fK*ef-){*0Rk8gcB~w^DpoeqEAw7} z0lq86-48bPUQcR{S02COSFkLnLMmk!qzBXZIC(`(1>{Y)+z-T#h0fWRVy&ND)E*}l zZLME8S`87t#>Wy_W3y2PIjKkA_nKO64}BH*LJO|~ynC!Q$y?yHdUeH<{m!ulV_iG$ zZz?aZ(3T&&1%h3uz_fS3Wjtx^$px@Za~!am)8-mRU$MXWiqq~a7QQU?mBkO|_TMhN zvwKvaKo{4C*nq>dh~)+x6Q{ujOpUdvfn~`TAvEi0w@|FeWU6_{=f0CkcL|Gzlg@d~ zpX(#0%q=@LpVAzm5Mw;6+p&0@@(CWxZ{)joMj{mOOle%*3{)KKqXa3XpYvFXW<52$cr${^i;T0^$EbjdX4s8;xksWGpnZ?bo@Nuj{l|_ z_uKxY-#V^zmzQ8xgNp9_=WGP6dZygX{v#AR8>QNTx}CK_iyi0=2v+r{-=?Yl`*Q60 zYjILc=-!!rhpqeUS_EXy8}3k}@?~$HHjrL&@UaP2&e6C%#zQWulrL5p__gO4o&P&i zs&Fo@&jj|P*l=sxZC0KKDB;2?ewz)TBlpXhRxd>1dT)Ai7+k-=7$V@3X3>#iL$MQR z7$g4bP#qpOng&n<}O}OzT3{h!li*9Dpg_Cw*4Sz$=Xyg_cH3z*V%!k-+F_khp z9Piq(3#yhMO*(ya_L!MN^x@m4y$B@a9pAPB+QEHAkh1bamJ);jVC(f=&Vg$A{Ua;>!;YKxj+F%+$~EaVx^lh#omqGdMyGMu zn_1TVn}}q}H|i$yo4u9mSA?^lD8}@Z(dAChtqu0$T*0VtU4F@Q_1(i_alNwHmRadb z*-VtT^MRrE39S>;`ro^QadTIxlWBay8vBsfw!B0|1&E8l{b_@dF1l~uH&59PGM*>h zTI4Q+Fz|YN3bnY`KWnuCM(n9N;bn+X>`}~xPKG=?GN6R zhuH@~8k5Sw`-ke^ayV43+@p!dK1uzK?#j%|y84yxJ`+W;AYbBGQs?@AM9c^zNQLU- zus9m7aZV~=_Yms{t285$6RY`H)KdaM{qA6Z;D?qQeSQ=MS=TQ$fBqXG{RYOkKtyK# zvDKTh44cHsQWZu0plmDKfm=l#to|3;_cXd_@_dz2*SHkM3O|*cyr1$>vz`)1Wgq=p zEHz}qdh90Cpzi+)t$#e{;CG&#Kr*r9nSyZ_!$CpTHlQuVat=;6$hK4UY0JWbPf%S6 z2zqsB#6QpvXc1}CR5u3TmO#P`CJpNo!Tsp7W;{s&hjOHm{xAW2X#12p0sJ+ z))gR>@v?5(wP{u6w3maWAy^FAJUstZ>&>O8FGm-mj3<|UlR7sN5^vG3QL)Zy`@vVG ziXZa~n{k<&e11OTbY5X1E=iFXrzPP4=~waZwEwvR1*~pTR0D68~LCmoit%bxvjz k9RHCq%sWL5Tm$uvbHoH)F@;4kbVxJcjEl9v)D`Ui0B}U_p8x;= literal 0 HcmV?d00001 diff --git a/Resources/Audio/Items/Defib/defib_failed.ogg b/Resources/Audio/Items/Defib/defib_failed.ogg new file mode 100644 index 0000000000000000000000000000000000000000..25e372f5d68d76461920955cccd67e56d7db23c8 GIT binary patch literal 8569 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 O$uVv$>jep3gn^o^#&k+;cDHCr(%aB>4Mjl-_Ct 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 N)%vZw1Aea={6Af|f1CgS literal 0 HcmV?d00001 diff --git a/Resources/Audio/Items/Defib/defib_zap.ogg b/Resources/Audio/Items/Defib/defib_zap.ogg new file mode 100644 index 0000000000000000000000000000000000000000..690345b6144129d1749406ee29d90e8804ebb408 GIT binary patch literal 13036 zcmaib1z1*3x9_G?K)MA4;U$!Ymy(W`kZzFfPHChB1f(13Zlqg~PU!}vTcttdZt(w| z@4M&T=bZfv^UR(#v)0U7zqR(70bZG#s{ru8KaVoQ-v+@N@(VahI5&GIBTMJ|E;#YB ze}=fjJv18OUfs|9ujhW|J>~TuFCHBJyZ`GMK={ju38ZUUI#@h^ot2%HgNosmt(~QVlc}?*oeSiiHyqO6sSr^ybvOVO>|v9m>hT|sRs#SW05G71 zV8xlqK=R|W89b8XrSDrktYOLVVLimg5p2Exs;D?k2mk;P@Ml1a%H5K&8ikq@(?>aF zK`j+{3#m}TmDZqWU1!gX?FwoOtnEf2bf}NCkN{9G!qU{i_{#T{Q7Cl?F<8ALcj~7u zOm{+OEXoQ%XYZ#9lw;q`i&Nm+Ey|7J+heF57sX(yoq)-)O{*JMv?1$xJC8!Q)BmZ^ z9`->6u0<4?!~{na^`3nwq#)S|Wc7DjRDeIYO+YFJU#1#=sG5A_EA6Xa%u0A%UpXXH zROQvc$5l_m&2-kyb=J*CD>+!F(MPK>SZ6L+?;_ZcIOLyl>9cxqUmmtj1qWn3g(j{; za%f0%zC&{mfOO6zThYM6&=Fdv41HbuN&4UlD- zTJZlAGp$6^|GfxX^fLm&pf39y$@?5>C6sCVoS0D_G~5q>HWgN8?s4Lja^~!F766Ns zi}*mi+{mdM_P>m9Z*~9>W+U%$Bp(2^q0BPr#HHaZIO{Aw3##H?BmeXB_5m;8MyNB) z60Q7EIid|8)Z!1aCC)|_!~81=91xnlL6th5dNKmVO5MyV#!s949HyE^-&CBO_FzGq zQId7gmXN`eo~)GdROe9{%+&n9Ef3r@l=9*Uu#aRr9jlkb5FBSYk&040uL;i88c*FS zYQhIwVex77bxo>&`TYZnV*T{d&(Lq+jIf0?>n1ckuytjUel&u1-}m3)BMjQjaE`b) zBY?^$3fTysx_~;4(&YnITozkDB#$yON)lEasHjXrpYIazuyZN^2*P%5R zfkve=i55X7d2o`DWT!z$A?OwVX}BM>V~;7m{zn=6Nv?!T2bQnwEGis=YN~1)Znj!U zu8R%9dULL;vp%b{k*|qD{yVV#%X0wGX@VYnGTtbHtuH-LK@{z;f&b+>j`)2sYRBQqOkO06_(8xhJ z;ZD(_c7mFyY+JNQ*-+%{FT_EGI2@SJM>HvTvd_R;vKW;(>!jeeL0ii3vHC|88osb#G zizk*1&&b0y4l4&I0Vv=PM)r6#0h};C02pB^qeFt@l}904(aM8to8-zcXkog_C=`_< zXpjv#BM=9YPp&cw=_3ys7THV>92WsUPE?(6;EyN+r-=lBLl3Mu(2m7%%Hq?>;z^9* zo6h3N&n9q=aB?ZBstw_(O{=Oc63VO9)5+t>%b%*M;Yp|ws7)rytJT?#ahlGnsx1?$ zP1l<)68dT+x~_7_Yk{vbAk}p?(dYGytzPm!tmN?@SaGY()^jPjs41zLYN@JextVHR zsAq`7>srYfzXbie)>qnmlZ*`cJOqO|7Vp4wc#-|M*F%<5eL87e5i^y)3 zCrW2FGN)v(nQ^Ec6vVdFYfs+7O0Kua4H7bH$}xP5`!CSOtQUJ7Z}`^FU2`ij(fU4s z*nqpo2Hv1>HZ>ExKQA1BOudb-g2UKD<$|NUN0q0_hD`0O0P7)-SA>?D!dF>*|6jqeH4ZLYO5>{DihuaqpCN#A9O|_U$~AQ5m%S z+Is@XYC9_rOB9x$hc63bQ6C0@oI4>RU7UxjB2!!kvdYgRl!dX?DAVet8>NC#&}p&d7ZkoRe3KcoGzbO7FJzHXl=)~MGCVl zzZYKIL#Pu43Rkh_DwwglC+OG;&ZIiS%4epOBSC_(ZQFFJ*YUr0Ze+#MJ7ZLSFPyPD zAr=(AwV)jVjh`?AS;ZBsq`w(*Pwj!a*qcWB_PQy?}G|^!weX*0AC&Iy;NY_K_Xz6UOO%nscvOS|5~K)YgaqTjWa#q21Q(qg%;#*z<2A{_1^ta92AD>eY#~%Gs_cx9 zgXCcJ#cx54mb-#b$nP1}wkofk6Gkl$o?(}z1EFA6{v}x(%wP||1sy!Z5jr3m1rR3A z1?57`ag2tcJLH^TWF!y5V(d*1#1cg%0G9!NtA?Rqg(C_QzzsJkBZ zdqTYS0Tl=h8!k5-5LUg~VzBZaP3sEk{28M%u2~Sobz7;{Fpyw9(gXlYNGL!R0+|Fi zJuw<1r^&-6{HZ`SMzDq88-=rNr;DLNdXm8$r-1lA^#DJz_xVQzNC01ZK>~D}{Ju(e zj{0|E^6wVf|7R1$V4n3@9sFAN5|g3+&B`TlA6|`Z{z=l4|Gxf5&i?Q0{eNodSeJv4 z`_Bpx?m$NY?oi0orFbEv7|i#3#K8g+z3yai#mE#vA&{NCAkaM7VlXHJ9f%SL1cVRh z(ec`_6lY~+M!NjO`_M6^4Pya$qtNBgC|iM2_)zm}r|w0~iAY28XSCn5fG!6EUyUNT zLX^QFJ#$87YK}{{Ge+;ZX0$PYH9H5uU%JXM zBq8rp*VnZNTT_F{w&;Vl?+*sbpe?fQ(LyZ_15tI45$Yh&41fEAqW`N8hj05Yv_L>@ z{~Z^vDEa^`)NHU1LIHw|;h{wbw$T12a1US%!Ua>gc#!kozIa?v#zT4+uY8Y4P&N02 z2dF-@(5Ua#^)Q(F@7()b5QHegeH4DWLz_EDW5fBa3qjGM9|rhi0)XS3)jnjVpQj+6l+#`D5j9s8qG7G)WKfbUa%=zKXK-PP$Qq(yI((7+ZH)ygG~_CSby;tj=v1 zJW*1i0<1XH9B+l;@QM3DK|zQRAgii#oJ|)IaRZkf9TUAT$a%sN0l*3B$BYTp#Kgrb zd7ERz2WaXV^rQG=Mn=}Y$Jk--MABPwr3#`#qz>(Y!;kh4#It+z{n4w&&uDxS`B;As zz;FO10K`6`qM=EJMqz!xj>d_39E%%=7Z1W00M_9Au>pTtq|ne%v#8webp%>*lc2mW z8;Eod^E@ zhc(>15D$`%wY`J;P2%dA8ZDlTwhUsNbJb#YGTjY@Y#n8;gQc=BHm)crQAw+Ui<;q%UwX_3C9G-P}6!j~kqnNvG$pFGtI_BlRlGrSCJwrXhk?f~y1iP1!n5RFYr zS4V^p9oD12(!XmoQLd@2TRZXIc}U~a(|B5#W8{~>{+eh@u9r|i6KoFMFlPAycuo)g< z-Qfy1d3LeQeDdU0v=?gDuq64_vq(5KIKn1Y8E}IdaIlr={!QZrHazY1Z~c0tpKpxX zUM&gdn|+DiWmh00JYkw~^K@>=u>TJ0QBtfg=5dXU4XtlTE~Wf|;sx)5&h^5p_T*+`I0dbI?&t5$>N?8kZ+)zuVH=Y` ztQP4+t`?VX!KpoNLWV1Lw{BGi1s?Gb-TX{7W8ou;=d2m*QQ9dyU+T{#0|I)6Zq^ft zw)va`pd!~RW@%y!DfZ_QI5P=f>68k5>>blqoPrD}L#VkJ@#zs#R*7M&NGJ7+baB-`IKc zT{gt>6%^Sm^vHo>z(Oo)+X^PrDhPKl5IvpSWtEYFM&BJ;Nj|6}`9ebEH%eZWXyH8& zkH?UwbKK|Bo)-GZ!E~0YM`mmuoVAr{swAQDIif#|j3K*kq$uO&a}bi>FI2zzAk&h- zCuu0SmT4v%il&{M_Mvs*(TdqSsK*n3jgI+wqD9+dn|czi$AWuLORp9Celkw@t(AvP zGx{en%C)0}_`Z_wQT4ZSFP=GW$+5Am2{ePkRBIX()z1)`Zj`T6Mp;{AkZ`lb_mMRN zvt|cT;&A+vyH_=GyuuKHkEMDu6`6lvK>a4!3B&w_d zuQvzwNi%MEPEpcca=kLot|Lsb9-&5FJp4A@_!GU(Y|Dt5#vr(k6n?eonaQ4+{FY(- zG^Sp8@%FaAhMsDr@C?Isr0JJKUyr-ppRLykDe$wEsz=omjGULo4>ne%G3w6uNqGY?Z%f{ro`gb;YjG?vmwmYP5af%SK9`)3$c48<>53w(Q= zQm0DrcN}nRjoyi1bM}mFE6pe*ExeMm5gcxLPvU~a@`jHT{CeunM6mYAD$n&tq83Gj zeOwx}EmID1D;|ta#X8FPfW-LLgGm6dQi!ukRh>QM zmoaZ3x2li#CHMC;LoR*S-5#zPibL)9msHI+HJbJbCs=Kmugy9$wf(f%B&4>G5)^KU zxB{XYox`Rk-5LbGlTg&^601p$(OO>wp{BQ>-AO!V`XL|wR6TBgM|xz0%*svj!9(mift;K zF}OU zD{Ck{ILYQB_o1!F3Y8JJ8;;2KaRpOIf|-uvoZ}y>tR9cQ^;8ICRzSQo8Pk2KadXD4 z{CP;NF?4Zte~S6DCTCc9ut?xrhCPdv-s&9b{gc<&@l{?dq;^u813hU$jvx3*4)_nA zS)WGe+v*IU$;txyq+FIbc`HTw3F_*5D}vmXRiVYgX%vOcG;!K3IKS*Qi0}mu50?it zAn){ipl@mpVZXVm`{gPMVzam1y#j1@<;RbpH65~ z4cp8q6CFiAujg@RAGaaRlvT5hXcZ^CFt#ZFh+J&`+^N-IR?=+?gZMm=Uey7U=z!UU z_ee5Wa^Hek?)>U(Cz7cF8B=9;K^7-o)d(>(+i)}m>z9y7YKqJ7^e6VXH?XyQ!FM>n z*NB#ciT#IESolj*xNdxpPM{uKE45KF)Qn}~{?o;PkT!uD5{I0)vSQBFt@tO-0B@?p zJd<)+;&1VyzikH}E2QmZxQ@m&s`r>3+54WUr{(9SEZdOu_EMyx;_ugD`kt}wo?+rv zKl>?7;=D3^*ZxbmoHc8^ydtHAzH-1iqU5pjay7GhqWbTjb;t_``*^n#crbxG{sGz( z3~4zT&z8cC_uocuE3?Eqzi{#RoP@2M!R0A{r`8JO$?W|hm4&K7%i_IZJ``yAnu5y` zd*69so0iVam7F+r*gjMG=umM@2JpLC+Hq!TJVu|lsEY{+#in(JQPki z_@d<-xp5a9L?lVAk{qVk(**8IzH#!$=?s+^L#2bvsfp7FUi-%sy>!Od`_d@b??1&& zy?jjFaMl%jh*`QLTl&E-VLBh(r19C4+&^Pcclt!Gx}DfwVeg(Mlle>zx}lwUy?a#T zUa{<9c1W^3o8(J1VvlMjvp)8i?_#ZPqn{P)PiN$DSHCEg{)pB^;91A}_|Lss^?Zrb%Y1b4*Xvd4xW9h?lBPqA zQr{}ZYPVF4fd7c7X@`vbd(*x<{I?f8 zk;kW_tnSnbmCrsd%qJAV+nis`XSTu1$85J2rC_&ixAx|GD`gA`?@?D~z7Z0?oN(fy zMUAc(xgp5$l=wor-}#+AJW+BN@o7kIPSRc`fgOQ*HA9X#oXRyXUU|2nRC5xItLB!+ zqyUVW>Y9vcM1DpH+g7^JFoS+uh_EO3^D75|euK!n!$bMac()t&B12=7(yMX8{O*M` zjqhPyZ;NPkeT2IPAiKUvK7&{q0@pqJ+ubw*z#oqdU9a+rQ351Gc~c9-v|}#+~XXH2Q-RY@8mvCO*u{6WpGi6veD=u26dm{&v;xO z10E_GGm)DE=^e!9z|+9CJt;IC!kw`ShhjNHdYLoG?<{ZVJETBId6QpeBraBdZ<{Es zzA1b?U_+X?4ZtOBKn;}gGjz!ceUWZh%UwPW{m#6Y!X|9*8cVf!;Ut%nSy7v};X9S$ z*~rbFlV}#YF96?;&h-^}8C@KmU||vc6nZcO_l-9(G52R3j0H=u_3T<$uy{RiZ|)pA zAhy_T>0H1?T6|mk(r;l*u7BrAF#Rnh)+sG#DqES@AFqCEA?KrIbF{bF=q(%XzncyQ zJj>mV5=tK7wLg|JC_@m4#HnC$Eq;dqv2wlSDz6%ax&=T9Lwbfi4rI0IsGV_Aup;ch zeihZth<J8{X?ki+o9TQLa^N-RDeBxguYN?PIClKKBR>BZ-#+>+NhHUR@c@&E`51!$=JCdbo6YMz12Z!)1 zESiKiy(_p;xwVz>XgaB6){Hm0JVor5Z_0qnN7t9oH$RecB(=rDnHiRxF-_xr|u83dAsf)0$ z2)z}RhsUIyTry`x|_K8z>4G@rFI(&Z?S(?gm!K- zwUDU>KH+q{hceCNm#tf(0@X@(#x~)cUQuuGGW+o=sd@Nz6l12^xf)mJ2NsJVtoF&b zoK%VloZ@}V*8(Mnc1v>=Stf6VK8j%@{a zjZ8my>s~P*qx`+X=#2RH6$S#>v^ublBmFu#HN8BsvNb=y_-$inY?mHFPtU->$j-K? z-&_kr73G!Yf;ez`p5k-j;3pS2k=FI$+90AS;I>-uW0&Z=oL5OmACV53E%w<{#GR;w zl<~V$9?lF!lZJ9SU8I?XSKdwFuyKpJI~rbb&)}JJ;j!Tv zaJ<7;T4eCvKgcFD%GV#q+tPOV7{@ZHUz`xZa4A62-D*TImBU3-=f!_{5!NLYuu?EY z*;v|`+)9DeAnR@{gVV_tYJl0dKHHQq`xHtkZ{_EX=^)|rm+6LojVyEzCyW37@)h27eU%!OF4D=B?(tDpFS^&8T#Pa&ZfBRnk#I%gzOyG7hTe-^kw`&wd{%6T zx821;aFkjUoQw>3Q@)z%E4fUDN&4tnL=_GZ0kpw%1kc;m3$Q(HCB9Pu;%ttl6S)AUpLz?)g>B=gm3pPSFO4L1=Z zav1^mD82|x4GTbjo}7^!=g|gMu;Lr@CT~27ph;37FLVag7Afp@=$-!VfKpOh@=oH5 z^E(+Y16guT6F(+1){oemg{HStiZ%X#RjN1-(vYI)s^y~q9`4V1uGd%oNQiU}FSmL~ zf+Tb@r~SlnWN9H7bT22x9=laUFK3)%FDfF#|7bExRA;4yhQ4Y}zt9((L@4EtE-L1T zq=A_GG;m$^G#*@39?W0u&}@6Xd#MPOA?AXZ=|B1ekjpuvUQ)jnlQr<%y);RiW^`Z|Q`1odN9M53t>nEpBw8KyGK1?#`!~m>>je2tchL>OEaXlKi zy?-^N(ec|O?tGLfpKO(E?6&GMceh=;?#Fs!2~)X8-ZL{ht~V-Ta)fVh=WzU6<60j7 zkxKPK9Q|#37_a7+-P#&AC=84c+mI4nsIZ0|wU4d5=w7zJ*$6Y{k2GO2_ip2hLXGyD zPH57avhvt`Z*vzw%3G|Q+xXZS{gY+;%vJ%yM}wM=CrLJ4!h@O5&03#hx!P<@J^L6j zTSb5yLx%DGdFbIaf0>EuXX5c)#mnacoY7kIw~+v_GKUfSC`CzhhV4|Cy-Wkd*LNd@U_@i2 z-c~~PA?j~m9Z5Ln4i5_d=q_B^bN-2G&p&ysBNcK|x>+PCkI`F3daI?9_tr!NV}^9= zc`(s4Db&n_!lwOl`DUe4@GedHX(@DCp@nT>tT~Bap*a@G z)y(TzQ3nBU#%U5HY0sLOe4Gu<5EY$xY?nJph};1;FSXOKKYNo-VI62*C1E^)z{e&r zHjL*^gYcassA+JubPerkxF4$NCCdKl6(kt61`L$UXQ(6tQ%>qQVHL z*#5$^bVG2su!=G+f$;LgC!C3LJhpk+#J$=?_v_=IJ2rSEKZ6dB=J;Xi^jR!}7E3p* z<+%DQ!#d-5iJ2dUg#1-5>Ilhqg)bz}a4oKTbIIssmru?~h%V$zo&6bW${Z2jvS07& z!ip?rzs}Z`saLIQoKt&3U9QI~4kuac|9Ft77;TbMZ!#(zVxMU-&$IElkfmzid2P35 zx)_%rrbx@1E(A~w>_)=nPQU{n8`t$H1IVMPoZA^BwQ?;DNE5Bds7qT>(d0hZZXZ6Q6e}V}6;_i$C<~Q3vnp!BlWkQjYDF z$Q5NshKLji@6*p17<;Z0=#$etU7E)tk@--#(X1r}g$o0f)t?KmY)5pC{r3@8lMs2A z9CVRbCw|qphDcXivm61~`qWo3mCm9P8nTAb84A@LmBQmoSZ)G(Lh!`>0-Wrqyq(Oo zAK&Y7|1s1Zks_J*>99O0{#GI5zkh2}$jS`%6v>>y0?+@3|UCCM|E0ek2-TE{P5 z2*>05{iMCTJG1gErWi2e&wBax1=OK?v78kUtqE9GxfID z6>jKS(fw&mFnbeQ)~_h!&pF4~&pl1+bsOs$+3c2{fbN>`g(N?rxGo8Lx)r&U&ULkJ zhJA6MXQ(kqx?$<_hc{Ju&36G0wUz1?*{tYh;qtnz?l!u3hMU& zBlS^nOvb0zLmcpvpNYiaR+5IEQO25U_KVb<{1Ug+>2g7m>!T`{HzLPapPWu?x?u9H zaOX(NUo;t2s%t-o34DlECY=}7Y1{rnL0wE7W&6o)-L_bAvbn2vjc1P7buN4O=^;W6 zo(l`pB>d>hMarqFT`dS})rchFm^ccOb?$2M{IB}0i_;g17sQ`gCzZ%U_nt##u}WXt zzp|VOOi_=sxVwPeLF+nQ)MrVaPRyX*GzGx?KKxQ$cFZHR^x zlzQXrZ-+^Dkeb+1Th&FS|%Zj zOPxj|)&H6&nyyx#Q2A_ZTU$k>v)D%sysTIvVdhq2NI9q$=(nD7CNwCHQ*>MsVx%h< zP5vS5^W5?Ie*fdrTkF?OLy&-jWtYhad$J2Md6wkeDRS$#`x}QI2)3KvhQp4Uq^)>N zHU^9@pTD3%z%)6#5#Uzi>5EMw!0k2G$=QU72xIO{rF)uI6eYgZ6?$p?q4jX@*hwQl zZ6`@8^Q9E(p4&38GP^E?`vVz(bj>Tkm=T)yx*o~INV_JVD?xR{aZ$F)&vkQ#58&0}R}gE9Pdrw@OaAE;TdmS@!gwnh*(9jdhh(xWj0#6Vpo`Uax7Dr?mwaOxd#A1)de39nte-lQaEKIq~VEM(SM3o>tLt=4Oq@deAQzi)4g zZKXU)xl?>fdosD-(7wX?L^DjcKYp$`FJ6^+g{5$y@4;{f*%dJ`(u~Z!fJ%hfJ zLE&=Mfz@JjY+6`Sb2DAQvNtL*1Odg-(NJ-0`Am^DxuQ}84)ESR?Zj78>E<|Tf=e3q zsVt!L?tG%>YxOoV2ok-C9l|4ki&^vnPWRg>U$h8weSF6zM5o*sS>m9nB^ep z{&JqzQwa}G-LX;Ia;P4R`YIt801p+E-E$39{NjR4!-<+(YlY%Wjgt$ z_~Z|B5y&^gEuQ)#|MBENh)&ele*!nH`e~`U)we1#Q7Xzd9BRRT{e)jEWjzzJ8Gh2T zikJ@IZ&qyLTJ)w)ESEmcO6Lh<<^HT{cFrMa-um@|J8TVq&no0qMO??vXHo*;-Hxjp z$O~MmrSeZU0trkaciOVuX{?^lV<4R>t7yaM6-sd?m(=6F*AL7-w_f3LUJNr!m^e^x zu($lOS5wPy{j$B{^RsfG*kwjR&Q^M5d8&}&aedk!fI$>}Tm)Lzy)fAWqOuxsBz{;WD?YQ()am_z7B zP|TNDj^WY*-{q}i=p&;uTIi!Wk<;?X4hDo#1gfmp4w+>sfrjl~uY_IL5YhbBwBKCT zeaJl+=|c41-;+s;VUYYFd`^cfan)Ety&~@*Nt)cXe+X?a!YqpSa`+`T1T4<6rLtCC z8%&UvzF$Vhw|gbghMshG81G70x;=amo8#ji{PYD@ct~+;F!&Dx`dqbw2pb5ZqAqPW z$Z^xtopUfXW-YXJ#HuCFwQZt-nTwTz(Gx9B*P(nr{kE4z>W9in^1bsrTdHHN)^o$c zzNfl*bGau!xIVsOvex6%x#AG9{%wo6@TnfpJ6l2J7B6U5w?0VfGxqgzp@7k#iO`Ty z-TobSbqBWppvj2qyU!iV!k_&&9j!6v3vEObU=G zg%xeM*N54DK_IZ}l9}p?FYxcfeupA7Cgio5`L07w;El`m+VJ)Jy9(mC6w7j=N|QE| zD}SL~1pL~LTqM5{-;$ghORgXIlLv;$KXm)HqS`taZW9zTt^Fa}3XXL6aKerx3?AGi zCFuUkFLj-I)F#Yx(bgcl+dV-iHmqE3qGMSDD@SO^R}#QSlqNZO`NJ{Nf;V3%u>ciz uy9@DNPs)M<^=-7yB(6@HDmqQ%en_%Px%;z>k7R9J=WR!vA7K@|Q{di2n>LM<#9Aqaw~_)|dw=28_QP_WI#TTTWkZ4fEi zLMcc~C}K+q=}G9pON=N4a)_4|LZFx&0zx2$vW10cK$k*2PY=l~GrO~!O)T_KKM2`* zJ3H@t?|buRfLr`ycv?+(@phZg=g;q=9y?p7xZBG4+VT=>BIS~XfPV^;Lq5)yJ>0qx z5utOfRwr7mP7aRpNCxEbwz454KvN%%#E?DQ^03kEon7PJj~t$@EaLK_hD3ZH08r72SP0CZ zzfT6xnD2&&g#dMaa$4o=lS4j>?f!#@h%|{LQ$T;83`y!n=;<_c{R+S;X+`3W-HSwg z--v!E@rsN7@!Xt+2mnY@w_#(ST@x^;o_%MI-b~i#>*8$5RNj>Y9D#C4;~cq({_>&* z08Q;1(Df@+v|=mY08BN|WNgvRDf(n851+4#OL_d;F4ThJYA0BVkUGCf^z{3|5t*AW z>YBEFfTpmM=(j(-2LQHPQV=r(b0i!)VN*w= z35|^o8(Ypvd$phd0J4Y7V$1=?qGc;q3yMeT^^%MNWRznp1ZFTcIt-vO&M3!t^YS^T zy=a|sNyFOm5|rHc_6V><03ZX9YV|i)tec;{0DzPB91&Lp^mElC^?HeZu5v}grkH{{ zj;?RmI?kn&Lc47%7LgIXt7t{T@qj!o{GQtV!H}gvxgy{My0}x?Me`{fYk-wOB#AjI z6|E@Df>T>|U4$$lb_`~l+Ue|smJ*1Z(jUM_SAR6f{f8qleEhm=+^Wp;T@etGppbgK zWI!G_b^+@g00u{7luH`unUG5-EfTeLlQomj&sC3iB0yLIec>Q}?xbzkh^}vNC*@zc mN_!^)u5ZL{kLg?dKllUNPpiMMXs^Ej00002S4|^vmpA&jYi`T83r}8XEF-aV%Pe5CI3@rR3@ue-r`a9QjLpxvK6}Y|P1W>kyb|Xo-k3RQmhc}ImCWtN zhQH^{Ek5)6`F53;KVKSp`xQ9wvfsLXe0ETKLXKa?+WBwStGs;pPp|6#6&bMIAmYe} zyZfL1Fi%)jJ81_qPkvJE#^Rk@+gN`mxt8qR2z1)fqFm>V8^um2S4|^vmpA&jYi`T83r}8XEF-aV%Pe5CI3@rR3@ue-r`a9QjLpxvK6}Y|P1W>kyb|Xo-k3RQmhc}ImCWtN zhQH^{Ek5)6`F53;KVKSp`xQ9wvfsLXe0ETKLXKa?+WBwStGs;pPp|6#6&bMIAmYe} zyZfL1Fi%)jJ81_qPkvJE#^Rk@+gN`mxt8qR2z1)fqFm>V8^umPx$A4x<(R9J;$U>F6XU=)mkkq#J%QS|7-p8w<+E@$9El=(zC;Qy}=|NsB`@c+xx zOaITw3jaSRD-35N(=c_!I-2MZkkv9_NUWdTh%Wc%&mRo+i(516Pw(H#VCEi8(0nFh z96(FJLW*K+zGe9H6RTPYadD!|BrOE~{DkA86+QI~e||C)t(jb3v}SVs@85qIV3-s@ zQ4|!dnOxuLpNWw!NC6~8!Ow4>QTXj%35}H-r`IzuFfjc4{hjs>z_5JVf_er928L$0 zm_`O{>4Vx1Ku?6tZZVCFfB!Nt{{4%g_QlJWM43r+8utP$z`*eC^(&%^Vxptq+Lg;BIbalwf>AIEh714z)ijGUqLk|Q00000NkvXXu0mjf D*?^)D literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/fill.png b/Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/fill.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc4449166d4a383f794b502820804f9e52b8110 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^TO6^vn85-BI_Evun<>eLT*YZYGDncKiQ(f9rzx7Uhm22Avb@<7*BT{5mDe7NZEFM7|zr zVH4h{=eqsMF>@Z)$HCsB>;^z^r>bb$!VR0c8iByk_n3qpU$S^um?215M7h(SdHMP~ zi2;)h+oBEft1QDxvy6^?SfRi+L4@hVgQ+vs4r?3xw!M?|mYif{ebTh8ai)Z;I{&+z zDFK%Px#(@8`@R9J=WmN5&$Fc5{GA~;ke&>{t)ONJ~(=-U5J*Mhk82M9&lrI^8~4iXS8 zxkD`$y>HFCymv=P0tkZe@63qxer%rwRoP!o007(62%;Fasl9rq38MJsyxe&8WPry_ z@;pb|c7wVwT%#z8r|>@Jlz{5^-C8oh*i1iwJ4~;@sh$1=B*4!HVBLfcV^S!kpp^1z zs_MYrlRW`rQfQr!I;|5Jld=Pl6R=IqHop(yYAML)_6jfYrmcU~WFfGo>C@*gP6 fl4?{Cgzs?$`K2(Do@Ol&00000NkvXXu0mjfCFggL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/meta.json new file mode 100644 index 0000000000..30a6ef2a55 --- /dev/null +++ b/Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "Created by EmoGarbage404 (github) for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "closed" + }, + { + "name": "fill" + }, + { + "name": "frame" + }, + { + "name": "open" + } + ] +} diff --git a/Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/open.png b/Resources/Textures/Structures/Wallmounts/defib_cabinet.rsi/open.png new file mode 100644 index 0000000000000000000000000000000000000000..aaac1394c60daeecfc6e80de5cfffce13fca1efd GIT binary patch literal 377 zcmV-<0fzpGP)Px$Gf6~2R9J=WmN84iKp2Lfh+8%xrc-d~5)_g}5p?V3Z*UO*fV;yH|3n2x>FQo^ z5Hg6hkXj`OZYiC*2)0U1+H;Dw3Ao)Y%`+W$2k*n(eS8NM6&0(Fp);)0Zb^WeZR2bF9Ft72iI(y4QmtAayUM31^}05Mz&J literal 0 HcmV?d00001 -- 2.51.2