namespace Content.Shared.Inventory.Events; public abstract class UnequipAttemptEventBase(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment, SlotDefinition slotDefinition) : CancellableEntityEventArgs, IInventoryRelayEvent { public SlotFlags TargetSlots { get; } = SlotFlags.WITHOUT_POCKET; /// /// The entity performing the action. NOT necessarily the same as the entity whose equipment is being removed.. /// public readonly EntityUid Unequipee = unequipee; /// /// The entity being unequipped from. /// public readonly EntityUid UnEquipTarget = unEquipTarget; /// /// The entity to be unequipped. /// public readonly EntityUid Equipment = equipment; /// /// The slotFlags of the slot this item is being removed from. /// public readonly SlotFlags SlotFlags = slotDefinition.SlotFlags; /// /// The slot the entity is being unequipped from. /// public readonly string Slot = slotDefinition.Name; /// /// If cancelling and wanting to provide a custom reason, use this field. Not that this expects a loc-id. /// public string? Reason; } /// /// Raised on the item that is being unequipped. /// public sealed class BeingUnequippedAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment, SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition); /// /// Raised on the entity that is unequipping an item. /// public sealed class IsUnequippingAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment, SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition); /// /// Raised on the entity from who item is being unequipped. /// public sealed class IsUnequippingTargetAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment, SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition);