Moves languages to use more defines. Redoes Diona splitting

This commit is contained in:
Anewbe
2017-01-14 22:47:12 -06:00
parent 93a630e2e8
commit 2d72e609d1
24 changed files with 167 additions and 76 deletions

View File

@@ -5,12 +5,15 @@
#define NO_PAIN 0x8 // Cannot suffer halloss/recieves deceptive health indicator. #define NO_PAIN 0x8 // Cannot suffer halloss/recieves deceptive health indicator.
#define NO_SLIP 0x10 // Cannot fall over. #define NO_SLIP 0x10 // Cannot fall over.
#define NO_POISON 0x20 // Cannot not suffer toxloss. #define NO_POISON 0x20 // Cannot not suffer toxloss.
#define NO_EMBED 0x40 // Can step on broken glass with no ill-effects and cannot have shrapnel embedded in it.
// unused: 0x8000 - higher than this will overflow // unused: 0x8000 - higher than this will overflow
// Species spawn flags // Species spawn flags
#define SPECIES_IS_WHITELISTED 0x1 // Must be whitelisted to play. #define SPECIES_IS_WHITELISTED 0x1 // Must be whitelisted to play.
#define SPECIES_IS_RESTRICTED 0x2 // Is not a core/normally playable species. (castes, mutantraces) #define SPECIES_IS_RESTRICTED 0x2 // Is not a core/normally playable species. (castes, mutantraces)
#define SPECIES_CAN_JOIN 0x4 // Species is selectable in chargen. #define SPECIES_CAN_JOIN 0x4 // Species is selectable in chargen.
#define SPECIES_NO_FBP_CONSTRUCTION 0x8 // FBP of this species can't be made in-game.
#define SPECIES_NO_FBP_CHARGEN 0x10 // FBP of this species can't be selected at chargen.
// Species appearance flags // Species appearance flags
#define HAS_SKIN_TONE 0x1 // Skin tone selectable in chargen. (0-255) #define HAS_SKIN_TONE 0x1 // Skin tone selectable in chargen. (0-255)
@@ -22,15 +25,19 @@
#define RADIATION_GLOWS 0x40 // Radiation causes this character to glow. #define RADIATION_GLOWS 0x40 // Radiation causes this character to glow.
// Languages. // Languages.
#define LANGUAGE_GALCOM "Galactic Common"
#define LANGUAGE_EAL "Encoded Audio Language"
#define LANGUAGE_SOL_COMMON "Sol Common" #define LANGUAGE_SOL_COMMON "Sol Common"
#define LANGUAGE_UNATHI "Sinta'unathi" #define LANGUAGE_UNATHI "Sinta'unathi"
#define LANGUAGE_SIIK "Siik" #define LANGUAGE_SIIK "Siik"
#define LANGUAGE_SKRELLIAN "Skrellian" #define LANGUAGE_SKRELLIAN "Skrellian"
#define LANGUAGE_ROOTSPEAK "Rootspeak"
#define LANGUAGE_TRADEBAND "Tradeband" #define LANGUAGE_TRADEBAND "Tradeband"
#define LANGUAGE_GUTTER "Gutter" #define LANGUAGE_GUTTER "Gutter"
#define LANGUAGE_SCHECHI "Schechi" #define LANGUAGE_SCHECHI "Schechi"
#define LANGUAGE_ROOTLOCAL "Local Rootspeak"
#define LANGUAGE_ROOTGLOBAL "Global Rootspeak"
#define LANGUAGE_CULT "Cult" #define LANGUAGE_CULT "Cult"
#define LANGUAGE_SIGN "Sign Language"
// Language flags. // Language flags.
#define WHITELISTED 1 // Language is available if the speaker is whitelisted. #define WHITELISTED 1 // Language is available if the speaker is whitelisted.
@@ -42,3 +49,4 @@
#define INNATE 64 // All mobs can be assumed to speak and understand this language. (audible emotes) #define INNATE 64 // All mobs can be assumed to speak and understand this language. (audible emotes)
#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message #define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message
#define NO_STUTTER 256 // No stuttering, slurring, or other speech problems #define NO_STUTTER 256 // No stuttering, slurring, or other speech problems
#define ALT_TRANSMIT 512 // Language is not based on vision or sound (Todo: add this into the say code and use it for the rootspeak languages)

