diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 3f5713f295f..5da3d8cad2d 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -252,7 +252,8 @@ var/global/datum/controller/occupations/job_master
for(var/mob/new_player/player in player_list)
if(player.ready && player.mind && !player.mind.assigned_role)
unassigned += player
- if(player.client.prefs.randomslot) player.client.prefs.random_character(player.client)
+ if(player.client.prefs.randomslot)
+ player.client.prefs.load_random_character_slot(player.client)
Debug("DO, Len: [unassigned.len]")
if(unassigned.len == 0) return 0
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index 09cef84894c..ba51996f4e7 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -1963,6 +1963,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("randomslot")
randomslot = !randomslot
+ if(isnewplayer(usr))
+ var/mob/new_player/N = usr
+ N.new_player_panel_proc()
if("hear_midis")
sound ^= SOUND_MIDI
@@ -2188,26 +2191,26 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
/datum/preferences/proc/open_load_dialog(mob/user)
var/DBQuery/query = dbcon.NewQuery("SELECT slot,real_name FROM [format_table_name("characters")] WHERE ckey='[user.ckey]' ORDER BY slot")
+ var/list/slotnames[max_save_slots]
+
+ if(!query.Execute())
+ var/err = query.ErrorMsg()
+ log_game("SQL ERROR during character slot loading. Error : \[[err]\]\n")
+ message_admins("SQL ERROR during character slot loading. Error : \[[err]\]\n")
+ return
+ while(query.NextRow())
+ slotnames[text2num(query.item[1])] = query.item[2]
var/dat = "
"
dat += ""
dat += "Select a character slot to load
"
var/name
- for(var/i=1, i<=max_save_slots, i++)
- if(!query.Execute())
- var/err = query.ErrorMsg()
- log_game("SQL ERROR during character slot loading. Error : \[[err]\]\n")
- message_admins("SQL ERROR during character slot loading. Error : \[[err]\]\n")
- return
- while(query.NextRow())
- if(i==text2num(query.item[1]))
- name = query.item[2]
- if(!name) name = "Character[i]"
- if(i==default_slot)
+ for(var/i in 1 to max_save_slots)
+ name = slotnames[i] || "Character [i]"
+ if(i == default_slot)
name = "[name]"
dat += "[name]
"
- name = null
dat += "
"
dat += "Close
"
diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm
index 581daf222d3..2713ae2dd7c 100644
--- a/code/modules/client/preference/preferences_mysql.dm
+++ b/code/modules/client/preference/preferences_mysql.dm
@@ -500,21 +500,24 @@
return
return 1
-/*
-/datum/preferences/proc/random_character(client/C)
+/datum/preferences/proc/load_random_character_slot(client/C)
var/DBQuery/query = dbcon.NewQuery("SELECT slot FROM [format_table_name("characters")] WHERE ckey='[C.ckey]' ORDER BY slot")
+ var/list/saves = list()
+
+ if(!query.Execute())
+ var/err = query.ErrorMsg()
+ log_game("SQL ERROR during random character slot picking. Error : \[[err]\]\n")
+ message_admins("SQL ERROR during random character slot picking. Error : \[[err]\]\n")
+ return
while(query.NextRow())
- var/list/saves = list()
- for(var/i=1, i<=MAX_SAVE_SLOTS, i++)
- if(i==text2num(query.item[1]))
- saves += i
+ saves += text2num(query.item[1])
if(!saves.len)
load_character(C)
return 0
load_character(C,pick(saves))
- return 1*/
+ return 1
/datum/preferences/proc/SetChangelog(client/C,hash)
lastchangelog=hash
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 20640edce66..bccd7990de9 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -25,6 +25,8 @@
/mob/new_player/proc/new_player_panel_proc()
var/real_name = client.prefs.real_name
+ if(client.prefs.randomslot)
+ real_name = "Random Character Slot"
var/output = "Setup Character
[real_name]
"
if(!ticker || ticker.current_state <= GAME_STATE_PREGAME)
@@ -169,6 +171,9 @@
to_chat(usr, "\blue There is an administrative lock on entering the game!")
return
+ if(client.prefs.randomslot)
+ client.prefs.load_random_character_slot(client)
+
if(client.prefs.species in whitelisted_species)
if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist)
to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species]."))