using Content.Shared.Slippery; namespace Content.Shared.EntityEffects.Effects; /// /// Attempts to slip this entity once, using its existing slippery settings when present. /// /// public sealed partial class SlipEntityEffectSystem : EntityEffectSystem { [Dependency] private SlipperySystem _slippery = default!; protected override void Effect(Entity entity, ref EntityEffectEvent args) { var hadSlipComponent = EnsureComp(entity, out SlipperyComponent slipComponent); if (!hadSlipComponent) slipComponent.SlipData = args.Effect.Slippery; _slippery.TrySlip(entity, slipComponent, entity, false); if (!hadSlipComponent) RemComp(entity, slipComponent); } } /// public sealed partial class Slip : EntityEffectBase { /// /// Slip settings to use when this entity has no existing slippery component. /// [DataField] public SlipperyEffectEntry Slippery = new(); }