using Content.Server.Clothing.Components; using Content.Server.Storage.Components; using Content.Server.Storage.EntitySystems; using Content.Server.Temperature.Systems; using Content.Shared.Interaction.Events; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; using InventoryComponent = Content.Shared.Inventory.InventoryComponent; namespace Content.Server.Inventory { public sealed class ServerInventorySystem : InventorySystem { [Dependency] private readonly StorageSystem _storageSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(OnUseInHand); SubscribeNetworkEvent(OnOpenSlotStorage); } private void OnUseInHand(EntityUid uid, ClothingComponent component, UseInHandEvent args) { if (args.Handled || !component.QuickEquip) return; QuickEquip(uid, component, args); } private void OnOpenSlotStorage(OpenSlotStorageNetworkMessage ev, EntitySessionEventArgs args) { if (args.SenderSession.AttachedEntity is not EntityUid { Valid: true } uid) return; if (TryGetSlotEntity(uid, ev.Slot, out var entityUid) && TryComp(entityUid, out var storageComponent)) { _storageSystem.OpenStorageUI(entityUid.Value, uid, storageComponent); } } } }