using Content.Shared.Stunnable;
using Content.Shared.Traits.Assorted;
using Content.Shared.Verbs;
+using Content.Shared.Zombies;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
SubscribeLocalEvent<MobStateComponent, SleepActionEvent>(OnSleepAction);
SubscribeLocalEvent<SleepingComponent, DamageChangedEvent>(OnDamageChanged);
+ SubscribeLocalEvent<SleepingComponent, EntityZombifiedEvent>(OnZombified);
SubscribeLocalEvent<SleepingComponent, MobStateChangedEvent>(OnMobStateChanged);
SubscribeLocalEvent<SleepingComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<SleepingComponent, SpeakAttemptEvent>(OnSpeakAttempt);
TryWaking((ent, ent.Comp));
}
+ /// <summary>
+ /// Wake up on being zombified.
+ /// In some cases, zombification might theoretically occur without a mob state change or being damaged
+ /// </summary>
+ /// //TODO Perhaps a generic component should be introduced that guarantees that a mob will wake up immediately and can't go to sleep again
+ private void OnZombified(Entity<SleepingComponent> ent, ref EntityZombifiedEvent args)
+ {
+ TryWaking((ent, ent.Comp), true);
+ }
+
/// <summary>
/// In crit, we wake up if we are not being forced to sleep.
/// And, you can't sleep when dead...