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"