diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm index 9b9bc6f9..88b09685 100644 --- a/code/datums/elements/mob_holder.dm +++ b/code/datums/elements/mob_holder.dm @@ -94,7 +94,7 @@ lefthand_file = left_hand if(right_hand) righthand_file = right_hand - slot_flags = slots + slot_flags = slots /obj/item/clothing/head/mob_holder/proc/assimilate(mob/living/target) target.setDir(SOUTH) @@ -102,6 +102,8 @@ target.forceMove(src) var/image/I = new //work around to retain the same appearance to the mob idependently from inhands/worn states. I.appearance = target.appearance + I.layer = FLOAT_LAYER //So it doesn't get screwed up by layer overrides. + I.plane = FLOAT_PLANE //Same as above but for planes. I.override = TRUE add_overlay(I) name = target.name @@ -111,27 +113,23 @@ w_class = WEIGHT_CLASS_TINY if(MOB_SIZE_SMALL) w_class = WEIGHT_CLASS_NORMAL - if(MOB_SIZE_HUMAN) - w_class = WEIGHT_CLASS_BULKY if(MOB_SIZE_LARGE) w_class = WEIGHT_CLASS_HUGE - RegisterSignal(src, COMSIG_CLICK_SHIFT, .proc/examine_held_mob, override = TRUE) /obj/item/clothing/head/mob_holder/Destroy() if(held_mob) release() return ..() -/obj/item/clothing/head/mob_holder/proc/examine_held_mob(datum/source, mob/user) - held_mob.ShiftClick(user) - return COMPONENT_DENY_EXAMINATE +/obj/item/clothing/head/mob_holder/examine(mob/user) + return held_mob?.examine(user) || ..() /obj/item/clothing/head/mob_holder/Exited(atom/movable/AM, atom/newloc) . = ..() if(AM == held_mob) held_mob.reset_perspective() held_mob = null - qdel(src) + QDEL_IN(src, 1) //To avoid a qdel loop. /obj/item/clothing/head/mob_holder/Entered(atom/movable/AM, atom/newloc) . = ..() @@ -161,7 +159,7 @@ /obj/item/clothing/head/mob_holder/container_resist() if(isliving(loc)) var/mob/living/L = loc - L.visible_message("[src] escapes from [L]!", "[src] escapes your grip!") + L.visible_message("[held_mob] escapes from [L]!", "[held_mob] escapes your grip!") release() /obj/item/clothing/head/mob_holder/assume_air(datum/gas_mixture/env) @@ -173,7 +171,7 @@ location = location.loc if(ismob(location)) return location.loc.assume_air(env) - return loc.assume_air(env) + return location.assume_air(env) /obj/item/clothing/head/mob_holder/remove_air(amount) var/atom/location = loc @@ -184,4 +182,4 @@ location = location.loc if(ismob(location)) return location.loc.remove_air(amount) - return loc.remove_air(amount) + return location.remove_air(amount) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 23124b94..018ee2a1 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -289,32 +289,31 @@ add_overlay(new_overlays) /atom/proc/examine(mob/user) - to_chat(user, get_examine_string(user, TRUE)) + . = list("[get_examine_string(user, TRUE)].") if(desc) - to_chat(user, desc) - + . += desc if(reagents) if(reagents.reagents_holder_flags & TRANSPARENT) - to_chat(user, "It contains:") - if(reagents.reagent_list.len) + . += "It contains:" + if(length(reagents.reagent_list)) if(user.can_see_reagents()) //Show each individual reagent for(var/datum/reagent/R in reagents.reagent_list) - to_chat(user, "[R.volume] units of [R.name]") + . += "[R.volume] units of [R.name]" else //Otherwise, just show the total volume var/total_volume = 0 for(var/datum/reagent/R in reagents.reagent_list) total_volume += R.volume - to_chat(user, "[total_volume] units of various reagents") + . += "[total_volume] units of various reagents" else - to_chat(user, "Nothing.") + . += "Nothing." else if(reagents.reagents_holder_flags & AMOUNT_VISIBLE) if(reagents.total_volume) - to_chat(user, "It has [reagents.total_volume] unit\s left.") + . += "It has [reagents.total_volume] unit\s left." else - to_chat(user, "It's empty.") + . += "It's empty." - SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user) + SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .) /atom/proc/relaymove(mob/user) if(buckle_message_cooldown <= world.time)