diff --git a/SQL/Aurora_SQL_Schema.sql b/SQL/Aurora_SQL_Schema.sql index d3963e89367..65664dd8ad4 100644 --- a/SQL/Aurora_SQL_Schema.sql +++ b/SQL/Aurora_SQL_Schema.sql @@ -108,6 +108,7 @@ CREATE TABLE `ss13_characters` ( `organs_data` text, `organs_robotic` text, `gear` text, + `deleted_at` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `ss13_characters_ckey` (`ckey`), KEY `ss13_characteres_name` (`name`), diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 08d2443d0a8..f6c3ad33b06 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1825,7 +1825,7 @@ datum/preferences if(!dbcon.IsConnected()) return open_load_dialog_file(user) - var/DBQuery/query = dbcon.NewQuery("SELECT id, name FROM ss13_characters WHERE ckey = :ckey ORDER BY id ASC") + var/DBQuery/query = dbcon.NewQuery("SELECT id, name FROM ss13_characters WHERE ckey = :ckey AND deleted_at IS NULL ORDER BY id ASC") query.Execute(list(":ckey" = user.client.ckey)) dat += "Select a character slot to load
" diff --git a/code/modules/client/preferences_sql.dm b/code/modules/client/preferences_sql.dm index 23a6460399d..1cbd946b3f1 100644 --- a/code/modules/client/preferences_sql.dm +++ b/code/modules/client/preferences_sql.dm @@ -692,10 +692,10 @@ if (!query.NextRow()) return 0 - var/DBQuery/delete_query = dbcon.NewQuery("DELETE FROM ss13_characters WHERE id = :id") + var/DBQuery/delete_query = dbcon.NewQuery("UPDATE ss13_characters SET deleted_at = NOW() WHERE id = :id") delete_query.Execute(list(":id" = current_character)) - var/DBQuery/select_query = dbcon.NewQuery("SELECT id FROM ss13_characters WHERE ckey = :ckey ORDER BY id ASC LIMIT 1") + var/DBQuery/select_query = dbcon.NewQuery("SELECT id FROM ss13_characters WHERE ckey = :ckey AND deleted_at IS NULL ORDER BY id ASC LIMIT 1") select_query.Execute(list(":ckey" = C.ckey)) if (select_query.NextRow())