View File

@@ -14,7 +14,7 @@
P.name = "Spaceball Jones, [year] Brickburn Galaxy Trekers" P.name = "Spaceball Jones, [year] Brickburn Galaxy Trekers"
P.card_icon = "spaceball_jones" P.card_icon = "spaceball_jones"
else else
var/language_type = pick(/datum/language/human,/datum/language/diona,/datum/language/tajaran,/datum/language/unathi) var/language_type = pick(/datum/language/human,/datum/language/diona_local,/datum/language/tajaran,/datum/language/unathi)
var/datum/language/L = new language_type() var/datum/language/L = new language_type()
var/team = pick("Brickburn Galaxy Trekers","Mars Rovers", "Qerrbalak Saints", "Moghes Rockets", "Meralar Lightning", starsys_name+" Vixens", "Euphoric-Earth Alligators") var/team = pick("Brickburn Galaxy Trekers","Mars Rovers", "Qerrbalak Saints", "Moghes Rockets", "Meralar Lightning", starsys_name+" Vixens", "Euphoric-Earth Alligators")
P.name = "[L.get_random_name(pick(MALE,FEMALE))], [year - rand(0,50)] [team]" P.name = "[L.get_random_name(pick(MALE,FEMALE))], [year - rand(0,50)] [team]"

View File

@@ -20,7 +20,7 @@
// 'basic' language; spoken by default. // 'basic' language; spoken by default.
/datum/language/common /datum/language/common
name = "Galactic Common" name = LANGUAGE_GALCOM
desc = "The common galactic tongue." desc = "The common galactic tongue."
speech_verb = "says" speech_verb = "says"
whisper_verb = "whispers" whisper_verb = "whispers"
@@ -39,7 +39,7 @@
// Galactic common languages (systemwide accepted standards). // Galactic common languages (systemwide accepted standards).
/datum/language/trader /datum/language/trader
name = "Tradeband" name = LANGUAGE_TRADEBAND
desc = "Maintained by the various trading cartels in major systems, this elegant, structured language is used for bartering and bargaining." desc = "Maintained by the various trading cartels in major systems, this elegant, structured language is used for bartering and bargaining."
speech_verb = "enunciates" speech_verb = "enunciates"
colour = "say_quote" colour = "say_quote"
@@ -56,7 +56,7 @@
// Criminal language. // Criminal language.
/datum/language/gutter /datum/language/gutter
name = "Gutter" name = LANGUAGE_GUTTER
desc = "There is no true language named Gutter. 'Gutter' is a catchall term for a collection of unofficial SolCom dialects that has somehow managed to spread across the stars." desc = "There is no true language named Gutter. 'Gutter' is a catchall term for a collection of unofficial SolCom dialects that has somehow managed to spread across the stars."
speech_verb = "growls" speech_verb = "growls"
colour = "rough" colour = "rough"
@@ -115,7 +115,7 @@
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi") "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi")
/datum/language/sign /datum/language/sign
name = "Sign Language" name = LANGUAGE_SIGN
desc = "A sign language commonly used for those who are deaf or mute." desc = "A sign language commonly used for those who are deaf or mute."
signlang_verb = list("gestures") signlang_verb = list("gestures")
colour = "say_quote" colour = "say_quote"

View File

