From 125a84514a9bd1bfe50d7dc10084a02672c8a978 Mon Sep 17 00:00:00 2001 From: Marm <85680653+ItsMarmite@users.noreply.github.com> Date: Wed, 13 Sep 2023 21:05:01 +0100 Subject: [PATCH] Ports radio transmit noises (#22216) * video killed the radio star Adds two sound effects, one for normal radios and one for Security radios. Makes radio_common play when talking on comms. * we cant rewind we've gone too far Adds checks for certain radio comms channels to play Security radio sound. * Pictures came and broke your heart Adds volume mixer support. * Update code/modules/mob/living/living_say.dm Co-authored-by: Adri <33333517+Miraviel@users.noreply.github.com> * Update code/modules/mob/living/living_say.dm Co-authored-by: Adri <33333517+Miraviel@users.noreply.github.com> * Update code/modules/mob/living/living_say.dm Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Put the blame on VCR Makes preference toggle more readable. * Update code/modules/mob/living/living_say.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * I forgot what song I kept quoting Add code comment clarifying purpose of define. * The fix * Contra review --------- Co-authored-by: Adri <33333517+Miraviel@users.noreply.github.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --- code/__DEFINES/sound_defines.dm | 1 + code/__HELPERS/unsorted.dm | 2 ++ code/modules/client/preference/preferences.dm | 1 + code/modules/mob/living/living_say.dm | 7 ++++++- sound/items/radio_common.ogg | Bin 0 -> 5866 bytes sound/items/radio_security.ogg | Bin 0 -> 10210 bytes 6 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 sound/items/radio_common.ogg create mode 100644 sound/items/radio_security.ogg diff --git a/code/__DEFINES/sound_defines.dm b/code/__DEFINES/sound_defines.dm index 32b0adaac30..0aa85d3ccd9 100644 --- a/code/__DEFINES/sound_defines.dm +++ b/code/__DEFINES/sound_defines.dm @@ -9,6 +9,7 @@ #define CHANNEL_ENGINE 1017 // Engine ambient sounds #define CHANNEL_FIREALARM 1016 //fire alarm alarms #define CHANNEL_ASH_STORM 1015 +#define CHANNEL_RADIO_NOISE 1014 // radio headset noise #define USER_VOLUME(M, C) M?.client?.prefs.get_channel_volume(C) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 4546b727483..16b238049a1 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -2052,6 +2052,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return "Fire Alarms" if(CHANNEL_ASH_STORM) return "Ash Storms" + if(CHANNEL_RADIO_NOISE) + return "Radio Noise" /proc/slot_bitfield_to_slot(input_slot_flags) // Kill off this garbage ASAP; slot flags and clothing flags should be IDENTICAL. GOSH DARN IT. Doesn't work with ears or pockets, either. switch(input_slot_flags) diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 81667bc10fe..c627d12d351 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -88,6 +88,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts "1017" = 100, // CHANNEL_ENGINE "1016" = 100, // CHANNEL_FIREALARM "1015" = 100, // CHANNEL_ASH_STORM + "1014" = 100, // CHANNEL_RADIO_NOISE ) /// The volume mixer save timer handle. Used to debounce the DB call to save, to avoid spamming. var/volume_mixer_saving = null diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index 82ad925fe24..b38ef5137b3 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -211,8 +211,13 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) message_range = first_piece.speaking.get_talkinto_msg_range(message) var/msg - if(!first_piece.speaking || !(first_piece.speaking.flags & NO_TALK_MSG)) + if((!first_piece.speaking || !(first_piece.speaking.flags & NO_TALK_MSG)) && client) msg = "[src] talks into [used_radios[1]]" + var/static/list/special_radio_channels = list("Syndicate", "SyndTeam", "Security", "Procedure", "Command", "Response Team", "Special Ops") + if(message_mode in special_radio_channels) + SEND_SOUND(src, sound('sound/items/radio_security.ogg', volume = rand(4, 16) * 5 * client.prefs.get_channel_volume(CHANNEL_RADIO_NOISE), channel = CHANNEL_RADIO_NOISE)) + else + SEND_SOUND(src, sound('sound/items/radio_common.ogg', volume = rand(4, 16) * 5 * client.prefs.get_channel_volume(CHANNEL_RADIO_NOISE), channel = CHANNEL_RADIO_NOISE)) if(msg) for(var/mob/living/M in hearers(5, src) - src) diff --git a/sound/items/radio_common.ogg b/sound/items/radio_common.ogg new file mode 100644 index 0000000000000000000000000000000000000000..20a1d1da0a06d8f13bc7701a9bb3e392b78cb627 GIT binary patch literal 5866 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 Kkk%c5ZTt@th>p+z literal 0 HcmV?d00001 diff --git a/sound/items/radio_security.ogg b/sound/items/radio_security.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e905d018a81ec23aa7991ec4ecf67d7d035a565a GIT binary patch literal 10210 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 F{{#0kUv>Zh literal 0 HcmV?d00001