diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index e655408d..928f81bd 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -44,6 +44,7 @@ #define MODE_KEY_VOCALCORDS "x" #define MODE_MONKEY "monkeyhive" +#define MODE_SING "%" //Spans. Robot speech, italics, etc. Applied in compose_message(). #define SPAN_ROBOT "robot" @@ -54,6 +55,7 @@ #define SPAN_REALLYBIG "reallybig" #define SPAN_COMMAND "command_headset" #define SPAN_CLOWN "clown" +#define SPAN_SINGING "singing" //bitflag #defines for return value of the radio() proc. #define ITALICS 1 diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 67d4789e..39ed48ba 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -13,6 +13,7 @@ var/verb_ask = "asks" var/verb_exclaim = "exclaims" var/verb_whisper = "whispers" + var/verb_sing = "sings" var/verb_yell = "yells" var/speech_span var/inertia_dir = 0 diff --git a/code/modules/language/aphasia.dm b/code/modules/language/aphasia.dm index 91f14f91..d63054e2 100644 --- a/code/modules/language/aphasia.dm +++ b/code/modules/language/aphasia.dm @@ -4,6 +4,7 @@ speech_verb = "garbles" ask_verb = "mumbles" whisper_verb = "mutters" + sing_verb = "gibbers" exclaim_verb = "screams incoherently" flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD key = "i" diff --git a/code/modules/language/beachbum.dm b/code/modules/language/beachbum.dm index 528e9a8d..42d3114f 100644 --- a/code/modules/language/beachbum.dm +++ b/code/modules/language/beachbum.dm @@ -2,6 +2,7 @@ name = "Beachtongue" desc = "An ancient language from the distant Beach Planet. People magically learn to speak it under the influence of space drugs." speech_verb = "mumbles" + sing_verb = "parties" ask_verb = "grills" exclaim_verb = "hollers" key = "u" diff --git a/code/modules/language/common.dm b/code/modules/language/common.dm index 8d06dd8f..436c8cb9 100644 --- a/code/modules/language/common.dm +++ b/code/modules/language/common.dm @@ -4,6 +4,7 @@ desc = "The common galactic tongue." speech_verb = "says" whisper_verb = "whispers" + sing_verb = "sings" key = "0" flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_UNDERSTOOD default_priority = 100 diff --git a/code/modules/language/draconic.dm b/code/modules/language/draconic.dm index aaa998c2..0e1bb2e0 100644 --- a/code/modules/language/draconic.dm +++ b/code/modules/language/draconic.dm @@ -3,6 +3,7 @@ desc = "The common language of lizard-people, composed of sibilant hisses and rattles." speech_verb = "hisses" ask_verb = "hisses" + sing_verb = "sings" exclaim_verb = "roars" key = "o" flags = TONGUELESS_SPEECH diff --git a/code/modules/language/drone.dm b/code/modules/language/drone.dm index 390e0027..29a91b21 100644 --- a/code/modules/language/drone.dm +++ b/code/modules/language/drone.dm @@ -3,6 +3,7 @@ desc = "A heavily encoded damage control coordination stream, with special flags for hats." speech_verb = "chitters" ask_verb = "chitters inquisitively" + sing_verb = "chimes" exclaim_verb = "chitters loudly" spans = list(SPAN_ROBOT) key = "d" diff --git a/code/modules/language/language.dm b/code/modules/language/language.dm index e4488fc7..a2508785 100644 --- a/code/modules/language/language.dm +++ b/code/modules/language/language.dm @@ -11,6 +11,7 @@ var/ask_verb = "asks" // Used when sentence ends in a ? var/exclaim_verb = "exclaims" // Used when sentence ends in a ! var/whisper_verb = "whispers" // Optional. When not specified speech_verb + quietly/softly is used instead. + var/sing_verb = "sings" // Used for singing. var/list/signlang_verb = list("signs", "gestures") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags var/key // Character used to speak in language // If key is null, then the language isn't real or learnable. diff --git a/code/modules/language/machine.dm b/code/modules/language/machine.dm index b7ef701e..c251de75 100644 --- a/code/modules/language/machine.dm +++ b/code/modules/language/machine.dm @@ -4,6 +4,7 @@ speech_verb = "whistles" ask_verb = "chirps" exclaim_verb = "whistles loudly" + sing_verb = "whistles melodically" spans = list(SPAN_ROBOT) key = "6" flags = NO_STUTTER diff --git a/code/modules/language/monkey.dm b/code/modules/language/monkey.dm index 53e598b0..5e78a37a 100644 --- a/code/modules/language/monkey.dm +++ b/code/modules/language/monkey.dm @@ -4,6 +4,7 @@ speech_verb = "chimpers" ask_verb = "chimpers" exclaim_verb = "screeches" + sing_verb = "chimpers tunefully" key = "1" space_chance = 100 syllables = list("oop", "aak", "chee", "eek") diff --git a/code/modules/language/mushroom.dm b/code/modules/language/mushroom.dm index b896d114..97287ea5 100644 --- a/code/modules/language/mushroom.dm +++ b/code/modules/language/mushroom.dm @@ -5,6 +5,7 @@ ask_verb = "puffs inquisitively" exclaim_verb = "poofs loudly" whisper_verb = "puffs quietly" + sing_verb = "puffs musically" key = "y" sentence_chance = 0 default_priority = 80 diff --git a/code/modules/language/narsian.dm b/code/modules/language/narsian.dm index 42d0a065..deff8926 100644 --- a/code/modules/language/narsian.dm +++ b/code/modules/language/narsian.dm @@ -4,6 +4,7 @@ speech_verb = "intones" ask_verb = "inquires" exclaim_verb = "invokes" + sing_verb = "intones" key = "n" sentence_chance = 8 space_chance = 95 //very high due to the potential length of each syllable diff --git a/code/modules/language/swarmer.dm b/code/modules/language/swarmer.dm index e3b78267..c0ede4bb 100644 --- a/code/modules/language/swarmer.dm +++ b/code/modules/language/swarmer.dm @@ -4,6 +4,7 @@ speech_verb = "tones" ask_verb = "tones inquisitively" exclaim_verb = "tones loudly" + sing_verb = "tones" spans = list(SPAN_ROBOT) key = "s" flags = NO_STUTTER diff --git a/code/modules/language/xenocommon.dm b/code/modules/language/xenocommon.dm index f046ecd3..8b5bb78d 100644 --- a/code/modules/language/xenocommon.dm +++ b/code/modules/language/xenocommon.dm @@ -4,6 +4,7 @@ speech_verb = "hisses" ask_verb = "hisses" exclaim_verb = "hisses" + sing_verb = "hisses musically" key = "4" syllables = list("sss","sSs","SSS") default_priority = 50 diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a3256412..192cc7ad 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -86,7 +86,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) var/talk_key = get_key(message) - var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE) + var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE, MODE_SING = TRUE) if(sanitize) message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) @@ -190,6 +190,15 @@ GLOBAL_LIST_INIT(department_radio_keys, list( var/datum/language/L = GLOB.language_datum_instances[language] spans |= L.spans + if(message_mode == MODE_SING) + #if DM_VERSION < 513 + var/randomnote = "~" + #else + var/randomnote = pick("\u2669", "\u266A", "\u266B") + #endif + spans |= SPAN_SINGING + message = "[randomnote] [message] [randomnote]" + var/radio_return = radio(message, message_mode, spans, language) if(radio_return & ITALICS) spans |= SPAN_ITALICS @@ -399,6 +408,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list( . = "stammers" else if(derpspeech) . = "gibbers" + else if(message_mode == MODE_SING) + . = verb_sing else . = ..() diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 5744a2cd..5c795242 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -90,6 +90,8 @@ var/key = copytext(message, 1, 2) if(key == "#") return MODE_WHISPER + else if(key == "%") + return MODE_SING else if(key == ";") return MODE_HEADSET else if(length(message) > 2 && (key in GLOB.department_radio_prefixes)) diff --git a/goon/browserassets/css/browserOutput.css b/goon/browserassets/css/browserOutput.css index 58129ac1..f907fcfc 100644 --- a/goon/browserassets/css/browserOutput.css +++ b/goon/browserassets/css/browserOutput.css @@ -835,6 +835,7 @@ h1.alert, h2.alert {color: #000000;} .greentext {color: #00FF00; font-size: 24px;} .redtext {color: #FF0000; font-size: 24px;} .clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} +.singing {font-family: "Trebuchet MS", cursive, sans-serif; font-style: italic;} .hypnophrase {color: #202020; font-weight: bold; animation: hypnocolor 1500ms infinite;} @keyframes hypnocolor { 0% { color: #202020; } diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index 2ecd9f90..eb943521 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -152,6 +152,7 @@ h1.alert, h2.alert {color: #000000;} .greentext {color: #00FF00; font-size: 3;} .redtext {color: #FF0000; font-size: 3;} .clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} +.singing {font-family: "Trebuchet MS", cursive, sans-serif; font-style: italic;} .his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;} .velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;} @keyframes velvet { diff --git a/strings/names/verbs.txt b/strings/names/verbs.txt index fc90f89e..623cf018 100644 --- a/strings/names/verbs.txt +++ b/strings/names/verbs.txt @@ -486,6 +486,7 @@ sigh sign signal sin +sing sip ski skip