using Content.Server.VendingMachines; using Content.Shared.VendingMachines; namespace Content.Server.Destructible.Thresholds.Behaviors { /// /// Throws out a specific amount of random items from a vendor /// [Serializable] [DataDefinition] public sealed partial class EjectVendorItems : IThresholdBehavior { /// /// The percent amount of the total inventory that will be ejected. /// [DataField("percent", required: true)] public float Percent = 0.25f; /// /// The maximum amount of vendor items it can eject /// useful for high-inventory vendors /// [DataField("max")] public int Max = 3; public void Execute(EntityUid owner, DestructibleSystem system, EntityUid? cause = null) { if (!system.EntityManager.TryGetComponent(owner, out var vendingcomp) || !system.EntityManager.TryGetComponent(owner, out var xform)) return; var vendingMachineSystem = system.EntityManager.System(); var inventory = vendingMachineSystem.GetAvailableInventory(owner, vendingcomp); if (inventory.Count <= 0) return; var toEject = Math.Min(inventory.Count * Percent, Max); for (var i = 0; i < toEject; i++) { vendingMachineSystem.EjectRandom(owner, throwItem: true, forceEject: true, vendingcomp); } } } }