Merge branch 'master' into hair-gradients

This commit is contained in:
mochi
2021-10-27 13:33:12 +02:00
1117 changed files with 53392 additions and 61705 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -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", "Security Pod Pilot")
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", "Security Pod Pilot")
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", "Security Pod Pilot")
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", "Security Pod Pilot", "Internal Affairs Agent","Magistrate")
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", "Mechanic", "Life Support Specialist")
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", "Security Pod Pilot", "Brig Physician", "Internal Affairs Agent")
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", "Mechanic", "Life Support Specialist")
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", "Mechanic", "Life Support Specialist")
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", "Mechanic", "Life Support Specialist")
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", "Security Pod Pilot")
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", "Security Pod Pilot")
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", "Security Pod Pilot")
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", "Security Pod Pilot", "Internal Affairs Agent", "Magistrate")
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,227 +1,238 @@
/*
######################################################################################
## ##
## 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", "Security Pod Pilot")
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", "Mechanic")
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", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/suit/secbomberjacket
display_name = "security bomber jacket"
path = /obj/item/clothing/suit/jacket/pilot
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
display_name = "Security bomber jacket"
path = /obj/item/clothing/suit/jacket/secbomber
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/suit/ianshirt
display_name = "Ian Shirt"
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", "Security Pod Pilot")
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", "Security Pod Pilot")
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", "Security Pod Pilot")
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", "Security Pod Pilot")
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
File diff suppressed because it is too large Load Diff
@@ -1,32 +1,6 @@
/datum/preferences/proc/load_preferences(client/C)
var/datum/db_query/query = SSdbcore.NewQuery({"SELECT
ooccolor,
UI_style,
UI_style_color,
UI_style_alpha,
be_role,
default_slot,
toggles,
toggles_2,
sound,
volume_mixer,
lastchangelog,
exp,
clientfps,
atklog,
fuid,
parallax,
2fa_status
FROM player
WHERE ckey=:ckey"}, list(
"ckey" = C.ckey
))
if(!query.warn_execute())
qdel(query)
return
/datum/preferences/proc/load_preferences(datum/db_query/query)
// Looking for the query?
// Check ../login_processing/10-load_preferences.dm
//general preferences
while(query.NextRow())
@@ -48,8 +22,6 @@
parallax = text2num(query.item[16])
_2fa_status = query.item[17]
qdel(query)
//Sanitize
ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor))
UI_style = sanitize_inlist(UI_style, list("White", "Midnight", "Plasmafire", "Retro", "Slimecore", "Operative"), initial(UI_style))
@@ -65,7 +37,7 @@
atklog = sanitize_integer(atklog, 0, 100, initial(atklog))
fuid = sanitize_integer(fuid, 0, 10000000, initial(fuid))
parallax = sanitize_integer(parallax, 0, 16, initial(parallax))
return 1
return TRUE
/datum/preferences/proc/save_preferences(client/C)
@@ -126,570 +98,22 @@
qdel(query)
return 1
/datum/preferences/proc/load_character(client/C,slot)
saved = FALSE
if(!slot) slot = default_slot
slot = sanitize_integer(slot, 1, max_save_slots, initial(default_slot))
if(slot != default_slot)
default_slot = slot
var/datum/db_query/firstquery = SSdbcore.NewQuery("UPDATE player SET default_slot=:slot WHERE ckey=:ckey", list(
"slot" = slot,
"ckey" = C.ckey
))
if(!firstquery.warn_execute(async = FALSE)) // Dont make this async. It makes roundstart slow.
qdel(firstquery)
return
qdel(firstquery)
// Let's not have this explode if you sneeze on the DB
var/datum/db_query/query = SSdbcore.NewQuery({"SELECT
OOC_Notes,
real_name,
name_is_always_random,
gender,
age,
species,
language,
hair_colour,
secondary_hair_colour,
facial_hair_colour,
secondary_facial_hair_colour,
skin_tone,
skin_colour,
marking_colours,
head_accessory_colour,
hair_style_name,
facial_style_name,
marking_styles,
head_accessory_style_name,
alt_head_name,
eye_colour,
underwear,
undershirt,
backbag,
b_type,
alternate_option,
job_support_high,
job_support_med,
job_support_low,
job_medsci_high,
job_medsci_med,
job_medsci_low,
job_engsec_high,
job_engsec_med,
job_engsec_low,
job_karma_high,
job_karma_med,
job_karma_low,
flavor_text,
med_record,
sec_record,
gen_record,
disabilities,
player_alt_titles,
organ_data,
rlimb_data,
nanotrasen_relation,
speciesprefs,
socks,
body_accessory,
gear,
autohiss,
hair_gradient,
hair_gradient_offset,
hair_gradient_colour,
hair_gradient_alpha
FROM characters WHERE ckey=:ckey AND slot=:slot"}, list(
"ckey" = C.ckey,
"slot" = slot
))
if(!query.warn_execute(async = FALSE)) // Dont make this async. It makes roundstart slow.
qdel(query)
return
while(query.NextRow())
//Character
metadata = query.item[1]
real_name = query.item[2]
be_random_name = text2num(query.item[3])
gender = query.item[4]
age = text2num(query.item[5])
species = query.item[6]
language = query.item[7]
h_colour = query.item[8]
h_sec_colour = query.item[9]
f_colour = query.item[10]
f_sec_colour = query.item[11]
s_tone = text2num(query.item[12])
s_colour = query.item[13]
m_colours = params2list(query.item[14])
hacc_colour = query.item[15]
h_style = query.item[16]
f_style = query.item[17]
m_styles = params2list(query.item[18])
ha_style = query.item[19]
alt_head = query.item[20]
e_colour = query.item[21]
underwear = query.item[22]
undershirt = query.item[23]
backbag = query.item[24]
b_type = query.item[25]
//Jobs
alternate_option = text2num(query.item[26])
job_support_high = text2num(query.item[27])
job_support_med = text2num(query.item[28])
job_support_low = text2num(query.item[29])
job_medsci_high = text2num(query.item[30])
job_medsci_med = text2num(query.item[31])
job_medsci_low = text2num(query.item[32])
job_engsec_high = text2num(query.item[33])
job_engsec_med = text2num(query.item[34])
job_engsec_low = text2num(query.item[35])
job_karma_high = text2num(query.item[36])
job_karma_med = text2num(query.item[37])
job_karma_low = text2num(query.item[38])
//Miscellaneous
flavor_text = query.item[39]
med_record = query.item[40]
sec_record = query.item[41]
gen_record = query.item[42]
// Apparently, the preceding vars weren't always encoded properly...
if(findtext(flavor_text, "<")) // ... so let's clumsily check for tags!
flavor_text = html_encode(flavor_text)
if(findtext(med_record, "<"))
med_record = html_encode(med_record)
if(findtext(sec_record, "<"))
sec_record = html_encode(sec_record)
if(findtext(gen_record, "<"))
gen_record = html_encode(gen_record)
disabilities = text2num(query.item[43])
player_alt_titles = params2list(query.item[44])
organ_data = params2list(query.item[45])
rlimb_data = params2list(query.item[46])
nanotrasen_relation = query.item[47]
speciesprefs = text2num(query.item[48])
//socks
socks = query.item[49]
body_accessory = query.item[50]
loadout_gear = params2list(query.item[51])
autohiss_mode = text2num(query.item[52])
h_grad_style = query.item[53]
h_grad_offset_x = query.item[54] // parsed down below
h_grad_colour = query.item[55]
h_grad_alpha = query.item[56]
saved = TRUE
qdel(query)
//Sanitize
var/datum/species/SP = GLOB.all_species[species]
metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name, 1)
if(isnull(species)) species = "Human"
if(isnull(language)) language = "None"
if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation)
if(isnull(speciesprefs)) speciesprefs = initial(speciesprefs)
if(!real_name) real_name = random_name(gender,species)
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
gender = sanitize_gender(gender, FALSE, !SP.has_gender)
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
h_colour = sanitize_hexcolor(h_colour)
h_sec_colour = sanitize_hexcolor(h_sec_colour)
f_colour = sanitize_hexcolor(f_colour)
f_sec_colour = sanitize_hexcolor(f_sec_colour)
s_tone = sanitize_integer(s_tone, -185, 34, initial(s_tone))
s_colour = sanitize_hexcolor(s_colour)
for(var/marking_location in m_colours)
m_colours[marking_location] = sanitize_hexcolor(m_colours[marking_location], DEFAULT_MARKING_COLOURS[marking_location])
hacc_colour = sanitize_hexcolor(hacc_colour)
h_style = sanitize_inlist(h_style, GLOB.hair_styles_public_list, initial(h_style))
f_style = sanitize_inlist(f_style, GLOB.facial_hair_styles_list, initial(f_style))
for(var/marking_location in m_styles)
m_styles[marking_location] = sanitize_inlist(m_styles[marking_location], GLOB.marking_styles_list, DEFAULT_MARKING_STYLES[marking_location])
ha_style = sanitize_inlist(ha_style, GLOB.head_accessory_styles_list, initial(ha_style))
alt_head = sanitize_inlist(alt_head, GLOB.alt_heads_list, initial(alt_head))
e_colour = sanitize_hexcolor(e_colour)
underwear = sanitize_text(underwear, initial(underwear))
undershirt = sanitize_text(undershirt, initial(undershirt))
backbag = sanitize_text(backbag, initial(backbag))
b_type = sanitize_text(b_type, initial(b_type))
autohiss_mode = sanitize_integer(autohiss_mode, 0, 2, initial(autohiss_mode))
alternate_option = sanitize_integer(alternate_option, 0, 2, initial(alternate_option))
job_support_high = sanitize_integer(job_support_high, 0, 65535, initial(job_support_high))
job_support_med = sanitize_integer(job_support_med, 0, 65535, initial(job_support_med))
job_support_low = sanitize_integer(job_support_low, 0, 65535, initial(job_support_low))
job_medsci_high = sanitize_integer(job_medsci_high, 0, 65535, initial(job_medsci_high))
job_medsci_med = sanitize_integer(job_medsci_med, 0, 65535, initial(job_medsci_med))
job_medsci_low = sanitize_integer(job_medsci_low, 0, 65535, initial(job_medsci_low))
job_engsec_high = sanitize_integer(job_engsec_high, 0, 65535, initial(job_engsec_high))
job_engsec_med = sanitize_integer(job_engsec_med, 0, 65535, initial(job_engsec_med))
job_engsec_low = sanitize_integer(job_engsec_low, 0, 65535, initial(job_engsec_low))
job_karma_high = sanitize_integer(job_karma_high, 0, 65535, initial(job_karma_high))
job_karma_med = sanitize_integer(job_karma_med, 0, 65535, initial(job_karma_med))
job_karma_low = sanitize_integer(job_karma_low, 0, 65535, initial(job_karma_low))
disabilities = sanitize_integer(disabilities, 0, 65535, initial(disabilities))
socks = sanitize_text(socks, initial(socks))
body_accessory = sanitize_text(body_accessory, initial(body_accessory))
// h_grad_style =
var/list/expl = splittext(h_grad_offset_x, ",")
if(length(expl) == 2)
h_grad_offset_x = text2num(expl[1]) || 0
h_grad_offset_y = text2num(expl[2]) || 0
h_grad_colour = sanitize_hexcolor(h_grad_colour)
h_grad_alpha = sanitize_integer(h_grad_alpha, 0, 255, initial(h_grad_alpha))
// if(isnull(disabilities)) disabilities = 0
if(!player_alt_titles) player_alt_titles = new()
if(!organ_data) src.organ_data = list()
if(!rlimb_data) src.rlimb_data = list()
if(!loadout_gear) loadout_gear = list()
// Check if the current body accessory exists
if(!GLOB.body_accessory_by_name[body_accessory])
body_accessory = null
return 1
/datum/preferences/proc/save_character(client/C)
var/organlist
var/rlimblist
var/playertitlelist
var/gearlist
var/markingcolourslist = list2params(m_colours)
var/markingstyleslist = list2params(m_styles)
if(!isemptylist(organ_data))
organlist = list2params(organ_data)
if(!isemptylist(rlimb_data))
rlimblist = list2params(rlimb_data)
if(!isemptylist(player_alt_titles))
playertitlelist = list2params(player_alt_titles)
if(!isemptylist(loadout_gear))
gearlist = list2params(loadout_gear)
var/datum/db_query/firstquery = SSdbcore.NewQuery("SELECT slot FROM characters WHERE ckey=:ckey ORDER BY slot", list(
"ckey" = C.ckey
))
if(!firstquery.warn_execute())
qdel(firstquery)
return
while(firstquery.NextRow())
if(text2num(firstquery.item[1]) == default_slot)
var/datum/db_query/query = SSdbcore.NewQuery({"UPDATE characters
SET
OOC_Notes=:metadata,
real_name=:real_name,
name_is_always_random=:be_random_name,
gender=:gender,
age=:age,
species=:species,
language=:language,
hair_colour=:h_colour,
secondary_hair_colour=:h_sec_colour,
facial_hair_colour=:f_colour,
secondary_facial_hair_colour=:f_sec_colour,
skin_tone=:s_tone,
skin_colour=:s_colour,
marking_colours=:markingcolourslist,
head_accessory_colour=:hacc_colour,
hair_style_name=:h_style,
facial_style_name=:f_style,
marking_styles=:markingstyleslist,
head_accessory_style_name=:ha_style,
alt_head_name=:alt_head,
eye_colour=:e_colour,
underwear=:underwear,
undershirt=:undershirt,
backbag=:backbag,
b_type=:b_type,
alternate_option=:alternate_option,
job_support_high=:job_support_high,
job_support_med=:job_support_med,
job_support_low=:job_support_low,
job_medsci_high=:job_medsci_high,
job_medsci_med=:job_medsci_med,
job_medsci_low=:job_medsci_low,
job_engsec_high=:job_engsec_high,
job_engsec_med=:job_engsec_med,
job_engsec_low=:job_engsec_low,
job_karma_high=:job_karma_high,
job_karma_med=:job_karma_med,
job_karma_low=:job_karma_low,
flavor_text=:flavor_text,
med_record=:med_record,
sec_record=:sec_record,
gen_record=:gen_record,
player_alt_titles=:playertitlelist,
disabilities=:disabilities,
organ_data=:organlist,
rlimb_data=:rlimblist,
nanotrasen_relation=:nanotrasen_relation,
speciesprefs=:speciesprefs,
socks=:socks,
body_accessory=:body_accessory,
gear=:gearlist,
autohiss=:autohiss_mode,
hair_gradient=:h_grad_style,
hair_gradient_offset=:h_grad_offset,
hair_gradient_colour=:h_grad_colour,
hair_gradient_alpha=:h_grad_alpha
WHERE ckey=:ckey
AND slot=:slot"}, list(
// OH GOD SO MANY PARAMETERS
"metadata" = metadata,
"real_name" = real_name,
"be_random_name" = be_random_name,
"gender" = gender,
"age" = age,
"species" = species,
"language" = language,
"h_colour" = h_colour,
"h_sec_colour" = h_sec_colour,
"f_colour" = f_colour,
"f_sec_colour" = f_sec_colour,
"s_tone" = s_tone,
"s_colour" = s_colour,
"markingcolourslist" = markingcolourslist,
"hacc_colour" = hacc_colour,
"h_style" = h_style,
"f_style" = f_style,
"markingstyleslist" = markingstyleslist,
"ha_style" = ha_style,
"alt_head" = (alt_head ? alt_head : ""), // This it intentional. It wont work without it!
"e_colour" = e_colour,
"underwear" = underwear,
"undershirt" = undershirt,
"backbag" = backbag,
"b_type" = b_type,
"alternate_option" = alternate_option,
"job_support_high" = job_support_high,
"job_support_med" = job_support_med,
"job_support_low" = job_support_low,
"job_medsci_high" = job_medsci_high,
"job_medsci_med" = job_medsci_med,
"job_medsci_low" = job_medsci_low,
"job_engsec_high" = job_engsec_high,
"job_engsec_med" = job_engsec_med,
"job_engsec_low" = job_engsec_low,
"job_karma_high" = job_karma_high,
"job_karma_med" = job_karma_med,
"job_karma_low" = job_karma_low,
"flavor_text" = flavor_text,
"med_record" = med_record,
"sec_record" = sec_record,
"gen_record" = gen_record,
"playertitlelist" = (playertitlelist ? playertitlelist : ""), // This it intentnional. It wont work without it!
"disabilities" = disabilities,
"organlist" = (organlist ? organlist : ""),
"rlimblist" = (rlimblist ? rlimblist : ""),
"nanotrasen_relation" = nanotrasen_relation,
"speciesprefs" = speciesprefs,
"socks" = socks,
"body_accessory" = (body_accessory ? body_accessory : ""),
"gearlist" = (gearlist ? gearlist : ""),
"autohiss_mode" = autohiss_mode,
"h_grad_style" = h_grad_style,
"h_grad_offset" = "[h_grad_offset_x],[h_grad_offset_y]",
"h_grad_colour" = h_grad_colour,
"h_grad_alpha" = h_grad_alpha,
"ckey" = C.ckey,
"slot" = default_slot
)
)
if(!query.warn_execute())
qdel(firstquery)
qdel(query)
return
qdel(firstquery)
qdel(query)
return 1
qdel(firstquery)
var/datum/db_query/query = SSdbcore.NewQuery({"
INSERT INTO characters (ckey, slot, OOC_Notes, real_name, name_is_always_random, gender,
age, species, language,
hair_colour, secondary_hair_colour,
facial_hair_colour, secondary_facial_hair_colour,
skin_tone, skin_colour,
marking_colours,
head_accessory_colour,
hair_style_name,
facial_style_name,
marking_styles,
head_accessory_style_name,
alt_head_name,
eye_colour,
underwear, undershirt,
backbag, b_type, alternate_option,
job_support_high, job_support_med, job_support_low,
job_medsci_high, job_medsci_med, job_medsci_low,
job_engsec_high, job_engsec_med, job_engsec_low,
job_karma_high, job_karma_med, job_karma_low,
flavor_text,
med_record,
sec_record,
gen_record,
player_alt_titles,
disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs,
socks, body_accessory, gear, autohiss)
VALUES
(:ckey, :slot, :metadata, :name, :be_random_name, :gender,
:age, :species, :language,
:h_colour, :h_sec_colour,
:f_colour, :f_sec_colour,
:s_tone, :s_colour,
:markingcolourslist,
:hacc_colour,
:h_style,
:f_style,
:markingstyleslist,
:ha_style,
:alt_head,
:e_colour,
:underwear, :undershirt,
:backbag, :b_type, :alternate_option,
:job_support_high, :job_support_med, :job_support_low,
:job_medsci_high, :job_medsci_med, :job_medsci_low,
:job_engsec_high, :job_engsec_med, :job_engsec_low,
:job_karma_high, :job_karma_med, :job_karma_low,
:flavor_text,
:med_record,
:sec_record,
:gen_record,
:playertitlelist,
:disabilities, :organlist, :rlimblist, :nanotrasen_relation, :speciesprefs,
:socks, :body_accessory, :gearlist, :autohiss_mode)
"}, list(
// This has too many params for anyone to look at this without going insae
"ckey" = C.ckey,
"slot" = default_slot,
"metadata" = metadata,
"name" = real_name,
"be_random_name" = be_random_name,
"gender" = gender,
"age" = age,
"species" = species,
"language" = language,
"h_colour" = h_colour,
"h_sec_colour" = h_sec_colour,
"f_colour" = f_colour,
"f_sec_colour" = f_sec_colour,
"s_tone" = s_tone,
"s_colour" = s_colour,
"markingcolourslist" = markingcolourslist,
"hacc_colour" = hacc_colour,
"h_style" = h_style,
"f_style" = f_style,
"markingstyleslist" = markingstyleslist,
"ha_style" = ha_style,
"alt_head" = alt_head,
"e_colour" = e_colour,
"underwear" = underwear,
"undershirt" = undershirt,
"backbag" = backbag,
"b_type" = b_type,
"alternate_option" = alternate_option,
"job_support_high" = job_support_high,
"job_support_med" = job_support_med,
"job_support_low" = job_support_low,
"job_medsci_high" = job_medsci_high,
"job_medsci_med" = job_medsci_med,
"job_medsci_low" = job_medsci_low,
"job_engsec_high" = job_engsec_high,
"job_engsec_med" = job_engsec_med,
"job_engsec_low" = job_engsec_low,
"job_karma_high" = job_karma_high,
"job_karma_med" = job_karma_med,
"job_karma_low" = job_karma_low,
"flavor_text" = flavor_text,
"med_record" = med_record,
"sec_record" = sec_record,
"gen_record" = gen_record,
"playertitlelist" = (playertitlelist ? playertitlelist : ""), // This it intentnional. It wont work without it!
"disabilities" = disabilities,
"organlist" = (organlist ? organlist : ""),
"rlimblist" = (rlimblist ? rlimblist : ""),
"nanotrasen_relation" = nanotrasen_relation,
"speciesprefs" = speciesprefs,
"socks" = socks,
"body_accessory" = (body_accessory ? body_accessory : ""),
"gearlist" = (gearlist ? gearlist : ""),
"autohiss_mode" = autohiss_mode
))
if(!query.warn_execute())
qdel(query)
return
qdel(query)
saved = TRUE
return 1
/datum/preferences/proc/load_random_character_slot(client/C)
var/datum/db_query/query = SSdbcore.NewQuery("SELECT slot FROM characters WHERE ckey=:ckey ORDER BY slot", list(
"ckey" = C.ckey
))
var/list/saves = list()
var/list/datum/character_save/valid_slots = list()
for(var/datum/character_save/CS in character_saves)
if(CS.valid_save)
valid_slots += CS
if(!query.warn_execute(async = FALSE)) // Dont async this. Youll make roundstart slow.
qdel(query)
if(!length(valid_slots))
// They have no valid saves. Lets just randomise #1
var/datum/character_save/CS = C.prefs.character_saves[1] // Get slot 1
CS.randomise()
CS.real_name = random_name(CS.gender) // Pick a name
C.prefs.active_character = C.prefs.character_saves[1] // Set slot 1 as their active
return
while(query.NextRow())
saves += text2num(query.item[1])
qdel(query)
if(!saves.len)
load_character(C)
return 0
load_character(C,pick(saves))
return 1
/datum/preferences/proc/clear_character_slot(client/C)
. = FALSE
// Is there a character in that slot?
var/datum/db_query/query = SSdbcore.NewQuery("SELECT slot FROM characters WHERE ckey=:ckey AND slot=:slot", list(
"ckey" = C.ckey,
"slot" = default_slot
))
if(!query.warn_execute())
qdel(query)
return
if(!query.NextRow())
qdel(query)
return
qdel(query)
var/datum/db_query/delete_query = SSdbcore.NewQuery("DELETE FROM characters WHERE ckey=:ckey AND slot=:slot", list(
"ckey" = C.ckey,
"slot" = default_slot
))
if(!delete_query.warn_execute())
qdel(delete_query)
return
qdel(delete_query)
saved = FALSE
return TRUE
var/datum/character_save/CS = pick(valid_slots)
C.prefs.active_character = CS
/**
* Saves [/datum/preferences/proc/volume_mixer] for the current client.
@@ -347,7 +347,7 @@
set desc = "Toggles forcing your runechat colour to white"
prefs.toggles2 ^= PREFTOGGLE_2_FORCE_WHITE_RUNECHAT
prefs.save_preferences(src)
to_chat(src, "Your runechats will [(prefs.toggles2 & PREFTOGGLE_2_FORCE_WHITE_RUNECHAT) ? "no longer" : "now"] be forced to be white.")
to_chat(src, "Your runechats will [(prefs.toggles2 & PREFTOGGLE_2_FORCE_WHITE_RUNECHAT) ? "now" : "no longer"] be forced to be white.")
/client/verb/toggle_simple_stat_panel()
set name = "Toggle Simple Status Panel"
@@ -356,3 +356,11 @@
prefs.toggles2 ^= PREFTOGGLE_2_SIMPLE_STAT_PANEL
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_SIMPLE_STAT_PANEL) ? "no longer" : "now"] get detailed information on the status panel.")
/client/verb/toggle_item_outlines()
set name = "Toggle Item Outlines"
set category = "Preferences"
set desc = "Toggles seeing item outlines on hover."
prefs.toggles2 ^= PREFTOGGLE_2_SEE_ITEM_OUTLINES
prefs.save_preferences(src)
to_chat(usr, "You will [(prefs.toggles2 & PREFTOGGLE_2_SEE_ITEM_OUTLINES) ? "now" : "no longer"] see item outlines on hover.")