using Content.Shared.Standing; namespace Content.Shared.MobState.State { public abstract class SharedDeadMobState : BaseMobState { protected override DamageState DamageState => DamageState.Dead; public override void EnterState(EntityUid uid, IEntityManager entityManager) { base.EnterState(uid, entityManager); entityManager.EnsureComponent(uid); var standingState = EntitySystem.Get(); standingState.Down(uid); if (standingState.IsDown(uid) && entityManager.TryGetComponent(uid, out PhysicsComponent? physics)) { physics.CanCollide = false; } if (entityManager.TryGetComponent(uid, out AppearanceComponent? appearance)) { appearance.SetData(DamageStateVisuals.State, DamageState.Dead); } } public override void ExitState(EntityUid uid, IEntityManager entityManager) { base.ExitState(uid, entityManager); if (entityManager.HasComponent(uid)) { entityManager.RemoveComponent(uid); } var standingState = EntitySystem.Get(); standingState.Stand(uid); if (!standingState.IsDown(uid) && entityManager.TryGetComponent(uid, out PhysicsComponent? physics)) { physics.CanCollide = true; } } } }