mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 00:53:23 +01:00
Loadout DB Storage Refactor (#16453)
* `display_name` -> Typepaths V1 * Loadout display name capitalisation #15857 * Review 1, plus json fixes * (Hopefully) final tweaks * Styling nitpicks * Extra tweaks because why not It never caused a runtime, but the `?.` is just in case. * Deconflicting * Warning comment * Whoops Typing faster than my brain
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, "<span class='warning'>Your current job or whitelist status does not permit you to spawn with [gear]!</span>")
|
||||
to_chat(H, "<span class='warning'>Your current job or whitelist status does not permit you to spawn with [G.display_name]!</span>")
|
||||
continue
|
||||
|
||||
if(G.slot)
|
||||
if(H.equip_to_slot_or_del(G.spawn_item(H), G.slot, TRUE))
|
||||
to_chat(H, "<span class='notice'>Equipping you with [gear]!</span>")
|
||||
to_chat(H, "<span class='notice'>Equipping you with [G.display_name]!</span>")
|
||||
else
|
||||
gear_leftovers += G
|
||||
else
|
||||
@@ -217,7 +214,7 @@
|
||||
if(isturf(placed_in))
|
||||
to_chat(H, "<span class='notice'>Placing [G.display_name] on [placed_in]!</span>")
|
||||
else
|
||||
to_chat(H, "<span class='notice'>Placing [G.display_name] in [placed_in.name].</span>")
|
||||
to_chat(H, "<span class='notice'>Placing [G.display_name] in your [placed_in.name].</span>")
|
||||
continue
|
||||
if(H.equip_to_appropriate_slot(G))
|
||||
to_chat(H, "<span class='notice'>Placing [G.display_name] in your inventory!</span>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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, "<span class='warning'>That gear is only available at a higher donation tier than you are on.</span>")
|
||||
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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -413,19 +413,9 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
|
||||
dat += "</td></tr></table>"
|
||||
|
||||
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 += "<table align='center' width='100%'>"
|
||||
@@ -450,11 +440,11 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
|
||||
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.display_name in active_character.loadout_gear)
|
||||
var/ticked = (G.type in active_character.loadout_gear)
|
||||
if(G.donator_tier > user.client.donator_level)
|
||||
dat += "<tr style='vertical-align:top;'><td width=15%><B>[G.display_name]</B></td>"
|
||||
else
|
||||
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.display_name]'>[G.display_name]</a></td>"
|
||||
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.type]'>[G.display_name]</a></td>"
|
||||
dat += "<td width = 5% style='vertical-align:top'>[G.cost]</td><td>"
|
||||
if(G.allowed_roles)
|
||||
dat += "<font size=2>Restrictions: "
|
||||
@@ -465,7 +455,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
|
||||
if(ticked)
|
||||
. += "<tr><td colspan=4>"
|
||||
for(var/datum/gear_tweak/tweak in G.gear_tweaks)
|
||||
. += " <a href='?_src_=prefs;preference=gear;gear=[G.display_name];tweak=\ref[tweak]'>[tweak.get_contents(active_character.get_tweak_metadata(G, tweak))]</a>"
|
||||
. += " <a href='?_src_=prefs;preference=gear;gear=[G.type];tweak=\ref[tweak]'>[tweak.get_contents(active_character.get_tweak_metadata(G, tweak))]</a>"
|
||||
. += "</td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
@@ -562,3 +552,39 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
|
||||
|
||||
active_character.SetChoices(user)
|
||||
return 1
|
||||
|
||||
/**
|
||||
* Rebuilds the `loadout_gear` list of the [active_character], and returns the total end cost.
|
||||
*
|
||||
* Caches and cuts the existing [/datum/character_save/var/loadout_gear] list and remakes it, checking the `subtype_selection_cost` and overall cost validity of each item.
|
||||
*
|
||||
* If the item's [/datum/gear/var/subtype_selection_cost] is `FALSE`, any future items with the same [/datum/gear/var/main_typepath] will have their cost skipped.
|
||||
* If adding the item will take the total cost over the maximum, it won't be added to the list.
|
||||
*
|
||||
* Arguments:
|
||||
* * new_item - A new [/datum/gear] item to be added to the `loadout_gear` list.
|
||||
*/
|
||||
/datum/preferences/proc/build_loadout(datum/gear/new_item)
|
||||
var/total_cost = 0
|
||||
var/list/type_blacklist = list()
|
||||
var/list/loadout_cache = active_character.loadout_gear.Copy()
|
||||
active_character.loadout_gear.Cut()
|
||||
if(new_item)
|
||||
loadout_cache += new_item.type
|
||||
|
||||
for(var/I in loadout_cache)
|
||||
var/datum/gear/G = GLOB.gear_datums[text2path(I) || I]
|
||||
if(!G)
|
||||
continue
|
||||
var/added_cost = G.cost
|
||||
if(!G.subtype_selection_cost) // If listings of the same subtype shouldn't have their cost added.
|
||||
if(G.main_typepath in type_blacklist)
|
||||
added_cost = 0
|
||||
else
|
||||
type_blacklist += G.main_typepath
|
||||
|
||||
if((total_cost + added_cost) > max_gear_slots)
|
||||
continue // If the final cost is too high, don't add the item.
|
||||
active_character.loadout_gear += G.type
|
||||
total_cost += added_cost
|
||||
return total_cost
|
||||
|
||||
@@ -0,0 +1,330 @@
|
||||
{
|
||||
"remove": [
|
||||
"kitty\\+headband",
|
||||
"Mouse\\+Headband",
|
||||
"Noble\\+Clothes"
|
||||
],
|
||||
"special": {
|
||||
"scarf": "/datum/gear/accessory/scarf",
|
||||
"armband": "/datum/gear/accessory/armband_red",
|
||||
"mantle": "/datum/gear/suit/mantle",
|
||||
"sandals": "/datum/gear/shoes/sandals"
|
||||
},
|
||||
"standard": {
|
||||
"scarf%2c+red": "/datum/gear/accessory/scarf/red",
|
||||
"scarf%2c+green": "/datum/gear/accessory/scarf/green",
|
||||
"scarf%2c+dark+blue": "/datum/gear/accessory/scarf/darkblue",
|
||||
"scarf%2c+purple": "/datum/gear/accessory/scarf/purple",
|
||||
"scarf%2c+yellow": "/datum/gear/accessory/scarf/yellow",
|
||||
"scarf%2c+orange": "/datum/gear/accessory/scarf/orange",
|
||||
"scarf%2c+light+blue": "/datum/gear/accessory/scarf/lightblue",
|
||||
"scarf%2c+white": "/datum/gear/accessory/scarf/white",
|
||||
"scarf%2c+black": "/datum/gear/accessory/scarf/black",
|
||||
"scarf%2c+zebra": "/datum/gear/accessory/scarf/zebra",
|
||||
"scarf%2c+christmas": "/datum/gear/accessory/scarf/christmas",
|
||||
"scarf%2c+striped+red": "/datum/gear/accessory/scarf/stripedred",
|
||||
"scarf%2c+striped+green": "/datum/gear/accessory/scarf/stripedgreen",
|
||||
"scarf%2c+striped+blue": "/datum/gear/accessory/scarf/stripedblue",
|
||||
"holobadge%2c+pin": "/datum/gear/accessory/holobadge",
|
||||
"holobadge%2c+cord": "/datum/gear/accessory/holobadge_n",
|
||||
"tie%2c+blue": "/datum/gear/accessory/tieblue",
|
||||
"tie%2c+red": "/datum/gear/accessory/tiered",
|
||||
"tie%2c+black": "/datum/gear/accessory/tieblack",
|
||||
"tie%2c+vomit+green": "/datum/gear/accessory/tiehorrible",
|
||||
"stethoscope": "/datum/gear/accessory/stethoscope",
|
||||
"cowboy+shirt%2c+short+sleeved+black": "/datum/gear/accessory/cowboyshirt/short_sleeved",
|
||||
"cowboy+shirt%2c+short+sleeved+white": "/datum/gear/accessory/cowboyshirt/white/short_sleeved",
|
||||
"cowboy+shirt%2c+short+sleeved+pink": "/datum/gear/accessory/cowboyshirt/pink/short_sleeved",
|
||||
"cowboy+shirt%2c+short+sleeved+red": "/datum/gear/accessory/cowboyshirt/red/short_sleeved",
|
||||
"cowboy+shirt%2c+short+sleeved+navy": "/datum/gear/accessory/cowboyshirt/navy/short_sleeved",
|
||||
"cowboy+shirt%2c+black": "/datum/gear/accessory/cowboyshirt",
|
||||
"cowboy+shirt%2c+white": "/datum/gear/accessory/cowboyshirt/white",
|
||||
"cowboy+shirt%2c+pink": "/datum/gear/accessory/cowboyshirt/pink",
|
||||
"cowboy+shirt%2c+red": "/datum/gear/accessory/cowboyshirt/red",
|
||||
"cowboy+shirt%2c+navy": "/datum/gear/accessory/cowboyshirt/navy",
|
||||
"gold+locket": "/datum/gear/accessory/locket",
|
||||
"simple+necklace": "/datum/gear/accessory/necklace",
|
||||
"corset%2c+black": "/datum/gear/accessory/corset",
|
||||
"corset%2c+red": "/datum/gear/accessory/corsetred",
|
||||
"corset%2c+blue": "/datum/gear/accessory/corsetblue",
|
||||
"armband%2c+blue-yellow": "/datum/gear/accessory/armband_civ",
|
||||
"+armband%2c+security": "/datum/gear/accessory/armband_job/sec",
|
||||
"cargo+armband": "/datum/gear/accessory/armband_job/cargo",
|
||||
"armband%2c+medical": "/datum/gear/accessory/armband_job/medical",
|
||||
"armband%2c+EMT": "/datum/gear/accessory/armband_job/emt",
|
||||
"armband%2c+engineering": "/datum/gear/accessory/armband_job/engineering",
|
||||
"armband%2c+hydroponics": "/datum/gear/accessory/armband_job/hydro",
|
||||
"armband%2c+science": "/datum/gear/accessory/armband_job/sci",
|
||||
"lipstick%2c+black": "/datum/gear/lipstick/black",
|
||||
"lipstick%2c+jade": "/datum/gear/lipstick/jade",
|
||||
"lipstick%2c+purple": "/datum/gear/lipstick/purple",
|
||||
"lipstick%2c+blue": "/datum/gear/lipstick/blue",
|
||||
"lipstick%2c+lime": "/datum/gear/lipstick/lime",
|
||||
"lipstick%2c+red": "/datum/gear/lipstick",
|
||||
"Fur+Gloves": "/datum/gear/donor/furgloves",
|
||||
"Fur+Boots": "/datum/gear/donor/furboots",
|
||||
"Noble+Boots": "/datum/gear/donor/noble_boot",
|
||||
"Fur+Cape": "/datum/gear/donor/furcape",
|
||||
"Fur+Coat": "/datum/gear/donor/furcoat",
|
||||
"Spiky+Orange-tinted+Shades": "/datum/gear/donor/kamina",
|
||||
"Spiky+Green-tinted+Shades": "/datum/gear/donor/green",
|
||||
"Threed+Glasses": "/datum/gear/donor/threedglasses",
|
||||
"Black+Sombrero": "/datum/gear/donor/blacksombrero",
|
||||
"Plastic+Guard+helm": "/datum/gear/donor/guardhelm",
|
||||
"Red+Gold-trimmed+Top+Hat": "/datum/gear/donor/goldtophat/red",
|
||||
"Blue+Gold-trimmed+Top+Hat": "/datum/gear/donor/goldtophat/blue",
|
||||
"Gold-trimmed+Top+Hat": "/datum/gear/donor/goldtophat",
|
||||
"Mushroom+Hat": "/datum/gear/donor/mushhat",
|
||||
"Fur+Cap": "/datum/gear/donor/furcap",
|
||||
"Guy+Fawkes+mask": "/datum/gear/donor/fawkes",
|
||||
"Silver+ID+Decal": "/datum/gear/donor/id_decal_silver",
|
||||
"Prisoner+ID+Decal": "/datum/gear/donor/id_decal_prisoner",
|
||||
"Emag+ID+Decal": "/datum/gear/donor/id_decal_emag",
|
||||
"Gold+ID+Decal": "/datum/gear/donor/id_decal_gold",
|
||||
"a+d20": "/datum/gear/dice",
|
||||
"d20": "/datum/gear/dice",
|
||||
"a+pack+of+Uplifts": "/datum/gear/uplift",
|
||||
"a+pack+of+Robusts": "/datum/gear/robust",
|
||||
"a+pack+of+Carps": "/datum/gear/carp",
|
||||
"a+pack+of+Midoris": "/datum/gear/midori",
|
||||
"smoking+pipe": "/datum/gear/smokingpipe",
|
||||
"a+cheap+lighter": "/datum/gear/lighter",
|
||||
"a+box+of+matches": "/datum/gear/matches",
|
||||
"a+box+candles": "/datum/gear/candlebox",
|
||||
"a+pet+rock": "/datum/gear/rock",
|
||||
"a+camera": "/datum/gear/camera",
|
||||
"a+red+fox+plushie": "/datum/gear/redfoxplushie",
|
||||
"a+black+cat+plushie": "/datum/gear/blackcatplushie",
|
||||
"a+vox+plushie": "/datum/gear/voxplushie",
|
||||
"a+lizard+plushie": "/datum/gear/lizardplushie",
|
||||
"a+deer+plushie": "/datum/gear/deerplushie",
|
||||
"a+carp+plushie": "/datum/gear/carpplushie",
|
||||
"a+classic+security+HUD": "/datum/gear/sechud",
|
||||
"a+box+of+crayons": "/datum/gear/cryaonbox",
|
||||
"a+walking+cane": "/datum/gear/cane",
|
||||
"a+deck+of+standard+cards": "/datum/gear/cards",
|
||||
"a+deck+of+cards": "/datum/gear/cards",
|
||||
"a+double+deck+of+standard+cards": "/datum/gear/doublecards",
|
||||
"a+deck+of+tarot+cards": "/datum/gear/tarot",
|
||||
"a+pair+of+headphones": "/datum/gear/headphones",
|
||||
"a+fannypack": "/datum/gear/fannypack",
|
||||
"bandana%2c+black": "/datum/gear/blackbandana",
|
||||
"bandana%2c+purple": "/datum/gear/purplebandana",
|
||||
"bandana%2c+orange": "/datum/gear/orangebandana",
|
||||
"bandana%2c+green": "/datum/gear/greenbandana",
|
||||
"bandana%2c+blue": "/datum/gear/bluebandana",
|
||||
"bandana%2c+red": "/datum/gear/redbandana",
|
||||
"bandana%2c+gold": "/datum/gear/goldbandana",
|
||||
"bandana%2c+skull": "/datum/gear/skullbandana",
|
||||
"Nano-Mob+Hunter+GO%21+Cartridge": "/datum/gear/mob_hunt_game",
|
||||
"flask": "/datum/gear/mug/flask",
|
||||
"engineer+coffee+mug": "/datum/gear/mug/department/eng",
|
||||
"doctor+coffee+mug": "/datum/gear/mug/department/med",
|
||||
"scientist+coffee+mug": "/datum/gear/mug/department/sci",
|
||||
"officer+coffee+mug": "/datum/gear/mug/department/sec",
|
||||
"crewmember+coffee+mug": "/datum/gear/mug/department/serv",
|
||||
"random+coffee+mug": "/datum/gear/mug",
|
||||
"novelty+coffee+mug": "/datum/gear/novelty_mug",
|
||||
"Accordion": "/datum/gear/instrument/accordion",
|
||||
"Banjo": "/datum/gear/instrument/banjo",
|
||||
"Electric+guitar": "/datum/gear/instrument/eguitar",
|
||||
"Glockenspiel": "/datum/gear/instrument/glock",
|
||||
"Guitar": "/datum/gear/instrument/guitar",
|
||||
"Harmonica": "/datum/gear/instrument/harmonica",
|
||||
"Recorder": "/datum/gear/instrument/recorder",
|
||||
"Saxophone": "/datum/gear/instrument/sax",
|
||||
"Trumpet": "/datum/gear/instrument/trumpet",
|
||||
"Trombone": "/datum/gear/instrument/trombone",
|
||||
"Violin": "/datum/gear/instrument/violin",
|
||||
"Xylophone": "/datum/gear/instrument/xylo",
|
||||
"Synthesizer": "/datum/gear/instrument",
|
||||
"synthesizer": "/datum/gear/instrument",
|
||||
"cheap+sunglasses": "/datum/gear/glasses/sunglasses",
|
||||
"Eyepatch": "/datum/gear/glasses/eyepatch",
|
||||
"Hipster+glasses": "/datum/gear/glasses/hipster",
|
||||
"Hipster+Glasses": "/datum/gear/glasses/hipster",
|
||||
"monocle": "/datum/gear/glasses/monocle",
|
||||
"Monocle": "/datum/gear/glasses/monocle",
|
||||
"Prescription+glasses": "/datum/gear/glasses/prescription",
|
||||
"Fingerless+Gloves": "/datum/gear/gloves/fingerless",
|
||||
"Silver+ring": "/datum/gear/gloves/silverring",
|
||||
"Gold+ring": "/datum/gear/gloves/goldring",
|
||||
"hardhat%2c+yellow": "/datum/gear/hat/hhat_yellow",
|
||||
"hardhat%2c+orange": "/datum/gear/hat/hhat_orange",
|
||||
"hardhat%2c+blue": "/datum/gear/hat/hhat_blue",
|
||||
"top+hat": "/datum/gear/hat/that",
|
||||
"flat+cap": "/datum/gear/hat/flatcap",
|
||||
"witch+hat": "/datum/gear/hat/witch",
|
||||
"pirate+captian+hat": "/datum/gear/hat/piratecaphat",
|
||||
"fez": "/datum/gear/hat/fez",
|
||||
"rasta+hat": "/datum/gear/hat/rasta",
|
||||
"fedora%2c+black": "/datum/gear/hat/bfedora",
|
||||
"fedora%2c+white": "/datum/gear/hat/wfedora",
|
||||
"fedora%2c+brown": "/datum/gear/hat/brfedora",
|
||||
"surgical+cap%2c+purple": "/datum/gear/hat/surgicalcap_purple",
|
||||
"surgical+cap%2c+green": "/datum/gear/hat/surgicalcap_green",
|
||||
"security+corporate+cap": "/datum/gear/hat/capcsec",
|
||||
"security+cap": "/datum/gear/hat/capsec",
|
||||
"cap%2c+red": "/datum/gear/hat/capred",
|
||||
"cap%2c+blue": "/datum/gear/hat/capblue",
|
||||
"cap%2c+green": "/datum/gear/hat/capgreen",
|
||||
"cap%2c+black": "/datum/gear/hat/capblack",
|
||||
"cap%2c+purple": "/datum/gear/hat/cappurple",
|
||||
"cap%2c+white": "/datum/gear/hat/capwhite",
|
||||
"cap%2c+orange": "/datum/gear/hat/caporange",
|
||||
"cap%2c+grey": "/datum/gear/hat/capgrey",
|
||||
"cap%2c+yellow": "/datum/gear/hat/capyellow",
|
||||
"cowboy+hat%2c+tan": "/datum/gear/hat/cowboyhat/tan",
|
||||
"cowboy+hat%2c+black": "/datum/gear/hat/cowboyhat/black",
|
||||
"cowboy+hat%2c+white": "/datum/gear/hat/cowboyhat/white",
|
||||
"cowboy+hat%2c+pink": "/datum/gear/hat/cowboyhat/pink",
|
||||
"cowboy+hat%2c+brown": "/datum/gear/hat/cowboyhat",
|
||||
"cowboy+hat": "/datum/gear/hat/cowboyhat",
|
||||
"beret%2c+purple": "/datum/gear/hat/beret_purple",
|
||||
"beret%2c+black": "/datum/gear/hat/beret_black",
|
||||
"beret%2c+blue": "/datum/gear/hat/beret_blue",
|
||||
"beret%2c+red": "/datum/gear/hat/beret_red",
|
||||
"security+beret": "/datum/gear/hat/beret_job/sec",
|
||||
"science+beret": "/datum/gear/hat/beret_job/sci",
|
||||
"medical+beret": "/datum/gear/hat/beret_job/med",
|
||||
"engineering+beret": "/datum/gear/hat/beret_job/eng",
|
||||
"atmospherics+beret": "/datum/gear/hat/beret_job/atmos",
|
||||
"hair+flower%2c+purple": "/datum/gear/hat/flowerpin",
|
||||
"hair+flower": "/datum/gear/hat/flowerpin",
|
||||
"cap%2c+Sol+Gov": "/datum/gear/hat/capsolgov",
|
||||
"sleek+veil": "/datum/gear/racial/taj/sec",
|
||||
"lightweight+veil": "/datum/gear/racial/taj/med",
|
||||
"hi-tech+veil": "/datum/gear/racial/taj/sci",
|
||||
"industrial+veil": "/datum/gear/racial/taj/eng",
|
||||
"khaki+veil": "/datum/gear/racial/taj/cargo",
|
||||
"embroidered+veil": "/datum/gear/racial/taj",
|
||||
"cloth+footwraps": "/datum/gear/racial/footwraps",
|
||||
"sandals%2c+wooden": "/datum/gear/shoes/sandals",
|
||||
"winter+boots": "/datum/gear/shoes/winterboots",
|
||||
"work+boots": "/datum/gear/shoes/workboots",
|
||||
"sandals%2c+fancy": "/datum/gear/shoes/fancysandals",
|
||||
"dress+shoes": "/datum/gear/shoes/dressshoes",
|
||||
"cowboy+boots%2c+white": "/datum/gear/shoes/cowboyboots/white",
|
||||
"cowboy+boots%2c+pink": "/datum/gear/shoes/cowboyboots/pink",
|
||||
"cowboy+boots%2c+brown": "/datum/gear/shoes/cowboyboots",
|
||||
"cowboy+boots%2c+black": "/datum/gear/shoes/cowboyboots_black",
|
||||
"jackboots": "/datum/gear/shoes/jackboots",
|
||||
"jacksandals": "/datum/gear/shoes/jacksandals",
|
||||
"laceup+shoes": "/datum/gear/shoes/laceup",
|
||||
"Black+shoes": "/datum/gear/shoes/blackshoes",
|
||||
"Brown+shoes": "/datum/gear/shoes/brownshoes",
|
||||
"White+shoes": "/datum/gear/shoes/whiteshoes",
|
||||
"winter+coat%2c+security": "/datum/gear/suit/coat/job/sec",
|
||||
"winter+coat%2c+captain": "/datum/gear/suit/coat/job/captain",
|
||||
"winter+coat%2c+medical": "/datum/gear/suit/coat/job/med",
|
||||
"winter+coat%2c+science": "/datum/gear/suit/coat/job/sci",
|
||||
"winter+coat%2c+engineering": "/datum/gear/suit/coat/job/engi",
|
||||
"winter+coat%2c+atmospherics": "/datum/gear/suit/coat/job/atmos",
|
||||
"winter+coat%2c+hydroponics": "/datum/gear/suit/coat/job/hydro",
|
||||
"winter+coat%2c+cargo": "/datum/gear/suit/coat/job/cargo",
|
||||
"winter+coat%2c+miner": "/datum/gear/suit/coat/job/miner",
|
||||
"winter+coat": "/datum/gear/suit/coat/grey",
|
||||
"labcoat%2c+paramedic": "/datum/gear/suit/labcoat_emt",
|
||||
"leather+jacket": "/datum/gear/suit/leather_jacket",
|
||||
"leather+motorcycle+jacket": "/datum/gear/suit/motojacket",
|
||||
"trenchcoat%2c+brown": "/datum/gear/suit/br_tcoat",
|
||||
"trenchcoat%2c+black": "/datum/gear/suit/bl_tcoat",
|
||||
"bomber+jacket": "/datum/gear/suit/bomber_jacket",
|
||||
"military+jacket%2c+olive": "/datum/gear/suit/ol_miljacket",
|
||||
"military+jacket%2c+navy": "/datum/gear/suit/nv_miljacket",
|
||||
"military+jacket%2c+desert": "/datum/gear/suit/ds_miljacket",
|
||||
"military+jacket%2c+white": "/datum/gear/suit/wh_miljacket",
|
||||
"security+jacket": "/datum/gear/suit/secjacket",
|
||||
"security+bomber+jacket": "/datum/gear/suit/secbomberjacket",
|
||||
"Ian+Shirt": "/datum/gear/suit/ianshirt",
|
||||
"poncho%2c+classic": "/datum/gear/suit/poncho",
|
||||
"poncho%2c+green": "/datum/gear/suit/grponcho",
|
||||
"poncho%2c+red": "/datum/gear/suit/rdponcho",
|
||||
"hoodie%2c+Tharsis+Polytech": "/datum/gear/suit/tphoodie",
|
||||
"hoodie%2c+Nanotrasen": "/datum/gear/suit/nthoodie",
|
||||
"hoodie%2c+Lunar+Academy+of+Medicine": "/datum/gear/suit/lamhoodie",
|
||||
"hoodie%2c+Canaan+University+of+Technology": "/datum/gear/suit/cuthoodie",
|
||||
"hoodie%2c+Martian+Institute+of+Technology": "/datum/gear/suit/mithoodie",
|
||||
"hoodie%2c+blue": "/datum/gear/suit/bluehoodie",
|
||||
"hoodie%2c+black": "/datum/gear/suit/blackhoodie",
|
||||
"suit+jacket%2c+black": "/datum/gear/suit/blacksuit",
|
||||
"suit+jacket%2c+blue": "/datum/gear/suit/bluesuit",
|
||||
"suit+jacket%2c+purple": "/datum/gear/suit/purplesuit",
|
||||
"mantle%2c+captain": "/datum/gear/suit/mantle/job/captain",
|
||||
"mantle%2c+chief+engineer": "/datum/gear/suit/mantle/job/ce",
|
||||
"mantle%2c+chief+medical+officer": "/datum/gear/suit/mantle/job/cmo",
|
||||
"mantle%2c+head+of+security": "/datum/gear/suit/mantle/job/hos",
|
||||
"mantle%2c+head+of+personnel": "/datum/gear/suit/mantle/job/hop",
|
||||
"mantle%2c+research+director": "/datum/gear/suit/mantle/job/rd",
|
||||
"old+scarf": "/datum/gear/suit/old_scarf",
|
||||
"regal+shawl": "/datum/gear/suit/regal_shawl",
|
||||
"witch+robes": "/datum/gear/suit/witch",
|
||||
"jumpsuit%2c+black": "/datum/gear/uniform/suit/jumpsuitblack",
|
||||
"jumpsuit%2c+blue": "/datum/gear/uniform/suit/jumpsuitblue",
|
||||
"jumpsuit%2c+green": "/datum/gear/uniform/suit/jumpsuitgreen",
|
||||
"jumpsuit%2c+grey": "/datum/gear/uniform/suit/jumpsuitgrey",
|
||||
"jumpsuit%2c+orange": "/datum/gear/uniform/suit/jumpsuitorange",
|
||||
"jumpsuit%2c+pink": "/datum/gear/uniform/suit/jumpsuitpink",
|
||||
"jumpsuit%2c+red": "/datum/gear/uniform/suit/jumpsuitred",
|
||||
"jumpsuit%2c+white": "/datum/gear/uniform/suit/jumpsuitwhite",
|
||||
"jumpsuit%2c+yellowgreen": "/datum/gear/uniform/suit/jumpsuityellowgreen",
|
||||
"jumpsuit%2c+yellow": "/datum/gear/uniform/suit/jumpsuityellow",
|
||||
"jumpsuit%2c+lightblue": "/datum/gear/uniform/suit/jumpsuitlightblue",
|
||||
"jumpsuit%2c+aqua": "/datum/gear/uniform/suit/jumpsuitaqua",
|
||||
"jumpsuit%2c+purple": "/datum/gear/uniform/suit/jumpsuitpurple",
|
||||
"jumpsuit%2c+lightpurple": "/datum/gear/uniform/suit/jumpsuitlightpurple",
|
||||
"jumpsuit%2c+lightgreen": "/datum/gear/uniform/suit/jumpsuitlightgreen",
|
||||
"jumpsuit%2c+lightbrown": "/datum/gear/uniform/suit/jumpsuitlightbrown",
|
||||
"jumpsuit%2c+brown": "/datum/gear/uniform/suit/jumpsuitbrown",
|
||||
"jumpsuit%2c+darkblue": "/datum/gear/uniform/suit/jumpsuitdarkblue",
|
||||
"jumpsuit%2c+lightred": "/datum/gear/uniform/suit/jumpsuitlightred",
|
||||
"jumpsuit%2c+darkred": "/datum/gear/uniform/suit/jumpsuitdarkred",
|
||||
"USSP+uniform": "/datum/gear/uniform/suit/soviet",
|
||||
"a+kilt": "/datum/gear/uniform/suit/kilt",
|
||||
"tacticool+turtleneck": "/datum/gear/uniform/suit/tacticool",
|
||||
"plaid+skirt%2c+blue": "/datum/gear/uniform/skirt/blue",
|
||||
"plaid+skirt%2c+purple": "/datum/gear/uniform/skirt/purple",
|
||||
"plaid+skirt%2c+red": "/datum/gear/uniform/skirt/red",
|
||||
"skirt%2c+black": "/datum/gear/uniform/skirt/black",
|
||||
"skirt%2c+ce": "/datum/gear/uniform/skirt/job/ce",
|
||||
"skirt%2c+atmos": "/datum/gear/uniform/skirt/job/atmos",
|
||||
"skirt%2c+engineer": "/datum/gear/uniform/skirt/job/eng",
|
||||
"skirt%2c+roboticist": "/datum/gear/uniform/skirt/job/roboticist",
|
||||
"skirt%2c+cmo": "/datum/gear/uniform/skirt/job/cmo",
|
||||
"skirt%2c+chemist": "/datum/gear/uniform/skirt/job/chem",
|
||||
"skirt%2c+virologist": "/datum/gear/uniform/skirt/job/viro",
|
||||
"skirt%2c+medical": "/datum/gear/uniform/skirt/job/med",
|
||||
"skirt%2c+physician": "/datum/gear/uniform/skirt/job/phys",
|
||||
"skirt%2c+scientist": "/datum/gear/uniform/skirt/job/sci",
|
||||
"skirt%2c+cargo": "/datum/gear/uniform/skirt/job/cargo",
|
||||
"skirt%2c+QM": "/datum/gear/uniform/skirt/job/qm",
|
||||
"skirt%2c+warden": "/datum/gear/uniform/skirt/job/warden",
|
||||
"skirt%2c+security": "/datum/gear/uniform/skirt/job/security",
|
||||
"skirt%2c+hos": "/datum/gear/uniform/skirt/job/head_of_security",
|
||||
"skirt%2c+nt+rep": "/datum/gear/uniform/skirt/job/ntrep",
|
||||
"skirt%2c+blueshield": "/datum/gear/uniform/skirt/job/blueshield",
|
||||
"medical+scrubs%2c+purple": "/datum/gear/uniform/medical/pscrubs",
|
||||
"medical+scrubs%2c+green": "/datum/gear/uniform/medical/gscrubs",
|
||||
"security+uniform%2c+formal": "/datum/gear/uniform/sec/formal",
|
||||
"security+uniform%2c+corporate": "/datum/gear/uniform/sec/secorporate",
|
||||
"security+uniform%2c+dispatch": "/datum/gear/uniform/sec/dispatch",
|
||||
"security+uniform%2c+casual": "/datum/gear/uniform/sec/casual",
|
||||
"shorts%2c+red": "/datum/gear/uniform/shorts/red",
|
||||
"shorts%2c+green": "/datum/gear/uniform/shorts/green",
|
||||
"shorts%2c+blue": "/datum/gear/uniform/shorts/blue",
|
||||
"shorts%2c+black": "/datum/gear/uniform/shorts/black",
|
||||
"shorts%2c+grey": "/datum/gear/uniform/shorts/grey",
|
||||
"jeans%2c+classic": "/datum/gear/uniform/pants/jeans",
|
||||
"jeans%2c+mustang": "/datum/gear/uniform/pants/mjeans",
|
||||
"jeans%2c+black": "/datum/gear/uniform/pants/bljeans",
|
||||
"jeans%2c+Young+Folks": "/datum/gear/uniform/pants/yfjeans",
|
||||
"pants%2c+white": "/datum/gear/uniform/pants/whitepants",
|
||||
"pants%2c+red": "/datum/gear/uniform/pants/redpants",
|
||||
"pants%2c+black": "/datum/gear/uniform/pants/blackpants",
|
||||
"pants%2c+tan": "/datum/gear/uniform/pants/tanpants",
|
||||
"pants%2c+blue": "/datum/gear/uniform/pants/bluepants",
|
||||
"trackpants": "/datum/gear/uniform/pants/trackpants",
|
||||
"pants%2c+khaki": "/datum/gear/uniform/pants/khakipants",
|
||||
"pants%2c+camo": "/datum/gear/uniform/pants/caopants"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
# Converts all existing loadout `gear` listings in the `characters` table from their display_names to their typepaths.
|
||||
# To use, run `python loadout_converter.py {address} {username} {password} {database}` in the console, with the {} arguments being your SQL database information.
|
||||
|
||||
# Note: This must ONLY be run once, and ONLY if your loadout records are using the old system.
|
||||
|
||||
import re, mysql.connector, argparse, json, time
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("address", help="SQL server address (Use 127.0.0.1 for the current computer)")
|
||||
parser.add_argument("username", help="SQL login username")
|
||||
parser.add_argument("password", help="SQL login password")
|
||||
parser.add_argument("database", help="Database name (Default: paradise_gamedb)")
|
||||
|
||||
args = parser.parse_args()
|
||||
db = mysql.connector.connect(host=args.address, user=args.username, password=args.password, database=args.database)
|
||||
cursor = db.cursor()
|
||||
|
||||
startwatch = time.time()
|
||||
|
||||
with open('loadout_converter.json') as json_file:
|
||||
json = json.load(json_file)
|
||||
removals = json["remove"]
|
||||
# Format for both replacement variables is (Key: `display_name`, Value: typepath)
|
||||
standard_replacements = json["standard"]
|
||||
special_replacements = json["special"]
|
||||
|
||||
cursor.execute("SELECT id, gear FROM characters WHERE gear != \"\";")
|
||||
temp = cursor.fetchall()
|
||||
|
||||
|
||||
# Convert the rows into a dictionary. (Key: `id`, Value: `gear`)
|
||||
print("----------")
|
||||
loadouts = {}
|
||||
for i in temp:
|
||||
row = {i[0]: i[1]}
|
||||
loadouts.update(row)
|
||||
print("Cached gear listings.")
|
||||
|
||||
|
||||
# Replace all `display_name`s in the list with their typepaths.
|
||||
print("Converting gear listings...")
|
||||
for gear in loadouts:
|
||||
for item in standard_replacements:
|
||||
loadouts[gear] = loadouts[gear].replace(item, f"\"{standard_replacements[item]}\"")
|
||||
|
||||
for item in removals:
|
||||
loadouts[gear] = re.sub(fr'{item}(&|)|(&|){item}', "", loadouts[gear])
|
||||
# Replace anything in `removals` with "", plus an & before OR after if there is one.
|
||||
|
||||
for item in special_replacements:
|
||||
loadouts[gear] = re.sub(fr'(^|&)(?:{item})($|&)', fr'\1"{special_replacements[item]}"\2', loadouts[gear])
|
||||
# This is horrible, but as far as I can tell there's no other way of doing it.
|
||||
# If the subtype is converted first and then the parent type, you get "/datum/gear/accessory//datum/gear/accessory/scarf/christmas".
|
||||
# If the parent type is converted first and then the subtype, you get "/datum/gear/accessory/scarf%2c+christmas".
|
||||
# This regex ensures that either the start of the string, the end of the string, or an & character are surrounding `item`, so no false matches.
|
||||
|
||||
if not loadouts[gear]:
|
||||
continue # If after the replacements there's nothing left, don't reformat it.
|
||||
|
||||
# Convert to JSON formatting.
|
||||
loadouts[gear] = loadouts[gear].replace("&", ",")
|
||||
loadouts[gear] = "[" + loadouts[gear] + "]"
|
||||
print("Converted {} gear listings.".format(len(loadouts)))
|
||||
|
||||
|
||||
# Update the database.
|
||||
print("Updating database entries...")
|
||||
for id in loadouts:
|
||||
gear = loadouts[id]
|
||||
stmt = "UPDATE characters SET gear = %s WHERE id = %s;"
|
||||
cursor.execute(stmt, (gear, id))
|
||||
db.commit()
|
||||
|
||||
stopwatch = time.time()
|
||||
print("Database updated in {} seconds!".format(round(stopwatch - startwatch)))
|
||||
Reference in New Issue
Block a user