Files
tbd-station-14/Content.Shared/MobState/State/SharedDeadMobState.cs
metalgearsloth b2322864e9 Remove IActionBlocker.CanMove (#4449)
* Remove IActionBlocker.CanMove

Ported the remainders over to using MovementAttemptEvent which should also help make mob movement a bit faster.

* Make that check faster
2021-08-09 17:34:01 -07:00

113 lines
2.6 KiB
C#

using Content.Shared.Hands;
using Content.Shared.Standing;
using Robust.Shared.GameObjects;
namespace Content.Shared.MobState.State
{
public abstract class SharedDeadMobState : BaseMobState
{
protected override DamageState DamageState => DamageState.Dead;
public override void EnterState(IEntity entity)
{
base.EnterState(entity);
var wake = entity.EnsureComponent<CollisionWakeComponent>();
wake.Enabled = true;
var standingState = EntitySystem.Get<StandingStateSystem>();
standingState.Down(entity);
if (standingState.IsDown(entity) && entity.TryGetComponent(out PhysicsComponent? physics))
{
physics.CanCollide = false;
}
if (entity.TryGetComponent(out SharedAppearanceComponent? appearance))
{
appearance.SetData(DamageStateVisuals.State, DamageState.Dead);
}
}
public override void ExitState(IEntity entity)
{
base.ExitState(entity);
if (entity.HasComponent<CollisionWakeComponent>())
{
entity.RemoveComponent<CollisionWakeComponent>();
}
var standingState = EntitySystem.Get<StandingStateSystem>();
standingState.Stand(entity);
if (!standingState.IsDown(entity) && entity.TryGetComponent(out PhysicsComponent? physics))
{
physics.CanCollide = true;
}
}
public override bool CanInteract()
{
return false;
}
public override bool CanUse()
{
return false;
}
public override bool CanThrow()
{
return false;
}
public override bool CanSpeak()
{
return false;
}
public override bool CanDrop()
{
return false;
}
public override bool CanPickup()
{
return false;
}
public override bool CanEmote()
{
return false;
}
public override bool CanAttack()
{
return false;
}
public override bool CanEquip()
{
return false;
}
public override bool CanUnequip()
{
return false;
}
public override bool CanChangeDirection()
{
return false;
}
public bool CanShiver()
{
return false;
}
public bool CanSweat()
{
return false;
}
}
}