Port bay newest loadout system (#1648)

-ports bay newest loadout system, which is pretty much a tab of their own, with different sections instead of a single list
-adds code that allows for several tweaks of custom loadout, like color, item path and contents
-adds dumb lunchboxes that can be filled with some food selection
-adds the option to select pre-filled vacuum-flasks or flasks
-also tries to fix the issues with xeno gear again
This commit is contained in:
Alberyk
2017-01-29 21:52:09 +02:00
committed by skull132
parent 5909bf65ba
commit 5a355914fc
26 changed files with 1505 additions and 1634 deletions
@@ -7,37 +7,31 @@
S["undershirt"] >> pref.undershirt
S["socks"] >> pref.socks
S["backbag"] >> pref.backbag
S["gear"] >> pref.gear
/datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S)
S["underwear"] << pref.underwear
S["undershirt"] << pref.undershirt
S["socks"] << pref.socks
S["backbag"] << pref.backbag
S["gear"] << pref.gear
/datum/category_item/player_setup_item/general/equipment/gather_load_query()
return list("ss13_characters" = list("vars" = list("underwear", "undershirt", "socks", "backbag", "gear"), "args" = list("id")))
return list("ss13_characters" = list("vars" = list("underwear", "undershirt", "socks", "backbag"), "args" = list("id")))
/datum/category_item/player_setup_item/general/equipment/gather_load_parameters()
return list(":id" = pref.current_character)
/datum/category_item/player_setup_item/general/equipment/gather_save_query()
return list("ss13_characters" = list("underwear", "undershirt", "socks", "backbag", "gear", "id" = 1, "ckey" = 1))
return list("ss13_characters" = list("underwear", "undershirt", "socks", "backbag", "id" = 1, "ckey" = 1))
/datum/category_item/player_setup_item/general/equipment/gather_save_parameters()
return list(":underwear" = pref.underwear, ":undershirt" = pref.undershirt, ":socks" = pref.socks, ":backbag" = pref.backbag, ":gear" = list2params(pref.gear), ":id" = pref.current_character, ":ckey" = pref.client.ckey)
return list(":underwear" = pref.underwear, ":undershirt" = pref.undershirt, ":socks" = pref.socks, ":backbag" = pref.backbag, ":id" = pref.current_character, ":ckey" = pref.client.ckey)
/datum/category_item/player_setup_item/general/equipment/sanitize_character(var/sql_load = 0)
if (sql_load)
pref.backbag = text2num(pref.backbag)
pref.gear = params2list(pref.gear)
pref.backbag = sanitize_integer(pref.backbag, 1, backbaglist.len, initial(pref.backbag))
if (!islist(pref.gear))
pref.gear = list()
var/undies = get_undies()
var/gender_socks = get_gender_socks()
if(!get_key_by_value(undies, pref.underwear))
@@ -47,45 +41,14 @@
if(!get_key_by_value(gender_socks, pref.socks))
pref.socks = gender_socks[gender_socks[1]]
var/total_cost = 0
for(var/gear_name in pref.gear)
if(!gear_datums[gear_name])
pref.gear -= gear_name
else if(!(gear_name in valid_gear_choices()))
pref.gear -= gear_name
else
var/datum/gear/G = gear_datums[gear_name]
if(total_cost + G.cost > MAX_GEAR_COST)
pref.gear -= gear_name
else
total_cost += G.cost
/datum/category_item/player_setup_item/general/equipment/content()
. += "<b>Equipment Loadout:</b><br>"
. += "<b>Equipment:</b><br>"
. += "Underwear: <a href='?src=\ref[src];change_underwear=1'><b>[get_key_by_value(get_undies(),pref.underwear)]</b></a><br>"
. += "Undershirt: <a href='?src=\ref[src];change_undershirt=1'><b>[get_key_by_value(undershirt_t,pref.undershirt)]</b></a><br>"
. += "Socks: <a href='?src=\ref[src];change_socks=1'><b>[get_key_by_value(get_gender_socks(),pref.socks)]</b></a><br>"
. += "Backpack Type: <a href='?src=\ref[src];change_backpack=1'><b>[backbaglist[pref.backbag]]</b></a><br>"
. += "<br><b>Custom Loadout:</b><br>"
var/total_cost = 0
if(pref.gear && pref.gear.len)
for(var/i = 1; i <= pref.gear.len; i++)
var/datum/gear/G = gear_datums[pref.gear[i]]
if(G)
total_cost += G.cost
. += "[pref.gear[i]] ([G.cost] points) <a href='?src=\ref[src];remove_loadout=[i]'>Remove</a><br>"
. += "<b>Used:</b> [total_cost] points."
else
. += "None."
if(total_cost < MAX_GEAR_COST)
. += " <a href='?src=\ref[src];add_loadout=1'>Add</a>"
if(pref.gear && pref.gear.len)
. += " <a href='?src=\ref[src];clear_loadout=1'>Clear</a>"
. += "<br>"
/datum/category_item/player_setup_item/general/equipment/proc/get_undies()
return pref.gender == MALE ? underwear_m : underwear_f
@@ -93,17 +56,6 @@
/datum/category_item/player_setup_item/general/equipment/proc/get_gender_socks()
return pref.gender == MALE ? socks_m : socks_f
/datum/category_item/player_setup_item/general/equipment/proc/valid_gear_choices(var/max_cost)
. = list()
var/mob/preference_mob = preference_mob()
for(var/gear_name in gear_datums)
var/datum/gear/G = gear_datums[gear_name]
if(G.whitelisted && !is_alien_whitelisted(preference_mob, G.whitelisted))
continue
if(max_cost && G.cost > max_cost)
continue
. += gear_name
/datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user)
if(href_list["change_underwear"])
var/underwear_options = get_undies()
@@ -131,32 +83,4 @@
pref.backbag = backbaglist.Find(new_backbag)
return TOPIC_REFRESH
else if(href_list["add_loadout"])
var/total_cost = 0
for(var/gear_name in pref.gear)
if(gear_datums[gear_name])
var/datum/gear/G = gear_datums[gear_name]
total_cost += G.cost
var/choice = input(user, "Select gear to add:", "Character Preference") as null|anything in valid_gear_choices(MAX_GEAR_COST - total_cost)
if(choice && gear_datums[choice] && CanUseTopic(user))
var/datum/gear/C = gear_datums[choice]
total_cost += C.cost
if(C && total_cost <= MAX_GEAR_COST)
pref.gear += choice
user << "<span class='notice'>Added \the '[choice]' for [C.cost] points ([MAX_GEAR_COST - total_cost] points remaining).</span>"
else
user << "<span class='warning'>Adding \the '[choice]' will exceed the maximum loadout cost of [MAX_GEAR_COST] points.</span>"
return TOPIC_REFRESH
else if(href_list["remove_loadout"])
var/i_remove = text2num(href_list["remove_loadout"])
if(i_remove < 1 || i_remove > pref.gear.len) return TOPIC_NOACTION
pref.gear.Cut(i_remove, i_remove + 1)
return TOPIC_REFRESH
else if(href_list["clear_loadout"])
pref.gear.Cut()
return TOPIC_REFRESH
return ..()
@@ -0,0 +1,145 @@
/datum/gear_tweak/proc/get_contents(var/metadata)
return
/datum/gear_tweak/proc/get_metadata(var/user, var/metadata)
return
/datum/gear_tweak/proc/get_default()
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)
return
/*
Color adjustment
*/
var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
/datum/gear_tweak/color
var/list/valid_colors
/datum/gear_tweak/color/New(var/list/valid_colors)
src.valid_colors = valid_colors
..()
/datum/gear_tweak/color/get_contents(var/metadata)
return "Color: <font color='[metadata]'>&#9899;</font>"
/datum/gear_tweak/color/get_default()
return valid_colors ? valid_colors[1] : COLOR_GRAY
/datum/gear_tweak/color/get_metadata(var/user, var/metadata)
if(valid_colors)
return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors
return input(user, "Choose an item color.", "Global Preference", metadata) as color|null
/datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata)
if(valid_colors && !(metadata in valid_colors))
return
I.color = metadata
/*
Path adjustment
*/
/datum/gear_tweak/path
var/list/valid_paths
/datum/gear_tweak/path/New(var/list/valid_paths)
src.valid_paths = valid_paths
..()
/datum/gear_tweak/path/get_contents(var/metadata)
return "Type: [metadata]"
/datum/gear_tweak/path/get_default()
return valid_paths[1]
/datum/gear_tweak/path/get_metadata(var/user, var/metadata)
return input(user, "Choose a type.", "Character Preference", metadata) as null|anything in valid_paths
/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
*/
/datum/gear_tweak/contents
var/list/valid_contents
/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 - 1))
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)
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)
/*
Reagents adjustment
*/
/datum/gear_tweak/reagents
var/list/valid_reagents
/datum/gear_tweak/reagents/New(var/list/reagents)
valid_reagents = reagents.Copy()
..()
/datum/gear_tweak/reagents/get_contents(var/metadata)
return "Reagents: [metadata]"
/datum/gear_tweak/reagents/get_default()
return "Random"
/datum/gear_tweak/reagents/get_metadata(var/user, var/list/metadata)
. = input(user, "Choose an entry.", "Character Preference", metadata) as null|anything in (valid_reagents + list("Random", "None"))
if(!.)
return metadata
/datum/gear_tweak/reagents/tweak_item(var/obj/item/I, var/list/metadata)
if(metadata == "None")
return
if(metadata == "Random")
. = valid_reagents[pick(valid_reagents)]
else
. = valid_reagents[metadata]
I.reagents.add_reagent(., I.reagents.get_free_space())
@@ -0,0 +1,228 @@
var/list/loadout_categories = list()
var/list/gear_datums = list()
/datum/loadout_category
var/category = ""
var/list/gear = list()
/datum/loadout_category/New(var/cat)
category = cat
..()
/hook/startup/proc/populate_gear_list()
//create a list of gear datums to sort
for(var/geartype in typesof(/datum/gear)-/datum/gear)
var/datum/gear/G = geartype
var/use_name = initial(G.display_name)
var/use_category = initial(G.sort_category)
if(!loadout_categories[use_category])
loadout_categories[use_category] = new /datum/loadout_category(use_category)
var/datum/loadout_category/LC = loadout_categories[use_category]
gear_datums[use_name] = new geartype
LC.gear[use_name] = gear_datums[use_name]
loadout_categories = sortAssoc(loadout_categories)
for(var/loadout_category in loadout_categories)
var/datum/loadout_category/LC = loadout_categories[loadout_category]
LC.gear = sortAssoc(LC.gear)
return 1
/datum/category_item/player_setup_item/loadout
name = "Loadout"
sort_order = 1
var/current_tab = "General"
/datum/category_item/player_setup_item/loadout/load_character(var/savefile/S)
S["gear"] >> pref.gear
/datum/category_item/player_setup_item/loadout/save_character(var/savefile/S)
S["gear"] << pref.gear
/datum/category_item/player_setup_item/loadout/gather_load_query()
return list("ss13_characters" = list("vars" = list("gear"), "args" = list("id")))
/datum/category_item/player_setup_item/loadout/gather_save_query()
return list("ss13_characters" = list("gear", "id" = 1, "ckey" = 1))
/datum/category_item/player_setup_item/loadout/gather_save_parameters()
return list(":gear" = list2params(pref.gear), ":id" = pref.current_character, ":ckey" = pref.client.ckey)
/datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost)
. = list()
var/mob/preference_mob = preference_mob()
for(var/gear_name in gear_datums)
var/datum/gear/G = gear_datums[gear_name]
if(G.whitelisted && !is_alien_whitelisted(preference_mob, all_species[G.whitelisted]))
continue
if(max_cost && G.cost > max_cost)
continue
. += gear_name
/datum/category_item/player_setup_item/loadout/sanitize_character(var/sql_load = 0)
if (sql_load)
pref.gear = params2list(pref.gear)
var/mob/preference_mob = preference_mob()
if(!islist(pref.gear))
pref.gear = list()
for(var/gear_name in pref.gear)
if(!(gear_name in gear_datums))
pref.gear -= gear_name
var/total_cost = 0
for(var/gear_name in pref.gear)
if(!gear_datums[gear_name])
preference_mob << "<span class='warning'>You cannot have more than one of the \the [gear_name]</span>"
pref.gear -= gear_name
else if(!(gear_name in valid_gear_choices()))
preference_mob << "<span class='warning'>You cannot take \the [gear_name] as you are not whitelisted for the species.</span>"
pref.gear -= gear_name
else
var/datum/gear/G = gear_datums[gear_name]
if(total_cost + G.cost > MAX_GEAR_COST)
pref.gear -= gear_name
preference_mob << "<span class='warning'>You cannot afford to take \the [gear_name]</span>"
else
total_cost += G.cost
/datum/category_item/player_setup_item/loadout/content()
var/total_cost = 0
if(pref.gear && pref.gear.len)
for(var/i = 1; i <= pref.gear.len; i++)
var/datum/gear/G = gear_datums[pref.gear[i]]
if(G)
total_cost += G.cost
var/fcolor = "#3366CC"
if(total_cost < MAX_GEAR_COST)
fcolor = "#E67300"
. = list()
. += "<table align = 'center' width = 100%>"
. += "<tr><td colspan=3><center><b><font color = '[fcolor]'>[total_cost]/[MAX_GEAR_COST]</font> loadout points spent.</b> \[<a href='?src=\ref[src];clear_loadout=1'>Clear Loadout</a>\]</center></td></tr>"
. += "<tr><td colspan=3><center><b>"
var/firstcat = 1
for(var/category in loadout_categories)
if(firstcat)
firstcat = 0
else
. += " |"
if(category == current_tab)
. += " [category] "
else
var/datum/loadout_category/LC = loadout_categories[category]
var/tcolor = "#3366CC"
for(var/thing in LC.gear)
if(thing in pref.gear)
tcolor = "#E67300"
break
. += " <a href='?src=\ref[src];select_category=[category]'><font color = '[tcolor]'>[category]</font></a> "
. += "</b></center></td></tr>"
var/datum/loadout_category/LC = loadout_categories[current_tab]
. += "<tr><td colspan=3><hr></td></tr>"
. += "<tr><td colspan=3><b><center>[LC.category]</center></b></td></tr>"
. += "<tr><td colspan=3><hr></td></tr>"
for(var/gear_name in LC.gear)
if(!(gear_name in valid_gear_choices()))
continue
var/datum/gear/G = LC.gear[gear_name]
var/ticked = (G.display_name in pref.gear)
. += "<tr style='vertical-align:top'><td width=25%><a href='?src=\ref[src];toggle_gear=[G.display_name]'><font color='[ticked ? "#E67300" : "#3366CC"]'>[G.display_name]</font></a></td>"
. += "<td width = 10% style='vertical-align:top'>[G.cost]</td>"
. += "<td><font size=2><i>[G.description]</i></font></td></tr>"
if(ticked)
. += "<tr><td colspan=3>"
for(var/datum/gear_tweak/tweak in G.gear_tweaks)
. += " <a href='?src=\ref[src];gear=[G.display_name];tweak=\ref[tweak]'>[tweak.get_contents(get_tweak_metadata(G, tweak))]</a>"
. += "</td></tr>"
. += "</table>"
. = jointext(.,null)
/datum/category_item/player_setup_item/loadout/proc/get_gear_metadata(var/datum/gear/G)
. = pref.gear[G.display_name]
if(!.)
. = list()
pref.gear[G.display_name] = .
/datum/category_item/player_setup_item/loadout/proc/get_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak)
var/list/metadata = get_gear_metadata(G)
. = metadata["[tweak]"]
if(!.)
. = tweak.get_default()
metadata["[tweak]"] = .
/datum/category_item/player_setup_item/loadout/proc/set_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak, var/new_metadata)
var/list/metadata = get_gear_metadata(G)
metadata["[tweak]"] = new_metadata
/datum/category_item/player_setup_item/loadout/OnTopic(href, href_list, user)
if(href_list["toggle_gear"])
var/datum/gear/TG = gear_datums[href_list["toggle_gear"]]
if(TG.display_name in pref.gear)
pref.gear -= TG.display_name
else
var/total_cost = 0
for(var/gear_name in pref.gear)
var/datum/gear/G = gear_datums[gear_name]
if(istype(G)) total_cost += G.cost
if((total_cost+TG.cost) <= MAX_GEAR_COST)
pref.gear += TG.display_name
return TOPIC_REFRESH
if(href_list["gear"] && href_list["tweak"])
var/datum/gear/gear = gear_datums[href_list["gear"]]
var/datum/gear_tweak/tweak = locate(href_list["tweak"])
if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks))
return TOPIC_NOACTION
var/metadata = tweak.get_metadata(user, get_tweak_metadata(gear, tweak))
if(!metadata || !CanUseTopic(user))
return TOPIC_NOACTION
set_tweak_metadata(gear, tweak, metadata)
return TOPIC_REFRESH
else if(href_list["select_category"])
current_tab = href_list["select_category"]
return TOPIC_REFRESH
else if(href_list["clear_loadout"])
pref.gear.Cut()
return TOPIC_REFRESH
return ..()
/datum/gear
var/display_name //Name/index. Must be unique.
var/description //Description of this gear. If left blank will default to the description of the pathed item.
var/path //Path to item.
var/cost = 1 //Number of points used. Items in general cost 1 point, storage/armor/gloves/special use costs 2 points.
var/slot //Slot to equip to.
var/list/allowed_roles //Roles that can spawn with this item.
var/whitelisted //Term to check the whitelist for..
var/sort_category = "General"
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
/datum/gear/New()
..()
if(!description)
var/obj/O = path
description = initial(O.desc)
/datum/gear_data
var/path
var/location
/datum/gear_data/New(var/path, var/location)
src.path = path
src.location = location
/datum/gear/proc/spawn_item(var/location, var/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]"])
return item
@@ -0,0 +1,69 @@
/datum/gear/accessory
display_name = "suspenders"
path = /obj/item/clothing/accessory/suspenders
slot = slot_tie
sort_category = "Accessories"
/datum/gear/accessory/waistcoat
display_name = "waistcoat"
path = /obj/item/clothing/accessory/wcoat
/datum/gear/accessory/armband
display_name = "armband selection"
path = /obj/item/clothing/accessory/armband
/datum/gear/accessory/armband/New()
..()
var/armbands = list()
armbands["red armband"] = /obj/item/clothing/accessory/armband
armbands["cargo armband"] = /obj/item/clothing/accessory/armband/cargo
armbands["EMT armband"] = /obj/item/clothing/accessory/armband/medgreen
armbands["medical armband"] = /obj/item/clothing/accessory/armband/med
armbands["engineering armband"] = /obj/item/clothing/accessory/armband/engine
armbands["hydroponics armband"] = /obj/item/clothing/accessory/armband/hydro
armbands["science armband"] = /obj/item/clothing/accessory/armband/science
armbands["synthetic intelligence movement armband"] = /obj/item/clothing/accessory/armband/movement
armbands["ATLAS armband"] = /obj/item/clothing/accessory/armband/atlas
gear_tweaks += new/datum/gear_tweak/path(armbands)
/datum/gear/accessory/holster
display_name = "holster selection"
path = /obj/item/clothing/accessory/holster
allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective", "Security Cadet")
/datum/gear/accessory/holster/New()
..()
var/holsters = list()
holsters["holster, armpit"] = /obj/item/clothing/accessory/holster/armpit
holsters["holster, hip"] = /obj/item/clothing/accessory/holster/hip
holsters["holster, waist"] = /obj/item/clothing/accessory/holster/waist
holsters["holster, thigh"] = /obj/item/clothing/accessory/holster/thigh
gear_tweaks += new/datum/gear_tweak/path(holsters)
/datum/gear/accessory/tie
display_name = "tie selection"
path = /obj/item/clothing/accessory
/datum/gear/accessory/tie/New()
..()
var/ties = list()
ties["blue tie"] = /obj/item/clothing/accessory/blue
ties["red tie"] = /obj/item/clothing/accessory/red
ties["horrible tie"] = /obj/item/clothing/accessory/horrible
gear_tweaks += new/datum/gear_tweak/path(ties)
/datum/gear/accessory/brown_vest
display_name = "webbing, engineering"
path = /obj/item/clothing/accessory/storage/brown_vest
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer")
/datum/gear/accessory/black_vest
display_name = "webbing, security"
path = /obj/item/clothing/accessory/storage/black_vest
allowed_roles = list("Security Officer","Head of Security","Warden")
/datum/gear/accessory/webbing
display_name = "webbing, simple"
path = /obj/item/clothing/accessory/storage/webbing
cost = 2
@@ -0,0 +1,21 @@
/datum/gear/cosmetic
display_name = "purple comb"
path = /obj/item/weapon/haircomb
sort_category = "Cosmetics"
/datum/gear/cosmetic/lipstick
display_name = "lipstick selection"
path = /obj/item/weapon/lipstick
/datum/gear/cosmetic/lipstick/New()
..()
var/lipsticks = list()
lipsticks["lipstick, red"] = /obj/item/weapon/lipstick
lipsticks["lipstick, purple"] = /obj/item/weapon/lipstick/purple
lipsticks["lipstick, jade"] = /obj/item/weapon/lipstick/jade
lipsticks["lipstick, back"] = /obj/item/weapon/lipstick/black
gear_tweaks += new/datum/gear_tweak/path(lipsticks)
/datum/gear/cosmetic/mirror
display_name = "handheld mirror"
path = /obj/item/weapon/mirror
@@ -0,0 +1,19 @@
// Stuff worn on the ears. Items here go in the "ears" sort_category but they must not use
// the slot_r_ear or slot_l_ear as the slot, or else players will spawn with no headset.
/datum/gear/ears
display_name = "earmuffs"
path = /obj/item/clothing/ears/earmuffs
sort_category = "Earwear"
/datum/gear/ears/bandanna
display_name = "neck bandanna selection"
path = /obj/item/clothing/ears/bandanna
/datum/gear/ears/bandanna/New()
..()
var/bandanna = list()
bandanna["red bandanna"] = /obj/item/clothing/ears/bandanna
bandanna["blue bandanna"] = /obj/item/clothing/ears/bandanna/blue
bandanna["black bandanna"] = /obj/item/clothing/ears/bandanna/black
gear_tweaks += new/datum/gear_tweak/path(bandanna)
@@ -0,0 +1,50 @@
// Eyes
/datum/gear/eyes
display_name = "eyepatch"
path = /obj/item/clothing/glasses/eyepatch
slot = slot_glasses
sort_category = "Glasses and Eyewear"
/datum/gear/eyes/glasses
display_name = "glasses, prescription"
path = /obj/item/clothing/glasses/regular
/datum/gear/eyes/glasses/green
display_name = "glasses, green"
path = /obj/item/clothing/glasses/gglasses
/datum/gear/eyes/glasses/prescriptionhipster
display_name = "glasses, hipster"
path = /obj/item/clothing/glasses/regular/hipster
/datum/gear/eyes/glasses/monocle
display_name = "monocle"
path = /obj/item/clothing/glasses/monocle
/datum/gear/eyes/scanning_goggles
display_name = "scanning goggles"
path = /obj/item/clothing/glasses/regular/scanners
/datum/gear/eyes/sciencegoggles
display_name = "science Goggles"
path = /obj/item/clothing/glasses/science
/datum/gear/eyes/security
display_name = "security HUD"
path = /obj/item/clothing/glasses/hud/security
allowed_roles = list("Security Officer","Head of Security","Warden")
/datum/gear/eyes/medical
display_name = "medical HUD"
path = /obj/item/clothing/glasses/hud/health
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
/datum/gear/eyes/shades
display_name = "sunglasses, fat"
path = /obj/item/clothing/glasses/sunglasses/big
allowed_roles = list("Security Officer","Head of Security","Warden","Captain","Head of Personnel","Quartermaster","Internal Affairs Agent","Detective")
/datum/gear/eyes/shades/prescriptionsun
display_name = "sunglasses, presciption"
path = /obj/item/clothing/glasses/sunglasses/prescription
cost = 2
@@ -0,0 +1,69 @@
/datum/gear/cane
display_name = "cane"
path = /obj/item/weapon/cane
/datum/gear/dice
display_name = "d20"
path = /obj/item/weapon/dice/d20
/datum/gear/cards
display_name = "deck of cards"
path = /obj/item/weapon/deck/cards
/datum/gear/tarot
display_name = "deck of tarot cards"
path = /obj/item/weapon/deck/tarot
/datum/gear/holder
display_name = "card holder"
path = /obj/item/weapon/deck/holder
/datum/gear/cardemon_pack
display_name = "cardemon booster pack"
path = /obj/item/weapon/pack/cardemon
/datum/gear/spaceball_pack
display_name = "spaceball booster pack"
path = /obj/item/weapon/pack/spaceball
/datum/gear/flask
display_name = "flask"
path = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask
/datum/gear/flask/New()
..()
gear_tweaks += new/datum/gear_tweak/reagents(lunchables_ethanol_reagents())
/datum/gear/vacflask
display_name = "vacuum-flask"
path = /obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask
/datum/gear/vacflask/New()
..()
gear_tweaks += new/datum/gear_tweak/reagents(lunchables_drink_reagents())
/datum/gear/boot_knife
display_name = "boot knife"
path = /obj/item/weapon/material/kitchen/utensil/knife/boot
cost = 3
/datum/gear/cape
display_name = "tunnel cloak"
path = /obj/item/weapon/storage/backpack/cloak
cost = 1
/datum/gear/lunchbox
display_name = "lunchbox"
description = "A little lunchbox."
cost = 2
path = /obj/item/weapon/storage/toolbox/lunchbox
/datum/gear/lunchbox/New()
..()
var/list/lunchboxes = list()
for(var/lunchbox_type in typesof(/obj/item/weapon/storage/toolbox/lunchbox))
var/obj/item/weapon/storage/toolbox/lunchbox/lunchbox = lunchbox_type
if(!initial(lunchbox.filled))
lunchboxes[initial(lunchbox.name)] = lunchbox_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(lunchboxes))
gear_tweaks += new/datum/gear_tweak/contents(lunchables_lunches(), lunchables_snacks(), lunchables_drinks())
@@ -0,0 +1,25 @@
/datum/gear/gloves
display_name = "watch"
path = /obj/item/clothing/gloves/watch
cost = 2
slot = slot_gloves
sort_category = "Gloves and Handwear"
/datum/gear/gloves/color
display_name = "gloves selection"
path = /obj/item/clothing/gloves/black
/datum/gear/gloves/color/New()
..()
var/gloves = list()
gloves["black gloves"] = /obj/item/clothing/gloves
gloves["red gloves"] = /obj/item/clothing/gloves/red
gloves["blue gloves"] = /obj/item/clothing/gloves/blue
gloves["orange gloves"] = /obj/item/clothing/gloves/orange
gloves["purple gloves"] = /obj/item/clothing/gloves/purple
gloves["brown gloves"] = /obj/item/clothing/gloves/brown
gloves["light-brown gloves"] = /obj/item/clothing/gloves/light_brown
gloves["white gloves"] = /obj/item/clothing/gloves/green
gloves["grey gloves"] = /obj/item/clothing/gloves/grey
gloves["rainbow gloves"] = /obj/item/clothing/gloves/rainbow
gear_tweaks += new/datum/gear_tweak/path(gloves)
@@ -0,0 +1,113 @@
/datum/gear/head
display_name = "hat, boatsman"
path = /obj/item/clothing/head/boaterhat
slot = slot_head
sort_category = "Hats and Headwear"
/datum/gear/head/bandana
display_name = "bandana selection"
path = /obj/item/clothing/head/bandana
/datum/gear/head/bandana/New()
..()
var/bandanas = list()
bandanas["green bandana"] = /obj/item/clothing/head/greenbandana
bandanas["orange bandana"] = /obj/item/clothing/head/orangebandana
bandanas["pirate bandana"] = /obj/item/clothing/head/bandana
gear_tweaks += new/datum/gear_tweak/path(bandanas)
/datum/gear/head/cap
display_name = "cap selection"
path = /obj/item/clothing/head/soft/blue
/datum/gear/head/cap/New()
..()
var/caps = list()
caps["blue cap"] = /obj/item/clothing/head/soft/blue
caps["flat cap"] = /obj/item/clothing/head/flatcap
caps["green cap"] = /obj/item/clothing/head/soft/green
caps["grey cap"] = /obj/item/clothing/head/soft/grey
caps["mailman cap"] = /obj/item/clothing/head/mailman
caps["orange cap"] = /obj/item/clothing/head/soft/orange
caps["purple cap"] = /obj/item/clothing/head/soft/purple
caps["rainbow cap"] = /obj/item/clothing/head/soft/rainbow
caps["red cap"] = /obj/item/clothing/head/soft/red
caps["white cap"] = /obj/item/clothing/head/soft/mime
caps["yellow cap"] = /obj/item/clothing/head/soft/yellow
gear_tweaks += new/datum/gear_tweak/path(caps)
/datum/gear/head/beret
display_name = "beret, red"
path = /obj/item/clothing/head/beret
/datum/gear/head/beret/eng
display_name = "beret, engie-orange"
path = /obj/item/clothing/head/beret/engineering
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice")
/datum/gear/head/beret/purp
display_name = "beret, purple"
path = /obj/item/clothing/head/beret/purple
/datum/gear/head/beret/sec
display_name = "beret,security"
path = /obj/item/clothing/head/beret/sec
allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective")
/datum/gear/head/beret/warden
display_name = "beret,security (warden)"
path = /obj/item/clothing/head/beret/sec/warden
allowed_roles = list("Head of Security","Warden")
/datum/gear/head/beret/hos
display_name = "beret,security (head of security)"
path = /obj/item/clothing/head/beret/sec/hos
allowed_roles = list("Head of Security")
/datum/gear/head/cap/corp
display_name = "cap, corporate (security)"
path = /obj/item/clothing/head/soft/sec/corp
allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective")
/datum/gear/head/cap/sec
display_name = "cap, security"
path = /obj/item/clothing/head/soft/sec
allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective")
/datum/gear/head/hardhat
display_name = "hardhat, yellow"
path = /obj/item/clothing/head/hardhat
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice")
/datum/gear/head/hardhat/New()
..()
var/hardhat = list()
hardhat["hardhat, yellow"] = /obj/item/clothing/head/hardhat
hardhat["hardhat, blue"] = /obj/item/clothing/head/hardhat/dblue
hardhat["hardhat, orange"] = /obj/item/clothing/head/hardhat/orange
hardhat["hardhat, red"] = /obj/item/clothing/head/hardhat/red
gear_tweaks += new/datum/gear_tweak/path(hardhat)
/datum/gear/head/hairflower
display_name = "hair flower pin, red"
path = /obj/item/clothing/head/hairflower
/datum/gear/head/bowler
display_name = "hat, bowler"
path = /obj/item/clothing/head/bowler
/datum/gear/head/fez
display_name = "hat, fez"
path = /obj/item/clothing/head/fez
/datum/gear/head/tophat
display_name = "hat, tophat"
path = /obj/item/clothing/head/that
/datum/gear/head/philosopher_wig
display_name = "natural philosopher's wig"
path = /obj/item/clothing/head/philosopher_wig
/datum/gear/head/ushanka
display_name = "ushanka"
path = /obj/item/clothing/head/ushanka
@@ -0,0 +1,5 @@
// Mask
/datum/gear/mask
display_name = "sterile mask"
path = /obj/item/clothing/mask/surgical
cost = 2
@@ -0,0 +1,45 @@
// Shoelocker
/datum/gear/shoes
display_name = "jackboots"
path = /obj/item/clothing/shoes/jackboots
slot = slot_shoes
sort_category = "Shoes and Footwear"
/datum/gear/shoes/toeless
display_name = "toe-less jackboots"
path = /obj/item/clothing/shoes/jackboots/unathi
/datum/gear/shoes/workboots
display_name = "workboots"
path = /obj/item/clothing/shoes/workboots
/datum/gear/shoes/sandals
display_name = "sandals"
path = /obj/item/clothing/shoes/sandal
/datum/gear/shoes/color
display_name = "shoe selection"
path = /obj/item/clothing/shoes/black
/datum/gear/shoes/color/New()
..()
var/shoes = list()
shoes["black shoes"] = /obj/item/clothing/shoes/black
shoes["blue shoes"] = /obj/item/clothing/shoes/blue
shoes["brown shoes"] = /obj/item/clothing/shoes/brown
shoes["green shoes"] = /obj/item/clothing/shoes/green
shoes["orange shoes"] = /obj/item/clothing/shoes/orange
shoes["purple shoes"] = /obj/item/clothing/shoes/purple
shoes["rainbow shoes"] = /obj/item/clothing/shoes/rainbow
shoes["red shoes"] = /obj/item/clothing/shoes/red
shoes["white shoes"] = /obj/item/clothing/shoes/white
shoes["yellow shoes"] = /obj/item/clothing/shoes/yellow
gear_tweaks += new/datum/gear_tweak/path(shoes)
/datum/gear/shoes/dress
display_name = "shoes, dress"
path = /obj/item/clothing/shoes/laceup
/datum/gear/shoes/leather
display_name = "shoes, leather"
path = /obj/item/clothing/shoes/leather
@@ -0,0 +1,27 @@
/datum/gear/smokingpipe
display_name = "pipe, smoking"
path = /obj/item/clothing/mask/smokable/pipe
/datum/gear/cornpipe
display_name = "pipe, corn"
path = /obj/item/clothing/mask/smokable/pipe/cobpipe
/datum/gear/matchbook
display_name = "matchbook"
path = /obj/item/weapon/storage/box/matches
/datum/gear/zippo
display_name = "zippo"
path = /obj/item/weapon/flame/lighter/zippo
/datum/gear/cigarcase
display_name = "cigar case"
path = /obj/item/weapon/storage/fancy/cigar
/datum/gear/cigarette
display_name = "cigarette packet"
path = /obj/item/weapon/storage/fancy/cigarettes
/datum/gear/dromedaryco
display_name = "dromedaryco cigarette packet"
path = /obj/item/weapon/storage/fancy/cigarettes/dromedaryco
@@ -0,0 +1,129 @@
// Suit slot
/datum/gear/suit
display_name = "apron, blue"
path = /obj/item/clothing/suit/apron
slot = slot_wear_suit
sort_category = "Suits and Overwear"
cost = 2
/datum/gear/suit/leather
display_name = "jacket selection"
path = /obj/item/clothing/suit/storage/leather_jacket
/datum/gear/suit/leather/New()
..()
var/jackets = list()
jackets["bomber jacket"] = /obj/item/clothing/suit/storage/toggle/bomber
jackets["corporate black jacket"] = /obj/item/clothing/suit/storage/leather_jacket/nanotrasen
jackets["corporate brown jacket"] = /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen
jackets["black jacket"] = /obj/item/clothing/suit/storage/leather_jacket
jackets["brown jacket"] = /obj/item/clothing/suit/storage/toggle/brown_jacket
gear_tweaks += new/datum/gear_tweak/path(jackets)
/datum/gear/suit/hazard_vest
display_name = "hazard vest"
path = /obj/item/clothing/suit/storage/hazardvest
/datum/gear/suit/hoodie
display_name = "hoodie, grey"
path = /obj/item/clothing/suit/storage/toggle/hoodie
/datum/gear/suit/hoodie/black
display_name = "hoodie, black"
path = /obj/item/clothing/suit/storage/toggle/hoodie/black
/datum/gear/suit/labcoat
display_name = "labcoat selection"
path = /obj/item/clothing/suit/storage/toggle/labcoat
/datum/gear/suit/labcoat/New()
..()
var/labcoat = list()
labcoat["labcoat"] = /obj/item/clothing/suit/storage/toggle/labcoat
labcoat["labcoat, blue"] = /obj/item/clothing/suit/storage/toggle/labcoat/blue
labcoat["labcoat, green"] = /obj/item/clothing/suit/storage/toggle/labcoat/green
labcoat["labcoat, orange"] = /obj/item/clothing/suit/storage/toggle/labcoat/orange
labcoat["labcoat, purple"] = /obj/item/clothing/suit/storage/toggle/labcoat/purple
labcoat["labcoat, red"] = /obj/item/clothing/suit/storage/toggle/labcoat/red
gear_tweaks += new/datum/gear_tweak/path(labcoat)
/datum/gear/suit/overalls
display_name = "overalls"
path = /obj/item/clothing/suit/apron/overalls
cost = 1
/datum/gear/suit/poncho
display_name = "poncho selection"
path = /obj/item/clothing/suit/poncho
cost = 1
/datum/gear/suit/poncho/New()
..()
var/poncho = list()
poncho["poncho, tan"] = /obj/item/clothing/suit/poncho
poncho["poncho, blue"] = /obj/item/clothing/suit/poncho/blue
poncho["poncho, green"] = /obj/item/clothing/suit/poncho/green
poncho["poncho, purple"] = /obj/item/clothing/suit/poncho/purple
poncho["poncho, red"] = /obj/item/clothing/suit/poncho/red
gear_tweaks += new/datum/gear_tweak/path(poncho)
/datum/gear/suit/blue_lawyer_jacket
display_name = "suit jacket, blue"
path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
/datum/gear/suit/purple_lawyer_jacket
display_name = "suit jacket, purple"
path = /obj/item/clothing/suit/storage/lawyer/purpjacket
/datum/gear/suit/track_jacket
display_name = "track jacket"
path = /obj/item/clothing/suit/storage/toggle/tracksuit
/datum/gear/suit/winter
display_name = "winter coat"
path = /obj/item/clothing/suit/storage/hooded/wintercoat
/datum/gear/suit/winter/captain
display_name = "winter coat, captain"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/captain
allowed_roles = list("Captain")
/datum/gear/suit/winter/security
display_name = "winter coat, security"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/security
allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective")
/datum/gear/suit/winter/science
display_name = "winter coat, science"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/science
allowed_roles = list("Research Director","Scientist","Xenobiologist","Roboticist","Lab Assistant","Geneticist")
/datum/gear/suit/winter/medical
display_name = "winter coat, medical"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/medical
allowed_roles = list("Chief Medical Officer","Medical Doctor","Paramedic","Nursing Intern","Psychiatrist","Chemist",)
/datum/gear/suit/winter/engineering
display_name = "winter coat, engineering"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/engineering
allowed_roles = list("Station Engineer","Chief Engineer","Engineering Apprentice")
/datum/gear/suit/winter/atmos
display_name = "winter coat, atmospherics"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos
allowed_roles = list("Atmospheric Technician","Chief Engineer")
/datum/gear/suit/winter/hydro
display_name = "winter coat, hydroponics"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/hydro
allowed_roles = list("Head of Personnel","Gardener")
/datum/gear/suit/winter/cargo
display_name = "winter coat, cargo"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/cargo
allowed_roles = list("Cargo Technician","Quartermaster","Head of Personnel")
/datum/gear/suit/winter/mining
display_name = "winter coat, mining"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/miner
allowed_roles = list("Quartermaster","Head of Personnel","Shaft Miner")
@@ -0,0 +1,150 @@
// Uniform slot
/datum/gear/uniform
display_name = "blazer, blue"
path = /obj/item/clothing/under/blazer
slot = slot_w_uniform
sort_category = "Uniforms and Casual Dress"
/datum/gear/uniform/cheongsam
display_name = "cheongsam, white"
path = /obj/item/clothing/under/cheongsam
/datum/gear/uniform/kilt
display_name = "kilt"
path = /obj/item/clothing/under/kilt
/datum/gear/uniform/jumpskirt
display_name = "jumpskirt, black"
path = /obj/item/clothing/under/blackjumpskirt
/datum/gear/uniform/jumpsuit
display_name = "generic jumpsuits"
path = /obj/item/clothing/under/color/grey
/datum/gear/uniform/jumpsuit/New()
..()
var/jumpsuit = list()
jumpsuit["grey jumpsuit"] = /obj/item/clothing/under/color/grey
jumpsuit["black jumpsuit"] = /obj/item/clothing/under/color/black
jumpsuit["blue jumpsuit"] = /obj/item/clothing/under/color/blue
jumpsuit["green jumpsuit"] = /obj/item/clothing/under/color/green
jumpsuit["orange jumpsuit"] = /obj/item/clothing/under/color/orange
jumpsuit["pink jumpsuit"] = /obj/item/clothing/under/color/pink
jumpsuit["red jumpsuit"] = /obj/item/clothing/under/color/red
jumpsuit["white jumpsuit"] = /obj/item/clothing/under/color/white
jumpsuit["yellow jumpsuit"] = /obj/item/clothing/under/color/yellow
jumpsuit["light blue jumpsuit"] = /obj/item/clothing/under/lightblue
jumpsuit["aqua jumpsuit"] = /obj/item/clothing/under/aqua
jumpsuit["purple jumpsuit"] = /obj/item/clothing/under/purple
jumpsuit["light purple jumpsuit"] = /obj/item/clothing/under/lightpurple
jumpsuit["light green jumpsuit"] = /obj/item/clothing/under/lightgreen
jumpsuit["brown jumpsuit"] = /obj/item/clothing/under/brown
jumpsuit["light brown jumpsuit"] = /obj/item/clothing/under/lightbrown
jumpsuit["yellow green jumpsuit"] = /obj/item/clothing/under/yellowgreen
jumpsuit["light red jumpsuit"] = /obj/item/clothing/under/lightred
jumpsuit["dark red jumpsuit"] = /obj/item/clothing/under/darkred
gear_tweaks += new/datum/gear_tweak/path(jumpsuit)
/datum/gear/uniform/skirt
display_name = "plaid skirt, blue"
path = /obj/item/clothing/under/dress/plaid_blue
/datum/gear/uniform/skirt/purple
display_name = "plaid skirt, purple"
path = /obj/item/clothing/under/dress/plaid_purple
/datum/gear/uniform/skirt/red
display_name = "plaid skirt, red"
path = /obj/item/clothing/under/dress/plaid_red
/datum/gear/uniform/suit
display_name = "suit selection"
path = /obj/item/clothing/under/lawyer/bluesuit
/datum/gear/uniform/suit/New()
..()
var/suits = list()
suits["amish suit"] = /obj/item/clothing/under/sl_suit
suits["black suit"] = /obj/item/clothing/under/suit_jacket
suits["blue suit"] = /obj/item/clothing/under/lawyer/blue
suits["burgundy suit"] = /obj/item/clothing/under/suit_jacket/burgundy
suits["charcoal suit"] = /obj/item/clothing/under/suit_jacket/charcoal
suits["checkered suit"] = /obj/item/clothing/under/suit_jacket/checkered
suits["executive suit"] = /obj/item/clothing/under/suit_jacket/really_black
suits["female executive suit"] = /obj/item/clothing/under/suit_jacket/female
suits["gentleman suit"] = /obj/item/clothing/under/gentlesuit
suits["navy suit"] = /obj/item/clothing/under/suit_jacket/navy
suits["old man suit"] = /obj/item/clothing/under/lawyer/oldman
suits["purple suit"] = /obj/item/clothing/under/lawyer/purpsuit
suits["red suit"] = /obj/item/clothing/under/suit_jacket/red
suits["red lawyer suit"] = /obj/item/clothing/under/lawyer/red
suits["shiny black suit"] = /obj/item/clothing/under/lawyer/black
suits["tan suit"] = /obj/item/clothing/under/suit_jacket/tan
suits["white suit"] = /obj/item/clothing/under/scratch
suits["white-blue suit"] = /obj/item/clothing/under/lawyer/bluesuit
gear_tweaks += new/datum/gear_tweak/path(suits)
/datum/gear/uniform/scrubs
display_name = "scrubs selection"
path = /obj/item/clothing/under/rank/medical/black
allowed_roles = list("Scientist","Chief Medical Officer","Medical Doctor","Geneticist","Paramedic","Nursing Intern","Xenobiologist","Roboticist","Research Director","Detective",)
/datum/gear/uniform/scrubs/New()
..()
var/scrubs = list()
scrubs["scrubs, black"] = /obj/item/clothing/under/rank/medical/black
scrubs["scrubs, blue"] = /obj/item/clothing/under/rank/medical/blue
scrubs["scrubs, green"] = /obj/item/clothing/under/rank/medical/green
scrubs["scrubs, purple"] = /obj/item/clothing/under/rank/medical/purple
gear_tweaks += new/datum/gear_tweak/path(scrubs)
/datum/gear/uniform/sundress
display_name = "sundress"
path = /obj/item/clothing/under/sundress
/datum/gear/uniform/sundress/white
display_name = "sundress, white"
path = /obj/item/clothing/under/sundress_white
/datum/gear/uniform/dress_fire
display_name = "flame dress"
path = /obj/item/clothing/under/dress/dress_fire
/datum/gear/uniform/uniform_captain
display_name = "uniform, captain's dress"
path = /obj/item/clothing/under/dress/dress_cap
allowed_roles = list("Captain")
/datum/gear/uniform/corpsecsuit
display_name = "uniform, corporate (Security)"
path = /obj/item/clothing/under/rank/security/corp
allowed_roles = list("Security Officer","Head of Security","Warden")
/datum/gear/uniform/uniform_hop
display_name = "uniform, HoP's dress"
path = /obj/item/clothing/under/dress/dress_hop
allowed_roles = list("Head of Personnel")
/datum/gear/uniform/uniform_hr
display_name = "uniform, HR director (HoP)"
path = /obj/item/clothing/under/dress/dress_hr
allowed_roles = list("Head of Personnel")
/datum/gear/uniform/navysecsuit
display_name = "uniform, navyblue (Security)"
path = /obj/item/clothing/under/rank/security/navyblue
allowed_roles = list("Security Officer","Head of Security","Warden")
/datum/gear/uniform/gearharness
display_name = "gear harness"
path = /obj/item/clothing/under/gearharness
cost = 2
/datum/gear/uniform/track_pants
display_name = "track pants"
path = /obj/item/clothing/under/track
/datum/gear/uniform/turtleneck
display_name = "tacticool turtleneck"
path = /obj/item/clothing/under/syndicate/tacticool
@@ -0,0 +1,55 @@
/datum/gear/utility
display_name = "briefcase"
path = /obj/item/weapon/storage/briefcase
sort_category = "Utility"
/datum/gear/utility/secure
display_name = "secure briefcase"
path = /obj/item/weapon/storage/secure/briefcase
cost = 2
/datum/gear/utility/clipboard
display_name = "clipboard"
path = /obj/item/weapon/clipboard
/datum/gear/utility/folder
display_name = "folders"
path = /obj/item/weapon/folder
/datum/gear/utility/folder/New()
..()
var/folders = list()
folders["blue folder"] = /obj/item/weapon/folder/blue
folders["grey folder"] = /obj/item/weapon/folder
folders["red folder"] = /obj/item/weapon/folder/red
folders["white folder"] = /obj/item/weapon/folder/white
folders["yellow folder"] = /obj/item/weapon/folder/yellow
gear_tweaks += new/datum/gear_tweak/path(folders)
/datum/gear/utility/paicard
display_name = "personal AI device"
path = /obj/item/device/paicard
/datum/gear/utility/wallet
display_name = "wallet"
path = /obj/item/weapon/storage/wallet
/*
/datum/gear/utility/cheaptablet
display_name = "cheap tablet computer"
path = /obj/item/modular_computer/tablet/preset/custom_loadout/cheap
cost = 3
/datum/gear/utility/normaltablet
display_name = "tablet computer"
path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced
cost = 4
*/
/datum/gear/utility/recorder
display_name = "universal recorder"
path = /obj/item/device/taperecorder
/datum/gear/utility/camera
display_name = "camera"
path = /obj/item/device/camera
@@ -0,0 +1,108 @@
//unathi clothing
/datum/gear/suit/unathi_mantle
display_name = "hide mantle (Unathi)"
path = /obj/item/clothing/suit/unathi/mantle
cost = 1
whitelisted = "Unathi"
sort_category = "Xenowear"
/datum/gear/suit/unathi_robe
display_name = "roughspun robe (Unathi)"
path = /obj/item/clothing/suit/unathi/robe
cost = 1
whitelisted = "Unathi"
sort_category = "Xenowear"
//skrell headtail adorns
/datum/gear/ears/f_skrell
display_name = "headtail-wear, female (Skrell)"
path = /obj/item/clothing/ears/skrell/chain
sort_category = "Xenowear"
whitelisted = "Skrell"
/datum/gear/ears/f_skrell/New()
..()
var/f_chains = list()
f_chains["headtail chains"] = /obj/item/clothing/ears/skrell/chain
f_chains["headtail cloth"] = /obj/item/clothing/ears/skrell/cloth_female
f_chains["red-jeweled chain"] = /obj/item/clothing/ears/skrell/redjewel_chain
f_chains["ebony chain"] = /obj/item/clothing/ears/skrell/ebony_chain
f_chains["blue-jeweled chain"] = /obj/item/clothing/ears/skrell/bluejeweled_chain
f_chains["silver chain"] = /obj/item/clothing/ears/skrell/silver_chain
f_chains["blue cloth"] = /obj/item/clothing/ears/skrell/blue_skrell_cloth_band_female
gear_tweaks += new/datum/gear_tweak/path(f_chains)
/datum/gear/ears/m_skrell
display_name = "headtail-wear, male (Skrell)"
path = /obj/item/clothing/ears/skrell/band
sort_category = "Xenowear"
whitelisted = "Skrell"
/datum/gear/ears/m_skrell/New()
..()
var/m_chains = list()
m_chains["headtail bands"] = /obj/item/clothing/ears/skrell/chain
m_chains["headtail cloth"] = /obj/item/clothing/ears/skrell/cloth_male
m_chains["red-jeweled bands"] = /obj/item/clothing/ears/skrell/redjeweled_band
m_chains["ebony bands"] = /obj/item/clothing/ears/skrell/ebony_band
m_chains["blue-jeweled bands"] = /obj/item/clothing/ears/skrell/bluejeweled_band
m_chains["silver bands"] = /obj/item/clothing/ears/skrell/silver_band
m_chains["blue cloth"] = /obj/item/clothing/ears/skrell/blue_skrell_cloth_band_male
gear_tweaks += new/datum/gear_tweak/path(m_chains)
//vaurca items
/datum/gear/eyes/blindfold
display_name = "vaurca blindfold (Vaurca)"
path = /obj/item/clothing/glasses/sunglasses/blinders
cost = 2
whitelisted = "Vaurca"
sort_category = "Xenowear"
/datum/gear/mask/vaurca
display_name = "mandible garment (Vaurca)"
path = /obj/item/clothing/mask/breath/vaurca
cost = 1
whitelisted = "Vaurca"
sort_category = "Xenowear"
//beastmen gloves
/datum/gear/gloves/unathi
display_name = "gloves selection (Unathi)"
path = /obj/item/clothing/gloves/black/unathi
whitelisted = "Unathi"
sort_category = "Xenowear"
/datum/gear/gloves/unathi/New()
..()
var/un_gloves = list()
un_gloves["black gloves"] = /obj/item/clothing/gloves/black/unathi
un_gloves["red gloves"] = /obj/item/clothing/gloves/red/unathi
un_gloves["blue gloves"] = /obj/item/clothing/gloves/blue/unathi
un_gloves["orange gloves"] = /obj/item/clothing/gloves/orange/unathi
un_gloves["purple gloves"] = /obj/item/clothing/gloves/purple/unathi
un_gloves["brown gloves"] = /obj/item/clothing/gloves/brown/unathi
un_gloves["green gloves"] = /obj/item/clothing/gloves/green/unathi
un_gloves["white gloves"] = /obj/item/clothing/gloves/white/unathi
gear_tweaks += new/datum/gear_tweak/path(un_gloves)
/datum/gear/gloves/tajara
display_name = "gloves selection (Tajara)"
path = /obj/item/clothing/gloves/black/tajara
whitelisted = "Tajara"
sort_category = "Xenowear"
/datum/gear/gloves/tajara/New()
..()
var/taj_gloves = list()
taj_gloves["black gloves"] = /obj/item/clothing/gloves/black/tajara
taj_gloves["red gloves"] = /obj/item/clothing/gloves/red/tajara
taj_gloves["blue gloves"] = /obj/item/clothing/gloves/blue/tajara
taj_gloves["orange gloves"] = /obj/item/clothing/gloves/orange/tajara
taj_gloves["purple gloves"] = /obj/item/clothing/gloves/purple/tajara
taj_gloves["brown gloves"] = /obj/item/clothing/gloves/brown/tajara
taj_gloves["white gloves"] = /obj/item/clothing/gloves/green/tajara
gear_tweaks += new/datum/gear_tweak/path(taj_gloves)
@@ -27,6 +27,11 @@
sort_order = 4
category_item_type = /datum/category_item/player_setup_item/antagonism
/datum/category_group/player_setup_category/loadout_preferences
name = "Loadout"
sort_order = 5
category_item_type = /datum/category_item/player_setup_item/loadout
/datum/category_group/player_setup_category/global_preferences
name = "Global"
sort_order = 5