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)