mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-02 13:32:32 +00:00
SQL Saves - Season 2 Episode 2 - The Fixening (#1286)
Update the schema Modify player_preferences and character related tables Readd the incidents + missing CCIAA tables to it Fix loading Fix saving Make it impossible to edit character name after a while Sanity check so you cannot enter without a valid (saved) character Fix New Character button Remove debug messages Fixes #600 Fixes #588
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/load_character(var/savefile/S)
|
||||
S["real_name"] >> pref.real_name
|
||||
S["name_is_always_random"] >> pref.be_random_name
|
||||
S["gender"] >> pref.gender
|
||||
S["age"] >> pref.age
|
||||
S["spawnpoint"] >> pref.spawnpoint
|
||||
@@ -13,7 +12,6 @@
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/save_character(var/savefile/S)
|
||||
S["real_name"] << pref.real_name
|
||||
S["name_is_always_random"] << pref.be_random_name
|
||||
S["gender"] << pref.gender
|
||||
S["age"] << pref.age
|
||||
S["spawnpoint"] << pref.spawnpoint
|
||||
@@ -21,7 +19,6 @@
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/gather_load_query()
|
||||
return list("ss13_characters" = list("vars" = list("name" = "real_name",
|
||||
"random_name" = "be_random_name",
|
||||
"gender",
|
||||
"age",
|
||||
"metadata",
|
||||
@@ -33,21 +30,40 @@
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/gather_save_query()
|
||||
return list("ss13_characters" = list("name",
|
||||
"random_name",
|
||||
"gender",
|
||||
"age",
|
||||
"metadata",
|
||||
"spawnpoint",
|
||||
"id" = 1))
|
||||
"id" = 1,
|
||||
"ckey" = 1))
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/gather_save_parameters()
|
||||
return list(":name" = pref.real_name,
|
||||
":random_name" = pref.be_random_name,
|
||||
":gender" = pref.gender,
|
||||
":age" = pref.age,
|
||||
":metadata" = pref.metadata,
|
||||
":spawnpoint" = pref.spawnpoint,
|
||||
":id" = pref.current_character)
|
||||
":id" = pref.current_character,
|
||||
":ckey" = pref.client.ckey)
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/load_special()
|
||||
pref.can_edit_name = 1
|
||||
|
||||
if (config.sql_saves && pref.current_character)
|
||||
if (!establish_db_connection(dbcon))
|
||||
return
|
||||
|
||||
// Called /after/ loading and /before/ sanitization.
|
||||
// So we have pref.current_character. It's just in text format.
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT DATEDIFF(NOW(), created_at) AS DiffDate FROM ss13_characters WHERE id = :id")
|
||||
query.Execute(list(":id" = text2num(pref.current_character)))
|
||||
|
||||
if (query.NextRow())
|
||||
if (text2num(query.item[1]) > 5)
|
||||
pref.can_edit_name = 0
|
||||
else
|
||||
error("SQL CHARACTER LOAD: Logic error, general/basic/load_special() didn't return any rows when it should have.")
|
||||
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()
|
||||
pref.age = sanitize_integer(text2num(pref.age), AGE_MIN, AGE_MAX, initial(pref.age))
|
||||
@@ -56,13 +72,15 @@
|
||||
if(!pref.real_name)
|
||||
pref.real_name = random_name(pref.gender, pref.species)
|
||||
pref.spawnpoint = sanitize_inlist(pref.spawnpoint, spawntypes, initial(pref.spawnpoint))
|
||||
pref.be_random_name = sanitize_integer(text2num(pref.be_random_name), 0, 1, initial(pref.be_random_name))
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/content()
|
||||
. = "<b>Name:</b> "
|
||||
. += "<a href='?src=\ref[src];rename=1'><b>[pref.real_name]</b></a><br>"
|
||||
. += "(<a href='?src=\ref[src];random_name=1'>Random Name</A>) "
|
||||
. += "(<a href='?src=\ref[src];always_random_name=1'>Always Random Name: [pref.be_random_name ? "Yes" : "No"]</a>)"
|
||||
if (pref.can_edit_name)
|
||||
. += "<a href='?src=\ref[src];rename=1'><b>[pref.real_name]</b></a><br>"
|
||||
else
|
||||
. += "<b>[pref.real_name]</b><br> (<a href='?src=\ref[src];namehelp=1'>?</a>)"
|
||||
if (pref.can_edit_name)
|
||||
. += "(<a href='?src=\ref[src];random_name=1'>Random Name</A>)"
|
||||
. += "<br>"
|
||||
. += "<b>Gender:</b> <a href='?src=\ref[src];gender=1'><b>[capitalize(lowertext(pref.gender))]</b></a><br>"
|
||||
. += "<b>Age:</b> <a href='?src=\ref[src];age=1'>[pref.age]</a><br>"
|
||||
@@ -72,6 +90,10 @@
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user)
|
||||
if(href_list["rename"])
|
||||
if (!pref.can_edit_name)
|
||||
alert(user, "You can no longer edit the name of your character.<br><br>If there is a legitimate need, please contact an administrator regarding the matter.")
|
||||
return TOPIC_NOACTION
|
||||
|
||||
var/raw_name = input(user, "Choose your character's name:", "Character Name") as text|null
|
||||
if (!isnull(raw_name) && CanUseTopic(user))
|
||||
var/new_name = sanitize_name(raw_name, pref.species)
|
||||
@@ -82,12 +104,16 @@
|
||||
user << "<span class='warning'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</span>"
|
||||
return TOPIC_NOACTION
|
||||
|
||||
else if(href_list["random_name"])
|
||||
pref.real_name = random_name(pref.gender, pref.species)
|
||||
return TOPIC_REFRESH
|
||||
else if(href_list["namehelp"])
|
||||
alert(user, "Due to game mechanics, you are no longer able to edit the name for this character. The grace period offered is 5 days since the character's initial save.<br><br>If you have a need to change the character's name, or further questions regarding this policy, please contact an administrator.")
|
||||
return TOPIC_NOACTION
|
||||
|
||||
else if(href_list["always_random_name"])
|
||||
pref.be_random_name = !pref.be_random_name
|
||||
else if(href_list["random_name"])
|
||||
if (!pref.can_edit_name)
|
||||
alert(user, "You can no longer edit the name of your character.<br><br>If there is a legitimate need, please contact an administrator regarding the matter.")
|
||||
return TOPIC_NOACTION
|
||||
|
||||
pref.real_name = random_name(pref.gender, pref.species)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["gender"])
|
||||
|
||||
Reference in New Issue
Block a user