private void AddInteractionVerbsVerbs(EntityUid uid, ItemSlotsComponent itemSlots, GetVerbsEvent <InteractionVerb> args) { if (args.Hands == null || !args.CanAccess || !args.CanInteract) { return; } // If there are any slots that eject on left-click, add a "Take <item>" verb. if (_actionBlockerSystem.CanPickup(args.User)) { foreach (var slot in itemSlots.Slots.Values) { if (!slot.EjectOnInteract || !CanEject(slot)) { continue; } var verbSubject = slot.Name != string.Empty ? Loc.GetString(slot.Name) : EntityManager.GetComponent <MetaDataComponent>(slot.Item !.Value).EntityName ?? string.Empty; InteractionVerb takeVerb = new(); takeVerb.IconEntity = slot.Item; takeVerb.Act = () => TryEjectToHands(uid, slot, args.User, excludeUserAudio: true); if (slot.EjectVerbText == null) { takeVerb.Text = Loc.GetString("take-item-verb-text", ("subject", verbSubject)); } else { takeVerb.Text = Loc.GetString(slot.EjectVerbText); } args.Verbs.Add(takeVerb); } } // Next, add the insert-item verbs if (args.Using == null || !_actionBlockerSystem.CanDrop(args.User)) { return; } foreach (var slot in itemSlots.Slots.Values) { if (!CanInsert(uid, args.Using.Value, slot)) { continue; } var verbSubject = slot.Name != string.Empty ? Loc.GetString(slot.Name) : Name(args.Using.Value) ?? string.Empty; InteractionVerb insertVerb = new(); insertVerb.IconEntity = args.Using; insertVerb.Act = () => Insert(uid, slot, args.Using.Value, args.User, excludeUserAudio: true); if (slot.InsertVerbText != null) { insertVerb.Text = Loc.GetString(slot.InsertVerbText); insertVerb.IconTexture = "/Textures/Interface/VerbIcons/insert.svg.192dpi.png"; } else if (slot.EjectOnInteract) { // Inserting/ejecting is a primary interaction for this entity. Instead of using the insert // category, we will use a single "Place <item>" verb. insertVerb.Text = Loc.GetString("place-item-verb-text", ("subject", verbSubject)); insertVerb.IconTexture = "/Textures/Interface/VerbIcons/drop.svg.192dpi.png"; } else { insertVerb.Category = VerbCategory.Insert; insertVerb.Text = verbSubject; } args.Verbs.Add(insertVerb); } }