2021-06-28 14:17:37 +02:00
|
|
|
using Content.Shared.MobState.Components;
|
2021-08-10 10:34:01 +10:00
|
|
|
using Content.Shared.MobState.State;
|
|
|
|
|
using Content.Shared.Movement;
|
2021-06-28 14:17:37 +02:00
|
|
|
using Content.Shared.Pulling.Events;
|
|
|
|
|
using Robust.Shared.GameObjects;
|
|
|
|
|
|
|
|
|
|
namespace Content.Shared.MobState.EntitySystems
|
|
|
|
|
{
|
|
|
|
|
public class SharedMobStateSystem : EntitySystem
|
|
|
|
|
{
|
|
|
|
|
public override void Initialize()
|
|
|
|
|
{
|
|
|
|
|
base.Initialize();
|
|
|
|
|
|
|
|
|
|
SubscribeLocalEvent<SharedMobStateComponent, StartPullAttemptEvent>(OnStartPullAttempt);
|
2021-08-10 10:34:01 +10:00
|
|
|
SubscribeLocalEvent<SharedMobStateComponent, MovementAttemptEvent>(OnMoveAttempt);
|
2021-06-28 14:17:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnStartPullAttempt(EntityUid uid, SharedMobStateComponent component, StartPullAttemptEvent args)
|
|
|
|
|
{
|
|
|
|
|
if(component.IsIncapacitated())
|
|
|
|
|
args.Cancel();
|
|
|
|
|
}
|
2021-08-10 10:34:01 +10:00
|
|
|
|
|
|
|
|
private void OnMoveAttempt(EntityUid uid, SharedMobStateComponent component, MovementAttemptEvent args)
|
|
|
|
|
{
|
|
|
|
|
switch (component.CurrentState)
|
|
|
|
|
{
|
|
|
|
|
case SharedCriticalMobState:
|
|
|
|
|
case SharedDeadMobState:
|
|
|
|
|
args.Cancel();
|
|
|
|
|
return;
|
|
|
|
|
default:
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-06-28 14:17:37 +02:00
|
|
|
}
|
|
|
|
|
}
|