mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Merge branch 'master' of https://github.com/VOREStation/VOREStation into making-of-shadekin
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
syllables = list(
|
||||
"vol", "zum", "coo","zoo","bi","do","ooz","ite","og","re","si","ite","ish",
|
||||
"ar","at","on","ee","east","ma","da", "rim")
|
||||
partial_understanding = list(LANGUAGE_SKRELLIAN = 30, LANGUAGE_SOL_COMMON = 30)
|
||||
|
||||
//TODO flag certain languages to use the mob-type specific say_quote and then get rid of these.
|
||||
/datum/language/common/get_spoken_verb(var/msg_end)
|
||||
@@ -64,6 +65,7 @@
|
||||
colour = "terminus"
|
||||
key = "4"
|
||||
// flags = WHITELISTED (VOREstation edit)
|
||||
// partial_understanding = list(LANGUAGE_SOL_COMMON = 20) (VOREStation Edit: It is a Zorren language now)
|
||||
syllables = list (".a", "spa", "pan", "blaif", "stra", "!u", "!ei", "!am", "by", ".y", "gry", "zbly", "!y", "fl",
|
||||
"sm", "rn", "cpi", "ku", "koi", "pr", "glau", "stu", "ved", "ki", "tsa", "xau", "jbu", "sny", "stro", "nu",
|
||||
"uan", "ju", "!i", "ge", "luk", "an", "ar", "at", "es", "et", "bel", "ki", "jaa", "ch", "ki", "gh", "ll", "uu", "wat")
|
||||
@@ -76,6 +78,7 @@
|
||||
colour = "rough"
|
||||
key = "3"
|
||||
space_chance = 45
|
||||
partial_understanding = list(LANGUAGE_GALCOM = 10, LANGUAGE_TRADEBAND = 20, LANGUAGE_SOL_COMMON = 20)
|
||||
syllables = list (
|
||||
"gra","ba","ba","breh","bra","rah","dur","ra","ro","gro","go","ber","bar","geh","heh", "gra",
|
||||
"a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao",
|
||||
@@ -211,4 +214,4 @@
|
||||
)
|
||||
|
||||
/datum/language/gibberish/can_speak_special(var/mob/speaker)
|
||||
return TRUE //Anyone can speak gibberish
|
||||
return TRUE //Anyone can speak gibberish
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
var/list/syllables // Used when scrambling text for a non-speaker.
|
||||
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
|
||||
var/machine_understands = 1 // Whether machines can parse and understand this language
|
||||
var/list/partial_understanding // List of languages that can /somehwat/ understand it, format is: name = chance of understanding a word
|
||||
|
||||
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
|
||||
if(!syllables || !syllables.len)
|
||||
@@ -41,8 +42,42 @@
|
||||
/datum/language
|
||||
var/list/scramble_cache = list()
|
||||
|
||||
/datum/language/proc/scramble(var/input)
|
||||
/datum/language/proc/scramble(var/input, var/list/known_languages)
|
||||
var/understand_chance = 0
|
||||
for(var/datum/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])
|
||||
understand_chance += L.partial_understanding[name] * 0.5
|
||||
var/scrambled_text = ""
|
||||
var/list/words = splittext(input, " ")
|
||||
for(var/w in words)
|
||||
if(prob(understand_chance))
|
||||
scrambled_text += " [w] "
|
||||
else
|
||||
var/nword = scramble_word(w)
|
||||
var/ending = copytext(scrambled_text, length(scrambled_text)-1)
|
||||
if(findtext(ending,"."))
|
||||
nword = capitalize(nword)
|
||||
else if(findtext(ending,"!"))
|
||||
nword = capitalize(nword)
|
||||
else if(findtext(ending,"?"))
|
||||
nword = capitalize(nword)
|
||||
scrambled_text += nword
|
||||
scrambled_text = replacetext(scrambled_text," "," ")
|
||||
scrambled_text = capitalize(scrambled_text)
|
||||
scrambled_text = trim(scrambled_text)
|
||||
var/ending = copytext(scrambled_text, length(scrambled_text))
|
||||
if(ending == ".")
|
||||
scrambled_text = copytext(scrambled_text,1,length(scrambled_text)-1)
|
||||
|
||||
var/input_ending = copytext(input, length(input))
|
||||
if(input_ending in list("!","?","."))
|
||||
scrambled_text += input_ending
|
||||
|
||||
return scrambled_text
|
||||
|
||||
/datum/language/proc/scramble_word(var/input)
|
||||
if(!syllables || !syllables.len)
|
||||
return stars(input)
|
||||
|
||||
@@ -55,7 +90,7 @@
|
||||
|
||||
var/input_size = length(input)
|
||||
var/scrambled_text = ""
|
||||
var/capitalize = 1
|
||||
var/capitalize = 0
|
||||
|
||||
while(length(scrambled_text) < input_size)
|
||||
var/next = pick(syllables)
|
||||
@@ -70,14 +105,6 @@
|
||||
else if(chance > 5 && chance <= space_chance)
|
||||
scrambled_text += " "
|
||||
|
||||
scrambled_text = trim(scrambled_text)
|
||||
var/ending = copytext(scrambled_text, length(scrambled_text))
|
||||
if(ending == ".")
|
||||
scrambled_text = copytext(scrambled_text,1,length(scrambled_text)-1)
|
||||
var/input_ending = copytext(input, input_size)
|
||||
if(input_ending in list("!","?","."))
|
||||
scrambled_text += input_ending
|
||||
|
||||
// Add it to cache, cutting old entries if the list is too long
|
||||
scramble_cache[input] = scrambled_text
|
||||
if(scramble_cache.len > SCRAMBLE_CACHE_LEN)
|
||||
@@ -137,6 +164,11 @@
|
||||
if(name != "Noise") // Audible Emotes
|
||||
if(ishuman(speaker))
|
||||
var/mob/living/carbon/human/H = speaker
|
||||
if(H.species.has_organ[O_VOICE] && !(flags & SIGNLANG) && !(flags & NONVERBAL)) // Does the species need a voicebox? Is the language even spoken?
|
||||
var/obj/item/organ/internal/voicebox/vocal = H.internal_organs_by_name[O_VOICE]
|
||||
if(!vocal || vocal.is_broken() || vocal.mute)
|
||||
return FALSE
|
||||
|
||||
if(src.name in H.species.assisted_langs)
|
||||
. = FALSE
|
||||
var/obj/item/organ/internal/voicebox/vox = locate() in H.internal_organs // Only voiceboxes for now. Maybe someday it'll include other organs, but I'm not that clever
|
||||
|
||||
@@ -5,24 +5,28 @@
|
||||
ask_verb = "chimpers"
|
||||
exclaim_verb = "screeches"
|
||||
key = "6"
|
||||
syllables = list("ook","eek")
|
||||
machine_understands = 0
|
||||
|
||||
/datum/language/skrell/monkey
|
||||
name = "Neaera"
|
||||
desc = "Squik squik squik."
|
||||
key = "8"
|
||||
syllables = list("hiss","gronk")
|
||||
machine_understands = 0
|
||||
|
||||
/datum/language/unathi/monkey
|
||||
name = "Stok"
|
||||
desc = "Hiss hiss hiss."
|
||||
key = "7"
|
||||
syllables = list("squick","croak")
|
||||
machine_understands = 0
|
||||
|
||||
/datum/language/tajaran/monkey
|
||||
name = "Farwa"
|
||||
desc = "Meow meow meow."
|
||||
key = "9"
|
||||
syllables = list("meow","mew")
|
||||
machine_understands = 0
|
||||
|
||||
/datum/language/corgi
|
||||
|
||||
@@ -94,6 +94,19 @@
|
||||
machine_understands = FALSE
|
||||
flags = WHITELISTED | HIVEMIND
|
||||
|
||||
/datum/language/human/slavic
|
||||
name = LANGUAGE_SLAVIC
|
||||
desc = "The official language of the Independent Colonial Confederation of Gilgamesh, originally established in 2122 by the short-lived United Slavic Confederation on Earth."
|
||||
colour = "solcom"
|
||||
key = "r"
|
||||
|
||||
syllables = list(
|
||||
"rus", "zem", "ave", "groz", "ski", "ska", "ven", "konst", "pol", "lin", "svy",
|
||||
"danya", "da", "mied", "zan", "das", "krem", "myka", "to", "st", "no", "na", "ni",
|
||||
"ko", "ne", "en", "po", "ra", "li", "on", "byl", "cto", "eni", "ost", "ol", "ego",
|
||||
"ver", "stv", "pro"
|
||||
)
|
||||
|
||||
/datum/language/unathi
|
||||
flags = 0
|
||||
/datum/language/tajaran
|
||||
@@ -116,4 +129,4 @@
|
||||
/datum/language/unathi/monkey
|
||||
flags = RESTRICTED
|
||||
/datum/language/tajaran/monkey
|
||||
flags = RESTRICTED
|
||||
flags = RESTRICTED
|
||||
|
||||
Reference in New Issue
Block a user