@@ -160,12 +160,15 @@
// Can we speak this language, as opposed to just understanding it? // Can we speak this language, as opposed to just understanding it?
/mob/proc/can_speak(datum/language/speaking) /mob/proc/can_speak(datum/language/speaking)
//Prevents someone from speaking a null language. //Prevents someone from speaking a null language.
if(speaking) if(!speaking)
return (speaking.can_speak_special(src) && (universal_speak || (speaking && (speaking.flags & INNATE)) || speaking in src.languages))
else
log_debug("[src] attempted to speak a null language.") log_debug("[src] attempted to speak a null language.")
return 0 return 0
if (only_species_language && speaking != all_languages[species_language])
return 0
return (speaking.can_speak_special(src) && (universal_speak || (speaking && (speaking.flags & INNATE)) || speaking in src.languages))
/mob/proc/get_language_prefix() /mob/proc/get_language_prefix()
if(client && client.prefs.language_prefixes && client.prefs.language_prefixes.len) if(client && client.prefs.language_prefixes && client.prefs.language_prefixes.len)
return client.prefs.language_prefixes[1] return client.prefs.language_prefixes[1]
@@ -213,7 +216,10 @@
/mob/living/Topic(href, href_list) /mob/living/Topic(href, href_list)
if(href_list["default_lang"]) if(href_list["default_lang"])
if(href_list["default_lang"] == "reset") if(href_list["default_lang"] == "reset")
set_default_language(null) if (species_language)
set_default_language(all_languages[species_language])
else
set_default_language(null)
else else
var/datum/language/L = locate(href_list["default_lang"]) var/datum/language/L = locate(href_list["default_lang"])
if(L && (L in languages)) if(L && (L in languages))
@@ -223,4 +229,10 @@
else else
return ..() return ..()
/proc/transfer_languages(var/mob/source, var/mob/target, var/except_flags)
for(var/datum/language/L in source.languages)
if(L.flags & except_flags)
continue
target.add_language(L.name)
#undef SCRAMBLE_CACHE_LEN #undef SCRAMBLE_CACHE_LEN

View File

@@ -1,6 +1,6 @@
/datum/language/diona /datum/language/diona_local
name = "Rootspeak" name = LANGUAGE_ROOTLOCAL
desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootspeak can be a combination of anywhere from one to twelve individual voices and notes." desc = "A complex language known instinctively by Dionaea, 'spoken' by emitting modulated radio waves. This version uses high frequency waves for quick communication at short ranges."
speech_verb = "creaks and rustles" speech_verb = "creaks and rustles"
ask_verb = "creaks" ask_verb = "creaks"
exclaim_verb = "rustles" exclaim_verb = "rustles"
@@ -9,13 +9,19 @@
flags = RESTRICTED flags = RESTRICTED
syllables = list("hs","zt","kr","st","sh") syllables = list("hs","zt","kr","st","sh")
/datum/language/diona/get_random_name() /datum/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"))]" 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"))]" 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 return new_name
/datum/language/diona_global
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."
key = "w"
flags = RESTRICTED | HIVEMIND
/datum/language/unathi /datum/language/unathi
name = "Sinta'unathi" name = LANGUAGE_UNATHI
desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi." desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi."
speech_verb = "hisses" speech_verb = "hisses"
ask_verb = "hisses" ask_verb = "hisses"
@@ -42,7 +48,7 @@
return capitalize(new_name) return capitalize(new_name)
/datum/language/tajaran /datum/language/tajaran
name = "Siik" name = LANGUAGE_SIIK
desc = "The most prevalant language of Meralar, composed of expressive yowls and chirps. Native to the Tajaran." desc = "The most prevalant language of Meralar, composed of expressive yowls and chirps. Native to the Tajaran."
speech_verb = "mrowls" speech_verb = "mrowls"
ask_verb = "mrowls" ask_verb = "mrowls"
@@ -65,7 +71,7 @@
return new_name return new_name
/datum/language/skrell /datum/language/skrell
name = "Skrellian" name = LANGUAGE_SKRELLIAN
desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans." desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans."
speech_verb = "warbles" speech_verb = "warbles"
ask_verb = "warbles" ask_verb = "warbles"
@@ -76,7 +82,7 @@
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!")
/datum/language/human /datum/language/human
name = "Sol Common" name = LANGUAGE_SOL_COMMON
desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system." desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system."
speech_verb = "says" speech_verb = "says"
whisper_verb = "whispers" whisper_verb = "whispers"
@@ -104,8 +110,8 @@
return ..() return ..()
/datum/language/machine /datum/language/machine
name = "Encoded Audio Language" name = LANGUAGE_EAL
desc = "A efficient language of encoded tones developed by synthetics and cyborgs." desc = "An efficient language of encoded tones developed by synthetics and cyborgs."
speech_verb = "whistles" speech_verb = "whistles"
ask_verb = "chirps" ask_verb = "chirps"
exclaim_verb = "whistles loudly" exclaim_verb = "whistles loudly"
@@ -127,7 +133,7 @@
return pick(ai_names) return pick(ai_names)
/datum/language/seromi /datum/language/seromi
name = "Schechi" name = LANGUAGE_SCHECHI
desc = "A trilling language spoken by the diminutive Teshari." desc = "A trilling language spoken by the diminutive Teshari."
speech_verb = "chirps" speech_verb = "chirps"
ask_verb = "chirrups" ask_verb = "chirrups"

