From 7caf78dd25f452d1e332aa52192825f67657ea48 Mon Sep 17 00:00:00 2001 From: explosivekitty Date: Wed, 22 Apr 2026 13:20:13 +0200 Subject: [PATCH] Lets you put nodrop items from uplink glue on and into evidence bags and use it on other people (#5400) ## About The Pull Request Lets you equip items that you used glue on, that's how it worked before tg made it such you cant equip nodrop items, put them into evidence bags so you can pick them up without getting them attached to your hands and also make stuff that other people have equipped nodrop for them to be sprayed with acid if they want to get rid of that thing ## Why It's Good For The Game You no longer have to drag nodrop items to sec, you can just put them in the bags now(if you didn't pick it up in the process) and let's you equip stuff if you applied nodrop before equipping it because that's how it was before tg randomly fixed equipping nodrop items. also gluing bombs and other stuff to people could be funny i think ## Proof Of Testing
Screenshots/Videos screen1 the item selection menu
## Changelog :cl: add: You can put superglued items into evidence bags fix: You can equip superglued items again like you could before add: You can apply superglue to other people stuff /:cl: --- code/datums/storage/storage.dm | 2 +- .../mob/living/carbon/human/inventory.dm | 2 +- .../modules/moretraitoritems/code/glue.dm | 32 +++++++++++++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index 0013f4a3b51..695fefd6b5a 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -435,7 +435,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) user.balloon_alert(user, "can't hold!") return FALSE - if(HAS_TRAIT(to_insert, TRAIT_NODROP)) + if(HAS_TRAIT(to_insert, TRAIT_NODROP) && (to_insert.item_flags & IN_INVENTORY)) if(messages && user) user.balloon_alert(user, "stuck on your hand!") return FALSE diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 14bba5d38e7..bb2610839e4 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -18,7 +18,7 @@ /mob/living/carbon/human/can_equip(obj/item/equip_target, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, ignore_equipped = FALSE, indirect_action = FALSE) if(SEND_SIGNAL(src, COMSIG_HUMAN_EQUIPPING_ITEM, equip_target, slot) == COMPONENT_BLOCK_EQUIP) return FALSE - if(HAS_TRAIT(equip_target, TRAIT_NODROP) && (equip_target in held_items)) + if(HAS_TRAIT_NOT_FROM(equip_target, TRAIT_NODROP, TRAIT_GLUED_ITEM) && (equip_target in held_items)) if(!disable_warning) to_chat(src, span_warning("[equip_target] won't budge, it's impossible to put it on!")) return FALSE diff --git a/modular_skyrat/modules/moretraitoritems/code/glue.dm b/modular_skyrat/modules/moretraitoritems/code/glue.dm index 2b3898cb271..7ed91b52f3a 100644 --- a/modular_skyrat/modules/moretraitoritems/code/glue.dm +++ b/modular_skyrat/modules/moretraitoritems/code/glue.dm @@ -11,16 +11,36 @@ if(!uses) to_chat(user, span_warning("The bottle of glue is empty!")) return NONE - if(!isitem(interacting_with)) + + var/obj/item/interacted = interacting_with + if(iscarbon(interacting_with)) + if(interacting_with == user) + return NONE + var/list/equipment_list = list() + var/mob/living/carbon/target = interacting_with + for(var/obj/item/equipped_item as anything in target.get_visible_items()) + var/image/obj_icon = image(icon = initial(equipped_item.icon), icon_state = initial(equipped_item.icon_state)) + equipment_list[equipped_item] = obj_icon + interacted = show_radial_menu(user, interacting_with, equipment_list, radius = 42) + if(!isitem(interacted)) + return NONE + interacting_with.visible_message(span_danger("[user] is trying to apply super glue on [interacting_with]'s [interacted.name]!"), \ + span_userdanger("[user] is trying to apply super glue on your [interacted.name]!")) + if(!do_after(user, 5 SECONDS)) + return NONE + interacting_with.visible_message(span_danger("[user] applies super glue on [interacting_with]'s [interacted.name]!"), \ + span_userdanger("[user] applies super glue on your [interacted.name]!")) + else if(!isitem(interacted)) return NONE - if(HAS_TRAIT_FROM(interacting_with, TRAIT_NODROP, TRAIT_GLUED_ITEM)) - to_chat(user, span_warning("[interacting_with] is already sticky!")) + + if(HAS_TRAIT_FROM(interacted, TRAIT_NODROP, TRAIT_GLUED_ITEM)) + to_chat(user, span_warning("[interacted] is already sticky!")) return ITEM_INTERACT_BLOCKING uses -= 1 - ADD_TRAIT(interacting_with, TRAIT_NODROP, TRAIT_GLUED_ITEM) - interacting_with.desc += " It looks sticky." - to_chat(user, span_notice("You smear the [interacting_with] with glue, making it incredibly sticky!")) + ADD_TRAIT(interacted, TRAIT_NODROP, TRAIT_GLUED_ITEM) + interacted.desc += " It looks sticky." + to_chat(user, span_notice("You smear the [interacted.name] with glue, making it incredibly sticky!")) if(uses == 0) icon_state = "glue_used" name = "empty bottle of super glue"