using Content.Shared.Throwing;
using Content.Shared.Whitelist;
using Robust.Shared.Audio.Systems;
-using Robust.Shared.Physics;
using Robust.Shared.Physics.Components;
using Robust.Shared.Physics.Events;
using Robust.Shared.Physics.Systems;
public abstract class SharedStunSystem : EntitySystem
{
[Dependency] private readonly ActionBlockerSystem _blocker = default!;
- [Dependency] private readonly SharedBroadphaseSystem _broadphase = default!;
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly EntityWhitelistSystem _entityWhitelist = default!;
- [Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly StandingStateSystem _standingState = default!;
[Dependency] private readonly StatusEffectsSystem _statusEffect = default!;
SubscribeLocalEvent<StunnedComponent, ComponentStartup>(UpdateCanMove);
SubscribeLocalEvent<StunnedComponent, ComponentShutdown>(UpdateCanMove);
- SubscribeLocalEvent<StunOnContactComponent, ComponentStartup>(OnStunOnContactStartup);
SubscribeLocalEvent<StunOnContactComponent, StartCollideEvent>(OnStunOnContactCollide);
// helping people up if they're knocked down
_blocker.UpdateCanMove(uid);
}
- private void OnStunOnContactStartup(Entity<StunOnContactComponent> ent, ref ComponentStartup args)
- {
- if (!TryComp<PhysicsComponent>(ent, out var body) ||
- !TryComp<FixturesComponent>(ent, out var manager))
- return;
-
- _physics.SetBodyType(ent, BodyType.Dynamic, manager: manager, body: body);
- _physics.SetCanCollide(ent, true, manager: manager, body: body);
- _broadphase.RegenerateContacts((ent, body));
- }
-
private void OnStunOnContactCollide(Entity<StunOnContactComponent> ent, ref StartCollideEvent args)
{
if (args.OurFixtureId != ent.Comp.FixtureId)