"
var/list/replace_letters = list()
-/datum/language/New()
+/datum/prototype/language/New()
if(isnull(id))
id = ckey(name)
-/datum/language/proc/get_random_name(gender, name_count=2, syllable_count=4, syllable_divisor=2)
+/datum/prototype/language/proc/get_random_name(gender, name_count=2, syllable_count=4, syllable_divisor=2)
if(!syllables || !syllables.len)
if(gender==FEMALE)
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
@@ -83,7 +81,7 @@
return "[trim(full_name)]"
-/datum/language/proc/replacesymbols(input)
+/datum/prototype/language/proc/replacesymbols(input)
var/list/transformed = splittext_char(input,"")
if(LAZYLEN(exclude_letters))
for(var/l in transformed)
@@ -94,12 +92,12 @@
transformed[i] = replace_letters[transformed[i]] || transformed[i]
return jointext(transformed, "")
-/datum/language/proc/scramble(input, list/known_languages)
+/datum/prototype/language/proc/scramble(input, list/known_languages)
if(uses_replace)
var/text = replacesymbols(input)
return text
var/understand_chance = 0
- for(var/datum/language/L in known_languages)
+ for(var/datum/prototype/language/L in known_languages)
if(partial_understanding && partial_understanding[L.name])
understand_chance += partial_understanding[L.name]
if(L.partial_understanding && L.partial_understanding[name])
@@ -132,7 +130,7 @@
return scrambled_text
-/datum/language/proc/scramble_word(input)
+/datum/prototype/language/proc/scramble_word(input)
if(!syllables || !syllables.len)
return stars(input)
@@ -167,20 +165,20 @@
return scrambled_text
-/datum/language/proc/format_message(message, verb)
+/datum/prototype/language/proc/format_message(message, verb)
return "[verb], \"[capitalize(message)]\""
-/datum/language/proc/format_message_plain(message, verb)
+/datum/prototype/language/proc/format_message_plain(message, verb)
return "[verb], \"[capitalize(message)]\""
-/datum/language/proc/format_message_radio(message, verb)
+/datum/prototype/language/proc/format_message_radio(message, verb)
return "[verb], \"[capitalize(message)]\""
-/datum/language/proc/get_talkinto_msg_range(message)
+/datum/prototype/language/proc/get_talkinto_msg_range(message)
// if you yell, you'll be heard from two tiles over instead of one
return (copytext_char(message, length_char(message)) == "!") ? 2 : 1
-/datum/language/proc/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
+/datum/prototype/language/proc/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
log_say("(HIVE) [message]", speaker)
if(!speaker_mask) speaker_mask = speaker.name
@@ -189,24 +187,24 @@
for(var/mob/player in GLOB.player_list)
player.hear_broadcast(src, speaker, speaker_mask, message)
-/mob/proc/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
+/mob/proc/hear_broadcast(var/datum/prototype/language/language, var/mob/speaker, var/speaker_name, var/message)
if((language in languages) && language.check_special_condition(src))
var/msg = "[language.name], [speaker_name] [message]"
to_chat(src, msg)
-/mob/new_player/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
+/mob/new_player/hear_broadcast(var/datum/prototype/language/language, var/mob/speaker, var/speaker_name, var/message)
return
-/mob/observer/dead/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
+/mob/observer/dead/hear_broadcast(var/datum/prototype/language/language, var/mob/speaker, var/speaker_name, var/message)
if(speaker.name == speaker_name || antagHUD)
to_chat(src, "[language.name], [speaker_name] ([ghost_follow_link(speaker, src)]) [message]")
else
to_chat(src, "[language.name], [speaker_name] [message]")
-/datum/language/proc/check_special_condition(var/mob/other)
+/datum/prototype/language/proc/check_special_condition(var/mob/other)
return 1
-/datum/language/proc/get_spoken_verb(var/msg_end)
+/datum/prototype/language/proc/get_spoken_verb(var/msg_end)
switch(msg_end)
if("!")
return pick(exclaim_verb)
@@ -214,7 +212,7 @@
return pick(ask_verb)
return pick(speech_verb)
-/datum/language/proc/can_speak_special(var/mob/speaker)
+/datum/prototype/language/proc/can_speak_special(var/mob/speaker)
. = TRUE
if(name != "Noise") // Audible Emotes
if(ishuman(speaker))
@@ -234,7 +232,7 @@
// Language handling.
/mob/proc/add_language(var/language)
- var/datum/language/new_language = SScharacters.resolve_language(language)
+ var/datum/prototype/language/new_language = RSlanguages.fetch(language)
if(!istype(new_language) || (new_language in languages))
return 0
@@ -243,27 +241,27 @@
return 1
/mob/proc/remove_language(var/rem_language)
- var/datum/language/L = SScharacters.resolve_language(rem_language)
+ var/datum/prototype/language/L = RSlanguages.fetch(rem_language)
. = (L in languages)
languages.Remove(L)
/mob/living/remove_language(rem_language)
- var/datum/language/L = SScharacters.resolve_language(rem_language)
+ var/datum/prototype/language/L = RSlanguages.fetch(rem_language)
if(default_language == L)
default_language = null
return ..()
// Can we speak this language, as opposed to just understanding it?
-/mob/proc/can_speak(datum/language/speaking)
+/mob/proc/can_speak(datum/prototype/language/speaking)
//Prevents someone from speaking a null language.
if(!speaking)
log_debug(SPAN_DEBUG("[src] attempted to speak a null language."))
return 0
- if(speaking == SScharacters.resolve_language_name("Noise"))
+ if(speaking == RSlanguages.legacy_resolve_language_name("Noise"))
return 1
- if (only_species_language && speaking != SScharacters.resolve_language_name(species_language))
+ if (only_species_language && speaking != RSlanguages.legacy_resolve_language_name(species_language))
return 0
if(speaking.can_speak_special(src))
@@ -289,7 +287,7 @@
var/dat = "Known Languages
"
- for(var/datum/language/L in languages)
+ for(var/datum/prototype/language/L in languages)
if(!(L.language_flags & LANGUAGE_NONGLOBAL))
dat += "[L.name] ([get_language_prefix()][L.key])
[L.desc]
"
@@ -302,7 +300,7 @@
if(default_language)
dat += "Current default language: [default_language] - reset
"
- for(var/datum/language/L in languages)
+ for(var/datum/prototype/language/L in languages)
if(!(L.language_flags & LANGUAGE_NONGLOBAL))
if(L == default_language)
dat += "[L.name] ([get_language_prefix()][L.key]) - default - reset
[L.desc]
"
@@ -317,11 +315,11 @@
if(href_list["default_lang"])
if(href_list["default_lang"] == "reset")
if (species_language)
- set_default_language(SScharacters.resolve_language_name(species_language))
+ set_default_language(RSlanguages.legacy_resolve_language_name(species_language))
else
set_default_language(null)
else
- var/datum/language/L = locate(href_list["default_lang"])
+ var/datum/prototype/language/L = locate(href_list["default_lang"])
if(L && (L in languages))
set_default_language(L)
check_languages()
@@ -330,7 +328,7 @@
return ..()
/proc/transfer_languages(var/mob/source, var/mob/target, var/except_flags)
- for(var/datum/language/L in source.languages)
+ for(var/datum/prototype/language/L in source.languages)
if(L.language_flags & except_flags)
continue
target.add_language(L.name)
diff --git a/code/modules/language/languages/abstract.dm b/code/modules/language/languages/abstract.dm
index 64e81672f18..bd96a7d1c11 100644
--- a/code/modules/language/languages/abstract.dm
+++ b/code/modules/language/languages/abstract.dm
@@ -1,29 +1,29 @@
// Noise "language", for audible emotes.
-/datum/language/noise
+/datum/prototype/language/noise
id = LANGUAGE_ID_NOISE
name = "Noise"
desc = "Noises"
key = ""
language_flags = LANGUAGE_RESTRICTED|LANGUAGE_NONGLOBAL|LANGUAGE_INNATE|LANGUAGE_NO_TALK_MSG|LANGUAGE_NO_STUTTER
-/datum/language/noise/format_message(message, verb)
+/datum/prototype/language/noise/format_message(message, verb)
return "[message]"
-/datum/language/noise/format_message_plain(message, verb)
+/datum/prototype/language/noise/format_message_plain(message, verb)
return message
-/datum/language/noise/format_message_radio(message, verb)
+/datum/prototype/language/noise/format_message_radio(message, verb)
return "[message]"
-/datum/language/noise/get_talkinto_msg_range(message)
+/datum/prototype/language/noise/get_talkinto_msg_range(message)
// if you make a loud noise (screams etc), you'll be heard from 4 tiles over instead of two
return (copytext(message, length(message)) == "!") ? 4 : 2
-/datum/language/noise/can_speak_special(var/mob/speaker)
+/datum/prototype/language/noise/can_speak_special(var/mob/speaker)
return TRUE //Audible emotes
// Silly language for those times when you try to talk a languague you normally can't
-/datum/language/gibberish
+/datum/prototype/language/gibberish
id = LANGUAGE_ID_GIBBERISH
name = LANGUAGE_GIBBERISH
desc = "A completely incomprehensible language."
@@ -92,5 +92,5 @@
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi"
)
-/datum/language/gibberish/can_speak_special(var/mob/speaker)
+/datum/prototype/language/gibberish/can_speak_special(var/mob/speaker)
return TRUE //Anyone can speak gibberish
diff --git a/code/modules/language/languages/animal.dm b/code/modules/language/languages/animal.dm
index 1730ff3c264..04b5dc10029 100644
--- a/code/modules/language/languages/animal.dm
+++ b/code/modules/language/languages/animal.dm
@@ -1,4 +1,4 @@
-/datum/language/corgi
+/datum/prototype/language/corgi
id = LANGUAGE_ID_DOG
name = "Dog"
translation_class = TRANSLATION_CLASS_ANIMAL
@@ -12,7 +12,7 @@
syllables = list("bark", "woof", "bowwow", "yap", "arf")
shorthand = "DOG"
-/datum/language/cat
+/datum/prototype/language/cat
id = LANGUAGE_ID_CAT
name = "Cat"
translation_class = TRANSLATION_CLASS_ANIMAL
@@ -26,7 +26,7 @@
syllables = list("meow", "mrowl", "purr", "meow", "meow", "meow")
shorthand = "CAT"
-/datum/language/mouse
+/datum/prototype/language/mouse
id = LANGUAGE_ID_MOUSE
name = "Mouse"
translation_class = TRANSLATION_CLASS_ANIMAL
@@ -40,7 +40,7 @@
syllables = list("squeak") // , "gripes", "oi", "meow")
shorthand = "MSE"
-/datum/language/bird
+/datum/prototype/language/bird
id = LANGUAGE_ID_BIRD
name = "Bird"
translation_class = TRANSLATION_CLASS_ANIMAL
diff --git a/code/modules/language/languages/antagonist/borer.dm b/code/modules/language/languages/antagonist/borer.dm
index 066db06e8ad..a43c0bd436d 100644
--- a/code/modules/language/languages/antagonist/borer.dm
+++ b/code/modules/language/languages/antagonist/borer.dm
@@ -1,4 +1,4 @@
-/datum/language/corticalborer
+/datum/prototype/language/corticalborer
id = LANGUAGE_ID_BORER
name = "Cortical Link"
desc = "Cortical borers possess a strange link between their tiny minds."
@@ -9,7 +9,7 @@
key = "" //!! THIS DOES NOT HAVE A LANGUAGE KEY IF YOU SOMEHOW MIRACULOUSLY GET ANTAGS WORKING ON RP BEFORE WE TRANSITION TO SS14 IN LIKE 2025 PUT ONE IN.
language_flags = LANGUAGE_RESTRICTED | LANGUAGE_HIVEMIND
-/datum/language/corticalborer/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
+/datum/prototype/language/corticalborer/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
var/mob/living/simple_mob/animal/borer/B
diff --git a/code/modules/language/languages/antagonist/changeling.dm b/code/modules/language/languages/antagonist/changeling.dm
index 77991471c67..234e3f79297 100644
--- a/code/modules/language/languages/antagonist/changeling.dm
+++ b/code/modules/language/languages/antagonist/changeling.dm
@@ -1,4 +1,4 @@
-/datum/language/ling
+/datum/prototype/language/ling
id = LANGUAGE_ID_CHANGELING
name = LANGUAGE_CHANGELING
desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance."
@@ -7,7 +7,7 @@
key = "g"
language_flags = LANGUAGE_RESTRICTED | LANGUAGE_HIVEMIND
-/datum/language/ling/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
+/datum/prototype/language/ling/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
if(speaker.mind && speaker.mind.changeling)
..(speaker,message,speaker.mind.changeling.changelingID)
diff --git a/code/modules/language/languages/antagonist/cult.dm b/code/modules/language/languages/antagonist/cult.dm
index 46a0356bbdc..1983c262017 100644
--- a/code/modules/language/languages/antagonist/cult.dm
+++ b/code/modules/language/languages/antagonist/cult.dm
@@ -1,4 +1,4 @@
-/datum/language/cultcommon
+/datum/prototype/language/cultcommon
id = LANGUAGE_ID_CULT
name = LANGUAGE_CULT
translation_class = TRANSLATION_CLASS_ARCANE
@@ -18,7 +18,7 @@
"gal'h'rfikk", "harfrandid", "mud'gib", "il", "fuu", "ma'jin", "dedo", "ol'btoh", "n'ath", "reth", "sh'yro", "eth", \
"d'rekkathnor", "khari'd", "gual'te", "nikka", "nikt'o", "barada", "kla'atu", "barhah", "hra" ,"zar'garis", "spiri", "malum")
-/datum/language/cult
+/datum/prototype/language/cult
id = LANGUAGE_ID_CULT_COMMUNE
name = LANGUAGE_OCCULT
desc = "The initiated can share their thoughts by means defying all reason."
diff --git a/code/modules/language/languages/antagonist/swarmbot.dm b/code/modules/language/languages/antagonist/swarmbot.dm
index 170118079c9..486d3c21050 100644
--- a/code/modules/language/languages/antagonist/swarmbot.dm
+++ b/code/modules/language/languages/antagonist/swarmbot.dm
@@ -1,4 +1,4 @@
-/datum/language/swarmbot
+/datum/prototype/language/swarmbot
id = LANGUAGE_ID_SWARMBOT
name = LANGUAGE_SWARMBOT
translation_class = TRANSLATION_CLASS_MACHINE | TRANSLATION_CLASS_ENCRYPTED
diff --git a/code/modules/language/languages/antagonist/xenomorph.dm b/code/modules/language/languages/antagonist/xenomorph.dm
index 8d885ea2cea..16d1da49ac2 100644
--- a/code/modules/language/languages/antagonist/xenomorph.dm
+++ b/code/modules/language/languages/antagonist/xenomorph.dm
@@ -1,4 +1,4 @@
-/datum/language/xenocommon
+/datum/prototype/language/xenocommon
id = LANGUAGE_ID_XENOMORPH
name = SPECIES_XENO
translation_class = TRANSLATION_CLASS_MONSTER | TRANSLATION_CLASS_LEVEL_3
@@ -12,7 +12,7 @@
syllables = list("sss","sSs","SSS")
shorthand = "XENO"
-/datum/language/xenos
+/datum/prototype/language/xenos
id = LANGUAGE_ID_XENOMORPH_HIVEMIND
name = "Hivemind"
desc = "Xenomorphs have the strange ability to commune over a psychic hivemind."
@@ -23,7 +23,7 @@
key = "x"
language_flags = LANGUAGE_RESTRICTED | LANGUAGE_HIVEMIND
-/datum/language/xenos/check_special_condition(var/mob/other)
+/datum/prototype/language/xenos/check_special_condition(var/mob/other)
var/mob/living/carbon/M = other
if(!istype(M))
diff --git a/code/modules/language/languages/core.dm b/code/modules/language/languages/core.dm
index 202cc531b4a..2774de5ce1d 100644
--- a/code/modules/language/languages/core.dm
+++ b/code/modules/language/languages/core.dm
@@ -1,5 +1,5 @@
// 'basic' language; spoken by default.
-/datum/language/common
+/datum/prototype/language/common
id = LANGUAGE_ID_COMMON
name = LANGUAGE_GALCOM
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_LANGUAGE
@@ -15,7 +15,7 @@
partial_understanding = list(LANGUAGE_SKRELLIAN = 30, LANGUAGE_SOL_COMMON = 30)
shorthand = null // shorthand disabled - unnecessarily spammy.
-/datum/language/machine
+/datum/prototype/language/machine
id = LANGUAGE_ID_EAL
name = LANGUAGE_EAL
translation_class = (TRANSLATION_CLASS_DEFAULT_CORE_LANGUAGE | TRANSLATION_CLASS_MACHINE)
@@ -30,13 +30,13 @@
space_chance = 10
shorthand = "EAL"
-/datum/language/machine/get_random_name()
+/datum/prototype/language/machine/get_random_name()
if(prob(70))
return "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
else
return pick(GLOB.ai_names)
-/datum/language/sign
+/datum/prototype/language/sign
id = LANGUAGE_ID_SIGN
name = LANGUAGE_SIGN
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_LANGUAGE
@@ -47,6 +47,6 @@
language_flags = LANGUAGE_SIGNLANG|LANGUAGE_NO_STUTTER|LANGUAGE_NONVERBAL
shorthand = "SIGN"
-/datum/language/sign/can_speak_special(var/mob/speaker) // TODO: If ever we make external organs assist languages, convert this over to the new format
+/datum/prototype/language/sign/can_speak_special(var/mob/speaker) // TODO: If ever we make external organs assist languages, convert this over to the new format
var/obj/item/organ/external/hand/hands = locate() in speaker //you can't sign without hands
return (hands || !iscarbon(speaker))
diff --git a/code/modules/language/languages/event.dm b/code/modules/language/languages/event.dm
index 6ed218ebe2f..eccf63648a9 100644
--- a/code/modules/language/languages/event.dm
+++ b/code/modules/language/languages/event.dm
@@ -1,6 +1,6 @@
// todo: dynamic language creation system we shouldn't have this
//For your event purposes.
-/datum/language/occursus
+/datum/prototype/language/occursus
id = LANGUAGE_ID_EVENT_1
name = LANGUAGE_EVENT1
desc = "The Powers That Be have seen it fit to grace you with a special language that sounds like... something. This description should be overridden by the time you see this."
@@ -13,7 +13,7 @@
syllables = list("chan","ange","thi","se")
//for your antag purposes.
-/datum/language/minbus
+/datum/prototype/language/minbus
id = LANGUAGE_ID_EVENT_2
name = LANGUAGE_MINBUS
desc = "The Powers That Be have seen it fit to grace you with a special language that sounds like Russian for some reason."
diff --git a/code/modules/language/languages/galactic.dm b/code/modules/language/languages/galactic.dm
index 8db85d44d59..86f4a2bfa31 100644
--- a/code/modules/language/languages/galactic.dm
+++ b/code/modules/language/languages/galactic.dm
@@ -1,5 +1,5 @@
// Galactic common languages (systemwide accepted standards).
-/datum/language/trader
+/datum/prototype/language/trader
id = LANGUAGE_ID_TRADEBAND
name = LANGUAGE_TRADEBAND
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_LANGUAGE
@@ -17,7 +17,7 @@
// Criminal language.
-/datum/language/gutter
+/datum/prototype/language/gutter
name = LANGUAGE_GUTTER
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_LANGUAGE // fuck you you lost your machine_understands immunity
desc = "Gutter originated as a Thieves' Cant of sorts during the early colonization era. The language eventually spread from the cartels and triads to the disenfranchised people of the Bowl."
diff --git a/code/modules/language/languages/monkey.dm b/code/modules/language/languages/monkey.dm
index cf0414b180a..323423f895a 100644
--- a/code/modules/language/languages/monkey.dm
+++ b/code/modules/language/languages/monkey.dm
@@ -1,4 +1,4 @@
-/datum/language/human/monkey
+/datum/prototype/language/human/monkey
id = LANGUAGE_ID_CHIMPANZEE
key = null
name = "Chimpanzee"
@@ -11,7 +11,7 @@
language_flags = LANGUAGE_RESTRICTED
shorthand = "MONK"
-/datum/language/skrell/monkey
+/datum/prototype/language/skrell/monkey
id = LANGUAGE_ID_NEAERA
key = null
name = SPECIES_MONKEY_SKRELL
@@ -21,7 +21,7 @@
language_flags = LANGUAGE_RESTRICTED
shorthand = "NEA"
-/datum/language/unathi/monkey
+/datum/prototype/language/unathi/monkey
id = LANGUAGE_ID_STOK
key = null
name = SPECIES_MONKEY_UNATHI
@@ -31,7 +31,7 @@
language_flags = LANGUAGE_RESTRICTED
shorthand = "STOK"
-/datum/language/tajaran/monkey
+/datum/prototype/language/tajaran/monkey
id = LANGUAGE_ID_FARWA
key = null
name = SPECIES_MONKEY_TAJ
diff --git a/code/modules/language/languages/silicons.dm b/code/modules/language/languages/silicons.dm
index 9a921a0f87f..97fe5a7e8e9 100644
--- a/code/modules/language/languages/silicons.dm
+++ b/code/modules/language/languages/silicons.dm
@@ -1,4 +1,4 @@
-/datum/language/binary
+/datum/prototype/language/binary
id = LANGUAGE_ID_SILICON_BINARY
name = "Robot Talk"
desc = "Most human stations support free-use communications protocols and routing hubs for synthetic use."
@@ -10,7 +10,7 @@
language_flags = LANGUAGE_RESTRICTED | LANGUAGE_HIVEMIND
var/drone_only
-/datum/language/binary/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
+/datum/prototype/language/binary/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
if(!speaker.binarycheck())
return
@@ -57,7 +57,7 @@
var/datum/robot_component/C = R.components["comms"]
R.cell_use_power(C.active_usage)
-/datum/language/binary/drone
+/datum/prototype/language/binary/drone
id = LANGUAGE_ID_DRONE_BINARY
name = "Drone Talk"
desc = "A heavily encoded damage control coordination stream."
diff --git a/code/modules/language/languages/species/_species.dm b/code/modules/language/languages/species/_species.dm
index fe074fdfdce..d268d0e0c5a 100644
--- a/code/modules/language/languages/species/_species.dm
+++ b/code/modules/language/languages/species/_species.dm
@@ -1,5 +1,5 @@
/**
* species/racial language
*/
-/datum/language/species
- abstract_type = /datum/language/species
+/datum/prototype/language/species
+ abstract_type = /datum/prototype/language/species
diff --git a/code/modules/language/languages/species/adherent.dm b/code/modules/language/languages/species/adherent.dm
index db5bb5a131e..aab398c3734 100644
--- a/code/modules/language/languages/species/adherent.dm
+++ b/code/modules/language/languages/species/adherent.dm
@@ -1,4 +1,4 @@
-/datum/language/adherent
+/datum/prototype/language/adherent
id = LANGUAGE_ID_ADHERENT
name = LANGUAGE_ADHERENT
translation_class = TRANSLATION_CLASS_MACHINE | TRANSLATION_CLASS_ENCRYPTED
diff --git a/code/modules/language/languages/species/akula.dm b/code/modules/language/languages/species/akula.dm
index 98b637b3c13..28b071ad1a2 100644
--- a/code/modules/language/languages/species/akula.dm
+++ b/code/modules/language/languages/species/akula.dm
@@ -1,4 +1,4 @@
-/datum/language/akula
+/datum/prototype/language/akula
id = LANGUAGE_ID_AKULA
name = LANGUAGE_AKULA
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/alraune.dm b/code/modules/language/languages/species/alraune.dm
index 21433202df5..38091d184ff 100644
--- a/code/modules/language/languages/species/alraune.dm
+++ b/code/modules/language/languages/species/alraune.dm
@@ -1,5 +1,5 @@
// Alraune language that's literally just bushes rubbing together.
-/datum/language/vernal
+/datum/prototype/language/vernal
id = LANGUAGE_ID_VERNAL
name = LANGUAGE_VERNAL
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/birdsong.dm b/code/modules/language/languages/species/birdsong.dm
index 64ebd2ebdc3..496be866e7c 100644
--- a/code/modules/language/languages/species/birdsong.dm
+++ b/code/modules/language/languages/species/birdsong.dm
@@ -1,4 +1,4 @@
-/datum/language/birdsong
+/datum/prototype/language/birdsong
id = LANGUAGE_ID_BIRDSONG
name = LANGUAGE_BIRDSONG
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/celestial.dm b/code/modules/language/languages/species/celestial.dm
index e92c3454292..2c304f89aa3 100644
--- a/code/modules/language/languages/species/celestial.dm
+++ b/code/modules/language/languages/species/celestial.dm
@@ -1,4 +1,4 @@
-/datum/language/demon
+/datum/prototype/language/demon
id = LANGUAGE_ID_DAEDAL_DREMACHIR
name = LANGUAGE_DAEMON
//! set to common due to overwhelming playerbase saturation.
@@ -13,7 +13,7 @@
"dttm","aggr","uujl","hjjifr","wwuthaav",)
shorthand = "DEM"
-/datum/language/angel
+/datum/prototype/language/angel
id = LANGUAGE_ID_DAEDAL_AURIL
name = LANGUAGE_ENOCHIAN
//! trialling putting it on rare; put it to common if everyone uses it
diff --git a/code/modules/language/languages/species/diona.dm b/code/modules/language/languages/species/diona.dm
index 0bc6e810003..e4507f7b4a3 100644
--- a/code/modules/language/languages/species/diona.dm
+++ b/code/modules/language/languages/species/diona.dm
@@ -1,4 +1,4 @@
-/datum/language/diona_local
+/datum/prototype/language/diona_local
id = LANGUAGE_ID_DIONA
name = LANGUAGE_ROOTLOCAL
translation_class = TRANSLATION_CLASS_DEFAULT_RARE_RACE
@@ -12,12 +12,12 @@
syllables = list("hs","zt","kr","st","sh")
shorthand = "DIO"
-/datum/language/diona_local/get_random_name()
+/datum/prototype/language/diona_local/get_random_name()
var/new_name = "[pick(list("To Sleep Beneath","Wind Over","Embrace of","Dreams of","Witnessing","To Walk Beneath","Approaching the"))]"
new_name += " [pick(list("the Void","the Sky","Encroaching Night","Planetsong","Starsong","the Wandering Star","the Empty Day","Daybreak","Nightfall","the Rain"))]"
return new_name
-/datum/language/diona_global
+/datum/prototype/language/diona_global
id = LANGUAGE_ID_DIONA_HIVEMIND
name = LANGUAGE_ROOTGLOBAL
desc = "A complex language known instinctively by Dionaea, 'spoken' by emitting modulated radio waves. This version uses low frequency waves for slow communication at long ranges."
diff --git a/code/modules/language/languages/species/human.dm b/code/modules/language/languages/species/human.dm
index 0cfc81493ca..35bde5635b9 100644
--- a/code/modules/language/languages/species/human.dm
+++ b/code/modules/language/languages/species/human.dm
@@ -1,4 +1,4 @@
-/datum/language/human
+/datum/prototype/language/human
id = LANGUAGE_ID_HUMAN
name = LANGUAGE_SOL_COMMON
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -11,7 +11,7 @@
//syllables are at the bottom of the file
shorthand = "SC"
-/datum/language/human/get_random_name(gender)
+/datum/prototype/language/human/get_random_name(gender)
if (prob(80))
if(gender==FEMALE)
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
@@ -20,7 +20,7 @@
else
return ..()
-/datum/language/slavic
+/datum/prototype/language/slavic
id = LANGUAGE_ID_HUMAN_SLAVIC
name = LANGUAGE_SLAVIC
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -48,7 +48,7 @@
http://www.sttmedia.com/syllablefrequency-french
http://www.chinahighlights.com/travelguide/learning-chinese/pinyin-syllables.htm
*/
-/datum/language/human/syllables = list(
+/datum/prototype/language/human/syllables = list(
"a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao",
"bie", "bin", "bing", "bo", "bu", "ca", "cai", "can", "cang", "cao", "ce", "cei", "cen", "ceng", "cha", "chai",
"chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", "chua", "chuai", "chuan", "chuang", "chui", "chun",
diff --git a/code/modules/language/languages/species/keisani.dm b/code/modules/language/languages/species/keisani.dm
index 4615e765239..03063db6770 100644
--- a/code/modules/language/languages/species/keisani.dm
+++ b/code/modules/language/languages/species/keisani.dm
@@ -1,4 +1,4 @@
-/datum/language/species/keisani
+/datum/prototype/language/species/keisani
id = LANGUAGE_ID_KEISANI
name = LANGUAGE_KEISANI
translation_class = TRANSLATION_CLASS_DEFAULT_RARE_RACE
diff --git a/code/modules/language/languages/species/krisitik.dm b/code/modules/language/languages/species/krisitik.dm
index f20761bd1cf..91958d9d0d1 100644
--- a/code/modules/language/languages/species/krisitik.dm
+++ b/code/modules/language/languages/species/krisitik.dm
@@ -1,4 +1,4 @@
-/datum/language/squeakish
+/datum/prototype/language/squeakish
id = LANGUAGE_ID_SQUEAKISH
name = LANGUAGE_SQUEAKISH
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/moth.dm b/code/modules/language/languages/species/moth.dm
index e1b2173aae8..e2709ee234f 100644
--- a/code/modules/language/languages/species/moth.dm
+++ b/code/modules/language/languages/species/moth.dm
@@ -1,4 +1,4 @@
-/datum/language/species/moth
+/datum/prototype/language/species/moth
id = LANGUAGE_ID_LUINIMMA
name = LANGUAGE_LUINIMMA
translation_class = TRANSLATION_CLASS_DEFAULT_RARE_RACE
@@ -39,7 +39,7 @@
partial_understanding = list()
shorthand = "LUI"
-/datum/language/species/moth/get_random_name(gender, name_count = 2, syllable_count= 4 , syllable_divisor = 2)
+/datum/prototype/language/species/moth/get_random_name(gender, name_count = 2, syllable_count= 4 , syllable_divisor = 2)
var/list/names = GLOB.moth_lore_data["name"]
var/list/occupations = GLOB.moth_lore_data["profession"]
var/i
diff --git a/code/modules/language/languages/species/naramadi.dm b/code/modules/language/languages/species/naramadi.dm
index 3d6bd333453..6c1e594a3f7 100644
--- a/code/modules/language/languages/species/naramadi.dm
+++ b/code/modules/language/languages/species/naramadi.dm
@@ -1,4 +1,4 @@
-/datum/language/sergal
+/datum/prototype/language/sergal
id = LANGUAGE_ID_NARAMADI
name = LANGUAGE_SAGARU
translation_class = TRANSLATION_CLASS_DEFAULT_RARE_RACE
diff --git a/code/modules/language/languages/species/phoronoid.dm b/code/modules/language/languages/species/phoronoid.dm
index e7e8bbc7810..b2fec110e2c 100644
--- a/code/modules/language/languages/species/phoronoid.dm
+++ b/code/modules/language/languages/species/phoronoid.dm
@@ -1,4 +1,4 @@
-/datum/language/bones
+/datum/prototype/language/bones
id = LANGUAGE_ID_PHORONOID
name = LANGUAGE_BONES
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/promethean.dm b/code/modules/language/languages/species/promethean.dm
index 9c2829fdc52..6961c99ba70 100644
--- a/code/modules/language/languages/species/promethean.dm
+++ b/code/modules/language/languages/species/promethean.dm
@@ -1,4 +1,4 @@
-/datum/language/promethean
+/datum/prototype/language/promethean
id = LANGUAGE_ID_PROMETHEAN
name = LANGUAGE_PROMETHEAN
desc = "A complex language of prometheans, composed of blorbling noises and bioluminescent signals."
diff --git a/code/modules/language/languages/species/scori.dm b/code/modules/language/languages/species/scori.dm
index 11030dab393..90cb76a6ecf 100644
--- a/code/modules/language/languages/species/scori.dm
+++ b/code/modules/language/languages/species/scori.dm
@@ -1,4 +1,4 @@
-/datum/language/scori
+/datum/prototype/language/scori
id = LANGUAGE_ID_SCORI
name = LANGUAGE_SCORI
language_flags = LANGUAGE_WHITELISTED
diff --git a/code/modules/language/languages/species/shadekin.dm b/code/modules/language/languages/species/shadekin.dm
index a19d49c909e..e7f772be84b 100644
--- a/code/modules/language/languages/species/shadekin.dm
+++ b/code/modules/language/languages/species/shadekin.dm
@@ -1,4 +1,4 @@
-/datum/language/shadekin
+/datum/prototype/language/shadekin
id = LANGUAGE_ID_SHADEKIN_HIVEMIND
name = LANGUAGE_SHADEKIN
desc = "Shadekin seem to always know what the others are thinking. This is probably why."
diff --git a/code/modules/language/languages/species/skrell.dm b/code/modules/language/languages/species/skrell.dm
index 5c8b65ae122..e64b127b810 100644
--- a/code/modules/language/languages/species/skrell.dm
+++ b/code/modules/language/languages/species/skrell.dm
@@ -1,4 +1,4 @@
-/datum/language/skrell
+/datum/prototype/language/skrell
id = LANGUAGE_ID_SKRELL
name = LANGUAGE_SKRELLIAN
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -14,7 +14,7 @@
shorthand = "SKRL"
-/datum/language/skrellfar
+/datum/prototype/language/skrellfar
id = LANGUAGE_ID_SKRELL_ALT
name = LANGUAGE_SKRELLIANFAR
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -30,7 +30,7 @@
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix", "...", "oo", "q", "nq", "x", "xq", "ll", "...", "...", "...") //should sound like there's holes in it
shorthand = "SKRLFR"
-/datum/language/skrell/get_random_name(gender)
+/datum/prototype/language/skrell/get_random_name(gender)
var/list/first_name = GLOB.skrell_first_names
var/list/last_name = GLOB.skrell_last_names
return "[pick(first_name)] [pick(last_name)]"
diff --git a/code/modules/language/languages/species/tajaran.dm b/code/modules/language/languages/species/tajaran.dm
index ea3dcc4e196..c4cf6536bff 100644
--- a/code/modules/language/languages/species/tajaran.dm
+++ b/code/modules/language/languages/species/tajaran.dm
@@ -1,4 +1,4 @@
-/datum/language/tajaran
+/datum/prototype/language/tajaran
id = LANGUAGE_ID_TAJARAN
name = LANGUAGE_SIIK
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -14,7 +14,7 @@
"hal","ket","jurl","mah","tul","cresh","azu","ragh","mro","mra","mrro","mrra")
shorthand = "MAAS"
-/datum/language/tajaran/get_random_name(var/gender)
+/datum/prototype/language/tajaran/get_random_name(var/gender)
var/new_name = ..(gender,1)
if(prob(50))
new_name += " [pick(list("Hadii","Kaytam","Nazkiin","Zhan-Khazan","Hharar","Njarir'Akhan","Faaira'Nrezi","Rhezar","Mi'dynh","Rrhazkal","Bayan","Al'Manq","Mi'jri","Chur'eech","Sanu'dra","Ii'rka"))]"
@@ -22,7 +22,7 @@
new_name += " [..(gender,1)]"
return new_name
-/datum/language/tajaranakhani
+/datum/prototype/language/tajaranakhani
id = LANGUAGE_ID_TAJARAN_ALT
name = LANGUAGE_AKHANI
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -39,7 +39,7 @@
"nai","ou","kah","oa","ama","uuk","bel","chi","ayt","kay","kas","akor","tam","yir","enai")
shorthand = "AKH"
-/datum/language/tajsign
+/datum/prototype/language/tajsign
id = LANGUAGE_ID_TAJARAN_SIGN
name = LANGUAGE_SIIK_TAJR
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -50,7 +50,7 @@
language_flags = LANGUAGE_WHITELISTED | LANGUAGE_SIGNLANG | LANGUAGE_NO_STUTTER | LANGUAGE_NONVERBAL
shorthand = "TAJR"
-/datum/language/tajsign/can_speak_special(var/mob/speaker) // TODO: If ever we make external organs assist languages, convert this over to the new format
+/datum/prototype/language/tajsign/can_speak_special(var/mob/speaker) // TODO: If ever we make external organs assist languages, convert this over to the new format
var/list/allowed_species = list(SPECIES_TAJ, SPECIES_TESHARI) // Need a tail and ears and such to use this.
if(iscarbon(speaker))
var/obj/item/organ/external/hand/hands = locate() in speaker //you can't sign without hands
diff --git a/code/modules/language/languages/species/teshari.dm b/code/modules/language/languages/species/teshari.dm
index ca7e4d81bcc..2d7f93d806c 100644
--- a/code/modules/language/languages/species/teshari.dm
+++ b/code/modules/language/languages/species/teshari.dm
@@ -1,4 +1,4 @@
-/datum/language/teshari
+/datum/prototype/language/teshari
id = LANGUAGE_ID_TESHARI
name = LANGUAGE_SCHECHI
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
@@ -16,5 +16,5 @@
)
shorthand = "SCH"
-/datum/language/teshari/get_random_name(gender)
+/datum/prototype/language/teshari/get_random_name(gender)
return ..(gender, 2, 4, 1.5)
diff --git a/code/modules/language/languages/species/unathi.dm b/code/modules/language/languages/species/unathi.dm
index b40bc5d6ed7..59d673065a4 100644
--- a/code/modules/language/languages/species/unathi.dm
+++ b/code/modules/language/languages/species/unathi.dm
@@ -1,4 +1,4 @@
-/datum/language/unathi
+/datum/prototype/language/unathi
id = LANGUAGE_ID_UNATHI
name = LANGUAGE_UNATHI
translation_class = TRANSLATION_CLASS_DEFAULT_CORE_RACE
@@ -20,7 +20,7 @@
)
shorthand = "ST"
-/datum/language/unathi/get_random_name()
+/datum/prototype/language/unathi/get_random_name()
var/new_name = ..()
while(findtextEx(new_name,"sss",1,null))
diff --git a/code/modules/language/languages/species/vasilissan.dm b/code/modules/language/languages/species/vasilissan.dm
index 750d58d0fbd..56df2085e35 100644
--- a/code/modules/language/languages/species/vasilissan.dm
+++ b/code/modules/language/languages/species/vasilissan.dm
@@ -1,4 +1,4 @@
-/datum/language/bug
+/datum/prototype/language/bug
id = LANGUAGE_ID_VASILISSAN
name = LANGUAGE_VESPINAE
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/vox.dm b/code/modules/language/languages/species/vox.dm
index 38f59714ef9..c1e663b6ed2 100644
--- a/code/modules/language/languages/species/vox.dm
+++ b/code/modules/language/languages/species/vox.dm
@@ -1,4 +1,4 @@
-/datum/language/vox
+/datum/prototype/language/vox
id = LANGUAGE_ID_VOX
name = LANGUAGE_VOX
translation_class = NONE
@@ -13,5 +13,5 @@
"SKRE","AHK","EHK","RAWK","KRA","AAA","EEE","KI","II","KRI","KA")
shorthand = "VOX"
-/datum/language/vox/get_random_name()
+/datum/prototype/language/vox/get_random_name()
return ..(FEMALE,1,6)
diff --git a/code/modules/language/languages/species/vulpkanin.dm b/code/modules/language/languages/species/vulpkanin.dm
index 63f7880900e..187c40ef3cc 100644
--- a/code/modules/language/languages/species/vulpkanin.dm
+++ b/code/modules/language/languages/species/vulpkanin.dm
@@ -1,4 +1,4 @@
-/datum/language/vulpkanin
+/datum/prototype/language/vulpkanin
id = LANGUAGE_ID_VULPKANIN
name = LANGUAGE_CANILUNZT
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/zaddat.dm b/code/modules/language/languages/species/zaddat.dm
index 162c346e74c..e54274b2a40 100644
--- a/code/modules/language/languages/species/zaddat.dm
+++ b/code/modules/language/languages/species/zaddat.dm
@@ -1,4 +1,4 @@
-/datum/language/zaddat
+/datum/prototype/language/zaddat
id = LANGUAGE_ID_ZADDAT
name = LANGUAGE_ZADDAT
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/languages/species/zorren.dm b/code/modules/language/languages/species/zorren.dm
index 6115b31d279..8b0872078aa 100644
--- a/code/modules/language/languages/species/zorren.dm
+++ b/code/modules/language/languages/species/zorren.dm
@@ -1,4 +1,4 @@
-/datum/language/terminus
+/datum/prototype/language/terminus
id = LANGUAGE_ID_TERMINUS
name = LANGUAGE_TERMINUS
translation_class = TRANSLATION_CLASS_DEFAULT_STANDARD_RACE
diff --git a/code/modules/language/translation.dm b/code/modules/language/translation.dm
index fe77c3c166e..d7ec7754f10 100644
--- a/code/modules/language/translation.dm
+++ b/code/modules/language/translation.dm
@@ -15,7 +15,7 @@
* - speaker - guy talking, optional
* - require_perfect - must be perfect translation; used by tape recorders
*/
-/datum/translation_context/proc/can_translate(datum/language/L, atom/movable/speaker, require_perfect)
+/datum/translation_context/proc/can_translate(datum/prototype/language/L, atom/movable/speaker, require_perfect)
CRASH("not implemented")
/**
@@ -27,7 +27,7 @@
*
* @return the translated message
*/
-/datum/translation_context/proc/translate(datum/language/L, atom/movable/speaker, msg)
+/datum/translation_context/proc/translate(datum/prototype/language/L, atom/movable/speaker, msg)
PROTECTED_PROC(TRUE) // please use attempt_translation.
CRASH("not implemented")
@@ -41,7 +41,7 @@
* - msg - the message to translate
* - require_perfect - must be perfect translate; used by tape recorders
*/
-/datum/translation_context/proc/attempt_translation(datum/language/L, atom/movable/speaker, msg, require_perfect)
+/datum/translation_context/proc/attempt_translation(datum/prototype/language/L, atom/movable/speaker, msg, require_perfect)
CRASH("not implemented")
/**
@@ -67,17 +67,17 @@
else
translated_ids = typelist(NAMEOF(src, translated_ids), make_associative_inplace_keep_values(translated_ids))
-/datum/translation_context/simple/can_translate(datum/language/L, atom/movable/speaker, require_perfect)
+/datum/translation_context/simple/can_translate(datum/prototype/language/L, atom/movable/speaker, require_perfect)
if(translated_ids?[L.id])
return TRUE
return (translation_class & L.translation_class) && !(translation_class_forbid & L.translation_class)
-/datum/translation_context/simple/attempt_translation(datum/language/L, atom/movable/speaker, msg, require_perfect)
+/datum/translation_context/simple/attempt_translation(datum/prototype/language/L, atom/movable/speaker, msg, require_perfect)
if(!can_translate(L, speaker))
return null
return translate(L, speaker, msg)
-/datum/translation_context/simple/translate(datum/language/L, atom/movable/speaker, msg)
+/datum/translation_context/simple/translate(datum/prototype/language/L, atom/movable/speaker, msg)
return msg
/**
@@ -123,7 +123,7 @@
translated_ids = translated_ids.Copy()
translated_list_detached = TRUE
-/datum/translation_context/variable/attempt_translation(datum/language/L, atom/movable/speaker, msg, require_perfect)
+/datum/translation_context/variable/attempt_translation(datum/prototype/language/L, atom/movable/speaker, msg, require_perfect)
if((translation_class & L.translation_class) && !(translation_class_forbid & L.translation_class))
return translate(L, speaker, msg)
var/effective = translated_ids?[L.id]
@@ -135,15 +135,15 @@
return null
return imperfect_translation(L, speaker, msg, effective)
-/datum/translation_context/variable/translate(datum/language/L, atom/movable/speaker, msg)
+/datum/translation_context/variable/translate(datum/prototype/language/L, atom/movable/speaker, msg)
return msg // perfect translations
-/datum/translation_context/variable/can_translate(datum/language/L, atom/movable/speaker, require_perfect)
+/datum/translation_context/variable/can_translate(datum/prototype/language/L, atom/movable/speaker, require_perfect)
if((translation_class & L.translation_class) && !(translation_class_forbid & L.translation_class))
return TRUE
return require_perfect? (translated_ids?[L.id] >= TRANSLATION_CONTEXT_PERFECT_THRESHOLD) : (!!translated_ids?[L.id])
-/datum/translation_context/variable/proc/imperfect_translation(datum/language/L, atom/movable/speaker, msg, efficiency)
+/datum/translation_context/variable/proc/imperfect_translation(datum/prototype/language/L, atom/movable/speaker, msg, efficiency)
//! all aboard the marakov train
var/effective_efficiency = clamp(efficiency, 0, 1)
var/current_efficiency = effective_efficiency * 100
@@ -216,7 +216,7 @@
var/list/learnable_ids
/// learning factor; 1, faster = up, slower = down; 0 to inf.
var/learn_factor = 1
- /// callback to call with (src, datum/language/L, old_efficiency) on successful training
+ /// callback to call with (src, datum/prototype/language/L, old_efficiency) on successful training
var/datum/callback/on_train
/datum/translation_context/variable/learning/New()
@@ -235,7 +235,7 @@
on_train = null
return ..()
-/datum/translation_context/variable/learning/can_translate(datum/language/L, atom/movable/speaker, require_perfect)
+/datum/translation_context/variable/learning/can_translate(datum/prototype/language/L, atom/movable/speaker, require_perfect)
if(require_perfect)
return ..()
if((translation_class_learn & L.translation_class) && !(translation_class_learn_forbid & L.translation_class))
@@ -244,7 +244,7 @@
return TRUE
return ..()
-/datum/translation_context/variable/learning/attempt_translation(datum/language/L, atom/movable/speaker, msg)
+/datum/translation_context/variable/learning/attempt_translation(datum/prototype/language/L, atom/movable/speaker, msg)
. = ..()
var/efficiency = learnable_ids?[L.id]
if(efficiency)
@@ -252,7 +252,7 @@
else if((translation_class_learn & L.translation_class) && !(translation_class_learn_forbid & L.translation_class))
train(L, speaker, msg, learn_factor)
-/datum/translation_context/variable/learning/proc/train(datum/language/L, atom/movable/speaker, msg)
+/datum/translation_context/variable/learning/proc/train(datum/prototype/language/L, atom/movable/speaker, msg)
// split list
detach_translated_ids()
var/old_efficiency = ((L.translation_class & translation_class) && !(L.translation_class & translation_class_forbid) && 1) || translated_ids[L.id] || 0
@@ -277,11 +277,11 @@
*/
/datum/translation_context/omni
-/datum/translation_context/omni/can_translate(datum/language/L, atom/movable/speaker, require_perfect)
+/datum/translation_context/omni/can_translate(datum/prototype/language/L, atom/movable/speaker, require_perfect)
return TRUE
-/datum/translation_context/omni/translate(datum/language/L, atom/movable/speaker, msg)
+/datum/translation_context/omni/translate(datum/prototype/language/L, atom/movable/speaker, msg)
return msg
-/datum/translation_context/omni/attempt_translation(datum/language/L, atom/movable/speaker, msg)
+/datum/translation_context/omni/attempt_translation(datum/prototype/language/L, atom/movable/speaker, msg)
return translate(L, speaker, msg)
diff --git a/code/modules/lore_hardcoded/_hardcoded.dm b/code/modules/lore_hardcoded/_hardcoded.dm
index 46479b25000..c408d17a479 100644
--- a/code/modules/lore_hardcoded/_hardcoded.dm
+++ b/code/modules/lore_hardcoded/_hardcoded.dm
@@ -66,10 +66,10 @@
CRASH("innate languages not a list; fix your shit.")
for(var/thing in innate_languages)
if(ispath(thing))
- innate_languages += SScharacters.resolve_language_path(thing).id
+ innate_languages += RSlanguages.fetch(thing).id
innate_languages -= thing
else if(istext(thing))
- ASSERT(!!SScharacters.resolve_language_id(thing))
+ ASSERT(!!RSlanguages.fetch(thing))
else
CRASH("you didn't put a valid path or text; fix your shit.")
diff --git a/code/modules/lore_hardcoded/faction.dm b/code/modules/lore_hardcoded/faction.dm
index 85ffb076566..0ed0867de8d 100644
--- a/code/modules/lore_hardcoded/faction.dm
+++ b/code/modules/lore_hardcoded/faction.dm
@@ -117,7 +117,7 @@
/datum/role/job/trader::id,
)
innate_languages = list(
- /datum/language/trader,
+ /datum/prototype/language/trader,
)
/datum/lore/character_background/faction/hephaestus
diff --git a/code/modules/lore_hardcoded/species/auril.dm b/code/modules/lore_hardcoded/species/auril.dm
index ac9df962698..4bbab34d1b5 100644
--- a/code/modules/lore_hardcoded/species/auril.dm
+++ b/code/modules/lore_hardcoded/species/auril.dm
@@ -3,7 +3,7 @@
id = "culture_auril_main"
category = "Species -- Auril"
innate_languages = list(
- /datum/language/angel,
+ /datum/prototype/language/angel,
)
desc = "Aurils who were born and grew up on the lush, tropical homeworld of Aura. They were taught the virtues and values of Aura -- diligence, responsibility, and to think ahead for the overall good of the species. In spite of this, the pressures of society, or other factors have led them to abandon the homeworld."
@@ -11,8 +11,8 @@
name = "Prideborn Exile"
id = "culture_auril_pride"
innate_languages = list(
- /datum/language/angel,
- /datum/language/demon,
+ /datum/prototype/language/angel,
+ /datum/prototype/language/demon,
)
language_amount_mod = -1
desc = "Aurils who were originating from the Auril Enclave on the Dremachir homeworld -- City of Pride, as named by humans. Its pearlescent, high altitude platform city shined like a beacon in the dusty plains of Drema, and both of the species intermingled amongst each other, leading to a far less homogenous ideals and beliefs."
diff --git a/code/modules/lore_hardcoded/species/tajaran/citizenship.dm b/code/modules/lore_hardcoded/species/tajaran/citizenship.dm
index 7a52a9e2cc0..40fd474be9c 100644
--- a/code/modules/lore_hardcoded/species/tajaran/citizenship.dm
+++ b/code/modules/lore_hardcoded/species/tajaran/citizenship.dm
@@ -17,7 +17,7 @@
name = "New Kingdom of Ahdomai"
id = "citizenship_tajaran_nka"
innate_languages = list(
- /datum/language/tajaranakhani
+ /datum/prototype/language/tajaranakhani
)
desc = "New Kingdom of Ahdomai (NKA), a state led by the noble lines that survived the previous Revolution by remaining in hiding. The lofty titles of the nobles disguise that most of the nobility's financial situation remains only marginally better than the peasants. The NKA finds itself struggling to function with its limited constitutional powers, factional in-fighting between the military and the civilian government, and technological stagnation. Tajara under this banner are for religious and noble supremacy, revenge, and minor luddism."
diff --git a/code/modules/lore_hardcoded/species/tajaran/culture.dm b/code/modules/lore_hardcoded/species/tajaran/culture.dm
index 640e5e031a0..0c8f8826060 100644
--- a/code/modules/lore_hardcoded/species/tajaran/culture.dm
+++ b/code/modules/lore_hardcoded/species/tajaran/culture.dm
@@ -17,6 +17,6 @@
name = "Njarir"
id = "culture_tajaran_njarir"
innate_languages = list(
- /datum/language/tajaranakhani
+ /datum/prototype/language/tajaranakhani
)
desc = "The ethnic group that made up the majority of the plutocracy prior to the Great Frost. Their lineage can be traced from careful breeding between Hharar and M'sai, leading to where they currently are today. Following the series of events on Adhomai, Njarir make up less than ten percent of the population. Easily identifiable by their large ears, fluffy tails, luxurious fur, and slender, elegant features. Njarir suffer persecution and rejection from certain proponents of Tajaran society because of their bloodline. As the most learned of all Tajaran ethnic groups, they boast high intelligence and have a propensity towards the arts and sciences. When the Great Frost began they did not fare well at all, most of them however did either end up continuing their research, or rule in holds they made up an extreme minority of the population, which has led to inbreeding in order to keep the blood “pure”. They usually can speak the language known as Ahkani, the royal ancient tongue, typically not taught to non-royals as to retain a method for speaking above the commoners. Njarir'Akhran are usually orange, cinnamon, ruddy, or cream in coloration."
diff --git a/code/modules/mob/floating_message.dm b/code/modules/mob/floating_message.dm
index 7ae05e529e0..b887bc0c0ee 100644
--- a/code/modules/mob/floating_message.dm
+++ b/code/modules/mob/floating_message.dm
@@ -3,10 +3,10 @@ var/list/floating_chat_colors = list()
/atom/movable
var/list/stored_chat_text
-/atom/movable/proc/animate_chat(message, var/datum/language/speaking = null, small, list/show_to, duration = 30)
+/atom/movable/proc/animate_chat(message, var/datum/prototype/language/speaking = null, small, list/show_to, duration = 30)
set waitfor = FALSE
if(!speaking)
- var/datum/language/noise/noise
+ var/datum/prototype/language/noise/noise
speaking = noise
// Get rid of any URL schemes that might cause BYOND to automatically wrap something in an anchor tag
var/static/regex/url_scheme = new(@"[A-Za-z][A-Za-z0-9+-\.]*:\/\/", "g")
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index 90aa8bd5ce2..f3731aaeb4f 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -1,6 +1,6 @@
// At minimum every mob has a hear_say proc.
-/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
+/mob/proc/hear_say(var/message, var/verb = "says", var/datum/prototype/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
if(!client && !teleop)
return
@@ -81,19 +81,19 @@
src.playsound_local(source, speech_sound, sound_vol, 1)
// Done here instead of on_hear_say() since that is NOT called if the mob is clientless (which includes most AI mobs).
-/mob/living/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
+/mob/living/hear_say(var/message, var/verb = "says", var/datum/prototype/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
..()
if(has_polaris_AI()) // Won't happen if no ai_holder exists or there's a player inside w/o autopilot active.
var/datum/ai_holder/polaris/ai_holder = src.ai_holder
ai_holder.on_hear_say(speaker, message)
-/mob/proc/language_scramble(datum/language/L, str)
+/mob/proc/language_scramble(datum/prototype/language/L, str)
return L.scramble(str, languages)
//! "silicons, why are you putting this here?"
//? Because saycode needs a full rewrite so I'm shoving stuff in here until we do
//? as if I don't, it's just harder to find later.
-/mob/living/silicon/language_scramble(datum/language/L, str)
+/mob/living/silicon/language_scramble(datum/prototype/language/L, str)
// todo: this still does the "unknown language" highlighting potentially, oops
var/translated = translation_context.attempt_translation(L, msg = str)
return isnull(translated)? L.scramble(str, languages) : translated
@@ -150,7 +150,7 @@
input = replacetext_char(input, underline, "$1")
return input
-/mob/proc/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="")
+/mob/proc/hear_radio(var/message, var/verb="says", var/datum/prototype/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="")
if(!client)
return
@@ -299,7 +299,7 @@
final_message = "[time][final_message]"
to_chat(src, final_message)
-/mob/proc/hear_signlang(var/message, var/verb = "gestures", var/datum/language/language, var/mob/speaker = null)
+/mob/proc/hear_signlang(var/message, var/verb = "gestures", var/datum/prototype/language/language, var/mob/speaker = null)
if(!client)
return
diff --git a/code/modules/mob/living/autohiss.dm b/code/modules/mob/living/autohiss.dm
index 35ee630816a..18ef7c62d09 100644
--- a/code/modules/mob/living/autohiss.dm
+++ b/code/modules/mob/living/autohiss.dm
@@ -1,7 +1,7 @@
-/mob/living/proc/handle_autohiss(message, datum/language/L)
+/mob/living/proc/handle_autohiss(message, datum/prototype/language/L)
return message // no autohiss at this level
-/mob/living/carbon/human/handle_autohiss(message, datum/language/L)
+/mob/living/carbon/human/handle_autohiss(message, datum/prototype/language/L)
if(!client || autohiss_mode == AUTOHISS_OFF || autohiss_type == AUTOHISS_TYPE_NONE) // no need to process if there's no client or they have autohiss off
return message
diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm
index 850300e54fc..2e25470d1ae 100644
--- a/code/modules/mob/living/bot/bot.dm
+++ b/code/modules/mob/living/bot/bot.dm
@@ -91,7 +91,7 @@
. = ..()
update_icons()
- default_language = SScharacters.resolve_language_name(LANGUAGE_GALCOM)
+ default_language = RSlanguages.legacy_resolve_language_name(LANGUAGE_GALCOM)
botcard = new /obj/item/card/id(src)
botcard.access = botcard_access.Copy()
@@ -192,7 +192,7 @@
/mob/living/bot/attack_ai(var/mob/user)
return attack_hand(user)
-/mob/living/bot/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/bot/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
verb = "beeps"
message = sanitize(message)
diff --git a/code/modules/mob/living/carbon/alien/diona/say_understands.dm b/code/modules/mob/living/carbon/alien/diona/say_understands.dm
index 70131f917d9..9c2afa0c914 100644
--- a/code/modules/mob/living/carbon/alien/diona/say_understands.dm
+++ b/code/modules/mob/living/carbon/alien/diona/say_understands.dm
@@ -1,4 +1,4 @@
-/mob/living/carbon/alien/diona/say_understands(var/mob/other,var/datum/language/speaking = null)
+/mob/living/carbon/alien/diona/say_understands(var/mob/other,var/datum/prototype/language/speaking = null)
if (istype(other, /mob/living/carbon/human) && !speaking)
if(languages.len >= 2) // They have sucked down some blood.
diff --git a/code/modules/mob/living/carbon/alien/progression.dm b/code/modules/mob/living/carbon/alien/progression.dm
index c082f7d2e51..2f236c4b4e0 100644
--- a/code/modules/mob/living/carbon/alien/progression.dm
+++ b/code/modules/mob/living/carbon/alien/progression.dm
@@ -46,7 +46,7 @@
drop_inventory(TRUE, TRUE, TRUE)
- for(var/datum/language/L in languages)
+ for(var/datum/prototype/language/L in languages)
adult.add_language(L.name)
qdel(src)
diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm
index f6ef3efb3a8..3c49ed65297 100644
--- a/code/modules/mob/living/carbon/alien/say.dm
+++ b/code/modules/mob/living/carbon/alien/say.dm
@@ -1,4 +1,4 @@
-/mob/living/carbon/alien/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/carbon/alien/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
verb = "says"
var/message_range = world.view
@@ -19,7 +19,7 @@
if(speaking == -1)
return
-
+
message = trim(message)
if(!message || stat)
diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm
index 95185c01bb8..91732a7af10 100644
--- a/code/modules/mob/living/carbon/brain/say.dm
+++ b/code/modules/mob/living/carbon/brain/say.dm
@@ -1,5 +1,5 @@
//TODO: Convert this over for languages.
-/mob/living/carbon/brain/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/carbon/brain/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
if (silent)
return
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index c4cf978035b..2090b46d05c 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -6,7 +6,7 @@
touching = new/datum/reagent_holder/metabolism/touch(500, src)
reagents = bloodstr
if (!default_language && species_language)
- default_language = SScharacters.resolve_language_name(species_language)
+ default_language = RSlanguages.legacy_resolve_language_name(species_language)
/mob/living/carbon/BiologicalLife(seconds, times_fired)
if((. = ..()))
@@ -269,12 +269,12 @@
if(can_speak(default_language))
return default_language
else
- return SScharacters.resolve_language_name(LANGUAGE_GIBBERISH)
+ return RSlanguages.legacy_resolve_language_name(LANGUAGE_GIBBERISH)
if(!species)
return null
- return species.default_language ? SScharacters.resolve_language(species.default_language) : null
+ return species.default_language ? RSlanguages.fetch(species.default_language) : null
/mob/living/carbon/proc/should_have_organ(var/organ_check)
return 0
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index 61e8cf3b6ca..6a4525847f7 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -47,7 +47,7 @@
return species.speech_bubble_appearance
return "normal"
-/mob/living/carbon/human/say_understands(var/mob/other,var/datum/language/speaking = null)
+/mob/living/carbon/human/say_understands(var/mob/other,var/datum/prototype/language/speaking = null)
if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak.
return 1
@@ -123,7 +123,7 @@
for it but just ignore it.
*/
-/mob/living/carbon/human/say_quote(var/message, var/datum/language/speaking = null)
+/mob/living/carbon/human/say_quote(var/message, var/datum/prototype/language/speaking = null)
var/verb = "says"
var/ending = copytext_char(message, length(message))
diff --git a/code/modules/mob/living/default_language.dm b/code/modules/mob/living/default_language.dm
index 93bc61722b2..dfd3ecab974 100644
--- a/code/modules/mob/living/default_language.dm
+++ b/code/modules/mob/living/default_language.dm
@@ -1,15 +1,15 @@
/mob/living
- var/datum/language/default_language
+ var/datum/prototype/language/default_language
/mob/living/verb/set_default_language(language as anything in languages)
set name = "Set Default Language"
set category = VERB_CATEGORY_IC
- if (only_species_language && language != SScharacters.resolve_language_name(species_language))
+ if (only_species_language && language != RSlanguages.legacy_resolve_language_name(species_language))
to_chat(src, "You can only speak your species language, [src.species_language].")
return 0
- if(language == SScharacters.resolve_language_name(species_language))
+ if(language == RSlanguages.legacy_resolve_language_name(species_language))
to_chat(src, "You will now speak your standard default language, [language], if you do not specify a language when speaking.")
else if (language)
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index cac79cb47be..16d78b94b22 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -146,7 +146,7 @@ var/list/channel_to_radio_key = new
return "asks"
return verb
-/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
//If you're muted for IC chat
if(client)
if(message)
@@ -194,7 +194,7 @@ var/list/channel_to_radio_key = new
speaking = get_default_language()
if(!can_speak(speaking))
- speaking = SScharacters.resolve_language_name(LANGUAGE_GIBBERISH)
+ speaking = RSlanguages.legacy_resolve_language_name(LANGUAGE_GIBBERISH)
var/babble_key = ",r"
message = babble_key + message
@@ -206,7 +206,7 @@ var/list/channel_to_radio_key = new
while(speaking && is_language_prefix(copytext_char(message, 1, 2)))
message = copytext_char(message,2+length_char(speaking.key))
- if(speaking && speaking == SScharacters.resolve_language_name("Noise"))
+ if(speaking && speaking == RSlanguages.legacy_resolve_language_name("Noise"))
message = copytext_char(message,2)
//LANGUAGE_HIVEMIND languages always send to all people with that language
@@ -446,7 +446,7 @@ var/list/channel_to_radio_key = new
log_say(message, src)
return 1
-/mob/living/proc/say_signlang(var/message, var/verb="gestures", var/datum/language/language)
+/mob/living/proc/say_signlang(var/message, var/verb="gestures", var/datum/prototype/language/language)
var/turf/T = get_turf(src)
//We're in something, gesture to people inside the same thing
if(loc != T)
diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm
index bb0691cb703..d69c88d86f8 100644
--- a/code/modules/mob/living/silicon/ai/say.dm
+++ b/code/modules/mob/living/silicon/ai/say.dm
@@ -11,7 +11,7 @@
return aiRadio.talk_into(src,message,message_mode,verb,speaking)
//For holopads only. Usable by AI.
-/mob/living/silicon/ai/proc/holopad_talk(var/message, verb, datum/language/speaking)
+/mob/living/silicon/ai/proc/holopad_talk(var/message, verb, datum/prototype/language/speaking)
message = trim(message)
if (!message)
diff --git a/code/modules/mob/living/silicon/ai/translation.dm b/code/modules/mob/living/silicon/ai/translation.dm
index 7d9db17fe59..11ab1696f82 100644
--- a/code/modules/mob/living/silicon/ai/translation.dm
+++ b/code/modules/mob/living/silicon/ai/translation.dm
@@ -1,4 +1,4 @@
-/mob/living/silicon/ai/sync_translation_context(datum/language/L)
+/mob/living/silicon/ai/sync_translation_context(datum/prototype/language/L)
if(!length(connected_robots))
return
if(!istype(translation_context, /datum/translation_context/variable/learning/silicons))
diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm
index 3eda07ede5c..afea1659bf2 100644
--- a/code/modules/mob/living/silicon/pai/say.dm
+++ b/code/modules/mob/living/silicon/pai/say.dm
@@ -1,4 +1,4 @@
-/mob/living/silicon/pai/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/silicon/pai/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
if(silence_time)
to_chat(src, "Communication circuits remain uninitialized.")
return
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_say.dm b/code/modules/mob/living/silicon/robot/drone/drone_say.dm
index b88330c5685..1debb49265f 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_say.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_say.dm
@@ -1,4 +1,4 @@
-/mob/living/silicon/robot/drone/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/silicon/robot/drone/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
if(local_transmit)
if (src.client)
if(client.prefs.muted & MUTE_IC)
@@ -14,7 +14,7 @@
return emote(copytext(message,2))
if(copytext(message,1,2) == ";")
- var/datum/language/L = SScharacters.resolve_language_id(LANGUAGE_ID_DRONE_BINARY)
+ var/datum/prototype/language/L = RSlanguages.fetch(LANGUAGE_ID_DRONE_BINARY)
if(istype(L))
return L.broadcast(src,trim(copytext(message,2)))
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 3e70ef88d92..f6a2a427643 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -182,7 +182,7 @@
add_language(LANGUAGE_EAL, TRUE)
// todo: translation contexts on language holder?
// this is messy
- for(var/datum/language/L as anything in SScharacters.all_languages())
+ for(var/datum/prototype/language/L as anything in RSlanguages.fetch_subtypes(/datum/prototype/language))
if(!(L.translation_class & TRANSLATION_CLASSES_CYBORG_SPEAKS))
continue
add_language(L, TRUE)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index 668d0d647c8..043b661ed57 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -175,7 +175,7 @@ GLOBAL_LIST_INIT(robot_modules, list(
/obj/item/robot_module/proc/add_languages(var/mob/living/silicon/robot/R)
// Stores the languages as they were before receiving the module, and whether they could be synthezized.
- for(var/datum/language/language_datum in R.languages)
+ for(var/datum/prototype/language/language_datum in R.languages)
original_languages[language_datum] = (language_datum in R.speech_synthesizer_langs)
for(var/language in languages)
diff --git a/code/modules/mob/living/silicon/robot/translation.dm b/code/modules/mob/living/silicon/robot/translation.dm
index 090ed37c12b..2d6ca25696d 100644
--- a/code/modules/mob/living/silicon/robot/translation.dm
+++ b/code/modules/mob/living/silicon/robot/translation.dm
@@ -1,4 +1,4 @@
-/mob/living/silicon/robot/sync_translation_context(datum/language/L)
+/mob/living/silicon/robot/sync_translation_context(datum/prototype/language/L)
if(!connected_ai)
return
if(!istype(connected_ai.translation_context, /datum/translation_context/variable/learning/silicons))
diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm
index 332bac27f1f..e79dd97b8d0 100644
--- a/code/modules/mob/living/silicon/say.dm
+++ b/code/modules/mob/living/silicon/say.dm
@@ -14,7 +14,7 @@
return speak_statement
-/mob/living/silicon/say_understands(var/other,var/datum/language/speaking = null)
+/mob/living/silicon/say_understands(var/other,var/datum/prototype/language/speaking = null)
//These only pertain to common. Languages are handled by mob/say_understands()
if (!speaking)
if (istype(other, /mob/living/carbon))
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 0f0a42b4637..8de8e71575d 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -58,12 +58,12 @@
silicon_mob_list |= src
. = ..()
add_language(LANGUAGE_GALCOM)
- set_default_language(SScharacters.resolve_language_name(LANGUAGE_GALCOM))
+ set_default_language(RSlanguages.legacy_resolve_language_name(LANGUAGE_GALCOM))
create_translation_context()
init_id()
init_subsystems()
- for(var/datum/language/L as anything in SScharacters.all_languages())
+ for(var/datum/prototype/language/L as anything in RSlanguages.fetch_subtypes(/datum/prototype/language))
if(L.translation_class & TRANSLATION_CLASS_LEVEL_1)
add_language(L)
add_language(LANGUAGE_EAL)
@@ -165,11 +165,11 @@
//Silicon mob language procs
-/mob/living/silicon/can_speak(datum/language/speaking)
+/mob/living/silicon/can_speak(datum/prototype/language/speaking)
return universal_speak || (speaking in src.speech_synthesizer_langs) || (speaking.name == "Noise") //need speech synthesizer support to vocalize a language
/mob/living/silicon/add_language(var/language, var/can_speak=1)
- var/datum/language/added_language = SScharacters.resolve_language_name(language)
+ var/datum/prototype/language/added_language = RSlanguages.legacy_resolve_language_name(language)
if(!added_language)
return
@@ -179,7 +179,7 @@
return 1
/mob/living/silicon/remove_language(var/rem_language)
- var/datum/language/removed_language = SScharacters.resolve_language_name(rem_language)
+ var/datum/prototype/language/removed_language = RSlanguages.legacy_resolve_language_name(rem_language)
if(!removed_language)
return
@@ -196,7 +196,7 @@
if(default_language)
dat += "Current default language: [default_language] - reset
"
- for(var/datum/language/L in languages)
+ for(var/datum/prototype/language/L in languages)
if(!(L.language_flags & LANGUAGE_NONGLOBAL))
var/default_str
if(L == default_language)
diff --git a/code/modules/mob/living/silicon/translation.dm b/code/modules/mob/living/silicon/translation.dm
index b4af68166b1..56af00e53b9 100644
--- a/code/modules/mob/living/silicon/translation.dm
+++ b/code/modules/mob/living/silicon/translation.dm
@@ -9,10 +9,10 @@
* @params
* - L - language to sync; if null, syncs all
*/
-/mob/living/silicon/proc/sync_translation_context(datum/language/L)
+/mob/living/silicon/proc/sync_translation_context(datum/prototype/language/L)
return
-/mob/living/silicon/proc/translation_train_hook(datum/translation_context/context, datum/language/L, old_efficiency)
+/mob/living/silicon/proc/translation_train_hook(datum/translation_context/context, datum/prototype/language/L, old_efficiency)
if(!old_efficiency)
to_chat(src, SPAN_NOTICE("Identifying new language . . ."))
to_chat(src, SPAN_NOTICE("New language identified: [L.name]. Registering and beginning adaptive translation."))
diff --git a/code/modules/mob/living/simple_animal/animals/spiderbot.dm b/code/modules/mob/living/simple_animal/animals/spiderbot.dm
index 800d117d8a1..3b88c3ed183 100644
--- a/code/modules/mob/living/simple_animal/animals/spiderbot.dm
+++ b/code/modules/mob/living/simple_animal/animals/spiderbot.dm
@@ -64,7 +64,7 @@
/mob/living/simple_mob/spiderbot/Initialize(mapload)
. = ..()
add_language(LANGUAGE_GALCOM)
- default_language = SScharacters.resolve_language_name(LANGUAGE_GALCOM)
+ default_language = RSlanguages.legacy_resolve_language_name(LANGUAGE_GALCOM)
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm
index 909771c1d52..db05b31e0a2 100644
--- a/code/modules/mob/living/simple_mob/simple_mob.dm
+++ b/code/modules/mob/living/simple_mob/simple_mob.dm
@@ -261,7 +261,7 @@
randomize()
for(var/L in has_langs)
- languages |= SScharacters.resolve_language_name(L)
+ languages |= RSlanguages.legacy_resolve_language_name(L)
if(languages.len)
default_language = languages[1]
@@ -387,7 +387,7 @@
icon_state = icon_living
update_icon()
-/mob/living/simple_mob/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/simple_mob/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
verb = "says"
if(speak_emote.len)
verb = pick(speak_emote)
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
index 1aa2a52144f..238b1f97a3d 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
@@ -212,7 +212,7 @@
return
// This is awful but its literally say code.
-/mob/living/simple_mob/animal/borer/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/simple_mob/animal/borer/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
message = sanitize(message)
message = capitalize(message)
@@ -231,7 +231,7 @@
if(copytext(message, 1, 2) == "*")
return emote(copytext(message, 2))
- var/datum/language/L = parse_language(message)
+ var/datum/prototype/language/L = parse_language(message)
if(L && L.language_flags & LANGUAGE_HIVEMIND)
L.broadcast(src,trim(copytext(message,3)), src.true_name)
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm
index ffbbf0d713f..9c02e83ca42 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm
@@ -5,7 +5,7 @@
real_name = "host brain"
universal_understand = 1
-/mob/living/captive_brain/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/captive_brain/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
if (src.client)
if(client.prefs.muted & MUTE_IC)
diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm
index 66756a497df..abeeb9884fc 100644
--- a/code/modules/mob/living/voice/voice.dm
+++ b/code/modules/mob/living/voice/voice.dm
@@ -10,7 +10,7 @@
/mob/living/voice/Initialize(mapload)
. = ..()
add_language(LANGUAGE_GALCOM)
- set_default_language(SScharacters.resolve_language_name(LANGUAGE_GALCOM))
+ set_default_language(RSlanguages.legacy_resolve_language_name(LANGUAGE_GALCOM))
if(istype(loc, /obj/item/communicator))
comm = loc
@@ -105,7 +105,7 @@
// Proc: say()
// Parameters: 4 (generic say() arguments)
// Description: Adds a speech bubble to the communicator device, then calls ..() to do the real work.
-/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering=0)
+/mob/living/voice/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering=0)
//Speech bubbles.
if(comm)
var/speech_bubble_test = say_test(message)
@@ -126,7 +126,7 @@
/mob/living/voice/speech_bubble_appearance()
return "comm"
-/mob/living/voice/say_understands(var/other,var/datum/language/speaking = null)
+/mob/living/voice/say_understands(var/other,var/datum/prototype/language/speaking = null)
//These only pertain to common. Languages are handled by mob/say_understands()
if (!speaking)
if (istype(other, /mob/living/carbon))
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 9509f7da12a..228ef53d864 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -625,7 +625,7 @@ INITIALIZE_IMMEDIATE(/mob/new_player)
return ready && ..()
// Prevents lobby players from seeing say, even with ghostears
-/mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
+/mob/new_player/hear_say(var/message, var/verb = "says", var/datum/prototype/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
return
// Prevents lobby players from seeing emotes, even with ghosteyes
diff --git a/code/modules/mob/observer/dead/say.dm b/code/modules/mob/observer/dead/say.dm
index 0b152d624ae..018f21615b9 100644
--- a/code/modules/mob/observer/dead/say.dm
+++ b/code/modules/mob/observer/dead/say.dm
@@ -1,4 +1,4 @@
-/mob/observer/dead/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/observer/dead/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
message = sanitize(message)
if (!message)
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index a9451d4e304..bfde59e4328 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -1,4 +1,4 @@
-/mob/proc/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/proc/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
return
@@ -70,7 +70,7 @@
say_dead_direct("[pick("complains","moans","whines","laments","blubbers")], \"[message]\"", src)
-/mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null)
+/mob/proc/say_understands(var/mob/other,var/datum/prototype/language/speaking = null)
if (src.stat == DEAD)
return 1
@@ -95,7 +95,7 @@
return 1
//Language check.
- for(var/datum/language/L in src.languages)
+ for(var/datum/prototype/language/L in src.languages)
if(speaking.name == L.name)
return 1
@@ -110,7 +110,7 @@
for it but just ignore it.
*/
-/mob/proc/say_quote(var/message, var/datum/language/speaking = null)
+/mob/proc/say_quote(var/message, var/datum/prototype/language/speaking = null)
var/verb = "says"
var/ending = copytext_char(message, length_char(message))
if(ending=="!")
@@ -158,11 +158,11 @@
var/prefix = copytext_char(message,1,2)
// This is for audible emotes
if(length_char(message) >= 1 && prefix == "!")
- return SScharacters.resolve_language_name("Noise")
+ return RSlanguages.legacy_resolve_language_name("Noise")
if(length_char(message) >= 2 && is_language_prefix(prefix))
var/language_prefix = copytext_char(message, 2 ,3)
- var/datum/language/L = SScharacters.resolve_language_key(language_prefix)
+ var/datum/prototype/language/L = RSlanguages.legacy_resolve_language_key(language_prefix)
if (can_speak(L))
return L
else
@@ -171,9 +171,9 @@
if("Default Language")
if(isliving(src))
var/mob/living/caller = src
- return SScharacters.resolve_language_name(caller.default_language)
+ return RSlanguages.legacy_resolve_language_name(caller.default_language)
if("Gibberish")
- return SScharacters.resolve_language_name(LANGUAGE_GIBBERISH)
+ return RSlanguages.legacy_resolve_language_name(LANGUAGE_GIBBERISH)
if("Whoops I made a typo!")
return -1
return null
diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm
index 323c8c20a62..fed1ecde642 100644
--- a/code/modules/nifsoft/software/13_soulcatcher.dm
+++ b/code/modules/nifsoft/software/13_soulcatcher.dm
@@ -453,7 +453,7 @@
else
return ..(direction)
-/mob/living/carbon/brain/caught_soul/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/carbon/brain/caught_soul/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
if(silent)
return FALSE
soulcatcher.say_into(message,src,eyeobj)
diff --git a/code/modules/organs/internal/subtypes/brain.dm b/code/modules/organs/internal/subtypes/brain.dm
index a6b6c3095a1..a5bccaad54c 100644
--- a/code/modules/organs/internal/subtypes/brain.dm
+++ b/code/modules/organs/internal/subtypes/brain.dm
@@ -267,7 +267,7 @@
for(var/modifier_type in R.genetic_modifiers)
H.add_modifier(modifier_type)
- for(var/datum/language/L in R.languages)
+ for(var/datum/prototype/language/L in R.languages)
H.add_language(L.name)
H.flavor_texts = R.flavor.Copy()
qdel(src)
diff --git a/code/modules/organs/internal/subtypes/voicebox.dm b/code/modules/organs/internal/subtypes/voicebox.dm
index 07ef14e3c3c..766e836919a 100644
--- a/code/modules/organs/internal/subtypes/voicebox.dm
+++ b/code/modules/organs/internal/subtypes/voicebox.dm
@@ -21,7 +21,7 @@
/obj/item/organ/internal/voicebox/proc/amend_assist_langs() // Adds the list of language datums assisted by the voicebox to the list used in speaking
for(var/L in will_assist_languages)
- assists_languages |= SScharacters.resolve_language_name(L)
+ assists_languages |= RSlanguages.legacy_resolve_language_name(L)
/obj/item/organ/internal/voicebox/proc/add_assistable_langs(var/language) // Adds a new language (by string/define) to the list of things the voicebox can assist
will_assist_languages |= language
diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm
index 4e637d35a73..960051cba4c 100644
--- a/code/modules/organs/organ.dm
+++ b/code/modules/organs/organ.dm
@@ -76,7 +76,7 @@
//* ## LANGUAGE VARS - For organs that assist with certain languages.
var/list/will_assist_languages = list()
- var/list/datum/language/assists_languages = list()
+ var/list/datum/prototype/language/assists_languages = list()
//* ## VERB VARS
diff --git a/code/modules/preferences/migration.dm b/code/modules/preferences/migration.dm
index e5842251e17..1ef71757609 100644
--- a/code/modules/preferences/migration.dm
+++ b/code/modules/preferences/migration.dm
@@ -114,7 +114,7 @@
character[CHARACTER_DATA_LANGUAGES] = translated_languages
var/list/innate = CS.get_intrinsic_language_ids()
for(var/name in alternate_languages)
- var/datum/language/L = SScharacters.resolve_language_name(name)
+ var/datum/prototype/language/L = RSlanguages.legacy_resolve_language_name(name)
if(L.id in innate)
continue
translated_languages += L.id
diff --git a/code/modules/preferences/preference_setup/background/language.dm b/code/modules/preferences/preference_setup/background/language.dm
index 1bdc114b067..35e4eb6c993 100644
--- a/code/modules/preferences/preference_setup/background/language.dm
+++ b/code/modules/preferences/preference_setup/background/language.dm
@@ -8,7 +8,7 @@
. = list()
var/list/innate_names = list()
for(var/id in prefs.innate_language_ids())
- var/datum/language/L = SScharacters.resolve_language_id(id)
+ var/datum/prototype/language/L = RSlanguages.fetch(id)
innate_names += L.name
. += "Languages"
. += ""
@@ -17,7 +17,7 @@
var/count = 0
for(var/id in prefs.extraneous_language_ids())
++count
- var/datum/language/L = SScharacters.resolve_language_id(id)
+ var/datum/prototype/language/L = RSlanguages.fetch(id)
. += "[L.name] [href_simple(prefs, "remove", "Remove", id)]"
. += " "
if(count < prefs.extraneous_languages_max())
@@ -49,7 +49,7 @@
extra.len = clamp(extra.len, 0, extra_max)
errors?.Add(SPAN_WARNING("truncated [english_list(truncated)] languages - too many!"))
for(var/id in extra)
- if(isnull(SScharacters.resolve_language_id(id)))
+ if(isnull(RSlanguages.fetch(id)))
extra -= id
errors?.Add(SPAN_WARNING("removed id [id] - can't locate it."))
continue
@@ -71,7 +71,7 @@
var/datum/character_species/CS = prefs.character_species_datum()
var/list/whitelisted_ids = CS.get_whitelisted_language_ids() // cache ids from character species for speed
for(var/id in extraneous)
- var/datum/language/L = SScharacters.resolve_language_id(id)
+ var/datum/prototype/language/L = RSlanguages.fetch(id)
if((L.language_flags & LANGUAGE_WHITELISTED) && (!(L.id in whitelisted_ids)) && !config.check_alien_whitelist(ckey(L.name), prefs.client_ckey))
errors?.Add(SPAN_WARNING("[L] is a whitelisted language."))
return FALSE
diff --git a/code/modules/preferences/preference_setup/helpers/language_pick.dm b/code/modules/preferences/preference_setup/helpers/language_pick.dm
index eb7a52085f2..37ec131a21c 100644
--- a/code/modules/preferences/preference_setup/helpers/language_pick.dm
+++ b/code/modules/preferences/preference_setup/helpers/language_pick.dm
@@ -9,7 +9,7 @@
return language_pick_finalize(id, user)
/datum/preferences/proc/language_pick_finalize(id, mob/user)
- var/datum/language/L = SScharacters.resolve_language_id(id)
+ var/datum/prototype/language/L = RSlanguages.fetch(id)
if(!L)
to_chat(user, SPAN_WARNING("BUG: Invalid language ID: [id]"))
return TRUE
@@ -67,7 +67,7 @@ GLOBAL_LIST_EMPTY(language_picker_active)
var/list/data = ..()
var/list/built = list()
var/list/categories = list("General")
- for(var/datum/language/L as anything in SScharacters.all_languages())
+ for(var/datum/prototype/language/L as anything in RSlanguages.fetch_subtypes(/datum/prototype/language))
if(L.language_flags & LANGUAGE_RESTRICTED)
continue
built[++built.len] = list(
diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm
index cb15cedbcf3..ddf6d6a4d18 100644
--- a/code/modules/resleeving/infomorph.dm
+++ b/code/modules/resleeving/infomorph.dm
@@ -411,7 +411,7 @@ var/list/infomorph_emotions = list(
else
to_chat(src,"You don't have a radio!")
-/mob/living/silicon/infomorph/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
+/mob/living/silicon/infomorph/say(var/message, var/datum/prototype/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
if(silence_time)
to_chat(src, "Communication circuits remain uninitialized.")
else
diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm
index 145205f7d83..811b7f9f945 100644
--- a/code/modules/resleeving/machines.dm
+++ b/code/modules/resleeving/machines.dm
@@ -544,7 +544,7 @@
occupant.ghostize()
//Attach as much stuff as possible to the mob.
- for(var/datum/language/L in MR.languages)
+ for(var/datum/prototype/language/L in MR.languages)
occupant.add_language(L.name)
MR.mind_ref.active = 1 //Well, it's about to be.
MR.mind_ref.transfer(occupant) //Does mind+ckey+client.
diff --git a/code/modules/resleeving/sleevecard.dm b/code/modules/resleeving/sleevecard.dm
index a69e1015275..8f5a28237e7 100644
--- a/code/modules/resleeving/sleevecard.dm
+++ b/code/modules/resleeving/sleevecard.dm
@@ -56,7 +56,7 @@
/obj/item/sleevecard/proc/sleeveInto(var/datum/transhuman/mind_record/MR)
infomorph = new(src, src, MR.mindname)
- for(var/datum/language/L in MR.languages)
+ for(var/datum/prototype/language/L in MR.languages)
infomorph.add_language(L.name)
MR.mind_ref.active = 1 //Well, it's about to be.
MR.mind_ref.transfer(infomorph) //Does mind+ckey+client.
diff --git a/code/modules/species/character_species.dm b/code/modules/species/character_species.dm
index 4daea205419..e3a4d8b3091 100644
--- a/code/modules/species/character_species.dm
+++ b/code/modules/species/character_species.dm
@@ -146,16 +146,16 @@
return galactic_language? list(LANGUAGE_ID_COMMON) : list()
. = list()
if(islist(intrinsic_languages))
- for(var/datum/language/id_or_path as anything in intrinsic_languages)
+ for(var/datum/prototype/language/id_or_path as anything in intrinsic_languages)
. += ispath(id_or_path)? initial(id_or_path.id) : id_or_path
else
- var/datum/language/L = intrinsic_languages
+ var/datum/prototype/language/L = intrinsic_languages
. += ispath(L)? initial(L.id) : L
if(galactic_language)
. |= LANGUAGE_ID_COMMON
/datum/character_species/proc/get_name_language_id()
- var/datum/language/L = name_language
+ var/datum/prototype/language/L = name_language
return ispath(name_language)? initial(L.id) : name_language
/datum/character_species/proc/get_max_additional_languages()
@@ -167,14 +167,14 @@
return list()
. = list()
if(islist(whitelist_languages))
- for(var/datum/language/id_or_path as anything in whitelist_languages)
+ for(var/datum/prototype/language/id_or_path as anything in whitelist_languages)
. += ispath(id_or_path)? initial(id_or_path.id) : id_or_path
else
- var/datum/language/L = whitelist_languages
+ var/datum/prototype/language/L = whitelist_languages
. += ispath(L)? initial(L.id) : L
/datum/character_species/proc/get_default_language_id()
- var/datum/language/L = default_language
+ var/datum/prototype/language/L = default_language
return ispath(L)? initial(L.id) : L
/datum/character_species/proc/real_species_uid()
diff --git a/code/modules/species/outsider/vox.dm b/code/modules/species/outsider/vox.dm
index e11bb27dbe5..4d9fd5581af 100644
--- a/code/modules/species/outsider/vox.dm
+++ b/code/modules/species/outsider/vox.dm
@@ -116,7 +116,7 @@
)
/datum/species/vox/get_random_name(gender)
- var/datum/language/species_language = SScharacters.resolve_language(default_language)
+ var/datum/prototype/language/species_language = RSlanguages.fetch(default_language)
return species_language.get_random_name(gender)
/datum/species/vox/equip_survival_gear(mob/living/carbon/human/H, extendedtank = FALSE, comprehensive = FALSE)
diff --git a/code/modules/species/promethean/promethean_blob.dm b/code/modules/species/promethean/promethean_blob.dm
index 835fe946bce..59f53f77086 100644
--- a/code/modules/species/promethean/promethean_blob.dm
+++ b/code/modules/species/promethean/promethean_blob.dm
@@ -520,11 +520,11 @@
if(hat)
. += "They are wearing \a [hat]."
-/mob/living/simple_mob/slime/promethean/say_understands(var/mob/other, var/datum/language/speaking = null)
+/mob/living/simple_mob/slime/promethean/say_understands(var/mob/other, var/datum/prototype/language/speaking = null)
if(speaking?.id == LANGUAGE_ID_PROMETHEAN) //Promethean and sign are both nonverbal, so won't work with the same trick as below, so let's check for them
return TRUE
else if(speaking?.id == LANGUAGE_ID_SIGN)
- for(var/datum/language/L in humanform.languages)
+ for(var/datum/prototype/language/L in humanform.languages)
if(L.id == LANGUAGE_ID_SIGN)
return TRUE
else if(humanform.say_understands(other, speaking)) //So they're speaking something other than promethean or sign, let's just ask our original mob if it understands
diff --git a/code/modules/species/protean/protean_blob.dm b/code/modules/species/protean/protean_blob.dm
index 336209c011b..7b8438c15b9 100644
--- a/code/modules/species/protean/protean_blob.dm
+++ b/code/modules/species/protean/protean_blob.dm
@@ -327,7 +327,7 @@
blob.prev_right_hand = WEAKREF(r_hand)
//languages!!
- for(var/datum/language/L in languages)
+ for(var/datum/prototype/language/L in languages)
blob.add_language(L.name)
//Put our owner in it (don't transfer var/mind)
transfer_client_to(blob)
diff --git a/code/modules/species/species_getters.dm b/code/modules/species/species_getters.dm
index fc3a8c44bb6..076b7dcaecf 100644
--- a/code/modules/species/species_getters.dm
+++ b/code/modules/species/species_getters.dm
@@ -20,7 +20,7 @@
//? Languages
/datum/species/proc/get_default_language_id()
- var/datum/language/L = default_language
+ var/datum/prototype/language/L = default_language
return ispath(L)? initial(L.id) : L
/datum/species/proc/get_intrinsic_language_ids()
@@ -29,16 +29,16 @@
return galactic_language? list(LANGUAGE_ID_COMMON) : list()
. = list()
if(islist(intrinsic_languages))
- for(var/datum/language/id_or_path as anything in intrinsic_languages)
+ for(var/datum/prototype/language/id_or_path as anything in intrinsic_languages)
. += ispath(id_or_path)? initial(id_or_path.id) : id_or_path
else
- var/datum/language/L = intrinsic_languages
+ var/datum/prototype/language/L = intrinsic_languages
. += ispath(L)? initial(L.id) : L
if(galactic_language)
. |= LANGUAGE_ID_COMMON
/datum/species/proc/get_name_language_id()
- var/datum/language/L = name_language
+ var/datum/prototype/language/L = name_language
return ispath(name_language)? initial(L.id) : name_language
/datum/species/proc/get_max_additional_languages()
@@ -50,10 +50,10 @@
return list()
. = list()
if(islist(whitelist_languages))
- for(var/datum/language/id_or_path as anything in whitelist_languages)
+ for(var/datum/prototype/language/id_or_path as anything in whitelist_languages)
. += ispath(id_or_path)? initial(id_or_path.id) : id_or_path
else
- var/datum/language/L = whitelist_languages
+ var/datum/prototype/language/L = whitelist_languages
. += ispath(L)? initial(L.id) : L
//? misc
@@ -162,9 +162,9 @@
else
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
- var/datum/language/species_language = SScharacters.resolve_language_id(get_name_language_id())
+ var/datum/prototype/language/species_language = RSlanguages.fetch(get_name_language_id())
if(!species_language)
- species_language = SScharacters.resolve_language_id(default_language)
+ species_language = RSlanguages.fetch(default_language)
if(!species_language)
return "unknown"
return species_language.get_random_name(gender)
diff --git a/code/modules/species/station/standard/tajaran.dm b/code/modules/species/station/standard/tajaran.dm
index bcee5764a43..1e8b8b3bb9c 100644
--- a/code/modules/species/station/standard/tajaran.dm
+++ b/code/modules/species/station/standard/tajaran.dm
@@ -21,12 +21,12 @@
)
max_additional_languages = 3
- name_language = /datum/language/tajaran
- intrinsic_languages = /datum/language/tajaran
+ name_language = /datum/prototype/language/tajaran
+ intrinsic_languages = /datum/prototype/language/tajaran
whitelist_languages = list(
- /datum/language/tajaran,
- /datum/language/tajaranakhani,
- /datum/language/tajsign
+ /datum/prototype/language/tajaran,
+ /datum/prototype/language/tajaranakhani,
+ /datum/prototype/language/tajsign
)
vision_innate = /datum/vision/baseline/species_tier_2
diff --git a/code/modules/tgui/states/language_menu.dm b/code/modules/tgui/states/language_menu.dm
index 10e96d04fd4..58a09fa543b 100644
--- a/code/modules/tgui/states/language_menu.dm
+++ b/code/modules/tgui/states/language_menu.dm
@@ -13,7 +13,7 @@ GLOBAL_DATUM_INIT(language_menu_state, /datum/ui_state/language_menu, new)
. = UI_CLOSE
if(check_rights_for(user.client, R_ADMIN))
. = UI_INTERACTIVE
- else if(istype(src_object, /datum/language_menu))
- var/datum/language_menu/LM = src_object
+ else if(istype(src_object, /datum/prototype/language_menu))
+ var/datum/prototype/language_menu/LM = src_object
if(LM.language_holder.get_atom() == user)
. = UI_INTERACTIVE
diff --git a/code/modules/xenobio2/mob/slime/slime.dm b/code/modules/xenobio2/mob/slime/slime.dm
index d593a554b15..027c0b5ab80 100644
--- a/code/modules/xenobio2/mob/slime/slime.dm
+++ b/code/modules/xenobio2/mob/slime/slime.dm
@@ -82,7 +82,7 @@ Slime definitions, Life and New live here.
/mob/living/simple_mob/xeno/slime/Initialize(mapload)
. = ..()
- for(var/datum/language/L in (typesof(/datum/language) - /datum/language))
+ for(var/datum/prototype/language/L in (typesof(/datum/prototype/language) - /datum/prototype/language))
languages += L
speak += "[station_name()]?"
traitdat.source = "Slime"
diff --git a/code/modules/xenobio2/mob/xeno procs.dm b/code/modules/xenobio2/mob/xeno procs.dm
index 99c7e66db44..8b7af0ced84 100644
--- a/code/modules/xenobio2/mob/xeno procs.dm
+++ b/code/modules/xenobio2/mob/xeno procs.dm
@@ -112,7 +112,7 @@ Divergence proc, used in mutation to make unique datums.
/mob/living/simple_mob/xeno/proc/RandomizeTraits()
return
-/mob/living/simple_mob/xeno/hear_say(var/message, var/verb = "says", var/datum/language/language, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
+/mob/living/simple_mob/xeno/hear_say(var/message, var/verb = "says", var/datum/prototype/language/language, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
if(traitdat.traits[TRAIT_XENO_CANLEARN])
/*
Until this gets sorted out to a functioning point, or waiting on Psi's saycode update.
diff --git a/code/unit_tests/language/id_sanity.dm b/code/unit_tests/language/id_sanity.dm
index 3091754a8dd..6a354c72146 100644
--- a/code/unit_tests/language/id_sanity.dm
+++ b/code/unit_tests/language/id_sanity.dm
@@ -2,8 +2,8 @@
var/list/ids = list()
var/list/names = list()
var/list/keys = list()
- for(var/path in subtypesof(/datum/language))
- var/datum/language/L = path
+ for(var/path in subtypesof(/datum/prototype/language))
+ var/datum/prototype/language/L = path
if(initial(L.abstract_type) == path)
continue
L = new path
@@ -26,4 +26,4 @@
Fail("collision on key [L.key] between [path] and [keys[L.key]]")
else
keys[L.key] = path
-
+