View File

@@ -7,9 +7,11 @@
speak_emote = list("chirrups") speak_emote = list("chirrups")
icon_state = "nymph" icon_state = "nymph"
item_state = "nymph" item_state = "nymph"
language = "Rootspeak" language = LANGUAGE_ROOTLOCAL
species_language = LANGUAGE_ROOTLOCAL
only_species_language = 1
death_msg = "expires with a pitiful chirrup..." death_msg = "expires with a pitiful chirrup..."
universal_understand = 1 universal_understand = 0
universal_speak = 0 // Dionaea do not need to speak to people other than other dionaea. universal_speak = 0 // Dionaea do not need to speak to people other than other dionaea.
can_pull_size = ITEMSIZE_SMALL can_pull_size = ITEMSIZE_SMALL
@@ -22,6 +24,8 @@
..() ..()
species = all_species["Diona"] species = all_species["Diona"]
add_language(LANGUAGE_ROOTGLOBAL)
add_language(LANGUAGE_GALCOM)
verbs += /mob/living/carbon/alien/diona/proc/merge verbs += /mob/living/carbon/alien/diona/proc/merge
/mob/living/carbon/alien/diona/put_in_hands(var/obj/item/W) // No hands. /mob/living/carbon/alien/diona/put_in_hands(var/obj/item/W) // No hands.

View File

@@ -28,6 +28,8 @@
adult.set_species(new_species) adult.set_species(new_species)
show_evolution_blurb() show_evolution_blurb()
transfer_languages(src, adult)
if(mind) if(mind)
mind.transfer_to(adult) mind.transfer_to(adult)
if (can_namepick_as_adult) if (can_namepick_as_adult)

View File

@@ -17,9 +17,6 @@
var/datum/language/speaking = parse_language(message) var/datum/language/speaking = parse_language(message)
if(speaking)
message = copytext(message, 2+length(speaking.key))
message = trim(message) message = trim(message)
if(!message || stat) if(!message || stat)

View File

@@ -177,7 +177,7 @@
/obj/item/device/mmi/digital/New() /obj/item/device/mmi/digital/New()
src.brainmob = new(src) src.brainmob = new(src)
src.brainmob.add_language("Robot Talk") src.brainmob.add_language("Robot Talk")
src.brainmob.add_language("Encoded Audio Language") src.brainmob.add_language(LANGUAGE_EAL)
src.brainmob.loc = src src.brainmob.loc = src
src.brainmob.container = src src.brainmob.container = src
src.brainmob.stat = 0 src.brainmob.stat = 0

View File

@@ -4,6 +4,8 @@
ingested = new/datum/reagents/metabolism(1000, src, CHEM_INGEST) ingested = new/datum/reagents/metabolism(1000, src, CHEM_INGEST)
touching = new/datum/reagents/metabolism(1000, src, CHEM_TOUCH) touching = new/datum/reagents/metabolism(1000, src, CHEM_TOUCH)
reagents = bloodstr reagents = bloodstr
if (!default_language && species_language)
default_language = all_languages[species_language]
..() ..()
/mob/living/carbon/Life() /mob/living/carbon/Life()

