mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-22 09:07:04 +01:00
tajaran lore update + adds yet another lore culture thing (#5125)
Co-authored-by: silicons <no@you.cat>
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
sanitize_preference(/datum/category_item/player_setup_item/background/faction)
|
||||
sanitize_preference(/datum/category_item/player_setup_item/background/origin)
|
||||
sanitize_preference(/datum/category_item/player_setup_item/background/religion)
|
||||
sanitize_preference(/datum/category_item/player_setup_item/background/culture)
|
||||
// do language last
|
||||
sanitize_preference(/datum/category_item/player_setup_item/background/language)
|
||||
// lastly, do general job titles after
|
||||
@@ -25,6 +26,7 @@
|
||||
lore_citizenship_datum(),
|
||||
lore_origin_datum(),
|
||||
lore_religion_datum(),
|
||||
lore_culture_datum(),
|
||||
)
|
||||
|
||||
/datum/preferences/proc/all_background_ids()
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
/datum/category_item/player_setup_item/background/citizenship
|
||||
name = "Citizenship"
|
||||
save_key = CHARACTER_DATA_CITIZENSHIP
|
||||
sort_order = 3
|
||||
sort_order = 4
|
||||
|
||||
/datum/category_item/player_setup_item/background/citizenship/content(datum/preferences/prefs, mob/user, data)
|
||||
. = list()
|
||||
var/list/datum/lore/character_background/citizenship/available = SScharacters.available_citizenships(prefs.character_species_id())
|
||||
var/list/categories = list()
|
||||
var/datum/lore/character_background/citizenship/current = SScharacters.resolve_citizenship(data)
|
||||
var/current_category
|
||||
for(var/datum/lore/character_background/citizenship/O as anything in available)
|
||||
LAZYADD(categories[O.category], O)
|
||||
var/datum/lore/character_background/citizenship/current = SScharacters.resolve_citizenship(data)
|
||||
if(O == current)
|
||||
current_category = O.category
|
||||
. += "<center>"
|
||||
. += "<b>Citizenship</b><br>"
|
||||
if(length(categories) > 1)
|
||||
@@ -20,6 +23,8 @@
|
||||
for(var/datum/lore/character_background/citizenship/O in available)
|
||||
if(O == current)
|
||||
. += "<span class='linkOn'>[O.name]</span>"
|
||||
else if(current_category && O.category != current_category)
|
||||
continue
|
||||
else
|
||||
. += href_simple(prefs, "pick", "[O.name]", O.id)
|
||||
. += " "
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
/datum/category_item/player_setup_item/background/culture
|
||||
name = "Culture"
|
||||
save_key = CHARACTER_DATA_CULTURE
|
||||
sort_order = 5
|
||||
|
||||
/datum/category_item/player_setup_item/background/culture/content(datum/preferences/prefs, mob/user, data)
|
||||
. = list()
|
||||
var/list/datum/lore/character_background/culture/available = SScharacters.available_cultures(prefs.character_species_id())
|
||||
var/list/categories = list()
|
||||
var/datum/lore/character_background/culture/current = SScharacters.resolve_culture(data)
|
||||
var/current_category
|
||||
for(var/datum/lore/character_background/culture/O as anything in available)
|
||||
LAZYADD(categories[O.category], O)
|
||||
if(O == current)
|
||||
current_category = O.category
|
||||
. += "<center>"
|
||||
. += "<b>Culture</b><br>"
|
||||
if(length(categories) > 1)
|
||||
for(var/category in categories)
|
||||
. += (category == current.category)? "<span class='linkOn'>[category]</span> " : href_simple(prefs, "category", "[category]", category)
|
||||
. += " "
|
||||
. += "<br>"
|
||||
for(var/datum/lore/character_background/culture/O in available)
|
||||
if(O == current)
|
||||
. += "<span class='linkOn'>[O.name]</span>"
|
||||
else if(current_category && O.category != current_category)
|
||||
continue
|
||||
else
|
||||
. += href_simple(prefs, "pick", "[O.name]", O.id)
|
||||
. += " "
|
||||
. += "</center>"
|
||||
. += "<div class='statusDisplay'>"
|
||||
. += current? current.desc : "<center>error; culture load failed</center>"
|
||||
. += "</div>"
|
||||
|
||||
/datum/category_item/player_setup_item/background/culture/act(datum/preferences/prefs, mob/user, action, list/params)
|
||||
switch(action)
|
||||
if("pick")
|
||||
var/id = params["pick"]
|
||||
var/datum/lore/character_background/culture/O = SScharacters.resolve_culture(id)
|
||||
if(!id)
|
||||
return
|
||||
if(!O.check_species_id(prefs.character_species_id()))
|
||||
to_chat(user, SPAN_WARNING("[prefs.character_species_name()] cannot pick this culture."))
|
||||
return PREFERENCES_NOACTION
|
||||
write(prefs, id)
|
||||
prefs.sanitize_background_lore() // update
|
||||
return PREFERENCES_REFRESH
|
||||
if("category")
|
||||
var/cat = params["category"]
|
||||
var/list/datum/lore/character_background/culture/cultures = SScharacters.available_cultures(prefs.character_species_id(), cat)
|
||||
if(!length(cultures))
|
||||
to_chat(user, SPAN_WARNING("No cultures in that category have been found; this might be an error."))
|
||||
return PREFERENCES_NOACTION
|
||||
var/datum/lore/character_background/culture/first = cultures[1]
|
||||
write(prefs, first.id)
|
||||
prefs.sanitize_background_lore() // update
|
||||
return PREFERENCES_REFRESH
|
||||
return ..()
|
||||
|
||||
/datum/category_item/player_setup_item/background/culture/filter_data(datum/preferences/prefs, data, list/errors)
|
||||
var/datum/lore/character_background/culture/current = SScharacters.resolve_culture(data)
|
||||
if(!current?.check_species_id(prefs.character_species_id()))
|
||||
return SScharacters.resolve_culture(/datum/lore/character_background/culture/custom).id
|
||||
return data
|
||||
|
||||
/datum/category_item/player_setup_item/background/culture/copy_to_mob(datum/preferences/prefs, mob/M, data, flags)
|
||||
// todo: sources - this one is from culture/bcakground
|
||||
var/datum/lore/character_background/B = SScharacters.resolve_culture(data)
|
||||
for(var/id in B.innate_languages)
|
||||
M.add_language(id)
|
||||
return TRUE
|
||||
|
||||
/datum/category_item/player_setup_item/background/culture/spawn_checks(datum/preferences/prefs, data, flags, list/errors, list/warnings)
|
||||
var/datum/lore/character_background/culture/current = SScharacters.resolve_culture(data)
|
||||
if(!current?.check_species_id(prefs.character_species_id()))
|
||||
errors?.Add("Invalid culture for your current species.")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/category_item/player_setup_item/background/culture/default_value(randomizing)
|
||||
return SScharacters.resolve_culture(/datum/lore/character_background/culture/custom).id
|
||||
|
||||
/datum/category_item/player_setup_item/background/culture/informed_default_value(datum/preferences/prefs, randomizing)
|
||||
var/datum/character_species/S = SScharacters.resolve_character_species(prefs.character_species_id())
|
||||
if(!S)
|
||||
return ..()
|
||||
return S.get_default_culture_id()
|
||||
|
||||
/datum/preferences/proc/lore_culture_id()
|
||||
return get_character_data(CHARACTER_DATA_CULTURE)
|
||||
|
||||
/datum/preferences/proc/lore_culture_datum()
|
||||
RETURN_TYPE(/datum/lore/character_background/culture)
|
||||
return SScharacters.resolve_culture(lore_culture_id())
|
||||
@@ -2,15 +2,18 @@
|
||||
name = "Faction"
|
||||
save_key = CHARACTER_DATA_FACTION
|
||||
load_order = PREFERENCE_LOAD_ORDER_LORE_FACTION
|
||||
sort_order = 5
|
||||
sort_order = 7
|
||||
|
||||
/datum/category_item/player_setup_item/background/faction/content(datum/preferences/prefs, mob/user, data)
|
||||
. = list()
|
||||
var/list/datum/lore/character_background/faction/available = SScharacters.available_factions(prefs.character_species_id(), prefs.lore_origin_id(), prefs.lore_citizenship_id())
|
||||
var/list/categories = list()
|
||||
var/datum/lore/character_background/faction/current = SScharacters.resolve_faction(data)
|
||||
var/current_category
|
||||
for(var/datum/lore/character_background/faction/O as anything in available)
|
||||
LAZYADD(categories[O.category], O)
|
||||
var/datum/lore/character_background/faction/current = SScharacters.resolve_faction(data)
|
||||
if(O == current)
|
||||
current_category = O.category
|
||||
. += "<center>"
|
||||
. += "<b>Faction</b><br>"
|
||||
if(length(categories) > 1)
|
||||
@@ -21,6 +24,8 @@
|
||||
for(var/datum/lore/character_background/faction/O in available)
|
||||
if(O == current)
|
||||
. += "<span class='linkOn'>[O.name]</span>"
|
||||
else if(current_category && O.category != current_category)
|
||||
continue
|
||||
else
|
||||
. += href_simple(prefs, "pick", "[O.name]", O.id)
|
||||
. += " "
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
/datum/category_item/player_setup_item/background/origin
|
||||
name = "Origin"
|
||||
save_key = CHARACTER_DATA_ORIGIN
|
||||
sort_order = 2
|
||||
sort_order = 3
|
||||
|
||||
/datum/category_item/player_setup_item/background/origin/content(datum/preferences/prefs, mob/user, data)
|
||||
. = list()
|
||||
var/list/datum/lore/character_background/origin/available = SScharacters.available_origins(prefs.character_species_id())
|
||||
var/list/categories = list()
|
||||
var/datum/lore/character_background/origin/current = SScharacters.resolve_origin(data)
|
||||
var/current_category
|
||||
for(var/datum/lore/character_background/origin/O as anything in available)
|
||||
LAZYADD(categories[O.category], O)
|
||||
var/datum/lore/character_background/origin/current = SScharacters.resolve_origin(data)
|
||||
if(O == current)
|
||||
current_category = O.category
|
||||
. += "<center>"
|
||||
. += "<b>Origin</b><br>"
|
||||
if(length(categories) > 1)
|
||||
@@ -20,6 +23,8 @@
|
||||
for(var/datum/lore/character_background/origin/O in categories[current.category])
|
||||
if(O == current)
|
||||
. += "<span class='linkOn'>[O.name]</span>"
|
||||
else if(current_category && O.category != current_category)
|
||||
continue
|
||||
else
|
||||
. += href_simple(prefs, "pick", "[O.name]", O.id)
|
||||
. += " "
|
||||
|
||||
@@ -7,9 +7,12 @@
|
||||
. = list()
|
||||
var/list/datum/lore/character_background/religion/available = SScharacters.available_religions(prefs.character_species_id())
|
||||
var/list/categories = list()
|
||||
var/datum/lore/character_background/religion/current = SScharacters.resolve_religion(data)
|
||||
var/current_category
|
||||
for(var/datum/lore/character_background/religion/O as anything in available)
|
||||
LAZYADD(categories[O.category], O)
|
||||
var/datum/lore/character_background/religion/current = SScharacters.resolve_religion(data)
|
||||
if(O == current)
|
||||
current_category = O.category
|
||||
. += "<center>"
|
||||
. += "<b>Religion</b><br>"
|
||||
if(length(categories) > 1)
|
||||
@@ -20,6 +23,8 @@
|
||||
for(var/datum/lore/character_background/religion/O in available)
|
||||
if(O == current)
|
||||
. += "<span class='linkOn'>[O.name]</span>"
|
||||
else if(current_category && O.category != current_category)
|
||||
continue
|
||||
else
|
||||
. += href_simple(prefs, "pick", "[O.name]", O.id)
|
||||
. += " "
|
||||
|
||||
Reference in New Issue
Block a user