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();
}