using Content.Shared.Body.Systems; using Content.Shared.Buckle.Components; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; using Content.Shared.Standing; using Content.Shared.Throwing; namespace Content.Shared.Traits.Assorted.Systems; public sealed class LegsParalyzedSystem : EntitySystem { [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifierSystem = default!; [Dependency] private readonly StandingStateSystem _standingSystem = default!; [Dependency] private readonly SharedBodySystem _bodySystem = default!; public override void Initialize() { SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnBuckled); SubscribeLocalEvent(OnUnbuckled); SubscribeLocalEvent(OnThrowPushbackAttempt); //SubscribeLocalEvent(OnUpdateCanMoveEvent); // WWDP } private void OnStartup(EntityUid uid, Components.LegsParalyzedComponent component, ComponentStartup args) { // TODO: In future probably must be surgery related wound // WWDP edit start //_movementSpeedModifierSystem.ChangeBaseSpeed(uid, 0, 0, 20); _standingSystem.Down(uid); _bodySystem.UpdateMovementSpeed(uid); // WWDP edit end } private void OnShutdown(EntityUid uid, Components.LegsParalyzedComponent component, ComponentShutdown args) { _standingSystem.Stand(uid); _bodySystem.UpdateMovementSpeed(uid); } private void OnBuckled(EntityUid uid, Components.LegsParalyzedComponent component, ref BuckledEvent args) => _standingSystem.Stand(uid); private void OnUnbuckled(EntityUid uid, Components.LegsParalyzedComponent component, ref UnbuckledEvent args) => _standingSystem.Down(uid); // WWDP disabled since there is a minimal move speed // private void OnUpdateCanMoveEvent(EntityUid uid, Components.LegsParalyzedComponent component, UpdateCanMoveEvent args) => args.Cancel(); private void OnThrowPushbackAttempt(EntityUid uid, Components.LegsParalyzedComponent component, ThrowPushbackAttemptEvent args) => args.Cancel(); }