fix: Adds a cooldown when attempting to wake up someone else (#11847)

This commit is contained in:
Francesco
2022-10-15 06:13:24 +02:00
committed by GitHub
parent fd63375cdb
commit 635057fb7a
2 changed files with 18 additions and 1 deletions

View File

@@ -141,7 +141,15 @@ namespace Content.Server.Bed.Sleep
private void OnInteractHand(EntityUid uid, SleepingComponent component, InteractHandEvent args)
{
args.Handled = true;
var curTime = _gameTiming.CurTime;
if (curTime < component.CoolDownEnd)
{
return;
}
TryWaking(args.Target, user: args.User);
component.CoolDownEnd = curTime + component.Cooldown;
}
private void OnExamined(EntityUid uid, SleepingComponent component, ExaminedEvent args)

View File

@@ -2,13 +2,22 @@ using Robust.Shared.GameStates;
namespace Content.Shared.Bed.Sleep;
[NetworkedComponent, RegisterComponent]
/// <summary>
/// Added to entities when they go to sleep.
/// </summary>
[NetworkedComponent, RegisterComponent]
public sealed class SleepingComponent : Component
{
// How much damage of any type it takes to wake this entity.
[DataField("wakeThreshold")]
public float WakeThreshold = 2;
/// <summary>
/// Cooldown time between users hand interaction.
/// </summary>
[DataField("cooldown")]
[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan Cooldown = TimeSpan.FromSeconds(1f);
public TimeSpan CoolDownEnd;
}