From 862f35ad31e2a66ba4394e0d2c95e1035abd5b65 Mon Sep 17 00:00:00 2001 From: Geeves Date: Thu, 22 Apr 2021 19:54:01 +0200 Subject: [PATCH] Singing Fix (#11733) --- code/modules/mob/language/generic.dm | 1 + code/modules/mob/language/language.dm | 4 +++- code/modules/mob/language/station.dm | 1 + code/modules/mob/living/say.dm | 3 ++- html/changelogs/geeves-singing_fix.yml | 7 +++++++ 5 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 html/changelogs/geeves-singing_fix.yml diff --git a/code/modules/mob/language/generic.dm b/code/modules/mob/language/generic.dm index b8865266e50..fff5d9e0510 100644 --- a/code/modules/mob/language/generic.dm +++ b/code/modules/mob/language/generic.dm @@ -78,6 +78,7 @@ desc = "A signed version of Ceti Basic, though its intent is primarily to help out people who are deaf and mute, " speech_verb = list("signs") signlang_verb = list("signs", "gestures") + sing_verb = null colour = "i" key = "4" flags = NO_STUTTER|SIGNLANG diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index b5be68b8823..9e4579e4377 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -53,6 +53,8 @@ if(LAZYACCESS(partial_understanding, L.name)) understand_chance += partial_understanding[L.name] + var/static/list/music_notes = list("\u2669", "\u266A", "\u266B") + var/list/words = splittext(input, " ") var/list/scrambled_text = list() var/new_sentence = 0 @@ -60,7 +62,7 @@ var/nword = "[w] " var/input_ending = copytext(w, length(w)) var/ends_sentence = findtext(".?!",input_ending) - if(!prob(understand_chance)) + if(!prob(understand_chance) && !(w in music_notes)) nword = scramble_word(w) if(new_sentence) nword = capitalize(nword) diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index c8959b654c4..1454daae7cf 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -83,6 +83,7 @@ desc = "A sign language developed by Adhomai hunters" speech_verb = list("signs") signlang_verb = list("signs", "flicks their ears", "gestures") + sing_verb = null colour = "i" key = "i" flags = NO_STUTTER | SIGNLANG | WHITELISTED diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 780595e0a59..09e447fba7c 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -203,7 +203,8 @@ proc/get_radio_key_from_channel(var/channel) var/is_singing = FALSE if(length(message) >= 1 && copytext(message, 1, 2) == "%") message = copytext(message, 2) - is_singing = TRUE + if(speaking?.sing_verb) + is_singing = TRUE // This is broadcast to all mobs with the language, // irrespective of distance or anything else. diff --git a/html/changelogs/geeves-singing_fix.yml b/html/changelogs/geeves-singing_fix.yml new file mode 100644 index 00000000000..9b1f59d0aee --- /dev/null +++ b/html/changelogs/geeves-singing_fix.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "You can no longer sing in sign language." + - bugfix: "Singing will no longer get the music notes scrambled if you don't understand the language." \ No newline at end of file