Fix dead mobs falling asleep (#12917)

* Dead or zombie mobs can no longer sleep

* Removed zombie fix

* Moved dead-checks to OnEvent

* Cleanup
This commit is contained in:
Errant
2022-12-15 21:34:43 +00:00
committed by GitHub
parent 2af8ada799
commit e9e6255684
4 changed files with 27 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ using System.Diagnostics.CodeAnalysis;
using Content.Shared.ActionBlocker;
using Content.Shared.Administration.Logs;
using Content.Shared.Alert;
using Content.Shared.Bed.Sleep;
using Content.Shared.Damage;
using Content.Shared.Database;
using Content.Shared.DragDrop;
@@ -56,10 +57,17 @@ namespace Content.Shared.MobState.EntitySystems
SubscribeLocalEvent<MobStateComponent, DamageChangedEvent>(UpdateState);
SubscribeLocalEvent<MobStateComponent, UpdateCanMoveEvent>(OnMoveAttempt);
SubscribeLocalEvent<MobStateComponent, StandAttemptEvent>(OnStandAttempt);
SubscribeLocalEvent<MobStateComponent, TryingToSleepEvent>(OnSleepAttempt);
SubscribeLocalEvent<MobStateChangedEvent>(OnStateChanged);
// Note that there's no check for Down attempts because if a mob's in crit or dead, they can be downed...
}
private void OnSleepAttempt(EntityUid uid, MobStateComponent component, ref TryingToSleepEvent args)
{
if(IsDead(uid, component))
args.Cancelled = true;
}
private void OnGettingStripped(EntityUid uid, MobStateComponent component, BeforeGettingStrippedEvent args)
{
// Incapacitated or dead targets get stripped two or three times as fast. Makes stripping corpses less tedious.