diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index 539019a41c8..c3d461d4c5c 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -78,35 +78,49 @@
GLOB.pai_software_by_key[P.id] = P
// Setup loadout gear
- for(var/geartype in subtypesof(/datum/gear))
- var/datum/gear/G = geartype
+ for(var/gear_type in subtypesof(/datum/gear))
+ var/datum/gear/gear = gear_type
- var/use_name = initial(G.display_name)
- var/use_category = initial(G.sort_category)
+ if(gear == gear.path)
+ continue
- if(G == initial(G.subtype_path))
+ if(gear_type == gear.subtype_path)
continue
- if(!use_name)
- error("Loadout - Missing display name: [G]")
+ if(!gear.index_name)
+ stack_trace("Loadout - Missing index name: [gear]")
continue
- if(!initial(G.cost))
- error("Loadout - Missing cost: [G]")
+ if(!gear.cost)
+ stack_trace("Loadout - Missing cost: [gear]")
continue
- if(!initial(G.path))
- error("Loadout - Missing path definition: [G]")
+ if(!gear.path)
+ stack_trace("Loadout - Missing path definition: [gear]")
continue
-
- if(!GLOB.loadout_categories[use_category])
- GLOB.loadout_categories[use_category] = new /datum/loadout_category(use_category)
- var/datum/loadout_category/LC = GLOB.loadout_categories[use_category]
- GLOB.gear_datums[use_name] = new geartype
- LC.gear[use_name] = GLOB.gear_datums[use_name]
-
- GLOB.loadout_categories = sortAssoc(GLOB.loadout_categories)
- for(var/loadout_category in GLOB.loadout_categories)
- var/datum/loadout_category/LC = GLOB.loadout_categories[loadout_category]
- LC.gear = sortAssoc(LC.gear)
+ gear = new gear
+ var/obj/gear_item = gear.path
+ var/list/tweaks = list()
+ for(var/datum/gear_tweak/tweak as anything in gear.gear_tweaks)
+ tweaks[tweak.type] += list(list(
+ "name" = tweak.display_type,
+ "icon" = tweak.fa_icon,
+ "tooltip" = tweak.info,
+ ))
+
+ GLOB.gear_tgui_info[gear.sort_category] += list(
+ "[gear_type]" = list(
+ "name" = ((gear.display_name == /datum/gear::display_name)? gear_item.name : gear.display_name) ,
+ "index_name" = gear.index_name,
+ "desc" = gear.description,
+ "icon" = gear_item.icon,
+ "icon_state" = gear_item.icon_state,
+ "cost" = gear.cost,
+ "gear_tier" = gear.donator_tier,
+ "allowed_roles" = gear.allowed_roles,
+ "tweaks" = tweaks,
+ )
+ )
+
+ GLOB.gear_datums[gear.index_name] = gear
// Setup a list of robolimbs
diff --git a/code/_globalvars/_regexes.dm b/code/_globalvars/_regexes.dm
index 7c2a73a4548..a9ad1b03e55 100644
--- a/code/_globalvars/_regexes.dm
+++ b/code/_globalvars/_regexes.dm
@@ -1,3 +1,4 @@
GLOBAL_DATUM_INIT(is_http_protocol, /regex, regex("^https?://"))
GLOBAL_DATUM_INIT(filename_forbidden_chars, /regex, regex(@{""|[\\\n\t/?%*:|<>]|\.\."}, "g"))
+GLOBAL_DATUM_INIT(is_color, /regex, regex("^#\[0-9a-fA-F]{6}$"))
GLOBAL_PROTECT(filename_forbidden_chars)
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index ed8fe897cae..4aac6998041 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -220,7 +220,7 @@
continue
if(G.slot)
- if(H.equip_to_slot_or_del(G.spawn_item(H, H.client.prefs.loadout_gear[G.display_name]), G.slot))
+ if(H.equip_to_slot_or_del(G.spawn_item(H, H.client.prefs.get_gear_metadata(G)), G.slot, TRUE))
to_chat(H, "Equipping you with [G.display_name]!")
else
gear_leftovers += G
@@ -239,19 +239,19 @@
if(gear_leftovers.len)
for(var/datum/gear/G in gear_leftovers)
- var/obj/item/placed_in = G.spawn_item(get_turf(H), H.client.prefs.loadout_gear[G.display_name])
+ var/obj/item/placed_in = G.spawn_item(null, H.client.prefs.get_gear_metadata(G))
if(placed_in.equip_to_best_slot(H))
- to_chat(H, "Placing [G.display_name] in your inventory!")
+ to_chat(H, span_notice("Placing [G.display_name] in your inventory!"))
continue
if(H.put_in_hands(placed_in))
- to_chat(H, "Placing [G.display_name] in your hands!")
+ to_chat(H, span_notice("Placing [G.display_name] in your hands!"))
continue
- to_chat(H, "Failed to locate a storage object on your mob, either you spawned with no hands free and no backpack or this is a bug.")
+ to_chat(H, span_danger("Failed to locate a storage object on your mob, either you spawned with no hands free and no backpack or this is a bug."))
qdel(placed_in)
qdel(gear_leftovers)
- return 1
+ return TRUE
/datum/outfit/job/proc/imprint_idcard(mob/living/carbon/human/H)
var/datum/job/J = SSjobs.GetJobType(jobtype)
diff --git a/code/game/machinery/dye_generator.dm b/code/game/machinery/dye_generator.dm
index 9da27873474..5a7fae2e55e 100644
--- a/code/game/machinery/dye_generator.dm
+++ b/code/game/machinery/dye_generator.dm
@@ -58,8 +58,8 @@
..()
if(stat & (BROKEN|NOPOWER))
return
- var/temp = input(usr, "Choose a dye color", "Dye Color") as color|null
- if(!temp)
+ var/temp = tgui_input_color(usr, "Choose a dye color", "Dye Color")
+ if(isnull(temp))
return
set_light_color(temp)
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 1f3b0e03897..7454ac612df 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -267,7 +267,9 @@
if(!Adjacent(usr) || usr.incapacitated())
return
if(href_list["color"])
- var/temp = input(usr, "Please select colour.", "Crayon colour") as color
+ var/temp = tgui_input_color(usr, "Please select colour.", "Crayon colour")
+ if(isnull(temp))
+ return
colour = temp
update_window(usr)
else
@@ -303,7 +305,10 @@
if("Change Drawing")
..()
if("Change Color")
- colour = input(user,"Choose Color") as color
+ var/new_color = tgui_input_color(user,"Choose Color")
+ if(isnull(new_color))
+ return
+ colour = new_color
update_icon()
/obj/item/toy/crayon/spraycan/afterattack(atom/target, mob/user, proximity, params)
diff --git a/code/game/objects/items/devices/window_painter.dm b/code/game/objects/items/devices/window_painter.dm
index 6dae12b8c5a..66f26594d7b 100644
--- a/code/game/objects/items/devices/window_painter.dm
+++ b/code/game/objects/items/devices/window_painter.dm
@@ -25,7 +25,10 @@
mode = "pipette"
if("Choose Color")
mode = "paint"
- colour = input(user,"Choose Color") as color
+ var/new_color = tgui_input_color(user,"Choose Color")
+ if(isnull(new_color))
+ return
+ colour = new_color
update_icon(UPDATE_OVERLAYS)
if("Color Presets")
mode = "paint"
diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm
index 136b42d4f9e..a2825fb3edf 100644
--- a/code/game/objects/structures/curtains.dm
+++ b/code/game/objects/structures/curtains.dm
@@ -48,7 +48,10 @@
if(istype(I, /obj/item/toy/crayon))
add_fingerprint(user)
- color = input(user, "Choose Color") as color
+ var/new_color = tgui_input_color(user, "Choose Color")
+ if(isnull(new_color))
+ return ATTACK_CHAIN_PROCEED
+ color = new_color
return ATTACK_CHAIN_PROCEED_SUCCESS
return ..()
diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm
index 5653ed75f64..b5dcf580e43 100644
--- a/code/game/objects/structures/dresser.dm
+++ b/code/game/objects/structures/dresser.dm
@@ -31,8 +31,8 @@
if(new_underwear)
var/datum/sprite_accessory/underwear/uwear = GLOB.underwear_list[new_underwear]
if(uwear.allow_change_color)
- var/new_underwear_color = input(user, "Choose your underwear color, else color will be white:", "Changing", "#ffffff") as color|null
- H.color_underwear = new_underwear_color || "#ffffff"
+ var/new_underwear_color = tgui_input_color(user, "Choose your underwear color, else color will be white:", "Changing", "#ffffff")
+ H.color_underwear = isnull(new_underwear_color)? "#ffffff" : new_underwear_color
H.underwear = new_underwear
if("Undershirt")
@@ -49,8 +49,8 @@
if(new_undershirt)
var/datum/sprite_accessory/undershirt/ushirt = GLOB.undershirt_list[new_undershirt]
if(ushirt.allow_change_color)
- var/new_undershirt_color = input(user, "Choose your undershirt color, else color will be white:", "Changing", "#ffffff") as color|null
- H.color_undershirt = new_undershirt_color || "#ffffff"
+ var/new_undershirt_color = tgui_input_color(user, "Choose your undershirt color, else color will be white:", "Changing", "#ffffff")
+ H.color_undershirt = isnull(new_undershirt_color )? "#ffffff" : new_undershirt_color
H.undershirt = new_undershirt
if("Socks")
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 5d78bba539f..9e7403ec955 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -1264,8 +1264,8 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
return
message = strip_html(message, 500)
- var/message_color = input(src, "Input your message color:", "Color Selector") as color|null
- if(!message_color)
+ var/message_color = tgui_input_color(src, "Input your message color:", "Color Selector")
+ if(isnull(message_color))
return
var/alert_type2 = alert(src, "Do you wish to change speed of an admin alert to? (No - default speed)",,"Yes", "No")
diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm
index 9eebcddb793..71536bfd7b7 100644
--- a/code/modules/antagonists/space_dragon/space_dragon.dm
+++ b/code/modules/antagonists/space_dragon/space_dragon.dm
@@ -239,8 +239,8 @@
* If an invalid color is given, will re-prompt the dragon until a proper color is chosen.
*/
/mob/living/simple_animal/hostile/space_dragon/proc/color_selection()
- chosen_color = input(src,"Какого цвета вы хотите быть?","Выбор цвета", COLOR_WHITE) as color|null
- if(!chosen_color) //redo proc until we get a color
+ chosen_color = tgui_input_color(src,"Какого цвета вы хотите быть?","Выбор цвета", COLOR_WHITE)
+ if(isnull(chosen_color)) //redo proc until we get a color
to_chat(src, span_warning("Этот цвет некорректен, попробуйте еще раз."))
color_selection()
return
diff --git a/code/modules/asset_cache/asset_list.dm b/code/modules/asset_cache/asset_list.dm
index a508459a9ef..ab556c41eb7 100644
--- a/code/modules/asset_cache/asset_list.dm
+++ b/code/modules/asset_cache/asset_list.dm
@@ -641,4 +641,27 @@ GLOBAL_LIST_EMPTY(asset_datums)
/datum/asset/simple/namespaced/proc/get_htmlloader(filename)
return URL2HTMLLOADER(SSassets.transport.get_asset_url(filename, assets[filename]))
+
+/// A subtype to generate a JSON file from a list
+/datum/asset/json
+ _abstract = /datum/asset/json
+ /// The filename, will be suffixed with ".json"
+ var/name
+/datum/asset/json/send(client)
+ return SSassets.transport.send_assets(client, "[name].json")
+/datum/asset/json/get_url_mappings()
+ return list(
+ "[name].json" = SSassets.transport.get_asset_url("[name].json"),
+ )
+/datum/asset/json/register()
+ var/filename = "data/[name].json"
+ fdel(filename)
+ text2file(json_encode(generate()), filename)
+ SSassets.transport.register_asset("[name].json", fcopy_rsc(filename))
+ fdel(filename)
+/// Returns the data that will be JSON encoded
+/datum/asset/json/proc/generate()
+ SHOULD_CALL_PARENT(FALSE)
+ CRASH("generate() not implemented for [type]!")
+
#undef ASSET_CROSS_ROUND_CACHE_DIRECTORY
diff --git a/code/modules/asset_cache/assets/asset_icon_ref_map.dm b/code/modules/asset_cache/assets/asset_icon_ref_map.dm
new file mode 100644
index 00000000000..4eef3398056
--- /dev/null
+++ b/code/modules/asset_cache/assets/asset_icon_ref_map.dm
@@ -0,0 +1,24 @@
+/// Maps icon names to ref values
+/datum/asset/json/icon_ref_map
+ name = "icon_ref_map"
+ early = TRUE
+
+/datum/asset/json/icon_ref_map/generate()
+ var/list/data = list() //"icons/obj/drinks.dmi" => "[0xc000020]"
+ //var/start = "0xc000000"
+ var/value = 0
+ while(TRUE)
+ value += 1
+ var/ref = "\[0xc[num2text(value,6,16)]\]"
+ var/mystery_meat = locate(ref)
+ if(isicon(mystery_meat))
+ if(!isfile(mystery_meat)) // Ignore the runtime icons for now
+ continue
+ var/path = get_icon_dmi_path(mystery_meat) //Try to get the icon path
+ if(path)
+ data[path] = ref
+ else if(mystery_meat)
+ continue; //Some other non-icon resource, ogg/json/whatever
+ else //Out of resources end this, could also try to end this earlier as soon as runtime generated icons appear but eh
+ break;
+ return data
diff --git a/code/modules/client/preference/loadout/gear_tweaks.dm b/code/modules/client/preference/loadout/gear_tweaks.dm
index a22307f4730..0b7a89ab01b 100644
--- a/code/modules/client/preference/loadout/gear_tweaks.dm
+++ b/code/modules/client/preference/loadout/gear_tweaks.dm
@@ -1,3 +1,11 @@
+/datum/gear_tweak
+ /// Displayed in TGUI name
+ var/display_type
+ /// Font Awesome icon
+ var/fa_icon
+ /// Explains what is this do in TGUI tooltip
+ var/info
+
/datum/gear_tweak/proc/get_contents(var/metadata)
return
@@ -7,13 +15,16 @@
/datum/gear_tweak/proc/get_default()
return
+/datum/gear_tweak/proc/get_tgui_data(param)
+ return
+
/datum/gear_tweak/proc/update_gear_intro()
return
/datum/gear_tweak/proc/tweak_gear_data(var/metadata, var/datum/gear_data)
return
-/datum/gear_tweak/proc/tweak_item(var/obj/item/I, var/metadata)
+/datum/gear_tweak/proc/tweak_item(obj/item/gear, metadata)
return
/*
@@ -21,6 +32,9 @@
*/
/datum/gear_tweak/color
+ display_type = "Color"
+ fa_icon = "palette"
+ info = "Recolorable"
var/list/valid_colors
var/datum/gear/parent
@@ -37,25 +51,34 @@
/datum/gear_tweak/color/get_metadata(var/user, var/metadata)
if(valid_colors)
- metadata = input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors
+ metadata = tgui_input_list(user, "Choose an item color.", "Character Preference", valid_colors, metadata)
else
- metadata = input(user, "Choose an item color.", "Global Preference", metadata) as color|null
+ metadata = tgui_input_color(user, "Choose an item color.", "Global Preference", metadata)
update_gear_intro(metadata)
return metadata
+/datum/gear_tweak/color/get_tgui_data(param)
+ var/tgui_data = list()
+ tgui_data["display_param"] = param
+ tgui_data["icon"] = parent.get_gear_icon(param)
+ return tgui_data
+
/datum/gear_tweak/color/update_gear_intro(var/color)
parent.update_gear_icon(color)
-/datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata)
- if(valid_colors && !(metadata in valid_colors))
+/datum/gear_tweak/color/tweak_item(obj/item/gear, metadata)
+ if((valid_colors && !(metadata in valid_colors)) || !metadata)
return
- I.color = metadata
+ gear.color = metadata
/*
* Path adjustment
*/
/datum/gear_tweak/path
+ display_type = "Subtype"
+ fa_icon = "bars"
+ info = "Has subtypes"
var/list/valid_paths = list()
var/datum/gear/parent
@@ -83,52 +106,44 @@
parent.path = valid_paths[path]
parent.update_gear_icon()
+/datum/gear_tweak/path/get_tgui_data(param)
+ var/tgui_data = list()
+ tgui_data["display_param"] = param
+ var/obj/item/path = valid_paths[param]
+ tgui_data["icon_file"] = path.icon
+ tgui_data["icon_state"] = path.icon_state
+ tgui_data["name"] = path.name
+ return tgui_data
+
/datum/gear_tweak/path/tweak_gear_data(var/metadata, var/datum/gear_data/gear_data)
if(!(metadata in valid_paths))
return
gear_data.path = valid_paths[metadata]
-/*
-* Content adjustment
-*/
+// MARK: Rename
+/datum/gear_tweak/rename
+ display_type = "Name"
+ fa_icon = "edit"
+ info = "Renameable"
-/datum/gear_tweak/contents
- var/list/valid_contents
+/datum/gear_tweak/rename/get_default()
+ return ""
-/datum/gear_tweak/contents/New()
- valid_contents = args.Copy()
- ..()
-/datum/gear_tweak/contents/get_contents(var/metadata)
- return "Contents: [english_list(metadata, and_text = ", ")]"
-
-/datum/gear_tweak/contents/get_default()
- . = list()
- for(var/i = 1 to valid_contents.len)
- . += "Random"
-
-/datum/gear_tweak/contents/get_metadata(var/user, var/list/metadata)
- . = list()
- for(var/i = metadata.len to valid_contents.len)
- metadata += "Random"
- for(var/i = 1 to valid_contents.len)
- var/entry = input(user, "Choose an entry.", "Character Preference", metadata[i]) as null|anything in (valid_contents[i] + list("Random", "None"))
- if(entry)
- . += entry
- else
- return metadata
-
-/datum/gear_tweak/contents/tweak_item(var/obj/item/I, var/list/metadata)
- if(metadata.len != valid_contents.len)
+/datum/gear_tweak/rename/get_metadata(user, metadata)
+ var/new_name = tgui_input_text(user, "Rename an object. Enter empty line for stock name", "Rename Gear", metadata, MAX_NAME_LEN)
+ if(isnull(new_name))
+ return metadata
+ return new_name
+
+/datum/gear_tweak/rename/get_tgui_data(param)
+ var/tgui_data = list()
+ tgui_data["display_param"] = param
+ tgui_data["name"] = param
+ return tgui_data
+
+/datum/gear_tweak/rename/tweak_item(obj/item/gear, metadata)
+ if(!metadata)
return
- for(var/i = 1 to valid_contents.len)
- var/path
- var/list/contents = valid_contents[i]
- if(metadata[i] == "Random")
- path = pick(contents)
- path = contents[path]
- else if(metadata[i] == "None")
- continue
- else
- path = contents[metadata[i]]
- new path(I)
+
+ gear.name = metadata
diff --git a/code/modules/client/preference/loadout/loadout.dm b/code/modules/client/preference/loadout/loadout.dm
index 0128066203c..b85a51e95ab 100644
--- a/code/modules/client/preference/loadout/loadout.dm
+++ b/code/modules/client/preference/loadout/loadout.dm
@@ -1,16 +1,8 @@
-GLOBAL_LIST_EMPTY(loadout_categories)
GLOBAL_LIST_EMPTY(gear_datums)
-/datum/loadout_category
- var/category = ""
- var/list/gear = list()
-
-/datum/loadout_category/New(cat)
- category = cat
- ..()
-
/datum/gear
- var/display_name //Name/index. Must be unique.
+ var/index_name //index. Must be unique.
+ var/display_name = "bug" //Name
var/description //Description of this gear. If left blank will default to the description of the pathed item.
var/atom/path //Path to item.
var/icon_state //Icon state of item
@@ -24,6 +16,7 @@ GLOBAL_LIST_EMPTY(gear_datums)
var/subtype_path = /datum/gear //for skipping organizational subtypes (optional)
var/subtype_cost_overlap = TRUE //if subtypes can take points at the same time
var/implantable = FALSE //For organ-like implants (huds, pumps, etc)
+ var/donator_tier = 0
/datum/gear/New()
..()
@@ -33,6 +26,12 @@ GLOBAL_LIST_EMPTY(gear_datums)
/datum/gear/proc/update_gear_icon(color)
+ var/gear_icon = get_gear_icon(color)
+ if(!gear_icon)
+ return
+ base64icon = gear_icon
+
+/datum/gear/proc/get_gear_icon(color)
if(initial(icon) && initial(icon_state))
return
icon_state = path::icon_state
@@ -44,7 +43,7 @@ GLOBAL_LIST_EMPTY(gear_datums)
var/icon/new_icon = icon(icon, icon_state, SOUTH, 1, FALSE)
if(color)
new_icon.Blend(color, ICON_MULTIPLY)
- base64icon = icon2base64(new_icon)
+ return icon2base64(new_icon)
/datum/gear_data
var/path
@@ -55,12 +54,12 @@ GLOBAL_LIST_EMPTY(gear_datums)
location = nlocation
/datum/gear/proc/spawn_item(location, metadata)
- var/datum/gear_data/gd = new(path, location)
- for(var/datum/gear_tweak/gt in gear_tweaks)
- gt.tweak_gear_data(metadata["[gt]"], gd)
- var/item = new gd.path(gd.location)
- for(var/datum/gear_tweak/gt in gear_tweaks)
- gt.tweak_item(item, metadata["[gt]"])
+ var/datum/gear_data/gear_data = new(path, location)
+ for(var/datum/gear_tweak/tweak in gear_tweaks)
+ tweak.tweak_gear_data(metadata["[tweak]"], gear_data)
+ var/item = new gear_data.path(gear_data.location)
+ for(var/datum/gear_tweak/tweak in gear_tweaks)
+ tweak.tweak_item(item, metadata["[tweak]"])
return item
/datum/gear/proc/can_select(client/cl, job_name, species_name, silent = FALSE)
diff --git a/code/modules/client/preference/loadout/loadout_accessories.dm b/code/modules/client/preference/loadout/loadout_accessories.dm
index ed820949674..fa8ee75e686 100644
--- a/code/modules/client/preference/loadout/loadout_accessories.dm
+++ b/code/modules/client/preference/loadout/loadout_accessories.dm
@@ -4,7 +4,8 @@
sort_category = "Accessories"
/datum/gear/accessory/scarf
- display_name = "scarf, select"
+ index_name = "scarf, select"
+ display_name = "scarf"
path = /obj/item/clothing/accessory/scarf/red
/datum/gear/accessory/scarf/New()
@@ -23,7 +24,8 @@
gear_tweaks += new /datum/gear_tweak/path(scarfs, src, TRUE)
/datum/gear/accessory/scarfstriped
- display_name = "striped scarf, select"
+ index_name = "striped scarf, select"
+ display_name = "striped scarf"
path = /obj/item/clothing/accessory/stripedredscarf
/datum/gear/accessory/scarfstriped/New()
@@ -34,22 +36,23 @@
gear_tweaks += new /datum/gear_tweak/path(scarfs, src, TRUE)
/datum/gear/accessory/holobadge
- display_name = "holobadge, pin"
+ index_name = "holobadge, pin"
path = /obj/item/clothing/accessory/holobadge
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/accessory/holobadge_n
- display_name = "holobadge, cord"
+ index_name = "holobadge, cord"
path = /obj/item/clothing/accessory/holobadge/cord
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/accessory/holobadge/detective
- display_name = "holobadge, detective"
+ index_name = "holobadge, detective"
path = /obj/item/clothing/accessory/holobadge/detective
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_DETECTIVE)
/datum/gear/accessory/tie
- display_name = "tie, select"
+ index_name = "tie, select"
+ display_name = "tie"
path = /obj/item/clothing/accessory/blue
/datum/gear/accessory/tie/New()
@@ -61,21 +64,21 @@
gear_tweaks += new /datum/gear_tweak/path(ties, src, TRUE)
/datum/gear/accessory/stethoscope
- display_name = "stethoscope"
+ index_name = "stethoscope"
path = /obj/item/clothing/accessory/stethoscope
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_PARAMEDIC, JOB_TITLE_BRIGDOC)
/datum/gear/accessory/ntrjacket
- display_name = "jacket, nt rep"
+ index_name = "jacket, nt rep"
path = /obj/item/clothing/accessory/ntrjacket
allowed_roles = list(JOB_TITLE_REPRESENTATIVE)
/datum/gear/accessory/waistcoat
- display_name = "waistcoat"
+ index_name = "waistcoat"
path = /obj/item/clothing/accessory/waistcoat
/datum/gear/accessory/cowboyshirt
- display_name = "cowboy shirt, select"
+ index_name = "cowboy shirt, select"
path = /obj/item/clothing/accessory/cowboyshirt
/datum/gear/accessory/cowboyshirt/New()
@@ -93,15 +96,16 @@
gear_tweaks += new /datum/gear_tweak/path(shirts, src, TRUE)
/datum/gear/accessory/locket
- display_name = "gold locket"
+ index_name = "gold locket"
path = /obj/item/clothing/accessory/necklace/locket
/datum/gear/accessory/necklace
- display_name = "simple necklace"
+ index_name = "simple necklace"
path = /obj/item/clothing/accessory/necklace
/datum/gear/accessory/corset
- display_name = "corset, select"
+ index_name = "corset, select"
+ display_name = "corset"
path = /obj/item/clothing/accessory/corset
/datum/gear/accessory/corset/New()
@@ -113,11 +117,11 @@
gear_tweaks += new /datum/gear_tweak/path(corsets, src, TRUE)
/datum/gear/accessory/armband_red
- display_name = "armband"
+ index_name = "armband"
path = /obj/item/clothing/accessory/armband
/datum/gear/accessory/armband_civ
- display_name = "armband, blue-yellow"
+ index_name = "armband, blue-yellow"
path = /obj/item/clothing/accessory/armband/yb
/datum/gear/accessory/armband_job
@@ -125,42 +129,43 @@
subtype_cost_overlap = FALSE
/datum/gear/accessory/armband_job/sec
- display_name = " armband, security"
+ index_name = " armband, security"
path = /obj/item/clothing/accessory/armband/sec
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_BRIGDOC, JOB_TITLE_PILOT)
/datum/gear/accessory/armband_job/cargo
- display_name = "cargo armband"
+ index_name = "cargo armband"
path = /obj/item/clothing/accessory/armband/cargo
allowed_roles = list(JOB_TITLE_QUARTERMASTER, JOB_TITLE_CARGOTECH, JOB_TITLE_MINER)
/datum/gear/accessory/armband_job/medical
- display_name = "armband, medical"
+ index_name = "armband, medical"
path = /obj/item/clothing/accessory/armband/med
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_CORONER, JOB_TITLE_PARAMEDIC, JOB_TITLE_BRIGDOC)
/datum/gear/accessory/armband_job/emt
- display_name = "armband, EMT"
+ index_name = "armband, EMT"
path = /obj/item/clothing/accessory/armband/medgreen
allowed_roles = list(JOB_TITLE_PARAMEDIC, JOB_TITLE_BRIGDOC)
/datum/gear/accessory/armband_job/engineering
- display_name = "armband, engineering"
+ index_name = "armband, engineering"
path = /obj/item/clothing/accessory/armband/engine
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ATMOSTECH, JOB_TITLE_ENGINEER_TRAINEE)
/datum/gear/accessory/armband_job/hydro
- display_name = "armband, hydroponics"
+ index_name = "armband, hydroponics"
path = /obj/item/clothing/accessory/armband/hydro
allowed_roles = list(JOB_TITLE_BOTANIST)
/datum/gear/accessory/armband_job/sci
- display_name = "armband, science"
+ index_name = "armband, science"
path = /obj/item/clothing/accessory/armband/science
allowed_roles = list(JOB_TITLE_RD, JOB_TITLE_SCIENTIST, JOB_TITLE_SCIENTIST_STUDENT, JOB_TITLE_ROBOTICIST)
/datum/gear/accessory/holsters
- display_name = "holster, select"
+ index_name = "holster, select"
+ display_name = "holster"
path = /obj/item/clothing/accessory/holster/
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_BRIGDOC, JOB_TITLE_PILOT)
diff --git a/code/modules/client/preference/loadout/loadout_donor.dm b/code/modules/client/preference/loadout/loadout_donor.dm
index a5d99260b3a..250d54f86ae 100644
--- a/code/modules/client/preference/loadout/loadout_donor.dm
+++ b/code/modules/client/preference/loadout/loadout_donor.dm
@@ -1,5 +1,5 @@
/datum/gear/donor
- var/donator_tier = 2
+ donator_tier = 2
sort_category = "Donor"
subtype_path = /datum/gear/donor
@@ -8,7 +8,7 @@
return FALSE
if(!donator_tier) // why are you here?.. allowed, but
- stack_trace("Item with no donator tier in loadout donor items: [display_name].")
+ stack_trace("Item with no donator tier in loadout donor items: [index_name].")
return TRUE
if(!cl.prefs) // DB loading, skip this check now
@@ -18,7 +18,7 @@
return TRUE
if(cl && !silent)
- to_chat(cl, span_warning("Для получения \"[display_name]\" необходим [donator_tier] или более высокий уровень пожертвований."))
+ to_chat(cl, span_warning("Для получения \"[index_name]\" необходим [donator_tier] или более высокий уровень пожертвований."))
return FALSE
@@ -30,127 +30,127 @@
/datum/gear/donor/ussptracksuit_black
donator_tier = 1
cost = 1
- display_name = "track suit (black)"
+ index_name = "track suit (black)"
path = /obj/item/clothing/under/ussptracksuit_black
/datum/gear/donor/ussptracksuit_white
donator_tier = 1
cost = 1
- display_name = "track suit (white)"
+ index_name = "track suit (white)"
path = /obj/item/clothing/under/ussptracksuit_white
/datum/gear/donor/kittyears
- display_name = "Kitty ears"
+ index_name = "Kitty ears"
path = /obj/item/clothing/head/kitty
/datum/gear/donor/leather_trenchcoat
- display_name = "Leather Trenchcoat"
+ index_name = "Leather Trenchcoat"
path = /obj/item/clothing/suit/storage/leather_trenchcoat/runner
donator_tier = 2
cost = 1
/datum/gear/donor/furgloves
- display_name = "Fur Gloves"
+ index_name = "Fur Gloves"
path = /obj/item/clothing/gloves/furgloves
/datum/gear/donor/furboots
- display_name = "Fur Boots"
+ index_name = "Fur Boots"
path = /obj/item/clothing/shoes/furboots
/datum/gear/donor/noble_boot
- display_name = "Noble Boots"
+ index_name = "Noble Boots"
path = /obj/item/clothing/shoes/fluff/noble_boot
/datum/gear/donor/furcape
- display_name = "Fur Cape"
+ index_name = "Fur Cape"
path = /obj/item/clothing/neck/cloak/furcape
/datum/gear/donor/furcoat
- display_name = "Fur Coat"
+ index_name = "Fur Coat"
path = /obj/item/clothing/suit/furcoat
/datum/gear/donor/kamina
- display_name = "Spiky Orange-tinted Shades"
+ index_name = "Spiky Orange-tinted Shades"
path = /obj/item/clothing/glasses/fluff/kamina
/datum/gear/donor/green
- display_name = "Spiky Green-tinted Shades"
+ index_name = "Spiky Green-tinted Shades"
path = /obj/item/clothing/glasses/fluff/kamina/green
/datum/gear/donor/threedglasses
- display_name = "Threed Glasses"
+ index_name = "Threed Glasses"
path = /obj/item/clothing/glasses/threedglasses
/datum/gear/donor/blacksombrero
- display_name = "Black Sombrero"
+ index_name = "Black Sombrero"
path = /obj/item/clothing/head/fluff/blacksombrero
/datum/gear/donor/guardhelm
- display_name = "Plastic Guard helm"
+ index_name = "Plastic Guard helm"
path = /obj/item/clothing/head/fluff/guardhelm
/datum/gear/donor/goldtophat
- display_name = "Gold-trimmed Top Hat"
+ index_name = "Gold-trimmed Top Hat"
path = /obj/item/clothing/head/fluff/goldtophat
/datum/gear/donor/goldtophat/red
- display_name = "Red Gold-trimmed Top Hat"
+ index_name = "Red Gold-trimmed Top Hat"
path = /obj/item/clothing/head/fluff/goldtophat/red
/datum/gear/donor/goldtophat/blue
- display_name = "Blue Gold-trimmed Top Hat"
+ index_name = "Blue Gold-trimmed Top Hat"
path = /obj/item/clothing/head/fluff/goldtophat/blue
/datum/gear/donor/mushhat
- display_name = "Mushroom Hat"
+ index_name = "Mushroom Hat"
path = /obj/item/clothing/head/fluff/mushhat
/datum/gear/donor/furcap
- display_name = "Fur Cap"
+ index_name = "Fur Cap"
path = /obj/item/clothing/head/furcap
/datum/gear/donor/mouse
- display_name = "Mouse Headband"
+ index_name = "Mouse Headband"
path = /obj/item/clothing/head/kitty/mouse
/datum/gear/donor/fawkes
- display_name = "Guy Fawkes mask"
+ index_name = "Guy Fawkes mask"
path = /obj/item/clothing/mask/face/fawkes
/datum/gear/donor/bigbrother
- display_name = "Spraycan Big Brother"
+ index_name = "Spraycan Big Brother"
path = /obj/item/toy/crayon/spraycan/paintkit/bigbrother
/datum/gear/donor/slavic
- display_name = "Spraycan Slavic"
+ index_name = "Spraycan Slavic"
path = /obj/item/toy/crayon/spraycan/paintkit/slavic
/datum/gear/donor/id_decal_silver
- display_name = "Silver ID Decal"
+ index_name = "Silver ID Decal"
path = /obj/item/id_decal/silver
donator_tier = 3
cost = 1
/datum/gear/donor/id_decal_prisoner
- display_name = "Prisoner ID Decal"
+ index_name = "Prisoner ID Decal"
path = /obj/item/id_decal/prisoner
donator_tier = 3
cost = 1
/datum/gear/donor/id_decal_emag
- display_name = "Emag ID Decal"
+ index_name = "Emag ID Decal"
path = /obj/item/id_decal/emag
donator_tier = 3
cost = 1
/datum/gear/donor/id_decal_gold
- display_name = "Gold ID Decal"
+ index_name = "Gold ID Decal"
path = /obj/item/id_decal/gold
donator_tier = 4
cost = 1
/datum/gear/donor/zippolghtr
- display_name = "Zippo lighter"
+ index_name = "Zippo lighter"
path = /obj/item/lighter/zippo
donator_tier = 1
cost = 1
@@ -160,102 +160,102 @@
subtype_cost_overlap = FALSE
/datum/gear/donor/strip/cap
- display_name = "strip, Captain"
+ index_name = "strip, Captain"
path = /obj/item/clothing/accessory/head_strip
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_CAPTAIN)
/datum/gear/donor/strip/rd
- display_name = "strip, Research Director"
+ index_name = "strip, Research Director"
path = /obj/item/clothing/accessory/head_strip/rd
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_RD)
/datum/gear/donor/strip/ce
- display_name = "strip, Chief Engineer"
+ index_name = "strip, Chief Engineer"
path = /obj/item/clothing/accessory/head_strip/ce
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_CHIEF)
/datum/gear/donor/strip/t4ce
- display_name = "strip, Grand Chief Engineer"
+ index_name = "strip, Grand Chief Engineer"
path = /obj/item/clothing/accessory/head_strip/t4ce
donator_tier = 4
cost = 1
allowed_roles = list(JOB_TITLE_CHIEF)
/datum/gear/donor/strip/cmo
- display_name = "strip, Chief Medical Officer"
+ index_name = "strip, Chief Medical Officer"
path = /obj/item/clothing/accessory/head_strip/cmo
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_CMO)
/datum/gear/donor/strip/hop
- display_name = "strip, Head of Personnel"
+ index_name = "strip, Head of Personnel"
path = /obj/item/clothing/accessory/head_strip/hop
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_HOP)
/datum/gear/donor/strip/hos
- display_name = "strip, Head of Security"
+ index_name = "strip, Head of Security"
path = /obj/item/clothing/accessory/head_strip/hos
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_HOS)
/datum/gear/donor/strip/qm
- display_name = "strip, Quartermaster"
+ index_name = "strip, Quartermaster"
path = /obj/item/clothing/accessory/head_strip/qm
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_QUARTERMASTER)
/datum/gear/donor/strip/clown
- display_name = "strip, Clown"
+ index_name = "strip, Clown"
path = /obj/item/clothing/accessory/head_strip/clown
donator_tier = 2
cost = 1
allowed_roles = list(JOB_TITLE_CLOWN)
/datum/gear/donor/strip/bs
- display_name = "strip, Blueshield"
+ index_name = "strip, Blueshield"
path = /obj/item/clothing/accessory/head_strip/bs
donator_tier = 3
cost = 1
allowed_roles = list(JOB_TITLE_BLUESHIELD)
/datum/gear/donor/strip/ntr
- display_name = "strip, NanoTrasen Representative"
+ index_name = "strip, NanoTrasen Representative"
path = /obj/item/clothing/accessory/head_strip/ntr
donator_tier = 3
cost = 1
allowed_roles = list(JOB_TITLE_REPRESENTATIVE)
/datum/gear/donor/strip/syndi
- display_name = "strip, Syndicate"
+ index_name = "strip, Syndicate"
path = /obj/item/clothing/accessory/head_strip/syndicate
donator_tier = 3
cost = 1
/datum/gear/donor/strip/comrad
- display_name = "strip, SSSP"
+ index_name = "strip, SSSP"
path = /obj/item/clothing/accessory/head_strip/comrad
donator_tier = 3
cost = 1
/datum/gear/donor/strip/federal
- display_name = "strip, TSF"
+ index_name = "strip, TSF"
path = /obj/item/clothing/accessory/head_strip/federal
donator_tier = 3
cost = 1
/datum/gear/donor/heartglasses
- display_name = "heart-shaped glasses, color"
+ index_name = "heart-shaped glasses, color"
path = /obj/item/clothing/glasses/heart
donator_tier = 3
cost = 1
@@ -266,7 +266,7 @@
gear_tweaks += new /datum/gear_tweak/color(parent = src)
/datum/gear/donor/heart_meson
- display_name = "Heart Meson Glasses"
+ index_name = "Heart Meson Glasses"
path = /obj/item/clothing/glasses/meson/heart
donator_tier = 4
cost = 2
@@ -274,7 +274,7 @@
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ATMOSTECH, JOB_TITLE_MECHANIC, JOB_TITLE_QUARTERMASTER, JOB_TITLE_MINER, JOB_TITLE_CAPTAIN, JOB_TITLE_ENGINEER_TRAINEE)
/datum/gear/donor/heart_science
- display_name = "Heart Science Glasses"
+ index_name = "Heart Science Glasses"
path = /obj/item/clothing/glasses/science/heart
donator_tier = 4
cost = 2
@@ -282,7 +282,7 @@
allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_SCIENTIST, JOB_TITLE_ROBOTICIST, JOB_TITLE_RD, JOB_TITLE_GENETICIST, JOB_TITLE_CHEMIST, JOB_TITLE_SCIENTIST_STUDENT)
/datum/gear/donor/heart_health
- display_name = "Heart Medical Glasses"
+ index_name = "Heart Medical Glasses"
path = /obj/item/clothing/glasses/hud/health/heart
donator_tier = 4
cost = 2
@@ -290,7 +290,7 @@
allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_CMO, JOB_TITLE_INTERN, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_BLUESHIELD, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_DOCTOR, JOB_TITLE_CORONER)
/datum/gear/donor/heart_diagnostic
- display_name = "Heart Diagnostic Glasses"
+ index_name = "Heart Diagnostic Glasses"
path = /obj/item/clothing/glasses/hud/diagnostic/heart
donator_tier = 4
cost = 2
@@ -298,7 +298,7 @@
allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_RD, JOB_TITLE_ROBOTICIST)
/datum/gear/donor/heart_security
- display_name = "Heart Security Glasses"
+ index_name = "Heart Security Glasses"
path = /obj/item/clothing/glasses/hud/security/sunglasses/heart
donator_tier = 4
cost = 2
@@ -306,7 +306,7 @@
allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_DETECTIVE, JOB_TITLE_PILOT, JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_BLUESHIELD, JOB_TITLE_JUDGE, JOB_TITLE_OFFICER)
/datum/gear/donor/heartsec_read
- display_name = "Heart Security Glasses"
+ index_name = "Heart Security Glasses"
path = /obj/item/clothing/glasses/hud/security/sunglasses/heart/read_only
donator_tier = 4
cost = 2
@@ -314,7 +314,7 @@
allowed_roles = list(JOB_TITLE_LAWYER)
/datum/gear/donor/heart_hydroponic
- display_name = "Heart Hydroponic Glasses"
+ index_name = "Heart Hydroponic Glasses"
path = /obj/item/clothing/glasses/hud/heart
donator_tier = 4
cost = 2
@@ -322,7 +322,7 @@
allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_BOTANIST)
/datum/gear/donor/heart_skills
- display_name = "Heart Skills Glasses"
+ index_name = "Heart Skills Glasses"
path = /obj/item/clothing/glasses/hud/skills/heart
donator_tier = 4
cost = 2
@@ -330,7 +330,8 @@
allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_REPRESENTATIVE, JOB_TITLE_BLUESHIELD, JOB_TITLE_HOP)
/datum/gear/donor/night_dress
- display_name = "night dress, select"
+ index_name = "night dress, select"
+ display_name = "night dress"
description = "A classic night dress."
cost = 1
donator_tier = 3
@@ -346,14 +347,14 @@
gear_tweaks += new /datum/gear_tweak/path(skirts, src)
/datum/gear/donor/strip/cheese_badge
- display_name = "strip, Great fellow"
+ index_name = "strip, Great fellow"
path = /obj/item/clothing/accessory/head_strip/cheese_badge
donator_tier = 4
cost = 1
allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_QUARTERMASTER, JOB_TITLE_RD, JOB_TITLE_HOS, JOB_TITLE_HOP, JOB_TITLE_CMO, JOB_TITLE_CHIEF, JOB_TITLE_REPRESENTATIVE, JOB_TITLE_JUDGE)
/datum/gear/donor/smile_pin
- display_name = "smiling pin"
+ index_name = "smiling pin"
path = /obj/item/clothing/accessory/medal/smile
donator_tier = 4
cost = 1
@@ -361,67 +362,67 @@
/datum/gear/donor/backpack_hiking
donator_tier = 3
cost = 1
- display_name = "backpack, Fancy Hiking Pack"
+ index_name = "backpack, Fancy Hiking Pack"
path = /obj/item/storage/backpack/fluff/hiking
/datum/gear/donor/backpack_brew
donator_tier = 3
cost = 1
- display_name = "backpack, The brew"
+ index_name = "backpack, The brew"
path = /obj/item/storage/backpack/fluff/thebrew
/datum/gear/donor/backpack_cat
donator_tier = 3
cost = 1
- display_name = "backpack, CatPack"
+ index_name = "backpack, CatPack"
path = /obj/item/storage/backpack/fluff/ssscratches_back
/datum/gear/donor/backpack_voxcaster
donator_tier = 3
cost = 1
- display_name = "backpack, Voxcaster"
+ index_name = "backpack, Voxcaster"
path = /obj/item/storage/backpack/fluff/krich_back
/datum/gear/donor/backpack_syndi
donator_tier = 3
cost = 1
- display_name = "backpack, Military Satchel"
+ index_name = "backpack, Military Satchel"
path = /obj/item/storage/backpack/fluff/syndiesatchel
/datum/gear/donor/spacecloak
donator_tier = 3
cost = 1
- display_name = "Space cloak"
+ index_name = "Space cloak"
path = /obj/item/clothing/neck/cloak/spacecloak
/datum/gear/donor/golden_wheelchair
donator_tier = 4
cost = 1
- display_name = "Golden wheelchair paintkit"
+ index_name = "Golden wheelchair paintkit"
path = /obj/item/fluff/rapid_wheelchair_kit
/datum/gear/donor/hazardbelt
- display_name = "hazard vest alt"
+ index_name = "hazard vest alt"
path = /obj/item/clothing/suit/storage/hazardvest/beltdonor
donator_tier = 3
cost = 1
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER)
/datum/gear/donor/atmosbelt
- display_name = "hazard vest alt (atmos)"
+ index_name = "hazard vest alt (atmos)"
path = /obj/item/clothing/suit/storage/hazardvest/beltdonor/atmos
donator_tier = 3
cost = 1
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ATMOSTECH)
/datum/gear/donor/beaver
- display_name = "Beaver Plushie"
+ index_name = "Beaver Plushie"
path = /obj/item/toy/plushie/beaver
donator_tier = 3
cost = 1
/datum/gear/donor/earring_NT
- display_name = "Earrings NT"
+ index_name = "Earrings NT"
path = /obj/item/clothing/ears/earrings/Nt
donator_tier = 3
cost = 1
@@ -429,47 +430,47 @@
/datum/gear/donor/hijab
donator_tier = 1
cost = 1
- display_name = "hijab"
+ index_name = "hijab"
path = /obj/item/clothing/suit/hooded/hijab
/datum/gear/donor/steampunkdress
donator_tier = 1
cost = 1
- display_name = "victorian blue-white dress"
+ index_name = "victorian blue-white dress"
path = /obj/item/clothing/under/steampunkdress
/datum/gear/donor/plaidhoodie_green
donator_tier = 1
cost = 1
- display_name = "Plaid hoodie, green"
+ index_name = "Plaid hoodie, green"
path = /obj/item/clothing/suit/hoodie/plaidhoodie_green
/datum/gear/donor/plaidhoodie_white
donator_tier = 1
cost = 1
- display_name = "Plaid hoodie, white"
+ index_name = "Plaid hoodie, white"
path = /obj/item/clothing/suit/hoodie/plaidhoodie_white
/datum/gear/donor/plaidhoodie_red
donator_tier = 1
cost = 1
- display_name = "Plaid hoodie, red"
+ index_name = "Plaid hoodie, red"
path = /obj/item/clothing/suit/hoodie/plaidhoodie_red
/datum/gear/donor/plaidhoodie_yellow
donator_tier = 1
cost = 1
- display_name = "Plaid hoodie, yellow"
+ index_name = "Plaid hoodie, yellow"
path = /obj/item/clothing/suit/hoodie/plaidhoodie_yellow
/datum/gear/donor/blackcoat
donator_tier = 2
cost = 2
- display_name = "Black Coat"
+ index_name = "Black Coat"
path = /obj/item/clothing/suit/blackcoat
/datum/gear/donor/pda_beer
- display_name = "PDA case \"BEER\""
+ index_name = "PDA case \"BEER\""
path = /obj/item/pda_case/beer
donator_tier = 1
cost = 1
@@ -477,24 +478,24 @@
/datum/gear/donor/maid
donator_tier = 2
cost = 1
- display_name = "Short maid costume"
+ index_name = "Short maid costume"
path = /obj/item/clothing/under/maid/short
/datum/gear/donor/rdplushie
donator_tier = 3
cost = 1
- display_name = "RD doll"
+ index_name = "RD doll"
path = /obj/item/toy/plushie/rdplushie
/datum/gear/donor/gsbplushie
donator_tier = 3
cost = 1
- display_name = "GSBussy doll"
+ index_name = "GSBussy doll"
path = /obj/item/toy/plushie/gsbplushie
/datum/gear/donor/backpack_shitsec
donator_tier = 3
cost = 1
- display_name = "backpack of justice"
+ index_name = "backpack of justice"
path = /obj/item/storage/backpack/justice
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
diff --git a/code/modules/client/preference/loadout/loadout_general.dm b/code/modules/client/preference/loadout/loadout_general.dm
index 774e92169fe..2143c72aeff 100644
--- a/code/modules/client/preference/loadout/loadout_general.dm
+++ b/code/modules/client/preference/loadout/loadout_general.dm
@@ -1,39 +1,40 @@
/datum/gear/dice
- display_name = "a d20"
+ index_name = "a d20"
path = /obj/item/dice/d20
/datum/gear/uplift
- display_name = "a pack of Uplifts"
+ index_name = "a pack of Uplifts"
path = /obj/item/storage/fancy/cigarettes/cigpack_uplift
/datum/gear/robust
- display_name = "a pack of Robusts"
+ index_name = "a pack of Robusts"
path = /obj/item/storage/fancy/cigarettes/cigpack_robust
/datum/gear/carp
- display_name = "a pack of Carps"
+ index_name = "a pack of Carps"
path = /obj/item/storage/fancy/cigarettes/cigpack_carp
/datum/gear/midori
- display_name = "a pack of Midoris"
+ index_name = "a pack of Midoris"
path = /obj/item/storage/fancy/cigarettes/cigpack_midori
/datum/gear/smokingpipe
- display_name = "smoking pipe"
+ index_name = "smoking pipe"
path = /obj/item/clothing/mask/cigarette/pipe
cost = 2
/datum/gear/robustpipe
- display_name = "robust smoking pipe"
+ index_name = "robust smoking pipe"
path = /obj/item/clothing/mask/cigarette/pipe/oldpipe
cost = 2
/datum/gear/lighter
- display_name = "a cheap lighter"
+ index_name = "a cheap lighter"
path = /obj/item/lighter
/datum/gear/earrings
- display_name = "earrings, select"
+ index_name = "earrings, select"
+ display_name = "earrings"
path = /obj/item/clothing/ears/earrings
/datum/gear/earrings/New()
@@ -44,62 +45,63 @@
gear_tweaks += new /datum/gear_tweak/path(earrings, src)
/datum/gear/matches
- display_name = "a box of matches"
+ index_name = "a box of matches"
path = /obj/item/storage/box/matches
/datum/gear/candlebox
- display_name = "a box candles"
+ index_name = "a box candles"
description = "For setting the mood or for occult rituals."
path = /obj/item/storage/fancy/candle_box/full
/datum/gear/camera
- display_name = "a camera"
+ index_name = "a camera"
path = /obj/item/camera
/datum/gear/sechud
- display_name = "a classic security HUD"
+ index_name = "a classic security HUD"
path = /obj/item/clothing/glasses/hud/security
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT, JOB_TITLE_JUDGE)
/datum/gear/read_only_sechud
- display_name = "a classic security HUD (read-only)"
+ index_name = "a classic security HUD (read-only)"
path = /obj/item/clothing/glasses/hud/security/read_only
allowed_roles = list(JOB_TITLE_LAWYER)
/datum/gear/cryaonbox
- display_name = "a box of crayons"
+ index_name = "a box of crayons"
path = /obj/item/storage/fancy/crayons
/datum/gear/cane
- display_name = "a walking cane"
+ index_name = "a walking cane"
path = /obj/item/cane
/datum/gear/cards
- display_name = "a deck of standard cards"
+ index_name = "a deck of standard cards"
path = /obj/item/deck/cards
/datum/gear/doublecards
- display_name = "a double deck of standard cards"
+ index_name = "a double deck of standard cards"
path = /obj/item/deck/cards/doublecards
/datum/gear/tarot
- display_name = "a deck of tarot cards"
+ index_name = "a deck of tarot cards"
path = /obj/item/deck/tarot
/datum/gear/headphones
- display_name = "a pair of headphones"
+ index_name = "a pair of headphones"
path = /obj/item/clothing/ears/headphones
/datum/gear/fannypack
- display_name = "a fannypack"
+ index_name = "a fannypack"
path = /obj/item/storage/belt/fannypack
/datum/gear/wallet
- display_name = "a wallet(leather)"
+ index_name = "a wallet(leather)"
path = /obj/item/storage/wallet
/datum/gear/wallet/color
- display_name = "a wallet, select"
+ index_name = "a wallet, select"
+ display_name = "a wallet"
path = /obj/item/storage/wallet/color/blue
/datum/gear/wallet/color/New()
@@ -114,7 +116,8 @@
gear_tweaks += new /datum/gear_tweak/path(wallets, src)
/datum/gear/bandana
- display_name = "bandana, select"
+ index_name = "bandana, select"
+ display_name = "bandana"
path = /obj/item/clothing/mask/bandana/black
/datum/gear/bandana/New()
@@ -131,16 +134,17 @@
gear_tweaks += new /datum/gear_tweak/path(bands, src)
/datum/gear/piano_synth
- display_name ="synthesizer"
+ index_name ="synthesizer"
path = /obj/item/instrument/piano_synth
cost = 2
/datum/gear/tts
- display_name ="TTS device"
+ index_name ="TTS device"
path = /obj/item/ttsdevice
/datum/gear/lipstick
- display_name = "lipstick, select"
+ index_name = "lipstick, select"
+ display_name = "lipstick"
path = /obj/item/lipstick
/datum/gear/lipstick/New()
@@ -159,18 +163,18 @@
//////////////////////
/datum/gear/mug
- display_name = "random coffee mug"
+ index_name = "random coffee mug"
description = "A randomly colored coffee mug. You'll need to supply your own beverage though."
path = /obj/item/reagent_containers/food/drinks/mug
/datum/gear/novelty_mug
- display_name = "novelty coffee mug"
+ index_name = "novelty coffee mug"
description = "A random novelty coffee mug. You'll need to supply your own beverage though."
path = /obj/item/reagent_containers/food/drinks/mug/novelty
cost = 2
/datum/gear/mug/flask
- display_name = "flask"
+ index_name = "flask"
description = "A flask for drink transportation. You'll need to supply your own beverage though."
path = /obj/item/reagent_containers/food/drinks/flask/barflask
@@ -179,30 +183,30 @@
subtype_cost_overlap = FALSE
/datum/gear/mug/department/eng
- display_name = "engineer coffee mug"
+ index_name = "engineer coffee mug"
description = "An engineer's coffee mug, emblazoned in the colors of the Engineering department."
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ENGINEER_TRAINEE, JOB_TITLE_MECHANIC, JOB_TITLE_ATMOSTECH)
path = /obj/item/reagent_containers/food/drinks/mug/eng
/datum/gear/mug/department/med
- display_name = "doctor coffee mug"
+ index_name = "doctor coffee mug"
description = "A doctor's coffee mug, emblazoned in the colors of the Medical department."
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_CHEMIST, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_CORONER)
path = /obj/item/reagent_containers/food/drinks/mug/med
/datum/gear/mug/department/sci
- display_name = "scientist coffee mug"
+ index_name = "scientist coffee mug"
description = "A scientist's coffee mug, emblazoned in the colors of the Science department."
allowed_roles = list(JOB_TITLE_RD, JOB_TITLE_SCIENTIST, JOB_TITLE_SCIENTIST_STUDENT, JOB_TITLE_ROBOTICIST)
path = /obj/item/reagent_containers/food/drinks/mug/sci
/datum/gear/mug/department/sec
- display_name = "officer coffee mug"
+ index_name = "officer coffee mug"
description = "An officer's coffee mug, emblazoned in the colors of the Security department."
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_BRIGDOC, JOB_TITLE_PILOT, JOB_TITLE_LAWYER)
path = /obj/item/reagent_containers/food/drinks/mug/sec
/datum/gear/mug/department/serv
- display_name = "crewmember coffee mug"
+ index_name = "crewmember coffee mug"
description = "A crewmember's coffee mug, emblazoned in the colors of the Service department."
path = /obj/item/reagent_containers/food/drinks/mug/serv
diff --git a/code/modules/client/preference/loadout/loadout_glasses.dm b/code/modules/client/preference/loadout/loadout_glasses.dm
index 7cb1fd8037b..a11f2d9918d 100644
--- a/code/modules/client/preference/loadout/loadout_glasses.dm
+++ b/code/modules/client/preference/loadout/loadout_glasses.dm
@@ -4,15 +4,15 @@
sort_category = "Glasses"
/datum/gear/glasses/sunglasses
- display_name = "cheap sunglasses"
+ index_name = "cheap sunglasses"
path = /obj/item/clothing/glasses/sunglasses_fake
/datum/gear/glasses/eyepatch
- display_name = "Eyepatch"
+ index_name = "Eyepatch"
path = /obj/item/clothing/glasses/eyepatch
/datum/gear/glasses/blindfold
- display_name = "Blindfold"
+ index_name = "Blindfold"
path = /obj/item/clothing/glasses/sunglasses/blindfold
/datum/gear/glasses/blindfold/New()
@@ -20,7 +20,7 @@
gear_tweaks += new /datum/gear_tweak/color(parent = src)
/datum/gear/glasses/blindfold_fake
- display_name = "Fake blindfold"
+ index_name = "Fake blindfold"
path = /obj/item/clothing/glasses/sunglasses/blindfold_fake
/datum/gear/glasses/blindfold_fake/New()
@@ -28,49 +28,49 @@
gear_tweaks += new /datum/gear_tweak/color(parent = src)
/datum/gear/glasses/hipster
- display_name = "Hipster glasses"
+ index_name = "Hipster glasses"
path = /obj/item/clothing/glasses/regular/hipster
/datum/gear/glasses/monocle
- display_name = "Monocle"
+ index_name = "Monocle"
path = /obj/item/clothing/glasses/monocle
/datum/gear/glasses/prescription
- display_name = "Prescription glasses"
+ index_name = "Prescription glasses"
path = /obj/item/clothing/glasses/regular
/datum/gear/glasses/sectacticool
- display_name = "Security tactical glasses"
+ index_name = "Security tactical glasses"
path = /obj/item/clothing/glasses/hud/security/sunglasses/tacticool
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/glasses/medhudpatch
- display_name = "Medical HUD eyepatch"
+ index_name = "Medical HUD eyepatch"
path = /obj/item/clothing/glasses/hud/health/patch
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_CHEMIST, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_BRIGDOC, JOB_TITLE_CORONER)
/datum/gear/glasses/sechudpatch
- display_name = "Security HUD eyepatch"
+ index_name = "Security HUD eyepatch"
path = /obj/item/clothing/glasses/hud/security/patch
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT, JOB_TITLE_JUDGE, JOB_TITLE_DETECTIVE)
/datum/gear/glasses/sechudpatch/read_only
- display_name = "Security HUD eyepatch (read only)"
+ index_name = "Security HUD eyepatch (read only)"
path = /obj/item/clothing/glasses/hud/security/patch/read_only
allowed_roles = list(JOB_TITLE_LAWYER)
/datum/gear/glasses/hydrohudpatch
- display_name = "Hydroponic HUD eyepatch"
+ index_name = "Hydroponic HUD eyepatch"
path = /obj/item/clothing/glasses/hud/hydroponic/patch
allowed_roles = list(JOB_TITLE_BOTANIST)
/datum/gear/glasses/diaghudpatch
- display_name = "Diagnostic HUD eyepatch"
+ index_name = "Diagnostic HUD eyepatch"
path = /obj/item/clothing/glasses/hud/diagnostic/patch
allowed_roles = list(JOB_TITLE_ROBOTICIST, JOB_TITLE_RD)
/datum/gear/glasses/skillhudpatch
- display_name = "Skills HUD eyepatch"
+ index_name = "Skills HUD eyepatch"
path = /obj/item/clothing/glasses/hud/skills/patch
allowed_roles = list(JOB_TITLE_HOP, JOB_TITLE_CAPTAIN)
diff --git a/code/modules/client/preference/loadout/loadout_gloves.dm b/code/modules/client/preference/loadout/loadout_gloves.dm
index 8b08281e1a8..8d676a0f992 100644
--- a/code/modules/client/preference/loadout/loadout_gloves.dm
+++ b/code/modules/client/preference/loadout/loadout_gloves.dm
@@ -4,17 +4,17 @@
sort_category = "Gloves"
/datum/gear/gloves/fingerless
- display_name = "Fingerless Gloves"
+ index_name = "Fingerless Gloves"
path = /obj/item/clothing/gloves/fingerless
/datum/gear/gloves/silverring
- display_name = "Silver ring"
+ index_name = "Silver ring"
path = /obj/item/clothing/gloves/ring/silver
/datum/gear/gloves/goldring
- display_name = "Gold ring"
+ index_name = "Gold ring"
path = /obj/item/clothing/gloves/ring/gold
/datum/gear/gloves/brown_short_gloves
- display_name = "short leather gloves"
+ index_name = "short leather gloves"
path = /obj/item/clothing/gloves/brown_short_gloves
diff --git a/code/modules/client/preference/loadout/loadout_hat.dm b/code/modules/client/preference/loadout/loadout_hat.dm
index 56318992417..06b5bfc8e62 100644
--- a/code/modules/client/preference/loadout/loadout_hat.dm
+++ b/code/modules/client/preference/loadout/loadout_hat.dm
@@ -4,7 +4,8 @@
sort_category = "Headwear"
/datum/gear/hat/hhat
- display_name = "hardhat, select"
+ index_name = "hardhat, select"
+ display_name = "hardhat"
path = /obj/item/clothing/head/hardhat
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ENGINEER_TRAINEE, JOB_TITLE_MECHANIC, JOB_TITLE_ATMOSTECH)
@@ -16,35 +17,36 @@
gear_tweaks += new /datum/gear_tweak/path(hats, src)
/datum/gear/hat/that
- display_name = "top hat"
+ index_name = "top hat"
path = /obj/item/clothing/head/that
/datum/gear/hat/flatcap
- display_name = "flat cap"
+ index_name = "flat cap"
path = /obj/item/clothing/head/flatcap
/datum/gear/hat/ushanka
- display_name = "ushanka"
+ index_name = "ushanka"
path = /obj/item/clothing/head/ushanka
/datum/gear/hat/witch
- display_name = "witch hat"
+ index_name = "witch hat"
path = /obj/item/clothing/head/wizard/marisa/fake
/datum/gear/hat/piratecaphat
- display_name = "pirate captian hat"
+ index_name = "pirate captian hat"
path = /obj/item/clothing/head/pirate
/datum/gear/hat/fez
- display_name = "fez"
+ index_name = "fez"
path = /obj/item/clothing/head/fez
/datum/gear/hat/rasta
- display_name = "rasta hat"
+ index_name = "rasta hat"
path = /obj/item/clothing/head/beanie/rasta
/datum/gear/hat/fedora
- display_name = "fedora, select"
+ index_name = "fedora, select"
+ display_name = "fedora"
path = /obj/item/clothing/head/fedora
/datum/gear/hat/fedora/New()
@@ -55,17 +57,18 @@
gear_tweaks += new /datum/gear_tweak/path(hats, src, TRUE)
/datum/gear/hat/capcsec
- display_name = "security corporate cap"
+ index_name = "security corporate cap"
path = /obj/item/clothing/head/soft/sec/corp
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/hat/capsec
- display_name = "security cap"
+ index_name = "security cap"
path = /obj/item/clothing/head/soft/sec
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/hat/capred
- display_name = "cap, select"
+ index_name = "cap, select"
+ display_name = "cap"
path = /obj/item/clothing/head/soft/red
/datum/gear/hat/capred/New()
@@ -82,7 +85,8 @@
/obj/item/clothing/head/soft/solgov,)
gear_tweaks += new /datum/gear_tweak/path(hats, src, TRUE)
/datum/gear/hat/cowboyhat
- display_name = "cowboy hat, select"
+ index_name = "cowboy hat, select"
+ display_name = "cowboy hat"
path = /obj/item/clothing/head/cowboyhat
/datum/gear/hat/cowboyhat/New()
@@ -95,7 +99,8 @@
gear_tweaks += new /datum/gear_tweak/path(hats, src, TRUE)
/datum/gear/hat/beret
- display_name = "beret, select"
+ index_name = "beret, select"
+ display_name = "beret"
path = /obj/item/clothing/head/beret
/datum/gear/hat/beret/New()
@@ -111,47 +116,48 @@
subtype_cost_overlap = FALSE
/datum/gear/hat/beret_job/sec
- display_name = "security beret"
+ index_name = "security beret"
path = /obj/item/clothing/head/beret/sec
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/hat/beret_job/sec_black
- display_name = "black security beret"
+ index_name = "black security beret"
path = /obj/item/clothing/head/beret/sec/black
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/hat/beret_job/marine
- display_name = "royal marines commando beret"
+ index_name = "royal marines commando beret"
path = /obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_BLUESHIELD)
/datum/gear/hat/beret_job/marine_old
- display_name = "marine lieutenant beret"
+ index_name = "marine lieutenant beret"
path = /obj/item/clothing/head/beret/centcom/officer/sigholt
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_BLUESHIELD)
/datum/gear/hat/beret_job/sci
- display_name = "science beret"
+ index_name = "science beret"
path = /obj/item/clothing/head/beret/sci
allowed_roles = list(JOB_TITLE_RD, JOB_TITLE_SCIENTIST, JOB_TITLE_SCIENTIST_STUDENT, JOB_TITLE_ROBOTICIST, JOB_TITLE_GENETICIST)
/datum/gear/hat/beret_job/med
- display_name = "medical beret"
+ index_name = "medical beret"
path = /obj/item/clothing/head/beret/med
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_VIROLOGIST, JOB_TITLE_BRIGDOC, JOB_TITLE_CORONER, JOB_TITLE_PARAMEDIC, JOB_TITLE_CHEMIST, JOB_TITLE_GENETICIST, JOB_TITLE_PSYCHIATRIST)
/datum/gear/hat/beret_job/eng
- display_name = "engineering beret"
+ index_name = "engineering beret"
path = /obj/item/clothing/head/beret/eng
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ENGINEER_TRAINEE)
/datum/gear/hat/beret_job/atmos
- display_name = "atmospherics beret"
+ index_name = "atmospherics beret"
path = /obj/item/clothing/head/beret/atmos
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ATMOSTECH)
/datum/gear/hat/surgicalcap
- display_name = "surgical cap, select"
+ index_name = "surgical cap, select"
+ display_name = "surgical cap"
path = /obj/item/clothing/head/surgery/purple
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN)
@@ -163,16 +169,17 @@
gear_tweaks += new /datum/gear_tweak/path(caps, src)
/datum/gear/hat/flowerpin
- display_name = "hair flower"
+ index_name = "hair flower"
path = /obj/item/clothing/head/hairflower
/datum/gear/hat/lwhelmet
- display_name = "security lightweight helmet"
+ index_name = "security lightweight helmet"
path = /obj/item/clothing/head/helmet/lightweighthelmet
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/hat/beanie
- display_name = "beanie, select"
+ index_name = "beanie, select"
+ display_name = "beanie"
path = /obj/item/clothing/head/beanie
/datum/gear/hat/beanie/New()
diff --git a/code/modules/client/preference/loadout/loadout_implants.dm b/code/modules/client/preference/loadout/loadout_implants.dm
index ddbdd98a788..a78a4ec0a20 100644
--- a/code/modules/client/preference/loadout/loadout_implants.dm
+++ b/code/modules/client/preference/loadout/loadout_implants.dm
@@ -9,27 +9,27 @@
//Eye implants
/datum/gear/implant/meson
- display_name = "Meson Scanner Implant"
+ index_name = "Meson Scanner Implant"
path = /obj/item/organ/internal/cyberimp/eyes/meson
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ATMOSTECH, JOB_TITLE_ENGINEER, JOB_TITLE_QUARTERMASTER, JOB_TITLE_MINER)
/datum/gear/implant/security
- display_name = "Security Hud Implant"
+ index_name = "Security Hud Implant"
cost = 3
path = /obj/item/organ/internal/cyberimp/eyes/hud/security
allowed_roles = list(JOB_TITLE_OFFICER, JOB_TITLE_PILOT, JOB_TITLE_DETECTIVE, JOB_TITLE_WARDEN, JOB_TITLE_HOS, JOB_TITLE_JUDGE)
/datum/gear/implant/medical
- display_name = "Medical Hud Implant"
+ index_name = "Medical Hud Implant"
path = /obj/item/organ/internal/cyberimp/eyes/hud/medical
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_CHEMIST, JOB_TITLE_DOCTOR, JOB_TITLE_PARAMEDIC, JOB_TITLE_BRIGDOC, JOB_TITLE_VIROLOGIST)
/datum/gear/implant/diagnostic
- display_name = "Diagnostical Hud Implant"
+ index_name = "Diagnostical Hud Implant"
path = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic
allowed_roles = list(JOB_TITLE_RD, JOB_TITLE_ROBOTICIST)
/datum/gear/implant/science
- display_name = "Science Hud Implant"
+ index_name = "Science Hud Implant"
path = /obj/item/organ/internal/cyberimp/eyes/hud/science
allowed_roles = list(JOB_TITLE_CHEMIST, JOB_TITLE_SCIENTIST, JOB_TITLE_RD, JOB_TITLE_GENETICIST)
diff --git a/code/modules/client/preference/loadout/loadout_neck.dm b/code/modules/client/preference/loadout/loadout_neck.dm
index e43ba657a5d..cd45dc31907 100644
--- a/code/modules/client/preference/loadout/loadout_neck.dm
+++ b/code/modules/client/preference/loadout/loadout_neck.dm
@@ -5,7 +5,7 @@
//Mantles
/datum/gear/neck/mantle
- display_name = "mantle, color"
+ index_name = "mantle, color"
path = /obj/item/clothing/neck/mantle
/datum/gear/neck/mantle/New()
@@ -13,15 +13,15 @@
gear_tweaks += new /datum/gear_tweak/color(parent = src)
/datum/gear/neck/mantle/old_scarf
- display_name = "old scarf"
+ index_name = "old scarf"
path = /obj/item/clothing/neck/mantle/old
/datum/gear/neck/mantle/regal_shawl
- display_name = "regal shawl"
+ index_name = "regal shawl"
path = /obj/item/clothing/neck/mantle/regal
/datum/gear/neck/mantle/cowboy_mantle
- display_name = "old wrappings"
+ index_name = "old wrappings"
path = /obj/item/clothing/neck/mantle/cowboy
/datum/gear/neck/mantle/job
@@ -29,38 +29,38 @@
subtype_cost_overlap = FALSE
/datum/gear/neck/mantle/job/captain
- display_name = "mantle, captain"
+ index_name = "mantle, captain"
path = /obj/item/clothing/neck/mantle/captain
allowed_roles = list(JOB_TITLE_CAPTAIN)
/datum/gear/neck/mantle/job/chief_engineer
- display_name = "mantle, chief engineer"
+ index_name = "mantle, chief engineer"
path = /obj/item/clothing/neck/mantle/chief_engineer
allowed_roles = list(JOB_TITLE_CHIEF)
/datum/gear/neck/mantle/job/chief_medical_officer
- display_name = "mantle, chief medical officer"
+ index_name = "mantle, chief medical officer"
path = /obj/item/clothing/neck/mantle/chief_medical_officer
allowed_roles = list(JOB_TITLE_CMO)
/datum/gear/neck/mantle/job/head_of_security
- display_name = "mantle, head of security"
+ index_name = "mantle, head of security"
path = /obj/item/clothing/neck/mantle/head_of_security
allowed_roles = list(JOB_TITLE_HOS)
/datum/gear/neck/mantle/job/head_of_personnel
- display_name = "mantle, head of personnel"
+ index_name = "mantle, head of personnel"
path = /obj/item/clothing/neck/mantle/head_of_personnel
allowed_roles = list(JOB_TITLE_HOP)
/datum/gear/neck/mantle/job/research_director
- display_name = "mantle, research director"
+ index_name = "mantle, research director"
path = /obj/item/clothing/neck/mantle/research_director
allowed_roles = list(JOB_TITLE_RD)
//Cloaks
/datum/gear/neck/cloak
- display_name = "cloak, color"
+ index_name = "cloak, color"
path = /obj/item/clothing/neck/cloak/grey
/datum/gear/neck/cloak/New()
@@ -72,68 +72,69 @@
subtype_cost_overlap = FALSE
/datum/gear/neck/cloak/job/healer
- display_name = "cloak, healer"
+ index_name = "cloak, healer"
path = /obj/item/clothing/neck/cloak/healer
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_PARAMEDIC, JOB_TITLE_BRIGDOC)
/datum/gear/neck/cloak/job/captain
- display_name = "cloak, captain"
+ index_name = "cloak, captain"
path = /obj/item/clothing/neck/cloak/captain
allowed_roles = list(JOB_TITLE_CAPTAIN)
/datum/gear/neck/cloak/job/nanotrasen_representative
- display_name = "cloak, nanotrasen representative"
+ index_name = "cloak, nanotrasen representative"
path = /obj/item/clothing/neck/cloak/nanotrasen_representative
allowed_roles = list(JOB_TITLE_REPRESENTATIVE)
/datum/gear/neck/cloak/job/blueshield
- display_name = "cloak, blueshield"
+ index_name = "cloak, blueshield"
path = /obj/item/clothing/neck/cloak/blueshield
allowed_roles = list(JOB_TITLE_BLUESHIELD)
/datum/gear/neck/cloak/job/chief_engineer
- display_name = "cloak, chief engineer"
+ index_name = "cloak, chief engineer"
path = /obj/item/clothing/neck/cloak/chief_engineer
allowed_roles = list(JOB_TITLE_CHIEF)
/datum/gear/neck/cloak/job/chief_engineer/white
- display_name = "cloak, chief engineer, white"
+ index_name = "cloak, chief engineer, white"
path = /obj/item/clothing/neck/cloak/chief_engineer/white
allowed_roles = list(JOB_TITLE_CHIEF)
/datum/gear/neck/cloak/job/chief_medical_officer
- display_name = "cloak, chief medical officer"
+ index_name = "cloak, chief medical officer"
path = /obj/item/clothing/neck/cloak/chief_medical_officer
allowed_roles = list(JOB_TITLE_CMO)
/datum/gear/neck/cloak/job/head_of_security
- display_name = "cloak, head of security"
+ index_name = "cloak, head of security"
path = /obj/item/clothing/neck/cloak/head_of_security
allowed_roles = list(JOB_TITLE_HOS)
/datum/gear/neck/cloaksecurity
- display_name = "cloak, security officer"
+ index_name = "cloak, security officer"
path = /obj/item/clothing/neck/cloak/security
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_OFFICER, JOB_TITLE_WARDEN, JOB_TITLE_PILOT)
/datum/gear/neck/cloak/job/head_of_personnel
- display_name = "cloak, head of personnel"
+ index_name = "cloak, head of personnel"
path = /obj/item/clothing/neck/cloak/head_of_personnel
allowed_roles = list(JOB_TITLE_HOP)
/datum/gear/neck/cloak/job/research_director
- display_name = "cloak, research director"
+ index_name = "cloak, research director"
path = /obj/item/clothing/neck/cloak/research_director
allowed_roles = list(JOB_TITLE_RD)
/datum/gear/neck/cloak/job/quartermaster
- display_name = "cloak, quartermaster"
+ index_name = "cloak, quartermaster"
path = /obj/item/clothing/neck/cloak/quartermaster
allowed_roles = list(JOB_TITLE_QUARTERMASTER)
//Ponchos
/datum/gear/neck/poncho
- display_name = "poncho, select"
+ index_name = "poncho, select"
+ display_name = "poncho"
path = /obj/item/clothing/neck/poncho
/datum/gear/neck/poncho/New()
@@ -152,7 +153,7 @@
gear_tweaks += new /datum/gear_tweak/path(ponchos, src, TRUE)
/datum/gear/neck/poncho/security
- display_name = "poncho, corporate"
+ index_name = "poncho, corporate"
path = /obj/item/clothing/neck/poncho/security
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_OFFICER, JOB_TITLE_WARDEN, JOB_TITLE_PILOT)
diff --git a/code/modules/client/preference/loadout/loadout_plushie.dm b/code/modules/client/preference/loadout/loadout_plushie.dm
index e90ab2146e2..e1ede04e043 100644
--- a/code/modules/client/preference/loadout/loadout_plushie.dm
+++ b/code/modules/client/preference/loadout/loadout_plushie.dm
@@ -4,47 +4,48 @@
cost = 1
/datum/gear/plushie/rock
- display_name = "a pet rock"
+ index_name = "a pet rock"
path = /obj/item/toy/pet_rock
/datum/gear/plushie/redfoxplushie
- display_name = "a red fox plushie"
+ index_name = "a red fox plushie"
path = /obj/item/toy/plushie/red_fox
/datum/gear/plushie/blackcatplushie
- display_name = "a black cat plushie"
+ index_name = "a black cat plushie"
path = /obj/item/toy/plushie/black_cat
/datum/gear/plushie/voxplushie
- display_name = "a vox plushie"
+ index_name = "a vox plushie"
path = /obj/item/toy/plushie/voxplushie
/datum/gear/plushie/lizardplushie
- display_name = "a lizard plushie"
+ index_name = "a lizard plushie"
path = /obj/item/toy/plushie/lizardplushie
/datum/gear/plushie/deerplushie
- display_name = "a deer plushie"
+ index_name = "a deer plushie"
path = /obj/item/toy/plushie/deer
/datum/gear/plushie/carpplushie
- display_name = "a carp plushie"
+ index_name = "a carp plushie"
path = /obj/item/toy/carpplushie
/datum/gear/plushie/nianplushie
- display_name = "Nian plushie"
+ index_name = "Nian plushie"
path = /obj/item/toy/plushie/nianplushie
/datum/gear/plushie/bubblegumplushie
- display_name = "Bubblegum plushie"
+ index_name = "Bubblegum plushie"
path = /obj/item/toy/plushie/bubblegumplushie
/datum/gear/plushie/greyplushie
- display_name = "Grey Plushie"
+ index_name = "Grey Plushie"
path = /obj/item/toy/plushie/greyplushie
/datum/gear/plushie/plasmamanplushie
- display_name = "Plasmaman Plushie, select"
+ index_name = "Plasmaman Plushie, select"
+ display_name = "Plasmaman Plushie"
path = /obj/item/toy/plushie/plasmamanplushie
/datum/gear/plushie/plasmamanplushie/New()
@@ -65,61 +66,61 @@
gear_tweaks += new /datum/gear_tweak/path(plasmamans, src, TRUE)
/datum/gear/plushie/shardplushie
- display_name = "Shard Plushie"
+ index_name = "Shard Plushie"
path = /obj/item/toy/plushie/shardplushie
/datum/gear/plushie/akulaplushie
- display_name = "Akula Plushie"
+ index_name = "Akula Plushie"
path = /obj/item/toy/plushie/blahaj/twohanded
cost = 2
/datum/gear/plushie/hampter
- display_name = "Hampter"
+ index_name = "Hampter"
path = /obj/item/toy/plushie/hampter
cost = 1
/datum/gear/plushie/hampter_assistant
- display_name = "Hampter, Assitant"
+ index_name = "Hampter, Assitant"
path = /obj/item/toy/plushie/hampter/asisstant
cost = 1
/datum/gear/plushie/hampter_security
- display_name = "Hampter, Security"
+ index_name = "Hampter, Security"
path = /obj/item/toy/plushie/hampter/security
cost = 1
/datum/gear/plushie/hampter_medic
- display_name = "Hampter, Doctor"
+ index_name = "Hampter, Doctor"
path = /obj/item/toy/plushie/hampter/medic
cost = 1
/datum/gear/plushie/hampter_janitor
- display_name = "Hampter, Janitor"
+ index_name = "Hampter, Janitor"
path = /obj/item/toy/plushie/hampter/janitor
cost = 1
/datum/gear/plushie/hampter_captain
- display_name = "Hampter, Captain"
+ index_name = "Hampter, Captain"
path = /obj/item/toy/plushie/hampter/captain
cost = 1
/datum/gear/plushie/hampter_old_captain
- display_name = "Hampter, Old Captain"
+ index_name = "Hampter, Old Captain"
path = /obj/item/toy/plushie/hampter/captain/old
cost = 1
/datum/gear/plushie/hampter_syndi
- display_name = "Hampter, Syndi"
+ index_name = "Hampter, Syndi"
path = /obj/item/toy/plushie/hampter/syndi
cost = 1
/datum/gear/plushie/hampter_death_squad
- display_name = "Hampter, Grandpa"
+ index_name = "Hampter, Grandpa"
path = /obj/item/toy/plushie/hampter/death_squad
cost = 1
/datum/gear/plushie/hampter_ert_squad
- display_name = "Hampter, ERT"
+ index_name = "Hampter, ERT"
path = /obj/item/toy/plushie/hampter/ert_squad
cost = 1
diff --git a/code/modules/client/preference/loadout/loadout_racial.dm b/code/modules/client/preference/loadout/loadout_racial.dm
index 9bfa31cf463..ce97ab995c0 100644
--- a/code/modules/client/preference/loadout/loadout_racial.dm
+++ b/code/modules/client/preference/loadout/loadout_racial.dm
@@ -9,7 +9,7 @@
return FALSE
if(!LAZYLEN(whitelisted_species)) // why are we here? allowed, but
- stack_trace("Item with no racial list in loadout racial items: [display_name].")
+ stack_trace("Item with no racial list in loadout racial items: [index_name].")
return TRUE
if(!species_name) // skip
@@ -19,7 +19,7 @@
return TRUE
if(cl && !silent)
- to_chat(cl, span_warning("Ваш вид не подходит для того, чтобы использовать \"[display_name]\"!"))
+ to_chat(cl, span_warning("Ваш вид не подходит для того, чтобы использовать \"[index_name]\"!"))
return FALSE
@@ -29,7 +29,7 @@
/datum/gear/racial/taj
- display_name = "embroidered veil"
+ index_name = "embroidered veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races."
path = /obj/item/clothing/glasses/tajblind
slot = ITEM_SLOT_EYES
@@ -41,55 +41,55 @@
cost = 2
/datum/gear/racial/taj/job/bot
- display_name = "veil, blooming"
+ index_name = "veil, blooming"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built botanical HUD."
path = /obj/item/clothing/glasses/hud/hydroponic/tajblind
allowed_roles = list(JOB_TITLE_BOTANIST)
/datum/gear/racial/taj/job/sec
- display_name = "veil, sleek"
+ index_name = "veil, sleek"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built security HUD."
path = /obj/item/clothing/glasses/hud/security/sunglasses/tajblind
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT, JOB_TITLE_JUDGE)
/datum/gear/racial/taj/job/iaa
- display_name = "veil, sleek(read-only)"
+ index_name = "veil, sleek(read-only)"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built security HUD."
path = /obj/item/clothing/glasses/hud/security/sunglasses/tajblind/read_only
allowed_roles = list(JOB_TITLE_LAWYER)
/datum/gear/racial/taj/job/med
- display_name = "veil, lightweight"
+ index_name = "veil, lightweight"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built medical HUD."
path = /obj/item/clothing/glasses/hud/health/tajblind
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_CHEMIST, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_BRIGDOC, JOB_TITLE_CORONER)
/datum/gear/racial/taj/job/sci
- display_name = "veil, hi-tech"
+ index_name = "veil, hi-tech"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built science goggles"
path = /obj/item/clothing/glasses/tajblind/sci
allowed_roles = list(JOB_TITLE_RD, JOB_TITLE_SCIENTIST, JOB_TITLE_SCIENTIST_STUDENT, JOB_TITLE_ROBOTICIST, JOB_TITLE_GENETICIST, JOB_TITLE_CHEMIST)
/datum/gear/racial/taj/job/eng
- display_name = "veil, industrial"
+ index_name = "veil, industrial"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built optical meson scanners and welding shields."
path = /obj/item/clothing/glasses/tajblind/eng
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ENGINEER_TRAINEE, JOB_TITLE_MECHANIC, JOB_TITLE_ATMOSTECH)
/datum/gear/racial/taj/job/cargo
- display_name = "veil, khaki"
+ index_name = "veil, khaki"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built optical meson scanners."
path = /obj/item/clothing/glasses/tajblind/cargo
allowed_roles = list(JOB_TITLE_QUARTERMASTER, JOB_TITLE_CARGOTECH)
/datum/gear/racial/taj/job/diag
- display_name = "veil, diagnostic"
+ index_name = "veil, diagnostic"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built diagnostic HUD."
path = /obj/item/clothing/glasses/hud/diagnostic/tajblind
allowed_roles = list(JOB_TITLE_ROBOTICIST, JOB_TITLE_RD)
/datum/gear/racial/taj/job/skills
- display_name = "veil, skills"
+ index_name = "veil, skills"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built skills HUD."
path = /obj/item/clothing/glasses/hud/skills/tajblind
allowed_roles = list(JOB_TITLE_HOP, JOB_TITLE_CAPTAIN)
diff --git a/code/modules/client/preference/loadout/loadout_shoes.dm b/code/modules/client/preference/loadout/loadout_shoes.dm
index 8245e9371b7..9bec05ed938 100644
--- a/code/modules/client/preference/loadout/loadout_shoes.dm
+++ b/code/modules/client/preference/loadout/loadout_shoes.dm
@@ -4,31 +4,32 @@
sort_category = "Shoes"
/datum/gear/shoes/sandals
- display_name = "sandals, wooden"
+ index_name = "sandals, wooden"
path = /obj/item/clothing/shoes/sandal
/datum/gear/shoes/winterboots
- display_name = "winter boots"
+ index_name = "winter boots"
path = /obj/item/clothing/shoes/winterboots
/datum/gear/shoes/workboots
- display_name = "work boots"
+ index_name = "work boots"
path = /obj/item/clothing/shoes/workboots
/datum/gear/shoes/leather
- display_name = "leather shoes"
+ index_name = "leather shoes"
path = /obj/item/clothing/shoes/leather
/datum/gear/shoes/fancysandals
- display_name = "sandals, fancy"
+ index_name = "sandals, fancy"
path = /obj/item/clothing/shoes/sandal/fancy
/datum/gear/shoes/dressshoes
- display_name = "dress shoes"
+ index_name = "dress shoes"
path = /obj/item/clothing/shoes/centcom
/datum/gear/shoes/cowboyboots
- display_name = "cowboy boots, select"
+ index_name = "cowboy boots, select"
+ display_name = "cowboy boots"
path = /obj/item/clothing/shoes/cowboy
/datum/gear/shoes/cowboyboots/New()
@@ -40,19 +41,20 @@
gear_tweaks += new /datum/gear_tweak/path(boots, src)
/datum/gear/shoes/jackboots
- display_name = "jackboots"
+ index_name = "jackboots"
path = /obj/item/clothing/shoes/jackboots
/datum/gear/shoes/jacksandals
- display_name = "jacksandals"
+ index_name = "jacksandals"
path = /obj/item/clothing/shoes/jackboots/jacksandals
/datum/gear/shoes/laceup
- display_name = "laceup shoes"
+ index_name = "laceup shoes"
path = /obj/item/clothing/shoes/laceup
/datum/gear/shoes/shoes
- display_name = "shoes, select"
+ index_name = "shoes, select"
+ display_name = "shoes"
path = /obj/item/clothing/shoes/black
/datum/gear/shoes/shoes/New()
@@ -63,15 +65,15 @@
gear_tweaks += new /datum/gear_tweak/path(boots, src, TRUE)
/datum/gear/shoes/jackcross
- display_name = "jackcross"
+ index_name = "jackcross"
path = /obj/item/clothing/shoes/jackboots/cross
/datum/gear/shoes/leather_boots
- display_name = "high leather boots"
+ index_name = "high leather boots"
path = /obj/item/clothing/shoes/leather_boots
/datum/gear/shoes/footwraps
- display_name = "cloth footwraps, color"
+ index_name = "cloth footwraps, color"
path = /obj/item/clothing/shoes/footwraps
/datum/gear/shoes/footwraps/New()
diff --git a/code/modules/client/preference/loadout/loadout_suit.dm b/code/modules/client/preference/loadout/loadout_suit.dm
index 32f9586498f..bae2d9940c7 100644
--- a/code/modules/client/preference/loadout/loadout_suit.dm
+++ b/code/modules/client/preference/loadout/loadout_suit.dm
@@ -8,7 +8,7 @@
subtype_path = /datum/gear/suit/coat
/datum/gear/suit/coat/grey
- display_name = "winter coat"
+ index_name = "winter coat"
path = /obj/item/clothing/suit/hooded/wintercoat
/datum/gear/suit/coat/job
@@ -16,109 +16,110 @@
subtype_cost_overlap = FALSE
/datum/gear/suit/coat/job/sec
- display_name = "winter coat, security"
+ index_name = "winter coat, security"
path = /obj/item/clothing/suit/hooded/wintercoat/security
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT, JOB_TITLE_BRIGDOC)
/datum/gear/suit/coat/job/hos
- display_name = "winter coat, head of security"
+ index_name = "winter coat, head of security"
path = /obj/item/clothing/suit/hooded/wintercoat/security/hos
allowed_roles = list(JOB_TITLE_HOS)
/datum/gear/suit/coat/job/captain
- display_name = "winter coat, captain"
+ index_name = "winter coat, captain"
path = /obj/item/clothing/suit/hooded/wintercoat/captain
allowed_roles = list(JOB_TITLE_CAPTAIN)
/datum/gear/suit/coat/job/med
- display_name = "winter coat, medical"
+ index_name = "winter coat, medical"
path = /obj/item/clothing/suit/hooded/wintercoat/medical
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_CHEMIST, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_BRIGDOC , JOB_TITLE_CORONER)
/datum/gear/suit/coat/job/cmo
- display_name = "winter coat, chief medical officer"
+ index_name = "winter coat, chief medical officer"
path = /obj/item/clothing/suit/hooded/wintercoat/medical/cmo
allowed_roles = list(JOB_TITLE_CMO)
/datum/gear/suit/coat/job/sci
- display_name = "winter coat, science"
+ index_name = "winter coat, science"
path = /obj/item/clothing/suit/hooded/wintercoat/medical/science
allowed_roles = list(JOB_TITLE_SCIENTIST, JOB_TITLE_RD, JOB_TITLE_SCIENTIST_STUDENT)
/datum/gear/suit/coat/job/rd
- display_name = "winter coat, research director"
+ index_name = "winter coat, research director"
path = /obj/item/clothing/suit/hooded/wintercoat/medical/science/rd
allowed_roles = list(JOB_TITLE_RD)
/datum/gear/suit/coat/job/engi
- display_name = "winter coat, engineering"
+ index_name = "winter coat, engineering"
path = /obj/item/clothing/suit/hooded/wintercoat/engineering
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ENGINEER_TRAINEE, JOB_TITLE_MECHANIC)
/datum/gear/suit/coat/job/atmos
- display_name = "winter coat, atmospherics"
+ index_name = "winter coat, atmospherics"
path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ATMOSTECH)
/datum/gear/suit/coat/job/ce
- display_name = "winter coat, chief engineer"
+ index_name = "winter coat, chief engineer"
path = /obj/item/clothing/suit/hooded/wintercoat/engineering/ce
allowed_roles = list(JOB_TITLE_CHIEF)
/datum/gear/suit/coat/job/hydro
- display_name = "winter coat, hydroponics"
+ index_name = "winter coat, hydroponics"
path = /obj/item/clothing/suit/hooded/wintercoat/hydro
allowed_roles = list(JOB_TITLE_BOTANIST)
/datum/gear/suit/coat/job/cargo
- display_name = "winter coat, cargo"
+ index_name = "winter coat, cargo"
path = /obj/item/clothing/suit/hooded/wintercoat/cargo
allowed_roles = list(JOB_TITLE_QUARTERMASTER, JOB_TITLE_CARGOTECH)
/datum/gear/suit/coat/job/qm
- display_name = "winter coat, quartermaster"
+ index_name = "winter coat, quartermaster"
path = /obj/item/clothing/suit/hooded/wintercoat/cargo/qm
allowed_roles = list(JOB_TITLE_QUARTERMASTER)
/datum/gear/suit/coat/job/miner
- display_name = "winter coat, miner"
+ index_name = "winter coat, miner"
path = /obj/item/clothing/suit/hooded/wintercoat/miner
allowed_roles = list(JOB_TITLE_MINER)
/datum/gear/suit/coat/job/hop
- display_name = "winter coat, head of personnel"
+ index_name = "winter coat, head of personnel"
path = /obj/item/clothing/suit/hooded/wintercoat/hop
allowed_roles = list(JOB_TITLE_HOP)
//LABCOATS
/datum/gear/suit/labcoat_emt
- display_name = "labcoat, paramedic"
+ index_name = "labcoat, paramedic"
path = /obj/item/clothing/suit/storage/labcoat/emt
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_PARAMEDIC)
//JACKETS
/datum/gear/suit/leather_jacket
- display_name = "leather jacket"
+ index_name = "leather jacket"
path = /obj/item/clothing/suit/jacket/leather
/datum/gear/suit/motojacket
- display_name = "leather motorcycle jacket"
+ index_name = "leather motorcycle jacket"
path = /obj/item/clothing/suit/jacket/motojacket
/datum/gear/suit/br_tcoat
- display_name = "trenchcoat, brown"
+ index_name = "trenchcoat, brown"
path = /obj/item/clothing/suit/storage/browntrenchcoat
/datum/gear/suit/bl_tcoat
- display_name = "trenchcoat, black"
+ index_name = "trenchcoat, black"
path = /obj/item/clothing/suit/storage/blacktrenchcoat
/datum/gear/suit/bomber_jacket
- display_name = "bomber jacket"
+ index_name = "bomber jacket"
path = /obj/item/clothing/suit/jacket
/datum/gear/suit/miljacket
- display_name = "military jacket, select"
+ index_name = "military jacket, select"
+ display_name = "military jacket"
path = /obj/item/clothing/suit/jacket/miljacket
/datum/gear/suit/miljacket/New()
@@ -131,21 +132,21 @@
gear_tweaks += new /datum/gear_tweak/path(jackets, src)
/datum/gear/suit/secjacket
- display_name = "security jacket"
+ index_name = "security jacket"
path = /obj/item/clothing/suit/armor/secjacket
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/suit/coat/russian
- display_name = "russian coat"
+ index_name = "russian coat"
path = /obj/item/clothing/suit/russiancoat
/datum/gear/suit/secbomber
- display_name = "security bomber"
+ index_name = "security bomber"
path = /obj/item/clothing/suit/jacket/pilot
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/suit/sec_rps
- display_name = "security belt-shoulder system"
+ index_name = "security belt-shoulder system"
path = /obj/item/clothing/suit/armor/vest/sec_rps
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
@@ -154,94 +155,95 @@
subtype_path = /datum/gear/suit/suragi_jacket
/datum/gear/suit/suragi_jacket/civ
- display_name = "Suragi Jacket"
+ index_name = "Suragi Jacket"
path = /obj/item/clothing/suit/storage/suragi_jacket/civ
/datum/gear/suit/suragi_jacket/sec
- display_name = "Suragi Jacket - Security"
+ index_name = "Suragi Jacket - Security"
path = /obj/item/clothing/suit/storage/suragi_jacket/sec
allowed_roles = list(JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/suit/suragi_jacket/cargo
- display_name = "Suragi Jacket - Cargo"
+ index_name = "Suragi Jacket - Cargo"
path = /obj/item/clothing/suit/storage/suragi_jacket/cargo
allowed_roles = list(JOB_TITLE_CARGOTECH)
/datum/gear/suit/suragi_jacket/atmos
- display_name = "Suragi Jacket - Atmospherics"
+ index_name = "Suragi Jacket - Atmospherics"
path = /obj/item/clothing/suit/storage/suragi_jacket/atmos
allowed_roles = list(JOB_TITLE_ATMOSTECH)
/datum/gear/suit/suragi_jacket/eng
- display_name = "Suragi Jacket - Engineering"
+ index_name = "Suragi Jacket - Engineering"
path = /obj/item/clothing/suit/storage/suragi_jacket/eng
allowed_roles = list(JOB_TITLE_ENGINEER, JOB_TITLE_ENGINEER_TRAINEE, JOB_TITLE_MECHANIC)
/datum/gear/suit/suragi_jacket/botany
- display_name = "Suragi Jacket - Hydroponics"
+ index_name = "Suragi Jacket - Hydroponics"
path = /obj/item/clothing/suit/storage/suragi_jacket/botany
allowed_roles = list(JOB_TITLE_BOTANIST)
/datum/gear/suit/suragi_jacket/medic
- display_name = "Suragi Jacket - Medical"
+ index_name = "Suragi Jacket - Medical"
path = /obj/item/clothing/suit/storage/suragi_jacket/medic
allowed_roles = list(JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_PARAMEDIC, JOB_TITLE_CORONER)
/datum/gear/suit/suragi_jacket/medsec
- display_name = "Suragi Jacket - Medical Security"
+ index_name = "Suragi Jacket - Medical Security"
path = /obj/item/clothing/suit/storage/suragi_jacket/medsec
allowed_roles = list(JOB_TITLE_BRIGDOC)
/datum/gear/suit/suragi_jacket/virus
- display_name = "Suragi Jacket - Virology"
+ index_name = "Suragi Jacket - Virology"
path = /obj/item/clothing/suit/storage/suragi_jacket/virus
allowed_roles = list(JOB_TITLE_VIROLOGIST)
/datum/gear/suit/suragi_jacket/chem
- display_name = "Suragi Jacket - Chemistry"
+ index_name = "Suragi Jacket - Chemistry"
path = /obj/item/clothing/suit/storage/suragi_jacket/chem
allowed_roles = list(JOB_TITLE_CHEMIST)
/datum/gear/suit/suragi_jacket/genetics
- display_name = "Suragi Jacket - Genetics"
+ index_name = "Suragi Jacket - Genetics"
path = /obj/item/clothing/suit/storage/suragi_jacket/genetics
allowed_roles = list(JOB_TITLE_GENETICIST)
/datum/gear/suit/suragi_jacket/robot
- display_name = "Suragi Jacket - Roboticist"
+ index_name = "Suragi Jacket - Roboticist"
path = /obj/item/clothing/suit/storage/suragi_jacket/robot
allowed_roles = list(JOB_TITLE_ROBOTICIST)
/datum/gear/suit/suragi_jacket/sci
- display_name = "Suragi Jacket - Science"
+ index_name = "Suragi Jacket - Science"
path = /obj/item/clothing/suit/storage/suragi_jacket/sci
allowed_roles = list(JOB_TITLE_SCIENTIST, JOB_TITLE_SCIENTIST_STUDENT)
/datum/gear/suit/suragi_jacket/janitor
- display_name = "Suragi Jacket - Janitor"
+ index_name = "Suragi Jacket - Janitor"
path = /obj/item/clothing/suit/storage/suragi_jacket/janitor
allowed_roles = list(JOB_TITLE_JANITOR)
/datum/gear/suit/ianshirt
- display_name = "Ian Shirt"
+ index_name = "Ian Shirt"
path = /obj/item/clothing/suit/ianshirt
/datum/gear/suit/hoodie
- display_name = "hoodie, select"
+ index_name = "hoodie, select"
+ display_name = "hoodie"
path = /obj/item/clothing/suit/hooded/hoodie
/datum/gear/suit/hoodie/New()
@@ -259,7 +261,8 @@
//SUITS!
/datum/gear/suit/blacksuit
- display_name = "suit jacket, select"
+ index_name = "suit jacket, select"
+ display_name = "suit jacket"
path = /obj/item/clothing/suit/storage/lawyer/blackjacket
/datum/gear/suit/blacksuit/New()
@@ -272,14 +275,14 @@
//Robes!
/datum/gear/suit/witch
- display_name = "witch robes"
+ index_name = "witch robes"
path = /obj/item/clothing/suit/wizrobe/marisa/fake
//Suspenders
/datum/gear/suit/suspenders
- display_name = "suspenders, color"
+ index_name = "suspenders, color"
path = /obj/item/clothing/suit/suspenders
/datum/gear/suit/suspenders/New()
diff --git a/code/modules/client/preference/loadout/loadout_tgui.dm b/code/modules/client/preference/loadout/loadout_tgui.dm
new file mode 100644
index 00000000000..977ebac09a6
--- /dev/null
+++ b/code/modules/client/preference/loadout/loadout_tgui.dm
@@ -0,0 +1,61 @@
+GLOBAL_LIST_EMPTY(gear_tgui_info)
+
+/datum/ui_module/loadout
+ name = "Loadout"
+
+/datum/ui_module/loadout/ui_state(mob/user)
+ return GLOB.always_state
+
+/datum/ui_module/loadout/ui_interact(mob/user, datum/tgui/ui)
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "Loadout", name)
+ ui.set_autoupdate(FALSE)
+ ui.open()
+
+/datum/ui_module/loadout/ui_data(mob/user)
+ var/list/data = list()
+ data["gear_slots"] = user?.client?.prefs.build_loadout()
+ data["selected_gears"] = user?.client?.prefs?.tgui_loadout_gear
+ return data
+
+/datum/ui_module/loadout/ui_static_data(mob/user)
+ var/list/data = list()
+ data["gears"] = GLOB.gear_tgui_info
+ data["max_gear_slots"] = user?.client?.prefs?.max_gear_slots
+ data["user_tier"] = user?.client?.donator_level
+ return data
+
+/datum/ui_module/loadout/ui_act(action, list/params)
+ if(..())
+ return
+ . = TRUE
+
+ var/mob/user = usr
+ var/datum/preferences/prefs = user.client.prefs
+ switch(action)
+ if("toggle_gear")
+ var/datum/gear/gear = GLOB.gear_datums[params["gear"]]
+ if(gear && ("[gear.index_name]" in prefs.loadout_gear))
+ prefs.loadout_gear -= "[gear.index_name]"
+ return TRUE
+
+ if(gear.donator_tier && user.client.donator_level < gear.donator_tier)
+ to_chat(user, "That gear is only available at a higher donation tier than you are on.")
+ return FALSE
+
+ user.client.prefs.build_loadout(gear)
+ return TRUE
+
+ if("set_tweak")
+ if(!(params["gear"] in prefs.loadout_gear))
+ return FALSE
+
+ var/datum/gear/gear = GLOB.gear_datums[params["gear"]]
+ var/datum/gear_tweak/tweak = locate(text2path(params["tweak"])) in gear.gear_tweaks
+ prefs.set_tweak_metadata(gear, tweak, tweak.get_metadata(user, prefs.get_tweak_metadata(gear, tweak)))
+ return TRUE
+
+ if("clear_loadout")
+ prefs.loadout_gear.Cut()
+ return TRUE
diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm
index 8e3120d644d..55ef15ce02f 100644
--- a/code/modules/client/preference/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference/loadout/loadout_uniform.dm
@@ -10,7 +10,7 @@
//there's a lot more colors than I thought there were @_@
/datum/gear/uniform/suit/jumpsuit
- display_name = "jumpsuit, select"
+ index_name = "jumpsuit, select"
path = /obj/item/clothing/under/color/grey
/datum/gear/uniform/suit/jumpsuit/New()
@@ -39,27 +39,27 @@
gear_tweaks += new /datum/gear_tweak/path(suits, src, TRUE)
/datum/gear/uniform/suit/soviet
- display_name = "USSP uniform"
+ index_name = "USSP uniform"
path = /obj/item/clothing/under/soviet
/datum/gear/uniform/suit/federal
- display_name = "Solar Federation uniform"
+ index_name = "Solar Federation uniform"
path = /obj/item/clothing/under/solgov/civ
/datum/gear/uniform/suit/kilt
- display_name = "a kilt"
+ index_name = "a kilt"
path = /obj/item/clothing/under/kilt
/datum/gear/uniform/suit/executive
- display_name = "executive suit"
+ index_name = "executive suit"
path = /obj/item/clothing/under/suit_jacket/really_black
/datum/gear/uniform/suit/amish_suit
- display_name = "amish suit"
+ index_name = "amish suit"
path = /obj/item/clothing/under/sl_suit
/datum/gear/uniform/chaps
- display_name = "chaps, select"
+ index_name = "chaps, select"
path = /obj/item/clothing/under/red_chaps
/datum/gear/uniform/chaps/New()
@@ -74,11 +74,11 @@
subtype_path = /datum/gear/uniform/skirt
/datum/gear/uniform/skirt/syndi
- display_name = "skirt, tactical"
+ index_name = "skirt, tactical"
path = /obj/item/clothing/under/syndicate/tacticool/skirt
/datum/gear/uniform/skirt/dyeable
- display_name = "dyeable skirt, color"
+ index_name = "dyeable skirt, color"
path = /obj/item/clothing/under/colour/skirt
@@ -88,7 +88,7 @@
/datum/gear/uniform/skirt/plaid
- display_name = "plaid skirt, select"
+ index_name = "plaid skirt, select"
path = /obj/item/clothing/under/dress/plaid_blue
/datum/gear/uniform/skirt/plaid/New()
@@ -99,11 +99,11 @@
gear_tweaks += new /datum/gear_tweak/path(skirts, src, TRUE)
/datum/gear/uniform/skirt/redeveninggown
- display_name = "red evening gown"
+ index_name = "red evening gown"
path = /obj/item/clothing/under/redeveninggown
/datum/gear/uniform/skirt/black
- display_name = "skirt, black"
+ index_name = "skirt, black"
path = /obj/item/clothing/under/blackskirt
/datum/gear/uniform/skirt/job
@@ -111,137 +111,137 @@
subtype_cost_overlap = FALSE
/datum/gear/uniform/skirt/job/ce
- display_name = "skirt, ce"
+ index_name = "skirt, ce"
path = /obj/item/clothing/under/rank/chief_engineer/skirt
allowed_roles = list(JOB_TITLE_CHIEF)
/datum/gear/uniform/skirt/job/atmos
- display_name = "skirt, atmos"
+ index_name = "skirt, atmos"
path = /obj/item/clothing/under/rank/atmospheric_technician/skirt
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ATMOSTECH)
/datum/gear/uniform/skirt/job/eng
- display_name = "skirt, engineer"
+ index_name = "skirt, engineer"
path = /obj/item/clothing/under/rank/engineer/skirt
allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER)
/datum/gear/uniform/skirt/job/roboticist
- display_name = "skirt, roboticist"
+ index_name = "skirt, roboticist"
path = /obj/item/clothing/under/rank/roboticist/skirt
allowed_roles = list(JOB_TITLE_RD, JOB_TITLE_ROBOTICIST)
/datum/gear/uniform/skirt/job/cmo
- display_name = "skirt, cmo"
+ index_name = "skirt, cmo"
path = /obj/item/clothing/under/rank/chief_medical_officer/skirt
allowed_roles = list(JOB_TITLE_CMO)
/datum/gear/uniform/skirt/job/paramedic
- display_name = "skirt, paramedic"
+ index_name = "skirt, paramedic"
path = /obj/item/clothing/under/rank/medical/paramedic/skirt
allowed_roles = list(JOB_TITLE_PARAMEDIC)
/datum/gear/uniform/skirt/job/chem
- display_name = "skirt, chemist"
+ index_name = "skirt, chemist"
path = /obj/item/clothing/under/rank/chemist/skirt
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_CHEMIST)
/datum/gear/uniform/skirt/job/viro
- display_name = "skirt, virologist"
+ index_name = "skirt, virologist"
path = /obj/item/clothing/under/rank/virologist/skirt
allowed_roles = list(JOB_TITLE_VIROLOGIST)
/datum/gear/uniform/skirt/job/med
- display_name = "skirt, medical"
+ index_name = "skirt, medical"
path = /obj/item/clothing/under/rank/medical/skirt
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_PARAMEDIC, JOB_TITLE_CORONER)
/datum/gear/uniform/skirt/job/phys
- display_name = "skirt, physician"
+ index_name = "skirt, physician"
path = /obj/item/clothing/under/rank/security/brigphys/skirt
allowed_roles = list(JOB_TITLE_BRIGDOC)
/datum/gear/uniform/skirt/job/physalt
- display_name = "skirt, physician alt"
+ index_name = "skirt, physician alt"
path = /obj/item/clothing/under/rank/security/brigmedical/skirt
allowed_roles = list(JOB_TITLE_BRIGDOC)
/datum/gear/uniform/skirt/job/hydro
- display_name = "skirt, botanist"
+ index_name = "skirt, botanist"
path = /obj/item/clothing/under/rank/hydroponics/skirt
allowed_roles = list(JOB_TITLE_BOTANIST)
/datum/gear/uniform/skirt/job/sci
- display_name = "skirt, scientist"
+ index_name = "skirt, scientist"
path = /obj/item/clothing/under/rank/scientist/skirt
allowed_roles = list(JOB_TITLE_RD, JOB_TITLE_SCIENTIST, JOB_TITLE_SCIENTIST_STUDENT)
/datum/gear/uniform/skirt/job/cargo
- display_name = "skirt, cargo"
+ index_name = "skirt, cargo"
path = /obj/item/clothing/under/rank/cargotech/skirt
allowed_roles = list(JOB_TITLE_QUARTERMASTER, JOB_TITLE_CARGOTECH)
/datum/gear/uniform/skirt/job/qm
- display_name = "skirt, QM"
+ index_name = "skirt, QM"
path = /obj/item/clothing/under/rank/cargo/skirt
allowed_roles = list(JOB_TITLE_QUARTERMASTER)
/datum/gear/uniform/skirt/job/warden
- display_name = "skirt, warden"
+ index_name = "skirt, warden"
path = /obj/item/clothing/under/rank/warden/skirt
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN)
/datum/gear/uniform/skirt/job/security
- display_name = "skirt, security"
+ index_name = "skirt, security"
path = /obj/item/clothing/under/rank/security/skirt
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/uniform/skirt/job/podpilot
- display_name = "skirt, podpilot"
+ index_name = "skirt, podpilot"
path = /obj/item/clothing/under/rank/security/pod_pilot/skirt
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_PILOT)
/datum/gear/uniform/skirt/job/head_of_security
- display_name = "skirt, hos"
+ index_name = "skirt, hos"
path = /obj/item/clothing/under/rank/head_of_security/skirt
allowed_roles = list(JOB_TITLE_HOS)
/datum/gear/uniform/skirt/job/ntrep
- display_name = "skirt, nt rep"
+ index_name = "skirt, nt rep"
path = /obj/item/clothing/under/rank/ntrep/skirt
allowed_roles = list(JOB_TITLE_REPRESENTATIVE)
/datum/gear/uniform/skirt/job/blueshield
- display_name = "skirt, blueshield"
+ index_name = "skirt, blueshield"
path = /obj/item/clothing/under/rank/blueshield/skirt
allowed_roles = list(JOB_TITLE_BLUESHIELD)
/datum/gear/uniform/skirt/job/librarian
- display_name = "skirt, librarian"
+ index_name = "skirt, librarian"
path = /obj/item/clothing/under/suit_jacket/red/skirt
allowed_roles = list(JOB_TITLE_LIBRARIAN)
/datum/gear/uniform/skirt/job/bartender
- display_name = "skirt, bartender"
+ index_name = "skirt, bartender"
path = /obj/item/clothing/under/rank/bartender/skirt
allowed_roles = list(JOB_TITLE_BARTENDER)
/datum/gear/uniform/skirt/job/chaplain
- display_name = "skirt, chaplain"
+ index_name = "skirt, chaplain"
path = /obj/item/clothing/under/rank/chaplain/skirt
allowed_roles = list(JOB_TITLE_CHAPLAIN)
/datum/gear/uniform/skirt/job/barber
- display_name = "skirt, barber"
+ index_name = "skirt, barber"
path = /obj/item/clothing/under/barber/skirt
allowed_roles = list(JOB_TITLE_BARBER)
/datum/gear/uniform/skirt/job/nanotrasenofficer
- display_name = "skirt, NNO"
+ index_name = "skirt, NNO"
path = /obj/item/clothing/under/rank/centcom/officer/skirt
allowed_roles = list(JOB_TITLE_CCOFFICER)
/datum/gear/uniform/skirt/job/internalaffairs
- display_name = "skirt, internalaffairs"
+ index_name = "skirt, internalaffairs"
path = /obj/item/clothing/under/rank/internalaffairs/skirt
allowed_roles = list(JOB_TITLE_LAWYER)
@@ -249,7 +249,8 @@
subtype_path = /datum/gear/uniform/medical
/datum/gear/uniform/medical/scrubs
- display_name = "medical scrubs, select"
+ index_name = "medical scrubs, select"
+ display_name = "medical scrubs"
path = /obj/item/clothing/under/rank/medical/purple
allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN)
@@ -264,22 +265,22 @@
subtype_path = /datum/gear/uniform/sec
/datum/gear/uniform/sec/formal
- display_name = "security uniform, formal"
+ index_name = "security uniform, formal"
path = /obj/item/clothing/under/rank/security/formal
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/uniform/sec/secorporate
- display_name = "security uniform, corporate"
+ index_name = "security uniform, corporate"
path = /obj/item/clothing/under/rank/security/corp
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/uniform/sec/dispatch
- display_name = "security uniform, dispatch"
+ index_name = "security uniform, dispatch"
path = /obj/item/clothing/under/rank/dispatch
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
/datum/gear/uniform/sec/casual
- display_name = "security uniform, casual"
+ index_name = "security uniform, casual"
path = /obj/item/clothing/under/rank/security2
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_DETECTIVE, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
@@ -287,22 +288,23 @@
subtype_path = /datum/gear/uniform/cargo
/datum/gear/uniform/cargo/qm
- display_name = "quartermaster dress"
+ index_name = "quartermaster dress"
path = /obj/item/clothing/under/rank/cargo/alt
allowed_roles = list(JOB_TITLE_QUARTERMASTER)
/datum/gear/uniform/cargo/tech
- display_name = "cargo technician dress"
+ index_name = "cargo technician dress"
path = /obj/item/clothing/under/rank/cargotech/alt
allowed_roles = list(JOB_TITLE_QUARTERMASTER, JOB_TITLE_CARGOTECH)
/datum/gear/uniform/cargo/miner
- display_name = "shaft miner sweater"
+ index_name = "shaft miner sweater"
path = /obj/item/clothing/under/rank/miner/alt
allowed_roles = list(JOB_TITLE_QUARTERMASTER, JOB_TITLE_MINER)
/datum/gear/uniform/shorts
- display_name = "shorts, select"
+ index_name = "shorts, select"
+ display_name = "shorts"
path = /obj/item/clothing/under/shorts/red
/datum/gear/uniform/shorts/New()
@@ -318,7 +320,8 @@
subtype_path = /datum/gear/uniform/pants
/datum/gear/uniform/pants/jeans
- display_name = "jeans, select"
+ index_name = "jeans, select"
+ display_name = "jeans"
path = /obj/item/clothing/under/pants/classicjeans
/datum/gear/uniform/pants/jeans/New()
@@ -331,7 +334,8 @@
gear_tweaks += new /datum/gear_tweak/path(jeans, src, TRUE)
/datum/gear/uniform/pants/pants
- display_name = "pants, select"
+ index_name = "pants, select"
+ display_name = "pants"
path = /obj/item/clothing/under/pants/white
/datum/gear/uniform/pants/pants/New()
@@ -348,48 +352,48 @@
gear_tweaks += new /datum/gear_tweak/path(pants, src, TRUE)
/datum/gear/uniform/suit/tacticool
- display_name = "tacticool turtleneck"
+ index_name = "tacticool turtleneck"
description = "A sleek black turtleneck paired with some khakis (WARNING DOES NOT HAVE SUIT SENSORS)"
path = /obj/item/clothing/under/syndicate/tacticool
/datum/gear/uniform/hawaii
- display_name = "hawaiian shirt (red)"
+ index_name = "hawaiian shirt (red)"
description = "Sometimes you just want to shoot the guy who brought the chainsaw to the drug deal"
path = /obj/item/clothing/under/redhawaiianshirt
/datum/gear/uniform/hawaii/pink
- display_name = "hawaiian shirt (pink)"
+ index_name = "hawaiian shirt (pink)"
description = "Sometimes you just want some pink in your life. For what? Who knows"
path = /obj/item/clothing/under/pinkhawaiianshirt
/datum/gear/uniform/hawaii/blue
- display_name = "hawaiian shirt (blue)"
+ index_name = "hawaiian shirt (blue)"
description = "Be careful around water! Some guys in blue shirt like you can't swim"
path = /obj/item/clothing/under/bluehawaiianshirt
/datum/gear/uniform/hawaii/orange
- display_name = "hawaiian shirt (orange)"
+ index_name = "hawaiian shirt (orange)"
description = "Come one step closer and I will knock his teeth out!"
path = /obj/item/clothing/under/orangehawaiianshirt
/datum/gear/uniform/ussptracksuit_red
- display_name = "track suit (red)"
+ index_name = "track suit (red)"
description = "A classic track suit. There is a small tag on the clothes that says \"Made in the USSP\"."
path = /obj/item/clothing/under/ussptracksuit_red
/datum/gear/uniform/ussptracksuit_blue
- display_name = "track suit (blue)"
+ index_name = "track suit (blue)"
description = "A classic track suit. There is a small tag on the clothes that says \"Made in the USSP\"."
path = /obj/item/clothing/under/ussptracksuit_blue
/datum/gear/uniform/dress50s
- display_name = "old Soviet dress"
+ index_name = "old Soviet dress"
path = /obj/item/clothing/under/dress50s
/datum/gear/uniform/galifepants
- display_name = "check breeches"
+ index_name = "check breeches"
path = /obj/item/clothing/under/pants/galifepants
/datum/gear/uniform/sandpants
- display_name = "long sand pants"
+ index_name = "long sand pants"
path = /obj/item/clothing/under/pants/sandpants
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index 6e9a574847c..0c73ea934fa 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -74,9 +74,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
#define TAB_CHAR 0
#define TAB_GAME 1
#define TAB_SPEC 2
-#define TAB_GEAR 3
-#define TAB_KEYS 4
-#define TAB_TOGGLES 5
+#define TAB_KEYS 3
+#define TAB_TOGGLES 4
/datum/preferences
var/client/parent
@@ -242,6 +241,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
//Gear stuff
var/list/loadout_gear = list()
+ var/list/tgui_loadout_gear = list()
var/list/choosen_gears = list()
var/gear_tab = "General"
// Parallax
@@ -313,7 +313,6 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
dat += "Character Settings"
dat += "Game Preferences"
dat += "Special Roles"
- dat += "Loadout"
dat += "Key Bindings"
dat += "General Preferences"
dat += ""
@@ -532,7 +531,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
dat += "Undershirt Color: Color [color_square(undershirt_color)]
"
if(S.clothing_flags & HAS_SOCKS)
dat += "Socks: [socks]
"
- dat += "Backpack Type: [backbag]
"
+ dat += "Backpack Type: [backbag]
"
+ dat += "Open Loadout
"
dat += ""
@@ -642,59 +642,6 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
dat += "
[G.display_name] " - if(ticked) - for(var/datum/gear_tweak/tweak in ticked.gear_tweaks) - dat += " [tweak.get_contents(get_tweak_metadata(ticked, tweak))]" - dat += " | [G.cost] | " - if(G.allowed_roles) - dat += "Restrictions: " - for(var/role in G.allowed_roles) - dat += role + " " - dat += "" - dat += " | [G.get_header_tips()][ticked ? ticked.description : G.description] |
` element.
- See inherited props: [Box](#box)
- `collapsing: boolean` - Collapses table cell to the smallest possible size,
-and stops any text inside from wrapping.
+ and stops any text inside from wrapping.
### `Tabs`
@@ -1099,9 +1100,7 @@ Tabs also support a vertical configuration. This is usually paired with a
```jsx
+ {this.props.children}
+
+ );
+ }
+}
diff --git a/tgui/packages/tgui/components/Pointer.tsx b/tgui/packages/tgui/components/Pointer.tsx
new file mode 100644
index 00000000000..409972a7dfc
--- /dev/null
+++ b/tgui/packages/tgui/components/Pointer.tsx
@@ -0,0 +1,46 @@
+/**
+ * MIT License
+ * https://github.com/omgovich/react-colorful/
+ *
+ * Copyright (c) 2020 Vlad Shilov
+
+
+ );
+};
diff --git a/tgui/packages/tgui/components/index.js b/tgui/packages/tgui/components/index.js
index 8876792dc99..0b254d7c48e 100644
--- a/tgui/packages/tgui/components/index.js
+++ b/tgui/packages/tgui/components/index.js
@@ -21,6 +21,7 @@ export { DraggableControl } from './DraggableControl';
export { Dropdown } from './Dropdown';
export { Flex } from './Flex';
export { Grid } from './Grid';
+export { Interactive } from './Interactive';
export { Icon } from './Icon';
export { ImageButton } from './ImageButton';
export { Input } from './Input';
@@ -31,6 +32,7 @@ export { Modal } from './Modal';
export { NanoMap } from './NanoMap';
export { NoticeBox } from './NoticeBox';
export { NumberInput } from './NumberInput';
+export { Pointer } from './Pointer';
export { Popper } from './Popper';
export { ProgressBar } from './ProgressBar';
export { RestrictedInput } from './RestrictedInput';
diff --git a/tgui/packages/tgui/interfaces/ColorPickerModal.tsx b/tgui/packages/tgui/interfaces/ColorPickerModal.tsx
new file mode 100644
index 00000000000..3522c4442e1
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/ColorPickerModal.tsx
@@ -0,0 +1,668 @@
+/* eslint-disable react/state-in-constructor */
+/**
+ * @file
+ * @copyright 2023 itsmeow
+ * @license MIT
+ */
+
+import { Loader } from './common/Loader';
+import { useBackend, useLocalState } from '../backend';
+import {
+ Autofocus,
+ Box,
+ Flex,
+ Section,
+ Stack,
+ Pointer,
+ NumberInput,
+ Tooltip,
+} from '../components';
+import { Window } from '../layouts';
+import { clamp } from 'common/math';
+import {
+ hexToHsva,
+ HsvaColor,
+ hsvaToHex,
+ hsvaToHslString,
+ hsvaToRgba,
+ rgbaToHsva,
+ validHex,
+} from 'common/color';
+import { Interaction, Interactive } from 'tgui/components/Interactive';
+import { classes } from 'common/react';
+import { Component, FocusEvent, FormEvent, InfernoNode } from 'inferno';
+import { logger } from 'tgui/logging';
+import { InputButtons } from './common/InputButtons';
+
+type ColorPickerData = {
+ autofocus: boolean;
+ buttons: string[];
+ message: string;
+ large_buttons: boolean;
+ swapped_buttons: boolean;
+ timeout: number;
+ title: string;
+ default_color: string;
+};
+
+export const ColorPickerModal = (_, context) => {
+ const { data } = useBackend
+
+ + .
+
+
+
+ );
+};
+
+const Hue = ({
+ className,
+ hue,
+ onChange,
+}: {
+ className?: string;
+ hue: number;
+ onChange: (newHue: { h: number }) => void;
+}) => {
+ const handleMove = (interaction: Interaction) => {
+ onChange({ h: 360 * interaction.left });
+ };
+
+ const handleKey = (offset: Interaction) => {
+ // Hue measured in degrees of the color circle ranging from 0 to 360
+ onChange({
+ h: clamp(hue + offset.left * 360, 0, 360),
+ });
+ };
+
+ const nodeClassName = classes(['react-colorful__hue', className]);
+
+ return (
+
+
+ );
+};
+
+const Saturation = ({
+ className,
+ color,
+ onChange,
+}: {
+ className?: string;
+ color: HsvaColor;
+ onChange: (newSaturation: { s: number }) => void;
+}) => {
+ const handleMove = (interaction: Interaction) => {
+ onChange({ s: 100 * interaction.left });
+ };
+
+ const handleKey = (offset: Interaction) => {
+ // Hue measured in degrees of the color circle ranging from 0 to 100
+ onChange({
+ s: clamp(color.s + offset.left * 100, 0, 100),
+ });
+ };
+
+ const nodeClassName = classes(['react-colorful__saturation', className]);
+
+ return (
+
+
+ );
+};
+
+const Value = ({
+ className,
+ color,
+ onChange,
+}: {
+ className?: string;
+ color: HsvaColor;
+ onChange: (newValue: { v: number }) => void;
+}) => {
+ const handleMove = (interaction: Interaction) => {
+ onChange({ v: 100 * interaction.left });
+ };
+
+ const handleKey = (offset: Interaction) => {
+ onChange({
+ v: clamp(color.v + offset.left * 100, 0, 100),
+ });
+ };
+
+ const nodeClassName = classes(['react-colorful__value', className]);
+
+ return (
+
+
+ );
+};
+
+const RGBSlider = ({
+ className,
+ color,
+ onChange,
+ target,
+}: {
+ className?: string;
+ color: HsvaColor;
+ onChange: (newValue: HsvaColor) => void;
+ target: string;
+}) => {
+ const rgb = hsvaToRgba(color);
+
+ const setNewTarget = (value: number) => {
+ rgb[target] = value;
+ onChange(rgbaToHsva(rgb));
+ };
+
+ const handleMove = (interaction: Interaction) => {
+ setNewTarget(255 * interaction.left);
+ };
+
+ const handleKey = (offset: Interaction) => {
+ setNewTarget(clamp(rgb[target] + offset.left * 255, 0, 255));
+ };
+
+ const nodeClassName = classes([`react-colorful__${target}`, className]);
+
+ let selected =
+ target === 'r'
+ ? `rgb(${Math.round(rgb.r)},0,0)`
+ : target === 'g'
+ ? `rgb(0,${Math.round(rgb.g)},0)`
+ : `rgb(0,0,${Math.round(rgb.b)})`;
+
+ return (
+
+
+ );
+};
diff --git a/tgui/packages/tgui/styles/interfaces/ColorPicker.scss b/tgui/packages/tgui/styles/interfaces/ColorPicker.scss
new file mode 100644
index 00000000000..99f628c35e2
--- /dev/null
+++ b/tgui/packages/tgui/styles/interfaces/ColorPicker.scss
@@ -0,0 +1,153 @@
+/**
+ * MIT License
+ * https://github.com/omgovich/react-colorful/
+ *
+ * Copyright (c) 2020 Vlad Shilov |