diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 0d169bce1488..7344e3013950 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -607,7 +607,7 @@ /datum/quirk/sheltered/on_spawn() var/mob/living/carbon/human/H = quirk_holder H.remove_language(/datum/language/common, FALSE, TRUE) - if(!H.can_speak_language(/datum/language/draconic) && !H.can_speak_language(/datum/language/machine) && !H.can_speak_language(/datum/language/sylvan)) + if(!H.get_selected_language()) H.grant_language(/datum/language/japanese) /datum/quirk/allergic diff --git a/code/modules/language/bonespeak.dm b/code/modules/language/bonespeak.dm new file mode 100644 index 000000000000..1226a3c7eaeb --- /dev/null +++ b/code/modules/language/bonespeak.dm @@ -0,0 +1,15 @@ +/datum/language/bonespeak + name = "Bonespeak" + desc = "The rhythmic rattling Plasma People use to communicate." + speech_verb = "rattles" + ask_verb = "clicks" + exclaim_verb = "clatters" + key = "b" + flags = TONGUELESS_SPEECH + space_chance = 80 + syllables = list( + "tktk", "creak", "krt", "clack", "rattle", "krr" + ) + icon_state = "plasmaman" + default_priority = 90 + sing_verb = "crackles" diff --git a/code/modules/language/etherean.dm b/code/modules/language/etherean.dm new file mode 100644 index 000000000000..97f5d1cbc7d8 --- /dev/null +++ b/code/modules/language/etherean.dm @@ -0,0 +1,15 @@ +/datum/language/etherean + name = "Etherean" + desc = "The native language of the Ethereals." + speech_verb = "crackles" + ask_verb = "pops" + exclaim_verb = "jolts" + key = "3" + flags = TONGUELESS_SPEECH + space_chance = 70 + syllables = list( + "zap", "pop", "zzzz", "bzzzz", "tzzt", "hmmmm", "mmmm", "dzzzt", "ohmm", "zpp" + ) + icon_state = "ethereal" + default_priority = 90 + sing_verb = "hums" diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 7af3612ada41..204d4e39110e 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -317,6 +317,12 @@ Key procs spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/sylvan = list(LANGUAGE_ATOM)) +/datum/language_holder/plasmaman + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/bonespeak = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/bonespeak = list(LANGUAGE_ATOM)) + /datum/language_holder/pod understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/sylvan = list(LANGUAGE_ATOM)) @@ -335,6 +341,17 @@ Key procs spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/polysmorph = list(LANGUAGE_ATOM)) +/datum/language_holder/mothmen + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/mothian = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/mothian = list(LANGUAGE_ATOM)) + +/datum/language_holder/ethereal + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/etherean = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/etherean = list(LANGUAGE_ATOM)) /datum/language_holder/clockwork understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), diff --git a/code/modules/language/mothian.dm b/code/modules/language/mothian.dm new file mode 100644 index 000000000000..9d72a19840c3 --- /dev/null +++ b/code/modules/language/mothian.dm @@ -0,0 +1,15 @@ +/datum/language/mothian + name = "Mothian" + desc = "The native language of the Moth people." + speech_verb = "flutters" + ask_verb = "chirps" + exclaim_verb = "buzzes loudly" + key = "2" + flags = TONGUELESS_SPEECH + space_chance = 100 + syllables = list( + "bzz", "zzzt", "zzt", "zt", "clck", "tzip", "dzt", "dzzzt" + ) + icon_state = "moth" + default_priority = 90 + sing_verb = "trills" diff --git a/code/modules/language/sylvan.dm b/code/modules/language/sylvan.dm index 24b9a6d66ddd..70829431e821 100644 --- a/code/modules/language/sylvan.dm +++ b/code/modules/language/sylvan.dm @@ -15,5 +15,5 @@ "incas", "int", "elc", "ent", "aws", "qip", "nas", "vil", "jens", "dila", "fa", "la", "re", "do", "ji", "ae", "so", "qe", "ce", "na", "mo", "ha", "yu" ) - icon_state = "plant" + icon_state = "sylvan" default_priority = 90 diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 3b2e9553d622..758587911d3f 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -17,6 +17,7 @@ species_traits = list(DYNCOLORS, AGENDER, NO_UNDERWEAR) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT inherent_traits = list(TRAIT_NOHUNGER) + species_language_holder = /datum/language_holder/ethereal sexes = FALSE //no fetish content allowed toxic_food = NONE inert_mutation = SHOCKTOUCH diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index c7e688a216ed..388643b9d913 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -17,6 +17,7 @@ toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT + species_language_holder = /datum/language_holder/mothmen /datum/species/moth/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index dbe2d0b2a20e..e06881942337 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -21,6 +21,7 @@ disliked_food = FRUIT liked_food = VEGETABLES | GRILLED changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC + species_language_holder = /datum/language_holder/plasmaman /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 7db67721b0f7..d8ec42a9b330 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -20,6 +20,9 @@ /datum/language/aphasia, /datum/language/piratespeak, /datum/language/sylvan, + /datum/language/bonespeak, + /datum/language/mothian, + /datum/language/etherean, /datum/language/japanese, /datum/language/machine, //yogs /datum/language/darkspawn, //also yogs diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 14c76124aed8..b05b6cab7c2d 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/yogstation.dme b/yogstation.dme index aab6062c7c55..b1428e39271c 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -2050,17 +2050,20 @@ #include "code\modules\keybindings\setup.dm" #include "code\modules\language\aphasia.dm" #include "code\modules\language\beachbum.dm" +#include "code\modules\language\bonespeak.dm" #include "code\modules\language\codespeak.dm" #include "code\modules\language\common.dm" #include "code\modules\language\draconic.dm" #include "code\modules\language\drone.dm" #include "code\modules\language\egg.dm" #include "code\modules\language\encrypted.dm" +#include "code\modules\language\etherean.dm" #include "code\modules\language\language.dm" #include "code\modules\language\language_holder.dm" #include "code\modules\language\language_menu.dm" #include "code\modules\language\machine.dm" #include "code\modules\language\monkey.dm" +#include "code\modules\language\mothian.dm" #include "code\modules\language\mouse.dm" #include "code\modules\language\mushroom.dm" #include "code\modules\language\narsian.dm" diff --git a/yogstation/code/modules/scripting/Implementations/Telecomms.dm b/yogstation/code/modules/scripting/Implementations/Telecomms.dm index f8d922a24faa..26ff7dbc6b0f 100644 --- a/yogstation/code/modules/scripting/Implementations/Telecomms.dm +++ b/yogstation/code/modules/scripting/Implementations/Telecomms.dm @@ -11,6 +11,10 @@ #define DRACONIC 16 #define BEACHTONGUE 32 #define SYLVAN 64 +#define ETHEREAN 128 +#define BONE 256 +#define MOTH 512 + GLOBAL_LIST_INIT(allowed_custom_spans,list(SPAN_ROBOT,SPAN_YELL,SPAN_ITALICS,SPAN_SANS,SPAN_COMMAND,SPAN_CLOWN))//Span classes that players are allowed to set in a radio transmission. //this is fucking broken GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/language/machine,/datum/language/draconic))// language datums that players are allowed to translate to in a radio transmission. @@ -117,7 +121,10 @@ GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/languag "polysmorph" = POLYSMORPH, "draconic" = DRACONIC, "beachtounge" = BEACHTONGUE, - "sylvan" = SYLVAN + "sylvan" = SYLVAN, + "etherean" = ETHEREAN, + "bonespeak" = BONE, + "mothian" = MOTH ))) interpreter.Run() // run the thing @@ -157,7 +164,12 @@ GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/languag oldlang = BEACHTONGUE else if(oldlang == /datum/language/sylvan) oldlang = SYLVAN - + else if(oldlang == /datum/language/etherean) + oldlang = ETHEREAN + else if(oldlang == /datum/language/bonespeak) + oldlang = BONE + else if(oldlang == /datum/language/mothian) + oldlang = MOTH // Signal data var/datum/n_struct/signal/script_signal = new(list( @@ -288,6 +300,12 @@ GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/languag return /datum/language/beachbum if(SYLVAN) return /datum/language/sylvan + if(ETHEREAN) + return /datum/language/etherean + if(BONE) + return /datum/language/bonespeak + if(MOTH) + return /datum/language/mothian /datum/n_function/default/mem name = "mem" @@ -458,3 +476,6 @@ GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/languag #undef DRACONIC #undef BEACHTONGUE #undef SYLVAN +#undef ETHEREAN +#undef BONE +#undef MOTH