diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 25dd9610db..41ed907d16 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -204,9 +204,11 @@
return
/obj/mecha/see_emote(mob/living/M, text)
- if(M == occupant && M.client)
- var/rendered = "[text]"
+ if(occupant && occupant.client)
+ world << "MECHA NAMED [src.name] HEARD [M.name] DO [text]!"
+ var/rendered = "[text]"
occupant.show_message(rendered, 2)
+ world << "SEE_EMOTE() WAS RAN ON [src.name]!"
..()
////////////////////////////
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index c50425842f..312a852cba 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -174,8 +174,8 @@
update_icon()
/obj/item/device/aicard/see_emote(mob/living/M, text)
- if(carded_ai.client)
- var/rendered = "[text]"
+ if(carded_ai && carded_ai.client)
+ var/rendered = "[text]"
carded_ai.show_message(rendered, 2)
..()
/*
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 887c52b4c8..8737326961 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -313,7 +313,7 @@
/obj/item/device/paicard/see_emote(mob/living/M, text)
- if(pai.client)
- var/rendered = "[text]"
+ if(pai && pai.client)
+ var/rendered = "[text]"
pai.show_message(rendered, 2)
..()
\ No newline at end of file
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 9389578d35..7e647a18a8 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -136,5 +136,6 @@
mo.show_message(rendered, 2)
*/
return
+
/obj/proc/see_emote(mob/M as mob, text, var/emote_type)
return
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 353ee370b5..1d92926f53 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -50,7 +50,10 @@
// Type 1 (Visual) emotes are sent to anyone in view of the item
if (m_type & 1)
- for (var/mob/O in viewers(src, null))
+ //for (var/mob/O in viewers(src, null))
+ for (var/mob/O in viewers(get_turf(src), null)) //This may break people with x-ray being able to see emotes across walls,
+ //but this saves many headaches down the road, involving mechs and pAIs.
+ //x-ray is so rare these days anyways.
if(O.status_flags & PASSEMOTES)
@@ -68,7 +71,7 @@
O.see_emote(src, message, 1)
// Type 2 (Audible) emotes are sent to anyone in hear range
- // of the *LOCATION* -- this is important for pAIs to be heard
+ // of the *LOCATION* -- this is important for AIs/pAIs to be heard
else if (m_type & 2)
for (var/mob/O in hearers(get_turf(src), null))