using System; using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; namespace Content.Server.Interfaces.GameObjects { /// /// Implements behavior when an entity is disarmed. /// [RequiresExplicitImplementation] public interface IDisarmedAct { /// /// Behavior when the entity is disarmed. /// Return true to prevent the default disarm behavior, /// or rest of IDisarmedAct behaviors that come after this one from happening. /// bool Disarmed(DisarmedActEventArgs eventArgs); /// /// Priority for this disarm act. /// Used to determine act execution order. /// int Priority => 0; } public class DisarmedActEventArgs : EventArgs { /// /// The entity being disarmed. /// public IEntity Target { get; init; } /// /// The entity performing the disarm. /// public IEntity Source { get; init; } /// /// Probability for push/knockdown. /// public float PushProbability { get; init; } } }