diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index a9d101f7de8..da13a50752e 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -121,9 +121,6 @@ datum/controller/game_controller/proc/setup_objects()
//Set up spawn points.
populate_spawn_points()
- //Set up gear list.
- populate_gear_list()
-
//Set up roundstart seed list.
populate_seed_list()
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index e5a96e246ae..2ff7e0b6f8f 100755
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -276,15 +276,15 @@ datum/preferences
dat += "
Custom Loadout: "
var/total_cost = 0
- if(isnull(gear) || !islist(gear)) gear = list()
+ if(!islist(gear)) gear = list()
if(gear && gear.len)
dat += "
"
- for(var/gear_name in gear)
- if(gear_datums[gear_name])
- var/datum/gear/G = gear_datums[gear_name]
+ for(var/i = 1; i <= gear.len; i++)
+ var/datum/gear/G = gear_datums[gear[i]]
+ if(G)
total_cost += G.cost
- dat += "[gear_name] \[remove\]
"
+ dat += "[gear[i]] ([G.cost] points) \[remove\]
"
dat += "Used: [total_cost] points."
else
@@ -293,7 +293,7 @@ datum/preferences
if(total_cost < MAX_GEAR_COST)
dat += " \[add\]"
if(gear && gear.len)
- dat += " \[remove\]"
+ dat += " \[clear\]"
dat += "
Occupation Choices
"
dat += "\tSet Preferences
"
@@ -874,17 +874,17 @@ datum/preferences
total_cost += C.cost
if(C && total_cost <= MAX_GEAR_COST)
gear += choice
- user << "\blue Added [choice] for [C.cost] points ([MAX_GEAR_COST - total_cost] points remaining)."
+ user << "Added \the '[choice]' for [C.cost] points ([MAX_GEAR_COST - total_cost] points remaining)."
else
- user << "\red That item will exceed the maximum loadout cost of [MAX_GEAR_COST] points."
+ user << "Adding \the '[choice]' will exceed the maximum loadout cost of [MAX_GEAR_COST] points."
else if(href_list["task"] == "remove")
- var/to_remove = href_list["gear"]
- if(!to_remove) return
- for(var/gear_name in gear)
- if(gear_name == to_remove)
- gear -= gear_name
- break
+ var/i_remove = text2num(href_list["gear"])
+ if(i_remove < 1 || i_remove > gear.len) return
+ gear.Cut(i_remove, i_remove + 1)
+
+ else if(href_list["task"] == "clear")
+ gear.Cut()
else if(href_list["preference"] == "flavor_text")
switch(href_list["task"])
diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm
index aee6547694a..f87a6ee6d3f 100644
--- a/code/modules/client/preferences_gear.dm
+++ b/code/modules/client/preferences_gear.dm
@@ -1,9 +1,10 @@
var/global/list/gear_datums = list()
-proc/populate_gear_list()
+/hook/startup/proc/populate_gear_list()
for(var/type in typesof(/datum/gear)-/datum/gear)
var/datum/gear/G = new type()
gear_datums[G.display_name] = G
+ return 1
/datum/gear
var/display_name //Name/index.