From c7c083e9c896a7c28731358cd2490d16a55bf351 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 3 May 2023 11:32:06 +1000 Subject: [PATCH] Defib fixes (#16031) --- Content.Server/Medical/DefibrillatorSystem.cs | 11 +++++-- .../Medical/DefibrillatorComponent.cs | 30 +++++++++--------- ...efib_saftyOff.ogg => defib_safety_off.ogg} | Bin ...{defib_SaftyOn.ogg => defib_safety_on.ogg} | Bin .../Objects/Specific/Medical/defib.yml | 16 +--------- 5 files changed, 24 insertions(+), 33 deletions(-) rename Resources/Audio/Items/Defib/{defib_saftyOff.ogg => defib_safety_off.ogg} (100%) rename Resources/Audio/Items/Defib/{defib_SaftyOn.ogg => defib_safety_on.ogg} (100%) diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index d2dde73b5f..2beb0fe1d5 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -56,7 +56,10 @@ public sealed class DefibrillatorSystem : EntitySystem private void OnUnpaused(EntityUid uid, DefibrillatorComponent component, ref EntityUnpausedEvent args) { - component.NextZapTime += args.PausedTime; + if (component.NextZapTime == null) + return; + + component.NextZapTime = component.NextZapTime.Value + args.PausedTime; } private void OnUseInHand(EntityUid uid, DefibrillatorComponent component, UseInHandEvent args) @@ -115,7 +118,7 @@ public sealed class DefibrillatorSystem : EntitySystem if (component.Enabled) return false; - if (_powerCell.HasActivatableCharge(uid)) + if (!_powerCell.HasActivatableCharge(uid)) return false; component.Enabled = true; @@ -248,10 +251,12 @@ public sealed class DefibrillatorSystem : EntitySystem var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var defib)) { - if (_timing.CurTime < defib.NextZapTime) + if (defib.NextZapTime == null || _timing.CurTime < defib.NextZapTime) continue; + _audio.PlayPvs(defib.ReadySound, uid); _appearance.SetData(uid, DefibrillatorVisuals.Ready, true); + defib.NextZapTime = null; } } } diff --git a/Content.Shared/Medical/DefibrillatorComponent.cs b/Content.Shared/Medical/DefibrillatorComponent.cs index 05652cb3ed..983c63bc14 100644 --- a/Content.Shared/Medical/DefibrillatorComponent.cs +++ b/Content.Shared/Medical/DefibrillatorComponent.cs @@ -24,7 +24,7 @@ public sealed class DefibrillatorComponent : Component /// The time at which the zap cooldown will be completed /// [DataField("nextZapTime", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] - public TimeSpan NextZapTime = TimeSpan.Zero; + public TimeSpan? NextZapTime; /// /// The minimum time between zaps @@ -62,29 +62,29 @@ public sealed class DefibrillatorComponent : Component /// /// The sound when someone is zapped. /// - [DataField("zapSound")] - public SoundSpecifier? ZapSound; + [ViewVariables(VVAccess.ReadWrite), DataField("zapSound")] + public SoundSpecifier? ZapSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_zap.ogg"); /// /// The sound when the defib is powered on. /// - [DataField("powerOnSound")] - public SoundSpecifier? PowerOnSound; + [ViewVariables(VVAccess.ReadWrite), DataField("powerOnSound")] + public SoundSpecifier? PowerOnSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_safety_on.ogg"); - [DataField("powerOffSound")] - public SoundSpecifier? PowerOffSound; + [ViewVariables(VVAccess.ReadWrite), DataField("powerOffSound")] + public SoundSpecifier? PowerOffSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_safety_off.ogg"); - [DataField("chargeSound")] - public SoundSpecifier? ChargeSound; + [ViewVariables(VVAccess.ReadWrite), DataField("chargeSound")] + public SoundSpecifier? ChargeSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_charge.ogg"); - [DataField("failureSound")] - public SoundSpecifier? FailureSound; + [ViewVariables(VVAccess.ReadWrite), DataField("failureSound")] + public SoundSpecifier? FailureSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_failed.ogg"); - [DataField("successSound")] - public SoundSpecifier? SuccessSound; + [ViewVariables(VVAccess.ReadWrite), DataField("successSound")] + public SoundSpecifier? SuccessSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_success.ogg"); - [DataField("readySound")] - public SoundSpecifier? ReadySound; + [ViewVariables(VVAccess.ReadWrite), DataField("readySound")] + public SoundSpecifier? ReadySound = new SoundPathSpecifier("/Audio/Items/Defib/defib_ready.ogg"); } [Serializable, NetSerializable] diff --git a/Resources/Audio/Items/Defib/defib_saftyOff.ogg b/Resources/Audio/Items/Defib/defib_safety_off.ogg similarity index 100% rename from Resources/Audio/Items/Defib/defib_saftyOff.ogg rename to Resources/Audio/Items/Defib/defib_safety_off.ogg diff --git a/Resources/Audio/Items/Defib/defib_SaftyOn.ogg b/Resources/Audio/Items/Defib/defib_safety_on.ogg similarity index 100% rename from Resources/Audio/Items/Defib/defib_SaftyOn.ogg rename to Resources/Audio/Items/Defib/defib_safety_on.ogg diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml index 16e3fa7a22..09367a5ad6 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml @@ -34,20 +34,6 @@ zapHeal: types: Asphyxiation: -40 - zapSound: - path: /Audio/Items/Defib/defib_zap.ogg - powerOnSound: - path: /Audio/Items/Defib/defib_SaftyOn.ogg - powerOffSound: - path: /Audio/Items/Defib/defib_saftyOff.ogg - chargeSound: - path: /Audio/Items/Defib/defib_charge.ogg - failureSound: - path: /Audio/Items/Defib/defib_failed.ogg - successSound: - path: /Audio/Items/Defib/defib_success.ogg - readySound: - path: /Audio/Items/Defib/defib_ready.ogg - type: PowerCellDraw useRate: 100 - type: Appearance @@ -64,4 +50,4 @@ - type: ItemSlots slots: cell_slot: - name: power-cell-slot-component-slot-name-default + name: power-cell-slot-component-slot-name-default -- 2.51.2