diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index 1fc894d530..8c63ecbfc9 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -83,7 +83,7 @@ var/decl/emote/use_emote = get_emote_by_key(act) if(!istype(use_emote)) - to_chat(src, span_warning("Unknown emote '[act]'. Type say *help for a list of usable emotes.")) + to_chat(src, span_warning("Unknown emote '[act]'. Type " + span_bold("say *help") + " for a list of usable emotes. ([act] [message])")) // Add full message in the event you used * instead of ! or something like that return if(!use_emote.mob_can_use(src)) @@ -210,6 +210,7 @@ var/turf/T = get_turf(src) if(!T) return + if(client) playsound(T, pick(emote_sound), 25, TRUE, falloff = 1 , is_global = TRUE, frequency = ourfreq, ignore_walls = FALSE, preference = /datum/preference/toggle/emote_sounds) @@ -224,7 +225,11 @@ message = span_emote(span_bold("[src]") + " ([ghost_follow_link(src, M)]) [input]") if(usr && usr.client && M && !(get_z(usr) == get_z(M))) message = span_multizsay("[message]") - M.show_message(message, m_type) + // 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/holder) && src.loc.loc == M))) + M.show_message(message) + else + M.show_message(message, m_type) 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 94d1e093fc..e3989e326a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -371,7 +371,7 @@ var/list/channel_to_radio_key = new if(M && src) //If we still exist, when the spawn processes //VOREStation Add - Ghosts don't hear whispers if(whispering && isobserver(M) && (!M.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle) || \ - (!client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) && !M.client?.holder))) + (!(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || (isbelly(M.loc) && src == M.loc:owner)) && !M.client?.holder))) M.show_message(span_game(span_say(span_name(src.name) + " [w_not_heard].")), 2) return //VOREStation Add End @@ -432,7 +432,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/holder)) // 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_vr.dm b/code/modules/mob/say_vr.dm index 72c0912a4e..4ed929872f 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -201,7 +201,7 @@ continue if(src.client && M && !(get_z(src) == get_z(M))) message = span_multizsay("[message]") - if(isobserver(M) && (!M.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle) || \ + if(isobserver(M) && (!(M.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle) || (isbelly(M.loc) && src == M.loc:owner)) || \ !client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) && !M.client?.holder)) spawn(0) M.show_message(undisplayed_message, 2)