diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index ba9e0aaae78..f5c066bdaab 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -367,6 +367,8 @@ h1.alert, h2.alert {color: #a4bad6;} .siiktau {color: #be3434;} .revenant {color: #1ca5aa; font-style: italic;} +.singing {font-family: "Trebuchet MS", cursive, sans-serif; font-style: italic;} + .interface {color: #750e75;} .good {color: #4f7529; font-weight: bold;} diff --git a/code/modules/goonchat/browserassets/css/browserOutput_white.css b/code/modules/goonchat/browserassets/css/browserOutput_white.css index d452930400a..68ec44c6a9b 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput_white.css +++ b/code/modules/goonchat/browserassets/css/browserOutput_white.css @@ -364,6 +364,8 @@ h1.alert, h2.alert {color: #000080;} .siiktau {color: #A52A2A;} .revenant {color: #215a5c; font-style: italic;} +.singing {font-family: "Trebuchet MS", cursive, sans-serif; font-style: italic;} + .interface {color: #750e75;} .good {color: #4f7529; font-weight: bold;} diff --git a/code/modules/mob/language/generic.dm b/code/modules/mob/language/generic.dm index fca561e203c..41d982867d4 100644 --- a/code/modules/mob/language/generic.dm +++ b/code/modules/mob/language/generic.dm @@ -38,6 +38,7 @@ name = LANGUAGE_TRADEBAND desc = "Descended from latin and romance languages of old Earth, Tradeband remains the main tongue of the upper class of humanity. The language sounds elegant and well structured to most ears. It remains in popular use with traders, diplomats, and those seeking to hold onto a piece of a romantic past." speech_verb = list("enunciates") + sing_verb = list("performs") colour = "say_quote" key = "2" flags = TCOMSSIM @@ -55,6 +56,7 @@ name = LANGUAGE_GUTTER desc = "A language of renegades and frontiersmen descending from various languages from Earth like Hindi combined into a multi-rooted jumble that sounds incoherent or even barbarian to non-native speakers. This language is the only common cultural identity for humans in the frontier. Speaking this language in itself boldly declares the speaker a free spirit. Often called 'Gutter' by Alliance citizens." speech_verb = list("growls") + sing_verb = list("croons") colour = "rough" key = "3" flags = TCOMSSIM @@ -90,6 +92,7 @@ ask_verb = list("mumbles") whisper_verb = list("mutters") exclaim_verb = list("screams incoherently") + sing_verb = list("gibbers") key = "i" syllables = list("m","n","gh","h","l","s","r","a","e","i","o","u") space_chance = 20 diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index 7ebb30a4bd8..f544791de75 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -13,6 +13,7 @@ var/list/shout_verb = list("shouts", "yells", "screams") //Used when a sentence ends in !! var/list/whisper_verb = list("says quietly", "says softly", "whispers") // Optional. When not specified speech_verb + quietly/softly is used instead. var/list/signlang_verb = list("signs") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags + var/list/sing_verb = list("sings") var/colour = "body" // CSS style to use for strings in this language. var/key = "x" // Character used to speak in language eg. :o for Unathi. var/flags = 0 // Various language flags. @@ -152,8 +153,10 @@ /datum/language/proc/check_special_condition(var/mob/other) return 1 -/datum/language/proc/get_spoken_verb(var/msg_end, var/pre_end) +/datum/language/proc/get_spoken_verb(var/msg_end, var/pre_end, var/singing = FALSE) var/chosen_verb = speech_verb + if(singing) + return pick(sing_verb) switch(msg_end) if("!") if(pre_end == "!" || pre_end == "?") diff --git a/code/modules/mob/language/monkey.dm b/code/modules/mob/language/monkey.dm index f59174e439d..c8d4bb11ad6 100644 --- a/code/modules/mob/language/monkey.dm +++ b/code/modules/mob/language/monkey.dm @@ -4,6 +4,7 @@ speech_verb = list("chimpers") ask_verb = list("chimpers") exclaim_verb = list("screeches") + sing_verb = list("belts out") key = "6" machine_understands = FALSE flags = RESTRICTED diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm index b060f549d3d..a58c2cc6ca0 100644 --- a/code/modules/mob/language/outsider.dm +++ b/code/modules/mob/language/outsider.dm @@ -2,6 +2,7 @@ name = LANGUAGE_CHANGELING desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance." speech_verb = list("says") + sing_verb = list("choruses") colour = "changeling" key = "g" flags = RESTRICTED | HIVEMIND @@ -50,6 +51,7 @@ speech_verb = list("intones") ask_verb = list("intones") exclaim_verb = list("chants") + sing_verb = list("chants") colour = "cult" key = "f" flags = RESTRICTED @@ -75,6 +77,7 @@ speech_verb = list("intones") ask_verb = list("intones") exclaim_verb = list("chants") + sing_verb = list("chants") colour = "cult" key = "y" flags = RESTRICTED | HIVEMIND @@ -85,6 +88,7 @@ speech_verb = list("buzzes") ask_verb = list("buzzes") exclaim_verb = list("buzzes") + sing_verb = list("buzzes") colour = "bad" key = "#" flags = RESTRICTED | HIVEMIND @@ -100,6 +104,7 @@ speech_verb = list("gargles") ask_verb = list("gags") exclaim_verb = list("retches") + sing_verb = list("trills") colour = "revenant" key = "c" syllables = list("grhhg", "ghrohg", "grgugh", "grrhh", "hghh", "rghghh", "gghhh", "ggrh", "aghrh") diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index 229073e6fc4..b696db38f36 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -4,6 +4,7 @@ speech_verb = list("creaks and rustles") ask_verb = list("creaks") exclaim_verb = list("rustles") + sing_verb = list("croaks") colour = "soghun" key = "q" flags = RESTRICTED|TCOMSSIM @@ -26,6 +27,7 @@ speech_verb = list("hisses") ask_verb = list("hisses") exclaim_verb = list("roars") + sing_verb = list("hisses") colour = "soghun" key = "o" flags = WHITELISTED|TCOMSSIM @@ -50,6 +52,7 @@ speech_verb = list("mrowls") ask_verb = list("mrowls") exclaim_verb = list("yowls") + sing_verb = list("mrowmbles") colour = "tajaran" key = "j" flags = WHITELISTED|TCOMSSIM @@ -88,6 +91,7 @@ ask_verb = list("mrowls") exclaim_verb = list("yowls") signlang_verb = list("signs", "flicks their ears", "gestures") + sing_verb = list("mrowmbles") colour = "tajaran_signlang" key = "w" flags = WHITELISTED | NONVERBAL @@ -103,6 +107,7 @@ speech_verb = list("mrowls") ask_verb = list("mrowls") exclaim_verb = list("yowls") + sing_verb = list("mrowmbles") colour = "yassa" key = "r" flags = WHITELISTED|TCOMSSIM @@ -119,6 +124,7 @@ speech_verb = list("mrowls") ask_verb = list("mrowls") exclaim_verb = list("yowls") + sing_verb = list("mrowmbles") colour = "delvahhi" key = "n" flags = WHITELISTED|TCOMSSIM @@ -135,6 +141,7 @@ speech_verb = list("warbles") ask_verb = list("warbles") exclaim_verb = list("warbles") + sing_verb = list("warbles") colour = "skrell" key = "k" flags = WHITELISTED|TCOMSSIM @@ -263,6 +270,7 @@ speech_verb = list("beeps") ask_verb = list("beeps") exclaim_verb = list("loudly beeps") + exclaim_verb = list("rhythmically beeps") colour = "changeling" key = "6" flags = RESTRICTED | NO_STUTTER | TCOMSSIM @@ -281,6 +289,7 @@ ask_verb = list("hisses") exclaim_verb = list("roars") signlang_verb = list("signs", "gestures aggressively") + sing_verb = list("hisses") colour = "soghun_alt" key = "p" flags = WHITELISTED | NONVERBAL diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 2277725c1a2..3cdd9b3c40d 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -109,12 +109,12 @@ for it but just ignore it. */ -/mob/living/carbon/human/say_quote(var/message, var/datum/language/speaking = null) +/mob/living/carbon/human/say_quote(var/message, var/datum/language/speaking = null, var/singing = FALSE) var/ending = copytext(message, length(message)) var/pre_ending = copytext(message, length(message) - 1, length(message)) if(speaking) - . = speaking.get_spoken_verb(ending, pre_ending) + . = speaking.get_spoken_verb(ending, pre_ending, singing) else . = ..() diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index b349ec0dcc4..780595e0a59 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -200,6 +200,11 @@ proc/get_radio_key_from_channel(var/channel) else speaking = get_default_language() + var/is_singing = FALSE + if(length(message) >= 1 && copytext(message, 1, 2) == "%") + message = copytext(message, 2) + is_singing = TRUE + // This is broadcast to all mobs with the language, // irrespective of distance or anything else. if(speaking && (speaking.flags & HIVEMIND)) @@ -209,7 +214,7 @@ proc/get_radio_key_from_channel(var/channel) speaking.broadcast(src,trim(message)) return 1 - verb = say_quote(message, speaking) + verb = say_quote(message, speaking, is_singing) if(is_muzzled()) to_chat(src, "You're muzzled and cannot speak!") @@ -229,6 +234,9 @@ proc/get_radio_key_from_channel(var/channel) return 0 message = process_chat_markup(message, list("~", "_")) + if(is_singing) + var/randomnote = pick("\u2669", "\u266A", "\u266B") + message = "[randomnote] [message] [randomnote]" //handle nonverbal and sign languages here if (speaking) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index ac8b2dd0ce9..e2c69635fe5 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -110,8 +110,10 @@ for it but just ignore it. */ -/mob/proc/say_quote(var/message, var/datum/language/speaking = null) +/mob/proc/say_quote(var/message, var/datum/language/speaking = null, var/singing = FALSE) . = "says" + if(singing) + return "sings" var/ending = copytext(message, length(message)) var/pre_ending = copytext(message, length(message) - 1, length(message)) if(ending == "!") diff --git a/html/changelogs/geeves-singing.yml b/html/changelogs/geeves-singing.yml new file mode 100644 index 00000000000..6a0ba1d0033 --- /dev/null +++ b/html/changelogs/geeves-singing.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "You can now sing by putting % before your message." \ No newline at end of file