From a9f2b9a52fb7d4699326781e5c7b3aebad67f674 Mon Sep 17 00:00:00 2001 From: Somniworld <43934154+Somniworld@users.noreply.github.com> Date: Sat, 8 Aug 2026 09:59:32 +0200 Subject: [PATCH 1/2] primary entry, needs fixing. --- .../adventurer/types/combat/alchemist.dm | 3 ++ .../adventurer/types/combat/chirurgeon.dm | 3 ++ .../adventurer/types/combat/cleric.dm | 1 + .../adventurer/types/combat/rare/paladin.dm | 1 + .../adventurer/types/pilgrim/physicker.dm | 4 ++ .../job_types/apprentices/clinicapprentice.dm | 3 ++ code/modules/jobs/job_types/church/monk.dm | 8 ++- code/modules/jobs/job_types/church/templar.dm | 1 + .../jobs/job_types/nobility/archivist.dm | 3 +- .../jobs/job_types/nobility/courtphys.dm | 4 ++ .../other/merc_classes/ironmaiden.dm | 3 ++ .../jobs/job_types/serfs/apothecary.dm | 5 ++ code/modules/jobs/job_types/serfs/feldsher.dm | 4 ++ code/modules/language/pharynx.dm | 49 +++++++++++++++++++ .../human/species_types/vulture/_vulture.dm | 2 + 15 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 code/modules/language/pharynx.dm diff --git a/code/modules/jobs/job_types/adventurer/types/combat/alchemist.dm b/code/modules/jobs/job_types/adventurer/types/combat/alchemist.dm index 9f7d75cf712..684d71d38a5 100644 --- a/code/modules/jobs/job_types/adventurer/types/combat/alchemist.dm +++ b/code/modules/jobs/job_types/adventurer/types/combat/alchemist.dm @@ -36,6 +36,9 @@ TRAIT_FORAGER, TRAIT_DEADNOSE ) + languages = list( + /datum/language/pharynx, + ) /datum/outfit/combat/alchemist name = "Alchemist (Adventurer)" diff --git a/code/modules/jobs/job_types/adventurer/types/combat/chirurgeon.dm b/code/modules/jobs/job_types/adventurer/types/combat/chirurgeon.dm index 2edc2e22fe6..3278fb83e1f 100644 --- a/code/modules/jobs/job_types/adventurer/types/combat/chirurgeon.dm +++ b/code/modules/jobs/job_types/adventurer/types/combat/chirurgeon.dm @@ -31,6 +31,9 @@ TRAIT_EMPATH, TRAIT_DEADNOSE, ) + languages = list( + /datum/language/pharynx, + ) /datum/outfit/chirurgeon name = "Chirurgeon (Migrant Wave)" diff --git a/code/modules/jobs/job_types/adventurer/types/combat/cleric.dm b/code/modules/jobs/job_types/adventurer/types/combat/cleric.dm index 56434911a00..789a41fc78a 100644 --- a/code/modules/jobs/job_types/adventurer/types/combat/cleric.dm +++ b/code/modules/jobs/job_types/adventurer/types/combat/cleric.dm @@ -91,6 +91,7 @@ spawned.cmode_music = 'sound/music/cmode/church/CombatNoc.ogg' if(/datum/patron/divine/pestra) spawned.cmode_music = 'sound/music/cmode/adventurer/CombatMonk.ogg' + spawned.grant_language(/datum/language/pharynx) if(/datum/patron/divine/abyssor) spawned.cmode_music = 'sound/music/cmode/church/CombatAbyssor.ogg' spawned.adjust_skill_level(/datum/attribute/skill/labor/fishing, 20) diff --git a/code/modules/jobs/job_types/adventurer/types/combat/rare/paladin.dm b/code/modules/jobs/job_types/adventurer/types/combat/rare/paladin.dm index 1bf3cbf6196..8c958bd032b 100644 --- a/code/modules/jobs/job_types/adventurer/types/combat/rare/paladin.dm +++ b/code/modules/jobs/job_types/adventurer/types/combat/rare/paladin.dm @@ -68,6 +68,7 @@ spawned.cmode_music = 'sound/music/cmode/church/CombatXylix.ogg' if(/datum/patron/divine/pestra) spawned.cmode_music = 'sound/music/cmode/adventurer/CombatMonk.ogg' + spawned.grant_language(/datum/language/pharynx) if(/datum/patron/divine/malum) spawned.cmode_music = 'sound/music/cmode/adventurer/CombatOutlander2.ogg' if(/datum/patron/divine/eora) diff --git a/code/modules/jobs/job_types/adventurer/types/pilgrim/physicker.dm b/code/modules/jobs/job_types/adventurer/types/pilgrim/physicker.dm index f443746fde2..c48192203d5 100644 --- a/code/modules/jobs/job_types/adventurer/types/pilgrim/physicker.dm +++ b/code/modules/jobs/job_types/adventurer/types/pilgrim/physicker.dm @@ -31,6 +31,10 @@ TRAIT_DEADNOSE ) + languages = list( + /datum/language/pharynx, + ) + /datum/outfit/pilgrim/physicker name = "Physicker (Pilgrim)" mask = /obj/item/clothing/face/phys diff --git a/code/modules/jobs/job_types/apprentices/clinicapprentice.dm b/code/modules/jobs/job_types/apprentices/clinicapprentice.dm index 3444f7cf840..e2805cce2bd 100644 --- a/code/modules/jobs/job_types/apprentices/clinicapprentice.dm +++ b/code/modules/jobs/job_types/apprentices/clinicapprentice.dm @@ -59,6 +59,9 @@ TRAIT_FORAGER, TRAIT_EMPATH ) + languages = list( + /datum/language/pharynx, + ) attribute_sheet = /datum/attribute_holder/sheet/job/clinicapprentice attribute_sheet_child = /datum/attribute_holder/sheet/job/clinicapprentice/child diff --git a/code/modules/jobs/job_types/church/monk.dm b/code/modules/jobs/job_types/church/monk.dm index 96b9da78dcd..a8a625a019f 100644 --- a/code/modules/jobs/job_types/church/monk.dm +++ b/code/modules/jobs/job_types/church/monk.dm @@ -135,7 +135,7 @@ spawned.cmode_music = 'sound/music/cmode/church/CombatEora.ogg' if(/datum/patron/divine/noc) spawned.attributes?.add_sheet(/datum/attribute_holder/sheet/job/acolyte/patron/noc) - var/language = pickweight(list("Dwarvish" = 1, "Elvish" = 1, "Hellspeak" = 1, "Zaladin" = 1, "Orcish" = 1,)) + var/language = pickweight(list("Dwarvish" = 1, "Elvish" = 1, "Hellspeak" = 1, "Zaladin" = 1, "Orcish" = 1, "Pharynx" = 1)) switch(language) if("Dwarvish") spawned.grant_language(/datum/language/dwarvish) @@ -162,10 +162,16 @@ to_chat(spawned,span_info("\ I learned the tongue of the savages in my time.") ) + if("Pharynx") + spawned.grant_language(/datum/language/pharynx) + to_chat(spawned,span_info("\ + I learned the tongue of the feculents and the quacks.") + ) spawned.cmode_music = 'sound/music/cmode/church/CombatNoc.ogg' if(/datum/patron/divine/pestra) spawned.attributes?.add_sheet(/datum/attribute_holder/sheet/job/acolyte/patron/pestra) spawned.cmode_music = 'sound/music/cmode/adventurer/CombatMonk.ogg' + spawned.grant_language(/datum/language/pharynx) if(/datum/patron/divine/dendor) spawned.attributes?.add_sheet(/datum/attribute_holder/sheet/job/acolyte/patron/dendor) ADD_TRAIT(spawned, TRAIT_SEEDKNOW, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/church/templar.dm b/code/modules/jobs/job_types/church/templar.dm index 296be1a117d..7f99e8dea9e 100644 --- a/code/modules/jobs/job_types/church/templar.dm +++ b/code/modules/jobs/job_types/church/templar.dm @@ -204,6 +204,7 @@ spawned.attributes?.add_sheet(/datum/attribute_holder/sheet/job/templar/patron/pestra) ADD_TRAIT(spawned, TRAIT_DUALWIELDER, TRAIT_GENERIC) spawned.cmode_music = 'sound/music/cmode/adventurer/CombatMonk.ogg' + spawned.grant_language(/datum/language/pharynx) if(/datum/patron/divine/eora) REMOVE_TRAIT(spawned, TRAIT_VIRGIN, JOB_TRAIT) ADD_TRAIT(spawned, TRAIT_BEAUTIFUL, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/nobility/archivist.dm b/code/modules/jobs/job_types/nobility/archivist.dm index a333f770252..5090db12305 100644 --- a/code/modules/jobs/job_types/nobility/archivist.dm +++ b/code/modules/jobs/job_types/nobility/archivist.dm @@ -44,7 +44,8 @@ /datum/language/newpsydonic, /datum/language/oldpsydonic, /datum/language/orcish, - /datum/language/deepspeak + /datum/language/deepspeak, + /datum/language/pharynx, ) mind_traits = list( diff --git a/code/modules/jobs/job_types/nobility/courtphys.dm b/code/modules/jobs/job_types/nobility/courtphys.dm index 18e143fdcf4..780bbeb177f 100644 --- a/code/modules/jobs/job_types/nobility/courtphys.dm +++ b/code/modules/jobs/job_types/nobility/courtphys.dm @@ -17,6 +17,10 @@ /datum/attribute/skill/labor/farming = 30, ) + languages = list( + /datum/language/pharynx, + ) + /datum/attribute_holder/sheet/job/courtphys/old raw_attribute_list = list( STAT_STRENGTH = -1, diff --git a/code/modules/jobs/job_types/other/merc_classes/ironmaiden.dm b/code/modules/jobs/job_types/other/merc_classes/ironmaiden.dm index bf08e7d6b1e..6c09cd7830b 100644 --- a/code/modules/jobs/job_types/other/merc_classes/ironmaiden.dm +++ b/code/modules/jobs/job_types/other/merc_classes/ironmaiden.dm @@ -33,6 +33,9 @@ TRAIT_DEADNOSE, TRAIT_STEELHEARTED ) + languages = list( + /datum/language/pharynx, + ) /datum/job/advclass/mercenary/ironmaiden/after_spawn(mob/living/carbon/human/spawned, client/player_client) . = ..() diff --git a/code/modules/jobs/job_types/serfs/apothecary.dm b/code/modules/jobs/job_types/serfs/apothecary.dm index 534b1fb909e..3fe371bfda4 100644 --- a/code/modules/jobs/job_types/serfs/apothecary.dm +++ b/code/modules/jobs/job_types/serfs/apothecary.dm @@ -18,6 +18,11 @@ ) + languages = list( + /datum/language/pharynx, + ) + + /datum/attribute_holder/sheet/job/apothecary/old raw_attribute_list = list( STAT_INTELLIGENCE = 3, diff --git a/code/modules/jobs/job_types/serfs/feldsher.dm b/code/modules/jobs/job_types/serfs/feldsher.dm index e6fb061f9d2..94d41d299c7 100644 --- a/code/modules/jobs/job_types/serfs/feldsher.dm +++ b/code/modules/jobs/job_types/serfs/feldsher.dm @@ -19,6 +19,10 @@ /datum/attribute/skill/labor/farming = 30, ) + languages = list( + /datum/language/pharynx, + ) + /datum/attribute_holder/sheet/job/feldsher/old raw_attribute_list = list( STAT_STRENGTH = -1, diff --git a/code/modules/language/pharynx.dm b/code/modules/language/pharynx.dm new file mode 100644 index 00000000000..62482f8114f --- /dev/null +++ b/code/modules/language/pharynx.dm @@ -0,0 +1,49 @@ +/datum/language/pharynx + name = "Pharynx" + desc = "A language developped by medicators to be spoken by physicians worldwide. Legible even when you're suffering from fractures or ruptured arteries." + icon_state = "gibbering" + speech_verb = "spits" + ask_verb = "asks" + exclaim_verb = "belches" + key = "j" + space_chance = 80 + sentence_chance = 5 + between_word_sentence_chance = 0 + between_word_space_chance = 100 + additional_syllable_low = -3 + additional_syllable_high = 1 + default_priority = 80 + default_priority = 80 + mutual_understanding = list( // can understand some orcish with this, the reverse is not true. + datum/language/orcish = 33, + ) + + syllables = list( + "AA", "AN", "AH", "AW", + "BE", "ΔA", "ΔE", "EE", "EΛ", + "EH", "ET", "SE", "HE", + "UH", "TE", "KE", "ΛE", + "OE", "Ω", "OH", + "ST", "ΛI", "SÉ", "WA", + "ME", "EN", "EK", + "ET", "GE", "PO", + "UN", "UΛ", "HA", + "ΠU", "AΞ", "AT", + "ON", "NG", "ZE", + "HEE", "YW","BUH", + "AAN", "AWA", "AHÉ", "AΛS", "ANΔ", + "AFT", "ΔEN", "ΔEH", "ENOH", + "GEN", "ΠAH", "HAA", "HET", "ΠEΔ", + "ING", "KEH", "ΛΛE", "ΛIH", "MAA", + "MEN", "MET", "NΔE", "NEN", "NGE", + "NIE", "ONΔ", "ΩH", "HΔE", "HEN", + "SCH", "SUN", "TEN", "TEH", "UIT", + "BAN", "EEN", "IME", "ΞSE", + "VUN", "YEF", "NΔE", + "HUT", "ING", "FHA", "ΔAA", + "ΔAT", "IET", "STU", "HUN", + "ΔUN", "MUT", "UHA", "ΛUH", + "MAS", "UΛS", "WAS", + "UCH", "EFH", "MEN", "HAS", + "UNΔ", "ΔUH", "VIHA", "VYEN", + ) diff --git a/code/modules/mob/living/carbon/human/species_types/vulture/_vulture.dm b/code/modules/mob/living/carbon/human/species_types/vulture/_vulture.dm index 4d036339162..665f3da6590 100644 --- a/code/modules/mob/living/carbon/human/species_types/vulture/_vulture.dm +++ b/code/modules/mob/living/carbon/human/species_types/vulture/_vulture.dm @@ -115,6 +115,8 @@ . = ..() RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech)) C.grant_language(/datum/language/common) + C.grant_language(/datum/language/pharynx) + /datum/species/medicator/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() From 61f07537732237636fb413279bf900ac4a9e6513 Mon Sep 17 00:00:00 2001 From: Somniworld <43934154+Somniworld@users.noreply.github.com> Date: Sun, 9 Aug 2026 15:19:03 +0200 Subject: [PATCH 2/2] yee haw, fixes --- code/modules/jobs/job_types/nobility/courtphys.dm | 7 ++++--- code/modules/jobs/job_types/serfs/apothecary.dm | 8 +++++--- code/modules/jobs/job_types/serfs/feldsher.dm | 8 +++++--- code/modules/language/pharynx.dm | 4 ++-- vanderlin.dme | 1 + 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/code/modules/jobs/job_types/nobility/courtphys.dm b/code/modules/jobs/job_types/nobility/courtphys.dm index 780bbeb177f..6ab6b7b568c 100644 --- a/code/modules/jobs/job_types/nobility/courtphys.dm +++ b/code/modules/jobs/job_types/nobility/courtphys.dm @@ -17,9 +17,7 @@ /datum/attribute/skill/labor/farming = 30, ) - languages = list( - /datum/language/pharynx, - ) + /datum/attribute_holder/sheet/job/courtphys/old raw_attribute_list = list( @@ -81,6 +79,9 @@ TRAIT_NOBLE_POWER, TRAIT_VIRGIN, ) + languages = list( + /datum/language/pharynx, + ) book_type = /obj/item/recipe_book/medical /datum/job/courtphys/after_spawn(mob/living/carbon/human/spawned, client/player_client) diff --git a/code/modules/jobs/job_types/serfs/apothecary.dm b/code/modules/jobs/job_types/serfs/apothecary.dm index 3fe371bfda4..6adb9187049 100644 --- a/code/modules/jobs/job_types/serfs/apothecary.dm +++ b/code/modules/jobs/job_types/serfs/apothecary.dm @@ -18,9 +18,7 @@ ) - languages = list( - /datum/language/pharynx, - ) + /datum/attribute_holder/sheet/job/apothecary/old @@ -83,6 +81,10 @@ ) book_type = /obj/item/recipe_book/alchemy + languages = list( + /datum/language/pharynx, + ) + /datum/job/apothecary/after_spawn(mob/living/carbon/human/spawned, client/player_client) . = ..() if(spawned.age == AGE_OLD) diff --git a/code/modules/jobs/job_types/serfs/feldsher.dm b/code/modules/jobs/job_types/serfs/feldsher.dm index 94d41d299c7..185d4002ded 100644 --- a/code/modules/jobs/job_types/serfs/feldsher.dm +++ b/code/modules/jobs/job_types/serfs/feldsher.dm @@ -19,9 +19,7 @@ /datum/attribute/skill/labor/farming = 30, ) - languages = list( - /datum/language/pharynx, - ) + /datum/attribute_holder/sheet/job/feldsher/old raw_attribute_list = list( @@ -94,6 +92,10 @@ ) book_type = /obj/item/recipe_book/medical + languages = list( + /datum/language/pharynx, + ) + /datum/outfit/feldsher shoes = /obj/item/clothing/shoes/shortboots shirt = /obj/item/clothing/shirt/undershirt/colored/red diff --git a/code/modules/language/pharynx.dm b/code/modules/language/pharynx.dm index 62482f8114f..264bb94d4a9 100644 --- a/code/modules/language/pharynx.dm +++ b/code/modules/language/pharynx.dm @@ -14,8 +14,8 @@ additional_syllable_high = 1 default_priority = 80 default_priority = 80 - mutual_understanding = list( // can understand some orcish with this, the reverse is not true. - datum/language/orcish = 33, + mutual_understanding = list( // Pharynx is somewhat based on orcish, speakers can understand some of it, the reverse is not true. + /datum/language/orcish = 33, ) syllables = list( diff --git a/vanderlin.dme b/vanderlin.dme index 0837abf405a..27c4d078185 100644 --- a/vanderlin.dme +++ b/vanderlin.dme @@ -3554,6 +3554,7 @@ #include "code\modules\language\newpsydonic.dm" #include "code\modules\language\oldpsydonic.dm" #include "code\modules\language\orc.dm" +#include "code\modules\language\pharynx.dm" #include "code\modules\language\rousman.dm" #include "code\modules\language\sandspeak.dm" #include "code\modules\language\thieves_cant.dm"