diff --git a/code/game/say.dm b/code/game/say.dm index 1a2449b3a8d1..7b23c0e1a595 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -69,9 +69,9 @@ GLOBAL_LIST_INIT(freqtospan, list( if(!message || message == "") return spans |= speech_span - language ||= get_selected_language() - if(!message_mods[SAY_MOD_VERB]) - message_mods[SAY_MOD_VERB] = say_mod(message, message_mods) + if(!language) + language = get_selected_language() + message_mods[SAY_MOD_VERB] = say_mod(message, message_mods) send_speech(message, message_range, src, bubble_type, spans, language, message_mods, forced = forced) /// Called when this movable hears a message from a source. diff --git a/code/modules/language/aphasia.dm b/code/modules/language/aphasia.dm index 4ee2b9b5eaef..4577db7d56e6 100644 --- a/code/modules/language/aphasia.dm +++ b/code/modules/language/aphasia.dm @@ -2,7 +2,7 @@ name = "Gibbering" desc = "It is theorized that any sufficiently brain-damaged person can speak this language." flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD - key = "i" + key = "?" syllables = list("m","n","gh","h","l","s","r","a","e","i","o","u") space_chance = 0 sentence_chance = 0 diff --git a/code/modules/language/carptongue.dm b/code/modules/language/carptongue.dm index 6215c6188638..97d1fa8b0f24 100644 --- a/code/modules/language/carptongue.dm +++ b/code/modules/language/carptongue.dm @@ -1,7 +1,7 @@ /datum/language/carptongue name = "Carptongue" desc = "Various fishy sounds that might make sense to space carps." - key = "c" + //key = "c" icon_state = "fish" flags = LANGUAGE_NO_STUTTER|LANGUAGE_TONGUELESS_SPEECH sentence_chance = 0 diff --git a/code/modules/language/moffic.dm b/code/modules/language/moffic.dm index 2e90b5cd1681..b1e6d6f98780 100644 --- a/code/modules/language/moffic.dm +++ b/code/modules/language/moffic.dm @@ -1,7 +1,7 @@ /datum/language/moffic name = "Moffic" desc = "The language of the Mothpeople borders on complete unintelligibility." - key = "m" + //key = "m" space_chance = 5 sentence_chance = 0 between_word_sentence_chance = 10 diff --git a/code/modules/language/narsian.dm b/code/modules/language/narsian.dm index 0fc96da674d3..b11812c25aee 100644 --- a/code/modules/language/narsian.dm +++ b/code/modules/language/narsian.dm @@ -1,7 +1,7 @@ /datum/language/narsie name = "Nar'Sian" desc = "The ancient, blood-soaked, impossibly complex language of Nar'Sian cultists." - key = "n" + //key = "n" space_chance = 75 //very high due to the potential length of each syllable sentence_chance = 10 between_word_sentence_chance = 5 diff --git a/code/modules/language/nekomimetic.dm b/code/modules/language/nekomimetic.dm index 2551b15ecebb..3b25a133fe6b 100644 --- a/code/modules/language/nekomimetic.dm +++ b/code/modules/language/nekomimetic.dm @@ -1,7 +1,7 @@ /datum/language/nekomimetic name = "Nekomimetic" desc = "To the casual observer, this language is an incomprehensible mess of broken Japanese. To the felinids, it's somehow comprehensible." - key = "f" + key = "N" space_chance = 15 sentence_chance = 0 between_word_sentence_chance = 10 diff --git a/code/modules/language/piratespeak.dm b/code/modules/language/piratespeak.dm index d4db6b082a29..99be8c4235eb 100644 --- a/code/modules/language/piratespeak.dm +++ b/code/modules/language/piratespeak.dm @@ -1,7 +1,7 @@ /datum/language/piratespeak name = "Piratespeak" desc = "The language of space pirates." - key = "p" + //key = "p" space_chance = 100 sentence_chance = 10 between_word_sentence_chance = 10 diff --git a/code/modules/language/slime.dm b/code/modules/language/slime.dm index 15960898673d..ce827016a8da 100644 --- a/code/modules/language/slime.dm +++ b/code/modules/language/slime.dm @@ -1,7 +1,7 @@ /datum/language/slime name = "Slime" desc = "A melodic and complex language spoken by slimes. Some of the notes are inaudible to humans." - key = "k" + //key = "k" syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix") special_characters = list("!","*") default_priority = 70 diff --git a/code/modules/language/spinwarder.dm b/code/modules/language/spinwarder.dm index 7e4f12f738cc..a4d99c560b25 100644 --- a/code/modules/language/spinwarder.dm +++ b/code/modules/language/spinwarder.dm @@ -3,7 +3,7 @@ /datum/language/spinwarder name = "Spinwarder" desc = "The official language of the Spinward Stellar Coalition, as inherited from the Third Soviet Union." - key = "s" + //key = "s" space_chance = 20 sentence_chance = 0 between_word_sentence_chance = 10 diff --git a/code/modules/language/sylvan.dm b/code/modules/language/sylvan.dm index e2d9facf4f4c..035b2187b69d 100644 --- a/code/modules/language/sylvan.dm +++ b/code/modules/language/sylvan.dm @@ -2,7 +2,7 @@ /datum/language/sylvan name = "Sylvan" desc = "A complicated, ancient language spoken by sentient plants." - key = "h" + //key = "h" space_chance = 10 sentence_chance = 0 between_word_sentence_chance = 10 diff --git a/code/modules/language/wormspeak.dm b/code/modules/language/wormspeak.dm index b068921853f4..d736fe6b91ce 100644 --- a/code/modules/language/wormspeak.dm +++ b/code/modules/language/wormspeak.dm @@ -1,7 +1,7 @@ /datum/language/wormspeak name = "Wormspeak" desc = "A language used by all kinds of large worms. Formed from the bellowing of their giant maws." - key = "w" + //key = "w" syllables = list("oaaa", "eeo", "aaeo", "ooe", "eaeaea", "aeaeoo", "o", "ae") icon_state = "wormspeak" default_priority = 90 diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index f56773199848..6f59d5d14987 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -182,7 +182,7 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( if(!try_speak(original_message, ignore_spam, forced, filterproof)) return - language ||= message_mods[LANGUAGE_EXTENSION] || get_selected_language() + language = message_mods[LANGUAGE_EXTENSION] || get_selected_language() var/succumbed = FALSE @@ -290,7 +290,6 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( return TRUE - /mob/living/Hear(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0, source) // DARKPACK EDIT CHANGE - ORIGINAL: /mob/living/Hear(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0) if((SEND_SIGNAL(src, COMSIG_MOVABLE_PRE_HEAR, args) & COMSIG_MOVABLE_CANCEL_HEARING) || !GET_CLIENT(src)) return FALSE diff --git a/code/modules/mob/mob_say.dm b/code/modules/mob/mob_say.dm index 9d564daae61e..3a000bd22b52 100644 --- a/code/modules/mob/mob_say.dm +++ b/code/modules/mob/mob_say.dm @@ -169,7 +169,7 @@ GAME_VERB(/mob, me_verb, VERB_ME, null, message as text) return FALSE ///The amount of items we are looking for in the message -#define MESSAGE_MODS_LENGTH 7 +#define MESSAGE_MODS_LENGTH 6 /mob/proc/check_for_custom_say_emote(message, list/mods) var/customsaypos = findtext(message, "*") diff --git a/modular_darkpack/modules/languages/code/languages/german.dm b/modular_darkpack/modules/languages/code/languages/german.dm index a9161fb9a2ed..b0e6c2e46e9c 100644 --- a/modular_darkpack/modules/languages/code/languages/german.dm +++ b/modular_darkpack/modules/languages/code/languages/german.dm @@ -1,7 +1,7 @@ /datum/language/german name = "German" desc = "A precise and powerful language spoken in Germany and beyond." - key = "g" + key = "G" flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 30 syllables = list( diff --git a/modular_darkpack/modules/languages/code/languages/tagalog.dm b/modular_darkpack/modules/languages/code/languages/tagalog.dm index 8c3ecac50416..70f1ba7fa260 100644 --- a/modular_darkpack/modules/languages/code/languages/tagalog.dm +++ b/modular_darkpack/modules/languages/code/languages/tagalog.dm @@ -2,7 +2,7 @@ name = "Tagalog" desc = "Filipino is the most common form of the Tagalog language in the Philippines, and is fourth most spoken language in San Francisco." flags = LANGUAGE_TONGUELESS_SPEECH - key = "t" + key = "T" space_chance = 100 sentence_chance = 10 between_word_sentence_chance = 10 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm index 9bfffc9d7f0f..f50c60c22786 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm @@ -1,4 +1,4 @@ -/datum/language_holder/garou +/datum/language_holder/garou //for homid and glabro understood_languages = list( /datum/language/common = list(LANGUAGE_ATOM), /datum/language/garou_tongue = list(LANGUAGE_ATOM), @@ -9,11 +9,27 @@ /datum/language/garou_tongue = list(LANGUAGE_ATOM), ) -/datum/language_holder/primal +/datum/language_holder/crinos understood_languages = list( /datum/language/common = list(LANGUAGE_ATOM), + /datum/language/garou_tongue = list(LANGUAGE_ATOM), /datum/language/primal_tongue = list(LANGUAGE_ATOM), ) + spoken_languages = list( + /datum/language/garou_tongue = list(LANGUAGE_ATOM), + /datum/language/primal_tongue = list(LANGUAGE_ATOM), + ) + //necessary, to ensure no human tongue talking + blocked_speaking = list( + + ) + +/datum/language_holder/primal //for lupus and hispos form + understood_languages = list( + /datum/language/common = list(LANGUAGE_ATOM), + /datum/language/primal_tongue = list(LANGUAGE_ATOM), + /datum/language/garou_tongue = list(LANGUAGE_ATOM), + ) spoken_languages = list( /datum/language/primal_tongue = list(LANGUAGE_ATOM), ) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm index bb36476f87c3..ac62034d0b5f 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm @@ -74,8 +74,8 @@ /obj/item/organ/tongue/fera name = "exotic tongue" - languages_native = list(/datum/language/garou_tongue) + languages_native = list(/datum/language/garou_tongue, /datum/language/primal_tongue) // Garou tongues can speak all default + garou tongue /obj/item/organ/tongue/fera/get_possible_languages() - return ..() + /datum/language/garou_tongue + return ..() + list(/datum/language/garou_tongue, /datum/language/primal_tongue) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm index aadc5c6793a5..b788c1a58dd8 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm @@ -155,6 +155,7 @@ name = "bestial form" id = SPECIES_FERA_BESTIAL shift_difficulty = 7 + species_language_holder = /datum/language_holder/garou fallback_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/garou_forms/glabro.dmi' veil_breaching_form = TRUE bodypart_overrides = list( @@ -216,6 +217,7 @@ form_causes_delirium = TRUE veil_breaching_form = TRUE + species_language_holder = /datum/language_holder/crinos mutanttongue = /obj/item/organ/tongue/fera bodypart_overrides = list( BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/fera/aggravated, @@ -237,6 +239,10 @@ /datum/species/human/shifter/war/visible_gender_override(mob/living/carbon/human/holder) return "beast" +/* +/datum/species/human/shifter/war/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons) + . = ..() +*/ /datum/species/human/shifter/dire name = "dire form" @@ -253,6 +259,7 @@ ) veil_breaching_form = TRUE + species_language_holder = /datum/language_holder/primal mutantbrain = /obj/item/organ/brain/fera mutanttongue = /obj/item/organ/tongue/fera bodypart_overrides = list( @@ -276,8 +283,15 @@ /datum/species/human/shifter/dire/visible_gender_override(mob/living/carbon/human/holder) return "beast" +/* +/datum/species/human/shifter/dire/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons) + . = ..() + human_who_gained_species.grant_language(/datum/language/primal_tongue, SPOKEN_LANGUAGE, LANGUAGE_ATOM) - +/datum/species/human/shifter/dire/on_species_loss(mob/living/carbon/human/human, datum/species/new_species, pref_load) + . = ..() + human_who_gained_species.remove_language(/datum/language/primal_tongue, SPOKEN_LANGUAGE, LANGUAGE_ATOM) +*/ /datum/species/human/shifter/feral name = "feral form" id = SPECIES_FERA_FERAL @@ -290,7 +304,7 @@ TRAIT_SMALL_HANDS, TRAIT_NO_CUFF, ) - + species_language_holder = /datum/language_holder/primal mutantbrain = /obj/item/organ/brain/fera mutanttongue = /obj/item/organ/tongue/fera bodypart_overrides = list( @@ -323,11 +337,13 @@ var/datum/action/innate/toggle_fera_flight/ability = new(human_who_gained_species) ability.Grant(human_who_gained_species) + //human_who_gained_species.grant_language(/datum/language/primal_tongue, SPOKEN_LANGUAGE, LANGUAGE_ATOM) + /datum/species/human/shifter/feral/on_species_loss(mob/living/carbon/human/human, datum/species/new_species, pref_load) . = ..() for(var/datum/action/innate/toggle_fera_flight/action in human.actions) action.Remove(human) - + //human_who_gained_species.remove_language(/datum/language/primal_tongue, SPOKEN_LANGUAGE, LANGUAGE_ATOM) /datum/movespeed_modifier/shifter abstract_type = /datum/movespeed_modifier/shifter diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm index 2cf6da9efdd7..f35b49a425f3 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm @@ -83,6 +83,10 @@ // incompatible_splats = list(/datum/splat/werewolf/shifter) // TODO: Becoming a shifter should get rid of your kinfolk splat +/datum/splat/werewolf/kinfolk/on_gain() //Currently just for granting language Garou Tongue or High Tongue that Kinfolk can learn. + owner.grant_language(/datum/language/garou_tongue, SPOKEN_LANGUAGE, LANGUAGE_ATOM) //Separated because Spoken and Hearing Components are separated + owner.grant_language(/datum/language/garou_tongue, UNDERSTOOD_LANGUAGE, LANGUAGE_ATOM) + /datum/splat/werewolf/shifter abstract_type = /datum/splat/werewolf/shifter splat_traits = list(