View File

@@ -114,11 +114,15 @@
set name = "Split" set name = "Split"
set desc = "Split your humanoid form into its constituent nymphs." set desc = "Split your humanoid form into its constituent nymphs."
set category = "Abilities" set category = "Abilities"
diona_split_into_nymphs(5) // Separate proc to void argments being supplied when used as a verb
/mob/living/carbon/human/proc/diona_split_into_nymphs(var/number_of_resulting_nymphs)
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
var/mob/living/carbon/alien/diona/S = new(T) var/mob/living/carbon/alien/diona/S = new(T)
S.set_dir(dir) S.set_dir(dir)
transfer_languages(src, S)
if(mind) if(mind)
mind.transfer_to(S) mind.transfer_to(S)
@@ -129,12 +133,14 @@
for(var/mob/living/carbon/alien/diona/D in src) for(var/mob/living/carbon/alien/diona/D in src)
nymphs++ nymphs++
D.loc = T D.forceMove(T)
transfer_languages(src, D, WHITELISTED|RESTRICTED)
D.set_dir(pick(NORTH, SOUTH, EAST, WEST)) D.set_dir(pick(NORTH, SOUTH, EAST, WEST))
if(nymphs < 5) if(nymphs < number_of_resulting_nymphs)
for(var/i in nymphs to 4) for(var/i in nymphs to (number_of_resulting_nymphs - 1))
var/mob/M = new /mob/living/carbon/alien/diona(T) var/mob/M = new /mob/living/carbon/alien/diona(T)
transfer_languages(src, M, WHITELISTED|RESTRICTED)
M.set_dir(pick(NORTH, SOUTH, EAST, WEST)) M.set_dir(pick(NORTH, SOUTH, EAST, WEST))

View File

@@ -40,13 +40,13 @@
var/max_age = 70 var/max_age = 70
// Language/culture vars. // Language/culture vars.
var/default_language = "Galactic Common" // Default language is used when 'say' is used without modifiers. var/default_language = LANGUAGE_GALCOM // Default language is used when 'say' is used without modifiers.
var/language = "Galactic Common" // Default racial language, if any. var/language = LANGUAGE_GALCOM // Default racial language, if any.
var/list/secondary_langs = list() // The names of secondary languages that are available to this species. var/list/secondary_langs = list() // The names of secondary languages that are available to this species.
var/list/speech_sounds // A list of sounds to potentially play when speaking. var/list/speech_sounds // A list of sounds to potentially play when speaking.
var/list/speech_chance // The likelihood of a speech sound playing. var/list/speech_chance // The likelihood of a speech sound playing.
var/num_alternate_languages = 0 // How many secondary languages are available to select at character creation var/num_alternate_languages = 0 // How many secondary languages are available to select at character creation
var/name_language = "Galactic Common" // The language to use when determining names for this species, or null to use the first name/last name generator var/name_language = LANGUAGE_GALCOM // The language to use when determining names for this species, or null to use the first name/last name generator
// Combat vars. // Combat vars.
var/total_health = 100 // Point at which the mob will enter crit. var/total_health = 100 // Point at which the mob will enter crit.

View File

@@ -7,8 +7,8 @@
are only recently becoming known on human stations after reaching space with Skrell assistance." are only recently becoming known on human stations after reaching space with Skrell assistance."
num_alternate_languages = 3 num_alternate_languages = 3
secondary_langs = list("Schechi", "Skrellian") secondary_langs = list(LANGUAGE_SCHECHI, LANGUAGE_SKRELLIAN)
name_language = "Schechi" name_language = LANGUAGE_SCHECHI
min_age = 12 min_age = 12
max_age = 45 max_age = 45
health_hud_intensity = 3 health_hud_intensity = 3

View File

