diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index b0b3fce0bb..780c3b97c6 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -204,7 +204,12 @@ if(M) if(isobserver(M)) message = "[src] ([ghost_follow_link(src, M)]) [input]" - M.show_message(message, m_type) + //CHOMPEdit Start - If you are in the same tile, right next to, or being held by a person doing an emote, you should be able to see it while blind + if(m_type != AUDIBLE_MESSAGE && (src.Adjacent(M) || (istype(src.loc, /obj/item/weapon/holder) && src.loc.loc == M))) + M.show_message(message) + else + M.show_message(message, m_type) + //CHOMPEdit End M.create_chat_message(src, "[runemessage]", FALSE, list("emote"), (m_type == AUDIBLE_MESSAGE)) for(var/obj/O as anything in o_viewers) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a0bc8d8ea2..c53a46be3c 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -410,7 +410,7 @@ var/list/channel_to_radio_key = new /mob/living/proc/say_signlang(var/message, var/verb="gestures", var/verb_understood="gestures", var/datum/language/language, var/type = 1) var/turf/T = get_turf(src) //We're in something, gesture to people inside the same thing - if(loc != T) + if(loc != T && !istype(loc, /obj/item/weapon/holder)) //CHOMPEdit - Partially fixes sign language while being held. for(var/mob/M in loc) M.hear_signlang(message, verb, verb_understood, language, src, type) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 646c82a168..da3a677d49 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -106,8 +106,21 @@ if(speaking.flags & NONVERBAL) if(sdisabilities & BLIND || blinded) return FALSE - if(!other || !(other in view(src))) + if(!other) //CHOMPEdit - Fixes seeing non-verbal languages while being held return FALSE + //CHOMPEdit Start - Fixes seeing non-verbal languages while being held + if(istype(other.loc, /obj/item/weapon/holder)) + if(istype(src.loc, /obj/item/weapon/holder)) + if(!(other.loc in view(src.loc.loc))) + return FALSE + else if(!(other.loc in view(src))) + return FALSE + else if(istype(src.loc, /obj/item/weapon/holder)) + if(!other in view(src.loc.loc)) + return FALSE + else if(!other in view(src)) + return FALSE + //CHOMPEdit End //Language check. for(var/datum/language/L in languages) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 703aac2813..2c7d7790f0 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -61,7 +61,7 @@ var/list/vis_objs = vis["objs"] for(var/mob/M as anything in vis_mobs) - if(isobserver(M) && !is_preference_enabled(/datum/client_preference/whisubtle_vis) && !M.client?.holder) + if(isobserver(M) && !(is_preference_enabled(/datum/client_preference/whisubtle_vis) && !(isbelly(M.loc) && src == M.loc:owner)) && !M.client?.holder) //CHOMPEdit - Added the belly check so that ghosts in bellies can still see their pred's messages. spawn(0) M.show_message(undisplayed_message, 2) else