mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-14 01:18:40 +01:00
Preferences fixes, ahoy! (#3045)
Fixes #1670 Fixes #1780 Fixes #1781 Fixes #1493
This commit is contained in:
@@ -30,10 +30,11 @@
|
||||
|
||||
/proc/Centcomm_announce(var/msg, var/mob/Sender, var/iamessage)
|
||||
var/msg_cciaa = "<span class='notice'><b><font color=orange>[uppertext(boss_short)][iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]</span>"
|
||||
|
||||
var/msg_admin = "<span class='notice'><b><font color=orange>[uppertext(boss_short)][iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]</span>"
|
||||
|
||||
var/cciaa_present = 0
|
||||
var/cciaa_afk = 0
|
||||
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
C << msg_admin
|
||||
|
||||
@@ -349,8 +349,6 @@
|
||||
|
||||
. = ..() //calls mob.Login()
|
||||
|
||||
prefs.sanitize_preferences()
|
||||
|
||||
if(holder)
|
||||
add_admin_verbs()
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
/datum/category_item/player_setup_item/antagonism/candidacy/sanitize_character(var/sql_load = 0)
|
||||
if (sql_load)
|
||||
if (pref.be_special_role)
|
||||
if (istext(pref.be_special_role))
|
||||
pref.be_special_role = params2list(pref.be_special_role)
|
||||
|
||||
if (!istype(pref.be_special_role))
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
S["real_name"] >> pref.real_name
|
||||
S["gender"] >> pref.gender
|
||||
S["age"] >> pref.age
|
||||
S["species"] >> pref.species
|
||||
S["spawnpoint"] >> pref.spawnpoint
|
||||
S["OOC_Notes"] >> pref.metadata
|
||||
|
||||
@@ -14,6 +15,7 @@
|
||||
S["real_name"] << pref.real_name
|
||||
S["gender"] << pref.gender
|
||||
S["age"] << pref.age
|
||||
S["species"] << pref.species
|
||||
S["spawnpoint"] << pref.spawnpoint
|
||||
S["OOC_Notes"] << pref.metadata
|
||||
|
||||
@@ -22,7 +24,8 @@
|
||||
"gender",
|
||||
"age",
|
||||
"metadata",
|
||||
"spawnpoint",),
|
||||
"spawnpoint",
|
||||
"species"),
|
||||
"args" = list("id")))
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/gather_load_parameters()
|
||||
@@ -34,6 +37,7 @@
|
||||
"age",
|
||||
"metadata",
|
||||
"spawnpoint",
|
||||
"species",
|
||||
"id" = 1,
|
||||
"ckey" = 1))
|
||||
|
||||
@@ -43,6 +47,7 @@
|
||||
"age" = pref.age,
|
||||
"metadata" = pref.metadata,
|
||||
"spawnpoint" = pref.spawnpoint,
|
||||
"species" = pref.species,
|
||||
"id" = pref.current_character,
|
||||
"ckey" = pref.client.ckey)
|
||||
|
||||
@@ -66,6 +71,9 @@
|
||||
log_debug("SQL CHARACTER LOAD: Logic error, general/basic/load_special() didn't return any rows when it should have. Character ID: [pref.current_character].")
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/sanitize_character()
|
||||
if(!pref.species || !(pref.species in playable_species))
|
||||
pref.species = "Human"
|
||||
|
||||
pref.age = sanitize_integer(text2num(pref.age), pref.getMinAge(), pref.getMaxAge(), initial(pref.age))
|
||||
pref.gender = sanitize_inlist(pref.gender, valid_player_genders, pick(valid_player_genders))
|
||||
pref.real_name = sanitize_name(pref.real_name, pref.species)
|
||||
|
||||
@@ -48,12 +48,15 @@
|
||||
|
||||
var/list/bad_langs = pref.alternate_languages - langs
|
||||
if (bad_langs.len)
|
||||
to_chat(pref.client, "<span class='warning'>[bad_langs.len] invalid languages were found in your character setup!</span>")
|
||||
to_chat(pref.client, "<span class='warning'>[bad_langs.len] invalid language\s were found in your character setup! Please save your character again to stop this error from repeating!</span>")
|
||||
|
||||
for (var/L in bad_langs)
|
||||
to_chat(pref.client, "<span class='notice'>Removing the language \"[L]\" from your character.</span>")
|
||||
pref.alternate_languages -= L
|
||||
|
||||
var/datum/category_group/player_setup_category/cat = category
|
||||
cat.modified = TRUE
|
||||
|
||||
/datum/category_item/player_setup_item/general/language/content()
|
||||
. += "<b>Languages</b><br>"
|
||||
var/datum/species/S = all_species[pref.species]
|
||||
|
||||
@@ -5,7 +5,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
sort_order = 3
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/load_character(var/savefile/S)
|
||||
S["species"] >> pref.species
|
||||
S["hair_red"] >> pref.r_hair
|
||||
S["hair_green"] >> pref.g_hair
|
||||
S["hair_blue"] >> pref.b_hair
|
||||
@@ -29,7 +28,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
pref.preview_icon = null
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S)
|
||||
S["species"] << pref.species
|
||||
S["hair_red"] << pref.r_hair
|
||||
S["hair_green"] << pref.g_hair
|
||||
S["hair_blue"] << pref.b_hair
|
||||
@@ -52,27 +50,25 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
S["body_markings"] << pref.body_markings
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/gather_load_query()
|
||||
return list("ss13_characters" = list("vars" = list("species",
|
||||
"hair_colour",
|
||||
"facial_colour",
|
||||
"skin_tone" = "s_tone",
|
||||
"skin_colour",
|
||||
"hair_style" = "h_style",
|
||||
"facial_style" = "f_style",
|
||||
"eyes_colour",
|
||||
"b_type",
|
||||
"disabilities",
|
||||
"organs_data" = "organ_data",
|
||||
"organs_robotic" = "rlimb_data",
|
||||
"body_markings"),
|
||||
return list("ss13_characters" = list("vars" = list("hair_colour",
|
||||
"facial_colour",
|
||||
"skin_tone" = "s_tone",
|
||||
"skin_colour",
|
||||
"hair_style" = "h_style",
|
||||
"facial_style" = "f_style",
|
||||
"eyes_colour",
|
||||
"b_type",
|
||||
"disabilities",
|
||||
"organs_data" = "organ_data",
|
||||
"organs_robotic" = "rlimb_data",
|
||||
"body_markings"),
|
||||
"args" = list("id")))
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/gather_load_parameters()
|
||||
return list("id" = pref.current_character)
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/gather_save_query()
|
||||
return list("ss13_characters" = list("species",
|
||||
"hair_colour",
|
||||
return list("ss13_characters" = list("hair_colour",
|
||||
"facial_colour",
|
||||
"skin_tone",
|
||||
"skin_colour",
|
||||
@@ -88,8 +84,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
"ckey" = 1))
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/gather_save_parameters()
|
||||
return list("species" = pref.species,
|
||||
"hair_colour" = "#" + num2hex(pref.r_hair, 2) + num2hex(pref.g_hair, 2) + num2hex(pref.b_hair, 2),
|
||||
return list("hair_colour" = "#" + num2hex(pref.r_hair, 2) + num2hex(pref.g_hair, 2) + num2hex(pref.b_hair, 2),
|
||||
"facial_colour" = "#" + num2hex(pref.r_facial, 2) + num2hex(pref.g_facial, 2) + num2hex(pref.b_facial, 2),
|
||||
"skin_tone" = pref.s_tone,
|
||||
"skin_colour" = "#" + num2hex(pref.r_skin, 2) + num2hex(pref.g_skin, 2) + num2hex(pref.b_skin, 2),
|
||||
@@ -105,9 +100,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
"ckey" = pref.client.ckey)
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/sanitize_character(var/sql_load = 0)
|
||||
if(!pref.species || !(pref.species in playable_species))
|
||||
pref.species = "Human"
|
||||
|
||||
if (sql_load)
|
||||
pref.hair_colour = sanitize_hexcolor(pref.hair_colour)
|
||||
pref.r_hair = GetRedPart(pref.hair_colour)
|
||||
@@ -133,11 +125,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
|
||||
pref.disabilities = text2num(pref.disabilities)
|
||||
|
||||
if (pref.organ_data)
|
||||
if (istext(pref.organ_data))
|
||||
pref.organ_data = params2list(pref.organ_data)
|
||||
if (pref.rlimb_data)
|
||||
if (istext(pref.rlimb_data))
|
||||
pref.rlimb_data = params2list(pref.rlimb_data)
|
||||
if (pref.body_markings)
|
||||
if (istext(pref.body_markings))
|
||||
var/before = pref.body_markings
|
||||
try
|
||||
pref.body_markings = json_decode(pref.body_markings)
|
||||
@@ -530,6 +522,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
if("Head")
|
||||
limb = "head"
|
||||
carries_organs = 1
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Cancelled.</span>")
|
||||
return TOPIC_NOACTION
|
||||
|
||||
var/list/available_states = list("Normal","Amputated","Prosthesis")
|
||||
if(carries_organs)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"records_security" = "sec_record",
|
||||
"records_ccia" = "ccia_record"),
|
||||
"args" = list("char_id")),
|
||||
"ss13_characters" = list("vars" = list("home_system", "citizenship", "faction", "religion"), "args" = list("id")))
|
||||
"ss13_characters" = list("vars" = list("nt_relation" = "nanotrasen_relation" ,"home_system", "citizenship", "faction", "religion"), "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)
|
||||
@@ -38,13 +38,14 @@
|
||||
"records_medical",
|
||||
"records_security",
|
||||
"char_id" = 1),
|
||||
"ss13_characters" = list("home_system", "citizenship", "faction", "religion", "id" = 1, "ckey" = 1))
|
||||
"ss13_characters" = list("nt_relation", "home_system", "citizenship", "faction", "religion", "id" = 1, "ckey" = 1))
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/gather_save_parameters()
|
||||
return list("records_employment" = pref.gen_record,
|
||||
"records_medical" = pref.med_record,
|
||||
"records_security" = pref.sec_record,
|
||||
"char_id" = pref.current_character,
|
||||
"nt_relation" = pref.nanotrasen_relation,
|
||||
"home_system" = pref.home_system,
|
||||
"citizenship" = pref.citizenship,
|
||||
"faction" = pref.faction,
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"flavour_hands" = "flavor_texts/hands",
|
||||
"flavour_legs" = "flavor_texts/legs",
|
||||
"flavour_feet" = "flavor_texts/feet",
|
||||
"robot_default" = "flavour_texts_robot/default",
|
||||
"robot_default" = "flavour_texts_robot/Default",
|
||||
"signature" = "signature",
|
||||
"signature_font" = "signfont")
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
"flavour_hands" = pref.flavor_texts["hands"],
|
||||
"flavour_legs" = pref.flavor_texts["legs"],
|
||||
"flavour_feet" = pref.flavor_texts["feet"],
|
||||
"robot_default" = pref.flavour_texts_robot["default"],
|
||||
"robot_default" = pref.flavour_texts_robot["Default"],
|
||||
"signature" = pref.signature,
|
||||
"signature_font" = pref.signfont)
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ var/list/gear_datums = list()
|
||||
/datum/category_item/player_setup_item/loadout/sanitize_character(var/sql_load = 0)
|
||||
if (sql_load)
|
||||
gear_reset = FALSE
|
||||
if (pref.gear && istext(pref.gear))
|
||||
if (istext(pref.gear))
|
||||
try
|
||||
pref.gear = json_decode(pref.gear)
|
||||
catch
|
||||
@@ -78,9 +78,6 @@ var/list/gear_datums = list()
|
||||
|
||||
pref.gear = list()
|
||||
gear_reset = TRUE
|
||||
else
|
||||
pref.gear = list()
|
||||
gear_reset = TRUE
|
||||
|
||||
var/mob/preference_mob = preference_mob()
|
||||
if(!islist(pref.gear))
|
||||
|
||||
@@ -34,13 +34,13 @@
|
||||
|
||||
/datum/category_group/player_setup_category/global_preferences
|
||||
name = "Global"
|
||||
sort_order = 5
|
||||
sort_order = 6
|
||||
category_item_type = /datum/category_item/player_setup_item/player_global
|
||||
sql_role = SQL_PREFERENCES
|
||||
|
||||
/datum/category_group/player_setup_category/other_preferences
|
||||
name = "Other"
|
||||
sort_order = 6
|
||||
sort_order = 7
|
||||
category_item_type = /datum/category_item/player_setup_item/other
|
||||
|
||||
/****************************
|
||||
@@ -61,9 +61,9 @@
|
||||
selected_category = null
|
||||
return ..()
|
||||
|
||||
/datum/category_collection/player_setup_collection/proc/sanitize_setup()
|
||||
/datum/category_collection/player_setup_collection/proc/sanitize_setup(sql_load = FALSE)
|
||||
for(var/datum/category_group/player_setup_category/PS in categories)
|
||||
PS.sanitize_setup()
|
||||
PS.sanitize_setup(sql_load)
|
||||
|
||||
/datum/category_collection/player_setup_collection/proc/load_character(var/savefile/S)
|
||||
for(var/datum/category_group/player_setup_category/PS in categories)
|
||||
@@ -122,11 +122,11 @@
|
||||
var/sql_role = SQL_CHARACTER
|
||||
var/modified = 0
|
||||
|
||||
/datum/category_group/player_setup_category/proc/sanitize_setup()
|
||||
/datum/category_group/player_setup_category/proc/sanitize_setup(sql_load = FALSE)
|
||||
for(var/datum/category_item/player_setup_item/PI in items)
|
||||
PI.sanitize_preferences()
|
||||
PI.sanitize_preferences(sql_load)
|
||||
for(var/datum/category_item/player_setup_item/PI in items)
|
||||
PI.sanitize_character()
|
||||
PI.sanitize_character(sql_load)
|
||||
|
||||
/datum/category_group/player_setup_category/proc/load_character(var/savefile/S)
|
||||
// Load all data, then sanitize it.
|
||||
@@ -150,11 +150,10 @@
|
||||
if (!config.sql_saves || !establish_db_connection(dbcon))
|
||||
for (var/datum/category_item/player_setup_item/PI in items)
|
||||
PI.save_character(S)
|
||||
else
|
||||
if (modified)
|
||||
// No save here, because this is only called from the menu and needs to save /everything/.
|
||||
handle_sql_saving(SQL_CHARACTER)
|
||||
modified = 0
|
||||
else if (modified)
|
||||
// No save here, because this is only called from the menu and needs to save /everything/.
|
||||
handle_sql_saving(SQL_CHARACTER)
|
||||
modified = 0
|
||||
|
||||
/datum/category_group/player_setup_category/proc/load_preferences(var/savefile/S)
|
||||
if (!config.sql_saves || !establish_db_connection(dbcon))
|
||||
|
||||
@@ -235,8 +235,8 @@
|
||||
query.Execute()
|
||||
|
||||
if (query.NextRow())
|
||||
arg_list[":id"] = text2num(query.item[1])
|
||||
arg_list[":char_id"] = text2num(query.item[1])
|
||||
arg_list["id"] = text2num(query.item[1])
|
||||
arg_list["char_id"] = text2num(query.item[1])
|
||||
cc.preferences.current_character = text2num(query.item[1])
|
||||
|
||||
#ifdef SQL_PREF_DEBUG
|
||||
|
||||
@@ -64,9 +64,8 @@
|
||||
default_slot = slot
|
||||
S["default_slot"] << slot
|
||||
S.cd = "/character[slot]"
|
||||
else
|
||||
if (slot)
|
||||
current_character = slot
|
||||
else if (slot)
|
||||
current_character = slot
|
||||
|
||||
player_setup.load_character(S)
|
||||
|
||||
@@ -97,7 +96,7 @@
|
||||
return S
|
||||
|
||||
/datum/preferences/proc/sanitize_preferences()
|
||||
player_setup.sanitize_setup()
|
||||
player_setup.sanitize_setup(config.sql_saves)
|
||||
return 1
|
||||
|
||||
/datum/preferences/proc/update_setup(var/savefile/preferences, var/savefile/character)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
// Actually move.
|
||||
Move(destination)
|
||||
return TRUE
|
||||
|
||||
|
||||
/mob/living/zMove(direction)
|
||||
if (is_ventcrawling)
|
||||
var/obj/machinery/atmospherics/pipe/zpipe/P = loc
|
||||
@@ -189,6 +189,9 @@
|
||||
* this cycle.
|
||||
*/
|
||||
/atom/movable/proc/can_fall(turf/below, turf/simulated/open/dest = src.loc)
|
||||
if (!istype(dest))
|
||||
return FALSE
|
||||
|
||||
// Anchored things don't fall.
|
||||
if(anchored)
|
||||
return FALSE
|
||||
|
||||
Reference in New Issue
Block a user