@@ -9,7 +9,7 @@
interests, rampant cyber and bio-augmentation and secretive factions make life on most human \ interests, rampant cyber and bio-augmentation and secretive factions make life on most human \
worlds tumultous at best." worlds tumultous at best."
num_alternate_languages = 3 num_alternate_languages = 3
secondary_langs = list("Sol Common") secondary_langs = list(LANGUAGE_SOL_COMMON)
name_language = null // Use the first-name last-name generator rather than a language scrambler name_language = null // Use the first-name last-name generator rather than a language scrambler
min_age = 17 min_age = 17
max_age = 110 max_age = 110
@@ -35,8 +35,8 @@
slowdown = 0.5 slowdown = 0.5
brute_mod = 0.8 brute_mod = 0.8
num_alternate_languages = 3 num_alternate_languages = 3
secondary_langs = list("Sinta'unathi") secondary_langs = list(LANGUAGE_UNATHI)
name_language = "Sinta'unathi" name_language = LANGUAGE_UNATHI
health_hud_intensity = 2.5 health_hud_intensity = 2.5
min_age = 18 min_age = 18
@@ -96,8 +96,8 @@
burn_mod = 1.15 burn_mod = 1.15
gluttonous = 1 gluttonous = 1
num_alternate_languages = 3 num_alternate_languages = 3
secondary_langs = list("Siik") secondary_langs = list(LANGUAGE_SIIK)
name_language = "Siik" name_language = LANGUAGE_SIIK
health_hud_intensity = 2.5 health_hud_intensity = 2.5
min_age = 17 min_age = 17
@@ -152,8 +152,8 @@
herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \ herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \
the secrets of their empire to their allies." the secrets of their empire to their allies."
num_alternate_languages = 3 num_alternate_languages = 3
secondary_langs = list("Skrellian", "Schechi") secondary_langs = list(LANGUAGE_SKRELLIAN, LANGUAGE_SCHECHI)
name_language = "Skrellian" name_language = LANGUAGE_SKRELLIAN
health_hud_intensity = 2 health_hud_intensity = 2
min_age = 19 min_age = 19
@@ -197,7 +197,7 @@
name_plural = "Dionaea" name_plural = "Dionaea"
icobase = 'icons/mob/human_races/r_diona.dmi' icobase = 'icons/mob/human_races/r_diona.dmi'
deform = 'icons/mob/human_races/r_def_plant.dmi' deform = 'icons/mob/human_races/r_def_plant.dmi'
language = "Rootspeak" language = LANGUAGE_ROOTLOCAL
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/diona) unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/diona)
//primitive_form = "Nymph" //primitive_form = "Nymph"
slowdown = 5 slowdown = 5
@@ -206,7 +206,8 @@
siemens_coefficient = 0.3 siemens_coefficient = 0.3
show_ssd = "completely quiescent" show_ssd = "completely quiescent"
num_alternate_languages = 2 num_alternate_languages = 2
name_language = "Rootspeak" secondary_langs = list(LANGUAGE_ROOTGLOBAL)
name_language = LANGUAGE_ROOTLOCAL
health_hud_intensity = 2.5 health_hud_intensity = 2.5
min_age = 1 min_age = 1

View File

@@ -5,11 +5,18 @@
set name = "Set Default Language" set name = "Set Default Language"
set category = "IC" set category = "IC"
if(language && !can_speak(language)) if (only_species_language && language != all_languages[src.species_language])
src << "<span class='notice'>You are unable to speak that language.</span>" to_chat(src, "<span class='notice'>You can only speak your species language, [src.species_language].</span>")
return return 0
if(language == all_languages[src.species_language])
to_chat(src, "<span class='notice'>You will now speak your standard default language, [language], if you do not specify a language when speaking.</span>")
else if (language)
if(language && !can_speak(language))
to_chat(src, "<span class='notice'>You are unable to speak that language.</span>")
return
if(language)
src << "<span class='notice'>You will now speak [language] if you do not specify a language when speaking.</span>" src << "<span class='notice'>You will now speak [language] if you do not specify a language when speaking.</span>"
else else
src << "<span class='notice'>You will now speak whatever your standard default language is if you do not specify one when speaking.</span>" src << "<span class='notice'>You will now speak whatever your standard default language is if you do not specify one when speaking.</span>"

