diff --git a/code/defines/obj/supplypacks.dm b/code/datums/supplypacks.dm
similarity index 100%
rename from code/defines/obj/supplypacks.dm
rename to code/datums/supplypacks.dm
diff --git a/code/defines/obj/closet.dm b/code/defines/obj/closet.dm
deleted file mode 100644
index 1e9d9c91d8..0000000000
--- a/code/defines/obj/closet.dm
+++ /dev/null
@@ -1,474 +0,0 @@
-/obj/structure/closet
- name = "closet"
- desc = "It's a basic storage unit."
- icon = 'icons/obj/closet.dmi'
- icon_state = "closed"
- density = 1
- flags = FPRINT
- var/icon_closed = "closed"
- var/icon_opened = "open"
- var/opened = 0
- var/welded = 0
- var/wall_mounted = 0 //never solid (You can always pass over it)
- var/health = 100
- var/lastbang
- var/storage_capacity = 20 //This is so that someone can't pack hundreds of items in a locker/crate
- //then open it in a populated area to crash clients.
-
-/obj/structure/closet/acloset
- name = "strange closet"
- desc = "It looks alien!"
- icon_state = "acloset"
- icon_closed = "acloset"
- icon_opened = "aclosetopen"
-
-/obj/structure/closet/cabinet
- name = "cabinet"
- desc = "Old will forever be in fashion."
- icon_state = "cabinet_closed"
- icon_closed = "cabinet_closed"
- icon_opened = "cabinet_open"
-
-/obj/structure/closet/cabinet/update_icon()
- if(!opened)
- icon_state = icon_closed
- else
- icon_state = icon_opened
-
-
-/obj/effect/spresent
- name = "strange present"
- desc = "It's a ... present?"
- icon = 'icons/obj/items.dmi'
- icon_state = "strangepresent"
- density = 1
- anchored = 0
-
-/obj/structure/closet/gmcloset
- name = "formal closet"
- desc = "It's a storage unit for formal clothing."
- icon_state = "black"
- icon_closed = "black"
-
-/obj/structure/closet/emcloset
- name = "emergency closet"
- desc = "It's a storage unit for emergency breathmasks and o2 tanks."
- icon_state = "emergency"
- icon_closed = "emergency"
- icon_opened = "emergencyopen"
-
-/obj/structure/closet/emcloset/legacy
-
-/obj/structure/closet/firecloset
- name = "fire-safety closet"
- desc = "It's a storage unit for fire-fighting supplies."
- icon_state = "firecloset"
- icon_closed = "firecloset"
- icon_opened = "fireclosetopen"
-
-/obj/structure/closet/firecloset/update_icon()
- if(!opened)
- icon_state = icon_closed
- else
- icon_state = icon_opened
-
-/obj/structure/closet/hydrant //wall mounted fire closet
- name = "fire-safety closet"
- desc = "It's a storage unit for fire-fighting supplies."
- icon_state = "hydrant"
- icon_closed = "hydrant"
- icon_opened = "hydrant_open"
- anchored = 1
- density = 0
- wall_mounted = 1
-
-/obj/structure/closet/medical_wall //wall mounted medical closet
- name = "first-aid closet"
- desc = "It's wall-mounted storage unit for first aid supplies."
- icon_state = "medical_wall"
- icon_closed = "medical_wall"
- icon_opened = "medical_wall_open"
- anchored = 1
- density = 0
- wall_mounted = 1
-
-/obj/structure/closet/medical_wall/update_icon()
- if(!opened)
- icon_state = icon_closed
- else
- icon_state = icon_opened
-
-/obj/structure/closet/toolcloset
- name = "tool closet"
- desc = "It's a storage unit for tools."
- icon_state = "toolcloset"
- icon_closed = "toolcloset"
- icon_opened = "toolclosetopen"
-
-/obj/structure/closet/radiation
- name = "radiation suit closet"
- desc = "It's a storage unit for rad-protective suits."
- icon_state = "radsuitcloset"
- icon_opened = "toolclosetopen"
- icon_closed = "radsuitcloset"
-
-/obj/structure/closet/jcloset
- name = "custodial closet"
- desc = "It's a storage unit for janitorial clothes and gear."
- icon_state = "mixed"
- icon_closed = "mixed"
-
-/obj/structure/closet/lawcloset
- name = "legal closet"
- desc = "It's a storage unit for courtroom apparel and items."
- icon_state = "blue"
- icon_closed = "blue"
-
-/obj/structure/closet/boxinggloves
- name = "boxing gloves"
- desc = "It's a storage unit for gloves for use in the boxing ring."
-
-/obj/structure/closet/masks
- name = "mask closet"
- desc = "IT'S A STORAGE UNIT FOR FIGHTER MASKS OLE!"
-
-/obj/structure/closet/lasertag/red
- name = "red laser tag equipment"
- desc = "It's a storage unit for laser tag equipment."
- icon_state = "red"
- icon_closed = "red"
-
-/obj/structure/closet/lasertag/blue
- name = "blue laser tag equipment"
- desc = "It's a storage unit for laser tag equipment."
- icon_state = "blue"
- icon_closed = "blue"
-
-/obj/structure/closet/athletic_mixed
- name = "athletic wardrobe"
- desc = "It's a storage unit for athletic wear."
- icon_state = "mixed"
- icon_closed = "mixed"
-
-/obj/structure/closet/coffin
- name = "coffin"
- desc = "It's a burial receptacle for the dearly departed."
- icon_state = "coffin"
- icon_closed = "coffin"
- icon_opened = "coffin_open"
-
-/obj/structure/closet/coffin/update_icon()
- if(!opened)
- icon_state = icon_closed
- else
- icon_state = icon_opened
-
-/obj/structure/closet/bombcloset
- name = "\improper EOD closet"
- desc = "It's a storage unit for explosion-protective suits."
- icon_state = "bombsuit"
- icon_closed = "bombsuit"
- icon_opened = "bombsuitopen"
-
-/obj/structure/closet/bombclosetsecurity
- name = "\improper EOD closet"
- desc = "It's a storage unit for explosion-protective suits."
- icon_state = "bombsuitsec"
- icon_closed = "bombsuitsec"
- icon_opened = "bombsuitsecopen"
-
-/obj/structure/closet/l3closet
- name = "level-3 biohazard suit closet"
- desc = "It's a storage unit for level-3 biohazard gear."
- icon_state = "bio"
- icon_closed = "bio"
- icon_opened = "bioopen"
-
-/obj/structure/closet/l3closet/general
- icon_state = "bio_general"
- icon_closed = "bio_general"
- icon_opened = "bio_generalopen"
-
-/obj/structure/closet/l3closet/virology
- icon_state = "bio_virology"
- icon_closed = "bio_virology"
- icon_opened = "bio_virologyopen"
-
-/obj/structure/closet/l3closet/security
- icon_state = "bio_security"
- icon_closed = "bio_security"
- icon_opened = "bio_securityopen"
-
-/obj/structure/closet/l3closet/janitor
- icon_state = "bio_janitor"
- icon_closed = "bio_janitor"
- icon_opened = "bio_janitoropen"
-
-/obj/structure/closet/l3closet/scientist
- icon_state = "bio_scientist"
- icon_closed = "bio_scientist"
- icon_opened = "bio_scientistopen"
-
-/obj/structure/closet/syndicate
- name = "armoury closet"
- desc = "Why is this here?"
- icon_state = "syndicate"
- icon_closed = "syndicate"
- icon_opened = "syndicateopen"
-
-/obj/structure/closet/syndicate/personal
- desc = "It's a storage unit for operative gear."
-
-/obj/structure/closet/syndicate/nuclear
- desc = "It's a storage unit for nuclear-operative gear."
-
- // Inserting the gimmick clothing stuff here for generic items, IE Tacticool stuff
-
-
-/obj/structure/closet/gimmick
- name = "administrative supply closet"
- desc = "It's a storage unit for things that have no right being here."
- icon_state = "syndicate1"
- icon_closed = "syndicate1"
- icon_opened = "syndicate1open"
- anchored = 0
-
-/obj/structure/closet/gimmick/russian
- name = "russian surplus closet"
- desc = "It's a storage unit for Russian standard-issue surplus."
- icon_state = "syndicate1"
- icon_closed = "syndicate1"
- icon_opened = "syndicate1open"
-
-/obj/structure/closet/gimmick/tacticool
- name = "tacticool gear closet"
- desc = "It's a storage unit for Tacticool gear."
- icon_state = "syndicate1"
- icon_closed = "syndicate1"
- icon_opened = "syndicate1open"
-
-/obj/structure/closet/thunderdome
- name = "\improper Thunderdome closet"
- desc = "Everything you need!"
- icon_state = "syndicate"
- icon_closed = "syndicate"
- icon_opened = "syndicateopen"
- anchored = 1
-
-/obj/structure/closet/thunderdome/tdred
- name = "red-team Thunderdome closet"
-
-/obj/structure/closet/thunderdome/tdgreen
- name = "green-team Thunderdome closet"
- icon_state = "syndicate1"
- icon_closed = "syndicate1"
- icon_opened = "syndicate1open"
-
-
-/obj/structure/closet/malf/suits
- desc = "It's a storage unit for operational gear."
- icon_state = "syndicate"
- icon_closed = "syndicate"
- icon_opened = "syndicateopen"
-
-/obj/structure/closet/wardrobe
- name = "wardrobe"
- desc = "It's a storage unit for standard-issue Nanotrasen attire."
- icon_state = "blue"
- icon_closed = "blue"
-
-/obj/structure/closet/wardrobe/black
- name = "black wardrobe"
- icon_state = "black"
- icon_closed = "black"
-
-/obj/structure/closet/wardrobe/chaplain_black
- name = "chapel wardrobe"
- desc = "It's a storage unit for Nanotrasen-approved religious attire."
- icon_state = "black"
- icon_closed = "black"
-
-/obj/structure/closet/wardrobe/green
- name = "green wardrobe"
- icon_state = "green"
- icon_closed = "green"
-
-/obj/structure/closet/wardrobe/mixed
- name = "mixed wardrobe"
- icon_state = "mixed"
- icon_closed = "mixed"
-
-/obj/structure/closet/wardrobe/orange
- name = "prison wardrobe"
- desc = "It's a storage unit for Nanotrasen-regulation prisoner attire."
- icon_state = "orange"
- icon_closed = "orange"
-
-/obj/structure/closet/wardrobe/pink
- name = "pink wardrobe"
- icon_state = "pink"
- icon_closed = "pink"
-
-/obj/structure/closet/wardrobe/red
- name = "security wardrobe"
- icon_state = "red"
- icon_closed = "red"
-
-/obj/structure/closet/wardrobe/white
- name = "white wardrobe"
- icon_state = "white"
- icon_closed = "white"
-
-/obj/structure/closet/wardrobe/pjs
- name = "Pajama wardrobe"
- icon_state = "white"
- icon_closed = "white"
-
-/obj/structure/closet/wardrobe/toxins_white
- name = "toxins wardrobe"
- icon_state = "white"
- icon_closed = "white"
-
-/obj/structure/closet/wardrobe/robotics_black
- name = "robotics wardrobe"
- icon_state = "black"
- icon_closed = "black"
-
-/obj/structure/closet/wardrobe/chemistry_white
- name = "chemistry wardrobe"
- icon_state = "white"
- icon_closed = "white"
-
-/obj/structure/closet/wardrobe/genetics_white
- name = "genetics wardrobe"
- icon_state = "white"
- icon_closed = "white"
-
-/obj/structure/closet/wardrobe/virology_white
- name = "virology wardrobe"
- icon_state = "white"
- icon_closed = "white"
-
-/obj/structure/closet/wardrobe/yellow
- name = "yellow wardrobe"
- icon_state = "wardrobe-y"
- icon_closed = "wardrobe-y"
-
-/obj/structure/closet/wardrobe/engineering_yellow
- name = "engineering wardrobe"
- icon_state = "yellow"
- icon_closed = "yellow"
-
-/obj/structure/closet/wardrobe/atmospherics_yellow
- name = "atmospherics wardrobe"
- icon_state = "yellow"
- icon_closed = "yellow"
-
-/obj/structure/closet/wardrobe/grey
- name = "grey wardrobe"
- icon_state = "grey"
- icon_closed = "grey"
-
-/obj/structure/closet/secure_closet
- name = "secure locker"
- desc = "It's an immobile card-locked storage unit."
- icon = 'icons/obj/closet.dmi'
- icon_state = "secure1"
- density = 1
- opened = 0
- var/locked = 1
- var/broken = 0
- var/large = 1
- icon_closed = "secure"
- var/icon_locked = "secure1"
- icon_opened = "secureopen"
- var/icon_broken = "securebroken"
- var/icon_off = "secureoff"
- wall_mounted = 0 //never solid (You can always pass over it)
- health = 200
-
-/obj/structure/closet/secure_closet/medical_wall
- name = "First Aid Closet"
- desc = "It's a secure wall-mounted storage unit for first aid supplies."
- icon_state = "medical_wall_locked"
- icon_closed = "medical_wall_unlocked"
- icon_locked = "medical_wall_locked"
- icon_opened = "medical_wall_open"
- icon_broken = "medical_wall_spark"
- icon_off = "medical_wall_off"
- anchored = 1
- density = 0
- wall_mounted = 1
- req_access = list(access_medical)
-
-/obj/structure/closet/secure_closet/medical_wall/update_icon()
- if(broken)
- icon_state = icon_broken
- else
- if(!opened)
- if(locked)
- icon_state = icon_locked
- else
- icon_state = icon_closed
- else
- icon_state = icon_opened
-
-/obj/structure/closet/secure_closet/personal
- desc = "It's a secure locker for personell. The first card swiped gains control."
- name = "personal closet"
-
-/obj/structure/closet/secure_closet/personal/cabinet
- icon_state = "cabinetdetective_locked"
- icon_closed = "cabinetdetective"
- icon_locked = "cabinetdetective_locked"
- icon_opened = "cabinetdetective_open"
- icon_broken = "cabinetdetective_broken"
- icon_off = "cabinetdetective_broken"
-
-/obj/structure/closet/secure_closet/personal/cabinet/update_icon()
- if(broken)
- icon_state = icon_broken
- else
- if(!opened)
- if(locked)
- icon_state = icon_locked
- else
- icon_state = icon_closed
- else
- icon_state = icon_opened
-
-/obj/structure/closet/secure_closet/personal/patient
- name = "patient's closet"
-
-/obj/structure/closet/secure_closet/wall
- name = "wall locker"
- req_access = list(access_security)
- icon_state = "wall-locker1"
- density = 1
- icon_closed = "wall-locker"
- icon_locked = "wall-locker1"
- icon_opened = "wall-lockeropen"
- icon_broken = "wall-lockerbroken"
- icon_off = "wall-lockeroff"
-
- //too small to put a man in
- large = 0
-
-/obj/structure/closet/secure_closet/wall/update_icon()
- if(broken)
- icon_state = icon_broken
- else
- if(!opened)
- if(locked)
- icon_state = icon_locked
- else
- icon_state = icon_closed
- else
- icon_state = icon_opened
-
-/obj/structure/closet/crate/critter
- name = "critter crate"
- desc = "A crate which can sustain life for a while."
- icon_state = "critter"
- icon_opened = "critteropen"
- icon_closed = "critter"
\ No newline at end of file
diff --git a/code/defines/obj/costume.dm b/code/defines/obj/costume.dm
deleted file mode 100644
index f710a5875d..0000000000
--- a/code/defines/obj/costume.dm
+++ /dev/null
@@ -1,139 +0,0 @@
-//Costume spawner
-
-/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
-
- var/list/options = typesof(/obj/effect/landmark/costume)
- var/PICK= options[rand(1,options.len)]
- new PICK(src.loc)
- del(src)
-
-//SUBCLASSES. Spawn a bunch of items and disappear likewise
-/obj/effect/landmark/costume/chicken/New()
- new /obj/item/clothing/suit/chickensuit(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/gladiator/New()
- new /obj/item/clothing/under/gladiator(src.loc)
- new /obj/item/clothing/head/helmet/gladiator(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/madscientist/New()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
- new /obj/item/clothing/head/flatcap(src.loc)
- new /obj/item/clothing/suit/labcoat/mad(src.loc)
- new /obj/item/clothing/glasses/gglasses(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/elpresidente/New()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
- new /obj/item/clothing/head/flatcap(src.loc)
- new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc)
- new /obj/item/clothing/shoes/jackboots(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/nyangirl/New()
- new /obj/item/clothing/under/schoolgirl(src.loc)
- new /obj/item/clothing/head/kitty(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/maid/New()
- new /obj/item/clothing/under/blackskirt(src.loc)
- var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
- new CHOICE(src.loc)
- new /obj/item/clothing/glasses/blindfold(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/butler/New()
- new /obj/item/clothing/suit/wcoat(src.loc)
- new /obj/item/clothing/under/suit_jacket(src.loc)
- new /obj/item/clothing/head/that(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/scratch/New()
- new /obj/item/clothing/gloves/white(src.loc)
- new /obj/item/clothing/shoes/white(src.loc)
- new /obj/item/clothing/under/scratch(src.loc)
- if (prob(30))
- new /obj/item/clothing/head/cueball(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/highlander/New()
- new /obj/item/clothing/under/kilt(src.loc)
- new /obj/item/clothing/head/beret(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/prig/New()
- new /obj/item/clothing/suit/wcoat(src.loc)
- new /obj/item/clothing/glasses/monocle(src.loc)
- var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
- new CHOICE(src.loc)
- new /obj/item/clothing/shoes/black(src.loc)
- new /obj/item/weapon/cane(src.loc)
- new /obj/item/clothing/under/sl_suit(src.loc)
- new /obj/item/clothing/mask/fakemoustache(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/plaguedoctor/New()
- new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
- new /obj/item/clothing/head/plaguedoctorhat(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/nightowl/New()
- new /obj/item/clothing/under/owl(src.loc)
- new /obj/item/clothing/mask/owl_mask(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/waiter/New()
- new /obj/item/clothing/under/waiter(src.loc)
- var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
- new CHOICE(src.loc)
- new /obj/item/clothing/suit/apron(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/pirate/New()
- new /obj/item/clothing/under/pirate(src.loc)
- new /obj/item/clothing/suit/pirate(src.loc)
- var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
- new CHOICE(src.loc)
- new /obj/item/clothing/glasses/eyepatch(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/commie/New()
- new /obj/item/clothing/under/soviet(src.loc)
- new /obj/item/clothing/head/ushanka(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/imperium_monk/New()
- new /obj/item/clothing/suit/imperium_monk(src.loc)
- if (prob(25))
- new /obj/item/clothing/mask/gas/cyborg(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/holiday_priest/New()
- new /obj/item/clothing/suit/holidaypriest(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/marisawizard/fake/New()
- new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
- new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/fakewizard/New()
- new /obj/item/clothing/suit/wizrobe/fake(src.loc)
- new /obj/item/clothing/head/wizard/fake(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/sexyclown/New()
- new /obj/item/clothing/mask/gas/sexyclown(src.loc)
- new /obj/item/clothing/under/sexyclown(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/sexymime/New()
- new /obj/item/clothing/mask/gas/sexymime(src.loc)
- new /obj/item/clothing/under/sexymime(src.loc)
- del(src)
-
-///obj/effect/landmark/costume/hidden/master/New()
-// var/list/templist = list()
-// templist += src
-// for(var/obj/effect/landmark/costume/hidden/H in z1
\ No newline at end of file
diff --git a/code/defines/obj/decal.dm b/code/defines/obj/decal.dm
deleted file mode 100644
index 0ff3334e9c..0000000000
--- a/code/defines/obj/decal.dm
+++ /dev/null
@@ -1,310 +0,0 @@
-/obj/effect/decal/remains/human
- name = "remains"
- desc = "They look like human remains. They have a strange aura about them."
- gender = PLURAL
- icon = 'icons/effects/blood.dmi'
- icon_state = "remains"
- anchored = 1
-
-/obj/effect/decal/remains/xeno
- name = "remains"
- desc = "They look like the remains of something... alien. They have a strange aura about them."
- gender = PLURAL
- icon = 'icons/effects/blood.dmi'
- icon_state = "remainsxeno"
- anchored = 1
-
-/obj/effect/decal/remains/robot
- name = "remains"
- desc = "They look like the remains of something mechanical. They have a strange aura about them."
- gender = PLURAL
- icon = 'icons/mob/robots.dmi'
- icon_state = "remainsrobot"
- anchored = 1
-
-/obj/effect/decal/point
- name = "arrow"
- desc = "It's an arrow hanging in mid-air. There may be a wizard about."
- icon = 'icons/mob/screen1.dmi'
- icon_state = "arrow"
- layer = 16.0
- anchored = 1
-
-/obj/effect/decal/cleanable
- var/list/random_icon_states = list()
-
-//HUMANS
-
-/obj/effect/decal/cleanable/ash
- name = "ashes"
- desc = "Ashes to ashes, dust to dust, and into space."
- gender = PLURAL
- icon = 'icons/obj/objects.dmi'
- icon_state = "ash"
- anchored = 1
-
-/obj/effect/decal/cleanable/blood
- name = "blood"
- desc = "It's red and gooey. Perhaps it's the chef's cooking?"
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/blood.dmi'
- icon_state = "floor1"
- random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
- var/list/viruses = list()
- blood_DNA = list()
- //var/datum/disease2/disease/virus2 = null
-
-/obj/effect/decal/cleanable/blood/Del()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- ..()
-
-/obj/effect/decal/cleanable/blood/New()
- ..()
- if(istype(src, /obj/effect/decal/cleanable/blood/gibs))
- return
- if(src.loc && isturf(src.loc))
- for(var/obj/effect/decal/cleanable/blood/B in src.loc)
- if(B != src)
- del(B)
-
-/obj/effect/decal/cleanable/blood/splatter
- random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
-
-/obj/effect/decal/cleanable/blood/tracks
- icon_state = "tracks"
- desc = "They look like tracks left by wheels."
- gender = PLURAL
- random_icon_states = null
-
-/obj/effect/decal/cleanable/blood/gibs
- name = "gibs"
- desc = "They look bloody and gruesome."
- gender = PLURAL
- density = 0
- anchored = 0
- layer = 2
- icon = 'icons/effects/blood.dmi'
- icon_state = "gibbl5"
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
-
-/obj/effect/decal/cleanable/blood/gibs/up
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
-
-/obj/effect/decal/cleanable/blood/gibs/down
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
-
-/obj/effect/decal/cleanable/blood/gibs/body
- random_icon_states = list("gibhead", "gibtorso")
-
-/obj/effect/decal/cleanable/blood/gibs/limb
- random_icon_states = list("gibleg", "gibarm")
-
-/obj/effect/decal/cleanable/blood/gibs/core
- random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
-
-//ALIENS
-
-/obj/effect/decal/cleanable/xenoblood
- name = "xeno blood"
- desc = "It's green and acidic. It looks like... blood?"
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/blood.dmi'
- icon_state = "xfloor1"
- random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
- var/list/viruses = list()
- blood_DNA = list()
-
- Del()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- ..()
-
-/obj/effect/decal/cleanable/xenoblood/xsplatter
- random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
-
-/obj/effect/decal/cleanable/xenoblood/xgibs
- name = "xeno gibs"
- desc = "Gnarly..."
- gender = PLURAL
- icon = 'icons/effects/blood.dmi'
- icon_state = "xgib1"
- random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
-
-/obj/effect/decal/cleanable/xenoblood/xgibs/up
- random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
-
-/obj/effect/decal/cleanable/xenoblood/xgibs/down
- random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
-
-/obj/effect/decal/cleanable/xenoblood/xgibs/body
- random_icon_states = list("xgibhead", "xgibtorso")
-
-/obj/effect/decal/cleanable/xenoblood/xgibs/limb
- random_icon_states = list("xgibleg", "xgibarm")
-
-/obj/effect/decal/cleanable/xenoblood/xgibs/core
- random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
-
-/obj/effect/decal/cleanable/blood/xtracks
- icon_state = "xtracks"
- random_icon_states = null
-
-//ROBOTS
-
-/obj/effect/decal/cleanable/robot_debris
- name = "robot debris"
- desc = "It's a useless heap of junk... or is it?"
- gender = PLURAL
- density = 0
- anchored = 0
- layer = 2
- icon = 'icons/mob/robots.dmi'
- icon_state = "gib1"
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
-
-/obj/effect/decal/cleanable/robot_debris/limb
- random_icon_states = list("gibarm", "gibleg")
-
-/obj/effect/decal/cleanable/robot_debris/up
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") //2:7 is close enough to 1:4
-
-/obj/effect/decal/cleanable/robot_debris/down
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") //2:7 is close enough to 1:4
-
-/obj/effect/decal/cleanable/oil
- name = "motor oil"
- desc = "It's black and greasy. Looks like Beepsky made another mess."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/mob/robots.dmi'
- icon_state = "floor1"
- var/viruses = list()
- random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
-
- Del()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- ..()
-
-/obj/effect/decal/cleanable/oil/streak
- random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
-
-//OTHER
-
-/obj/effect/decal/cleanable/generic
- name = "clutter"
- desc = "Someone should clean that up."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/obj/objects.dmi'
- icon_state = "shards"
-
-/obj/effect/decal/cleanable/dirt
- name = "dirt"
- desc = "Someone should clean that up."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/effects.dmi'
- icon_state = "dirt"
-
-/obj/effect/decal/cleanable/greenglow
- name = "glowing goo"
- desc = "Jeez. I hope that's not for lunch."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- luminosity = 1
- icon = 'icons/effects/effects.dmi'
- icon_state = "greenglow"
-
-/obj/effect/decal/cleanable/cobweb
- name = "cobweb"
- desc = "Somebody should remove that."
- density = 0
- anchored = 1
- layer = 3
- icon = 'icons/effects/effects.dmi'
- icon_state = "cobweb1"
-
-/obj/effect/decal/cleanable/molten_item
- name = "gooey grey mass"
- desc = "It looks like a melted... something."
- density = 0
- anchored = 1
- layer = 3
- icon = 'icons/obj/chemical.dmi'
- icon_state = "molten"
-
-/obj/effect/decal/cleanable/cobweb2
- name = "cobweb"
- desc = "Somebody should remove that."
- density = 0
- anchored = 1
- layer = 3
- icon = 'icons/effects/effects.dmi'
- icon_state = "cobweb2"
-
-// Used for spray that you spray at walls, tables, hydrovats etc
-/obj/effect/decal/spraystill
- density = 0
- anchored = 1
- layer = 50
-
-//Vomit (sorry)
-/obj/effect/decal/cleanable/vomit
- name = "vomit"
- desc = "Gosh, how unpleasant."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/blood.dmi'
- icon_state = "vomit_1"
- random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
- var/list/viruses = list()
-
- Del()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- ..()
-
-/obj/effect/decal/cleanable/tomato_smudge
- name = "tomato smudge"
- desc = "It's red."
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/tomatodecal.dmi'
- random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
-
-/obj/effect/decal/cleanable/egg_smudge
- name = "smashed egg"
- desc = "Seems like this one won't hatch."
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/tomatodecal.dmi'
- random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
-
-/obj/effect/decal/cleanable/pie_smudge //honk
- name = "smashed pie"
- desc = "It's pie cream from a cream pie."
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/tomatodecal.dmi'
- random_icon_states = list("smashed_pie")
diff --git a/code/defines/obj/window.dm b/code/defines/obj/window.dm
deleted file mode 100644
index 509380f4a2..0000000000
--- a/code/defines/obj/window.dm
+++ /dev/null
@@ -1,40 +0,0 @@
-/obj/structure/window
- name = "window"
- icon = 'icons/obj/structures.dmi'
- desc = "A window."
- density = 1
- layer = 3.2//Just above doors
- var/health = 14.0
- var/ini_dir = null
- var/state = 0
- var/reinf = 0
- var/silicate = 0 // number of units of silicate
- var/icon/silicateIcon = null // the silicated icon
- pressure_resistance = 4*ONE_ATMOSPHERE
- anchored = 1.0
- flags = ON_BORDER
-
-// Prefab windows to make it easy...
-
-
-
-// Basic
-
-/obj/structure/window/basic
- icon_state = "window"
-
-// Reinforced
-
-/obj/structure/window/reinforced
- reinf = 1
- icon_state = "rwindow"
- name = "reinforced window"
-
-/obj/structure/window/reinforced/tinted
- name = "tinted window"
- icon_state = "twindow"
- opacity = 1
-
-/obj/structure/window/reinforced/tinted/frosted
- icon_state = "fwindow"
- name = "frosted window"
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm
new file mode 100644
index 0000000000..65c1cc700a
--- /dev/null
+++ b/code/game/objects/effects/decals/Cleanable/aliens.dm
@@ -0,0 +1,61 @@
+// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code.
+
+/obj/effect/decal/cleanable/xenoblood
+ name = "xeno blood"
+ desc = "It's green and acidic. It looks like... blood?"
+ gender = PLURAL
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "xfloor1"
+ random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
+ var/list/viruses = list()
+ blood_DNA = list()
+
+ Del()
+ for(var/datum/disease/D in viruses)
+ D.cure(0)
+ ..()
+
+/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(var/list/directions)
+ spawn (0)
+ var/direction = pick(directions)
+ for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
+ sleep(3)
+ if (i > 0)
+ var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc)
+ for(var/datum/disease/D in src.viruses)
+ b.viruses += D
+ if (step_to(src, get_step(src, direction), 0))
+ break
+
+/obj/effect/decal/cleanable/xenoblood/xsplatter
+ random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
+
+/obj/effect/decal/cleanable/xenoblood/xgibs
+ name = "xeno gibs"
+ desc = "Gnarly..."
+ gender = PLURAL
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "xgib1"
+ random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
+
+/obj/effect/decal/cleanable/xenoblood/xgibs/up
+ random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
+
+/obj/effect/decal/cleanable/xenoblood/xgibs/down
+ random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
+
+/obj/effect/decal/cleanable/xenoblood/xgibs/body
+ random_icon_states = list("xgibhead", "xgibtorso")
+
+/obj/effect/decal/cleanable/xenoblood/xgibs/limb
+ random_icon_states = list("xgibleg", "xgibarm")
+
+/obj/effect/decal/cleanable/xenoblood/xgibs/core
+ random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
+
+/obj/effect/decal/cleanable/blood/xtracks
+ icon_state = "xtracks"
+ random_icon_states = null
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
new file mode 100644
index 0000000000..69720bd5f9
--- /dev/null
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -0,0 +1,74 @@
+/obj/effect/decal/cleanable/blood
+ name = "blood"
+ desc = "It's red and gooey. Perhaps it's the chef's cooking?"
+ gender = PLURAL
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "floor1"
+ random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
+ var/list/viruses = list()
+ blood_DNA = list()
+
+/obj/effect/decal/cleanable/blood/Del()
+ for(var/datum/disease/D in viruses)
+ D.cure(0)
+ ..()
+
+/obj/effect/decal/cleanable/blood/New()
+ ..()
+ if(istype(src, /obj/effect/decal/cleanable/blood/gibs))
+ return
+ if(src.loc && isturf(src.loc))
+ for(var/obj/effect/decal/cleanable/blood/B in src.loc)
+ if(B != src)
+ del(B)
+
+/obj/effect/decal/cleanable/blood/splatter
+ random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
+
+/obj/effect/decal/cleanable/blood/tracks
+ icon_state = "tracks"
+ desc = "They look like tracks left by wheels."
+ gender = PLURAL
+ random_icon_states = null
+
+/obj/effect/decal/cleanable/blood/gibs
+ name = "gibs"
+ desc = "They look bloody and gruesome."
+ gender = PLURAL
+ density = 0
+ anchored = 0
+ layer = 2
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "gibbl5"
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
+
+/obj/effect/decal/cleanable/blood/gibs/up
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
+
+/obj/effect/decal/cleanable/blood/gibs/down
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
+
+/obj/effect/decal/cleanable/blood/gibs/body
+ random_icon_states = list("gibhead", "gibtorso")
+
+/obj/effect/decal/cleanable/blood/gibs/limb
+ random_icon_states = list("gibleg", "gibarm")
+
+/obj/effect/decal/cleanable/blood/gibs/core
+ random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
+
+
+/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
+ spawn (0)
+ var/direction = pick(directions)
+ for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
+ sleep(3)
+ if (i > 0)
+ var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
+ for(var/datum/disease/D in src.viruses)
+ b.viruses += D
+ if (step_to(src, get_step(src, direction), 0))
+ break
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm
new file mode 100644
index 0000000000..bc73d9f558
--- /dev/null
+++ b/code/game/objects/effects/decals/Cleanable/misc.dm
@@ -0,0 +1,117 @@
+/obj/effect/decal/cleanable/generic
+ name = "clutter"
+ desc = "Someone should clean that up."
+ gender = PLURAL
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "shards"
+
+/obj/effect/decal/cleanable/ash
+ name = "ashes"
+ desc = "Ashes to ashes, dust to dust, and into space."
+ gender = PLURAL
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "ash"
+ anchored = 1
+
+/obj/effect/decal/cleanable/greenglow
+
+ New()
+ ..()
+ spawn(1200)// 2 minutes
+ del(src)
+
+/obj/effect/decal/cleanable/dirt
+ name = "dirt"
+ desc = "Someone should clean that up."
+ gender = PLURAL
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "dirt"
+
+/obj/effect/decal/cleanable/greenglow
+ name = "glowing goo"
+ desc = "Jeez. I hope that's not for lunch."
+ gender = PLURAL
+ density = 0
+ anchored = 1
+ layer = 2
+ luminosity = 1
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "greenglow"
+
+/obj/effect/decal/cleanable/cobweb
+ name = "cobweb"
+ desc = "Somebody should remove that."
+ density = 0
+ anchored = 1
+ layer = 3
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "cobweb1"
+
+/obj/effect/decal/cleanable/molten_item
+ name = "gooey grey mass"
+ desc = "It looks like a melted... something."
+ density = 0
+ anchored = 1
+ layer = 3
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "molten"
+
+/obj/effect/decal/cleanable/cobweb2
+ name = "cobweb"
+ desc = "Somebody should remove that."
+ density = 0
+ anchored = 1
+ layer = 3
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "cobweb2"
+
+//Vomit (sorry)
+/obj/effect/decal/cleanable/vomit
+ name = "vomit"
+ desc = "Gosh, how unpleasant."
+ gender = PLURAL
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "vomit_1"
+ random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
+ var/list/viruses = list()
+
+ Del()
+ for(var/datum/disease/D in viruses)
+ D.cure(0)
+ ..()
+
+/obj/effect/decal/cleanable/tomato_smudge
+ name = "tomato smudge"
+ desc = "It's red."
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/effects/tomatodecal.dmi'
+ random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
+
+/obj/effect/decal/cleanable/egg_smudge
+ name = "smashed egg"
+ desc = "Seems like this one won't hatch."
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/effects/tomatodecal.dmi'
+ random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
+
+/obj/effect/decal/cleanable/pie_smudge //honk
+ name = "smashed pie"
+ desc = "It's pie cream from a cream pie."
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/effects/tomatodecal.dmi'
+ random_icon_states = list("smashed_pie")
diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm
new file mode 100644
index 0000000000..b813feb28b
--- /dev/null
+++ b/code/game/objects/effects/decals/Cleanable/robots.dm
@@ -0,0 +1,57 @@
+// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code.
+
+/obj/effect/decal/cleanable/robot_debris
+ name = "robot debris"
+ desc = "It's a useless heap of junk... or is it?"
+ gender = PLURAL
+ density = 0
+ anchored = 0
+ layer = 2
+ icon = 'icons/mob/robots.dmi'
+ icon_state = "gib1"
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
+
+/obj/effect/decal/cleanable/robot_debris/proc/streak(var/list/directions)
+ spawn (0)
+ var/direction = pick(directions)
+ for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
+ sleep(3)
+ if (i > 0)
+ if (prob(40))
+ /*var/obj/effect/decal/cleanable/oil/o =*/
+ new /obj/effect/decal/cleanable/oil/streak(src.loc)
+ else if (prob(10))
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(3, 1, src)
+ s.start()
+ if (step_to(src, get_step(src, direction), 0))
+ break
+
+/obj/effect/decal/cleanable/robot_debris/limb
+ random_icon_states = list("gibarm", "gibleg")
+
+/obj/effect/decal/cleanable/robot_debris/up
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") //2:7 is close enough to 1:4
+
+/obj/effect/decal/cleanable/robot_debris/down
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") //2:7 is close enough to 1:4
+
+/obj/effect/decal/cleanable/oil
+ name = "motor oil"
+ desc = "It's black and greasy. Looks like Beepsky made another mess."
+ gender = PLURAL
+ density = 0
+ anchored = 1
+ layer = 2
+ icon = 'icons/mob/robots.dmi'
+ icon_state = "floor1"
+ var/viruses = list()
+ random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
+
+ Del()
+ for(var/datum/disease/D in viruses)
+ D.cure(0)
+ ..()
+
+/obj/effect/decal/cleanable/oil/streak
+ random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/blood.dm b/code/game/objects/effects/decals/blood.dm
deleted file mode 100644
index 9cf16281c0..0000000000
--- a/code/game/objects/effects/decals/blood.dm
+++ /dev/null
@@ -1,64 +0,0 @@
-/obj/effect/decal/cleanable/New()
- if (random_icon_states && length(src.random_icon_states) > 0)
- src.icon_state = pick(src.random_icon_states)
- ..()
-/*
-/obj/effect/decal/cleanable/blood/burn(fi_amount)
- if(fi_amount > 900000.0)
- src.virus = null
- sleep(11)
- del(src)
- return
-*/
-
-//Gibs.spread proc in gibs.dm
-
-/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
- spawn (0)
- var/direction = pick(directions)
- for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
- sleep(3)
- if (i > 0)
- var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
- for(var/datum/disease/D in src.viruses)
- b.viruses += D
- if (step_to(src, get_step(src, direction), 0))
- break
-
-/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(var/list/directions)
- spawn (0)
- var/direction = pick(directions)
- for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
- sleep(3)
- if (i > 0)
- var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc)
- for(var/datum/disease/D in src.viruses)
- b.viruses += D
- if (step_to(src, get_step(src, direction), 0))
- break
-
-/obj/effect/decal/cleanable/robot_debris/proc/streak(var/list/directions)
- spawn (0)
- var/direction = pick(directions)
- for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
- sleep(3)
- if (i > 0)
- if (prob(40))
- /*var/obj/effect/decal/cleanable/oil/o =*/
- new /obj/effect/decal/cleanable/oil/streak(src.loc)
- else if (prob(10))
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(3, 1, src)
- s.start()
- if (step_to(src, get_step(src, direction), 0))
- break
-
-
-// not a great place for it, but as good as any
-
-/obj/effect/decal/cleanable/greenglow
-
- New()
- ..()
- spawn(1200) // 2 minutes
- del(src)
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm
new file mode 100644
index 0000000000..d1227d3aa3
--- /dev/null
+++ b/code/game/objects/effects/decals/cleanable.dm
@@ -0,0 +1,7 @@
+/obj/effect/decal/cleanable
+ var/list/random_icon_states = list()
+
+/obj/effect/decal/cleanable/New()
+ if (random_icon_states && length(src.random_icon_states) > 0)
+ src.icon_state = pick(src.random_icon_states)
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm
new file mode 100644
index 0000000000..bc3dae0537
--- /dev/null
+++ b/code/game/objects/effects/decals/misc.dm
@@ -0,0 +1,13 @@
+/obj/effect/decal/point
+ name = "arrow"
+ desc = "It's an arrow hanging in mid-air. There may be a wizard about."
+ icon = 'icons/mob/screen1.dmi'
+ icon_state = "arrow"
+ layer = 16.0
+ anchored = 1
+
+// Used for spray that you spray at walls, tables, hydrovats etc
+/obj/effect/decal/spraystill
+ density = 0
+ anchored = 1
+ layer = 50
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm
new file mode 100644
index 0000000000..d50d595d3e
--- /dev/null
+++ b/code/game/objects/effects/decals/remains.dm
@@ -0,0 +1,23 @@
+/obj/effect/decal/remains/human
+ name = "remains"
+ desc = "They look like human remains. They have a strange aura about them."
+ gender = PLURAL
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "remains"
+ anchored = 1
+
+/obj/effect/decal/remains/xeno
+ name = "remains"
+ desc = "They look like the remains of something... alien. They have a strange aura about them."
+ gender = PLURAL
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "remainsxeno"
+ anchored = 1
+
+/obj/effect/decal/remains/robot
+ name = "remains"
+ desc = "They look like the remains of something mechanical. They have a strange aura about them."
+ gender = PLURAL
+ icon = 'icons/mob/robots.dmi'
+ icon_state = "remainsrobot"
+ anchored = 1
\ No newline at end of file
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 5f0ccad98a..0e1e09b784 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -9,4 +9,140 @@
name = "start"
icon = 'icons/mob/screen1.dmi'
icon_state = "x"
- anchored = 1.0
\ No newline at end of file
+ anchored = 1.0
+
+
+//Costume spawner landmarks
+
+/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
+
+ var/list/options = typesof(/obj/effect/landmark/costume)
+ var/PICK= options[rand(1,options.len)]
+ new PICK(src.loc)
+ del(src)
+
+//SUBCLASSES. Spawn a bunch of items and disappear likewise
+/obj/effect/landmark/costume/chicken/New()
+ new /obj/item/clothing/suit/chickensuit(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/gladiator/New()
+ new /obj/item/clothing/under/gladiator(src.loc)
+ new /obj/item/clothing/head/helmet/gladiator(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/madscientist/New()
+ new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
+ new /obj/item/clothing/head/flatcap(src.loc)
+ new /obj/item/clothing/suit/labcoat/mad(src.loc)
+ new /obj/item/clothing/glasses/gglasses(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/elpresidente/New()
+ new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
+ new /obj/item/clothing/head/flatcap(src.loc)
+ new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc)
+ new /obj/item/clothing/shoes/jackboots(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/nyangirl/New()
+ new /obj/item/clothing/under/schoolgirl(src.loc)
+ new /obj/item/clothing/head/kitty(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/maid/New()
+ new /obj/item/clothing/under/blackskirt(src.loc)
+ var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
+ new CHOICE(src.loc)
+ new /obj/item/clothing/glasses/blindfold(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/butler/New()
+ new /obj/item/clothing/suit/wcoat(src.loc)
+ new /obj/item/clothing/under/suit_jacket(src.loc)
+ new /obj/item/clothing/head/that(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/scratch/New()
+ new /obj/item/clothing/gloves/white(src.loc)
+ new /obj/item/clothing/shoes/white(src.loc)
+ new /obj/item/clothing/under/scratch(src.loc)
+ if (prob(30))
+ new /obj/item/clothing/head/cueball(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/highlander/New()
+ new /obj/item/clothing/under/kilt(src.loc)
+ new /obj/item/clothing/head/beret(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/prig/New()
+ new /obj/item/clothing/suit/wcoat(src.loc)
+ new /obj/item/clothing/glasses/monocle(src.loc)
+ var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
+ new CHOICE(src.loc)
+ new /obj/item/clothing/shoes/black(src.loc)
+ new /obj/item/weapon/cane(src.loc)
+ new /obj/item/clothing/under/sl_suit(src.loc)
+ new /obj/item/clothing/mask/fakemoustache(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/plaguedoctor/New()
+ new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
+ new /obj/item/clothing/head/plaguedoctorhat(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/nightowl/New()
+ new /obj/item/clothing/under/owl(src.loc)
+ new /obj/item/clothing/mask/owl_mask(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/waiter/New()
+ new /obj/item/clothing/under/waiter(src.loc)
+ var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
+ new CHOICE(src.loc)
+ new /obj/item/clothing/suit/apron(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/pirate/New()
+ new /obj/item/clothing/under/pirate(src.loc)
+ new /obj/item/clothing/suit/pirate(src.loc)
+ var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
+ new CHOICE(src.loc)
+ new /obj/item/clothing/glasses/eyepatch(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/commie/New()
+ new /obj/item/clothing/under/soviet(src.loc)
+ new /obj/item/clothing/head/ushanka(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/imperium_monk/New()
+ new /obj/item/clothing/suit/imperium_monk(src.loc)
+ if (prob(25))
+ new /obj/item/clothing/mask/gas/cyborg(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/holiday_priest/New()
+ new /obj/item/clothing/suit/holidaypriest(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/marisawizard/fake/New()
+ new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
+ new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/fakewizard/New()
+ new /obj/item/clothing/suit/wizrobe/fake(src.loc)
+ new /obj/item/clothing/head/wizard/fake(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/sexyclown/New()
+ new /obj/item/clothing/mask/gas/sexyclown(src.loc)
+ new /obj/item/clothing/under/sexyclown(src.loc)
+ del(src)
+
+/obj/effect/landmark/costume/sexymime/New()
+ new /obj/item/clothing/mask/gas/sexymime(src.loc)
+ new /obj/item/clothing/under/sexymime(src.loc)
+ del(src)
\ No newline at end of file
diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm
new file mode 100644
index 0000000000..c2f590c561
--- /dev/null
+++ b/code/game/objects/effects/misc.dm
@@ -0,0 +1,8 @@
+//The effect when you wrap a dead body in gift wrap
+/obj/effect/spresent
+ name = "strange present"
+ desc = "It's a ... present?"
+ icon = 'icons/obj/items.dmi'
+ icon_state = "strangepresent"
+ density = 1
+ anchored = 0
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 9d0e89eb32..2c45213ec4 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -1,3 +1,20 @@
+/obj/structure/closet
+ name = "closet"
+ desc = "It's a basic storage unit."
+ icon = 'icons/obj/closet.dmi'
+ icon_state = "closed"
+ density = 1
+ flags = FPRINT
+ var/icon_closed = "closed"
+ var/icon_opened = "open"
+ var/opened = 0
+ var/welded = 0
+ var/wall_mounted = 0 //never solid (You can always pass over it)
+ var/health = 100
+ var/lastbang
+ var/storage_capacity = 20 //This is so that someone can't pack hundreds of items in a locker/crate
+ //then open it in a populated area to crash clients.
+
/obj/structure/closet/alter_health()
return get_turf(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/bombsuit.dm b/code/game/objects/structures/crates_lockers/closets/bombsuit.dm
deleted file mode 100644
index e88201c165..0000000000
--- a/code/game/objects/structures/crates_lockers/closets/bombsuit.dm
+++ /dev/null
@@ -1,15 +0,0 @@
-/obj/structure/closet/bombcloset/New()
- ..()
- sleep(2)
- new /obj/item/clothing/suit/bomb_suit( src )
- new /obj/item/clothing/under/color/black( src )
- new /obj/item/clothing/shoes/black( src )
- new /obj/item/clothing/head/bomb_hood( src )
-
-/obj/structure/closet/bombclosetsecurity/New()
- ..()
- sleep(2)
- new /obj/item/clothing/suit/bomb_suit/security( src )
- new /obj/item/clothing/under/rank/security( src )
- new /obj/item/clothing/shoes/brown( src )
- new /obj/item/clothing/head/bomb_hood/security( src )
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm
new file mode 100644
index 0000000000..256f72522e
--- /dev/null
+++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm
@@ -0,0 +1,12 @@
+/obj/structure/closet/coffin
+ name = "coffin"
+ desc = "It's a burial receptacle for the dearly departed."
+ icon_state = "coffin"
+ icon_closed = "coffin"
+ icon_opened = "coffin_open"
+
+/obj/structure/closet/coffin/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/crittercrate.dm b/code/game/objects/structures/crates_lockers/closets/crittercrate.dm
new file mode 100644
index 0000000000..d3ab79e768
--- /dev/null
+++ b/code/game/objects/structures/crates_lockers/closets/crittercrate.dm
@@ -0,0 +1,6 @@
+/obj/structure/closet/crate/critter
+ name = "critter crate"
+ desc = "A crate which can sustain life for a while."
+ icon_state = "critter"
+ icon_opened = "critteropen"
+ icon_closed = "critter"
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/emergency.dm b/code/game/objects/structures/crates_lockers/closets/emergency.dm
deleted file mode 100644
index cd7a0be222..0000000000
--- a/code/game/objects/structures/crates_lockers/closets/emergency.dm
+++ /dev/null
@@ -1,37 +0,0 @@
-/obj/structure/closet/emcloset/New()
- ..()
-
- if (prob(40))
- new /obj/item/weapon/storage/toolbox/emergency(src)
-
- switch (pickweight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 4, "delete" = 1)))
- if ("small")
- new /obj/item/weapon/tank/emergency_oxygen(src)
- new /obj/item/weapon/tank/emergency_oxygen(src)
-
- if ("aid")
- new /obj/item/weapon/tank/emergency_oxygen(src)
- new /obj/item/weapon/storage/firstaid/o2(src)
-
- if ("tank")
- new /obj/item/weapon/tank/air(src)
-
- if ("both")
- new /obj/item/weapon/tank/emergency_oxygen(src)
- new /obj/item/clothing/mask/breath(src)
-
- if ("nothing")
- // doot
-
- // teehee
- if ("delete")
- del(src)
-
- //If you want to re-add fire, just add "fire" = 15 to the pick list.
- /*if ("fire")
- new /obj/structure/closet/firecloset(src.loc)
- del(src)*/
-
-/obj/structure/closet/emcloset/legacy/New()
- new /obj/item/weapon/tank/oxygen(src)
- new /obj/item/clothing/mask/gas(src)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/firecloset.dm b/code/game/objects/structures/crates_lockers/closets/firecloset.dm
deleted file mode 100644
index 42b494f0c0..0000000000
--- a/code/game/objects/structures/crates_lockers/closets/firecloset.dm
+++ /dev/null
@@ -1,78 +0,0 @@
-/obj/structure/closet/firecloset/full/New()
- ..()
- sleep(4)
- contents = list()
-
- new /obj/item/clothing/suit/fire/firefighter(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/device/flashlight(src)
- new /obj/item/weapon/tank/oxygen/red(src)
- new /obj/item/weapon/extinguisher(src)
- new /obj/item/clothing/head/hardhat/red(src)
-
-/obj/structure/closet/firecloset/New()
- ..()
-
- new /obj/item/clothing/suit/fire/firefighter(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/weapon/tank/oxygen/red(src)
- new /obj/item/weapon/extinguisher(src)
- new /obj/item/clothing/head/hardhat/red(src)
-
- /*switch (pickweight(list("nothing" = 5, "bare-bones" = 35, "basic" = 40, "pickpocketed" = 10, "untouched" = 10)))
- if ("nothing")
- //better luck next time
- if ("bare-bones")
- new /obj/item/weapon/extinguisher(src)
- if ("basic")
- new /obj/item/clothing/mask/breath(src)
- new /obj/item/weapon/tank/emergency_oxygen(src)
- new /obj/item/weapon/extinguisher(src)
- if ("pickpocketed") //suit got stolen
- new /obj/item/clothing/mask/breath(src)
- new /obj/item/weapon/tank/oxygen(src)
- new /obj/item/weapon/extinguisher(src)
- new /obj/item/clothing/head/helmet/hardhat/red(src)
- if ("untouched")
- new /obj/item/clothing/mask/breath(src)
- new /obj/item/weapon/tank/oxygen(src)
- new /obj/item/weapon/extinguisher(src)
- new /obj/item/clothing/suit/fire/firefighter(src)
- new /obj/item/clothing/head/helmet/hardhat/red(src)*/
-
-/obj/structure/closet/toolcloset/New()
- if(prob(40))
- new /obj/item/clothing/suit/hazardvest(src)
- if(prob(70))
- new /obj/item/device/flashlight(src)
- if(prob(70))
- new /obj/item/weapon/screwdriver(src)
- if(prob(70))
- new /obj/item/weapon/wrench(src)
- if(prob(70))
- new /obj/item/weapon/weldingtool(src)
- if(prob(70))
- new /obj/item/weapon/crowbar(src)
- if(prob(70))
- new /obj/item/weapon/wirecutters(src)
- if(prob(70))
- new /obj/item/device/t_scanner(src)
- if(prob(20))
- new /obj/item/weapon/storage/belt/utility(src)
- if(prob(30))
- new /obj/item/weapon/cable_coil/random(src)
- if(prob(30))
- new /obj/item/weapon/cable_coil/random(src)
- if(prob(30))
- new /obj/item/weapon/cable_coil/random(src)
- if(prob(20))
- new /obj/item/device/multitool(src)
- if(prob(5))
- new /obj/item/clothing/gloves/yellow(src)
- if(prob(40))
- new /obj/item/clothing/head/hardhat(src)
-
-/obj/structure/closet/radiation/New()
- ..()
- new /obj/item/clothing/suit/radiation(src)
- new /obj/item/clothing/head/radiation(src)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/fitnesscloset.dm b/code/game/objects/structures/crates_lockers/closets/fitness.dm
similarity index 58%
rename from code/game/objects/structures/crates_lockers/closets/fitnesscloset.dm
rename to code/game/objects/structures/crates_lockers/closets/fitness.dm
index c676464ccd..cc9204af12 100644
--- a/code/game/objects/structures/crates_lockers/closets/fitnesscloset.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fitness.dm
@@ -1,3 +1,9 @@
+/obj/structure/closet/athletic_mixed
+ name = "athletic wardrobe"
+ desc = "It's a storage unit for athletic wear."
+ icon_state = "mixed"
+ icon_closed = "mixed"
+
/obj/structure/closet/athletic_mixed/New()
..()
sleep(2)
@@ -7,6 +13,11 @@
new /obj/item/clothing/under/shorts/blue(src)
new /obj/item/clothing/under/shorts/green(src)
+
+/obj/structure/closet/boxinggloves
+ name = "boxing gloves"
+ desc = "It's a storage unit for gloves for use in the boxing ring."
+
/obj/structure/closet/boxinggloves/New()
..()
sleep(2)
@@ -15,6 +26,11 @@
new /obj/item/clothing/gloves/boxing/yellow(src)
new /obj/item/clothing/gloves/boxing(src)
+
+/obj/structure/closet/masks
+ name = "mask closet"
+ desc = "IT'S A STORAGE UNIT FOR FIGHTER MASKS OLE!"
+
/obj/structure/closet/masks/New()
..()
sleep(2)
@@ -22,6 +38,13 @@
new /obj/item/clothing/mask/luchador/rudos(src)
new /obj/item/clothing/mask/luchador/tecnicos(src)
+
+/obj/structure/closet/lasertag/red
+ name = "red laser tag equipment"
+ desc = "It's a storage unit for laser tag equipment."
+ icon_state = "red"
+ icon_closed = "red"
+
/obj/structure/closet/lasertag/red/New()
..()
sleep(2)
@@ -30,6 +53,13 @@
new /obj/item/clothing/suit/redtag(src)
new /obj/item/clothing/suit/redtag(src)
+
+/obj/structure/closet/lasertag/blue
+ name = "blue laser tag equipment"
+ desc = "It's a storage unit for laser tag equipment."
+ icon_state = "blue"
+ icon_closed = "blue"
+
/obj/structure/closet/lasertag/blue/New()
..()
sleep(2)
diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
index bb3d58e8d1..b9ebc56d10 100644
--- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm
+++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
@@ -1,3 +1,39 @@
+/obj/structure/closet/cabinet
+ name = "cabinet"
+ desc = "Old will forever be in fashion."
+ icon_state = "cabinet_closed"
+ icon_closed = "cabinet_closed"
+ icon_opened = "cabinet_open"
+
+/obj/structure/closet/cabinet/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
+/obj/structure/closet/acloset
+ name = "strange closet"
+ desc = "It looks alien!"
+ icon_state = "acloset"
+ icon_closed = "acloset"
+ icon_opened = "aclosetopen"
+
+
+/obj/structure/closet/gimmick
+ name = "administrative supply closet"
+ desc = "It's a storage unit for things that have no right being here."
+ icon_state = "syndicate1"
+ icon_closed = "syndicate1"
+ icon_opened = "syndicate1open"
+ anchored = 0
+
+/obj/structure/closet/gimmick/russian
+ name = "russian surplus closet"
+ desc = "It's a storage unit for Russian standard-issue surplus."
+ icon_state = "syndicate1"
+ icon_closed = "syndicate1"
+ icon_opened = "syndicate1open"
+
/obj/structure/closet/gimmick/russian/New()
..()
sleep(2)
@@ -12,6 +48,14 @@
new /obj/item/clothing/under/soviet(src)
new /obj/item/clothing/under/soviet(src)
+
+/obj/structure/closet/gimmick/tacticool
+ name = "tacticool gear closet"
+ desc = "It's a storage unit for Tacticool gear."
+ icon_state = "syndicate1"
+ icon_closed = "syndicate1"
+ icon_opened = "syndicate1open"
+
/obj/structure/closet/gimmick/tacticool/New()
..()
sleep(2)
@@ -28,4 +72,71 @@
new /obj/item/clothing/suit/armor/swat(src)
new /obj/item/clothing/suit/armor/swat(src)
new /obj/item/clothing/under/syndicate/tacticool(src)
- new /obj/item/clothing/under/syndicate/tacticool(src)
\ No newline at end of file
+ new /obj/item/clothing/under/syndicate/tacticool(src)
+
+
+/obj/structure/closet/thunderdome
+ name = "\improper Thunderdome closet"
+ desc = "Everything you need!"
+ icon_state = "syndicate"
+ icon_closed = "syndicate"
+ icon_opened = "syndicateopen"
+ anchored = 1
+
+/obj/structure/closet/thunderdome/New()
+ ..()
+ sleep(2)
+
+/obj/structure/closet/thunderdome/tdred
+ name = "red-team Thunderdome closet"
+
+/obj/structure/closet/thunderdome/tdred/New()
+ ..()
+ sleep(2)
+ new /obj/item/clothing/suit/armor/tdome/red(src)
+ new /obj/item/clothing/suit/armor/tdome/red(src)
+ new /obj/item/clothing/suit/armor/tdome/red(src)
+ new /obj/item/weapon/melee/energy/sword(src)
+ new /obj/item/weapon/melee/energy/sword(src)
+ new /obj/item/weapon/melee/energy/sword(src)
+ new /obj/item/weapon/gun/energy/laser(src)
+ new /obj/item/weapon/gun/energy/laser(src)
+ new /obj/item/weapon/gun/energy/laser(src)
+ new /obj/item/weapon/melee/baton(src)
+ new /obj/item/weapon/melee/baton(src)
+ new /obj/item/weapon/melee/baton(src)
+ new /obj/item/weapon/storage/flashbang_kit(src)
+ new /obj/item/weapon/storage/flashbang_kit(src)
+ new /obj/item/weapon/storage/flashbang_kit(src)
+ new /obj/item/clothing/head/helmet/thunderdome(src)
+ new /obj/item/clothing/head/helmet/thunderdome(src)
+ new /obj/item/clothing/head/helmet/thunderdome(src)
+
+/obj/structure/closet/thunderdome/tdgreen
+ name = "green-team Thunderdome closet"
+ icon_state = "syndicate1"
+ icon_closed = "syndicate1"
+ icon_opened = "syndicate1open"
+
+/obj/structure/closet/thunderdome/tdgreen/New()
+ ..()
+ sleep(2)
+ new /obj/item/clothing/suit/armor/tdome/green(src)
+ new /obj/item/clothing/suit/armor/tdome/green(src)
+ new /obj/item/clothing/suit/armor/tdome/green(src)
+ new /obj/item/weapon/melee/energy/sword(src)
+ new /obj/item/weapon/melee/energy/sword(src)
+ new /obj/item/weapon/melee/energy/sword(src)
+ new /obj/item/weapon/gun/energy/laser(src)
+ new /obj/item/weapon/gun/energy/laser(src)
+ new /obj/item/weapon/gun/energy/laser(src)
+ new /obj/item/weapon/melee/baton(src)
+ new /obj/item/weapon/melee/baton(src)
+ new /obj/item/weapon/melee/baton(src)
+ new /obj/item/weapon/storage/flashbang_kit(src)
+ new /obj/item/weapon/storage/flashbang_kit(src)
+ new /obj/item/weapon/storage/flashbang_kit(src)
+ new /obj/item/clothing/head/helmet/thunderdome(src)
+ new /obj/item/clothing/head/helmet/thunderdome(src)
+ new /obj/item/clothing/head/helmet/thunderdome(src)
+
diff --git a/code/game/objects/structures/crates_lockers/closets/gmcloset.dm b/code/game/objects/structures/crates_lockers/closets/gmcloset.dm
deleted file mode 100644
index 3f3aadd70b..0000000000
--- a/code/game/objects/structures/crates_lockers/closets/gmcloset.dm
+++ /dev/null
@@ -1,13 +0,0 @@
-/obj/structure/closet/gmcloset/New()
- ..()
- sleep(2)
- new /obj/item/clothing/head/that(src)
- new /obj/item/clothing/head/that(src)
- new /obj/item/clothing/under/sl_suit(src)
- new /obj/item/clothing/under/sl_suit(src)
- new /obj/item/clothing/under/rank/bartender(src)
- new /obj/item/clothing/under/rank/bartender(src)
- new /obj/item/clothing/suit/wcoat(src)
- new /obj/item/clothing/suit/wcoat(src)
- new /obj/item/clothing/shoes/black(src)
- new /obj/item/clothing/shoes/black(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/janitor.dm b/code/game/objects/structures/crates_lockers/closets/janitor.dm
deleted file mode 100644
index fcc9c93999..0000000000
--- a/code/game/objects/structures/crates_lockers/closets/janitor.dm
+++ /dev/null
@@ -1,16 +0,0 @@
-/obj/structure/closet/jcloset/New()
- ..()
- sleep(2)
- new /obj/item/clothing/under/rank/janitor(src)
- new /obj/item/weapon/cartridge/janitor(src)
- new /obj/item/device/flashlight(src)
- new /obj/item/clothing/shoes/galoshes(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/trashbag(src)
- new /obj/item/device/lightreplacer(src)
- new /obj/item/clothing/head/soft/purple(src)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
new file mode 100644
index 0000000000..49d4b9539d
--- /dev/null
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -0,0 +1,75 @@
+/* Closets for specific jobs
+ * Contains:
+ * Bartender
+ * Janitor
+ * Lawyer
+ */
+
+/*
+ * Bartender
+ */
+/obj/structure/closet/gmcloset
+ name = "formal closet"
+ desc = "It's a storage unit for formal clothing."
+ icon_state = "black"
+ icon_closed = "black"
+
+/obj/structure/closet/gmcloset/New()
+ ..()
+ sleep(2)
+ new /obj/item/clothing/head/that(src)
+ new /obj/item/clothing/head/that(src)
+ new /obj/item/clothing/under/sl_suit(src)
+ new /obj/item/clothing/under/sl_suit(src)
+ new /obj/item/clothing/under/rank/bartender(src)
+ new /obj/item/clothing/under/rank/bartender(src)
+ new /obj/item/clothing/suit/wcoat(src)
+ new /obj/item/clothing/suit/wcoat(src)
+ new /obj/item/clothing/shoes/black(src)
+ new /obj/item/clothing/shoes/black(src)
+
+/*
+ * Janitor
+ */
+/obj/structure/closet/jcloset
+ name = "custodial closet"
+ desc = "It's a storage unit for janitorial clothes and gear."
+ icon_state = "mixed"
+ icon_closed = "mixed"
+
+/obj/structure/closet/jcloset/New()
+ ..()
+ sleep(2)
+ new /obj/item/clothing/under/rank/janitor(src)
+ new /obj/item/weapon/cartridge/janitor(src)
+ new /obj/item/device/flashlight(src)
+ new /obj/item/clothing/shoes/galoshes(src)
+ new /obj/item/weapon/caution(src)
+ new /obj/item/weapon/caution(src)
+ new /obj/item/weapon/caution(src)
+ new /obj/item/weapon/caution(src)
+ new /obj/item/weapon/caution(src)
+ new /obj/item/weapon/caution(src)
+ new /obj/item/weapon/trashbag(src)
+ new /obj/item/device/lightreplacer(src)
+ new /obj/item/clothing/head/soft/purple(src)
+
+/*
+ * Lawyer
+ */
+/obj/structure/closet/lawcloset
+ name = "legal closet"
+ desc = "It's a storage unit for courtroom apparel and items."
+ icon_state = "blue"
+ icon_closed = "blue"
+
+/obj/structure/closet/lawcloset/New()
+ new /obj/item/clothing/under/lawyer/female(src)
+ new /obj/item/clothing/under/lawyer/black(src)
+ new /obj/item/clothing/under/lawyer/red(src)
+ new /obj/item/clothing/under/lawyer/bluesuit(src)
+ new /obj/item/clothing/suit/lawyer/bluejacket(src)
+ new /obj/item/clothing/under/lawyer/purpsuit(src)
+ new /obj/item/clothing/suit/lawyer/purpjacket(src)
+ new /obj/item/clothing/shoes/brown(src)
+ new /obj/item/clothing/shoes/black(src)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/l3closet.dm b/code/game/objects/structures/crates_lockers/closets/l3closet.dm
index 9cc2393c72..6e7591868a 100644
--- a/code/game/objects/structures/crates_lockers/closets/l3closet.dm
+++ b/code/game/objects/structures/crates_lockers/closets/l3closet.dm
@@ -1,9 +1,22 @@
+/obj/structure/closet/l3closet
+ name = "level-3 biohazard suit closet"
+ desc = "It's a storage unit for level-3 biohazard gear."
+ icon_state = "bio"
+ icon_closed = "bio"
+ icon_opened = "bioopen"
+
/obj/structure/closet/l3closet/New()
..()
sleep(2)
new /obj/item/clothing/suit/bio_suit/general( src )
new /obj/item/clothing/head/bio_hood/general( src )
+
+/obj/structure/closet/l3closet/general
+ icon_state = "bio_general"
+ icon_closed = "bio_general"
+ icon_opened = "bio_generalopen"
+
/obj/structure/closet/l3closet/general/New()
..()
sleep(2)
@@ -11,6 +24,12 @@
new /obj/item/clothing/suit/bio_suit/general( src )
new /obj/item/clothing/head/bio_hood/general( src )
+
+/obj/structure/closet/l3closet/virology
+ icon_state = "bio_virology"
+ icon_closed = "bio_virology"
+ icon_opened = "bio_virologyopen"
+
/obj/structure/closet/l3closet/virology/New()
..()
sleep(2)
@@ -18,6 +37,12 @@
new /obj/item/clothing/suit/bio_suit/virology( src )
new /obj/item/clothing/head/bio_hood/virology( src )
+
+/obj/structure/closet/l3closet/security
+ icon_state = "bio_security"
+ icon_closed = "bio_security"
+ icon_opened = "bio_securityopen"
+
/obj/structure/closet/l3closet/security/New()
..()
sleep(2)
@@ -25,6 +50,12 @@
new /obj/item/clothing/suit/bio_suit/security( src )
new /obj/item/clothing/head/bio_hood/security( src )
+
+/obj/structure/closet/l3closet/janitor
+ icon_state = "bio_janitor"
+ icon_closed = "bio_janitor"
+ icon_opened = "bio_janitoropen"
+
/obj/structure/closet/l3closet/janitor/New()
..()
sleep(2)
@@ -32,6 +63,12 @@
new /obj/item/clothing/suit/bio_suit/janitor( src )
new /obj/item/clothing/head/bio_hood/janitor( src )
+
+/obj/structure/closet/l3closet/scientist
+ icon_state = "bio_scientist"
+ icon_closed = "bio_scientist"
+ icon_opened = "bio_scientistopen"
+
/obj/structure/closet/l3closet/scientist/New()
..()
sleep(2)
diff --git a/code/game/objects/structures/crates_lockers/closets/malfunction.dm b/code/game/objects/structures/crates_lockers/closets/malfunction.dm
index a21311fdfe..7cfb4f18e2 100644
--- a/code/game/objects/structures/crates_lockers/closets/malfunction.dm
+++ b/code/game/objects/structures/crates_lockers/closets/malfunction.dm
@@ -1,3 +1,10 @@
+
+/obj/structure/closet/malf/suits
+ desc = "It's a storage unit for operational gear."
+ icon_state = "syndicate"
+ icon_closed = "syndicate"
+ icon_opened = "syndicateopen"
+
/obj/structure/closet/malf/suits/New()
..()
sleep(2)
diff --git a/code/game/objects/structures/crates_lockers/closets/nuclear.dm b/code/game/objects/structures/crates_lockers/closets/nuclear.dm
deleted file mode 100644
index ae1720bfbe..0000000000
--- a/code/game/objects/structures/crates_lockers/closets/nuclear.dm
+++ /dev/null
@@ -1,24 +0,0 @@
-/obj/structure/closet/syndicate/nuclear/New()
- ..()
- sleep(2)
- new /obj/item/ammo_magazine/a50(src)
- new /obj/item/ammo_magazine/a50(src)
- new /obj/item/ammo_magazine/a50(src)
- new /obj/item/ammo_magazine/a50(src)
- new /obj/item/ammo_magazine/a50(src)
- new /obj/item/weapon/storage/handcuff_kit(src)
- new /obj/item/weapon/storage/flashbang_kit(src)
- new /obj/item/weapon/gun/energy/gun(src)
- new /obj/item/weapon/gun/energy/gun(src)
- new /obj/item/weapon/gun/energy/gun(src)
- new /obj/item/weapon/gun/energy/gun(src)
- new /obj/item/weapon/gun/energy/gun(src)
- new /obj/item/weapon/pinpointer/nukeop(src)
- new /obj/item/weapon/pinpointer/nukeop(src)
- new /obj/item/weapon/pinpointer/nukeop(src)
- new /obj/item/weapon/pinpointer/nukeop(src)
- new /obj/item/weapon/pinpointer/nukeop(src)
- new /obj/item/device/pda/syndicate(src)
- var/obj/item/device/radio/uplink/U = new(src)
- U.hidden_uplink.uses = 40
- return
diff --git a/code/game/objects/structures/crates_lockers/closets/kitchen.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
similarity index 100%
rename from code/game/objects/structures/crates_lockers/closets/kitchen.dm
rename to code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 5e9925db55..bedb0ac706 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -158,4 +158,30 @@
sleep(2)
new /obj/item/weapon/storage/pillbottlebox(src)
new /obj/item/weapon/storage/pillbottlebox(src)
- return
\ No newline at end of file
+ return
+
+/obj/structure/closet/secure_closet/medical_wall
+ name = "First Aid Closet"
+ desc = "It's a secure wall-mounted storage unit for first aid supplies."
+ icon_state = "medical_wall_locked"
+ icon_closed = "medical_wall_unlocked"
+ icon_locked = "medical_wall_locked"
+ icon_opened = "medical_wall_open"
+ icon_broken = "medical_wall_spark"
+ icon_off = "medical_wall_off"
+ anchored = 1
+ density = 0
+ wall_mounted = 1
+ req_access = list(access_medical)
+
+/obj/structure/closet/secure_closet/medical_wall/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
index 28b220918e..12d2e3fed4 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
@@ -1,5 +1,8 @@
-/obj/structure/closet/secure_closet/personal/var/registered_name = null
-/obj/structure/closet/secure_closet/personal/req_access = list(access_all_personal_lockers)
+/obj/structure/closet/secure_closet/personal
+ desc = "It's a secure locker for personell. The first card swiped gains control."
+ name = "personal closet"
+ req_access = list(access_all_personal_lockers)
+ var/registered_name = null
/obj/structure/closet/secure_closet/personal/New()
..()
@@ -11,6 +14,10 @@
new /obj/item/device/radio/headset( src )
return
+
+/obj/structure/closet/secure_closet/personal/patient
+ name = "patient's closet"
+
/obj/structure/closet/secure_closet/personal/patient/New()
..()
spawn(4)
@@ -20,6 +27,27 @@
return
+
+/obj/structure/closet/secure_closet/personal/cabinet
+ icon_state = "cabinetdetective_locked"
+ icon_closed = "cabinetdetective"
+ icon_locked = "cabinetdetective_locked"
+ icon_opened = "cabinetdetective_open"
+ icon_broken = "cabinetdetective_broken"
+ icon_off = "cabinetdetective_broken"
+
+/obj/structure/closet/secure_closet/personal/cabinet/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/secure_closet/personal/cabinet/New()
..()
spawn(4)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index efe451b660..aca03793d9 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -1,3 +1,21 @@
+/obj/structure/closet/secure_closet
+ name = "secure locker"
+ desc = "It's an immobile card-locked storage unit."
+ icon = 'icons/obj/closet.dmi'
+ icon_state = "secure1"
+ density = 1
+ opened = 0
+ var/locked = 1
+ var/broken = 0
+ var/large = 1
+ icon_closed = "secure"
+ var/icon_locked = "secure1"
+ icon_opened = "secureopen"
+ var/icon_broken = "securebroken"
+ var/icon_off = "secureoff"
+ wall_mounted = 0 //never solid (You can always pass over it)
+ health = 200
+
/obj/structure/closet/secure_closet/can_open()
..()
if(src.locked)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 193dfa5abb..01cc19d760 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -242,3 +242,29 @@
new /obj/item/clothing/head/powdered_wig (src)
new /obj/item/weapon/storage/briefcase(src)
return
+
+/obj/structure/closet/secure_closet/wall
+ name = "wall locker"
+ req_access = list(access_security)
+ icon_state = "wall-locker1"
+ density = 1
+ icon_closed = "wall-locker"
+ icon_locked = "wall-locker1"
+ icon_opened = "wall-lockeropen"
+ icon_broken = "wall-lockerbroken"
+ icon_off = "wall-lockeroff"
+
+ //too small to put a man in
+ large = 0
+
+/obj/structure/closet/secure_closet/wall/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
index dd17e11fd9..790237b2eb 100644
--- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
@@ -1,3 +1,14 @@
+/obj/structure/closet/syndicate
+ name = "armoury closet"
+ desc = "Why is this here?"
+ icon_state = "syndicate"
+ icon_closed = "syndicate"
+ icon_opened = "syndicateopen"
+
+
+/obj/structure/closet/syndicate/personal
+ desc = "It's a storage unit for operative gear."
+
/obj/structure/closet/syndicate/personal/New()
..()
sleep(2)
@@ -12,3 +23,31 @@
new /obj/item/device/multitool(src)
new /obj/item/weapon/shield/energy(src)
+
+/obj/structure/closet/syndicate/nuclear
+ desc = "It's a storage unit for nuclear-operative gear."
+
+/obj/structure/closet/syndicate/nuclear/New()
+ ..()
+ sleep(2)
+ new /obj/item/ammo_magazine/a50(src)
+ new /obj/item/ammo_magazine/a50(src)
+ new /obj/item/ammo_magazine/a50(src)
+ new /obj/item/ammo_magazine/a50(src)
+ new /obj/item/ammo_magazine/a50(src)
+ new /obj/item/weapon/storage/handcuff_kit(src)
+ new /obj/item/weapon/storage/flashbang_kit(src)
+ new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/pinpointer/nukeop(src)
+ new /obj/item/weapon/pinpointer/nukeop(src)
+ new /obj/item/weapon/pinpointer/nukeop(src)
+ new /obj/item/weapon/pinpointer/nukeop(src)
+ new /obj/item/weapon/pinpointer/nukeop(src)
+ new /obj/item/device/pda/syndicate(src)
+ var/obj/item/device/radio/uplink/U = new(src)
+ U.hidden_uplink.uses = 40
+ return
diff --git a/code/game/objects/structures/crates_lockers/closets/thunderdome.dm b/code/game/objects/structures/crates_lockers/closets/thunderdome.dm
deleted file mode 100644
index 19b7ed2376..0000000000
--- a/code/game/objects/structures/crates_lockers/closets/thunderdome.dm
+++ /dev/null
@@ -1,47 +0,0 @@
-/obj/structure/closet/thunderdome/New()
- ..()
- sleep(2)
-
-/obj/structure/closet/thunderdome/tdred/New()
- ..()
- sleep(2)
- new /obj/item/clothing/suit/armor/tdome/red(src)
- new /obj/item/clothing/suit/armor/tdome/red(src)
- new /obj/item/clothing/suit/armor/tdome/red(src)
- new /obj/item/weapon/melee/energy/sword(src)
- new /obj/item/weapon/melee/energy/sword(src)
- new /obj/item/weapon/melee/energy/sword(src)
- new /obj/item/weapon/gun/energy/laser(src)
- new /obj/item/weapon/gun/energy/laser(src)
- new /obj/item/weapon/gun/energy/laser(src)
- new /obj/item/weapon/melee/baton(src)
- new /obj/item/weapon/melee/baton(src)
- new /obj/item/weapon/melee/baton(src)
- new /obj/item/weapon/storage/flashbang_kit(src)
- new /obj/item/weapon/storage/flashbang_kit(src)
- new /obj/item/weapon/storage/flashbang_kit(src)
- new /obj/item/clothing/head/helmet/thunderdome(src)
- new /obj/item/clothing/head/helmet/thunderdome(src)
- new /obj/item/clothing/head/helmet/thunderdome(src)
-
-/obj/structure/closet/thunderdome/tdgreen/New()
- ..()
- sleep(2)
- new /obj/item/clothing/suit/armor/tdome/green(src)
- new /obj/item/clothing/suit/armor/tdome/green(src)
- new /obj/item/clothing/suit/armor/tdome/green(src)
- new /obj/item/weapon/melee/energy/sword(src)
- new /obj/item/weapon/melee/energy/sword(src)
- new /obj/item/weapon/melee/energy/sword(src)
- new /obj/item/weapon/gun/energy/laser(src)
- new /obj/item/weapon/gun/energy/laser(src)
- new /obj/item/weapon/gun/energy/laser(src)
- new /obj/item/weapon/melee/baton(src)
- new /obj/item/weapon/melee/baton(src)
- new /obj/item/weapon/melee/baton(src)
- new /obj/item/weapon/storage/flashbang_kit(src)
- new /obj/item/weapon/storage/flashbang_kit(src)
- new /obj/item/weapon/storage/flashbang_kit(src)
- new /obj/item/clothing/head/helmet/thunderdome(src)
- new /obj/item/clothing/head/helmet/thunderdome(src)
- new /obj/item/clothing/head/helmet/thunderdome(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
new file mode 100644
index 0000000000..1706e5acc6
--- /dev/null
+++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
@@ -0,0 +1,221 @@
+/* Utility Closets
+ * Contains:
+ * Emergency Closet
+ * Fire Closet
+ * Tool Closet
+ * Radiation Closet
+ * Bombsuit Closet
+ * Hydrant
+ * First Aid
+ */
+
+/*
+ * Emergency Closet
+ */
+/obj/structure/closet/emcloset
+ name = "emergency closet"
+ desc = "It's a storage unit for emergency breathmasks and o2 tanks."
+ icon_state = "emergency"
+ icon_closed = "emergency"
+ icon_opened = "emergencyopen"
+
+/obj/structure/closet/emcloset/New()
+ ..()
+
+ if (prob(40))
+ new /obj/item/weapon/storage/toolbox/emergency(src)
+
+ switch (pickweight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 4, "delete" = 1)))
+ if ("small")
+ new /obj/item/weapon/tank/emergency_oxygen(src)
+ new /obj/item/weapon/tank/emergency_oxygen(src)
+
+ if ("aid")
+ new /obj/item/weapon/tank/emergency_oxygen(src)
+ new /obj/item/weapon/storage/firstaid/o2(src)
+
+ if ("tank")
+ new /obj/item/weapon/tank/air(src)
+
+ if ("both")
+ new /obj/item/weapon/tank/emergency_oxygen(src)
+ new /obj/item/clothing/mask/breath(src)
+
+ if ("nothing")
+ // doot
+
+ // teehee
+ if ("delete")
+ del(src)
+
+ //If you want to re-add fire, just add "fire" = 15 to the pick list.
+ /*if ("fire")
+ new /obj/structure/closet/firecloset(src.loc)
+ del(src)*/
+
+/obj/structure/closet/emcloset/legacy/New()
+ new /obj/item/weapon/tank/oxygen(src)
+ new /obj/item/clothing/mask/gas(src)
+
+/*
+ * Fire Closet
+ */
+/obj/structure/closet/firecloset
+ name = "fire-safety closet"
+ desc = "It's a storage unit for fire-fighting supplies."
+ icon_state = "firecloset"
+ icon_closed = "firecloset"
+ icon_opened = "fireclosetopen"
+
+/obj/structure/closet/firecloset/New()
+ ..()
+
+ new /obj/item/clothing/suit/fire/firefighter(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/weapon/tank/oxygen/red(src)
+ new /obj/item/weapon/extinguisher(src)
+ new /obj/item/clothing/head/hardhat/red(src)
+
+/obj/structure/closet/firecloset/full/New()
+ ..()
+ sleep(4)
+ contents = list()
+
+ new /obj/item/clothing/suit/fire/firefighter(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/device/flashlight(src)
+ new /obj/item/weapon/tank/oxygen/red(src)
+ new /obj/item/weapon/extinguisher(src)
+ new /obj/item/clothing/head/hardhat/red(src)
+
+/obj/structure/closet/firecloset/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
+
+/*
+ * Tool Closet
+ */
+/obj/structure/closet/toolcloset
+ name = "tool closet"
+ desc = "It's a storage unit for tools."
+ icon_state = "toolcloset"
+ icon_closed = "toolcloset"
+ icon_opened = "toolclosetopen"
+
+/obj/structure/closet/toolcloset/New()
+ if(prob(40))
+ new /obj/item/clothing/suit/hazardvest(src)
+ if(prob(70))
+ new /obj/item/device/flashlight(src)
+ if(prob(70))
+ new /obj/item/weapon/screwdriver(src)
+ if(prob(70))
+ new /obj/item/weapon/wrench(src)
+ if(prob(70))
+ new /obj/item/weapon/weldingtool(src)
+ if(prob(70))
+ new /obj/item/weapon/crowbar(src)
+ if(prob(70))
+ new /obj/item/weapon/wirecutters(src)
+ if(prob(70))
+ new /obj/item/device/t_scanner(src)
+ if(prob(20))
+ new /obj/item/weapon/storage/belt/utility(src)
+ if(prob(30))
+ new /obj/item/weapon/cable_coil/random(src)
+ if(prob(30))
+ new /obj/item/weapon/cable_coil/random(src)
+ if(prob(30))
+ new /obj/item/weapon/cable_coil/random(src)
+ if(prob(20))
+ new /obj/item/device/multitool(src)
+ if(prob(5))
+ new /obj/item/clothing/gloves/yellow(src)
+ if(prob(40))
+ new /obj/item/clothing/head/hardhat(src)
+
+
+/*
+ * Radiation Closet
+ */
+
+/obj/structure/closet/radiation
+ name = "radiation suit closet"
+ desc = "It's a storage unit for rad-protective suits."
+ icon_state = "radsuitcloset"
+ icon_opened = "toolclosetopen"
+ icon_closed = "radsuitcloset"
+
+/obj/structure/closet/radiation/New()
+ ..()
+ new /obj/item/clothing/suit/radiation(src)
+ new /obj/item/clothing/head/radiation(src)
+
+/*
+ * Bombsuit closet
+ */
+ /obj/structure/closet/bombcloset
+ name = "\improper EOD closet"
+ desc = "It's a storage unit for explosion-protective suits."
+ icon_state = "bombsuit"
+ icon_closed = "bombsuit"
+ icon_opened = "bombsuitopen"
+
+/obj/structure/closet/bombcloset/New()
+ ..()
+ sleep(2)
+ new /obj/item/clothing/suit/bomb_suit( src )
+ new /obj/item/clothing/under/color/black( src )
+ new /obj/item/clothing/shoes/black( src )
+ new /obj/item/clothing/head/bomb_hood( src )
+
+
+/obj/structure/closet/bombclosetsecurity
+ name = "\improper EOD closet"
+ desc = "It's a storage unit for explosion-protective suits."
+ icon_state = "bombsuitsec"
+ icon_closed = "bombsuitsec"
+ icon_opened = "bombsuitsecopen"
+
+/obj/structure/closet/bombclosetsecurity/New()
+ ..()
+ sleep(2)
+ new /obj/item/clothing/suit/bomb_suit/security( src )
+ new /obj/item/clothing/under/rank/security( src )
+ new /obj/item/clothing/shoes/brown( src )
+ new /obj/item/clothing/head/bomb_hood/security( src )
+
+/*
+ * Hydrant
+ */
+/obj/structure/closet/hydrant //wall mounted fire closet
+ name = "fire-safety closet"
+ desc = "It's a storage unit for fire-fighting supplies."
+ icon_state = "hydrant"
+ icon_closed = "hydrant"
+ icon_opened = "hydrant_open"
+ anchored = 1
+ density = 0
+ wall_mounted = 1
+
+/*
+ * First Aid
+ */
+/obj/structure/closet/medical_wall //wall mounted medical closet
+ name = "first-aid closet"
+ desc = "It's wall-mounted storage unit for first aid supplies."
+ icon_state = "medical_wall"
+ icon_closed = "medical_wall"
+ icon_opened = "medical_wall_open"
+ anchored = 1
+ density = 0
+ wall_mounted = 1
+
+/obj/structure/closet/medical_wall/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index fd93cd3a8c..823ba0bbab 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -1,3 +1,9 @@
+/obj/structure/closet/wardrobe
+ name = "wardrobe"
+ desc = "It's a storage unit for standard-issue Nanotrasen attire."
+ icon_state = "blue"
+ icon_closed = "blue"
+
/obj/structure/closet/wardrobe/New()
new /obj/item/clothing/under/color/blue(src)
new /obj/item/clothing/under/color/blue(src)
@@ -7,6 +13,12 @@
new /obj/item/clothing/shoes/brown(src)
return
+
+/obj/structure/closet/wardrobe/red
+ name = "security wardrobe"
+ icon_state = "red"
+ icon_closed = "red"
+
/obj/structure/closet/wardrobe/red/New()
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
@@ -22,6 +34,12 @@
new /obj/item/clothing/head/beret/sec(src)
return
+
+/obj/structure/closet/wardrobe/pink
+ name = "pink wardrobe"
+ icon_state = "pink"
+ icon_closed = "pink"
+
/obj/structure/closet/wardrobe/pink/New()
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/under/color/pink(src)
@@ -31,6 +49,11 @@
new /obj/item/clothing/shoes/brown(src)
return
+/obj/structure/closet/wardrobe/black
+ name = "black wardrobe"
+ icon_state = "black"
+ icon_closed = "black"
+
/obj/structure/closet/wardrobe/black/New()
new /obj/item/clothing/under/color/black(src)
new /obj/item/clothing/under/color/black(src)
@@ -43,6 +66,13 @@
new /obj/item/clothing/head/that(src)
return
+
+/obj/structure/closet/wardrobe/chaplain_black
+ name = "chapel wardrobe"
+ desc = "It's a storage unit for Nanotrasen-approved religious attire."
+ icon_state = "black"
+ icon_closed = "black"
+
/obj/structure/closet/wardrobe/chaplain_black/New()
new /obj/item/clothing/under/rank/chaplain(src)
new /obj/item/clothing/shoes/black(src)
@@ -56,6 +86,12 @@
new /obj/item/weapon/storage/fancy/candle_box(src)
return
+
+/obj/structure/closet/wardrobe/green
+ name = "green wardrobe"
+ icon_state = "green"
+ icon_closed = "green"
+
/obj/structure/closet/wardrobe/green/New()
new /obj/item/clothing/under/color/green(src)
new /obj/item/clothing/under/color/green(src)
@@ -63,11 +99,15 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
- //new /obj/item/clothing/head/soft/green(src)
- //new /obj/item/clothing/head/soft/green(src)
- //new /obj/item/clothing/head/soft/green(src)
return
+
+/obj/structure/closet/wardrobe/orange
+ name = "prison wardrobe"
+ desc = "It's a storage unit for Nanotrasen-regulation prisoner attire."
+ icon_state = "orange"
+ icon_closed = "orange"
+
/obj/structure/closet/wardrobe/orange/New()
new /obj/item/clothing/under/color/orange(src)
new /obj/item/clothing/under/color/orange(src)
@@ -75,11 +115,14 @@
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
- //new /obj/item/clothing/head/soft/orange(src)
- //new /obj/item/clothing/head/soft/orange(src)
- //new /obj/item/clothing/head/soft/orange(src)
return
+
+/obj/structure/closet/wardrobe/yellow
+ name = "yellow wardrobe"
+ icon_state = "wardrobe-y"
+ icon_closed = "wardrobe-y"
+
/obj/structure/closet/wardrobe/yellow/New()
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/under/color/yellow(src)
@@ -87,11 +130,14 @@
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
- //new /obj/item/clothing/head/soft/yellow(src)
- //new /obj/item/clothing/head/soft/yellow(src)
- //new /obj/item/clothing/head/soft/yellow(src)
return
+
+/obj/structure/closet/wardrobe/atmospherics_yellow
+ name = "atmospherics wardrobe"
+ icon_state = "yellow"
+ icon_closed = "yellow"
+
/obj/structure/closet/wardrobe/atmospherics_yellow/New()
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
@@ -99,11 +145,15 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/black(src)
- //new /obj/item/clothing/head/soft/yellow(src)
- //new /obj/item/clothing/head/soft/yellow(src)
- //new /obj/item/clothing/head/soft/yellow(src)
return
+
+
+/obj/structure/closet/wardrobe/engineering_yellow
+ name = "engineering wardrobe"
+ icon_state = "yellow"
+ icon_closed = "yellow"
+
/obj/structure/closet/wardrobe/engineering_yellow/New()
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/under/rank/engineer(src)
@@ -111,11 +161,14 @@
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
- //new /obj/item/clothing/head/soft/yellow(src)
- //new /obj/item/clothing/head/soft/yellow(src)
- //new /obj/item/clothing/head/soft/yellow(src)
return
+
+/obj/structure/closet/wardrobe/white
+ name = "white wardrobe"
+ icon_state = "white"
+ icon_closed = "white"
+
/obj/structure/closet/wardrobe/white/New()
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/under/color/white(src)
@@ -125,6 +178,12 @@
new /obj/item/clothing/shoes/white(src)
return
+
+/obj/structure/closet/wardrobe/pjs
+ name = "Pajama wardrobe"
+ icon_state = "white"
+ icon_closed = "white"
+
/obj/structure/closet/wardrobe/pjs/New()
new /obj/item/clothing/under/pj/red(src)
new /obj/item/clothing/under/pj/red(src)
@@ -136,6 +195,12 @@
new /obj/item/clothing/shoes/white(src)
return
+
+/obj/structure/closet/wardrobe/toxins_white
+ name = "toxins wardrobe"
+ icon_state = "white"
+ icon_closed = "white"
+
/obj/structure/closet/wardrobe/toxins_white/New()
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src)
@@ -148,6 +213,12 @@
new /obj/item/clothing/shoes/white(src)
return
+
+/obj/structure/closet/wardrobe/robotics_black
+ name = "robotics wardrobe"
+ icon_state = "black"
+ icon_closed = "black"
+
/obj/structure/closet/wardrobe/robotics_black/New()
new /obj/item/clothing/under/rank/roboticist(src)
new /obj/item/clothing/under/rank/roboticist(src)
@@ -157,6 +228,12 @@
new /obj/item/clothing/shoes/black(src)
return
+
+/obj/structure/closet/wardrobe/chemistry_white
+ name = "chemistry wardrobe"
+ icon_state = "white"
+ icon_closed = "white"
+
/obj/structure/closet/wardrobe/chemistry_white/New()
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/under/rank/chemist(src)
@@ -166,6 +243,12 @@
new /obj/item/clothing/suit/labcoat/chemist(src)
return
+
+/obj/structure/closet/wardrobe/genetics_white
+ name = "genetics wardrobe"
+ icon_state = "white"
+ icon_closed = "white"
+
/obj/structure/closet/wardrobe/genetics_white/New()
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/under/rank/geneticist(src)
@@ -175,6 +258,12 @@
new /obj/item/clothing/suit/labcoat/genetics(src)
return
+
+/obj/structure/closet/wardrobe/virology_white
+ name = "virology wardrobe"
+ icon_state = "white"
+ icon_closed = "white"
+
/obj/structure/closet/wardrobe/virology_white/New()
new /obj/item/clothing/under/rank/virologist(src)
new /obj/item/clothing/under/rank/virologist(src)
@@ -186,6 +275,12 @@
new /obj/item/clothing/mask/surgical(src)
return
+
+/obj/structure/closet/wardrobe/grey
+ name = "grey wardrobe"
+ icon_state = "grey"
+ icon_closed = "grey"
+
/obj/structure/closet/wardrobe/grey/New()
new /obj/item/clothing/under/color/grey(src)
new /obj/item/clothing/under/color/grey(src)
@@ -198,6 +293,12 @@
new /obj/item/clothing/head/soft/grey(src)
return
+
+/obj/structure/closet/wardrobe/mixed
+ name = "mixed wardrobe"
+ icon_state = "mixed"
+ icon_closed = "mixed"
+
/obj/structure/closet/wardrobe/mixed/New()
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/under/color/blue(src)
@@ -208,22 +309,4 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/white(src)
- //new /obj/item/clothing/head/soft/mime(src)
- //new /obj/item/clothing/head/soft/blue(src)
- //new /obj/item/clothing/head/soft/yellow(src)
- //new /obj/item/clothing/head/soft/green(src)
- //new /obj/item/clothing/head/soft/orange(src)
- //new /obj/item/clothing/head/soft/purple(src)
- //if(prob(10)) new /obj/item/clothing/head/soft/rainbow(src)
return
-
-/obj/structure/closet/lawcloset/New()
- new /obj/item/clothing/under/lawyer/female(src)
- new /obj/item/clothing/under/lawyer/black(src)
- new /obj/item/clothing/under/lawyer/red(src)
- new /obj/item/clothing/under/lawyer/bluesuit(src)
- new /obj/item/clothing/suit/lawyer/bluejacket(src)
- new /obj/item/clothing/under/lawyer/purpsuit(src)
- new /obj/item/clothing/suit/lawyer/purpjacket(src)
- new /obj/item/clothing/shoes/brown(src)
- new /obj/item/clothing/shoes/black(src)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 4a1a5aee4c..31c006f40f 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -1,3 +1,19 @@
+/obj/structure/window
+ name = "window"
+ icon = 'icons/obj/structures.dmi'
+ desc = "A window."
+ density = 1
+ layer = 3.2//Just above doors
+ var/health = 14.0
+ var/ini_dir = null
+ var/state = 0
+ var/reinf = 0
+ var/silicate = 0 // number of units of silicate
+ var/icon/silicateIcon = null // the silicated icon
+ pressure_resistance = 4*ONE_ATMOSPHERE
+ anchored = 1.0
+ flags = ON_BORDER
+
/obj/structure/window/bullet_act(var/obj/item/projectile/Proj)
health -= Proj.damage
..()
@@ -396,3 +412,22 @@
src.icon_state = "window[junction]"
return
+
+
+
+/obj/structure/window/basic
+ icon_state = "window"
+
+/obj/structure/window/reinforced
+ reinf = 1
+ icon_state = "rwindow"
+ name = "reinforced window"
+
+/obj/structure/window/reinforced/tinted
+ name = "tinted window"
+ icon_state = "twindow"
+ opacity = 1
+
+/obj/structure/window/reinforced/tinted/frosted
+ icon_state = "fwindow"
+ name = "frosted window"
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 16ffca86d4..d870e32a69 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -6,6 +6,222 @@
// BEGIN_FILE_DIR
#define FILE_DIR .
+#define FILE_DIR "code"
+#define FILE_DIR "code/ATMOSPHERICS"
+#define FILE_DIR "code/ATMOSPHERICS/components"
+#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/unary"
+#define FILE_DIR "code/controllers"
+#define FILE_DIR "code/datums"
+#define FILE_DIR "code/datums/diseases"
+#define FILE_DIR "code/datums/helper_datums"
+#define FILE_DIR "code/datums/spells"
+#define FILE_DIR "code/defines"
+#define FILE_DIR "code/defines/area"
+#define FILE_DIR "code/defines/obj"
+#define FILE_DIR "code/defines/procs"
+#define FILE_DIR "code/defines/tanning"
+#define FILE_DIR "code/FEA"
+#define FILE_DIR "code/game"
+#define FILE_DIR "code/game/area"
+#define FILE_DIR "code/game/asteroid"
+#define FILE_DIR "code/game/gamemodes"
+#define FILE_DIR "code/game/gamemodes/blob"
+#define FILE_DIR "code/game/gamemodes/blob/blobs"
+#define FILE_DIR "code/game/gamemodes/changeling"
+#define FILE_DIR "code/game/gamemodes/cult"
+#define FILE_DIR "code/game/gamemodes/events"
+#define FILE_DIR "code/game/gamemodes/events/holidays"
+#define FILE_DIR "code/game/gamemodes/extended"
+#define FILE_DIR "code/game/gamemodes/malfunction"
+#define FILE_DIR "code/game/gamemodes/meteor"
+#define FILE_DIR "code/game/gamemodes/nuclear"
+#define FILE_DIR "code/game/gamemodes/revolution"
+#define FILE_DIR "code/game/gamemodes/sandbox"
+#define FILE_DIR "code/game/gamemodes/traitor"
+#define FILE_DIR "code/game/gamemodes/wizard"
+#define FILE_DIR "code/game/jobs"
+#define FILE_DIR "code/game/jobs/job"
+#define FILE_DIR "code/game/machinery"
+#define FILE_DIR "code/game/machinery/atmoalter"
+#define FILE_DIR "code/game/machinery/bots"
+#define FILE_DIR "code/game/machinery/camera"
+#define FILE_DIR "code/game/machinery/computer"
+#define FILE_DIR "code/game/machinery/doors"
+#define FILE_DIR "code/game/machinery/embedded_controller"
+#define FILE_DIR "code/game/machinery/kitchen"
+#define FILE_DIR "code/game/machinery/pipe"
+#define FILE_DIR "code/game/machinery/telecomms"
+#define FILE_DIR "code/game/mecha"
+#define FILE_DIR "code/game/mecha/combat"
+#define FILE_DIR "code/game/mecha/equipment"
+#define FILE_DIR "code/game/mecha/equipment/tools"
+#define FILE_DIR "code/game/mecha/equipment/weapons"
+#define FILE_DIR "code/game/mecha/medical"
+#define FILE_DIR "code/game/mecha/working"
+#define FILE_DIR "code/game/objects"
+#define FILE_DIR "code/game/objects/effects"
+#define FILE_DIR "code/game/objects/effects/decals"
+#define FILE_DIR "code/game/objects/effects/decals/Cleanable"
+#define FILE_DIR "code/game/objects/effects/spawners"
+#define FILE_DIR "code/game/objects/items"
+#define FILE_DIR "code/game/objects/items/devices"
+#define FILE_DIR "code/game/objects/items/devices/PDA"
+#define FILE_DIR "code/game/objects/items/devices/radio"
+#define FILE_DIR "code/game/objects/items/robot"
+#define FILE_DIR "code/game/objects/items/stacks"
+#define FILE_DIR "code/game/objects/items/stacks/sheets"
+#define FILE_DIR "code/game/objects/items/stacks/tiles"
+#define FILE_DIR "code/game/objects/items/weapons"
+#define FILE_DIR "code/game/objects/items/weapons/grenades"
+#define FILE_DIR "code/game/objects/items/weapons/implants"
+#define FILE_DIR "code/game/objects/items/weapons/secstorage"
+#define FILE_DIR "code/game/objects/items/weapons/storage"
+#define FILE_DIR "code/game/objects/items/weapons/tanks"
+#define FILE_DIR "code/game/objects/structures"
+#define FILE_DIR "code/game/objects/structures/crates_lockers"
+#define FILE_DIR "code/game/objects/structures/crates_lockers/closets"
+#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure"
+#define FILE_DIR "code/game/objects/structures/stool_bed_chair_nest"
+#define FILE_DIR "code/game/turfs"
+#define FILE_DIR "code/game/turfs/simulated"
+#define FILE_DIR "code/game/turfs/unsimulated"
+#define FILE_DIR "code/game/vehicles"
+#define FILE_DIR "code/game/vehicles/airtight"
+#define FILE_DIR "code/game/verbs"
+#define FILE_DIR "code/js"
+#define FILE_DIR "code/modules"
+#define FILE_DIR "code/modules/admin"
+#define FILE_DIR "code/modules/admin/DB ban"
+#define FILE_DIR "code/modules/admin/verbs"
+#define FILE_DIR "code/modules/assembly"
+#define FILE_DIR "code/modules/awaymissions"
+#define FILE_DIR "code/modules/awaymissions/maploader"
+#define FILE_DIR "code/modules/client"
+#define FILE_DIR "code/modules/clothing"
+#define FILE_DIR "code/modules/clothing/glasses"
+#define FILE_DIR "code/modules/clothing/gloves"
+#define FILE_DIR "code/modules/clothing/head"
+#define FILE_DIR "code/modules/clothing/masks"
+#define FILE_DIR "code/modules/clothing/shoes"
+#define FILE_DIR "code/modules/clothing/spacesuits"
+#define FILE_DIR "code/modules/clothing/suits"
+#define FILE_DIR "code/modules/clothing/under"
+#define FILE_DIR "code/modules/clothing/under/jobs"
+#define FILE_DIR "code/modules/critters"
+#define FILE_DIR "code/modules/critters/hivebots"
+#define FILE_DIR "code/modules/detectivework"
+#define FILE_DIR "code/modules/flufftext"
+#define FILE_DIR "code/modules/food"
+#define FILE_DIR "code/modules/library"
+#define FILE_DIR "code/modules/liquid"
+#define FILE_DIR "code/modules/mining"
+#define FILE_DIR "code/modules/mob"
+#define FILE_DIR "code/modules/mob/dead"
+#define FILE_DIR "code/modules/mob/dead/observer"
+#define FILE_DIR "code/modules/mob/living"
+#define FILE_DIR "code/modules/mob/living/blob"
+#define FILE_DIR "code/modules/mob/living/carbon"
+#define FILE_DIR "code/modules/mob/living/carbon/alien"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/larva"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/special"
+#define FILE_DIR "code/modules/mob/living/carbon/brain"
+#define FILE_DIR "code/modules/mob/living/carbon/human"
+#define FILE_DIR "code/modules/mob/living/carbon/metroid"
+#define FILE_DIR "code/modules/mob/living/carbon/monkey"
+#define FILE_DIR "code/modules/mob/living/silicon"
+#define FILE_DIR "code/modules/mob/living/silicon/ai"
+#define FILE_DIR "code/modules/mob/living/silicon/ai/freelook"
+#define FILE_DIR "code/modules/mob/living/silicon/decoy"
+#define FILE_DIR "code/modules/mob/living/silicon/pai"
+#define FILE_DIR "code/modules/mob/living/silicon/robot"
+#define FILE_DIR "code/modules/mob/living/simple_animal"
+#define FILE_DIR "code/modules/mob/new_player"
+#define FILE_DIR "code/modules/mob/organ"
+#define FILE_DIR "code/modules/paperwork"
+#define FILE_DIR "code/modules/power"
+#define FILE_DIR "code/modules/power/antimatter"
+#define FILE_DIR "code/modules/power/singularity"
+#define FILE_DIR "code/modules/power/singularity/particle_accelerator"
+#define FILE_DIR "code/modules/projectiles"
+#define FILE_DIR "code/modules/projectiles/ammunition"
+#define FILE_DIR "code/modules/projectiles/guns"
+#define FILE_DIR "code/modules/projectiles/guns/energy"
+#define FILE_DIR "code/modules/projectiles/guns/projectile"
+#define FILE_DIR "code/modules/projectiles/projectile"
+#define FILE_DIR "code/modules/reagents"
+#define FILE_DIR "code/modules/reagents/reagent_containers"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks"
+#define FILE_DIR "code/modules/reagents/reagent_containers/glass"
+#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle"
+#define FILE_DIR "code/modules/recycling"
+#define FILE_DIR "code/modules/research"
+#define FILE_DIR "code/modules/scripting"
+#define FILE_DIR "code/modules/scripting/AST"
+#define FILE_DIR "code/modules/scripting/AST/Operators"
+#define FILE_DIR "code/modules/scripting/Implementations"
+#define FILE_DIR "code/modules/scripting/Interpreter"
+#define FILE_DIR "code/modules/scripting/Parser"
+#define FILE_DIR "code/modules/scripting/Scanner"
+#define FILE_DIR "code/modules/security levels"
+#define FILE_DIR "code/unused"
+#define FILE_DIR "code/unused/beast"
+#define FILE_DIR "code/unused/computer2"
+#define FILE_DIR "code/unused/disease2"
+#define FILE_DIR "code/unused/gamemodes"
+#define FILE_DIR "code/unused/hivebot"
+#define FILE_DIR "code/unused/mining"
+#define FILE_DIR "code/unused/optics"
+#define FILE_DIR "code/unused/pda2"
+#define FILE_DIR "code/unused/powerarmor"
+#define FILE_DIR "code/unused/spacecraft"
+#define FILE_DIR "code/WorkInProgress"
+#define FILE_DIR "code/WorkInProgress/carn"
+#define FILE_DIR "code/WorkInProgress/mapload"
+#define FILE_DIR "code/WorkInProgress/organs"
+#define FILE_DIR "code/WorkInProgress/virus2"
+#define FILE_DIR "html"
+#define FILE_DIR "icons"
+#define FILE_DIR "icons/effects"
+#define FILE_DIR "icons/mecha"
+#define FILE_DIR "icons/misc"
+#define FILE_DIR "icons/mob"
+#define FILE_DIR "icons/obj"
+#define FILE_DIR "icons/obj/assemblies"
+#define FILE_DIR "icons/obj/atmospherics"
+#define FILE_DIR "icons/obj/clothing"
+#define FILE_DIR "icons/obj/doors"
+#define FILE_DIR "icons/obj/machines"
+#define FILE_DIR "icons/obj/pipes"
+#define FILE_DIR "icons/pda_icons"
+#define FILE_DIR "icons/spideros_icons"
+#define FILE_DIR "icons/Testing"
+#define FILE_DIR "icons/turf"
+#define FILE_DIR "icons/vehicles"
+#define FILE_DIR "icons/vending_icons"
+#define FILE_DIR "interface"
+#define FILE_DIR "maps"
+#define FILE_DIR "maps/RandomZLevels"
+#define FILE_DIR "sound"
+#define FILE_DIR "sound/AI"
+#define FILE_DIR "sound/ambience"
+#define FILE_DIR "sound/effects"
+#define FILE_DIR "sound/hallucinations"
+#define FILE_DIR "sound/items"
+#define FILE_DIR "sound/machines"
+#define FILE_DIR "sound/mecha"
+#define FILE_DIR "sound/misc"
+#define FILE_DIR "sound/piano"
+#define FILE_DIR "sound/voice"
+#define FILE_DIR "sound/weapons"
+#define FILE_DIR "tools"
+#define FILE_DIR "tools/Redirector"
// END_FILE_DIR
// BEGIN_PREFERENCES
@@ -60,6 +276,7 @@
#include "code\datums\recipe.dm"
#include "code\datums\spell.dm"
#include "code\datums\sun.dm"
+#include "code\datums\supplypacks.dm"
#include "code\datums\vote.dm"
#include "code\datums\diseases\alien_embryo.dm"
#include "code\datums\diseases\appendicitis.dm"
@@ -106,17 +323,12 @@
#include "code\defines\turf.dm"
#include "code\defines\world.dm"
#include "code\defines\area\Space Station 13 areas.dm"
-#include "code\defines\obj\closet.dm"
-#include "code\defines\obj\costume.dm"
-#include "code\defines\obj\decal.dm"
#include "code\defines\obj\hydro.dm"
#include "code\defines\obj\machinery.dm"
#include "code\defines\obj\storage.dm"
-#include "code\defines\obj\supplypacks.dm"
#include "code\defines\obj\toy.dm"
#include "code\defines\obj\vending.dm"
#include "code\defines\obj\weapon.dm"
-#include "code\defines\obj\window.dm"
#include "code\defines\procs\AStar.dm"
#include "code\defines\procs\captain_announce.dm"
#include "code\defines\procs\church_name.dm"
@@ -393,12 +605,19 @@
#include "code\game\objects\effects\landmarks.dm"
#include "code\game\objects\effects\manifest.dm"
#include "code\game\objects\effects\mines.dm"
+#include "code\game\objects\effects\misc.dm"
#include "code\game\objects\effects\overlays.dm"
#include "code\game\objects\effects\portals.dm"
#include "code\game\objects\effects\signs.dm"
-#include "code\game\objects\effects\decals\blood.dm"
+#include "code\game\objects\effects\decals\cleanable.dm"
#include "code\game\objects\effects\decals\contraband.dm"
#include "code\game\objects\effects\decals\crayon.dm"
+#include "code\game\objects\effects\decals\misc.dm"
+#include "code\game\objects\effects\decals\remains.dm"
+#include "code\game\objects\effects\decals\Cleanable\aliens.dm"
+#include "code\game\objects\effects\decals\Cleanable\humans.dm"
+#include "code\game\objects\effects\decals\Cleanable\misc.dm"
+#include "code\game\objects\effects\decals\Cleanable\robots.dm"
#include "code\game\objects\effects\spawners\bombspawner.dm"
#include "code\game\objects\effects\spawners\gibspawner.dm"
#include "code\game\objects\items\apc_frame.dm"
@@ -538,24 +757,21 @@
#include "code\game\objects\structures\crates_lockers\closets.dm"
#include "code\game\objects\structures\crates_lockers\crates.dm"
#include "code\game\objects\structures\crates_lockers\largecrate.dm"
-#include "code\game\objects\structures\crates_lockers\closets\bombsuit.dm"
-#include "code\game\objects\structures\crates_lockers\closets\emergency.dm"
+#include "code\game\objects\structures\crates_lockers\closets\coffin.dm"
+#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm"
#include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm"
-#include "code\game\objects\structures\crates_lockers\closets\firecloset.dm"
-#include "code\game\objects\structures\crates_lockers\closets\fitnesscloset.dm"
+#include "code\game\objects\structures\crates_lockers\closets\fitness.dm"
#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm"
-#include "code\game\objects\structures\crates_lockers\closets\gmcloset.dm"
-#include "code\game\objects\structures\crates_lockers\closets\janitor.dm"
-#include "code\game\objects\structures\crates_lockers\closets\kitchen.dm"
+#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm"
#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm"
#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm"
-#include "code\game\objects\structures\crates_lockers\closets\nuclear.dm"
#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm"
-#include "code\game\objects\structures\crates_lockers\closets\thunderdome.dm"
+#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm"
#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm"
+#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm"