Mecha Speakers (#11268)

This commit is contained in:
Geeves
2021-03-10 20:18:09 +01:00
committed by GitHub
parent f45b6c040a
commit a52f554c77
7 changed files with 45 additions and 5 deletions
+6
View File
@@ -16,6 +16,12 @@
#define SPAN_SUBTLE(X) "<span class='subtle'>[X]</span>"
#define SPAN_SOGHUN(X) "<span class='soghun'>[X]</span>"
#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) "<font size='1'>[X]</font>"
#define FONT_NORMAL(X) "<font size='2'>[X]</font>"
#define FONT_LARGE(X) "<font size='3'>[X]</font>"
@@ -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
)
@@ -310,4 +310,18 @@
maptext = "<span style=\"font-family: 'Small Fonts'; color: [main_color]; -dm-text-outline: 1 #242424; font-size: 5px;\">SENSOR</span>"
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 = "<span style=\"font-family: 'Small Fonts'; color: #525252; -dm-text-outline: 1 #242424; font-size: 5px;\">VOLUME</span>"
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 = "<span style=\"font-family: 'Small Fonts'; color: [main_color]; -dm-text-outline: 1 #242424; font-size: 5px;\">VOLUME</span>"
notify_user(usr, SPAN_NOTICE("You [owner.loudening ? "activate" : "deactivate"] \the [owner]'s integrated megaspeakers."))
#undef BAR_CAP
+1
View File
@@ -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
+9 -3
View File
@@ -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, "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear them.")
else
if(language)
on_hear_say("[track][accent_icon ? accent_icon + " " : ""]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [language.format_message(message, verb)]</span>")
if(font_size)
on_hear_say("[track][accent_icon ? accent_icon + " " : ""]<font size='[font_size]'><span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [language.format_message(message, verb)]</span></font>")
else
on_hear_say("[track][accent_icon ? accent_icon + " " : ""]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [language.format_message(message, verb)]</span>")
else
on_hear_say("[track]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
if(font_size)
on_hear_say("[track]<font size='[font_size]'><span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [verb], <span class='message'><span class='body'>\"[message]\"</span></span></span></font>")
else
on_hear_say("[track]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
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)
+8 -2
View File
@@ -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
@@ -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."