diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 2171422a5aa..118f6c28188 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -77,13 +77,12 @@ for(var/geartype in subtypesof(/datum/gear)) var/datum/gear/G = geartype - var/use_name = initial(G.display_name) var/use_category = initial(G.sort_category) - if(G == initial(G.subtype_path)) + if(G == initial(G.main_typepath)) continue - if(!use_name) + if(!initial(G.display_name)) stack_trace("Loadout - Missing display name: [G]") continue if(!initial(G.cost)) @@ -96,8 +95,8 @@ if(!GLOB.loadout_categories[use_category]) GLOB.loadout_categories[use_category] = new /datum/loadout_category(use_category) var/datum/loadout_category/LC = GLOB.loadout_categories[use_category] - GLOB.gear_datums[use_name] = new geartype - LC.gear[use_name] = GLOB.gear_datums[use_name] + GLOB.gear_datums[geartype] = new geartype + LC.gear[geartype] = GLOB.gear_datums[geartype] GLOB.loadout_categories = sortAssoc(GLOB.loadout_categories) for(var/loadout_category in GLOB.loadout_categories) diff --git a/code/__HELPERS/sanitize_values.dm b/code/__HELPERS/sanitize_values.dm index 34e4c96da6a..e50cd9afe96 100644 --- a/code/__HELPERS/sanitize_values.dm +++ b/code/__HELPERS/sanitize_values.dm @@ -16,6 +16,10 @@ if(default) return default if(List && List.len)return pick(List) +/proc/sanitize_json(json_input) + if(length(json_input) && istext(json_input)) + return json_decode(json_input) + return list() //more specialised stuff diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 7922cb721f7..49e375d2123 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -175,7 +175,7 @@ if(allow_loadout && H.client && length(H.client.prefs.active_character.loadout_gear)) for(var/gear in H.client.prefs.active_character.loadout_gear) - var/datum/gear/G = GLOB.gear_datums[gear] + var/datum/gear/G = GLOB.gear_datums[text2path(gear) || gear] if(G) var/permitted = FALSE @@ -185,16 +185,13 @@ else permitted = TRUE - if(G.whitelisted && (G.whitelisted != H.dna.species.name || !is_alien_whitelisted(H, G.whitelisted))) - permitted = FALSE - if(!permitted) - to_chat(H, "Your current job or whitelist status does not permit you to spawn with [gear]!") + to_chat(H, "Your current job or whitelist status does not permit you to spawn with [G.display_name]!") continue if(G.slot) if(H.equip_to_slot_or_del(G.spawn_item(H), G.slot, TRUE)) - to_chat(H, "Equipping you with [gear]!") + to_chat(H, "Equipping you with [G.display_name]!") else gear_leftovers += G else @@ -217,7 +214,7 @@ if(isturf(placed_in)) to_chat(H, "Placing [G.display_name] on [placed_in]!") else - to_chat(H, "Placing [G.display_name] in [placed_in.name].") + to_chat(H, "Placing [G.display_name] in your [placed_in.name].") continue if(H.equip_to_appropriate_slot(G)) to_chat(H, "Placing [G.display_name] in your inventory!") diff --git a/code/modules/client/preference/character.dm b/code/modules/client/preference/character.dm index 3bd5e5e16c7..9a98c853d1b 100644 --- a/code/modules/client/preference/character.dm +++ b/code/modules/client/preference/character.dm @@ -115,7 +115,7 @@ if(!isemptylist(player_alt_titles)) playertitlelist = list2params(player_alt_titles) if(!isemptylist(loadout_gear)) - gearlist = list2params(loadout_gear) + gearlist = json_encode(loadout_gear) var/datum/db_query/firstquery = SSdbcore.NewQuery("SELECT slot FROM characters WHERE ckey=:ckey ORDER BY slot", list( "ckey" = C.ckey @@ -438,7 +438,7 @@ //socks socks = query.item[49] body_accessory = query.item[50] - loadout_gear = params2list(query.item[51]) + loadout_gear = query.item[51] autohiss_mode = text2num(query.item[52]) //Sanitize @@ -507,6 +507,7 @@ socks = sanitize_text(socks, initial(socks)) body_accessory = sanitize_text(body_accessory, initial(body_accessory)) + loadout_gear = sanitize_json(loadout_gear) if(!player_alt_titles) player_alt_titles = new() @@ -1457,11 +1458,11 @@ -/datum/character_save/proc/get_gear_metadata(datum/gear/G) - . = loadout_gear[G.display_name] +/datum/character_save/proc/get_gear_metadata(datum/gear/G) // NYI + . = loadout_gear[G.type] if(!.) . = list() - loadout_gear[G.display_name] = . + loadout_gear[G.type] = . /datum/character_save/proc/get_tweak_metadata(datum/gear/G, datum/gear_tweak/tweak) var/list/metadata = get_gear_metadata(G) diff --git a/code/modules/client/preference/link_processing.dm b/code/modules/client/preference/link_processing.dm index 6a7e5144718..fe4f9574128 100644 --- a/code/modules/client/preference/link_processing.dm +++ b/code/modules/client/preference/link_processing.dm @@ -96,29 +96,17 @@ if(href_list["preference"] == "gear") if(href_list["toggle_gear"]) - var/datum/gear/TG = GLOB.gear_datums[href_list["toggle_gear"]] - if(TG.display_name in active_character.loadout_gear) - active_character.loadout_gear -= TG.display_name + var/datum/gear/TG = GLOB.gear_datums[text2path(href_list["toggle_gear"])] + if(TG && (TG.type in active_character.loadout_gear)) + active_character.loadout_gear -= TG.type else if(TG.donator_tier && user.client.donator_level < TG.donator_tier) to_chat(user, "That gear is only available at a higher donation tier than you are on.") return - var/total_cost = 0 - var/list/type_blacklist = list() - for(var/gear_name in active_character.loadout_gear) - var/datum/gear/G = GLOB.gear_datums[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 + build_loadout(TG) - if((total_cost + TG.cost) <= max_gear_slots) - active_character.loadout_gear += TG.display_name - - else if(href_list["gear"] && href_list["tweak"]) - var/datum/gear/gear = GLOB.gear_datums[href_list["gear"]] + else if(href_list["gear"] && href_list["tweak"]) // NYI + var/datum/gear/gear = GLOB.gear_datums[text2path(href_list["gear"])] var/datum/gear_tweak/tweak = locate(href_list["tweak"]) if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks)) return diff --git a/code/modules/client/preference/loadout/loadout.dm b/code/modules/client/preference/loadout/loadout.dm index f1f0e2082de..eff55feedee 100644 --- a/code/modules/client/preference/loadout/loadout.dm +++ b/code/modules/client/preference/loadout/loadout.dm @@ -10,17 +10,27 @@ GLOBAL_LIST_EMPTY(gear_datums) ..() /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.. + /// Displayed name of the item listing. + var/display_name + /// Description of the item listing. If left blank will default to the description of the pathed item. + var/description + /// Typepath of the item. + var/path + /// Loadout points cost to select the item listing. + var/cost = 1 + /// Slot to equip the item to. + var/slot + /// List of job roles which can spawn with the item. + var/list/allowed_roles + /// Loadout category of the item listing. 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 + /// List of datums which will alter the item after it has been spawned. (NYI) + var/list/gear_tweaks = list() + /// Set on empty category datums to skip them being added to the list. (/datum/gear/accessory, /datum/gear/suit/coat/job, etc.) + var/main_typepath = /datum/gear + /// Does selecting a second item with the same `main_typepath` cost loadout points. + var/subtype_selection_cost = TRUE + /// Patreon donator tier needed to select this item listing. var/donator_tier = 0 /datum/gear/New() diff --git a/code/modules/client/preference/loadout/loadout_accessories.dm b/code/modules/client/preference/loadout/loadout_accessories.dm index 637b6067bf4..ba5e8626a0e 100644 --- a/code/modules/client/preference/loadout/loadout_accessories.dm +++ b/code/modules/client/preference/loadout/loadout_accessories.dm @@ -1,203 +1,215 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/accessory - subtype_path = /datum/gear/accessory + main_typepath = /datum/gear/accessory slot = slot_tie sort_category = "Accessories" /datum/gear/accessory/scarf - display_name = "scarf" + display_name = "Scarf" path = /obj/item/clothing/accessory/scarf /datum/gear/accessory/scarf/red - display_name = "scarf, red" + display_name = "Scarf, red" path = /obj/item/clothing/accessory/scarf/red /datum/gear/accessory/scarf/green - display_name = "scarf, green" + display_name = "Scarf, green" path = /obj/item/clothing/accessory/scarf/green /datum/gear/accessory/scarf/darkblue - display_name = "scarf, dark blue" + display_name = "Scarf, dark blue" path = /obj/item/clothing/accessory/scarf/darkblue /datum/gear/accessory/scarf/purple - display_name = "scarf, purple" + display_name = "Scarf, purple" path = /obj/item/clothing/accessory/scarf/purple /datum/gear/accessory/scarf/yellow - display_name = "scarf, yellow" + display_name = "Scarf, yellow" path = /obj/item/clothing/accessory/scarf/yellow /datum/gear/accessory/scarf/orange - display_name = "scarf, orange" + display_name = "Scarf, orange" path = /obj/item/clothing/accessory/scarf/orange /datum/gear/accessory/scarf/lightblue - display_name = "scarf, light blue" + display_name = "Scarf, light blue" path = /obj/item/clothing/accessory/scarf/lightblue /datum/gear/accessory/scarf/white - display_name = "scarf, white" + display_name = "Scarf, white" path = /obj/item/clothing/accessory/scarf/white /datum/gear/accessory/scarf/black - display_name = "scarf, black" + display_name = "Scarf, black" path = /obj/item/clothing/accessory/scarf/black /datum/gear/accessory/scarf/zebra - display_name = "scarf, zebra" + display_name = "Scarf, zebra" path = /obj/item/clothing/accessory/scarf/zebra /datum/gear/accessory/scarf/christmas - display_name = "scarf, christmas" + display_name = "Scarf, christmas" path = /obj/item/clothing/accessory/scarf/christmas /datum/gear/accessory/scarf/stripedred - display_name = "scarf, striped red" + display_name = "Scarf, striped red" path = /obj/item/clothing/accessory/stripedredscarf /datum/gear/accessory/scarf/stripedgreen - display_name = "scarf, striped green" + display_name = "Scarf, striped green" path = /obj/item/clothing/accessory/stripedgreenscarf /datum/gear/accessory/scarf/stripedblue - display_name = "scarf, striped blue" + display_name = "Scarf, striped blue" path = /obj/item/clothing/accessory/stripedbluescarf /datum/gear/accessory/holobadge - display_name = "holobadge, pin" + display_name = "Holobadge, pin" path = /obj/item/clothing/accessory/holobadge allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") /datum/gear/accessory/holobadge_n - display_name = "holobadge, cord" + display_name = "Holobadge, cord" path = /obj/item/clothing/accessory/holobadge/cord allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") /datum/gear/accessory/tieblue - display_name = "tie, blue" + display_name = "Tie, blue" path = /obj/item/clothing/accessory/blue /datum/gear/accessory/tiered - display_name = "tie, red" + display_name = "Tie, red" path = /obj/item/clothing/accessory/red /datum/gear/accessory/tieblack - display_name = "tie, black" + display_name = "Tie, black" path = /obj/item/clothing/accessory/black /datum/gear/accessory/tiehorrible - display_name = "tie, vomit green" + display_name = "Tie, vomit green" path = /obj/item/clothing/accessory/horrible /datum/gear/accessory/stethoscope - display_name = "stethoscope" + display_name = "Stethoscope" path = /obj/item/clothing/accessory/stethoscope allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Paramedic", "Brig Physician") /datum/gear/accessory/cowboyshirt - display_name = "cowboy shirt, black" + display_name = "Cowboy shirt, black" path = /obj/item/clothing/accessory/cowboyshirt /datum/gear/accessory/cowboyshirt/short_sleeved - display_name = "cowboy shirt, short sleeved black" + display_name = "Cowboy shirt, short sleeved black" path = /obj/item/clothing/accessory/cowboyshirt/short_sleeved /datum/gear/accessory/cowboyshirt/white - display_name = "cowboy shirt, white" + display_name = "Cowboy shirt, white" path = /obj/item/clothing/accessory/cowboyshirt/white /datum/gear/accessory/cowboyshirt/white/short_sleeved - display_name = "cowboy shirt, short sleeved white" + display_name = "Cowboy shirt, short sleeved white" path = /obj/item/clothing/accessory/cowboyshirt/white/short_sleeved /datum/gear/accessory/cowboyshirt/pink - display_name = "cowboy shirt, pink" + display_name = "Cowboy shirt, pink" path = /obj/item/clothing/accessory/cowboyshirt/pink /datum/gear/accessory/cowboyshirt/pink/short_sleeved - display_name = "cowboy shirt, short sleeved pink" + display_name = "Cowboy shirt, short sleeved pink" path = /obj/item/clothing/accessory/cowboyshirt/pink/short_sleeved /datum/gear/accessory/cowboyshirt/red - display_name = "cowboy shirt, red" + display_name = "Cowboy shirt, red" path = /obj/item/clothing/accessory/cowboyshirt/red /datum/gear/accessory/cowboyshirt/red/short_sleeved - display_name = "cowboy shirt, short sleeved red" + display_name = "Cowboy shirt, short sleeved red" path = /obj/item/clothing/accessory/cowboyshirt/red/short_sleeved /datum/gear/accessory/cowboyshirt/navy - display_name = "cowboy shirt, navy" + display_name = "Cowboy shirt, navy" path = /obj/item/clothing/accessory/cowboyshirt/navy /datum/gear/accessory/cowboyshirt/navy/short_sleeved - display_name = "cowboy shirt, short sleeved navy" + display_name = "Cowboy shirt, short sleeved navy" path = /obj/item/clothing/accessory/cowboyshirt/navy/short_sleeved /datum/gear/accessory/locket - display_name = "gold locket" + display_name = "Gold locket" path = /obj/item/clothing/accessory/necklace/locket /datum/gear/accessory/necklace - display_name = "simple necklace" + display_name = "Simple necklace" path = /obj/item/clothing/accessory/necklace /datum/gear/accessory/corset - display_name = "corset, black" + display_name = "Corset, black" path = /obj/item/clothing/accessory/corset /datum/gear/accessory/corsetred - display_name = "corset, red" + display_name = "Corset, red" path = /obj/item/clothing/accessory/corset/red /datum/gear/accessory/corsetblue - display_name = "corset, blue" + display_name = "Corset, blue" path = /obj/item/clothing/accessory/corset/blue - /datum/gear/accessory/armband_red - display_name = "armband" + display_name = "Armband" path = /obj/item/clothing/accessory/armband /datum/gear/accessory/armband_civ - display_name = "armband, blue-yellow" + display_name = "Armband, blue-yellow" path = /obj/item/clothing/accessory/armband/yb /datum/gear/accessory/armband_job - subtype_path = /datum/gear/accessory/armband_job - subtype_cost_overlap = FALSE + main_typepath = /datum/gear/accessory/armband_job + subtype_selection_cost = FALSE /datum/gear/accessory/armband_job/sec - display_name = " armband, security" + display_name = "Armband, security" path = /obj/item/clothing/accessory/armband/sec allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician") /datum/gear/accessory/armband_job/cargo - display_name = "cargo armband" + display_name = "Armband, cargo" path = /obj/item/clothing/accessory/armband/cargo allowed_roles = list("Quartermaster","Cargo Technician", "Shaft Miner") /datum/gear/accessory/armband_job/medical - display_name = "armband, medical" + display_name = "Armband, medical" path = /obj/item/clothing/accessory/armband/med allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Coroner", "Paramedic", "Brig Physician") /datum/gear/accessory/armband_job/emt - display_name = "armband, EMT" + display_name = "Armband, EMT" path = /obj/item/clothing/accessory/armband/medgreen allowed_roles = list("Paramedic", "Brig Physician") /datum/gear/accessory/armband_job/engineering - display_name = "armband, engineering" + display_name = "Armband, engineering" path = /obj/item/clothing/accessory/armband/engine allowed_roles = list("Chief Engineer","Station Engineer", "Life Support Specialist") /datum/gear/accessory/armband_job/hydro - display_name = "armband, hydroponics" + display_name = "Armband, hydroponics" path = /obj/item/clothing/accessory/armband/hydro allowed_roles = list("Botanist") /datum/gear/accessory/armband_job/sci - display_name = "armband, science" + display_name = "Armband, science" path = /obj/item/clothing/accessory/armband/science allowed_roles = list("Research Director","Scientist", "Roboticist") diff --git a/code/modules/client/preference/loadout/loadout_cosmetics.dm b/code/modules/client/preference/loadout/loadout_cosmetics.dm index 0375de2de53..2f30bd90ac5 100644 --- a/code/modules/client/preference/loadout/loadout_cosmetics.dm +++ b/code/modules/client/preference/loadout/loadout_cosmetics.dm @@ -1,24 +1,37 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/lipstick - display_name = "lipstick, red" + display_name = "Lipstick, red" path = /obj/item/lipstick sort_category = "Cosmetics" /datum/gear/lipstick/black - display_name = "lipstick, black" + display_name = "Lipstick, black" path = /obj/item/lipstick/black /datum/gear/lipstick/jade - display_name = "lipstick, jade" + display_name = "Lipstick, jade" path = /obj/item/lipstick/jade /datum/gear/lipstick/purple - display_name = "lipstick, purple" + display_name = "Lipstick, purple" path = /obj/item/lipstick/purple /datum/gear/lipstick/blue - display_name = "lipstick, blue" + display_name = "Lipstick, blue" path = /obj/item/lipstick/blue /datum/gear/lipstick/lime - display_name = "lipstick, lime" + display_name = "Lipstick, lime" path = /obj/item/lipstick/lime diff --git a/code/modules/client/preference/loadout/loadout_donor.dm b/code/modules/client/preference/loadout/loadout_donor.dm index cc84053806b..aad1a4f22b6 100644 --- a/code/modules/client/preference/loadout/loadout_donor.dm +++ b/code/modules/client/preference/loadout/loadout_donor.dm @@ -1,7 +1,20 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/donor donator_tier = 2 sort_category = "Donor" - subtype_path = /datum/gear/donor + main_typepath = /datum/gear/donor /datum/gear/donor/furgloves display_name = "Fur Gloves" diff --git a/code/modules/client/preference/loadout/loadout_general.dm b/code/modules/client/preference/loadout/loadout_general.dm index 21df431199f..56c28df62fe 100644 --- a/code/modules/client/preference/loadout/loadout_general.dm +++ b/code/modules/client/preference/loadout/loadout_general.dm @@ -1,136 +1,149 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/dice - display_name = "a d20" + display_name = "D20" path = /obj/item/dice/d20 /datum/gear/uplift - display_name = "a pack of Uplifts" + display_name = "Pack of Uplifts" path = /obj/item/storage/fancy/cigarettes/cigpack_uplift /datum/gear/robust - display_name = "a pack of Robusts" + display_name = "Pack of Robusts" path = /obj/item/storage/fancy/cigarettes/cigpack_robust /datum/gear/carp - display_name = "a pack of Carps" + display_name = "Pack of Carps" path = /obj/item/storage/fancy/cigarettes/cigpack_carp /datum/gear/midori - display_name = "a pack of Midoris" + display_name = "Pack of Midoris" path = /obj/item/storage/fancy/cigarettes/cigpack_midori /datum/gear/smokingpipe - display_name = "smoking pipe" + display_name = "Smoking pipe" path = /obj/item/clothing/mask/cigarette/pipe cost = 2 /datum/gear/lighter - display_name = "a cheap lighter" + display_name = "Cheap lighter" path = /obj/item/lighter /datum/gear/matches - display_name = "a box of matches" + display_name = "Box of matches" path = /obj/item/storage/box/matches /datum/gear/candlebox - display_name = "a box candles" + display_name = "Box of candles" description = "For setting the mood or for occult rituals." path = /obj/item/storage/fancy/candle_box/full /datum/gear/rock - display_name = "a pet rock" + display_name = "Pet rock" path = /obj/item/toy/pet_rock /datum/gear/camera - display_name = "a camera" + display_name = "Camera" path = /obj/item/camera /datum/gear/redfoxplushie - display_name = "a red fox plushie" + display_name = "Red fox plushie" path = /obj/item/toy/plushie/red_fox /datum/gear/blackcatplushie - display_name = "a black cat plushie" + display_name = "Black cat plushie" path = /obj/item/toy/plushie/black_cat /datum/gear/voxplushie - display_name = "a vox plushie" + display_name = "Vox plushie" path = /obj/item/toy/plushie/voxplushie /datum/gear/lizardplushie - display_name = "a lizard plushie" + display_name = "Lizard plushie" path = /obj/item/toy/plushie/lizardplushie /datum/gear/deerplushie - display_name = "a deer plushie" + display_name = "Deer plushie" path = /obj/item/toy/plushie/deer /datum/gear/carpplushie - display_name = "a carp plushie" + display_name = "Carp plushie" path = /obj/item/toy/carpplushie /datum/gear/sechud - display_name = "a classic security HUD" + display_name = "Classic security HUD" path = /obj/item/clothing/glasses/hud/security allowed_roles = list("Head of Security", "Warden", "Security Officer", "Internal Affairs Agent","Magistrate") /datum/gear/cryaonbox - display_name = "a box of crayons" + display_name = "Box of crayons" path = /obj/item/storage/fancy/crayons /datum/gear/cane - display_name = "a walking cane" + display_name = "Walking cane" path = /obj/item/cane /datum/gear/cards - display_name = "a deck of standard cards" + display_name = "Deck of standard cards" path = /obj/item/deck/cards /datum/gear/doublecards - display_name = "a double deck of standard cards" + display_name = "Double deck of standard cards" path = /obj/item/deck/doublecards /datum/gear/tarot - display_name = "a deck of tarot cards" + display_name = "Deck of tarot cards" path = /obj/item/deck/tarot /datum/gear/headphones - display_name = "a pair of headphones" + display_name = "Headphones" path = /obj/item/clothing/ears/headphones /datum/gear/fannypack - display_name = "a fannypack" + display_name = "Fannypack" path = /obj/item/storage/belt/fannypack /datum/gear/blackbandana - display_name = "bandana, black" + display_name = "Bandana, black" path = /obj/item/clothing/mask/bandana/black /datum/gear/purplebandana - display_name = "bandana, purple" + display_name = "Bandana, purple" path = /obj/item/clothing/mask/bandana/purple /datum/gear/orangebandana - display_name = "bandana, orange" + display_name = "Bandana, orange" path = /obj/item/clothing/mask/bandana/orange /datum/gear/greenbandana - display_name = "bandana, green" + display_name = "Bandana, green" path = /obj/item/clothing/mask/bandana/green /datum/gear/bluebandana - display_name = "bandana, blue" + display_name = "Bandana, blue" path = /obj/item/clothing/mask/bandana/blue /datum/gear/redbandana - display_name = "bandana, red" + display_name = "Bandana, red" path = /obj/item/clothing/mask/bandana/red /datum/gear/goldbandana - display_name = "bandana, gold" + display_name = "Bandana, gold" path = /obj/item/clothing/mask/bandana/gold /datum/gear/skullbandana - display_name = "bandana, skull" + display_name = "Bandana, skull" path = /obj/item/clothing/mask/bandana/skull /datum/gear/mob_hunt_game @@ -143,54 +156,54 @@ ////////////////////// /datum/gear/mug - display_name = "random coffee mug" + display_name = "Coffee mug, random" description = "A randomly colored coffee mug. You'll need to supply your own beverage though." path = /obj/item/reagent_containers/food/drinks/mug sort_category = "Mugs" /datum/gear/novelty_mug - display_name = "novelty coffee mug" + display_name = "Coffee mug, novelty" description = "A random novelty coffee mug. You'll need to supply your own beverage though." path = /obj/item/reagent_containers/food/drinks/mug/novelty cost = 2 sort_category = "Mugs" /datum/gear/mug/flask - display_name = "flask" + display_name = "Flask" description = "A flask for drink transportation. You'll need to supply your own beverage though." path = /obj/item/reagent_containers/food/drinks/flask/barflask /datum/gear/mug/department - subtype_path = /datum/gear/mug/department + main_typepath = /datum/gear/mug/department sort_category = "Mugs" - subtype_cost_overlap = FALSE + subtype_selection_cost = FALSE /datum/gear/mug/department/eng - display_name = "engineer coffee mug" + display_name = "Coffee mug, engineering" description = "An engineer's coffee mug, emblazoned in the colors of the Engineering department." allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist") path = /obj/item/reagent_containers/food/drinks/mug/eng /datum/gear/mug/department/med - display_name = "doctor coffee mug" + display_name = "Coffee mug, medical" description = "A doctor's coffee mug, emblazoned in the colors of the Medical department." allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Coroner") path = /obj/item/reagent_containers/food/drinks/mug/med /datum/gear/mug/department/sci - display_name = "scientist coffee mug" + display_name = "Coffee mug, science" description = "A scientist's coffee mug, emblazoned in the colors of the Science department." allowed_roles = list("Research Director", "Scientist", "Roboticist") path = /obj/item/reagent_containers/food/drinks/mug/sci /datum/gear/mug/department/sec - display_name = "officer coffee mug" + display_name = "Coffee mug, security" description = "An officer's coffee mug, emblazoned in the colors of the Security department." allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Internal Affairs Agent") path = /obj/item/reagent_containers/food/drinks/mug/sec /datum/gear/mug/department/serv - display_name = "crewmember coffee mug" + display_name = "Coffee mug, service" description = "A crewmember's coffee mug, emblazoned in the colors of the Service department." path = /obj/item/reagent_containers/food/drinks/mug/serv diff --git a/code/modules/client/preference/loadout/loadout_glasses.dm b/code/modules/client/preference/loadout/loadout_glasses.dm index a84af914c49..bab9b9d63b0 100644 --- a/code/modules/client/preference/loadout/loadout_glasses.dm +++ b/code/modules/client/preference/loadout/loadout_glasses.dm @@ -1,10 +1,23 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/glasses - subtype_path = /datum/gear/glasses + main_typepath = /datum/gear/glasses slot = slot_glasses sort_category = "Glasses" /datum/gear/glasses/sunglasses - display_name = "cheap sunglasses" + display_name = "Cheap sunglasses" path = /obj/item/clothing/glasses/sunglasses_fake /datum/gear/glasses/eyepatch diff --git a/code/modules/client/preference/loadout/loadout_gloves.dm b/code/modules/client/preference/loadout/loadout_gloves.dm index fece3456e56..2104ecff292 100644 --- a/code/modules/client/preference/loadout/loadout_gloves.dm +++ b/code/modules/client/preference/loadout/loadout_gloves.dm @@ -1,5 +1,18 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/gloves - subtype_path = /datum/gear/gloves + main_typepath = /datum/gear/gloves slot = slot_gloves sort_category = "Gloves" diff --git a/code/modules/client/preference/loadout/loadout_hat.dm b/code/modules/client/preference/loadout/loadout_hat.dm index 56c0b832e13..f6aa86060f2 100644 --- a/code/modules/client/preference/loadout/loadout_hat.dm +++ b/code/modules/client/preference/loadout/loadout_hat.dm @@ -1,184 +1,197 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/hat - subtype_path = /datum/gear/hat + main_typepath = /datum/gear/hat slot = slot_head sort_category = "Headwear" /datum/gear/hat/hhat_yellow - display_name = "hardhat, yellow" + display_name = "Hardhat, yellow" path = /obj/item/clothing/head/hardhat allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist") /datum/gear/hat/hhat_orange - display_name = "hardhat, orange" + display_name = "Hardhat, orange" path = /obj/item/clothing/head/hardhat/orange allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist") /datum/gear/hat/hhat_blue - display_name = "hardhat, blue" + display_name = "Hardhat, blue" path = /obj/item/clothing/head/hardhat/dblue allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist") /datum/gear/hat/that - display_name = "top hat" + display_name = "Top hat" path = /obj/item/clothing/head/that /datum/gear/hat/flatcap - display_name = "flat cap" + display_name = "Flat cap" path = /obj/item/clothing/head/flatcap /datum/gear/hat/witch - display_name = "witch hat" + display_name = "Witch hat" path = /obj/item/clothing/head/wizard/marisa/fake /datum/gear/hat/piratecaphat - display_name = "pirate captian hat" + display_name = "Pirate captian hat" path = /obj/item/clothing/head/pirate /datum/gear/hat/fez - display_name = "fez" + display_name = "Fez" path = /obj/item/clothing/head/fez /datum/gear/hat/rasta - display_name = "rasta hat" + display_name = "Rasta hat" path = /obj/item/clothing/head/beanie/rasta /datum/gear/hat/bfedora - display_name = "fedora, black" + display_name = "Fedora, black" path = /obj/item/clothing/head/fedora /datum/gear/hat/wfedora - display_name = "fedora, white" + display_name = "Fedora, white" path = /obj/item/clothing/head/fedora/whitefedora /datum/gear/hat/brfedora - display_name = "fedora, brown" + display_name = "Fedora, brown" path = /obj/item/clothing/head/fedora/brownfedora /datum/gear/hat/capcsec - display_name = "security corporate cap" + display_name = "Security cap, corporate" path = /obj/item/clothing/head/soft/sec/corp allowed_roles = list("Head of Security", "Warden", "Security Officer") /datum/gear/hat/capsec - display_name = "security cap" + display_name = "Security cap" path = /obj/item/clothing/head/soft/sec allowed_roles = list("Head of Security", "Warden", "Security Officer") /datum/gear/hat/capred - display_name = "cap, red" + display_name = "Cap, red" path = /obj/item/clothing/head/soft/red /datum/gear/hat/capblue - display_name = "cap, blue" + display_name = "Cap, blue" path = /obj/item/clothing/head/soft/blue /datum/gear/hat/capgreen - display_name = "cap, green" + display_name = "Cap, green" path = /obj/item/clothing/head/soft/green /datum/gear/hat/capblack - display_name = "cap, black" + display_name = "Cap, black" path = /obj/item/clothing/head/soft/black /datum/gear/hat/cappurple - display_name = "cap, purple" + display_name = "Cap, purple" path = /obj/item/clothing/head/soft/purple /datum/gear/hat/capwhite - display_name = "cap, white" + display_name = "Cap, white" path = /obj/item/clothing/head/soft/mime /datum/gear/hat/caporange - display_name = "cap, orange" + display_name = "Cap, orange" path = /obj/item/clothing/head/soft/orange /datum/gear/hat/capgrey - display_name = "cap, grey" + display_name = "Cap, grey" path = /obj/item/clothing/head/soft/grey /datum/gear/hat/capyellow - display_name = "cap, yellow" + display_name = "Cap, yellow" path = /obj/item/clothing/head/soft/yellow /datum/gear/hat/cowboyhat - display_name = "cowboy hat, brown" + display_name = "Cowboy hat, brown" path = /obj/item/clothing/head/cowboyhat /datum/gear/hat/cowboyhat/tan - display_name = "cowboy hat, tan" + display_name = "Cowboy hat, tan" path = /obj/item/clothing/head/cowboyhat/tan /datum/gear/hat/cowboyhat/black - display_name = "cowboy hat, black" + display_name = "Cowboy hat, black" path = /obj/item/clothing/head/cowboyhat/black /datum/gear/hat/cowboyhat/white - display_name = "cowboy hat, white" + display_name = "Cowboy hat, white" path = /obj/item/clothing/head/cowboyhat/white /datum/gear/hat/cowboyhat/pink - display_name = "cowboy hat, pink" + display_name = "Cowboy hat, pink" path = /obj/item/clothing/head/cowboyhat/pink /datum/gear/hat/beret_purple - display_name = "beret, purple" + display_name = "Beret, purple" path = /obj/item/clothing/head/beret/purple_normal /datum/gear/hat/beret_black - display_name = "beret, black" + display_name = "Beret, black" path = /obj/item/clothing/head/beret/black /datum/gear/hat/beret_blue - display_name = "beret, blue" + display_name = "Beret, blue" path = /obj/item/clothing/head/beret/blue /datum/gear/hat/beret_red - display_name = "beret, red" + display_name = "Beret, red" path = /obj/item/clothing/head/beret /datum/gear/hat/beret_job - subtype_path = /datum/gear/hat/beret_job - subtype_cost_overlap = FALSE + main_typepath = /datum/gear/hat/beret_job + subtype_selection_cost = FALSE /datum/gear/hat/beret_job/sec - display_name = "security beret" + display_name = "Beret, security" path = /obj/item/clothing/head/beret/sec allowed_roles = list("Head of Security", "Warden", "Security Officer") /datum/gear/hat/beret_job/sci - display_name = "science beret" + display_name = "Beret, science" path = /obj/item/clothing/head/beret/sci allowed_roles = list("Research Director", "Scientist") /datum/gear/hat/beret_job/med - display_name = "medical beret" + display_name = "Beret, medical" path = /obj/item/clothing/head/beret/med allowed_roles = list("Chief Medical Officer", "Medical Doctor" , "Virologist", "Brig Physician" , "Coroner") /datum/gear/hat/beret_job/eng - display_name = "engineering beret" + display_name = "Beret, engineering" path = /obj/item/clothing/head/beret/eng allowed_roles = list("Chief Engineer", "Station Engineer") /datum/gear/hat/beret_job/atmos - display_name = "atmospherics beret" + display_name = "Beret, atmospherics" path = /obj/item/clothing/head/beret/atmos allowed_roles = list("Chief Engineer", "Life Support Specialist") /datum/gear/hat/surgicalcap_purple - display_name = "surgical cap, purple" + display_name = "Surgical cap, purple" path = /obj/item/clothing/head/surgery/purple allowed_roles = list("Chief Medical Officer", "Medical Doctor") /datum/gear/hat/surgicalcap_green - display_name = "surgical cap, green" + display_name = "Surgical cap, green" path = /obj/item/clothing/head/surgery/green allowed_roles = list("Chief Medical Officer", "Medical Doctor") /datum/gear/hat/flowerpin - display_name = "hair flower" + display_name = "Hair flower" path = /obj/item/clothing/head/hairflower /datum/gear/hat/capsolgov - display_name = "cap, Sol Gov" + display_name = "Cap, Sol Gov" path = /obj/item/clothing/head/soft/solgov diff --git a/code/modules/client/preference/loadout/loadout_racial.dm b/code/modules/client/preference/loadout/loadout_racial.dm index 462836acf2b..e9e95bc54ae 100644 --- a/code/modules/client/preference/loadout/loadout_racial.dm +++ b/code/modules/client/preference/loadout/loadout_racial.dm @@ -1,47 +1,60 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/racial sort_category = "Racial" - subtype_path = /datum/gear/racial + main_typepath = /datum/gear/racial cost = 1 /datum/gear/racial/taj - display_name = "embroidered veil" + display_name = "Embroidered veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races." path = /obj/item/clothing/glasses/tajblind slot = slot_glasses /datum/gear/racial/taj/sec - display_name = "sleek veil" + display_name = "Sleek veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built security HUD." path = /obj/item/clothing/glasses/hud/security/tajblind allowed_roles = list("Head of Security", "Warden", "Security Officer", "Internal Affairs Agent", "Magistrate") cost = 2 /datum/gear/racial/taj/med - display_name = "lightweight veil" + display_name = "Lightweight veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built medical HUD." path = /obj/item/clothing/glasses/hud/health/tajblind allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Brig Physician" , "Coroner") cost = 2 /datum/gear/racial/taj/sci - display_name = "hi-tech veil" + display_name = "Hi-tech veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races." path = /obj/item/clothing/glasses/tajblind/sci cost = 2 /datum/gear/racial/taj/eng - display_name = "industrial veil" + display_name = "Industrial veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races." path = /obj/item/clothing/glasses/tajblind/eng cost = 2 /datum/gear/racial/taj/cargo - display_name = "khaki veil" + display_name = "Khaki veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. It is light and comfy!" path = /obj/item/clothing/glasses/tajblind/cargo cost = 2 /datum/gear/racial/footwraps - display_name = "cloth footwraps" + display_name = "Cloth footwraps" path = /obj/item/clothing/shoes/footwraps slot = slot_shoes diff --git a/code/modules/client/preference/loadout/loadout_shoes.dm b/code/modules/client/preference/loadout/loadout_shoes.dm index dbc7f970a33..e7f969c2311 100644 --- a/code/modules/client/preference/loadout/loadout_shoes.dm +++ b/code/modules/client/preference/loadout/loadout_shoes.dm @@ -1,54 +1,67 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/shoes - subtype_path = /datum/gear/shoes + main_typepath = /datum/gear/shoes slot = slot_shoes sort_category = "Shoes" /datum/gear/shoes/sandals - display_name = "sandals, wooden" + display_name = "Sandals, wooden" path = /obj/item/clothing/shoes/sandal /datum/gear/shoes/winterboots - display_name = "winter boots" + display_name = "Winter boots" path = /obj/item/clothing/shoes/winterboots /datum/gear/shoes/workboots - display_name = "work boots" + display_name = "Work boots" path = /obj/item/clothing/shoes/workboots /datum/gear/shoes/fancysandals - display_name = "sandals, fancy" + display_name = "Sandals, fancy" path = /obj/item/clothing/shoes/sandal/fancy /datum/gear/shoes/dressshoes - display_name = "dress shoes" + display_name = "Dress shoes" path = /obj/item/clothing/shoes/centcom /datum/gear/shoes/cowboyboots - display_name = "cowboy boots, brown" + display_name = "Cowboy boots, brown" path = /obj/item/clothing/shoes/cowboy /datum/gear/shoes/cowboyboots_black - display_name = "cowboy boots, black" + display_name = "Cowboy boots, black" path = /obj/item/clothing/shoes/cowboy/black /datum/gear/shoes/cowboyboots/white - display_name = "cowboy boots, white" + display_name = "Cowboy boots, white" path = /obj/item/clothing/shoes/cowboy/white /datum/gear/shoes/cowboyboots/pink - display_name = "cowboy boots, pink" + display_name = "Cowboy boots, pink" path = /obj/item/clothing/shoes/cowboy/pink /datum/gear/shoes/jackboots - display_name = "jackboots" + display_name = "Jackboots" path = /obj/item/clothing/shoes/jackboots /datum/gear/shoes/jacksandals - display_name = "jacksandals" + display_name = "Jacksandals" path = /obj/item/clothing/shoes/jackboots/jacksandals /datum/gear/shoes/laceup - display_name = "laceup shoes" + display_name = "Laceup shoes" path = /obj/item/clothing/shoes/laceup /datum/gear/shoes/blackshoes diff --git a/code/modules/client/preference/loadout/loadout_suit.dm b/code/modules/client/preference/loadout/loadout_suit.dm index 72553b1232c..4f9298c6ac9 100644 --- a/code/modules/client/preference/loadout/loadout_suit.dm +++ b/code/modules/client/preference/loadout/loadout_suit.dm @@ -1,115 +1,128 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + /datum/gear/suit - subtype_path = /datum/gear/suit + main_typepath = /datum/gear/suit slot = slot_wear_suit sort_category = "External Wear" //WINTER COATS /datum/gear/suit/coat - subtype_path = /datum/gear/suit/coat + main_typepath = /datum/gear/suit/coat /datum/gear/suit/coat/grey - display_name = "winter coat" + display_name = "Winter coat" path = /obj/item/clothing/suit/hooded/wintercoat /datum/gear/suit/coat/job - subtype_path = /datum/gear/suit/coat/job - subtype_cost_overlap = FALSE + main_typepath = /datum/gear/suit/coat/job + subtype_selection_cost = FALSE /datum/gear/suit/coat/job/sec - display_name = "winter coat, security" + display_name = "Winter coat, security" path = /obj/item/clothing/suit/hooded/wintercoat/security allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") /datum/gear/suit/coat/job/captain - display_name = "winter coat, captain" + display_name = "Winter coat, captain" path = /obj/item/clothing/suit/hooded/wintercoat/captain allowed_roles = list("Captain") /datum/gear/suit/coat/job/med - display_name = "winter coat, medical" + display_name = "Winter coat, medical" path = /obj/item/clothing/suit/hooded/wintercoat/medical allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Brig Physician" , "Coroner") /datum/gear/suit/coat/job/sci - display_name = "winter coat, science" + display_name = "Winter coat, science" path = /obj/item/clothing/suit/hooded/wintercoat/science allowed_roles = list("Scientist", "Research Director") /datum/gear/suit/coat/job/engi - display_name = "winter coat, engineering" + display_name = "Winter coat, engineering" path = /obj/item/clothing/suit/hooded/wintercoat/engineering allowed_roles = list("Chief Engineer", "Station Engineer") /datum/gear/suit/coat/job/atmos - display_name = "winter coat, atmospherics" + display_name = "Winter coat, atmospherics" path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos allowed_roles = list("Chief Engineer", "Life Support Specialist") /datum/gear/suit/coat/job/hydro - display_name = "winter coat, hydroponics" + display_name = "Winter coat, hydroponics" path = /obj/item/clothing/suit/hooded/wintercoat/hydro allowed_roles = list("Botanist") /datum/gear/suit/coat/job/cargo - display_name = "winter coat, cargo" + display_name = "Winter coat, cargo" path = /obj/item/clothing/suit/hooded/wintercoat/cargo allowed_roles = list("Quartermaster", "Cargo Technician") /datum/gear/suit/coat/job/miner - display_name = "winter coat, miner" + display_name = "Winter coat, mining" path = /obj/item/clothing/suit/hooded/wintercoat/miner allowed_roles = list("Shaft Miner") //LABCOATS /datum/gear/suit/labcoat_emt - display_name = "labcoat, paramedic" + display_name = "Labcoat, paramedic" path = /obj/item/clothing/suit/storage/labcoat/emt allowed_roles = list("Chief Medical Officer", "Paramedic") //JACKETS /datum/gear/suit/leather_jacket - display_name = "leather jacket" + display_name = "Leather jacket" path = /obj/item/clothing/suit/jacket/leather /datum/gear/suit/motojacket - display_name = "leather motorcycle jacket" + display_name = "Leather motorcycle jacket" path = /obj/item/clothing/suit/jacket/motojacket /datum/gear/suit/br_tcoat - display_name = "trenchcoat, brown" + display_name = "Trenchcoat, brown" path = /obj/item/clothing/suit/browntrenchcoat /datum/gear/suit/bl_tcoat - display_name = "trenchcoat, black" + display_name = "Trenchcoat, black" path = /obj/item/clothing/suit/blacktrenchcoat /datum/gear/suit/bomber_jacket - display_name = "bomber jacket" + display_name = "Bomber jacket" path = /obj/item/clothing/suit/jacket /datum/gear/suit/ol_miljacket - display_name = "military jacket, olive" + display_name = "Military jacket, olive" path = /obj/item/clothing/suit/jacket/miljacket /datum/gear/suit/nv_miljacket - display_name = "military jacket, navy" + display_name = "Military jacket, navy" path = /obj/item/clothing/suit/jacket/miljacket/navy /datum/gear/suit/ds_miljacket - display_name = "military jacket, desert" + display_name = "Military jacket, desert" path = /obj/item/clothing/suit/jacket/miljacket/desert /datum/gear/suit/wh_miljacket - display_name = "military jacket, white" + display_name = "Military jacket, white" path = /obj/item/clothing/suit/jacket/miljacket/white /datum/gear/suit/secjacket - display_name = "security jacket" + display_name = "Security jacket" path = /obj/item/clothing/suit/armor/secjacket allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") /datum/gear/suit/secbomberjacket - display_name = "security bomber jacket" + display_name = "Security bomber jacket" path = /obj/item/clothing/suit/jacket/secbomber allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") @@ -118,110 +131,108 @@ path = /obj/item/clothing/suit/ianshirt /datum/gear/suit/poncho - display_name = "poncho, classic" + display_name = "Poncho, classic" path = /obj/item/clothing/suit/poncho /datum/gear/suit/grponcho - display_name = "poncho, green" + display_name = "Poncho, green" path = /obj/item/clothing/suit/poncho/green /datum/gear/suit/rdponcho - display_name = "poncho, red" + display_name = "Poncho, red" path = /obj/item/clothing/suit/poncho/red /datum/gear/suit/tphoodie - display_name = "hoodie, Tharsis Polytech" + display_name = "Hoodie, Tharsis Polytech" path = /obj/item/clothing/suit/hooded/hoodie/tp /datum/gear/suit/nthoodie - display_name = "hoodie, Nanotrasen" + display_name = "Hoodie, Nanotrasen" path = /obj/item/clothing/suit/hooded/hoodie/nt /datum/gear/suit/lamhoodie - display_name = "hoodie, Lunar Academy of Medicine" + display_name = "Hoodie, Lunar Academy of Medicine" path = /obj/item/clothing/suit/hooded/hoodie/lam /datum/gear/suit/cuthoodie - display_name = "hoodie, Canaan University of Technology" + display_name = "Hoodie, Canaan University of Technology" path = /obj/item/clothing/suit/hooded/hoodie/cut /datum/gear/suit/mithoodie - display_name = "hoodie, Martian Institute of Technology" + display_name = "Hoodie, Martian Institute of Technology" path = /obj/item/clothing/suit/hooded/hoodie/mit /datum/gear/suit/bluehoodie - display_name = "hoodie, blue" + display_name = "Hoodie, blue" path = /obj/item/clothing/suit/hooded/hoodie/blue /datum/gear/suit/blackhoodie - display_name = "hoodie, black" + display_name = "Hoodie, black" path = /obj/item/clothing/suit/hooded/hoodie //SUITS! /datum/gear/suit/blacksuit - display_name = "suit jacket, black" + display_name = "Suit jacket, black" path = /obj/item/clothing/suit/storage/lawyer/blackjacket /datum/gear/suit/bluesuit - display_name = "suit jacket, blue" + display_name = "Suit jacket, blue" path = /obj/item/clothing/suit/storage/lawyer/bluejacket /datum/gear/suit/purplesuit - display_name = "suit jacket, purple" + display_name = "Suit jacket, purple" path = /obj/item/clothing/suit/storage/lawyer/purpjacket //Mantles! /datum/gear/suit/mantle - display_name = "mantle" + display_name = "Mantle" path = /obj/item/clothing/suit/mantle /datum/gear/suit/old_scarf - display_name = "old scarf" + display_name = "Old scarf" path = /obj/item/clothing/suit/mantle/old /datum/gear/suit/regal_shawl - display_name = "regal shawl" + display_name = "Regal shawl" path = /obj/item/clothing/suit/mantle/regal /datum/gear/suit/mantle/job - subtype_path = /datum/gear/suit/mantle/job - subtype_cost_overlap = FALSE + main_typepath = /datum/gear/suit/mantle/job + subtype_selection_cost = FALSE /datum/gear/suit/mantle/job/captain - display_name = "mantle, captain" + display_name = "Mantle, captain" path = /obj/item/clothing/suit/mantle/armor/captain allowed_roles = list("Captain") /datum/gear/suit/mantle/job/ce - display_name = "mantle, chief engineer" + display_name = "Mantle, chief engineer" path = /obj/item/clothing/suit/mantle/chief_engineer allowed_roles = list("Chief Engineer") /datum/gear/suit/mantle/job/cmo - display_name = "mantle, chief medical officer" + display_name = "Mantle, chief medical officer" path = /obj/item/clothing/suit/mantle/labcoat/chief_medical_officer allowed_roles = list("Chief Medical Officer") /datum/gear/suit/mantle/job/hos - display_name = "mantle, head of security" + display_name = "Mantle, head of security" path = /obj/item/clothing/suit/mantle/armor allowed_roles = list("Head of Security") /datum/gear/suit/mantle/job/hop - display_name = "mantle, head of personnel" + display_name = "Mantle, head of personnel" path = /obj/item/clothing/suit/mantle/armor/head_of_personnel allowed_roles = list("Head of Personnel") /datum/gear/suit/mantle/job/rd - display_name = "mantle, research director" + display_name = "Mantle, research director" path = /obj/item/clothing/suit/mantle/labcoat allowed_roles = list("Research Director") //Robes! /datum/gear/suit/witch - display_name = "witch robes" + display_name = "Witch robes" path = /obj/item/clothing/suit/wizrobe/marisa/fake - - diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm index 68e4463f787..30d912aedc1 100644 --- a/code/modules/client/preference/loadout/loadout_uniform.dm +++ b/code/modules/client/preference/loadout/loadout_uniform.dm @@ -1,96 +1,105 @@ +/* +###################################################################################### +## ## +## IMPORTANT README ## +## ## +## Changing any /datum/gear typepaths --WILL-- break people's loadouts. ## +## The typepaths are stored directly in the `characters.gear` column of the DB. ## +## Please inform the server host if you wish to modify any of these. ## +## ## +###################################################################################### +*/ + + // Uniform slot /datum/gear/uniform - subtype_path = /datum/gear/uniform + main_typepath = /datum/gear/uniform slot = slot_w_uniform sort_category = "Uniforms and Casual Dress" /datum/gear/uniform/suit - subtype_path = /datum/gear/uniform/suit + main_typepath = /datum/gear/uniform/suit //there's a lot more colors than I thought there were @_@ /datum/gear/uniform/suit/jumpsuitblack - display_name = "jumpsuit, black" + display_name = "Jumpsuit, black" path = /obj/item/clothing/under/color/black /datum/gear/uniform/suit/jumpsuitblue - display_name = "jumpsuit, blue" + display_name = "Jumpsuit, blue" path = /obj/item/clothing/under/color/blue /datum/gear/uniform/suit/jumpsuitgreen - display_name = "jumpsuit, green" + display_name = "Jumpsuit, green" path = /obj/item/clothing/under/color/green /datum/gear/uniform/suit/jumpsuitgrey - display_name = "jumpsuit, grey" + display_name = "Jumpsuit, grey" path = /obj/item/clothing/under/color/grey /datum/gear/uniform/suit/jumpsuitorange - display_name = "jumpsuit, orange" + display_name = "Jumpsuit, orange" path = /obj/item/clothing/under/color/orange /datum/gear/uniform/suit/jumpsuitpink - display_name = "jumpsuit, pink" + display_name = "Jumpsuit, pink" path = /obj/item/clothing/under/color/pink /datum/gear/uniform/suit/jumpsuitred - display_name = "jumpsuit, red" + display_name = "Jumpsuit, red" path = /obj/item/clothing/under/color/red /datum/gear/uniform/suit/jumpsuitwhite - display_name = "jumpsuit, white" + display_name = "Jumpsuit, white" path = /obj/item/clothing/under/color/white /datum/gear/uniform/suit/jumpsuityellow - display_name = "jumpsuit, yellow" + display_name = "Jumpsuit, yellow" path = /obj/item/clothing/under/color/yellow /datum/gear/uniform/suit/jumpsuitlightblue - display_name = "jumpsuit, lightblue" + display_name = "Jumpsuit, lightblue" path = /obj/item/clothing/under/color/lightblue /datum/gear/uniform/suit/jumpsuitaqua - display_name = "jumpsuit, aqua" + display_name = "Jumpsuit, aqua" path = /obj/item/clothing/under/color/aqua /datum/gear/uniform/suit/jumpsuitpurple - display_name = "jumpsuit, purple" + display_name = "Jumpsuit, purple" path = /obj/item/clothing/under/color/purple /datum/gear/uniform/suit/jumpsuitlightpurple - display_name = "jumpsuit, lightpurple" + display_name = "Jumpsuit, lightpurple" path = /obj/item/clothing/under/color/lightpurple /datum/gear/uniform/suit/jumpsuitlightgreen - display_name = "jumpsuit, lightgreen" + display_name = "Jumpsuit, lightgreen" path = /obj/item/clothing/under/color/lightgreen -/datum/gear/uniform/suit/jumpsuitlightblue - display_name = "jumpsuit, lightblue" - path = /obj/item/clothing/under/color/lightblue - /datum/gear/uniform/suit/jumpsuitlightbrown - display_name = "jumpsuit, lightbrown" + display_name = "Jumpsuit, lightbrown" path = /obj/item/clothing/under/color/lightbrown /datum/gear/uniform/suit/jumpsuitbrown - display_name = "jumpsuit, brown" + display_name = "Jumpsuit, brown" path = /obj/item/clothing/under/color/brown /datum/gear/uniform/suit/jumpsuityellowgreen - display_name = "jumpsuit, yellowgreen" + display_name = "Jumpsuit, yellowgreen" path = /obj/item/clothing/under/color/yellowgreen /datum/gear/uniform/suit/jumpsuitdarkblue - display_name = "jumpsuit, darkblue" + display_name = "Jumpsuit, darkblue" path = /obj/item/clothing/under/color/darkblue /datum/gear/uniform/suit/jumpsuitlightred - display_name = "jumpsuit, lightred" + display_name = "Jumpsuit, lightred" path = /obj/item/clothing/under/color/lightred /datum/gear/uniform/suit/jumpsuitdarkred - display_name = "jumpsuit, darkred" + display_name = "Jumpsuit, darkred" path = /obj/item/clothing/under/color/darkred /datum/gear/uniform/suit/soviet @@ -98,229 +107,229 @@ path = /obj/item/clothing/under/soviet /datum/gear/uniform/suit/kilt - display_name = "a kilt" + display_name = "Kilt" path = /obj/item/clothing/under/kilt /datum/gear/uniform/skirt - subtype_path = /datum/gear/uniform/skirt + main_typepath = /datum/gear/uniform/skirt /datum/gear/uniform/skirt/blue - display_name = "plaid skirt, blue" + display_name = "Plaid skirt, blue" path = /obj/item/clothing/under/dress/plaid_blue /datum/gear/uniform/skirt/purple - display_name = "plaid 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" + display_name = "Plaid skirt, red" path = /obj/item/clothing/under/dress/plaid_red /datum/gear/uniform/skirt/black - display_name = "skirt, black" + display_name = "Skirt, black" path = /obj/item/clothing/under/blackskirt /datum/gear/uniform/skirt/job - subtype_path = /datum/gear/uniform/skirt/job - subtype_cost_overlap = FALSE + main_typepath = /datum/gear/uniform/skirt/job + subtype_selection_cost = FALSE /datum/gear/uniform/skirt/job/ce - display_name = "skirt, ce" + display_name = "Skirt, ce" path = /obj/item/clothing/under/rank/chief_engineer/skirt allowed_roles = list("Chief Engineer") /datum/gear/uniform/skirt/job/atmos - display_name = "skirt, atmos" + display_name = "Skirt, atmos" path = /obj/item/clothing/under/rank/atmospheric_technician/skirt allowed_roles = list("Chief Engineer","Life Support Specialist") /datum/gear/uniform/skirt/job/eng - display_name = "skirt, engineer" + display_name = "Skirt, engineer" path = /obj/item/clothing/under/rank/engineer/skirt allowed_roles = list("Chief Engineer","Station Engineer") /datum/gear/uniform/skirt/job/roboticist - display_name = "skirt, roboticist" + display_name = "Skirt, roboticist" path = /obj/item/clothing/under/rank/roboticist/skirt allowed_roles = list("Research Director","Roboticist") /datum/gear/uniform/skirt/job/cmo - display_name = "skirt, cmo" + display_name = "Skirt, cmo" path = /obj/item/clothing/under/rank/chief_medical_officer/skirt allowed_roles = list("Chief Medical Officer") /datum/gear/uniform/skirt/job/chem - display_name = "skirt, chemist" + display_name = "Skirt, chemist" path = /obj/item/clothing/under/rank/chemist/skirt allowed_roles = list("Chief Medical Officer","Chemist") /datum/gear/uniform/skirt/job/viro - display_name = "skirt, virologist" + display_name = "Skirt, virologist" path = /obj/item/clothing/under/rank/virologist/skirt allowed_roles = list("Virologist") /datum/gear/uniform/skirt/job/med - display_name = "skirt, medical" + display_name = "Skirt, medical" path = /obj/item/clothing/under/rank/medical/skirt allowed_roles = list("Chief Medical Officer","Medical Doctor","Psychiatrist","Paramedic","Coroner") /datum/gear/uniform/skirt/job/phys - display_name = "skirt, physician" + display_name = "Skirt, physician" path = /obj/item/clothing/under/rank/security/brigphys/skirt allowed_roles = list("Brig Physician") /datum/gear/uniform/skirt/job/sci - display_name = "skirt, scientist" + display_name = "Skirt, scientist" path = /obj/item/clothing/under/rank/scientist/skirt allowed_roles = list("Research Director","Scientist") /datum/gear/uniform/skirt/job/cargo - display_name = "skirt, cargo" + display_name = "Skirt, cargo" path = /obj/item/clothing/under/rank/cargotech/skirt allowed_roles = list("Quartermaster","Cargo Technician") /datum/gear/uniform/skirt/job/qm - display_name = "skirt, QM" + display_name = "Skirt, QM" path = /obj/item/clothing/under/rank/cargo/skirt allowed_roles = list("Quartermaster") /datum/gear/uniform/skirt/job/warden - display_name = "skirt, warden" + display_name = "Skirt, warden" path = /obj/item/clothing/under/rank/warden/skirt allowed_roles = list("Head of Security", "Warden") /datum/gear/uniform/skirt/job/security - display_name = "skirt, security" + display_name = "Skirt, security" path = /obj/item/clothing/under/rank/security/skirt allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") /datum/gear/uniform/skirt/job/head_of_security - display_name = "skirt, hos" + display_name = "Skirt, hos" path = /obj/item/clothing/under/rank/head_of_security/skirt allowed_roles = list("Head of Security") /datum/gear/uniform/skirt/job/ntrep - display_name = "skirt, nt rep" + display_name = "Skirt, nt rep" path = /obj/item/clothing/under/rank/ntrep/skirt allowed_roles = list("Nanotrasen Representative") /datum/gear/uniform/skirt/job/blueshield - display_name = "skirt, blueshield" + display_name = "Skirt, blueshield" path = /obj/item/clothing/under/rank/blueshield/skirt allowed_roles = list("Blueshield") /datum/gear/uniform/medical - subtype_path = /datum/gear/uniform/medical + main_typepath = /datum/gear/uniform/medical /datum/gear/uniform/medical/pscrubs - display_name = "medical scrubs, purple" + display_name = "Medical scrubs, purple" path = /obj/item/clothing/under/rank/medical/purple allowed_roles = list("Chief Medical Officer", "Medical Doctor") /datum/gear/uniform/medical/gscrubs - display_name = "medical scrubs, green" + display_name = "Medical scrubs, green" path = /obj/item/clothing/under/rank/medical/green allowed_roles = list("Chief Medical Officer", "Medical Doctor") /datum/gear/uniform/sec - subtype_path = /datum/gear/uniform/sec + main_typepath = /datum/gear/uniform/sec /datum/gear/uniform/sec/formal - display_name = "security uniform, formal" + display_name = "Security uniform, formal" path = /obj/item/clothing/under/rank/security/formal allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") /datum/gear/uniform/sec/secorporate - display_name = "security uniform, corporate" + display_name = "Security uniform, corporate" path = /obj/item/clothing/under/rank/security/corp allowed_roles = list("Head of Security", "Warden", "Security Officer") /datum/gear/uniform/sec/dispatch - display_name = "security uniform, dispatch" + display_name = "Security uniform, dispatch" path = /obj/item/clothing/under/rank/dispatch allowed_roles = list("Head of Security", "Warden", "Security Officer") /datum/gear/uniform/sec/casual - display_name = "security uniform, casual" + display_name = "Security uniform, casual" path = /obj/item/clothing/under/rank/security2 allowed_roles = list("Head of Security", "Warden", "Security Officer", "Detective") /datum/gear/uniform/shorts - subtype_path = /datum/gear/uniform/shorts + main_typepath = /datum/gear/uniform/shorts /datum/gear/uniform/shorts/red - display_name = "shorts, red" + display_name = "Shorts, red" path = /obj/item/clothing/under/shorts/red /datum/gear/uniform/shorts/green - display_name = "shorts, green" + display_name = "Shorts, green" path = /obj/item/clothing/under/shorts/green /datum/gear/uniform/shorts/blue - display_name = "shorts, blue" + display_name = "Shorts, blue" path = /obj/item/clothing/under/shorts/blue /datum/gear/uniform/shorts/black - display_name = "shorts, black" + display_name = "Shorts, black" path = /obj/item/clothing/under/shorts/black /datum/gear/uniform/shorts/grey - display_name = "shorts, grey" + display_name = "Shorts, grey" path = /obj/item/clothing/under/shorts/grey /datum/gear/uniform/pants - subtype_path = /datum/gear/uniform/pants + main_typepath = /datum/gear/uniform/pants /datum/gear/uniform/pants/jeans - display_name = "jeans, classic" + display_name = "Jeans, classic" path = /obj/item/clothing/under/pants/classicjeans /datum/gear/uniform/pants/mjeans - display_name = "jeans, mustang" + display_name = "Jeans, mustang" path = /obj/item/clothing/under/pants/mustangjeans /datum/gear/uniform/pants/bljeans - display_name = "jeans, black" + display_name = "Jeans, black" path = /obj/item/clothing/under/pants/blackjeans /datum/gear/uniform/pants/yfjeans - display_name = "jeans, Young Folks" + display_name = "Jeans, Young Folks" path = /obj/item/clothing/under/pants/youngfolksjeans /datum/gear/uniform/pants/whitepants - display_name = "pants, white" + display_name = "Pants, white" path = /obj/item/clothing/under/pants/white /datum/gear/uniform/pants/redpants - display_name = "pants, red" + display_name = "Pants, red" path = /obj/item/clothing/under/pants/red /datum/gear/uniform/pants/blackpants - display_name = "pants, black" + display_name = "Pants, black" path = /obj/item/clothing/under/pants/black /datum/gear/uniform/pants/tanpants - display_name = "pants, tan" + display_name = "Pants, tan" path = /obj/item/clothing/under/pants/tan /datum/gear/uniform/pants/bluepants - display_name = "pants, blue" + display_name = "Pants, blue" path = /obj/item/clothing/under/pants/blue /datum/gear/uniform/pants/trackpants - display_name = "trackpants" + display_name = "Trackpants" path = /obj/item/clothing/under/pants/track /datum/gear/uniform/pants/khakipants - display_name = "pants, khaki" + display_name = "Pants, khaki" path = /obj/item/clothing/under/pants/khaki /datum/gear/uniform/pants/caopants - display_name = "pants, camo" + display_name = "Pants, camo" path = /obj/item/clothing/under/pants/camo /datum/gear/uniform/suit/tacticool - display_name = "tacticool turtleneck" + display_name = "Tacticool turtleneck" description = "A sleek black turtleneck paired with some khakis (WARNING DOES NOT HAVE SUIT SENSORS)" path = /obj/item/clothing/under/syndicate/tacticool diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index e88dfae2e32..9b2bb14e554 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -413,19 +413,9 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts dat += "" if(TAB_GEAR) - var/total_cost = 0 - var/list/type_blacklist = list() - if(length(active_character.loadout_gear)) - for(var/i in 1 to length(active_character.loadout_gear)) - var/datum/gear/G = GLOB.gear_datums[active_character.loadout_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/total_cost = build_loadout() - var/fcolor = "#3366CC" + var/fcolor = "#3366CC" if(total_cost < max_gear_slots) fcolor = "#E67300" dat += "
| [G.display_name] | " else - dat += "||||||
| [G.display_name] | " + dat += "||||||
| [G.display_name] | " dat += "[G.cost] | "
if(G.allowed_roles)
dat += "Restrictions: "
@@ -465,7 +455,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
if(ticked)
. += "| "
for(var/datum/gear_tweak/tweak in G.gear_tweaks)
- . += " [tweak.get_contents(active_character.get_tweak_metadata(G, tweak))]"
+ . += " [tweak.get_contents(active_character.get_tweak_metadata(G, tweak))]"
. += " | | |||