using Content.Shared.ActionBlocker; using Content.Shared.Hands; using Content.Shared.Interaction.Events; using Content.Shared.Item; using Content.Shared.Emoting; using Content.Shared.Movement.Events; namespace Content.Shared.Puppet; // TODO deduplicate with BlockMovementComponent public abstract class SharedVentriloquistPuppetSystem : EntitySystem { [Dependency] private readonly ActionBlockerSystem _blocker = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(Cancel); SubscribeLocalEvent(CancelInteract); SubscribeLocalEvent(Cancel); SubscribeLocalEvent(Cancel); SubscribeLocalEvent(Cancel); SubscribeLocalEvent(Cancel); SubscribeLocalEvent(Cancel); SubscribeLocalEvent(OnStartup); } private void CancelInteract(Entity ent, ref InteractionAttemptEvent args) { args.Cancelled = true; } private void OnStartup(EntityUid uid, VentriloquistPuppetComponent component, ComponentStartup args) { _blocker.UpdateCanMove(uid); } private void Cancel(EntityUid uid, VentriloquistPuppetComponent component, T args) where T : CancellableEntityEventArgs { args.Cancel(); } }