diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm index 75b809b5403..3fbe59a6815 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm @@ -65,16 +65,15 @@ #define COMSIG_MOVABLE_CANCEL_HEARING (1<<0) ///from base of atom/movable/Hear(): (proc args list(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods = list(), message_range)) #define COMSIG_MOVABLE_HEAR "movable_hear" - #define HEARING_MESSAGE 1 - #define HEARING_SPEAKER 2 - #define HEARING_LANGUAGE 3 - #define HEARING_RAW_MESSAGE 4 - #define HEARING_RADIO_FREQ 5 - #define HEARING_RADIO_FREQ_NAME 6 - #define HEARING_RADIO_FREQ_COLOR 7 - #define HEARING_SPANS 8 - #define HEARING_MESSAGE_MODE 9 - #define HEARING_RANGE 10 + #define HEARING_SPEAKER 1 + #define HEARING_LANGUAGE 2 + #define HEARING_RAW_MESSAGE 3 + #define HEARING_RADIO_FREQ 4 + #define HEARING_RADIO_FREQ_NAME 5 + #define HEARING_RADIO_FREQ_COLOR 6 + #define HEARING_SPANS 7 + #define HEARING_MESSAGE_MODE 8 + #define HEARING_RANGE 9 ///called when space wind can't move a movable. (pressure_difference, pressure_direction) #define COMSIG_MOVABLE_RESISTED_SPACEWIND "movable_resisted_wind" diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index 617f590e5fb..42779b5c81a 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -216,7 +216,7 @@ owner.imaginary_group -= src return ..() -/mob/eye/imaginary_friend/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, freq_name, freq_color, list/spans, list/message_mods = list(), message_range) +/mob/eye/imaginary_friend/Hear(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, freq_name, freq_color, list/spans, list/message_mods = list(), message_range) if (safe_read_pref(client, /datum/preference/toggle/enable_runechat) && (safe_read_pref(client, /datum/preference/toggle/enable_runechat_non_mobs) || ismob(speaker))) create_chat_message(speaker, message_language, raw_message, spans) to_chat(src, compose_message(speaker, message_language, raw_message, radio_freq, freq_name, freq_color, spans, message_mods)) @@ -257,14 +257,13 @@ log_sayverb_talk(message, message_mods, tag = "imaginary friend", forced_by = forced) var/messagepart = generate_messagepart(message, spans, message_mods) - var/rendered = "[span_name("[name]")] [messagepart]" var/dead_rendered = "[span_name("[name] (Imaginary friend of [owner])")] [messagepart]" var/language = message_language || owner.get_selected_language() - Hear(rendered, src, language, message, null, null, null, spans, message_mods) // We always hear what we say + Hear(src, language, message, null, null, null, spans, message_mods) // We always hear what we say var/group = owner.imaginary_group - src // The people in our group don't, so we have to exclude ourselves not to hear twice for(var/mob/person in group) - person.Hear(null, src, language, message, null, null, null, spans, message_mods, range) + person.Hear(src, language, message, null, null, null, spans, message_mods, range) // Speech bubble, but only for those who have runechat off var/list/speech_bubble_recipients = list() diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index bed2d33626d..b27335ce3fb 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -690,7 +690,7 @@ talk_tuah(pick(hurt_lines)) /datum/brain_trauma/special/axedoration/proc/talk_tuah(sent_message = "Hello World.") - owner.Hear(null, GLOB.bridge_axe, owner.get_selected_language(), sent_message) + owner.Hear(GLOB.bridge_axe, owner.get_selected_language(), sent_message) /datum/brain_trauma/special/axedoration/proc/get_axe_location() if(!GLOB.bridge_axe) diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm index cb20b6a44f0..3a7225419b5 100644 --- a/code/game/machinery/doors/passworddoor.dm +++ b/code/game/machinery/doors/passworddoor.dm @@ -44,7 +44,7 @@ /obj/machinery/door/password/get_save_vars() return ..() + NAMEOF(src, password) -/obj/machinery/door/password/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/obj/machinery/door/password/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() if(!density || !voice_activated || radio_freq) return diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 84f360f06aa..993372e72e2 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -575,19 +575,19 @@ Possible to do for anyone motivated enough: /*This is the proc for special two-way communication between AI and holopad/people talking near holopad. For the other part of the code, check silicon say.dm. Particularly robot talk.*/ -/obj/machinery/holopad/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/obj/machinery/holopad/Hear(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() if(speaker && LAZYLEN(masters) && !radio_freq)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios. for(var/mob/living/silicon/ai/master in masters) if(masters[master] && speaker != master) - master.relay_speech(message, speaker, message_language, raw_message, radio_freq, spans, message_mods) + master.relay_speech(speaker, message_language, raw_message, radio_freq, spans, message_mods) for(var/datum/holocall/holocall_to_update as anything in holo_calls) if(holocall_to_update.connected_holopad == src)//if we answered this call originating from another holopad if(speaker == holocall_to_update.hologram && holocall_to_update.user.client?.prefs.read_preference(/datum/preference/toggle/enable_runechat)) holocall_to_update.user.create_chat_message(speaker, message_language, raw_message, spans) else - holocall_to_update.user.Hear(message, speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods, message_range = INFINITY) + holocall_to_update.user.Hear(speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods, message_range = INFINITY) if(outgoing_call?.hologram && speaker == outgoing_call.user) outgoing_call.hologram.say(raw_message, spans = spans, sanitize = FALSE, language = message_language, message_mods = message_mods) diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index 289ac960f8f..53d217f6cb7 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -174,14 +174,13 @@ // Always call this on the virtualspeaker to avoid issues. var/spans = data["spans"] var/list/message_mods = data["mods"] - var/rendered = virt.compose_message(virt, language, message, frequency, data["frequency_name"], data["frequency_color"], spans) for(var/atom/movable/hearer as anything in receive) if(!hearer) stack_trace("null found in the hearers list returned by the spatial grid. this is bad") continue spans -= blacklisted_spans - hearer.Hear(rendered, virt, language, message, frequency, data["frequency_name"], data["frequency_color"], spans, message_mods, message_range = INFINITY) + hearer.Hear(virt, language, message, frequency, data["frequency_name"], data["frequency_color"], spans, message_mods, message_range = INFINITY) // This following recording is intended for research and feedback in the use of department radio channels if(length(receive)) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index fc351719ced..5aa33a87672 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -126,7 +126,7 @@ return TRUE -/obj/item/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/obj/item/radio/intercom/Hear(atom/movable/speaker, message_langs, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) if(message_mods[RADIO_EXTENSION] == MODE_INTERCOM) return // Avoid hearing the same thing twice return ..() diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index e092a9334dc..d2d479693f9 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -381,7 +381,7 @@ signal.levels = SSmapping.get_connected_levels(T) signal.broadcast() -/obj/item/radio/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/obj/item/radio/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() if(radio_freq || !broadcasting || get_dist(src, speaker) > canhear_range || message_mods[MODE_RELAY]) return diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index c5160b0d705..149015ce292 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -153,7 +153,7 @@ return ..() -/obj/item/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, list/message_mods = list(), message_range) +/obj/item/taperecorder/Hear(atom/movable/speaker, message_langs, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, list/message_mods = list(), message_range) . = ..() if(message_mods[MODE_RELAY] || !mytape || istype(speaker, /obj/item/taperecorder)) return diff --git a/code/game/say.dm b/code/game/say.dm index 9a00c06d3d3..588e6946477 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -68,7 +68,7 @@ GLOBAL_LIST_INIT(freqtospan, list( /// Called when this movable hears a message from a source. /// Returns TRUE if the message was received and understood. -/atom/movable/proc/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0) +/atom/movable/proc/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0) SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, args) return TRUE @@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(freqtospan, list( if(!hearing_movable)//theoretically this should use as anything because it shouldnt be able to get nulls but there are reports that it does. stack_trace("somehow theres a null returned from get_hearers_in_view() in send_speech!") continue - if(hearing_movable.Hear(null, src, message_language, message, null, null, null, spans, message_mods, range)) + if(hearing_movable.Hear(src, message_language, message, null, null, null, spans, message_mods, range)) listened += hearing_movable if(!found_client && length(hearing_movable.client_mobs_in_contents)) found_client = TRUE diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 5427a0d3ab1..ebf9d71a8dd 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -33,7 +33,7 @@ . = ..() . += span_notice("Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.") -/obj/item/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/obj/item/assembly/voice/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() if(message_mods[WHISPER_MODE] || message_mods[MODE_RELAY]) //Too quiet lad return FALSE diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index be5c86740c3..061a4c85392 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -292,7 +292,7 @@ var/obj/item/found_item = items_by_regex[found_regex] . += span_notice("[icon2html(found_item, user)] You can remove [found_item] by saying \"[prefix] [found_phrase]\"!") -/obj/item/clothing/head/fedora/inspector_hat/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/obj/item/clothing/head/fedora/inspector_hat/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() var/mob/living/carbon/wearer = loc if(!istype(wearer) || speaker != wearer) //if we are worn diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/colossus.dm b/code/modules/mining/lavaland/mining_loot/megafauna/colossus.dm index 4215f6c1a53..10c37355495 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/colossus.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/colossus.dm @@ -112,7 +112,7 @@ . += observer_desc . += "It is activated by [activation_method]." -/obj/machinery/anomalous_crystal/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, list/message_mods = list(), message_range) +/obj/machinery/anomalous_crystal/Hear(atom/movable/speaker, message_langs, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, list/message_mods = list(), message_range) . = ..() if(isliving(speaker)) ActivationReaction(speaker, ACTIVATE_SPEECH) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 151dcfe2d04..968a6090b89 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -146,7 +146,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) show_data_huds() SSpoints_of_interest.make_point_of_interest(src) - ADD_TRAIT(src, TRAIT_HEAR_THROUGH_DARKNESS, ref(src)) + ADD_TRAIT(src, TRAIT_HEAR_THROUGH_DARKNESS, INNATE_TRAIT) + ADD_TRAIT(src, TRAIT_GOOD_HEARING, INNATE_TRAIT) /mob/dead/observer/get_photo_description(obj/item/camera/camera) if(!invisibility || camera.see_ghosts) diff --git a/code/modules/mob/dead/observer/observer_say.dm b/code/modules/mob/dead/observer/observer_say.dm index d88271cfe44..2c9c37dd79a 100644 --- a/code/modules/mob/dead/observer/observer_say.dm +++ b/code/modules/mob/dead/observer/observer_say.dm @@ -58,7 +58,7 @@ . = say_dead(message) -/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/mob/dead/observer/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() var/atom/movable/to_follow = speaker if(radio_freq) @@ -74,7 +74,7 @@ if (safe_read_pref(client, /datum/preference/toggle/enable_runechat) && (safe_read_pref(client, /datum/preference/toggle/enable_runechat_non_mobs) || ismob(speaker))) create_chat_message(speaker, message_language, raw_message, spans) // Recompose the message, because it's scrambled by default - message = compose_message(speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods) + var/message = compose_message(speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods) to_chat(src, html = "[link] [message]", avoid_highlighting = speaker == src) diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 8fb2cb52c68..7375c259243 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -248,10 +248,9 @@ var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in detached_head brain.name = "[wearer.name]'s brain" -/obj/item/dullahan_relay/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/obj/item/dullahan_relay/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() - if(owner) - owner.Hear(message, speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods, message_range) + owner?.Hear(speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods, message_range) ///Adds the owner to the list of hearers in hearers_in_view(), for visible/hearable on top of say messages /obj/item/dullahan_relay/proc/include_owner(datum/source, list/hearers) diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index d1c35cf77a3..34065f7d2ed 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -259,7 +259,7 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( return TRUE -/mob/living/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0) +/mob/living/Hear(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0) if((SEND_SIGNAL(src, COMSIG_MOVABLE_PRE_HEAR, args) & COMSIG_MOVABLE_CANCEL_HEARING) || !GET_CLIENT(src)) return FALSE @@ -289,13 +289,14 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( else if (!ismob(speaker) && !client?.prefs.read_preference(/datum/preference/toggle/enable_runechat_non_mobs)) use_runechat = FALSE + var/message = "" // if someone is whispering we make an extra type of message that is obfuscated for people out of range // Less than or equal to 0 means normal hearing. More than 0 and less than or equal to EAVESDROP_EXTRA_RANGE means // partial hearing. More than EAVESDROP_EXTRA_RANGE means no hearing. Exception for GOOD_HEARING trait var/dist = get_dist(speaker, src) - message_range - if(dist > 0 && dist <= EAVESDROP_EXTRA_RANGE && !HAS_TRAIT(src, TRAIT_GOOD_HEARING) && !isobserver(src)) // ghosts can hear all messages clearly + if(dist > 0 && dist <= EAVESDROP_EXTRA_RANGE && !HAS_TRAIT(src, TRAIT_GOOD_HEARING)) raw_message = stars(raw_message) - if(message_range != INFINITY && dist > EAVESDROP_EXTRA_RANGE && !HAS_TRAIT(src, TRAIT_GOOD_HEARING) && !isobserver(src)) + if(message_range != INFINITY && dist > EAVESDROP_EXTRA_RANGE && !HAS_TRAIT(src, TRAIT_GOOD_HEARING)) // Too far away and don't have good hearing, you can't hear anything if(is_blind() || HAS_TRAIT(speaker, TRAIT_INVISIBLE_MAN)) // Can't see them speak either return FALSE @@ -412,7 +413,7 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( stack_trace("somehow theres a null returned from get_hearers_in_view() in send_speech!") continue - if(listening_movable.Hear(null, src, message_language, message_raw, null, null, null, spans, message_mods, message_range)) + if(listening_movable.Hear(src, message_language, message_raw, null, null, null, spans, message_mods, message_range)) listened += listening_movable //speech bubble diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 2a44c01bed6..27d7ae84459 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -804,7 +804,7 @@ var/list/viewscale = getviewsize(client.view) return get_dist(src, A) <= max(viewscale[1]*0.5,viewscale[2]*0.5) -/mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, list/message_mods = list()) +/mob/living/silicon/ai/proc/relay_speech(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, list/message_mods = list()) var/raw_translation = translate_language(speaker, message_language, raw_message, spans, message_mods) var/atom/movable/source = speaker.GetSource() || speaker // is the speaker virtual/radio var/treated_message = source.generate_messagepart(raw_translation, spans, message_mods) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index c1741faa121..900ff158ee7 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -219,10 +219,10 @@ acceleration = !acceleration to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].") -/mob/eye/camera/ai/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) +/mob/eye/camera/ai/Hear(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range) . = ..() if(relay_speech && speaker && ai && !radio_freq && speaker != ai && GLOB.cameranet.checkCameraVis(speaker)) - ai.relay_speech(message, speaker, message_language, raw_message, radio_freq, spans, message_mods) + ai.relay_speech(speaker, message_language, raw_message, radio_freq, spans, message_mods) /obj/effect/overlay/ai_detect_hud name = "" diff --git a/code/modules/mob/say_readme.md b/code/modules/mob/say_readme.md index e39dfb9fbcf..5f065b9df16 100644 --- a/code/modules/mob/say_readme.md +++ b/code/modules/mob/say_readme.md @@ -67,7 +67,7 @@ global procs Checks that our atom can vocally speak at all. Does not (and should not) include any feedback on its own. - Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mods, message_range) + Hear(atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mods, message_range) This proc handles hearing. What it does varies. For mobs, it treats the message with hearer-specific things like language and deafness, then outputs it to the hearer. diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index 116a3caff8c..1ce9b43337f 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -117,7 +117,7 @@ /obj/item/mod/control/proc/delete_link_visual(mob/living/old_user) return delete_link_visual_generic(mod_link, old_user) -/obj/item/mod/control/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods, message_range) +/obj/item/mod/control/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods, message_range) . = ..() if(speaker != wearer && speaker != ai_assistant) return @@ -296,7 +296,7 @@ old_user.update_worn_neck() return delete_link_visual_generic(mod_link, old_user) -/obj/item/clothing/neck/link_scryer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods, message_range) +/obj/item/clothing/neck/link_scryer/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods, message_range) . = ..() if(speaker != loc) return diff --git a/code/modules/unit_tests/say.dm b/code/modules/unit_tests/say.dm index 6d09fe08715..9b75bf05dc9 100644 --- a/code/modules/unit_tests/say.dm +++ b/code/modules/unit_tests/say.dm @@ -125,9 +125,6 @@ /datum/unit_test/speech/proc/handle_hearing(datum/source, list/hearing_args) SIGNAL_HANDLER - // So it turns out that the `message` arg for COMSIG_MOVABLE_HEAR is super redundant and should probably - // be gutted out of both the Hear() proc and signal since it's never used - //TEST_ASSERT(hearing_args[HEARING_MESSAGE], "Handle hearing signal does not have a message arg") TEST_ASSERT(hearing_args[HEARING_SPEAKER], "Handle hearing signal does not have a speaker arg") TEST_ASSERT(hearing_args[HEARING_LANGUAGE], "Handle hearing signal does not have a language arg") TEST_ASSERT(hearing_args[HEARING_RAW_MESSAGE], "Handle hearing signal does not have a raw message arg") @@ -166,7 +163,7 @@ var/datum/client_interface/mock_client = new() listener.mock_client = mock_client - RegisterSignal(speaker, COMSIG_MOB_SAY, PROC_REF(handle_speech)) // + RegisterSignal(speaker, COMSIG_MOB_SAY, PROC_REF(handle_speech)) RegisterSignal(speaker_radio, COMSIG_RADIO_NEW_MESSAGE, PROC_REF(handle_radio_hearing)) RegisterSignal(listener, COMSIG_MOVABLE_HEAR, PROC_REF(handle_hearing)) diff --git a/code/modules/wiremod/components/atom/hear.dm b/code/modules/wiremod/components/atom/hear.dm index 4dc8812efc0..b3a41154dc6 100644 --- a/code/modules/wiremod/components/atom/hear.dm +++ b/code/modules/wiremod/components/atom/hear.dm @@ -43,7 +43,7 @@ SIGNAL_HANDLER return Hear(arglist(arguments)) -/obj/item/circuit_component/hear/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods, message_range) +/obj/item/circuit_component/hear/Hear(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods, message_range) if(!on.value) return FALSE if(speaker == parent?.shell)