SCREEE. fuck this. I'mma just revert at this point, but don't want to lose progress.

This commit is contained in:
Poojawa
2018-03-19 04:57:57 -05:00
parent d387481aa5
commit a2fbab5ccb
24 changed files with 939 additions and 742 deletions
+13 -13
View File
@@ -2,27 +2,27 @@
#define COLOR_INPUT_DISABLED "#F0F0F0"
#define COLOR_INPUT_ENABLED "#D3B5B5"
//#define COLOR_WHITE "#EEEEEE"
//#define COLOR_SILVER "#C0C0C0"
//#define COLOR_GRAY "#808080"
//CITADEL EDIT - why the fuck are colors commented out???
#define COLOR_WHITE "#EEEEEE"
#define COLOR_SILVER "#C0C0C0"
#define COLOR_GRAY "#808080"
#define COLOR_FLOORTILE_GRAY "#8D8B8B"
#define COLOR_ALMOST_BLACK "#333333"
//#define COLOR_BLACK "#000000"
#define COLOR_BLACK "#000000"
#define COLOR_RED "#FF0000"
//#define COLOR_RED_LIGHT "#FF3333"
//#define COLOR_MAROON "#800000"
#define COLOR_RED_LIGHT "#FF3333"
#define COLOR_MAROON "#800000"
#define COLOR_YELLOW "#FFFF00"
//#define COLOR_OLIVE "#808000"
//#define COLOR_LIME "#32CD32"
#define COLOR_OLIVE "#808000"
#define COLOR_LIME "#32CD32"
#define COLOR_GREEN "#008000"
#define COLOR_CYAN "#00FFFF"
//#define COLOR_TEAL "#008080"
#define COLOR_TEAL "#008080"
#define COLOR_BLUE "#0000FF"
//#define COLOR_BLUE_LIGHT "#33CCFF"
//#define COLOR_NAVY "#000080"
#define COLOR_BLUE_LIGHT "#33CCFF"
#define COLOR_NAVY "#000080"
#define COLOR_PINK "#FFC0CB"
//#define COLOR_MAGENTA "#FF00FF"
#define COLOR_MAGENTA "#FF00FF"
#define COLOR_PURPLE "#800080"
#define COLOR_ORANGE "#FF9900"
#define COLOR_BEIGE "#CEB689"
+23 -1
View File
@@ -24,4 +24,26 @@ GLOBAL_LIST_EMPTY(whitelisted_species_list)
/proc/log_mentor(text)
GLOB.mentorlog.Add(text)
GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]"
GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]"
//Mergesort: any value in a list, preserves key=value structure
/proc/sortAssoc(var/list/L)
if(L.len < 2)
return L
var/middle = L.len / 2 + 1 // Copy is first,second-1
return mergeAssoc(sortAssoc(L.Copy(0,middle)), sortAssoc(L.Copy(middle))) //second parameter null = to end of list
/proc/mergeAssoc(var/list/L, var/list/R)
var/Li=1
var/Ri=1
var/list/result = new()
while(Li <= L.len && Ri <= R.len)
if(sorttext(L[Li], R[Ri]) < 1)
result += R&R[Ri++]
else
result += L&L[Li++]
if(Li <= L.len)
return (result + L.Copy(Li, 0))
return (result + R.Copy(Ri, 0))
+121
View File
@@ -127,6 +127,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/action_buttons_screen_locs = list()
//CITADEL GEAR SLOT DATA
//Gear stuff
var/list/gear = list()
var/gear_tab = "General"
var/max_gear_slots = 10
var/list/gear_categories
var/list/chosen_gear
/datum/preferences/New(client/C)
parent = C
custom_names["human"] = random_unique_name()
@@ -515,7 +523,66 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;preference=be_special;be_special_type=[i]'>[(i in be_special) ? "Yes" : "No"]</a><br>"
dat += citadel_pref_replace(current_tab)
dat += "</td></tr></table>"
//CITDEL EDIT - GEAR THINGS, fuck trying to get this working modularlly ******************************
if(current_tab == 3)
var/total_cost = 0
var/list/type_blacklist = list()
if(gear && gear.len)
for(var/i = 1, i <= gear.len, i++)
var/datum/gear/G = GLOB.loadout_items[gear[i]]
if(G)
if(!G.subtype_cost_overlap)
if(G.subtype_path in type_blacklist)
continue
type_blacklist += G.subtype_path
total_cost += G.cost
var/fcolor = "#3366CC"
if(total_cost < max_gear_slots)
fcolor = "#E67300"
dat += "<table align='center' width='100%'>"
dat += "<tr><td colspan=4><center><b><font color='[fcolor]'>[total_cost]/[max_gear_slots]</font> loadout points spent.</b> \[<a href='?_src_=prefs;preference=gear;clear_loadout=1'>Clear Loadout</a>\]</center></td></tr>"
dat += "<tr><td colspan=4><center><b>"
var/firstcat = 1
for(var/category in GLOB.loadout_items)
var/datum/loadout_catagories/LC = GLOB.loadout_items[category]
var/datum/gear/gear = GLOB.loadout_items
if(LC.donor_only)
if(gear.ckeywhitelist && gear.ckeywhitelist.len)
if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey)))
continue
if(firstcat)
firstcat = 0
else
dat += " |"
if(category == gear_tab)
dat += " <span class='linkOff'>[category]</span> "
else
dat += " <a href='?_src_=prefs;preference=gear;select_category=[category]'>[category]</a> "
dat += "</b></center></td></tr>"
var/datum/loadout_catagories/LC = GLOB.loadout_catagories[gear_tab]
dat += "<tr><td colspan=4><hr></td></tr>"
dat += "<tr><td colspan=4><b><center>[LC.catagory]</center></b></td></tr>"
dat += "<tr><td colspan=4><hr></td></tr>"
for(var/gear_name in LC.gear)
var/datum/gear/G = LC.gear[gear_name]
var/ticked = (G.name in gear)
dat += "<tr style='vertical-align:top;'><td width=15%><a style='white-space:normal;' [ticked ? "class='linkOn' " : ""]href='?_src_=prefs;preference=gear;toggle_gear=[G.name]'>[G.name]</a></td>"
dat += "<td width = 5% style='vertical-align:top'>[G.cost]</td><td>"
if(G.restricted_roles)
dat += "<font size=2>Restrictions: "
for(var/role in G.restricted_roles)
dat += role + " "
dat += "</font>"
dat += "</td><td><font size=2><i>[G.description]</i></font></td></tr>"
if(ticked)
. += "<tr><td colspan=4>"
for(var/datum/gear_tweak/tweak in G.gear_tweaks)
. += " <a href='?_src_=prefs;preference=gear;gear=[G.name];tweak=\ref[tweak]'>[tweak.get_contents(get_tweak_metadata(G, tweak))]</a>"
. += "</td></tr>"
dat += "</table>"
else
dat = citadel_dat_replace(current_tab)
@@ -533,6 +600,25 @@ GLOBAL_LIST_EMPTY(preferences_datums)
popup.set_content(dat)
popup.open(0)
//CITADEL GEAR STUFF
/datum/preferences/proc/get_gear_metadata(var/datum/gear/G)
. = gear[G.name]
if(!.)
. = list()
gear[G.name] = .
/datum/preferences/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/preferences/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
//END CITADEL GEAR STUFF
/datum/preferences/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620)
if(!SSjob)
return
@@ -1423,6 +1509,41 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("tab")
if (href_list["tab"])
current_tab = text2num(href_list["tab"])
if(href_list["toggle_gear"])
var/datum/gear/TG = GLOB.loadout_items[href_list["toggle_gear"]]
if(TG.name in TG)
TG -= TG.name
else
if(TG.donor_only)
if(TG.ckeywhitelist && TG.ckeywhitelist.len)
if(user && user.client && user.client.ckey && !(TG.ckeywhitelist.Find(user.client.ckey)))
return
var/total_cost = 0
var/list/type_blacklist = list()
for(var/gear_name in TG)
var/datum/gear/G = GLOB.loadout_items[gear_name]
if(istype(G))
if(!G.subtype_cost_overlap)
if(G.subtype_path in type_blacklist)
continue
type_blacklist += G.subtype_path
total_cost += G.cost
if((total_cost + TG.cost) <= max_gear_slots)
gear += TG.name
else if(href_list["gear"] && href_list["tweak"])
var/datum/gear/gear = GLOB.loadout_items[href_list["gear"]]
var/datum/gear_tweak/tweak = locate(href_list["tweak"])
if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks))
return
var/metadata = tweak.get_metadata(user, get_tweak_metadata(gear, tweak))
if(!metadata)
return
set_tweak_metadata(gear, tweak, metadata)
else if(href_list["select_category"])
gear_tab = href_list["select_category"]
else if(href_list["clear_loadout"])
gear.Cut()
process_citadel_prefs(user, href_list)
process_citadel_link(user, href_list)
ShowChoices(user)
@@ -1,5 +0,0 @@
/datum/gear/stethoscope
name = "Stethoscope"
category = slot_neck
path = /obj/item/clothing/neck/stethoscope
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
@@ -1,71 +0,0 @@
/datum/gear/navyblueuniformhos
name = "Head of Security navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/head_of_security/navyblue
restricted_roles = list("Head of Security")
/datum/gear/navybluehosberet
name = "Head of security's Naviblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navyhos
restricted_roles = list("Head of Security")
/datum/gear/navybluejackethos
name = "head of security's navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/hos
restricted_roles = list("Head of Security")
/datum/gear/navybluejacketofficer
name = "security officer's navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/officer
restricted_roles = list("Security Officer")
/datum/gear/navyblueofficerberet
name = "Security officer's Navyblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navyofficer
restricted_roles = list("Security Officer")
/datum/gear/navyblueuniformofficer
name = "security officer navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/security/navyblue
restricted_roles = list("Security officer")
/datum/gear/navybluejacketwarden
name = "warden navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/warden
restricted_roles = list("Warden")
/datum/gear/navybluewardenberet
name = "Warden's navyblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navywarden
restricted_roles = list("Warden")
/datum/gear/navyblueuniformwarden
name = "Warden navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/warden/navyblue
restricted_roles = list("Warden")
/datum/gear/secskirt
name = "Security skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/security/skirt
restricted_roles = list("Security Officer", "Warden", "Head of Security")
/datum/gear/hosskirt
name = "Head of security's skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/head_of_security/skirt
restricted_roles = list("Head of Security")
/datum/gear/sechud
name = "Security Hud"
category = slot_glasses
path = /obj/item/clothing/glasses/hud/security
restricted_roles = list("Security Officer", "Warden", "Head of Security")
@@ -1,13 +0,0 @@
/datum/gear/plushvar
name = "Ratvar Plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/plushvar
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/narplush
name = "Narsie Plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/narplush
cost = 5
restricted_roles = list("Chaplain")
@@ -1,24 +0,0 @@
/datum/gear/plushcarp
name = "Space carp plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/carpplushie
/datum/gear/plushliz
name = "Lizard plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/lizardplushie
/datum/gear/plushsnek
name = "Snake plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/snakeplushie
/datum/gear/plushslime
name = "Slime plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/slimeplushie
/datum/gear/dildo
name = "Customizable dildo"
category = slot_in_backpack
path = /obj/item/dildo/custom
@@ -0,0 +1,113 @@
/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/colors)
valid_colors = 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/paths)
valid_paths = 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)
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)
@@ -1,44 +0,0 @@
/datum/gear/cold
name = "Cold goggles"
category = slot_glasses
path = /obj/item/clothing/glasses/cold
/datum/gear/eyepatch
name = "Eyepatch"
category = slot_glasses
path = /obj/item/clothing/glasses/eyepatch
/datum/gear/heat
name = "Heat goggles"
category = slot_glasses
path = /obj/item/clothing/glasses/heat
/datum/gear/hipster
name = "Hipster glasses"
category = slot_glasses
path = /obj/item/clothing/glasses/regular/hipster
/datum/gear/jamjar
name = "Jamjar glasses"
category = slot_glasses
path = /obj/item/clothing/glasses/regular/jamjar
/datum/gear/monocle
name = "Monocle"
category = slot_glasses
path = /obj/item/clothing/glasses/monocle
/datum/gear/orange
name = "Orange glasses"
category = slot_glasses
path = /obj/item/clothing/glasses/orange
/datum/gear/red
name = "Red Glasses"
category = slot_glasses
path = /obj/item/clothing/glasses/red
/datum/gear/prescription
name = "Prescription glasses"
category = slot_glasses
path = /obj/item/clothing/glasses/regular
@@ -1,4 +0,0 @@
/datum/gear/fingerless
name = "Fingerless Gloves"
category = slot_gloves
path = /obj/item/clothing/gloves/fingerless
@@ -1,61 +0,0 @@
/datum/gear/cane
name = "Cane"
category = slot_hands
path = /obj/item/cane
/datum/gear/cigarettes
name = "Cigarette pack"
category = slot_hands
path = /obj/item/storage/fancy/cigarettes
/datum/gear/dice
name = "Dice bag"
category = slot_hands
path = /obj/item/storage/pill_bottle/dice
/datum/gear/eightball
name = "Magic eightball"
category = slot_hands
path = /obj/item/toy/eightball
/datum/gear/matches
name = "Matchbox"
category = slot_hands
path = /obj/item/storage/box/matches
/datum/gear/cheaplighter
name = "Cheap lighter"
category = slot_hands
path = /obj/item/lighter/greyscale
/datum/gear/cards
name = "Playing cards"
category = slot_hands
path = /obj/item/toy/cards/deck
/datum/gear/skub
name = "Skub"
category = slot_hands
path = /obj/item/skub
/datum/gear/carpplushie
name = "Space carp plushie"
category = slot_hands
path = /obj/item/toy/plush/carpplushie
/datum/gear/wallet
name = "Wallet"
category = slot_hands
path = /obj/item/storage/wallet
/datum/gear/flask
name = "Flask"
category = slot_hands
path = /obj/item/reagent_containers/food/drinks/flask
cost = 2
/datum/gear/zippolighter
name = "Zippo Lighter"
category = slot_hands
path = /obj/item/lighter
cost = 2
@@ -3,9 +3,55 @@
// slot_to_string(slot) proc in hippiestation/code/_HELPERS/mobs.dm to show the category name in preferences menu) and path (the actual item path).
// description defaults to the path initial desc, cost defaults to 1 point but if you think your item requires more points, the framework allows that
// and lastly, restricted_roles list allows you to let someone spawn with certain items only if the job they spawned with is on the list.
GLOBAL_LIST_EMPTY(loadout_catagories)
GLOBAL_LIST_EMPTY(loadout_items)
/datum/loadout_category
var/category = ""
var/list/gear = list()
var/donor_only = FALSE
/datum/loadout_category/New(cat)
category = cat
..()
/proc/initialize_global_loadout_items()
LAZYINITLIST(GLOB.loadout_items)
//create a list of gear datums to sort
for(var/geartype in subtypesof(/datum/gear))
var/datum/gear/G = geartype
var/use_name = initial(G.name)
var/use_category = initial(G.sort_category)
if(G == initial(G.subtype_path))
continue
if(!use_name)
error("Loadout - Missing display name: [G]")
continue
if(!initial(G.cost))
error("Loadout - Missing cost: [G]")
continue
if(!initial(G.path))
error("Loadout - Missing path definition: [G]")
continue
if(!GLOB.loadout_catagories[use_category])
GLOB.loadout_catagories[use_category] = new /datum/loadout_category(use_category)
var/datum/loadout_category/LC = GLOB.loadout_catagories[use_category]
if(initial(G.donor_only))
LC.donor_only = TRUE
GLOB.loadout_items[use_name] = new geartype
LC.gear[use_name] = GLOB.loadout_items[use_name]
GLOB.loadout_catagories = sortAssoc(loadout_catagories)
for(var/loadout_category in GLOB.loadout_catagories)
var/datum/loadout_category/LC = GLOB.loadout_catagories[loadout_category]
LC.gear = sortAssoc(LC.gear)
return 1
/*
/proc/initialize_global_loadout_items()
LAZYINITLIST(GLOB.loadout_items)
for(var/item in subtypesof(/datum/gear))
@@ -13,19 +59,41 @@ GLOBAL_LIST_EMPTY(loadout_items)
if(!GLOB.loadout_items[slot_to_string(I.category)])
LAZYINITLIST(GLOB.loadout_items[slot_to_string(I.category)])
LAZYSET(GLOB.loadout_items[slot_to_string(I.category)], I.name, I)
*/
/datum/gear
var/name
var/category
var/slot
var/description
var/path //item-to-spawn path
var/cost = 1 //normally, each loadout costs a single point.
var/list/restricted_roles
var/list/ckeywhitelist
var/sort_category = "General"
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
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/donor_only = FALSE // if it's only available to donors
/datum/gear/New()
..()
if(!description && path)
var/obj/O = path
description = initial(O.desc)
/datum/gear_data
var/path
var/location
/datum/gear_data/New(npath, nlocation)
path = npath
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]"])
return item
@@ -0,0 +1,170 @@
/datum/gear/accessory
subtype_path = /datum/gear/accessory
slot = slot_in_backpack
sort_category = "Accessories"
/datum/gear/accessory/cane
name = "Cane"
path = /obj/item/cane
/datum/gear/accessory/cigarettes
name = "Cigarette pack"
path = /obj/item/storage/fancy/cigarettes
/datum/gear/accessory/dice
name = "Dice bag"
path = /obj/item/storage/pill_bottle/dice
/datum/gear/accessory/eightball
name = "Magic eightball"
path = /obj/item/toy/eightball
/datum/gear/accessory/matches
name = "Matchbox"
path = /obj/item/storage/box/matches
/datum/gear/accessory/cheaplighter
name = "Cheap lighter"
path = /obj/item/lighter/greyscale
/datum/gear/accessory/cards
name = "Playing cards"
path = /obj/item/toy/cards/deck
/datum/gear/accessory/skub
name = "Skub"
path = /obj/item/skub
/datum/gear/accessory/carpplushie
name = "Space carp plushie"
path = /obj/item/toy/plush/carpplushie
/datum/gear/accessory/wallet
name = "Wallet"
path = /obj/item/storage/wallet
/datum/gear/accessory/flask
name = "Flask"
path = /obj/item/reagent_containers/food/drinks/flask
cost = 2
/datum/gear/accessory/zippolighter
name = "Zippo Lighter"
path = /obj/item/lighter
cost = 2
/datum/gear/accessory/stethoscope
name = "Stethoscope"
slot = slot_neck
path = /obj/item/clothing/neck/stethoscope
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
/datum/gear/accessory/plush
subtype_path = /datum/gear/accessory/plush
sort_category = "Toys"
/datum/gear/accessory/plush/plushvar
name = "Ratvar Plushie"
path = /obj/item/toy/plush/plushvar
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/accessory/plush/narplush
name = "Narsie Plushie"
path = /obj/item/toy/plush/narplush
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/accessory/plush/plushcarp
name = "Space carp plushie"
path = /obj/item/toy/plush/carpplushie
/datum/gear/accessory/plush/plushliz
name = "Lizard plushie"
path = /obj/item/toy/plush/lizardplushie
/datum/gear/accessory/plush/plushsnek
name = "Snake plushie"
path = /obj/item/toy/plush/snakeplushie
/datum/gear/accessory/plush/plushslime
name = "Slime plushie"
path = /obj/item/toy/plush/slimeplushie
/datum/gear/accessory/plush/dildo
name = "Customizable dildo"
path = /obj/item/dildo/custom
/datum/gear/accessory/tie
subtype_path = /datum/gear/accessory/tie
slot = slot_neck
subtype_cost_overlap = FALSE
sort_category = "Neckwear"
/datum/gear/accessory/tie/bluetie
name = "Blue tie"
path = /obj/item/clothing/neck/tie/blue
/datum/gear/accessory/tie/redtie
name = "Red tie"
path = /obj/item/clothing/neck/tie/red
/datum/gear/accessory/tie/blacktie
name = "Black tie"
path = /obj/item/clothing/neck/tie/black
/datum/gear/accessory/tie/collar
name = "Collar"
path = /obj/item/clothing/neck/petcollar
/datum/gear/accessory/tie/scarf
name = "White scarf"
path = /obj/item/clothing/neck/scarf
/datum/gear/accessory/tie/blackscarf
name = "Black scarf"
path = /obj/item/clothing/neck/scarf/black
/datum/gear/accessory/tie/redscarf
name = "Red scarf"
path = /obj/item/clothing/neck/scarf/red
/datum/gear/accessory/tie/greenscarf
name = "Green scarf"
path = /obj/item/clothing/neck/scarf/green
/datum/gear/accessory/tie/darkbluescarf
name = "Dark blue scarf"
path = /obj/item/clothing/neck/scarf/darkblue
/datum/gear/accessory/tie/purplescarf
name = "Purple scarf"
path = /obj/item/clothing/neck/scarf/purple
/datum/gear/accessory/tie/yellowscarf
name = "Yellow scarf"
path = /obj/item/clothing/neck/scarf/yellow
/datum/gear/accessory/tie/orangescarf
name = "Orange scarf"
path = /obj/item/clothing/neck/scarf/orange
/datum/gear/accessory/tie/cyanscarf
name = "Cyan scarf"
path = /obj/item/clothing/neck/scarf/cyan
/datum/gear/accessory/tie/stripedredscarf
name = "Striped red scarf"
path = /obj/item/clothing/neck/stripedredscarf
/datum/gear/accessory/tie/stripedbluescarf
name = "Striped blue scarf"
path = /obj/item/clothing/neck/stripedbluescarf
/datum/gear/accessory/tie/stripedgreenscarf
name = "Striped green scarf"
path = /obj/item/clothing/neck/stripedgreenscarf
/datum/gear/accessory/tie/headphones
name = "Headphones"
path = /obj/item/clothing/ears/headphones
@@ -0,0 +1,47 @@
/datum/gear/cosmetics
sort_category = "Cosmetics"
subtype_path = /datum/gear/accessory
/datum/gear/cosmetics/glasses
slot = slot_glasses
/datum/gear/cosmetics/glasses/cold
name = "Cold goggles"
path = /obj/item/clothing/glasses/cold
/datum/gear/cosmetics/glasses/eyepatch
name = "Eyepatch"
path = /obj/item/clothing/glasses/eyepatch
/datum/gear/cosmetics/glasses/heat
name = "Heat goggles"
path = /obj/item/clothing/glasses/heat
datum/gear/cosmetics/glasses/hipster
name = "Hipster glasses"
path = /obj/item/clothing/glasses/regular/hipster
datum/gear/cosmetics/glasses/jamjar
name = "Jamjar glasses"
path = /obj/item/clothing/glasses/regular/jamjar
datum/gear/cosmetics/glasses/monocle
name = "Monocle"
path = /obj/item/clothing/glasses/monocle
datum/gear/cosmetics/glasses/orange
name = "Orange glasses"
path = /obj/item/clothing/glasses/orange
datum/gear/cosmetics/glasses/red
name = "Red Glasses"
path = /obj/item/clothing/glasses/red
datum/gear/cosmetics/glasses/prescription
name = "Prescription glasses"
path = /obj/item/clothing/glasses/regular
datum/gear/cosmetics/glasses/sechud
name = "Security Hud"
path = /obj/item/clothing/glasses/hud/security
restricted_roles = list("Security Officer", "Warden", "Head of Security")
@@ -1,224 +1,223 @@
//This is the file that handles donator loadout items.
/datum/gear/pingcoderfailsafe
/datum/gear/donor
donor_only = TRUE
sort_category = "Donor"
subtype_path = /datum/gear/donor
/datum/gear/donor/pingcoderfailsafe
name = "IF YOU SEE THIS, PING A CODER RIGHT NOW!"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/bikehorn/golden
ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard
/datum/gear/donortestingbikehorn
/datum/gear/donor/donortestingbikehorn
name = "Donor item testing bikehorn"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/bikehorn
ckeywhitelist = list("jayehh","deathride58")
ckeywhitelist = list("jayehh","deathride58","poojawa")
/datum/gear/kevhorn
/datum/gear/donor/kevhorn
name = "Airhorn"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/bikehorn/airhorn
ckeywhitelist = list("kevinz000")
/datum/gear/cebusoap
/datum/gear/donor/cebusoap
name = "Cebutris' soap"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/custom/ceb_soap
ckeywhitelist = list("cebutris")
/datum/gear/kiaracloak
/datum/gear/donor/kiaracloak
name = "Kiara's cloak"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/cloak/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaracollar
/datum/gear/donor/kiaracollar
name = "Kiara's collar"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/petcollar/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaramedal
/datum/gear/donor/kiaramedal
name = "Insignia of Steele"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/clothing/accessory/medal/steele
ckeywhitelist = list("inferno707")
/datum/gear/sexymimemask
/datum/gear/donor/sexymimemask
name = "The hollow heart"
category = slot_wear_mask
slot = slot_wear_mask
path = /obj/item/clothing/mask/sexymime
ckeywhitelist = list("inferno707")
/datum/gear/engravedzippo
/datum/gear/donor/engravedzippo
name = "Engraved zippo"
category = slot_hands
slot = slot_hands
path = /obj/item/lighter/gold
ckeywhitelist = list("dirtyoldharry")
/datum/gear/geisha
/datum/gear/donor/geisha
name = "Geisha suit"
category = slot_w_uniform
slot = slot_w_uniform
path = /obj/item/clothing/under/geisha
ckeywhitelist = list("atiefling")
/datum/gear/specialscarf
/datum/gear/donor/specialscarf
name = "Special scarf"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/scarf/zomb
ckeywhitelist = list("zombierobin")
/datum/gear/redmadcoat
/datum/gear/donor/redmadcoat
name = "The Mad's labcoat"
category = slot_wear_suit
slot = slot_wear_suit
path = /obj/item/clothing/suit/toggle/labcoat/mad/red
ckeywhitelist = list("zombierobin")
/datum/gear/santahat
/datum/gear/donor/santahat
name = "Santa hat"
category = slot_head
slot = slot_head
path = /obj/item/clothing/head/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/reindeerhat
/datum/gear/donor/reindeerhat
name = "Reindeer hat"
category = slot_head
slot = slot_head
path = /obj/item/clothing/head/hardhat/reindeer/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treeplushie
/datum/gear/donor/treeplushie
name = "Christmas tree plushie"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/toy/plush/tree
ckeywhitelist = list("illotafv")
/datum/gear/santaoutfit
/datum/gear/donor/santaoutfit
name = "Santa costume"
category = slot_wear_suit
slot = slot_wear_suit
path = /obj/item/clothing/suit/space/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treecloak
/datum/gear/donor/treecloak
name = "Christmas tree cloak"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/cloak/festive
ckeywhitelist = list("illotafv")
/datum/gear/carrotplush
/datum/gear/donor/carrotplush
name = "Carrot plushie"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/toy/plush/carrot
ckeywhitelist = list("improvedname")
/datum/gear/carrotcloak
/datum/gear/donor/carrotcloak
name = "Carrot cloak"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/cloak/carrot
ckeywhitelist = list("improvedname")
/datum/gear/albortorosamask
/datum/gear/donor/albortorosamask
name = "Alborto Rosa mask"
category = slot_wear_mask
slot = slot_wear_mask
path = /obj/item/clothing/mask/luchador/zigfie
ckeywhitelist = list("zigfie")
/datum/gear/mankini
/datum/gear/donor/mankini
name = "Mankini"
category = slot_w_uniform
slot = slot_w_uniform
path = /obj/item/clothing/under/mankini
ckeywhitelist = list("zigfie")
/datum/gear/pinkshoes
/datum/gear/donor/pinkshoes
name = "Pink shoes"
category = slot_shoes
slot = slot_shoes
path = /obj/item/clothing/shoes/sneakers/pink
ckeywhitelist = list("zigfie")
/datum/gear/reecesgreatcoat
/datum/gear/donor/reecesgreatcoat
name = "Reece's Great Coat"
category = slot_wear_suit
slot = slot_wear_suit
path = /obj/item/clothing/suit/trenchcoat/green
ckeywhitelist = list("geemiesif")
/datum/gear/russianflask
/datum/gear/donor/russianflask
name = "Russian flask"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/reagent_containers/food/drinks/flask/russian
cost = 2
ckeywhitelist = list("slomka")
/datum/gear/stalkermask
/datum/gear/donor/stalkermask
name = "S.T.A.L.K.E.R. mask"
category = slot_wear_mask
slot = slot_wear_mask
path = /obj/item/clothing/mask/gas/stalker
ckeywhitelist = list("slomka")
/datum/gear/stripedcollar
/datum/gear/donor/stripedcollar
name = "Striped collar"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/petcollar/stripe
ckeywhitelist = list("jademanique")
/datum/gear/performersoutfit
/datum/gear/donor/performersoutfit
name = "Bluish performer's outfit"
category = slot_w_uniform
slot = slot_w_uniform
path = /obj/item/clothing/under/singery/custom
ckeywhitelist = list("killer402402")
/datum/gear/vermillion
/datum/gear/donor/vermillion
name = "Vermillion clothing"
category = slot_w_uniform
slot = slot_w_uniform
path = /obj/item/clothing/suit/vermillion
ckeywhitelist = list("fractious")
/datum/gear/AM4B
/datum/gear/donor/AM4B
name = "Foam Force AM4-B"
category = slot_in_backpack
slot = slot_in_backpack
path = /obj/item/gun/ballistic/automatic/AM4B
ckeywhitelist = list("zeronetalpha")
/datum/gear/carrotsatchel
/datum/gear/donor/carrotsatchel
name = "Carrot Satchel"
category = slot_hands
slot = slot_hands
path = /obj/item/storage/backpack/satchel/carrot
ckeywhitelist = list("improvedname")
/datum/gear/naomisweater
/datum/gear/donor/naomisweater
name = "worn black sweater"
category = slot_w_uniform
slot = slot_w_uniform
path = /obj/item/clothing/under/bb_sweater/black/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/naomicollar
/datum/gear/donor/naomicollar
name = "worn pet collar"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/petcollar/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/gladiator
/datum/gear/donor/gladiator
name = "Gladiator Armor"
category = slot_wear_suit
slot = slot_wear_suit
path = /obj/item/clothing/under/gladiator
ckeywhitelist = list("aroche")
/datum/gear/bloodredtie
/datum/gear/donor/bloodredtie
name = "Blood Red Tie"
category = slot_neck
slot = slot_neck
path = /obj/item/clothing/neck/tie/bloodred
ckeywhitelist = list("kyutness")
/datum/gear/puffydress
/datum/gear/donor/puffydress
name = "Puffy Dress"
category = slot_wear_suit
slot = slot_wear_suit
path = /obj/item/clothing/suit/puffydress
//ckeywhitelist = //Don't know their ckey yet
/datum/gear/labredblack
/datum/gear/donor/labredblack
name = "Black and Red Coat"
category = slot_wear_suit
slot = slot_wear_suit
path = /obj/item/clothing/suit/toggle/labcoat/labredblack
ckeywhitelist = list("blakeryan")
@@ -0,0 +1,8 @@
/datum/gear/gloves
subtype_path = /datum/gear/gloves
slot = slot_gloves
sort_category = "Gloves"
/datum/gear/gloves/fingerless
name = "Fingerless Gloves"
path = /obj/item/clothing/gloves/fingerless
@@ -1,74 +1,91 @@
/datum/gear/baseball
/datum/gear/hat
subtype_path = /datum/gear/hat
slot = slot_head
sort_category = "Headwear"
/datum/gear/hat/balaclava
name = "Balaclava"
slot = slot_in_backpack
cost = 3
path = /obj/item/clothing/mask/balaclava
/datum/gear/hat/baseball
name = "Ballcap"
category = slot_head
path = /obj/item/clothing/head/soft/mime
/datum/gear/beanie
/datum/gear/hat/beanie
name = "Beanie"
category = slot_head
path = /obj/item/clothing/head/beanie
/datum/gear/beret
/datum/gear/hat/beret
name = "Black beret"
category = slot_head
path = /obj/item/clothing/head/beret/black
/datum/gear/flatcap
/datum/gear/hat/flatcap
name = "Flat cap"
category = slot_head
path = /obj/item/clothing/head/flatcap
/datum/gear/pirate
/datum/gear/hat/pirate
name = "Pirate hat"
category = slot_head
path = /obj/item/clothing/head/pirate
/datum/gear/rice_hat
/datum/gear/hat/rice_hat
name = "Rice hat"
category = slot_head
path = /obj/item/clothing/head/rice_hat
/datum/gear/ushanka
/datum/gear/hat/ushanka
name = "Ushanka"
category = slot_head
path = /obj/item/clothing/head/ushanka
/datum/gear/slime
/datum/gear/hat/slime
name = "Slime hat"
category = slot_head
path = /obj/item/clothing/head/collectable/slime
/datum/gear/fedora
/datum/gear/hat/fedora
name = "Fedora"
category = slot_head
path = /obj/item/clothing/head/fedora
/datum/gear/that
/datum/gear/hat/that
name = "Top Hat"
category = slot_head
path = /obj/item/clothing/head/that
/datum/gear/hat/navy
subtype_path = datum/gear/hat/navy
subtype_cost_overlap = FALSE
sort_category = "Job Specific Headwear"
/datum/gear/hat/navy/bluehosberet
name = "Head of security's Navy beret"
path = /obj/item/clothing/head/beret/sec/navyhos
restricted_roles = list("Head of Security")
/datum/gear/hat/navy/blueofficerberet
name = "Security officer's Navyblue beret"
path = /obj/item/clothing/head/beret/sec/navyofficer
restricted_roles = list("Security Officer")
/datum/gear/hat/navy/bluewardenberet
name = "Warden's navyblue beret"
path = /obj/item/clothing/head/beret/sec/navywarden
restricted_roles = list("Warden")
//trek fancy Hats!
/datum/gear/trekcap
/datum/gear/hat/navy/trekcap
name = "Federation Officer's Cap"
category = slot_head
path = /obj/item/clothing/head/caphat/formal/fedcover
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcapmedisci
/datum/gear/hat/navy/trekcap/medisci
name = "Federation Officer's Cap"
category = slot_head
path = /obj/item/clothing/head/caphat/formal/fedcover/medsci
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekcapeng
/datum/gear/hat/navy/trekcap/eng
name = "Federation Officer's Cap"
category = slot_head
path = /obj/item/clothing/head/caphat/formal/fedcover/eng
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/trekcapsec
/datum/gear/hat/navy/trekcap/sec
name = "Federation Officer's Cap"
category = slot_head
path = /obj/item/clothing/head/caphat/formal/fedcover/sec
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
@@ -1,39 +1,37 @@
/datum/gear/laceup
/datum/gear/shoes/shoes
subtype_path = /datum/gear/shoes/shoes
slot = slot_shoes
sort_category = "Shoes"
/datum/gear/shoes/laceup
name = "Laceup shoes"
category = slot_shoes
path = /obj/item/clothing/shoes/laceup
/datum/gear/workboots
/datum/gear/shoes/workboots
name = "Work boots"
category = slot_shoes
path = /obj/item/clothing/shoes/workboots
/datum/gear/jackboots
/datum/gear/shoes/jackboots
name = "Jackboots"
category = slot_shoes
path = /obj/item/clothing/shoes/jackboots
/datum/gear/winterboots
/datum/gear/shoes/winterboots
name = "Winter boots"
category = slot_shoes
path = /obj/item/clothing/shoes/winterboots
/datum/gear/sandals
/datum/gear/shoes/sandals
name = "Sandals"
category = slot_shoes
path = /obj/item/clothing/shoes/sandal
/datum/gear/blackshoes
/datum/gear/shoes/blackshoes
name = "Black shoes"
category = slot_shoes
path = /obj/item/clothing/shoes/sneakers/black
/datum/gear/brownshoes
/datum/gear/shoes/brownshoes
name = "Brown shoes"
category = slot_shoes
path = /obj/item/clothing/shoes/sneakers/brown
/datum/gear/whiteshoes
/datum/gear/shoes/whiteshoes
name = "White shoes"
category = slot_shoes
path = /obj/item/clothing/shoes/sneakers/white
@@ -1,102 +1,115 @@
/datum/gear/poncho
/datum/gear/suit/suit
subtype_path = /datum/gear/suit/suit
slot = slot_wear_suit
cost = 2
sort_category = "External Wear"
/datum/gear/suit/poncho
name = "Poncho"
category = slot_wear_suit
path = /obj/item/clothing/suit/poncho
/datum/gear/ponchogreen
/datum/gear/suit/ponchogreen
name = "Green poncho"
category = slot_wear_suit
path = /obj/item/clothing/suit/poncho/green
/datum/gear/ponchored
/datum/gear/suit/ponchored
name = "Red poncho"
category = slot_wear_suit
path = /obj/item/clothing/suit/poncho/red
/datum/gear/jacketbomber
/datum/gear/suit/jacketbomber
name = "Bomber jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket
/datum/gear/jacketleather
/datum/gear/suit/jacketleather
name = "Leather jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/leather
/datum/gear/overcoatleather
/datum/gear/suit/overcoatleather
name = "Leather overcoat"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/leather/overcoat
/datum/gear/jacketpuffer
/datum/gear/suit/jacketpuffer
name = "Puffer jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/puffer
/datum/gear/vestpuffer
/datum/gear/suit/vestpuffer
name = "Puffer vest"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/puffer/vest
/datum/gear/jacketlettermanbrown
/datum/gear/suit/jacketlettermanbrown
name = "Brown letterman jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/letterman
/datum/gear/jacketlettermanred
/datum/gear/suit/jacketlettermanred
name = "Red letterman jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/letterman_red
/datum/gear/jacketlettermanNT
/datum/gear/suit/jacketlettermanNT
name = "Nanotrasen letterman jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/letterman_nanotrasen
/datum/gear/coat
/datum/gear/suit/coat
name = "Winter coat"
category = slot_wear_suit
path = /obj/item/clothing/suit/hooded/wintercoat
/datum/gear/militaryjacket
/datum/gear/suit/militaryjacket
name = "Military Jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/jacket/miljacket
/datum/gear/ianshirt
/datum/gear/suit/ianshirt
name = "Ian Shirt"
category = slot_wear_suit
path = /obj/item/clothing/suit/ianshirt
/datum/gear/trekds9_coat
name = "DS9 Overcoat (use uniform)"
category = slot_wear_suit
//Job Coats
/datum/gear/suit/job
subtype_path = /datum/gear/suit/job
subtype_cost_overlap = FALSE
sort_category = "Job Specific Coats"
/datum/gear/suit/job/sec/navybluejackethos
name = "head of security's navyblue jacket"
path = /obj/item/clothing/suit/security/hos
restricted_roles = list("Head of Security")
/datum/gear/suit/job/sec/navybluejacketofficer
name = "security officer's navyblue jacket"
path = /obj/item/clothing/suit/security/officer
restricted_roles = list("Security Officer")
/datum/gear/suit/job/sec/navybluejacketwarden
name = "warden navyblue jacket"
path = /obj/item/clothing/suit/security/warden
restricted_roles = list("Warden")
//Trek Coats
/datum/gear/suit/trek
subtype_path = /datum/gear/suit/trek
subtype_cost_overlap = FALSE
sort_category = "Trek Coats"
/datum/gear/suit/trek/ds9_coat
name = "DS9 Overcoat"
path = /obj/item/clothing/suit/storage/trek/ds9
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster",
"Medical Doctor","Chemist","Virologist","Geneticist","Scientist", "Roboticist",
"Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer",
"Cargo Technician", "Shaft Miner") //everyone who actually deserves a job.
//Federation jackets from movies
/datum/gear/trekcmdcap
/datum/gear/suit/trek/cap
name = "fed (movie) uniform, Captain"
category = slot_wear_suit
path = /obj/item/clothing/suit/storage/fluff/fedcoat/capt
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcmdmov
/datum/gear/suit/trek/sec
name = "fed (movie) uniform, sec"
category = slot_wear_suit
path = /obj/item/clothing/suit/storage/fluff/fedcoat
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer")
/datum/gear/trekmedscimov
/datum/gear/suit/trek/medsci
name = "fed (movie) uniform, med/sci"
category = slot_wear_suit
path = /obj/item/clothing/suit/storage/fluff/fedcoat/medsci
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengmov
/datum/gear/suit/trek/eng
name = "fed (movie) uniform, ops/eng"
category = slot_wear_suit
path = /obj/item/clothing/suit/storage/fluff/fedcoat/eng
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster")
@@ -1,220 +1,240 @@
/datum/gear/suitblack
name = "Black suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket
// Uniform slot
/datum/gear/uniform
subtype_path = /datum/gear/uniform
slot = slot_w_uniform
cost = 2
sort_category = "Uniforms and Casual Dress"
/datum/gear/suitgreen
name = "Green suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket/green
/datum/gear/suitred
name = "Red suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket/red
/datum/gear/suitcharcoal
name = "Charcoal suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket/charcoal
/datum/gear/suitnavy
name = "Navy suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket/navy
/datum/gear/suitburgundy
name = "Burgundy suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket/burgundy
/datum/gear/suittan
name = "Tan suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket/tan
/datum/gear/suitwhite
name = "White suit"
category = slot_w_uniform
path = /obj/item/clothing/under/suit_jacket/white
/datum/gear/assistantformal
name = "Assistant's formal uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/assistantformal
/datum/gear/maidcostume
name = "Maid costume"
category = slot_w_uniform
path = /obj/item/clothing/under/maid
/datum/gear/mailmanuniform
name = "Mailman's jumpsuit"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/mailman
/datum/gear/skirtblack
name = "Black skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/skirt/black
/datum/gear/skirtblue
name = "Blue skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/skirt/blue
/datum/gear/skirtred
name = "Red skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/skirt/red
/datum/gear/skirtpurple
name = "Purple skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/skirt/purple
/datum/gear/kilt
name = "Kilt"
category = slot_w_uniform
path = /obj/item/clothing/under/kilt
/datum/gear/camoshorts
name = "Camo Pants"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/camo
/datum/gear/bjeans
name = "Black Jeans"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/blackjeans
/datum/gear/cjeans
name = "Classic Jeans"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/classicjeans
/datum/gear/khaki
name = "Khaki Pants"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/khaki
/datum/gear/wpants
name = "White Pants"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/white
/datum/gear/rpants
name = "Red Pants"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/red
/datum/gear/tpants
name = "Tan Pants"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/tan
/datum/gear/trpants
name = "Track Pants"
category = slot_w_uniform
path = /obj/item/clothing/under/pants/track
/datum/gear/turtleneck
/datum/gear/uniform/turtleneck
name = "Tactitool Turtleneck"
category = slot_w_uniform
path = /obj/item/clothing/under/syndicate/cosmetic
/datum/gear/uniform/suitblack
name = "Black suit"
path = /obj/item/clothing/under/suit_jacket
/datum/gear/uniform/suitgreen
name = "Green suit"
path = /obj/item/clothing/under/suit_jacket/green
/datum/gear/uniform/suitred
name = "Red suit"
path = /obj/item/clothing/under/suit_jacket/red
/datum/gear/uniform/suitcharcoal
name = "Charcoal suit"
path = /obj/item/clothing/under/suit_jacket/charcoal
/datum/gear/uniform/suitnavy
name = "Navy suit"
path = /obj/item/clothing/under/suit_jacket/navy
/datum/gear/uniform/suitburgundy
name = "Burgundy suit"
path = /obj/item/clothing/under/suit_jacket/burgundy
/datum/gear/uniform/suittan
name = "Tan suit"
path = /obj/item/clothing/under/suit_jacket/tan
/datum/gear/uniform/suitwhite
name = "White suit"
path = /obj/item/clothing/under/suit_jacket/white
/datum/gear/uniform/assistantformal
name = "Assistant's formal uniform"
path = /obj/item/clothing/under/assistantformal
/datum/gear/uniform/maidcostume
name = "Maid costume"
path = /obj/item/clothing/under/maid
/datum/gear/uniform/mailmanuniform
name = "Mailman's jumpsuit"
path = /obj/item/clothing/under/rank/mailman
/datum/gear/uniform/skirt
subtype_path = /datum/gear/uniform/skirt
subtype_cost_overlap = FALSE
/datum/gear/uniform/skirt/black
name = "Black skirt"
path = /obj/item/clothing/under/skirt/black
/datum/gear/uniform/skirt/blue
name = "Blue skirt"
path = /obj/item/clothing/under/skirt/blue
/datum/gear/uniform/skirt/red
name = "Red skirt"
path = /obj/item/clothing/under/skirt/red
/datum/gear/uniform/skirt/purple
name = "Purple skirt"
path = /obj/item/clothing/under/skirt/purple
/datum/gear/uniform/skirt/kilt
name = "Kilt"
path = /obj/item/clothing/under/kilt
/datum/gear/uniform/pants
subtype_path = /datum/gear/uniform/pants
sort_category = "Pants"
/datum/gear/uniform/pants/camoshorts
name = "Camo Pants"
path = /obj/item/clothing/under/pants/camo
/datum/gear/uniform/pants/bjeans
name = "Black Jeans"
path = /obj/item/clothing/under/pants/blackjeans
/datum/gear/uniform/pants/cjeans
name = "Classic Jeans"
path = /obj/item/clothing/under/pants/classicjeans
/datum/gear/uniform/pants/khaki
name = "Khaki Pants"
path = /obj/item/clothing/under/pants/khaki
/datum/gear/uniform/pants/wpants
name = "White Pants"
path = /obj/item/clothing/under/pants/white
/datum/gear/uniform/pants/rpants
name = "Red Pants"
path = /obj/item/clothing/under/pants/red
/datum/gear/uniform/pants/tpants
name = "Tan Pants"
path = /obj/item/clothing/under/pants/tan
/datum/gear/uniform/pants/trpants
name = "Track Pants"
path = /obj/item/clothing/under/pants/track
/datum/gear/uniform/job
subtype_path = /datum/gear/uniform/job
subtype_cost_overlap = FALSE
sort_category = "Job Specific Uniformss"
/datum/gear/uniform/job/sec
subtype_path = /datum/gear/uniform/job/sec
/datum/gear/uniform/job/sec/navyblueuniformhos
name = "Head of Security navyblue uniform"
path = /obj/item/clothing/under/rank/head_of_security/navyblue
restricted_roles = list("Head of Security")
/datum/gear/uniform/job/sec/navyblueuniformofficer
name = "security officer navyblue uniform"
path = /obj/item/clothing/under/rank/security/navyblue
restricted_roles = list("Security officer")
/datum/gear/uniform/job/sec/navyblueuniformwarden
name = "Warden navyblue uniform"
path = /obj/item/clothing/under/rank/warden/navyblue
restricted_roles = list("Warden")
/datum/gear/uniform/job/sec/secskirt
name = "Security skirt"
path = /obj/item/clothing/under/rank/security/skirt
restricted_roles = list("Security Officer", "Warden", "Head of Security")
/datum/gear/uniform/job/sec/hosskirt
name = "Head of security's skirt"
path = /obj/item/clothing/under/rank/head_of_security/skirt
restricted_roles = list("Head of Security")
// Trekie things
/datum/gear/uniform/trek
sort_category = "Trek Uniforms"
subtype_path = /datum/gear/uniform/trek
subtype_cost_overlap = FALSE
/datum/gear/uniform/trek/cmd
subtype_path = /datum/gear/uniform/trek/cmd
/datum/gear/uniform/trek/medsci
subtype_path = /datum/gear/uniform/trek/medsci
/datum/gear/uniform/trek/eng
subtype_path = /datum/gear/uniform/trek/eng
//TOS
/datum/gear/trekcmdtos
/datum/gear/uniform/trek/cmd/tos
name = "TOS uniform, cmd"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/command
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscitos
/datum/gear/uniform/trek/medsci/tos
name = "TOS uniform, med/sci"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/medsci
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengtos
/datum/gear/uniform/trek/eng/tos
name = "TOS uniform, ops/sec"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/engsec
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//TNG
/datum/gear/trekcmdtng
/datum/gear/uniform/trek/cmd/tng
name = "TNG uniform, cmd"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/command/next
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscitng
/datum/gear/uniform/trek/medsci/tng
name = "TNG uniform, med/sci"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/medsci/next
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengtng
/datum/gear/uniform/trek/eng/tng
name = "TNG uniform, ops/sec"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/engsec/next
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//VOY
/datum/gear/trekcmdvoy
/datum/gear/uniform/trek/cmd/voy
name = "VOY uniform, cmd"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/command/voy
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscivoy
/datum/gear/uniform/trek/medsci/voy
name = "VOY uniform, med/sci"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/medsci/voy
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengvoy
/datum/gear/uniform/trek/eng/voy
name = "VOY uniform, ops/sec"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/engsec/voy
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//DS9
/datum/gear/trekcmdds9
/datum/gear/uniform/trek/cmd/ds9
name = "DS9 uniform, cmd"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/command/ds9
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscids9
/datum/gear/uniform/trek/medsci/ds9
name = "DS9 uniform, med/sci"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/medsci/ds9
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengds9
/datum/gear/uniform/trek/eng/ds9
name = "DS9 uniform, ops/sec"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/engsec/ds9
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//ENT
/datum/gear/trekcmdent
/datum/gear/uniform/trek/cmd/ent
name = "ENT uniform, cmd"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/command/ent
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscient
/datum/gear/uniform/trek/medsci/ent
name = "ENT uniform, med/sci"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/medsci/ent
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengent
/datum/gear/uniform/trek/eng/ent
name = "ENT uniform, ops/sec"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/trek/engsec/ent
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
@@ -1,4 +0,0 @@
/datum/gear/balaclava
name = "Balaclava"
category = slot_wear_mask
path = /obj/item/clothing/mask/balaclava
@@ -1,84 +0,0 @@
/datum/gear/bluetie
name = "Blue tie"
category = slot_neck
path = /obj/item/clothing/neck/tie/blue
/datum/gear/redtie
name = "Red tie"
category = slot_neck
path = /obj/item/clothing/neck/tie/red
/datum/gear/blacktie
name = "Black tie"
category = slot_neck
path = /obj/item/clothing/neck/tie/black
/datum/gear/collar
name = "Collar"
category = slot_neck
path = /obj/item/clothing/neck/petcollar
/datum/gear/scarf
name = "White scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf
/datum/gear/blackscarf
name = "Black scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/black
/datum/gear/redscarf
name = "Red scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/red
/datum/gear/greenscarf
name = "Green scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/green
/datum/gear/darkbluescarf
name = "Dark blue scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/darkblue
/datum/gear/purplescarf
name = "Purple scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/purple
/datum/gear/yellowscarf
name = "Yellow scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/yellow
/datum/gear/orangescarf
name = "Orange scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/orange
/datum/gear/cyanscarf
name = "Cyan scarf"
category = slot_neck
path = /obj/item/clothing/neck/scarf/cyan
/datum/gear/stripedredscarf
name = "Striped red scarf"
category = slot_neck
path = /obj/item/clothing/neck/stripedredscarf
/datum/gear/stripedbluescarf
name = "Striped blue scarf"
category = slot_neck
path = /obj/item/clothing/neck/stripedbluescarf
/datum/gear/stripedgreenscarf
name = "Striped green scarf"
category = slot_neck
path = /obj/item/clothing/neck/stripedgreenscarf
/datum/gear/headphones
name = "Headphones"
category = slot_neck
path = /obj/item/clothing/ears/headphones
@@ -3,11 +3,7 @@
#define BACKPACK_SLOT_AMT 4
/datum/preferences
//gear
var/gear_points = 10
var/list/gear_categories
var/list/chosen_gear
var/gear_tab
//pref vars
var/screenshake = 100
@@ -261,58 +257,7 @@
. += "<b>Egg Size:</b><a href='?_src_=prefs;preference=egg_size;task=input'>[features["eggsack_egg_size"]]\" Diameter</a>"
. += "</td>"
*/
. += "</td></tr></table>"
if(current_tab == 3)
if(!gear_tab)
gear_tab = GLOB.loadout_items[1]
. += "<table align='center' width='100%'>"
. += "<tr><td colspan=4><center><b><font color='[gear_points == 0 ? "#E67300" : "#3366CC"]'>[gear_points]</font> loadout points remaining.</b> \[<a href='?_src_=prefs;preference=gear;clear_loadout=1'>Clear Loadout</a>\]</center></td></tr>"
. += "<tr><td colspan=4><center>You can only choose one item per category, unless it's an item that spawns in your backpack or hands.</center></td></tr>"
. += "<tr><td colspan=4><center><b>"
var/firstcat = TRUE
for(var/i in GLOB.loadout_items)
if(firstcat)
firstcat = FALSE
else
. += " |"
if(i == gear_tab)
. += " <span class='linkOn'>[i]</span> "
else
. += " <a href='?_src_=prefs;preference=gear;select_category=[i]'>[i]</a> "
. += "</b></center></td></tr>"
. += "<tr><td colspan=4><hr></td></tr>"
. += "<tr><td colspan=4><b><center>[gear_tab]</center></b></td></tr>"
. += "<tr><td colspan=4><hr></td></tr>"
. += "<tr style='vertical-align:top;'><td width=15%><b>Name</b></td>"
. += "<td width=5% style='vertical-align:top'><b>Cost</b></td>"
. += "<td><font size=2><b>Restrictions</b></font></td>"
. += "<td><font size=2><b>Description</b></font></td></tr>"
for(var/j in GLOB.loadout_items[gear_tab])
var/datum/gear/gear = GLOB.loadout_items[gear_tab][j]
var/donoritem
if(gear.ckeywhitelist && gear.ckeywhitelist.len)
donoritem = TRUE
if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey)))
continue
var/class_link = ""
if(gear.type in chosen_gear)
class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=0'"
else if(donoritem)
class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'"
else if(gear_points <= 0)
class_link = "class='linkOff'"
else
class_link = "href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'"
. += "<tr style='vertical-align:top;'><td width=15%><a style='white-space:normal;' [class_link]>[j]</a></td>"
. += "<td width = 5% style='vertical-align:top'>[gear.cost]</td><td>"
if(islist(gear.restricted_roles))
if(gear.restricted_roles.len)
. += "<font size=2>"
. += gear.restricted_roles.Join(";")
. += "</font>"
. += "</td><td><font size=2><i>[gear.description]</i></font></td></tr>"
. += "</table>"
. += "</td></tr></table>"
/datum/preferences/proc/process_citadel_prefs(mob/user, list/href_list)
if(href_list["task"] == "input")
@@ -726,35 +671,6 @@
else
user << "<span class='danger'>Invalid color. Your color is not bright enough.</span>"
if(href_list["preference"] == "gear")
if(href_list["clear_loadout"])
LAZYCLEARLIST(chosen_gear)
gear_points = initial(gear_points)
save_preferences()
if(href_list["select_category"])
for(var/i in GLOB.loadout_items)
if(i == href_list["select_category"])
gear_tab = i
if(href_list["toggle_gear_path"])
var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]]
if(!G)
return
var/toggle = text2num(href_list["toggle_gear"])
if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear)
LAZYREMOVE(chosen_gear, G.type)
gear_points += initial(G.cost)
else if(toggle && (!(is_type_in_ref_list(G, chosen_gear))))
if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist))
to_chat(user, "<span class='danger'>This is an item intended for donator use only. You are not authorized to use this item.</span>")
return
if(!is_loadout_slot_available(G.category))
to_chat(user, "<span class='danger'>You cannot take this loadout, as you've already chosen too many of the same category!</span>")
return
if(gear_points >= initial(G.cost))
LAZYADD(chosen_gear, G.type)
gear_points -= initial(G.cost)
/datum/preferences/proc/is_loadout_slot_available(slot)
var/list/L
LAZYINITLIST(L)
+9 -14
View File
@@ -2681,21 +2681,16 @@
#include "modular_citadel\code\modules\client\preferences.dm"
#include "modular_citadel\code\modules\client\preferences_savefile.dm"
#include "modular_citadel\code\modules\client\preferences_toggles.dm"
#include "modular_citadel\code\modules\client\loadout\__donator.dm"
#include "modular_citadel\code\modules\client\loadout\_medical.dm"
#include "modular_citadel\code\modules\client\loadout\_security.dm"
#include "modular_citadel\code\modules\client\loadout\_service.dm"
#include "modular_citadel\code\modules\client\loadout\backpack.dm"
#include "modular_citadel\code\modules\client\loadout\glasses.dm"
#include "modular_citadel\code\modules\client\loadout\gloves.dm"
#include "modular_citadel\code\modules\client\loadout\hands.dm"
#include "modular_citadel\code\modules\client\loadout\head.dm"
#include "modular_citadel\code\modules\client\loadout\gear_tweaks.dm"
#include "modular_citadel\code\modules\client\loadout\loadout.dm"
#include "modular_citadel\code\modules\client\loadout\mask.dm"
#include "modular_citadel\code\modules\client\loadout\neck.dm"
#include "modular_citadel\code\modules\client\loadout\shoes.dm"
#include "modular_citadel\code\modules\client\loadout\suit.dm"
#include "modular_citadel\code\modules\client\loadout\uniform.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_accessories.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_cosmetics.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_donator.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_gloves.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_hat.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_shoes.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_suit.dm"
#include "modular_citadel\code\modules\client\loadout\loadout_uniform.dm"
#include "modular_citadel\code\modules\client\verbs\who.dm"
#include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm"
#include "modular_citadel\code\modules\clothing\suits\suits.dm"