Uploading all files.

This commit is contained in:
Quotefox
2019-09-23 18:26:34 +02:00
commit 7091cdbe8c
7779 changed files with 2601004 additions and 0 deletions
@@ -0,0 +1,2 @@
/client
var/cryo_warned = -3000//when was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns
@@ -0,0 +1,43 @@
/client/New()
. = ..()
mentor_datum_set()
/client/proc/citadel_client_procs(href_list)
if(href_list["mentor_msg"])
if(CONFIG_GET(flag/mentors_mobname_only))
var/mob/M = locate(href_list["mentor_msg"])
cmd_mentor_pm(M,null)
else
cmd_mentor_pm(href_list["mentor_msg"],null)
return TRUE
//Mentor Follow
if(href_list["mentor_follow"])
var/mob/living/M = locate(href_list["mentor_follow"])
if(istype(M))
mentor_follow(M)
return TRUE
/client/proc/mentor_datum_set(admin)
mentor_datum = GLOB.mentor_datums[ckey]
if(!mentor_datum && check_rights_for(src, R_ADMIN,0)) // admin with no mentor datum?let's fix that
new /datum/mentors(ckey)
if(mentor_datum)
if(!check_rights_for(src, R_ADMIN,0) && !admin)
GLOB.mentors |= src // don't add admins to this list too.
mentor_datum.owner = src
add_mentor_verbs()
mentor_memo_output("Show")
/client/proc/is_mentor() // admins are mentors too.
if(mentor_datum || check_rights_for(src, R_ADMIN,0))
return TRUE
/client/verb/togglerightclickstuff()
set category = "OOC"
set name = "Toggle Rightclick"
set desc = "Did the context menu get stuck on or off? Press this button."
show_popup_menus = !show_popup_menus
to_chat(src, "<span class='notice'>The right-click context menu is now [show_popup_menus ? "enabled" : "disabled"].</span>")
@@ -0,0 +1,450 @@
//This is the file that handles donator loadout items.
/datum/gear/pingcoderfailsafe
name = "IF YOU SEE THIS, PING A CODER RIGHT NOW!"
category = SLOT_IN_BACKPACK
path = /obj/item/bikehorn/golden
ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard
/datum/gear/donortestingbikehorn
name = "Donor item testing bikehorn"
category = SLOT_IN_BACKPACK
path = /obj/item/bikehorn
geargroupID = list("DONORTEST") //This is a list mainly for the sake of testing, but geargroupID works just fine with ordinary strings
/datum/gear/kevhorn
name = "Airhorn"
category = SLOT_IN_BACKPACK
path = /obj/item/bikehorn/airhorn
ckeywhitelist = list("kevinz000")
/datum/gear/cebusoap
name = "Cebutris' soap"
category = SLOT_IN_BACKPACK
path = /obj/item/custom/ceb_soap
ckeywhitelist = list("cebutris")
/datum/gear/kiaracloak
name = "Kiara's cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaracollar
name = "Kiara's collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaramedal
name = "Insignia of Steele"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/accessory/medal/steele
ckeywhitelist = list("inferno707")
/datum/gear/hheart
name = "The Hollow Heart"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/hheart
ckeywhitelist = list("inferno707")
/datum/gear/engravedzippo
name = "Engraved zippo"
category = SLOT_HANDS
path = /obj/item/lighter/gold
ckeywhitelist = list("dirtyoldharry")
/datum/gear/geisha
name = "Geisha suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/geisha
ckeywhitelist = list("atiefling")
/datum/gear/specialscarf
name = "Special scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/zomb
ckeywhitelist = list("zombierobin")
/datum/gear/redmadcoat
name = "The Mad's labcoat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/toggle/labcoat/mad/red
ckeywhitelist = list("zombierobin")
/datum/gear/santahat
name = "Santa hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/reindeerhat
name = "Reindeer hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/hardhat/reindeer/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treeplushie
name = "Christmas tree plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/tree
ckeywhitelist = list("illotafv")
/datum/gear/santaoutfit
name = "Santa costume"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/space/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treecloak
name = "Christmas tree cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/festive
ckeywhitelist = list("illotafv")
/datum/gear/carrotplush
name = "Carrot plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/carrot
ckeywhitelist = list("improvedname")
/datum/gear/carrotcloak
name = "Carrot cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/carrot
ckeywhitelist = list("improvedname")
/datum/gear/albortorosamask
name = "Alborto Rosa mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/luchador/zigfie
ckeywhitelist = list("zigfie")
/datum/gear/mankini
name = "Mankini"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/mankini
ckeywhitelist = list("zigfie")
/datum/gear/pinkshoes
name = "Pink shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/pink
ckeywhitelist = list("zigfie")
/datum/gear/reecesgreatcoat
name = "Reece's Great Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/trenchcoat/green
ckeywhitelist = list("geemiesif")
/datum/gear/russianflask
name = "Russian flask"
category = SLOT_IN_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/russian
cost = 2
ckeywhitelist = list("slomka")
/datum/gear/stalkermask
name = "S.T.A.L.K.E.R. mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/gas/stalker
ckeywhitelist = list("slomka")
/datum/gear/stripedcollar
name = "Striped collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/stripe
ckeywhitelist = list("jademanique")
/datum/gear/performersoutfit
name = "Bluish performer's outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/singery/custom
ckeywhitelist = list("killer402402")
/datum/gear/vermillion
name = "Vermillion clothing"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/suit/vermillion
ckeywhitelist = list("fractious")
/datum/gear/AM4B
name = "Foam Force AM4-B"
category = SLOT_IN_BACKPACK
path = /obj/item/gun/ballistic/automatic/AM4B
ckeywhitelist = list("zeronetalpha")
/datum/gear/carrotsatchel
name = "Carrot Satchel"
category = SLOT_HANDS
path = /obj/item/storage/backpack/satchel/carrot
ckeywhitelist = list("improvedname")
/datum/gear/naomisweater
name = "worn black sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/black/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/naomicollar
name = "worn pet collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/gladiator
name = "Gladiator Armor"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/gladiator
ckeywhitelist = list("aroche")
/datum/gear/bloodredtie
name = "Blood Red Tie"
category = SLOT_NECK
path = /obj/item/clothing/neck/tie/bloodred
ckeywhitelist = list("kyutness")
/datum/gear/puffydress
name = "Puffy Dress"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/puffydress
ckeywhitelist = list("stallingratt")
/datum/gear/labredblack
name = "Black and Red Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/toggle/labcoat/labredblack
ckeywhitelist = list("blakeryan", "durandalphor")
/datum/gear/torisword
name = "Rainbow Zweihander"
category = SLOT_IN_BACKPACK
path = /obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/darksabre
name = "Dark Sabre"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/darksabre
ckeywhitelist = list("inferno707")
datum/gear/darksabresheath
name = "Dark Sabre Sheath"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/belt/sabre/darksabre
ckeywhitelist = list("inferno707")
/datum/gear/toriball
name = "Rainbow Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/izzyball
name = "Katlin's Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/rainbow/izzy
ckeywhitelist = list("izzyinbox")
/datum/gear/cloak
name = "Green Cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/green
ckeywhitelist = list("killer402402")
/datum/gear/steelflask
name = "Steel Flask"
category = SLOT_IN_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/steel
cost = 2
ckeywhitelist = list("nik707")
/datum/gear/paperhat
name = "Paper Hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/paperhat
ckeywhitelist = list("kered2")
/datum/gear/cloakce
name = "Polychromic CE Cloak"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/neck/cloak/polychromic/polyce
ckeywhitelist = list("worksbythesea", "blakeryan")
/datum/gear/ssk
name = "Stun Sword Kit"
category = SLOT_IN_BACKPACK
path = /obj/item/ssword_kit
ckeywhitelist = list("phillip458")
/datum/gear/techcoat
name = "Techomancers Labcoat"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/suit/toggle/labcoat/mad/techcoat
ckeywhitelist = list("wilchen")
/datum/gear/leechjar
name = "Jar of Leeches"
category = SLOT_IN_BACKPACK
path = /obj/item/custom/leechjar
ckeywhitelist = list("sgtryder")
/datum/gear/darkarmor
name = "Dark Armor"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/suit/armor/vest/darkcarapace
ckeywhitelist = list("inferno707")
/datum/gear/devilwings
name = "Strange Wings"
category = SLOT_NECK
path = /obj/item/clothing/neck/devilwings
ckeywhitelist = list("kitsun")
/datum/gear/flagcape
name = "US Flag Cape"
category = SLOT_IN_BACKPACK
path = /obj/item/bedsheet/custom/flagcape
ckeywhitelist = list("darnchacha")
/datum/gear/luckyjack
name = "Lucky Jackboots"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/shoes/lucky
ckeywhitelist = list("donaldtrumpthecommunist")
/datum/gear/raiqbawks
name = "Miami Boombox"
category = SLOT_HANDS
cost = 2
path = /obj/item/boombox/raiq
ckeywhitelist = list("chefferz")
/datum/gear/m41
name = "Toy M41"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/gun/m41
ckeywhitelist = list("thalverscholen")
/datum/gear/Divine_robes
name = "Divine robes"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/lunasune
ckeywhitelist = list("invader4352")
/datum/gear/gothcoat
name = "Goth Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/gothcoat
ckeywhitelist = list("norko")
/datum/gear/corgisuit
name = "Corgi Suit"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/ian_costume
ckeywhitelist = list("cathodetherobot")
/datum/gear/sharkcloth
name = "Leon's Skimpy Outfit"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/leoskimpy
ckeywhitelist = list("spectrosis")
/datum/gear/mimemask
name = "Mime Mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/gas/mime
ckeywhitelist = list("pireamaineach")
/datum/gear/mimeoveralls
name = "Mime's Overalls"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/mimeoveralls
ckeywhitelist = list("pireamaineach")
/datum/gear/soulneck
name = "Soul Necklace"
category = SLOT_NECK
path = /obj/item/clothing/neck/undertale
ckeywhitelist = list("twilightic")
/datum/gear/frenchberet
name = "French Beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/frenchberet
ckeywhitelist = list("notazoltan")
/datum/gear/zuliecloak
name = "Project: Zul-E"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/cloak/zuliecloak
ckeywhitelist = list("asky")
/datum/gear/blackredgold
name = "Black, Red, and Gold Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/blackredgold
ckeywhitelist = list("ttbnc")
/datum/gear/fritzplush
name = "Fritz Plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/mammal/dog/fritz
ckeywhitelist = list("analwerewolf")
/datum/gear/kimono
name = "Kimono"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/kimono
ckeywhitelist = list("sfox63")
/datum/gear/commjacket
name = "Dusty Commisar's Cloak"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/commjacket
ckeywhitelist = list("sadisticbatter")
/datum/gear/mw2_russian_para
name = "Russian Paratrooper Jumper"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/mw2_russian_para
ckeywhitelist = list("investigator77")
/datum/gear/longblackgloves
name = "Luna's Gauntlets"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/longblackgloves
ckeywhitelist = list("bigmanclancy")
/datum/gear/trendy_fit
name = "Trendy Fit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trendy_fit
ckeywhitelist = list("midgetdragon")
/datum/gear/singery
name = "Yellow Performer Outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/singery
ckeywhitelist = list("maxlynchy")
/datum/gear/csheet
name = "NT Bedsheet"
category = SLOT_NECK
path = /obj/item/bedsheet/captain
ckeywhitelist = list("tikibomb")
/datum/gear/borgplush
name = "Robot Plush"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/borgplushie
ckeywhitelist = list("nicholaiavenicci")
/datum/gear/donorberet
name = "Atmos Beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/blueberet
ckeywhitelist = list("foxystalin")
@@ -0,0 +1,32 @@
/datum/gear/stethoscope
name = "Medical Briefcase"
category = SLOT_HANDS
path = /obj/item/storage/briefcase/medical
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
/datum/gear/stethoscope
name = "Stethoscope"
category = SLOT_NECK
path = /obj/item/clothing/neck/stethoscope
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
/datum/gear/bluescrubs
name = "Blue Scrubs"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/medical/blue
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
/datum/gear/greenscrubs
name = "Green Scrubs"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/medical/green
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
/datum/gear/purplescrubs
name = "Purple Scrubs"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/medical/purple
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
@@ -0,0 +1,71 @@
/datum/gear/navyblueuniformhos
name = "Head of Security navyblue uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/head_of_security/navyblue
restricted_roles = list("Head of Security")
/datum/gear/navybluehosberet
name = "Head of security's Naviblue beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/sec/navyhos
restricted_roles = list("Head of Security")
/datum/gear/navybluejackethos
name = "head of security's navyblue jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/security/hos
restricted_roles = list("Head of Security")
/datum/gear/navybluejacketofficer
name = "security officer's navyblue jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/security/officer
restricted_roles = list("Security Officer")
/datum/gear/navyblueofficerberet
name = "Security officer's Navyblue beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/sec/navyofficer
restricted_roles = list("Security Officer")
/datum/gear/navyblueuniformofficer
name = "Security officer navyblue uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/security/navyblue
restricted_roles = list("Security Officer")
/datum/gear/navybluejacketwarden
name = "warden navyblue jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/security/warden
restricted_roles = list("Warden")
/datum/gear/navybluewardenberet
name = "Warden's navyblue beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/sec/navywarden
restricted_roles = list("Warden")
/datum/gear/navyblueuniformwarden
name = "Warden navyblue uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/warden/navyblue
restricted_roles = list("Warden")
/datum/gear/secskirt
name = "Security skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/security/skirt
restricted_roles = list("Security Officer", "Warden", "Head of Security")
/datum/gear/hosskirt
name = "Head of security's skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/head_of_security/skirt
restricted_roles = list("Head of Security")
/datum/gear/sechud
name = "Security Hud"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/hud/security
restricted_roles = list("Security Officer", "Warden", "Head of Security")
@@ -0,0 +1,19 @@
/datum/gear/greytidestationwide
name = "Grey jumpsuit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/color/grey
restricted_roles = list("Assistant")
/datum/gear/plushvar
name = "Ratvar Plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/plushvar
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/narplush
name = "Narsie Plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/narplush
cost = 5
restricted_roles = list("Chaplain")
@@ -0,0 +1,102 @@
/datum/gear/plushcarp
name = "Space carp plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/carpplushie
/datum/gear/plushliz
name = "Lizard plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/lizardplushie
/datum/gear/plushsnek
name = "Snake plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/snakeplushie
/datum/gear/plushslime
name = "Slime plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/slimeplushie
/datum/gear/plushlamp
name = "Lamp plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/lampplushie
/datum/gear/tennis
name = "Classic Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis
/datum/gear/tennisred
name = "Red Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/red
/datum/gear/tennisyellow
name = "Yellow Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/yellow
/datum/gear/tennisgreen
name = "Green Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/green
/datum/gear/tenniscyan
name = "Cyan Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/cyan
/datum/gear/tennisblue
name = "Blue Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/blue
/datum/gear/tennispurple
name = "Purple Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/purple
/datum/gear/dildo
name = "Customizable dildo"
category = SLOT_IN_BACKPACK
path = /obj/item/dildo/custom
/datum/gear/paperbin
name = "Paper Bin"
category = SLOT_IN_BACKPACK
path = /obj/item/paper_bin
/datum/gear/crayons
name = "Box of crayons"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/crayons
/datum/gear/toykatana
name = "Toy Katana"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/katana
cost = 3
/datum/gear/box
name = "Spare box"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/box
cost = 2
/datum/gear/crowbar
name = "Pocket Crowbar"
category = SLOT_IN_BACKPACK
path = /obj/item/crowbar
cost = 2
/datum/gear/tapeplayer
name = "Taperecorder"
category = SLOT_IN_BACKPACK
path = /obj/item/taperecorder
/datum/gear/tape
name = "Spare cassette tape"
category = SLOT_IN_BACKPACK
path = /obj/item/tape/random
@@ -0,0 +1,44 @@
/datum/gear/cold
name = "Cold goggles"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/cold
/datum/gear/eyepatch
name = "Eyepatch"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/eyepatch
/datum/gear/heat
name = "Heat goggles"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/heat
/datum/gear/hipster
name = "Hipster glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/regular/hipster
/datum/gear/jamjar
name = "Jamjar glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/regular/jamjar
/datum/gear/monocle
name = "Monocle"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/monocle
/datum/gear/orange
name = "Orange glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/orange
/datum/gear/red
name = "Red Glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/red
/datum/gear/prescription
name = "Prescription glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/regular
@@ -0,0 +1,4 @@
/datum/gear/fingerless
name = "Fingerless Gloves"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/fingerless
@@ -0,0 +1,67 @@
/datum/gear/cane
name = "Cane"
category = SLOT_HANDS
path = /obj/item/cane
/datum/gear/cigarettes
name = "Cigarette pack"
category = SLOT_HANDS
path = /obj/item/storage/fancy/cigarettes
/datum/gear/dice
name = "Dice bag"
category = SLOT_HANDS
path = /obj/item/storage/pill_bottle/dice
/datum/gear/eightball
name = "Magic eightball"
category = SLOT_HANDS
path = /obj/item/toy/eightball
/datum/gear/matches
name = "Matchbox"
category = SLOT_HANDS
path = /obj/item/storage/box/matches
/datum/gear/cheaplighter
name = "Cheap lighter"
category = SLOT_HANDS
path = /obj/item/lighter/greyscale
/datum/gear/cards
name = "Playing cards"
category = SLOT_HANDS
path = /obj/item/toy/cards/deck
/datum/gear/skub
name = "Skub"
category = SLOT_HANDS
path = /obj/item/skub
/datum/gear/carpplushie
name = "Space carp plushie"
category = SLOT_HANDS
path = /obj/item/toy/plush/carpplushie
/datum/gear/wallet
name = "Wallet"
category = SLOT_HANDS
path = /obj/item/storage/wallet
/datum/gear/flask
name = "Flask"
category = SLOT_HANDS
path = /obj/item/reagent_containers/food/drinks/flask
cost = 2
/datum/gear/zippolighter
name = "Zippo Lighter"
category = SLOT_HANDS
path = /obj/item/lighter
cost = 2
/datum/gear/cigar
name = "Cigar"
category = SLOT_HANDS
path = /obj/item/clothing/mask/cigarette/cigar
cost = 4 //smoking is bad mkay
@@ -0,0 +1,94 @@
/datum/gear/baseball
name = "Ballcap"
category = SLOT_HEAD
path = /obj/item/clothing/head/soft/mime
/datum/gear/beanie
name = "Beanie"
category = SLOT_HEAD
path = /obj/item/clothing/head/beanie
/datum/gear/beret
name = "Black beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/black
/datum/gear/flatcap
name = "Flat cap"
category = SLOT_HEAD
path = /obj/item/clothing/head/flatcap
/datum/gear/pirate
name = "Pirate hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/pirate
/datum/gear/rice_hat
name = "Rice hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/rice_hat
/datum/gear/ushanka
name = "Ushanka"
category = SLOT_HEAD
path = /obj/item/clothing/head/ushanka
/datum/gear/slime
name = "Slime hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/collectable/slime
/datum/gear/fedora
name = "Fedora"
category = SLOT_HEAD
path = /obj/item/clothing/head/fedora
/datum/gear/that
name = "Top Hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/that
/datum/gear/flakhelm
name = "Flak Helmet"
category = SLOT_HEAD
path = /obj/item/clothing/head/flakhelm
cost = 2
/datum/gear/bunnyears
name = "Bunny Ears"
category = SLOT_HEAD
path = /obj/item/clothing/head/rabbitears
//trek fancy Hats!
/datum/gear/trekcap
name = "Federation Officer's Cap (White)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcapcap
name = "Federation Officer's Cap (Black)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/black
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcapmedisci
name = "Federation Officer's Cap (Blue)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/medsci
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekcapeng
name = "Federation Officer's Cap (Yellow)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/eng
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/trekcapsec
name = "Federation Officer's Cap (Red)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/sec
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
@@ -0,0 +1,61 @@
// Loadout system. All items are children of /datum/gear. To make a new item, you usually just define a new item like /datum/gear/example
// then set required vars like name(string), category(slot define, take them from code/__DEFINES/inventory.dm (the lowertext ones) (be sure that there is an entry in
// slot_to_string(slot) proc in hippiestation/code/_HELPERS/mobs.dm to show the category name in preferences menu) and path (the actual item path).
// description defaults to the path initial desc, cost defaults to 1 point but if you think your item requires more points, the framework allows that
// and lastly, restricted_roles list allows you to let someone spawn with certain items only if the job they spawned with is on the list.
GLOBAL_LIST_EMPTY(loadout_items)
GLOBAL_LIST_EMPTY(loadout_whitelist_ids)
/proc/load_loadout_config(loadout_config)
if(!loadout_config)
loadout_config = "config/loadout_config.txt"
LAZYINITLIST(GLOB.loadout_whitelist_ids)
var/list/file_lines = world.file2list(loadout_config)
for(var/line in file_lines)
if(!line || findtextEx(line,"#",1,2))
continue
var/list/lineinfo = splittext(line, "|")
var/lineID = lineinfo[1]
for(var/subline in lineinfo)
var/sublinetypedef = findtext(subline, "=")
if(sublinetypedef)
var/sublinetype = copytext(subline, 1, sublinetypedef)
var/list/sublinecontent = splittext(copytext(subline, sublinetypedef+1), ",")
if(sublinetype == "WHITELIST")
GLOB.loadout_whitelist_ids["[lineID]"] = sublinecontent
/proc/initialize_global_loadout_items()
LAZYINITLIST(GLOB.loadout_items)
load_loadout_config()
for(var/item in subtypesof(/datum/gear))
var/datum/gear/I = new item
if(!GLOB.loadout_items[slot_to_string(I.category)])
LAZYINITLIST(GLOB.loadout_items[slot_to_string(I.category)])
LAZYSET(GLOB.loadout_items[slot_to_string(I.category)], I.name, I)
if(islist(I.geargroupID))
var/list/ggidlist = I.geargroupID
I.ckeywhitelist = list()
for(var/entry in ggidlist)
if(entry in GLOB.loadout_whitelist_ids)
I.ckeywhitelist |= GLOB.loadout_whitelist_ids["[entry]"]
else if(I.geargroupID in GLOB.loadout_whitelist_ids)
I.ckeywhitelist = GLOB.loadout_whitelist_ids["[I.geargroupID]"]
/datum/gear
var/name
var/category
var/description
var/path //item-to-spawn path
var/cost = 1 //normally, each loadout costs a single point.
var/geargroupID //defines the ID that the gear inherits from the config
var/list/restricted_roles
var/list/ckeywhitelist
var/restricted_desc
/datum/gear/New()
..()
if(!description && path)
var/obj/O = path
description = initial(O.desc)
@@ -0,0 +1,9 @@
/datum/gear/balaclava
name = "Balaclava"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/balaclava
/datum/gear/moustache
name = "Fake moustache"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/fakemoustache
@@ -0,0 +1,94 @@
/datum/gear/bluetie
name = "Blue tie"
category = SLOT_NECK
path = /obj/item/clothing/neck/tie/blue
/datum/gear/redtie
name = "Red tie"
category = SLOT_NECK
path = /obj/item/clothing/neck/tie/red
/datum/gear/blacktie
name = "Black tie"
category = SLOT_NECK
path = /obj/item/clothing/neck/tie/black
/datum/gear/collar
name = "Collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar
/datum/gear/leathercollar
name = "Leather collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/leather
/datum/gear/choker
name = "Choker"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/choker
/datum/gear/scarf
name = "White scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf
/datum/gear/blackscarf
name = "Black scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/black
/datum/gear/redscarf
name = "Red scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/red
/datum/gear/greenscarf
name = "Green scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/green
/datum/gear/darkbluescarf
name = "Dark blue scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/darkblue
/datum/gear/purplescarf
name = "Purple scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/purple
/datum/gear/yellowscarf
name = "Yellow scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/yellow
/datum/gear/orangescarf
name = "Orange scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/orange
/datum/gear/cyanscarf
name = "Cyan scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/cyan
/datum/gear/stripedredscarf
name = "Striped red scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/stripedredscarf
/datum/gear/stripedbluescarf
name = "Striped blue scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/stripedbluescarf
/datum/gear/stripedgreenscarf
name = "Striped green scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/stripedgreenscarf
/datum/gear/headphones
name = "Headphones"
category = SLOT_NECK
path = /obj/item/clothing/ears/headphones
@@ -0,0 +1,39 @@
/datum/gear/laceup
name = "Laceup shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/laceup
/datum/gear/workboots
name = "Work boots"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/workboots
/datum/gear/jackboots
name = "Jackboots"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/jackboots
/datum/gear/winterboots
name = "Winter boots"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/winterboots
/datum/gear/sandals
name = "Sandals"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sandal
/datum/gear/blackshoes
name = "Black shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/black
/datum/gear/brownshoes
name = "Brown shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/brown
/datum/gear/whiteshoes
name = "White shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/white
@@ -0,0 +1,145 @@
/datum/gear/poncho
name = "Poncho"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/poncho
/datum/gear/ponchogreen
name = "Green poncho"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/poncho/green
/datum/gear/ponchored
name = "Red poncho"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/poncho/red
/datum/gear/redhood
name = "Red cloak"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/cloak/david
cost = 3
/datum/gear/jacketbomber
name = "Bomber jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket
/datum/gear/jacketleather
name = "Leather jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/leather
/datum/gear/overcoatleather
name = "Leather overcoat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/leather/overcoat
/datum/gear/jacketpuffer
name = "Puffer jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/puffer
/datum/gear/vestpuffer
name = "Puffer vest"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/puffer/vest
/datum/gear/jacketlettermanbrown
name = "Brown letterman jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/letterman
/datum/gear/jacketlettermanred
name = "Red letterman jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/letterman_red
/datum/gear/jacketlettermanNT
name = "Nanotrasen letterman jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/letterman_nanotrasen
/datum/gear/coat
name = "Winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat
/datum/gear/militaryjacket
name = "Military Jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/miljacket
/datum/gear/ianshirt
name = "Ian Shirt"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/ianshirt
/datum/gear/flakjack
name = "Flak Jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/flakjack
cost = 2
/datum/gear/trekds9_coat
name = "DS9 Overcoat (use uniform)"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/trek/ds9
restricted_desc = "All, barring Service and Civilian"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster",
"Medical Doctor","Chemist","Virologist","Geneticist","Scientist", "Roboticist",
"Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer",
"Cargo Technician", "Shaft Miner") //everyone who actually deserves a job.
//Federation jackets from movies
/datum/gear/trekcmdcap
name = "Fed (movie) uniform, Black"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat/capt
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcmdmov
name = "Fed (movie) uniform, Red"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat
restricted_desc = "Heads of Staff and Security"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer")
/datum/gear/trekmedscimov
name = "Fed (movie) uniform, Blue"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat/medsci
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengmov
name = "Fed (movie) uniform, Yellow"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat/eng
restricted_desc = "Engineering and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/trekcmdcapmod
name = "Fed (Modern) uniform, White"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcmdmod
name = "Fed (Modern) uniform, Red"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/sec
restricted_desc = "Heads of Staff and Security"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer")
/datum/gear/trekmedscimod
name = "Fed (Modern) uniform, Blue"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/medsci
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengmod
name = "Fed (Modern) uniform, Yellow"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/eng
restricted_desc = "Engineering and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster")
@@ -0,0 +1,316 @@
/datum/gear/suitblack
name = "Black suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket
/datum/gear/suitgreen
name = "Green suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket/green
/datum/gear/suitred
name = "Red suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket/red
/datum/gear/suitcharcoal
name = "Charcoal suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket/charcoal
/datum/gear/suitnavy
name = "Navy suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket/navy
/datum/gear/suitburgundy
name = "Burgundy suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket/burgundy
/datum/gear/suittan
name = "Tan suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket/tan
/datum/gear/suitwhite
name = "White suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit_jacket/white
/datum/gear/assistantformal
name = "Assistant's formal uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/assistantformal
/datum/gear/maidcostume
name = "Maid costume"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/maid
/datum/gear/mailmanuniform
name = "Mailman's jumpsuit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/mailman
/datum/gear/skirtblack
name = "Black skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/skirt/black
/datum/gear/skirtblue
name = "Blue skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/skirt/blue
/datum/gear/skirtred
name = "Red skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/skirt/red
/datum/gear/skirtpurple
name = "Purple skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/skirt/purple
/datum/gear/schoolgirlblue
name = "Blue Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/schoolgirl
/datum/gear/schoolgirlred
name = "Red Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/schoolgirl/red
/datum/gear/schoolgirlgreen
name = "Green Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/schoolgirl/green
/datum/gear/schoolgirlorange
name = "Orange Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/schoolgirl/orange
/datum/gear/stripeddress
name = "Striped Dress"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/stripeddress
/datum/gear/kilt
name = "Kilt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/kilt
/datum/gear/camoshorts
name = "Camo Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/camo
/datum/gear/bjeans
name = "Black Jeans"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/blackjeans
/datum/gear/cjeans
name = "Classic Jeans"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/classicjeans
/datum/gear/khaki
name = "Khaki Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/khaki
/datum/gear/wpants
name = "White Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/white
/datum/gear/rpants
name = "Red Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/red
/datum/gear/tpants
name = "Tan Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/tan
/datum/gear/trpants
name = "Track Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/track
// Pantsless Sweaters
/datum/gear/turtleneck
name = "Tactitool Turtleneck"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/syndicate/cosmetic
/datum/gear/creamsweater
name = "Cream Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater
/datum/gear/blacksweater
name = "Black Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/black
/datum/gear/purpsweater
name = "Purple Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/purple
/datum/gear/greensweater
name = "Green Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/green
/datum/gear/redsweater
name = "Red Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/red
/datum/gear/bluesweater
name = "Navy Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/blue
/datum/gear/polykilt
name = "Polychromic Kilt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/polychromic/kilt
cost = 3
/datum/gear/polyshorts
name = "Polychromic Shorts"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/polychromic/shorts
cost = 3
/datum/gear/polyshortpants
name = "Polychromic Athletic Shorts"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/polychromic/shortpants
cost = 2
// Trekie things
//TOS
/datum/gear/trekcmdtos
name = "TOS uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/command
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscitos
name = "TOS uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/medsci
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengtos
name = "TOS uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/engsec
restricted_desc = "Engineering and Security"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//TNG
/datum/gear/trekcmdtng
name = "TNG uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/command/next
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscitng
name = "TNG uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/medsci/next
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengtng
name = "TNG uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/engsec/next
restricted_desc = "Engineering and Security"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//VOY
/datum/gear/trekcmdvoy
name = "VOY uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/command/voy
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscivoy
name = "VOY uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/medsci/voy
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengvoy
name = "VOY uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/engsec/voy
restricted_desc = "Engineering and Security"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//DS9
/datum/gear/trekcmdds9
name = "DS9 uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/command/ds9
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscids9
name = "DS9 uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/medsci/ds9
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengds9
name = "DS9 uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/engsec/ds9
restricted_desc = "Engineering and Security"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//ENT
/datum/gear/trekcmdent
name = "ENT uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/command/ent
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscient
name = "ENT uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/medsci/ent
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengent
name = "ENT uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/trek/engsec/ent
restricted_desc = "Engineering and Security"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//Memes
/datum/gear/gear_harnesses
name = "Gear Harness"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/gear_harness
@@ -0,0 +1,59 @@
#define DEFAULT_SLOT_AMT 2
#define HANDS_SLOT_AMT 2
#define BACKPACK_SLOT_AMT 4
/datum/preferences
//gear
var/gear_points = 10
var/list/gear_categories
var/list/chosen_gear
var/gear_tab
//pref vars
var/screenshake = 100
var/damagescreenshake = 2
var/arousable = TRUE
var/widescreenpref = TRUE
var/autostand = TRUE
var/lewdchem = TRUE
//vore prefs
var/toggleeatingnoise = TRUE
var/toggledigestionnoise = TRUE
var/hound_sleeper = TRUE
var/cit_toggles = TOGGLES_CITADEL
// stuff that was in base
max_save_slots = 10
/datum/preferences/New(client/C)
..()
LAZYINITLIST(chosen_gear)
/datum/preferences/proc/is_loadout_slot_available(slot)
var/list/L
LAZYINITLIST(L)
for(var/i in chosen_gear)
var/datum/gear/G = i
var/occupied_slots = L[slot_to_string(initial(G.category))] ? L[slot_to_string(initial(G.category))] + 1 : 1
LAZYSET(L, slot_to_string(initial(G.category)), occupied_slots)
switch(slot)
if(SLOT_IN_BACKPACK)
if(L[slot_to_string(SLOT_IN_BACKPACK)] < BACKPACK_SLOT_AMT)
return TRUE
if(SLOT_HANDS)
if(L[slot_to_string(SLOT_HANDS)] < HANDS_SLOT_AMT)
return TRUE
else
if(L[slot_to_string(slot)] < DEFAULT_SLOT_AMT)
return TRUE
datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1)
..()
character.give_genitals(TRUE)
character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially
character.canbearoused = arousable
character.client?.prefs.lewdchem = lewdchem
if(icon_updates)
character.update_genitals()
@@ -0,0 +1,84 @@
/datum/preferences/proc/cit_character_pref_load(savefile/S)
//ipcs
S["feature_ipc_screen"] >> features["ipc_screen"]
S["feature_ipc_antenna"] >> features["ipc_antenna"]
features["ipc_screen"] = sanitize_inlist(features["ipc_screen"], GLOB.ipc_screens_list)
features["ipc_antenna"] = sanitize_inlist(features["ipc_antenna"], GLOB.ipc_antennas_list)
//Citadel
features["flavor_text"] = sanitize_text(features["flavor_text"], initial(features["flavor_text"]))
if(!features["mcolor2"] || features["mcolor"] == "#000")
features["mcolor2"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
if(!features["mcolor3"] || features["mcolor"] == "#000")
features["mcolor3"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 3, 0)
features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 3, 0)
//gear loadout
var/text_to_load
S["loadout"] >> text_to_load
var/list/saved_loadout_paths = splittext(text_to_load, "|")
LAZYCLEARLIST(chosen_gear)
gear_points = initial(gear_points)
for(var/i in saved_loadout_paths)
var/datum/gear/path = text2path(i)
if(path)
LAZYADD(chosen_gear, path)
gear_points -= initial(path.cost)
/datum/preferences/proc/cit_character_pref_save(savefile/S)
//ipcs
WRITE_FILE(S["feature_ipc_screen"], features["ipc_screen"])
WRITE_FILE(S["feature_ipc_antenna"], features["ipc_antenna"])
//Citadel
WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"])
WRITE_FILE(S["feature_exhibitionist"], features["exhibitionist"])
WRITE_FILE(S["feature_mcolor2"], features["mcolor2"])
WRITE_FILE(S["feature_mcolor3"], features["mcolor3"])
WRITE_FILE(S["feature_mam_body_markings"], features["mam_body_markings"])
WRITE_FILE(S["feature_mam_tail"], features["mam_tail"])
WRITE_FILE(S["feature_mam_ears"], features["mam_ears"])
WRITE_FILE(S["feature_mam_tail_animated"], features["mam_tail_animated"])
WRITE_FILE(S["feature_taur"], features["taur"])
WRITE_FILE(S["feature_mam_snouts"], features["mam_snouts"])
//Xeno features
WRITE_FILE(S["feature_xeno_tail"], features["xenotail"])
WRITE_FILE(S["feature_xeno_dors"], features["xenodorsal"])
WRITE_FILE(S["feature_xeno_head"], features["xenohead"])
//cock features
WRITE_FILE(S["feature_has_cock"], features["has_cock"])
WRITE_FILE(S["feature_cock_shape"], features["cock_shape"])
WRITE_FILE(S["feature_cock_color"], features["cock_color"])
WRITE_FILE(S["feature_cock_length"], features["cock_length"])
WRITE_FILE(S["feature_cock_girth"], features["cock_girth"])
WRITE_FILE(S["feature_has_sheath"], features["sheath_color"])
//balls features
WRITE_FILE(S["feature_has_balls"], features["has_balls"])
WRITE_FILE(S["feature_balls_color"], features["balls_color"])
WRITE_FILE(S["feature_balls_size"], features["balls_size"])
WRITE_FILE(S["feature_balls_shape"], features["balls_shape"])
WRITE_FILE(S["feature_balls_sack_size"], features["balls_sack_size"])
WRITE_FILE(S["feature_balls_fluid"], features["balls_fluid"])
//breasts features
WRITE_FILE(S["feature_has_breasts"], features["has_breasts"])
WRITE_FILE(S["feature_breasts_size"], features["breasts_size"])
WRITE_FILE(S["feature_breasts_shape"], features["breasts_shape"])
WRITE_FILE(S["feature_breasts_color"], features["breasts_color"])
WRITE_FILE(S["feature_breasts_fluid"], features["breasts_fluid"])
WRITE_FILE(S["feature_breasts_producing"], features["breasts_producing"])
//vagina features
WRITE_FILE(S["feature_has_vag"], features["has_vag"])
WRITE_FILE(S["feature_vag_shape"], features["vag_shape"])
WRITE_FILE(S["feature_vag_color"], features["vag_color"])
//womb features
WRITE_FILE(S["feature_has_womb"], features["has_womb"])
//flavor text
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
//gear loadout
if(islist(chosen_gear))
if(chosen_gear.len)
var/text_to_save = chosen_gear.Join("|")
S["loadout"] << text_to_save
else
S["loadout"] << "" //empty string to reset the value
@@ -0,0 +1,36 @@
TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleeatingnoise)()
set name = "Toggle Eating Noises"
set category = "Preferences"
set desc = "Hear Eating noises"
usr.client.prefs.cit_toggles ^= EATING_NOISES
usr.client.prefs.save_preferences()
usr.stop_sound_channel(CHANNEL_PRED)
to_chat(usr, "You will [(usr.client.prefs.cit_toggles & EATING_NOISES) ? "now" : "no longer"] hear eating noises.")
/datum/verbs/menu/Settings/Sound/toggleeatingnoise/Get_checked(client/C)
return C.prefs.cit_toggles & EATING_NOISES
TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggledigestionnoise)()
set name = "Toggle Digestion Noises"
set category = "Preferences"
set desc = "Hear digestive noises"
usr.client.prefs.cit_toggles ^= DIGESTION_NOISES
usr.client.prefs.save_preferences()
usr.stop_sound_channel(CHANNEL_DIGEST)
to_chat(usr, "You will [(usr.client.prefs.cit_toggles & DIGESTION_NOISES) ? "now" : "no longer"] hear digestion noises.")
/datum/verbs/menu/Settings/Sound/toggledigestionnoise/Get_checked(client/C)
return C.prefs.cit_toggles & DIGESTION_NOISES
TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglehoundsleeper)()
set name = "Toggle Voracious Hound Sleepers"
set category = "Preferences"
set desc = "Toggles Voracious MediHound Sleepers"
usr.client.prefs.cit_toggles ^= MEDIHOUND_SLEEPER
usr.client.prefs.save_preferences()
if(usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)
to_chat(usr, "You have opted in for voracious medihound sleepers.")
else
to_chat(usr, "Medihound sleepers will no longer be voracious when you're involved.")
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle MediHound Sleeper", "[usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/verbs/menu/Settings/Sound/togglehoundsleeper/Get_checked(client/C)
return C.prefs.cit_toggles & MEDIHOUND_SLEEPER
@@ -0,0 +1,131 @@
/client/verb/mentorwho()
set category = "Mentor"
set name = "Mentorwho"
var/msg = "<b>Current Mentors:</b>\n"
for(var/X in GLOB.mentors)
var/client/C = X
if(!C)
GLOB.mentors -= C
continue // weird runtime that happens randomly
var/suffix = ""
if(holder)
if(isobserver(C.mob))
suffix += " - Observing"
else if(istype(C.mob,/mob/dead/new_player))
suffix += " - Lobby"
else
suffix += " - Playing"
if(C.is_afk())
suffix += " (AFK)"
msg += "\t[C][suffix]\n"
to_chat(src, msg)
/client/verb/who()
set name = "Who"
set category = "OOC"
var/msg = ""
var/list/Lines = list()
var/list/assembled = list()
var/admin_mode = check_rights_for(src, R_ADMIN) && isobserver(mob)
if(admin_mode)
log_admin("[key_name(usr)] checked advanced who in-round")
if(length(GLOB.admins))
Lines += "<b>Admins:</b>"
for(var/X in GLOB.admins)
var/client/C = X
if(C && C.holder && !C.holder.fakekey)
assembled += "\t <font color='#FF0000'>[C.key]</font>[admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
Lines += sortList(assembled)
assembled.len = 0
if(length(GLOB.mentors))
Lines += "<b>Mentors:</b>"
for(var/X in GLOB.mentors)
var/client/C = X
if(C && (!C.holder || (C.holder && !C.holder.fakekey))) //>using stuff this complex instead of just using if/else lmao
assembled += "\t <font color='#0033CC'>[C.key]</font>[admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
Lines += sortList(assembled)
assembled.len = 0
Lines += "<b>Players:</b>"
for(var/X in sortList(GLOB.clients))
var/client/C = X
if(!C)
continue
var/key = C.key
if(C.holder && C.holder.fakekey)
key = C.holder.fakekey
assembled += "\t [key][admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
Lines += sortList(assembled)
for(var/line in Lines)
msg += "[line]\n"
msg += "<b>Total Players: [length(GLOB.clients)]</b>"
to_chat(src, msg)
/client/proc/show_admin_info(var/client/C)
if(!C)
return ""
var/entry = ""
if(C.holder && C.holder.fakekey)
entry += " <i>(as [C.holder.fakekey])</i>"
if (isnewplayer(C.mob))
entry += " - <font color='darkgray'><b>In Lobby</b></font>"
else
entry += " - Playing as [C.mob.real_name]"
switch(C.mob.stat)
if(UNCONSCIOUS)
entry += " - <font color='darkgray'><b>Unconscious</b></font>"
if(DEAD)
if(isobserver(C.mob))
var/mob/dead/observer/O = C.mob
if(O.started_as_observer)
entry += " - <font color='gray'>Observing</font>"
else
entry += " - <font color='black'><b>DEAD</b></font>"
else
entry += " - <font color='black'><b>DEAD</b></font>"
if(is_special_character(C.mob))
entry += " - <b><font color='red'>Antagonist</font></b>"
entry += " (<A HREF='?_src_=holder;[HrefToken()];adminmoreinfo=\ref[C.mob]'>?</A>)"
return entry
/client/verb/adminwho()
set category = "Admin"
set name = "Adminwho"
var/msg = "<b>Current Admins:</b>\n"
if(check_rights_for(src, R_ADMIN))
for(var/X in GLOB.admins)
var/client/C = X
if(!check_rights_for(C, R_ADMIN))
continue
msg += "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
msg += " <i>(as [C.holder.fakekey])</i>"
if(isobserver(C.mob))
msg += " - Observing"
else if(isnewplayer(C.mob))
msg += " - Lobby"
else
msg += " - Playing"
if(C.is_afk())
msg += " (AFK)"
msg += "\n"
else
for(var/X in GLOB.admins)
var/client/C = X
if(!check_rights_for(C, R_ADMIN))
continue
if(C.is_afk())
continue //Don't show afk admins to adminwho
if(!C.holder.fakekey)
msg += "\t[C] is a [C.holder.rank]\n"
msg += "<span class='info'>Adminhelps are also sent to Discord. If no admins are available in game adminhelp anyways and an admin on Discord will see it and respond.</span>"
to_chat(src, msg)