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)
if (component.Enabled)
return false;
- if (_powerCell.HasActivatableCharge(uid))
+ if (!_powerCell.HasActivatableCharge(uid))
return false;
component.Enabled = true;
var query = EntityQueryEnumerator<DefibrillatorComponent>();
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;
}
}
}
/// The time at which the zap cooldown will be completed
/// </summary>
[DataField("nextZapTime", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
- public TimeSpan NextZapTime = TimeSpan.Zero;
+ public TimeSpan? NextZapTime;
/// <summary>
/// The minimum time between zaps
/// <summary>
/// The sound when someone is zapped.
/// </summary>
- [DataField("zapSound")]
- public SoundSpecifier? ZapSound;
+ [ViewVariables(VVAccess.ReadWrite), DataField("zapSound")]
+ public SoundSpecifier? ZapSound = new SoundPathSpecifier("/Audio/Items/Defib/defib_zap.ogg");
/// <summary>
/// The sound when the defib is powered on.
/// </summary>
- [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]
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
- type: ItemSlots
slots:
cell_slot:
- name: power-cell-slot-component-slot-name-default
+ name: power-cell-slot-component-slot-name-default