View File

@@ -148,15 +148,16 @@ var/list/ai_verbs_hidden = list( // For why this exists, refer to https://xkcd.c
//Languages //Languages
add_language("Robot Talk", 1) add_language("Robot Talk", 1)
add_language("Galactic Common", 1) add_language(LANGUAGE_GALCOM, 1)
add_language("Sol Common", 0) add_language(LANGUAGE_SOL_COMMON, 0)
add_language("Sinta'unathi", 0) add_language(LANGUAGE_UNATHI, 0)
add_language("Siik", 0) add_language(LANGUAGE_SIIK, 0)
add_language("Skrellian", 0) add_language(LANGUAGE_SKRELLIAN, 0)
add_language("Tradeband", 1) add_language(LANGUAGE_TRADEBAND, 1)
add_language("Gutter", 0) add_language(LANGUAGE_GUTTER, 0)
add_language("Encoded Audio Language", 1) add_language(LANGUAGE_EAL, 1)
add_language("Schechi", 0) add_language(LANGUAGE_SCHECHI, 0)
add_language(LANGUAGE_SIGN, 0)
if(!safety)//Only used by AIize() to successfully spawn an AI. if(!safety)//Only used by AIize() to successfully spawn an AI.
if (!B)//If there is no player/brain inside. if (!B)//If there is no player/brain inside.

View File

@@ -89,10 +89,11 @@
radio = card.radio radio = card.radio
//Default languages without universal translator software //Default languages without universal translator software
add_language("Sol Common", 1) add_language(LANGUAGE_SOL_COMMON, 1)
add_language("Tradeband", 1) add_language(LANGUAGE_TRADEBAND, 1)
add_language("Gutter", 1) add_language(LANGUAGE_GUTTER, 1)
add_language("Encoded Audio Language", 1) add_language(LANGUAGE_EAL, 1)
add_language(LANGUAGE_SIGN, 0)
verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_chassis
verbs += /mob/living/silicon/pai/proc/choose_verbs verbs += /mob/living/silicon/pai/proc/choose_verbs

View File

@@ -468,13 +468,15 @@
// Sol Common, Tradeband and Gutter are added with New() and are therefore the current default, always active languages // Sol Common, Tradeband and Gutter are added with New() and are therefore the current default, always active languages
user.translator_on = !user.translator_on user.translator_on = !user.translator_on
if(user.translator_on) if(user.translator_on)
user.add_language("Sinta'unathi") user.add_language(LANGUAGE_UNATHI)
user.add_language("Siik") user.add_language(LANGUAGE_SIIK)
user.add_language("Skrellian") user.add_language(LANGUAGE_SKRELLIAN)
user.add_language(LANGUAGE_SCHECHI)
else else
user.remove_language("Sinta'unathi") user.remove_language(LANGUAGE_UNATHI)
user.remove_language("Siik") user.remove_language(LANGUAGE_SIIK)
user.remove_language("Skrellian") user.remove_language(LANGUAGE_SKRELLIAN)
user.remove_language(LANGUAGE_SCHECHI)
is_active(mob/living/silicon/pai/user) is_active(mob/living/silicon/pai/user)
return user.translator_on return user.translator_on

View File

@@ -99,7 +99,7 @@
spark_system.attach(src) spark_system.attach(src)
add_language("Robot Talk", 1) add_language("Robot Talk", 1)
add_language("Encoded Audio Language", 1) add_language(LANGUAGE_EAL, 1)
wires = new(src) wires = new(src)

View File

@@ -23,7 +23,7 @@ var/global/list/robot_modules = list(
var/hide_on_manifest = 0 var/hide_on_manifest = 0
var/channels = list() var/channels = list()
var/networks = list() var/networks = list()
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0) var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0)
var/sprites = list() var/sprites = list()
var/can_be_pushed = 1 var/can_be_pushed = 1
var/no_slip = 0 var/no_slip = 0
@@ -478,10 +478,12 @@ var/global/list/robot_modules = list(
LANGUAGE_UNATHI = 1, LANGUAGE_UNATHI = 1,
LANGUAGE_SIIK = 1, LANGUAGE_SIIK = 1,
LANGUAGE_SKRELLIAN = 1, LANGUAGE_SKRELLIAN = 1,
LANGUAGE_ROOTSPEAK = 1, LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_TRADEBAND = 1, LANGUAGE_TRADEBAND = 1,
LANGUAGE_GUTTER = 1, LANGUAGE_GUTTER = 1,
LANGUAGE_SCHECHI = 1 LANGUAGE_SCHECHI = 1,
LANGUAGE_EAL = 1,
LANGUAGE_SIGN = 0
) )
/obj/item/weapon/robot_module/robot/clerical/butler /obj/item/weapon/robot_module/robot/clerical/butler
@@ -631,9 +633,11 @@ var/global/list/robot_modules = list(
LANGUAGE_UNATHI = 0, LANGUAGE_UNATHI = 0,
LANGUAGE_SIIK = 0, LANGUAGE_SIIK = 0,
LANGUAGE_SKRELLIAN = 0, LANGUAGE_SKRELLIAN = 0,
LANGUAGE_ROOTSPEAK = 0, LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_GUTTER = 1, LANGUAGE_GUTTER = 1,
LANGUAGE_SCHECHI = 0 LANGUAGE_SCHECHI = 0,
LANGUAGE_EAL = 1,
LANGUAGE_SIGN = 0
) )
sprites = list( sprites = list(
"Dread" = "securityrobot", "Dread" = "securityrobot",

View File

@@ -43,8 +43,8 @@
/mob/living/simple_animal/spiderbot/New() /mob/living/simple_animal/spiderbot/New()
..() ..()
add_language("Galactic Common") add_language(LANGUAGE_GALCOM)
default_language = all_languages["Galactic Common"] default_language = all_languages[LANGUAGE_GALCOM]
verbs |= /mob/living/proc/ventcrawl verbs |= /mob/living/proc/ventcrawl
verbs |= /mob/living/proc/hide verbs |= /mob/living/proc/hide

View File

@@ -90,6 +90,8 @@
var/list/pinned = list() // List of things pinning this creature to walls (see living_defense.dm) var/list/pinned = list() // List of things pinning this creature to walls (see living_defense.dm)
var/list/embedded = list() // Embedded items, since simple mobs don't have organs. var/list/embedded = list() // Embedded items, since simple mobs don't have organs.
var/list/languages = list() // For speaking/listening. var/list/languages = list() // For speaking/listening.
var/species_language = null // For species who want reset to use a specified default.
var/only_species_language = 0 // For species who can only speak their default and no other languages. Does not affect understanding.
var/list/speak_emote = list("says") // Verbs used when speaking. Defaults to 'say' if speak_emote is null. var/list/speak_emote = list("says") // Verbs used when speaking. Defaults to 'say' if speak_emote is null.
var/emote_type = 1 // Define emote default type, 1 for seen emotes, 2 for heard emotes var/emote_type = 1 // Define emote default type, 1 for seen emotes, 2 for heard emotes
var/facing_dir = null // Used for the ancient art of moonwalking. var/facing_dir = null // Used for the ancient art of moonwalking.

View File

@@ -44,7 +44,7 @@
H.real_name = "Synthmorph #[rand(100,999)]" H.real_name = "Synthmorph #[rand(100,999)]"
H.name = H.real_name H.name = H.real_name
H.dir = 2 H.dir = 2
H.add_language("Encoded Audio Language") H.add_language(LANGUAGE_EAL)
return H return H
//////////////////// Prosthetics //////////////////// //////////////////// Prosthetics ////////////////////

View File

@@ -0,0 +1,36 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: FTangSteve
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- wip: "RootSpeak is now split into a local and a global variant. For now the global acts as a hivemind."