Preferences fixes, ahoy! (#3045)

Fixes #1670
Fixes #1780
Fixes #1781
Fixes #1493
This commit is contained in:
Erki Meinberg
2017-07-21 20:50:59 +03:00
committed by GitHub
parent ee503f015f
commit 283f63d098
15 changed files with 71 additions and 59 deletions
+2 -1
View File
@@ -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
-2
View File
@@ -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
+3 -4
View File
@@ -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)
+4 -1
View File
@@ -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