From a52f554c7765efd407f65a456f95d2c60b0a50da Mon Sep 17 00:00:00 2001 From: Geeves Date: Wed, 10 Mar 2021 21:18:09 +0200 Subject: [PATCH] Mecha Speakers (#11268) --- code/__defines/_macros.dm | 6 ++++++ code/modules/heavy_vehicle/interface/_interface.dm | 1 + .../heavy_vehicle/interface/screen_objects.dm | 14 ++++++++++++++ code/modules/heavy_vehicle/mecha.dm | 1 + code/modules/mob/hear_say.dm | 12 +++++++++--- code/modules/mob/living/say.dm | 10 ++++++++-- html/changelogs/geeves-mecha_speakers.yml | 6 ++++++ 7 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 html/changelogs/geeves-mecha_speakers.yml diff --git a/code/__defines/_macros.dm b/code/__defines/_macros.dm index b578242fbed..7a35338a68d 100644 --- a/code/__defines/_macros.dm +++ b/code/__defines/_macros.dm @@ -16,6 +16,12 @@ #define SPAN_SUBTLE(X) "[X]" #define SPAN_SOGHUN(X) "[X]" +#define FONT_SIZE_SMALL 1 +#define FONT_SIZE_NORMAL 2 +#define FONT_SIZE_LARGE 3 +#define FONT_SIZE_HUGE 4 +#define FONT_SIZE_GIANT 5 + #define FONT_SMALL(X) "[X]" #define FONT_NORMAL(X) "[X]" #define FONT_LARGE(X) "[X]" diff --git a/code/modules/heavy_vehicle/interface/_interface.dm b/code/modules/heavy_vehicle/interface/_interface.dm index b9b4a23f673..4d2f116405a 100644 --- a/code/modules/heavy_vehicle/interface/_interface.dm +++ b/code/modules/heavy_vehicle/interface/_interface.dm @@ -28,6 +28,7 @@ /obj/screen/mecha/toggle/hatch_open, /obj/screen/mecha/radio, /obj/screen/mecha/toggle/sensor, + /obj/screen/mecha/toggle/megaspeakers, /obj/screen/mecha/rename ) diff --git a/code/modules/heavy_vehicle/interface/screen_objects.dm b/code/modules/heavy_vehicle/interface/screen_objects.dm index 4c37074d9f9..b51cb504535 100644 --- a/code/modules/heavy_vehicle/interface/screen_objects.dm +++ b/code/modules/heavy_vehicle/interface/screen_objects.dm @@ -310,4 +310,18 @@ maptext = "SENSOR" notify_user(usr, SPAN_NOTICE("[capitalize_first_letters(owner.head.name)] Advanced Sensor mode is [owner.head.active_sensors ? "now" : "no longer" ] active.")) +/obj/screen/mecha/toggle/megaspeakers + name = "toggle integrated megaspeakers" + icon_state = "base" // based + maptext = "VOLUME" + maptext_x = 1 + maptext_y = 12 + +/obj/screen/mecha/toggle/megaspeakers/toggled() + toggled = !toggled + owner.loudening = toggled + var/main_color = owner.loudening ? "#d1d1d1" : "#525252" + maptext = "VOLUME" + notify_user(usr, SPAN_NOTICE("You [owner.loudening ? "activate" : "deactivate"] \the [owner]'s integrated megaspeakers.")) + #undef BAR_CAP \ No newline at end of file diff --git a/code/modules/heavy_vehicle/mecha.dm b/code/modules/heavy_vehicle/mecha.dm index d7c232a926a..aadd545f520 100644 --- a/code/modules/heavy_vehicle/mecha.dm +++ b/code/modules/heavy_vehicle/mecha.dm @@ -66,6 +66,7 @@ var/maintenance_protocols var/lockdown var/entry_speed = 30 + var/loudening = FALSE // whether we're increasing the speech volume of our pilot // Material var/material/material diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index a19dc27b71b..b7ec8cef3db 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -1,6 +1,6 @@ // At minimum every mob has a hear_say proc. -/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) +/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol, var/font_size = null) if(!istype(src, /mob/living/test) && cant_hear()) return @@ -68,9 +68,15 @@ to_chat(src, "[speaker_name][alt_name] talks but you cannot hear them.") else if(language) - on_hear_say("[track][accent_icon ? accent_icon + " " : ""][speaker_name][alt_name] [language.format_message(message, verb)]") + if(font_size) + on_hear_say("[track][accent_icon ? accent_icon + " " : ""][speaker_name][alt_name] [language.format_message(message, verb)]") + else + on_hear_say("[track][accent_icon ? accent_icon + " " : ""][speaker_name][alt_name] [language.format_message(message, verb)]") else - on_hear_say("[track][speaker_name][alt_name] [verb], \"[message]\"") + if(font_size) + on_hear_say("[track][speaker_name][alt_name] [verb], \"[message]\"") + else + on_hear_say("[track][speaker_name][alt_name] [verb], \"[message]\"") if (speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z)) var/turf/source = speaker? get_turf(speaker) : get_turf(src) playsound_simple(source, speech_sound, sound_vol, use_random_freq = TRUE) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 0db22628f19..b349ec0dcc4 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -161,6 +161,13 @@ proc/get_radio_key_from_channel(var/channel) return "asks" return verb +/mob/living/proc/get_font_size_modifier() + if(ismech(loc)) + var/mob/living/heavy_vehicle/HV = loc + if(HV.loudening) + return FONT_SIZE_LARGE + return null + /mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR) if(stat) if(stat == DEAD) @@ -276,11 +283,10 @@ proc/get_radio_key_from_channel(var/channel) get_mobs_and_objs_in_view_fast(T, message_range, listening, listening_obj, ghost_hearing) - var/list/hear_clients = list() for(var/m in listening) var/mob/M = m - var/heard_say = M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol) + var/heard_say = M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol, get_font_size_modifier()) if(heard_say && M.client) hear_clients += M.client diff --git a/html/changelogs/geeves-mecha_speakers.yml b/html/changelogs/geeves-mecha_speakers.yml new file mode 100644 index 00000000000..8f442cbd073 --- /dev/null +++ b/html/changelogs/geeves-mecha_speakers.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Exosuits now come with integrated megaspeakers. When activated, they will increase the volume of your speech." \ No newline at end of file