diff --git a/code/modules/language/buzzwords.dm b/code/modules/language/buzzwords.dm new file mode 100644 index 00000000000..72b5a87aa30 --- /dev/null +++ b/code/modules/language/buzzwords.dm @@ -0,0 +1,13 @@ +/datum/language/buzzwords + name = "Buzzwords" + desc = "A common language to all insects, made by the rhythmic beating of wings." + speech_verb = "buzzes" + ask_verb = "buzzes" + exclaim_verb = "loudly buzzes" + key = "z" + space_chance = 0 + syllables = list( + "bzz","zzz","z","bz","bzzz","zzzz", "bzzzz", "b", "zz", "zzzzz" + ) + icon_state = "buzz" + default_priority = 90 diff --git a/code/modules/language/calcic.dm b/code/modules/language/calcic.dm new file mode 100644 index 00000000000..5ba660055d7 --- /dev/null +++ b/code/modules/language/calcic.dm @@ -0,0 +1,20 @@ +/datum/language/calcic + name = "Calcic" + desc = "The disjointed and staccato language of plasmamen. Also understood by skeletons." + speech_verb = "rattles" + ask_verb = "queries" + exclaim_verb = "screeches" + whisper_verb = "clicks" + key = "b" + space_chance = 10 + syllables = list( + "k", "ck", "ack", "ick", "cl", "tk", "sk", "isk", "tak", + "kl", "hs", "ss", "ks", "lk", "dk", "gk", "ka", "ska", "la", "pk", + "wk", "ak", "ik", "ip", "ski", "bk", "kb", "ta", "is", "it", "li", "di", + "ds", "ya", "sck", "crk", "hs", "ws", "mk", "aaa", "skraa", "skee", "hss", + "raa", "klk", "tk", "stk", "clk" + ) + icon_state = "calcic" + default_priority = 90 + +// Yeah, this goes to skeletons too, since it's basically just skeleton clacking. diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 2d4ee2a1bb2..f73fd16359c 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -296,10 +296,74 @@ Key procs /datum/language_holder/synthetic understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/machine = list(LANGUAGE_ATOM), - /datum/language/draconic = list(LANGUAGE_ATOM)) + /datum/language/draconic = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/machine = list(LANGUAGE_ATOM), - /datum/language/draconic = list(LANGUAGE_ATOM)) + /datum/language/draconic = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) + +/datum/language_holder/moth + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM)) + +/datum/language_holder/skeleton + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + +/datum/language_holder/ethereal + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) + +/datum/language_holder/golem + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM)) + +/datum/language_holder/golem/bone + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + +/datum/language_holder/golem/runic + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/narsie = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/narsie = list(LANGUAGE_ATOM)) + +/datum/language_holder/fly + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/buzzwords = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/buzzwords = list(LANGUAGE_ATOM)) + +/datum/language_holder/plant + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/sylvan = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/sylvan = list(LANGUAGE_ATOM)) + +/datum/language_holder/shadowpeople + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/shadowtongue = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/shadowtongue = list(LANGUAGE_ATOM)) /datum/language_holder/empty understood_languages = list() diff --git a/code/modules/language/moffic.dm b/code/modules/language/moffic.dm new file mode 100644 index 00000000000..af0eeeb4c6f --- /dev/null +++ b/code/modules/language/moffic.dm @@ -0,0 +1,19 @@ +/datum/language/moffic + name = "Moffic" + desc = "The language of the Mothpeople borders on complete unintelligibility." + speech_verb = "flutters" + ask_verb = "flits" + exclaim_verb = "flaps" + key = "m" + space_chance = 10 + syllables = list( + "år", "i", "går", "sek", "mo", "ff", "ok", "gj", "ø", "gå", "la", "le", + "lit", "ygg", "van", "dår", "næ", "møt", "idd", "hvo", "ja", "på", "han", + "så", "ån", "det", "att", "nå", "gö", "bra", "int", "tyc", "om", "när", + "två", "må", "dag", "sjä", "vii", "vuo", "eil", "tun", "käyt", "teh", "vä", + "hei", "huo", "suo", "ää", "ten", "ja", "heu", "stu", "uhr", "kön", "we", "hön" + ) + icon_state = "moth" + default_priority = 90 + +// Fuck guest accounts, and fuck language testing. diff --git a/code/modules/language/shadowtongue.dm b/code/modules/language/shadowtongue.dm new file mode 100644 index 00000000000..a858754622a --- /dev/null +++ b/code/modules/language/shadowtongue.dm @@ -0,0 +1,21 @@ +// You n'wah! +// many thanks to https://casualscrolls.fandom.com/wiki/Dunmeri_language, for providing this list of syllables +/datum/language/shadowtongue + name = "Shadowtongue" + desc = "What a grand and intoxicating innocence." + speech_verb = "growls" + ask_verb = "growls" + exclaim_verb = "roars" + key = "x" + space_chance = 50 + syllables = list( + "er", "sint", "en", "et", "nor", "bahr", "sint", "un", "ku'elm", "lakor", "eri", + "noj", "dashilu", "as", "ot", "lih", "morh", "ghinu", "kin", "sha", "marik", "jibu", + "sudas", "fut", "kol", "bivi", "pohim", "devohr", "ru", "huirf", "neiris", "sut", + "devehr", "iru", "gher", "gan", "ujil", "lacor", "bahris", "ghar", "alnef", "wah", + "khurdhar", "bar", "et", "ilu", "dash", "diru", "noj", "de", "damjulan", "luvahr", + "telshahr", "tifur", "enhi", "am", "bahr", "nei", "neibahri", "n'chow", "n'wah", + "s'wit", "b'vehk", "f'lah", "muth", "sera", "sedura", "bal", "dun" + ) + icon_state = "shadow" + default_priority = 90 diff --git a/code/modules/language/sylvan.dm b/code/modules/language/sylvan.dm new file mode 100644 index 00000000000..098e304b002 --- /dev/null +++ b/code/modules/language/sylvan.dm @@ -0,0 +1,18 @@ +// The language of the podpeople. Yes, it's a shameless ripoff of elvish. +/datum/language/sylvan + name = "Sylvan" + desc = "A complicated, ancient language spoken by sentient plants." + speech_verb = "expresses" + ask_verb = "inquires" + exclaim_verb = "declares" + key = "h" + space_chance = 20 + syllables = list( + "fii", "sii", "rii", "rel", "maa", "ala", "san", "tol", "tok", "dia", "eres", + "fal", "tis", "bis", "qel", "aras", "losk", "rasa", "eob", "hil", "tanl", "aere", + "fer", "bal", "pii", "dala", "ban", "foe", "doa", "cii", "uis", "mel", "wex", + "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" + default_priority = 90 diff --git a/code/modules/language/terrum.dm b/code/modules/language/terrum.dm new file mode 100644 index 00000000000..d26c7f0a3e4 --- /dev/null +++ b/code/modules/language/terrum.dm @@ -0,0 +1,17 @@ +/datum/language/terrum + name = "Terrum" + desc = "The language of the golems. Sounds similar to old-earth Hebrew." + speech_verb = "rumbles" + ask_verb = "questions" + exclaim_verb = "tremors" + key = "g" + space_chance = 40 + syllables = list( + "sha", "vu", "nah", "ha", "yom", "ma", "cha", "ar", "et", "mol", "lua", + "ch", "na", "sh", "ni", "yah", "bes", "ol", "hish", "ev", "la", "ot", "la", + "khe", "tza", "chak", "hak", "hin", "hok", "lir", "tov", "yef", "yfe", + "cho", "ar", "kas", "kal", "ra", "lom", "im", "'", "'", "'", "'", "bok", + "erev", "shlo", "lo", "ta", "im", "yom" + ) + icon_state = "golem" + default_priority = 90 diff --git a/code/modules/language/voltaic.dm b/code/modules/language/voltaic.dm new file mode 100644 index 00000000000..fa0f0080428 --- /dev/null +++ b/code/modules/language/voltaic.dm @@ -0,0 +1,17 @@ +// One of these languages will actually work, I'm certain of it. +/datum/language/voltaic + name = "Voltaic" + desc = "A sparky language made by manipulating electrical discharge." + speech_verb = "crackles" + ask_verb = "pops" + exclaim_verb = "thunders" + key = "v" + space_chance = 20 + syllables = list( + "bzzt", "skrrt", "zzp", "mmm", "hzz", "tk", "shz", "k", "z", + "bzt", "zzt", "skzt", "skzz", "hmmt", "zrrt", "hzzt", "hz", + "vzt", "zt", "vz", "zip", "tzp", "lzzt", "dzzt", "zdt", "kzt", + "zzzz", "mzz" + ) + icon_state = "volt" + 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 3f0c527e42d..51635af5016 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -8,6 +8,7 @@ miss_sound = 'sound/weapons/etherealmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ethereal mutantstomach = /obj/item/organ/stomach/ethereal + mutanttongue = /obj/item/organ/tongue/ethereal exotic_blood = /datum/reagent/consumable/liquidelectricity //Liquid Electricity. fuck you think of something better gamer siemens_coeff = 0.5 //They thrive on energy brutemod = 1.25 //They're weak to punches @@ -15,6 +16,7 @@ damage_overlay_type = "" //We are too cool for regular damage overlays species_traits = list(DYNCOLORS, AGENDER, NO_UNDERWEAR) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/ethereal inherent_traits = list(TRAIT_NOHUNGER) sexes = FALSE //no fetish content allowed toxic_food = NONE diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 281693d17f8..b8a392ef997 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -11,6 +11,7 @@ disliked_food = null liked_food = GROSS changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/fly /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.type == /datum/reagent/toxin/pestkiller) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index b1f28a3aa38..22e0bf0d448 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -18,6 +18,7 @@ sexes = 1 damage_overlay_type = "" meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem + species_language_holder = /datum/language_holder/golem // To prevent golem subtypes from overwhelming the odds when random species // changes, only the Random Golem type can be chosen limbs_id = "golem" @@ -587,6 +588,7 @@ prefix = "Runic" special_names = null inherent_factions = list("cult") + species_language_holder = /datum/language_holder/golem/runic var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift var/obj/effect/proc_holder/spell/targeted/abyssal_gaze/abyssal_gaze @@ -918,6 +920,7 @@ sexes = FALSE fixed_mut_color = null inherent_traits = list(TRAIT_NOFLASH,TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_FAKEDEATH) + species_language_holder = /datum/language_holder/golem/bone info_text = "As a Bone Golem, You have a powerful spell that lets you chill your enemies with fear, and milk heals you! Just make sure to watch our for bone-hurting juice." var/datum/action/innate/bonechill/bonechill 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 24316adf496..8a4412f4950 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -16,6 +16,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/moth /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 7cc4df235a5..821b27e694d 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 @@ liked_food = VEGETABLES changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC outfit_important_for_life = /datum/outfit/plasmaman + species_language_holder = /datum/language_holder/skeleton /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 337bfe1641e..a79cd7e92c5 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -15,6 +15,7 @@ disliked_food = MEAT | DAIRY liked_food = VEGETABLES | FRUIT | GRAIN changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/plant /datum/species/pod/spec_life(mob/living/carbon/human/H) if(H.stat == DEAD) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index ac8ccff9f2e..7eaca3579cf 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -12,6 +12,7 @@ inherent_factions = list("faithless") changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC mutanteyes = /obj/item/organ/eyes/night_vision + species_language_holder = /datum/language_holder/shadowpeople /datum/species/shadow/spec_life(mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index e595f5baba3..9df66901779 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -15,6 +15,7 @@ liked_food = GROSS | MEAT | RAW //They can technically be in an ERT changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN + species_language_holder = /datum/language_holder/skeleton /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index f8e9d5844d9..f97c0b7fcf9 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -18,6 +18,10 @@ /datum/language/beachbum, /datum/language/aphasia, /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, )) /obj/item/organ/tongue/Initialize(mapload) @@ -68,6 +72,21 @@ say_mod = "buzzes" taste_sensitivity = 25 // you eat vomit, this is a mercy modifies_speech = TRUE + var/static/list/languages_possible_fly = typecacheof(list( + /datum/language/common, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, + /datum/language/buzzwords + )) /obj/item/organ/tongue/fly/handle_speech(datum/source, list/speech_args) var/static/regex/fly_buzz = new("z+", "g") @@ -78,6 +97,10 @@ message = fly_buZZ.Replace(message, "ZZZ") speech_args[SPEECH_MESSAGE] = message +/obj/item/organ/tongue/fly/Initialize(mapload) + . = ..() + languages_possible = languages_possible_fly + /obj/item/organ/tongue/abductor name = "superlingual matrix" desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something." @@ -185,10 +208,26 @@ var/chattering = FALSE var/phomeme_type = "sans" var/list/phomeme_types = list("sans", "papyrus") + var/static/list/languages_possible_skeleton = typecacheof(list( + /datum/language/common, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, + /datum/language/calcic + )) /obj/item/organ/tongue/bone/Initialize() . = ..() phomeme_type = pick(phomeme_types) + languages_possible = languages_possible_skeleton /obj/item/organ/tongue/bone/handle_speech(datum/source, list/speech_args) if (chattering) @@ -234,3 +273,30 @@ else new_message += message[i] speech_args[SPEECH_MESSAGE] = new_message + +/obj/item/organ/tongue/ethereal + name = "electric discharger" + desc = "A sophisticated ethereal organ, capable of synthesising speech via electrical discharge." + icon_state = "electrotongue" + say_mod = "crackles" + attack_verb = list("shocked", "jolted", "zapped") + taste_sensitivity = 101 // Not a tongue, they can't taste shit + var/static/list/languages_possible_ethereal = typecacheof(list( + /datum/language/common, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, + /datum/language/voltaic + )) + +/obj/item/organ/tongue/ethereal/Initialize(mapload) + . = ..() + languages_possible = languages_possible_ethereal diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 78a9622a4be..ac2fbc9ade4 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index b406bfa3134..eb32a869da5 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/tgstation.dme b/tgstation.dme index dcac21e4277..c673ef396f7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1919,6 +1919,8 @@ #include "code\modules\keybindings\setup.dm" #include "code\modules\language\aphasia.dm" #include "code\modules\language\beachbum.dm" +#include "code\modules\language\buzzwords.dm" +#include "code\modules\language\calcic.dm" #include "code\modules\language\codespeak.dm" #include "code\modules\language\common.dm" #include "code\modules\language\draconic.dm" @@ -1927,12 +1929,17 @@ #include "code\modules\language\language_holder.dm" #include "code\modules\language\language_menu.dm" #include "code\modules\language\machine.dm" +#include "code\modules\language\moffic.dm" #include "code\modules\language\monkey.dm" #include "code\modules\language\mushroom.dm" #include "code\modules\language\narsian.dm" #include "code\modules\language\piratespeak.dm" +#include "code\modules\language\shadowtongue.dm" #include "code\modules\language\slime.dm" #include "code\modules\language\swarmer.dm" +#include "code\modules\language\sylvan.dm" +#include "code\modules\language\terrum.dm" +#include "code\modules\language\voltaic.dm" #include "code\modules\language\xenocommon.dm" #include "code\modules\library\lib_codex_gigas.dm" #include "code\modules\library\lib_items.dm"