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