mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-22 05:17:38 +01:00
Adds an origin and culture system to govern possible faction items, citizenships, accents, religions. (#13400)
This commit is contained in:
@@ -425,6 +425,16 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
pref.rlimb_data.Cut()
|
||||
pref.body_markings.Cut()
|
||||
|
||||
var/new_culture = mob_species.possible_cultures[1]
|
||||
pref.culture = "[new_culture]"
|
||||
var/decl/origin_item/culture/OC = decls_repository.get_decl(text2path(pref.culture))
|
||||
var/new_origin = OC.possible_origins[1]
|
||||
pref.origin = "[new_origin]"
|
||||
var/decl/origin_item/origin/OO = decls_repository.get_decl(text2path(pref.origin))
|
||||
pref.accent = OO.possible_accents[1]
|
||||
pref.citizenship = OO.possible_citizenships[1]
|
||||
pref.religion = OO.possible_religions[1]
|
||||
|
||||
// Follows roughly the same way hair does above, but for gradient styles
|
||||
var/global/list/valid_gradients = list()
|
||||
|
||||
|
||||
@@ -6,19 +6,11 @@
|
||||
S["med_record"] >> pref.med_record
|
||||
S["sec_record"] >> pref.sec_record
|
||||
S["gen_record"] >> pref.gen_record
|
||||
S["citizenship"] >> pref.citizenship
|
||||
S["religion"] >> pref.religion
|
||||
S["accent"] >> pref.accent
|
||||
S["economic_status"] >> pref.economic_status
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/save_character(var/savefile/S)
|
||||
S["med_record"] << pref.med_record
|
||||
S["sec_record"] << pref.sec_record
|
||||
S["gen_record"] << pref.gen_record
|
||||
S["citizenship"] << pref.citizenship
|
||||
S["religion"] << pref.religion
|
||||
S["accent"] << pref.accent
|
||||
S["economic_status"] << pref.economic_status
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/gather_load_query()
|
||||
return list(
|
||||
@@ -30,21 +22,11 @@
|
||||
"records_ccia" = "ccia_record"
|
||||
),
|
||||
"args" = list("char_id")
|
||||
),
|
||||
"ss13_characters" = list(
|
||||
"vars" = list(
|
||||
"economic_status",
|
||||
"citizenship",
|
||||
"religion",
|
||||
"accent"
|
||||
),
|
||||
"args" = list("id")
|
||||
)
|
||||
)
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/gather_load_parameters()
|
||||
return list(
|
||||
"id" = pref.current_character,
|
||||
"char_id" = pref.current_character
|
||||
)
|
||||
|
||||
@@ -55,14 +37,6 @@
|
||||
"records_medical",
|
||||
"records_security",
|
||||
"char_id" = 1
|
||||
),
|
||||
"ss13_characters" = list(
|
||||
"economic_status",
|
||||
"citizenship",
|
||||
"religion",
|
||||
"accent",
|
||||
"id" = 1,
|
||||
"ckey" = 1
|
||||
)
|
||||
)
|
||||
|
||||
@@ -72,41 +46,11 @@
|
||||
"records_medical" = pref.med_record,
|
||||
"records_security" = pref.sec_record,
|
||||
"char_id" = pref.current_character,
|
||||
"economic_status" = pref.economic_status,
|
||||
"citizenship" = pref.citizenship,
|
||||
"religion" = pref.religion,
|
||||
"accent" = pref.accent,
|
||||
"id" = pref.current_character,
|
||||
"ckey" = PREF_CLIENT_CKEY
|
||||
)
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/sanitize_character()
|
||||
var/datum/species/S = all_species[pref.species]
|
||||
if(!pref.citizenship)
|
||||
pref.citizenship = S.default_citizenship
|
||||
if(!pref.religion)
|
||||
pref.religion = RELIGION_NONE
|
||||
|
||||
if(!(pref.citizenship in S.allowed_citizenships))
|
||||
pref.citizenship = S.default_citizenship
|
||||
|
||||
if(!(pref.religion in S.allowed_religions))
|
||||
pref.religion = RELIGION_NONE
|
||||
|
||||
if(!(pref.accent in S.allowed_accents))
|
||||
pref.accent = S.default_accent
|
||||
|
||||
pref.economic_status = sanitize_inlist(pref.economic_status, ECONOMIC_POSITIONS, initial(pref.economic_status))
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/content(var/mob/user)
|
||||
var/list/dat = list(
|
||||
"<b>Background Information</b><br>",
|
||||
"Economic Status: <a href='?src=\ref[src];economic_status=1'>[pref.economic_status]</a><br/>",
|
||||
"Citizenship: <a href='?src=\ref[src];citizenship=1'>[pref.citizenship]</a><br/>",
|
||||
"Religion: <a href='?src=\ref[src];religion=1'>[pref.religion]</a><br/>",
|
||||
"Accent: <a href='?src=\ref[src];accent=1'>[pref.accent]</a><br/>",
|
||||
"<br/><b>Records</b>:<br/>"
|
||||
)
|
||||
var/list/dat = list("<br/><b>Records</b>:<br/>")
|
||||
|
||||
if(jobban_isbanned(user, "Records"))
|
||||
dat += "<span class='danger'>You are banned from using character records.</span><br>"
|
||||
@@ -121,50 +65,7 @@
|
||||
. = dat.Join()
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/OnTopic(var/href,var/list/href_list, var/mob/user)
|
||||
var/datum/species/S = all_species[pref.species]
|
||||
if(href_list["economic_status"])
|
||||
var/new_status = input(user, "Choose how wealthy your character is. Note that this applies a multiplier to a value that is also affected by your species and job.", "Character Preference", pref.economic_status) as null|anything in ECONOMIC_POSITIONS
|
||||
if(new_status && CanUseTopic(user))
|
||||
pref.economic_status = new_status
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["citizenship"])
|
||||
var/choice = input(user, "Please choose your current citizenship.", "Character Preference", pref.citizenship) as null|anything in S.allowed_citizenships
|
||||
if(!choice || !CanUseTopic(user))
|
||||
return TOPIC_NOACTION
|
||||
show_citizenship_menu(user, choice)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["set_citizenship"])
|
||||
pref.citizenship = (html_decode(href_list["set_citizenship"]))
|
||||
sanitize_character()
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["religion"])
|
||||
var/choice = input(user, "Please choose a religion.", "Character Preference", pref.religion) as null|anything in S.allowed_religions
|
||||
if(!choice || !CanUseTopic(user))
|
||||
return TOPIC_NOACTION
|
||||
show_religion_menu(user, choice)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["set_religion"])
|
||||
pref.religion = (html_decode(href_list["set_religion"]))
|
||||
sanitize_character()
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["accent"])
|
||||
var/choice = input(user, "Please choose an accent.", "Character Preference", pref.accent) as null|anything in S.allowed_accents
|
||||
if(!choice || !CanUseTopic(user))
|
||||
return TOPIC_NOACTION
|
||||
show_accent_menu(user, choice)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["set_accent"])
|
||||
pref.accent = (html_decode(href_list["set_accent"]))
|
||||
sanitize_character()
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["set_medical_records"])
|
||||
if(href_list["set_medical_records"])
|
||||
var/new_medical = sanitize(input(user,"Enter medical information here.","Character Preference", html_decode(pref.med_record)) as message|null, MAX_PAPER_MESSAGE_LEN, extra = 0)
|
||||
if(!isnull(new_medical) && !jobban_isbanned(user, "Records") && CanUseTopic(user))
|
||||
pref.med_record = new_medical
|
||||
@@ -196,34 +97,4 @@
|
||||
return TOPIC_REFRESH
|
||||
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/proc/show_citizenship_menu(mob/user, selected_citizenship)
|
||||
var/datum/citizenship/citizenship = SSrecords.citizenships[selected_citizenship]
|
||||
|
||||
if(citizenship)
|
||||
|
||||
var/list/dat = list("<center><b>[citizenship.name]</center></b>")
|
||||
dat += "<br><br><center><a href='?src=\ref[user.client];JSlink=wiki;wiki_page=[replacetext(citizenship.name, " ", "_")]'>Read the Wiki</a></center>"
|
||||
dat += "<br>[citizenship.description]"
|
||||
dat += "<br><center>\[<a href='?src=\ref[src];set_citizenship=[html_encode(citizenship.name)]'>Select</a>\]</center>"
|
||||
show_browser(user, dat.Join(), "window=citizenshippreview;size=400x500")
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/proc/show_religion_menu(mob/user, selected_religion)
|
||||
var/datum/religion/religion = SSrecords.religions[selected_religion]
|
||||
|
||||
if(religion)
|
||||
var/list/dat = list("<center><b>[religion.name]</center></b>")
|
||||
dat += "<br>[religion.description]"
|
||||
dat += "<br><center>\[<a href='?src=\ref[src];set_religion=[html_encode(religion.name)]'>Select</a>\]</center>"
|
||||
show_browser(user, dat.Join(), "window=religionpreview;size=400x500")
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/proc/show_accent_menu(mob/user, selected_accent)
|
||||
var/datum/accent/accent = SSrecords.accents[selected_accent]
|
||||
|
||||
if(accent)
|
||||
|
||||
var/list/dat = list("<center><b>[accent.name]</center></b>")
|
||||
dat += "<br>[accent.description]"
|
||||
dat += "<br><center>\[<a href='?src=\ref[src];set_accent=[html_encode(accent.name)]'>Select</a>\]</center>"
|
||||
show_browser(user, dat.Join(), "window=accentpreview;size=400x500")
|
||||
return ..()
|
||||
Reference in New Issue
Block a user