diff --git a/code/datums/supplypacks/atmospherics.dm b/code/datums/supplypacks/atmospherics.dm
index cf102f129d..fb5d4a0e59 100644
--- a/code/datums/supplypacks/atmospherics.dm
+++ b/code/datums/supplypacks/atmospherics.dm
@@ -11,42 +11,42 @@
name = "Inflatable barriers"
contains = list(/obj/item/weapon/storage/briefcase/inflatable = 3)
cost = 20
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/aether
containername = "Inflatable Barrier Crate"
/datum/supply_pack/atmos/canister_empty
name = "Empty gas canister"
cost = 7
containername = "Empty gas canister crate"
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/aether
contains = list(/obj/machinery/portable_atmospherics/canister)
/datum/supply_pack/atmos/canister_air
name = "Air canister"
cost = 10
containername = "Air canister crate"
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/aether
contains = list(/obj/machinery/portable_atmospherics/canister/air)
/datum/supply_pack/atmos/canister_oxygen
name = "Oxygen canister"
cost = 15
containername = "Oxygen canister crate"
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/aether
contains = list(/obj/machinery/portable_atmospherics/canister/oxygen)
/datum/supply_pack/atmos/canister_nitrogen
name = "Nitrogen canister"
cost = 10
containername = "Nitrogen canister crate"
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/aether
contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen)
/datum/supply_pack/atmos/canister_phoron
name = "Phoron gas canister"
cost = 60
containername = "Phoron gas canister crate"
- containertype = /obj/structure/closet/crate/secure/large
+ containertype = /obj/structure/closet/crate/secure/large/aether
access = access_atmospherics
contains = list(/obj/machinery/portable_atmospherics/canister/phoron)
@@ -54,7 +54,7 @@
name = "N2O gas canister"
cost = 15
containername = "N2O gas canister crate"
- containertype = /obj/structure/closet/crate/secure/large
+ containertype = /obj/structure/closet/crate/secure/large/aether
access = access_atmospherics
contains = list(/obj/machinery/portable_atmospherics/canister/sleeping_agent)
@@ -62,7 +62,7 @@
name = "Carbon dioxide gas canister"
cost = 15
containername = "CO2 canister crate"
- containertype = /obj/structure/closet/crate/secure/large
+ containertype = /obj/structure/closet/crate/secure/large/aether
access = access_atmospherics
contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide)
@@ -70,7 +70,7 @@
contains = list(/obj/machinery/pipedispenser/orderable)
name = "Pipe Dispenser"
cost = 25
- containertype = /obj/structure/closet/crate/secure/large
+ containertype = /obj/structure/closet/crate/secure/large/aether
containername = "Pipe Dispenser Crate"
access = access_atmospherics
@@ -78,7 +78,7 @@
contains = list(/obj/machinery/pipedispenser/disposal/orderable)
name = "Disposals Pipe Dispenser"
cost = 25
- containertype = /obj/structure/closet/crate/secure/large
+ containertype = /obj/structure/closet/crate/secure/large/aether
containername = "Disposal Dispenser Crate"
access = access_atmospherics
@@ -89,7 +89,7 @@
/obj/item/weapon/tank/air = 3
)
cost = 10
- containertype = /obj/structure/closet/crate/internals
+ containertype = /obj/structure/closet/crate/aether
containername = "Internals crate"
/datum/supply_pack/atmos/evacuation
@@ -104,5 +104,5 @@
/obj/item/clothing/mask/gas = 4
)
cost = 35
- containertype = /obj/structure/closet/crate/internals
+ containertype = /obj/structure/closet/crate/aether
containername = "Emergency crate"
diff --git a/code/datums/supplypacks/contraband.dm b/code/datums/supplypacks/contraband.dm
index 7b266b2a76..7d8616a8ad 100644
--- a/code/datums/supplypacks/contraband.dm
+++ b/code/datums/supplypacks/contraband.dm
@@ -28,7 +28,7 @@
/obj/item/weapon/grenade/chem_grenade/incendiary
)
cost = 25
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/weapon
containername = "Special Ops crate"
contraband = 1
@@ -39,7 +39,7 @@
/obj/item/weapon/reagent_containers/food/snacks/unajerky = 4
)
cost = 25
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/unathi
containername = "Moghes imports crate"
contraband = 1
@@ -51,7 +51,7 @@
)
cost = 50
contraband = 1
- containertype = /obj/structure/closet/crate/secure/weapon
+ containertype = /obj/structure/closet/crate/hedberg
containername = "Ballistic weapons crate"
/datum/supply_pack/randomised/misc/telecrate //you get something awesome, a couple of decent things, and a few weak/filler things
@@ -103,5 +103,5 @@
)
cost = 250 //more than a hat crate!,
contraband = 1
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large
containername = "Suspicious crate"
diff --git a/code/datums/supplypacks/costumes.dm b/code/datums/supplypacks/costumes.dm
index 879d5accd0..f9b61d9572 100644
--- a/code/datums/supplypacks/costumes.dm
+++ b/code/datums/supplypacks/costumes.dm
@@ -1,6 +1,6 @@
/*
* Here is where any supply packs
-* related to weapons live.
+* related to costumes live.
*/
@@ -19,7 +19,7 @@
/obj/item/clothing/head/wizard/fake
)
cost = 20
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/nanothreads
containername = "Wizard costume crate"
/datum/supply_pack/randomised/costumes/hats
@@ -48,8 +48,8 @@
)
name = "Collectable hat crate!"
cost = 200
- containertype = /obj/structure/closet/crate
- containername = "Collectable hats crate! Brought to you by Bass.inc!"
+ containertype = /obj/structure/closet/crate/nanothreads
+ containername = "Collectable hats crate"
/datum/supply_pack/randomised/costumes/costume
num_contained = 3
@@ -84,7 +84,7 @@
)
name = "Costumes crate"
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/nanothreads
containername = "Actor Costumes"
/datum/supply_pack/costumes/formal_wear
@@ -104,15 +104,15 @@
/obj/item/clothing/shoes/leather,
/obj/item/clothing/accessory/wcoat
)
- name = "Formalwear closet"
+ name = "Formalwear (Suits)"
cost = 30
- containertype = /obj/structure/closet
- containername = "Formalwear for the best occasions."
+ containertype = /obj/structure/closet/crate/gilthari
+ containername = "Formal suit crate"
datum/supply_pack/costumes/witch
name = "Witch costume"
containername = "Witch costume"
- containertype = /obj/structure/closet
+ containertype = /obj/structure/closet/crate/nanothreads
cost = 20
contains = list(
/obj/item/clothing/suit/wizrobe/marisa/fake,
@@ -124,7 +124,7 @@ datum/supply_pack/costumes/witch
/datum/supply_pack/randomised/costumes/costume_hats
name = "Costume hats"
containername = "Actor hats crate"
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/nanothreads
cost = 10
num_contained = 3
contains = list(
@@ -147,9 +147,9 @@ datum/supply_pack/costumes/witch
)
/datum/supply_pack/randomised/costumes/dresses
- name = "Womens formal dress locker"
- containername = "Pretty dress locker"
- containertype = /obj/structure/closet
+ name = "Formalwear (Dresses)"
+ containername = "Formal dress crate"
+ containertype = /obj/structure/closet/crate/gilthari
cost = 15
num_contained = 3
contains = list(
diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm
index e387309da7..5d2bc99089 100644
--- a/code/datums/supplypacks/engineering.dm
+++ b/code/datums/supplypacks/engineering.dm
@@ -11,70 +11,70 @@
name = "Replacement lights"
contains = list(/obj/item/weapon/storage/box/lights/mixed = 3)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/galaksi
containername = "Replacement lights"
/datum/supply_pack/eng/smescoil
name = "Superconducting Magnetic Coil"
contains = list(/obj/item/weapon/smes_coil)
cost = 75
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "Superconducting Magnetic Coil crate"
/datum/supply_pack/eng/smescoil/super_capacity
name = "Superconducting Capacitance Coil"
contains = list(/obj/item/weapon/smes_coil/super_capacity)
cost = 90
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "Superconducting Capacitance Coil crate"
/datum/supply_pack/eng/smescoil/super_io
name = "Superconducting Transmission Coil"
contains = list(/obj/item/weapon/smes_coil/super_io)
cost = 90
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "Superconducting Transmission Coil crate"
/datum/supply_pack/eng/shield_capacitor
name = "Shield Capacitor"
contains = list(/obj/machinery/shield_capacitor)
cost = 20
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "shield capacitor crate"
/datum/supply_pack/eng/shield_capacitor/advanced
name = "Advanced Shield Capacitor"
contains = list(/obj/machinery/shield_capacitor/advanced)
cost = 30
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "advanced shield capacitor crate"
/datum/supply_pack/eng/bubble_shield
name = "Bubble Shield Generator"
contains = list(/obj/machinery/shield_gen)
cost = 40
- containertype = /obj/structure/closet/crate/engineering
+ containertype =/obj/structure/closet/crate/focalpoint
containername = "shield bubble generator crate"
/datum/supply_pack/eng/bubble_shield/advanced
name = "Advanced Bubble Shield Generator"
contains = list(/obj/machinery/shield_gen/advanced)
cost = 60
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "advanced bubble shield generator crate"
/datum/supply_pack/eng/hull_shield
name = "Hull Shield Generator"
contains = list(/obj/machinery/shield_gen/external)
cost = 80
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "shield hull generator crate"
/datum/supply_pack/eng/hull_shield/advanced
name = "Advanced Hull Shield Generator"
contains = list(/obj/machinery/shield_gen/external/advanced)
cost = 120
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/focalpoint
containername = "advanced hull shield generator crate"
/datum/supply_pack/eng/electrical
@@ -86,7 +86,7 @@
/obj/item/weapon/cell/high = 2
)
cost = 10
- containertype = /obj/structure/closet/crate/engineering/electrical
+ containertype = /obj/structure/closet/crate/ward
containername = "Electrical maintenance crate"
/datum/supply_pack/eng/e_welders
@@ -95,7 +95,7 @@
/obj/item/weapon/weldingtool/electric = 3
)
cost = 15
- containertype = /obj/structure/closet/crate/engineering/electrical
+ containertype = /obj/structure/closet/crate/ward
containername = "Electric welder crate"
/datum/supply_pack/eng/mechanical
@@ -107,14 +107,14 @@
/obj/item/clothing/head/hardhat
)
cost = 10
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/xion
containername = "Mechanical maintenance crate"
/datum/supply_pack/eng/fueltank
name = "Fuel tank crate"
contains = list(/obj/structure/reagent_dispensers/fueltank)
cost = 10
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/nanotrasen
containername = "fuel tank crate"
/datum/supply_pack/eng/solar
@@ -126,35 +126,35 @@
/obj/item/weapon/paper/solar
)
cost = 20
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/einstein
containername = "Solar pack crate"
/datum/supply_pack/eng/engine
name = "Emitter crate"
contains = list(/obj/machinery/power/emitter = 2)
cost = 10
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/einstein
containername = "Emitter crate"
access = access_ce
/datum/supply_pack/eng/engine/field_gen
name = "Field Generator crate"
contains = list(/obj/machinery/field_generator = 2)
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Field Generator crate"
access = access_ce
/datum/supply_pack/eng/engine/sing_gen
name = "Singularity Generator crate"
contains = list(/obj/machinery/the_singularitygen)
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/einstein
containername = "Singularity Generator crate"
access = access_ce
/datum/supply_pack/eng/engine/collector
name = "Collector crate"
contains = list(/obj/machinery/power/rad_collector = 3)
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/einstein
containername = "Collector crate"
/datum/supply_pack/eng/engine/PA
@@ -169,7 +169,7 @@
/obj/structure/particle_accelerator/power_box,
/obj/structure/particle_accelerator/end_cap
)
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/einstein
containername = "Particle Accelerator crate"
access = access_ce
@@ -177,7 +177,7 @@
contains = list(/obj/item/weapon/circuitboard/shield_gen)
name = "Bubble shield generator circuitry"
cost = 30
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/focalpoint
containername = "bubble shield generator circuitry crate"
access = access_ce
@@ -185,7 +185,7 @@
contains = list(/obj/item/weapon/circuitboard/shield_gen_ex)
name = "Hull shield generator circuitry"
cost = 30
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/focalpoint
containername = "hull shield generator circuitry crate"
access = access_ce
@@ -193,7 +193,7 @@
contains = list(/obj/item/weapon/circuitboard/shield_cap)
name = "Bubble shield capacitor circuitry"
cost = 30
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/focalpoint
containername = "shield capacitor circuitry crate"
access = access_ce
@@ -209,7 +209,7 @@
contains = list(/obj/machinery/power/generator)
name = "Mark I Thermoelectric Generator"
cost = 40
- containertype = /obj/structure/closet/crate/secure/large
+ containertype = /obj/structure/closet/crate/secure/large/einstein
containername = "Mk1 TEG crate"
access = access_engine
@@ -217,7 +217,7 @@
contains = list(/obj/machinery/atmospherics/binary/circulator)
name = "Binary atmospheric circulator"
cost = 20
- containertype = /obj/structure/closet/crate/secure/large
+ containertype = /obj/structure/closet/crate/secure/large/einstein
containername = "Atmospheric circulator crate"
access = access_engine
@@ -235,7 +235,7 @@
name = "P.A.C.M.A.N. portable generator parts"
cost = 25
containername = "P.A.C.M.A.N. Portable Generator Construction Kit"
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/focalpoint
access = access_tech_storage
contains = list(
/obj/item/weapon/stock_parts/micro_laser,
@@ -248,7 +248,7 @@
name = "Super P.A.C.M.A.N. portable generator parts"
cost = 35
containername = "Super P.A.C.M.A.N. portable generator construction kit"
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/focalpoint
access = access_tech_storage
contains = list(
/obj/item/weapon/stock_parts/micro_laser,
@@ -261,7 +261,7 @@
name = "R-UST Mk. 8 Tokamak fusion core crate"
cost = 50
containername = "R-UST Mk. 8 Tokamak Fusion Core crate"
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/einstein
access = access_engine
contains = list(
/obj/item/weapon/book/manual/rust_engine,
@@ -273,7 +273,7 @@
name = "R-UST Mk. 8 fuel injector crate"
cost = 30
containername = "R-UST Mk. 8 fuel injector crate"
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/einstein
access = access_engine
contains = list(
/obj/machinery/fusion_fuel_injector,
@@ -285,7 +285,7 @@
name = "Gyrotron crate"
cost = 15
containername = "Gyrotron Crate"
- containertype = /obj/structure/closet/crate/secure/engineering
+ containertype = /obj/structure/closet/crate/secure/einstein
access = access_engine
contains = list(
/obj/machinery/power/emitter/gyrotron,
@@ -296,12 +296,12 @@
name = "Fusion Fuel Compressor circuitry crate"
cost = 10
containername = "Fusion Fuel Compressor circuitry crate"
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/einstein
contains = list(/obj/item/weapon/circuitboard/fusion_fuel_compressor)
/datum/supply_pack/eng/tritium
name = "Tritium crate"
cost = 75
containername = "Tritium crate"
- containertype = /obj/structure/closet/crate/engineering
+ containertype = /obj/structure/closet/crate/einstein
contains = list(/obj/fiftyspawner/tritium)
diff --git a/code/datums/supplypacks/hospitality.dm b/code/datums/supplypacks/hospitality.dm
index fa7f09ebd9..2c9bbbce51 100644
--- a/code/datums/supplypacks/hospitality.dm
+++ b/code/datums/supplypacks/hospitality.dm
@@ -23,7 +23,7 @@
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer = 4,
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/gilthari
containername = "Party equipment"
/datum/supply_pack/hospitality/barsupplies
@@ -43,7 +43,7 @@
/obj/item/weapon/storage/box/glass_extras/sticks
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/gilthari
containername = "crate of bar supplies"
/datum/supply_pack/hospitality/cookingoil
@@ -67,7 +67,7 @@
)
name = "Surprise pack of five pizzas"
cost = 15
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/freezer/centauri
containername = "Pizza crate"
/datum/supply_pack/hospitality/gifts
@@ -81,5 +81,5 @@
/obj/item/weapon/paper/card/flower
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/allico
containername = "crate of gifts"
\ No newline at end of file
diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm
index 4341a696ad..069911606e 100644
--- a/code/datums/supplypacks/hydroponics.dm
+++ b/code/datums/supplypacks/hydroponics.dm
@@ -11,7 +11,7 @@
name = "Monkey crate"
contains = list (/obj/item/weapon/storage/box/monkeycubes)
cost = 20
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/freezer/nanotrasen
containername = "Monkey crate"
/datum/supply_pack/hydro/farwa
@@ -110,7 +110,7 @@
/obj/item/seeds/sugarcaneseed
)
cost = 10
- containertype = /obj/structure/closet/crate/hydroponics
+ containertype = /obj/structure/closet/crate/carp
containername = "Seeds crate"
access = access_hydroponics
@@ -124,7 +124,7 @@
/obj/item/weapon/material/twohanded/fireaxe/scythe
)
cost = 45
- containertype = /obj/structure/closet/crate/hydroponics
+ containertype = /obj/structure/closet/crate/grayson
containername = "Weed control crate"
access = access_hydroponics
@@ -132,7 +132,7 @@
name = "Water tank crate"
contains = list(/obj/structure/reagent_dispensers/watertank)
cost = 10
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/aether
containername = "water tank crate"
/datum/supply_pack/hydro/bee_keeper
@@ -144,14 +144,14 @@
/obj/item/bee_pack
)
cost = 40
- containertype = /obj/structure/closet/crate/hydroponics
+ containertype = /obj/structure/closet/crate/carp
containername = "Beekeeping crate"
access = access_hydroponics
/datum/supply_pack/hydro/tray
name = "Empty hydroponics trays"
cost = 50
- containertype = /obj/structure/closet/crate/hydroponics
+ containertype = /obj/structure/closet/crate/aether
containername = "Hydroponics tray crate"
contains = list(/obj/machinery/portable_atmospherics/hydroponics{anchored = 0} = 3)
access = access_hydroponics
diff --git a/code/datums/supplypacks/materials.dm b/code/datums/supplypacks/materials.dm
index cd799a235b..95f15caa6d 100644
--- a/code/datums/supplypacks/materials.dm
+++ b/code/datums/supplypacks/materials.dm
@@ -11,40 +11,40 @@
name = "50 metal sheets"
contains = list(/obj/fiftyspawner/steel)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
containername = "Metal sheets crate"
/datum/supply_pack/materials/glass50
name = "50 glass sheets"
contains = list(/obj/fiftyspawner/glass)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
containername = "Glass sheets crate"
/datum/supply_pack/materials/wood50
name = "50 wooden planks"
contains = list(/obj/fiftyspawner/wood)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
containername = "Wooden planks crate"
/datum/supply_pack/materials/plastic50
name = "50 plastic sheets"
contains = list(/obj/fiftyspawner/plastic)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
containername = "Plastic sheets crate"
/datum/supply_pack/materials/cardboard_sheets
contains = list(/obj/fiftyspawner/cardboard)
name = "50 cardboard sheets"
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
containername = "Cardboard sheets crate"
/datum/supply_pack/materials/carpet
name = "Imported carpet"
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
containername = "Imported carpet crate"
cost = 15
contains = list(
@@ -55,7 +55,7 @@
/datum/supply_pack/misc/linoleum
name = "Linoleum"
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
containername = "Linoleum crate"
cost = 15
contains = list(/obj/fiftyspawner/linoleum)
\ No newline at end of file
diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm
index 1b164a2cdf..3edcbed200 100644
--- a/code/datums/supplypacks/medical.dm
+++ b/code/datums/supplypacks/medical.dm
@@ -22,28 +22,28 @@
/obj/item/weapon/storage/box/autoinjectors
)
cost = 10
- containertype = /obj/structure/closet/crate/medical
+ containertype = /obj/structure/closet/crate/zenghu
containername = "Medical crate"
/datum/supply_pack/med/bloodpack
name = "BloodPack crate"
contains = list(/obj/item/weapon/storage/box/bloodpacks = 3)
cost = 10
- containertype = /obj/structure/closet/crate/medical
+ containertype = /obj/structure/closet/crate/nanocare
containername = "BloodPack crate"
/datum/supply_pack/med/bodybag
name = "Body bag crate"
contains = list(/obj/item/weapon/storage/box/bodybags = 3)
cost = 10
- containertype = /obj/structure/closet/crate/medical
+ containertype = /obj/structure/closet/crate/nanocare
containername = "Body bag crate"
/datum/supply_pack/med/cryobag
name = "Stasis bag crate"
contains = list(/obj/item/bodybag/cryobag = 3)
cost = 40
- containertype = /obj/structure/closet/crate/medical
+ containertype = /obj/structure/closet/crate/nanocare
containername = "Stasis bag crate"
/datum/supply_pack/med/surgery
@@ -62,7 +62,7 @@
/obj/item/weapon/surgical/circular_saw
)
cost = 25
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/veymed
containername = "Surgery crate"
access = access_medical
@@ -73,7 +73,7 @@
/obj/item/weapon/storage/box/cdeathalarm_kit
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/ward
containername = "Death Alarm crate"
access = access_medical
@@ -83,7 +83,7 @@
/obj/item/weapon/storage/firstaid/clotting
)
cost = 100
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/zenghu
containername = "Clotting Medicine crate"
access = access_medical
@@ -97,7 +97,7 @@
/obj/item/weapon/storage/belt/medical = 3
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/veymed
containername = "Sterile equipment crate"
/datum/supply_pack/med/extragear
@@ -109,7 +109,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Medical surplus equipment"
access = access_medical
@@ -133,7 +133,7 @@
/obj/item/weapon/reagent_containers/syringe
)
cost = 50
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Chief medical officer equipment"
access = access_cmo
@@ -156,7 +156,7 @@
/obj/item/weapon/reagent_containers/syringe
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Medical Doctor equipment"
access = access_medical_equip
@@ -179,7 +179,7 @@
/obj/item/weapon/reagent_containers/syringe
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Chemist equipment"
access = access_chemistry
@@ -207,7 +207,7 @@
/obj/item/clothing/accessory/storage/white_vest
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Paramedic equipment"
access = access_medical_equip
@@ -226,7 +226,7 @@
/obj/item/weapon/cartridge/medical
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Psychiatrist equipment"
access = access_psychiatrist
@@ -247,7 +247,7 @@
/obj/item/weapon/storage/box/gloves
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Medical scrubs crate"
access = access_medical_equip
@@ -264,7 +264,7 @@
/obj/item/weapon/pen
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/veymed
containername = "Autopsy equipment crate"
access = access_morgue
@@ -291,7 +291,7 @@
/obj/item/weapon/storage/box/gloves
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Medical uniform crate"
access = access_medical_equip
@@ -309,7 +309,7 @@
/obj/item/weapon/storage/box/gloves
)
cost = 50
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Medical biohazard equipment"
access = access_medical_equip
@@ -317,7 +317,7 @@
name = "Portable freezers crate"
contains = list(/obj/item/weapon/storage/box/freezer = 7)
cost = 25
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/veymed
containername = "Portable freezers"
access = access_medical_equip
@@ -325,7 +325,7 @@
name = "Virus sample crate"
contains = list(/obj/item/weapon/virusdish/random = 4)
cost = 25
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/zenghu
containername = "Virus sample crate"
access = access_cmo
@@ -333,40 +333,40 @@
name = "Defibrillator crate"
contains = list(/obj/item/device/defib_kit = 2)
cost = 30
- containertype = /obj/structure/closet/crate/medical
+ containertype = /obj/structure/closet/crate/veymed
containername = "Defibrillator crate"
/datum/supply_pack/med/distillery
name = "Chemical distiller crate"
contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery = 1)
cost = 50
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/nanotrasen
containername = "Chemical distiller crate"
/datum/supply_pack/med/advdistillery
name = "Industrial Chemical distiller crate"
contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery/industrial = 1)
cost = 150
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/xion
containername = "Industrial Chemical distiller crate"
/datum/supply_pack/med/oxypump
name = "Oxygen pump crate"
contains = list(/obj/machinery/oxygen_pump/mobile = 1)
cost = 125
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/xion
containername = "Oxygen pump crate"
/datum/supply_pack/med/anestheticpump
name = "Anesthetic pump crate"
contains = list(/obj/machinery/oxygen_pump/mobile/anesthetic = 1)
cost = 130
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/nanotrasen
containername = "Anesthetic pump crate"
/datum/supply_pack/med/stablepump
name = "Portable stabilizer crate"
contains = list(/obj/machinery/oxygen_pump/mobile/stabilizer = 1)
cost = 175
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/nanotrasen
containername = "Portable stabilizer crate"
diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm
index 7f4f0362db..40b8c33670 100644
--- a/code/datums/supplypacks/misc.dm
+++ b/code/datums/supplypacks/misc.dm
@@ -20,7 +20,7 @@
)
name = "Trading Card Crate"
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/oculum
containername = "cards crate"
/datum/supply_pack/randomised/misc/dnd
@@ -36,7 +36,7 @@
)
name = "Miniatures Crate"
cost = 200
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/oculum
containername = "Miniature Crate"
/datum/supply_pack/randomised/misc/plushies
@@ -78,14 +78,14 @@
)
name = "Plushies Crate"
cost = 15
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/allico
containername = "Plushies Crate"
/datum/supply_pack/misc/eftpos
contains = list(/obj/item/device/eftpos)
name = "EFTPOS scanner"
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/nanotrasen
containername = "EFTPOS crate"
/datum/supply_pack/misc/chaplaingear
@@ -103,7 +103,7 @@
/obj/item/weapon/storage/fancy/candle_box = 3
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/gilthari
containername = "Chaplain equipment crate"
/datum/supply_pack/misc/hoverpod
@@ -126,14 +126,14 @@
/obj/item/clothing/accessory/storage/webbing
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/nanothreads
containername = "Webbing crate"
/datum/supply_pack/misc/holoplant
name = "Holoplant Pot"
contains = list(/obj/machinery/holoplant/shipped)
cost = 15
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/thinktronic
containername = "Holoplant crate"
/datum/supply_pack/misc/glucose_hypos
@@ -142,7 +142,7 @@
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5
)
cost = 25
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/zenghu
containername = "Glucose Hypo Crate"
/datum/supply_pack/misc/mre_rations
@@ -159,7 +159,7 @@
/obj/item/weapon/storage/mre/menu9,
/obj/item/weapon/storage/mre/menu10)
cost = 50
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/centauri
containername = "ready to eat rations"
/datum/supply_pack/misc/paste_rations
@@ -168,7 +168,7 @@
/obj/item/weapon/storage/mre/menu11 = 2
)
cost = 25
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/freezer/centauri
containername = "emergency rations"
/datum/supply_pack/misc/medical_rations
@@ -177,5 +177,5 @@
/obj/item/weapon/storage/mre/menu13 = 2
)
cost = 40
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/zenghu
containername = "emergency rations"
diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm
index 134ae76e30..9bb6b1a442 100644
--- a/code/datums/supplypacks/recreation.dm
+++ b/code/datums/supplypacks/recreation.dm
@@ -20,7 +20,7 @@
/obj/item/weapon/material/twohanded/fireaxe/foam = 2
)
cost = 50
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/allico
containername = "foam weapon crate"
/datum/supply_pack/recreation/lasertag
@@ -31,8 +31,8 @@
/obj/item/weapon/gun/energy/lasertag/blue,
/obj/item/clothing/suit/bluetag
)
- containertype = /obj/structure/closet
- containername = "Lasertag Closet"
+ containertype = /obj/structure/closet/crate/ward
+ containername = "Lasertag Supplies"
cost = 10
/datum/supply_pack/recreation/artscrafts
@@ -55,14 +55,14 @@
/obj/item/weapon/wrapping_paper = 3
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/allico
containername = "Arts and Crafts crate"
/datum/supply_pack/recreation/painters
name = "Station Painting Supplies"
cost = 10
containername = "station painting supplies crate"
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/grayson
contains = list(
/obj/item/device/pipe_painter = 2,
/obj/item/device/floor_painter = 2,
@@ -82,7 +82,7 @@
name = "Deluxe Fishing Bait"
cost = 40
containername = "deluxe bait crate"
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/carp
num_contained = 8
contains = list(
/obj/item/weapon/storage/box/wormcan,
@@ -93,7 +93,7 @@
name = "Laser Tag Turrets"
cost = 40
containername = "laser tag turret crate"
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/ward
contains = list(
/obj/machinery/porta_turret/lasertag/blue,
/obj/machinery/porta_turret/lasertag/red
diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm
index 757d38b953..5f8cf6337c 100644
--- a/code/datums/supplypacks/robotics.dm
+++ b/code/datums/supplypacks/robotics.dm
@@ -20,7 +20,7 @@
/obj/item/weapon/cell/high = 2
)
cost = 10
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Robotics assembly"
access = access_robotics
@@ -56,7 +56,7 @@
name = "Morpheus robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/morpheus)
cost = 20
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/morpheus
containername = "Robolimb blueprints (Morpheus)"
access = access_robotics
@@ -64,7 +64,7 @@
name = "Cyber Solutions robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/cybersolutions)
cost = 20
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/cybersolutions
containername = "Robolimb blueprints (Cyber Solutions)"
access = access_robotics
@@ -72,7 +72,7 @@
name = "Xion robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/xion)
cost = 20
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Robolimb blueprints (Xion)"
access = access_robotics
@@ -80,7 +80,7 @@
name = "Grayson robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/grayson)
cost = 30
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/grayson
containername = "Robolimb blueprints (Grayson)"
access = access_robotics
@@ -88,7 +88,7 @@
name = "Hephaestus robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/hephaestus)
cost = 35
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Robolimb blueprints (Hephaestus)"
access = access_robotics
@@ -96,7 +96,7 @@
name = "Ward-Takahashi robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/wardtakahashi)
cost = 35
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/ward
containername = "Robolimb blueprints (Ward-Takahashi)"
access = access_robotics
@@ -104,7 +104,7 @@
name = "Zeng Hu robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/zenghu)
cost = 35
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/zenghu
containername = "Robolimb blueprints (Zeng Hu)"
access = access_robotics
@@ -112,7 +112,7 @@
name = "Bishop robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/bishop)
cost = 70
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/bishop
containername = "Robolimb blueprints (Bishop)"
access = access_robotics
@@ -133,7 +133,7 @@
/obj/item/weapon/circuitboard/mecha/ripley/peripherals
)
cost = 25
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "APLU \"Ripley\" Circuit Crate"
access = access_robotics
@@ -144,7 +144,7 @@
/obj/item/weapon/circuitboard/mecha/odysseus/main
)
cost = 25
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/veymed
containername = "\"Odysseus\" Circuit Crate"
access = access_robotics
@@ -158,7 +158,7 @@
)
name = "Random APLU modkit"
cost = 200
- containertype = /obj/structure/closet/crate/science
+ containertype = /obj/structure/closet/crate/xion
containername = "heavy crate"
/datum/supply_pack/randomised/robotics/exosuit_mod/durand
@@ -168,6 +168,7 @@
/obj/item/device/kit/paint/durand/phazon
)
name = "Random Durand exosuit modkit"
+ containertype = /obj/structure/closet/crate/heph
/datum/supply_pack/randomised/robotics/exosuit_mod/gygax
contains = list(
@@ -176,6 +177,7 @@
/obj/item/device/kit/paint/gygax/recitence
)
name = "Random Gygax exosuit modkit"
+ containertype = /obj/structure/closet/crate/heph
/datum/supply_pack/robotics/jumper_cables
name = "Jumper kit crate"
@@ -183,7 +185,7 @@
/obj/item/device/defib_kit/jumper_kit = 2
)
cost = 30
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/einstein
containername = "Jumper kit crate"
access = access_robotics
diff --git a/code/datums/supplypacks/science.dm b/code/datums/supplypacks/science.dm
index ab55b8571e..c4c03ffd04 100644
--- a/code/datums/supplypacks/science.dm
+++ b/code/datums/supplypacks/science.dm
@@ -9,7 +9,7 @@
name = "Coolant tank crate"
contains = list(/obj/structure/reagent_dispensers/coolanttank)
cost = 15
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/aether
containername = "coolant tank crate"
/datum/supply_pack/sci/phoron
@@ -39,7 +39,7 @@
/obj/item/seeds/kudzuseed
)
cost = 15
- containertype = /obj/structure/closet/crate/hydroponics
+ containertype = /obj/structure/closet/crate/carp
containername = "Exotic Seeds crate"
access = access_hydroponics
@@ -47,14 +47,14 @@
name = "Integrated circuit printer"
contains = list(/obj/item/device/integrated_circuit_printer = 2)
cost = 15
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/ward
containername = "Integrated circuit crate"
/datum/supply_pack/sci/integrated_circuit_printer_upgrade
name = "Integrated circuit printer upgrade - advanced designs"
contains = list(/obj/item/weapon/disk/integrated_circuit/upgrade/advanced)
cost = 30
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/ward
containername = "Integrated circuit crate"
/datum/supply_pack/sci/xenoarch
@@ -75,6 +75,6 @@
/obj/item/weapon/storage/bag/fossils,
/obj/item/weapon/hand_labeler)
cost = 100
- containertype = /obj/structure/closet/crate/secure/science
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Xenoarchaeology Tech crate"
access = access_research
\ No newline at end of file
diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm
index b958a35663..b4bad53657 100644
--- a/code/datums/supplypacks/security.dm
+++ b/code/datums/supplypacks/security.dm
@@ -53,11 +53,11 @@
/obj/item/clothing/accessory/storage/pouches/blue,
)
cost = 30
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Plate Carrier crate"
/datum/supply_pack/security/carriersgreen
- name = "Armor - Blue modular armor"
+ name = "Armor - Green modular armor"
contains = list(
/obj/item/clothing/suit/armor/pcarrier/green,
/obj/item/clothing/accessory/armor/armguards/green,
@@ -65,7 +65,7 @@
/obj/item/clothing/accessory/storage/pouches/green,
)
cost = 30
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Plate Carrier crate"
/datum/supply_pack/security/carriersnavy
@@ -77,7 +77,7 @@
/obj/item/clothing/accessory/storage/pouches/navy,
)
cost = 30
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Plate Carrier crate"
/datum/supply_pack/security/carrierstan
@@ -89,7 +89,7 @@
/obj/item/clothing/accessory/storage/pouches/tan,
)
cost = 30
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Plate Carrier crate"
/datum/supply_pack/security/armorplate
@@ -98,7 +98,7 @@
/obj/item/clothing/accessory/armor/armorplate,
)
cost = 5
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Armor plate crate"
/datum/supply_pack/security/armorplatestab
@@ -107,7 +107,7 @@
/obj/item/clothing/accessory/armor/armorplate/stab,
)
cost = 10
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Armor plate crate"
/datum/supply_pack/security/armorplatemedium
@@ -116,7 +116,7 @@
/obj/item/clothing/accessory/armor/armorplate/medium,
)
cost = 10
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Armor plate crate"
/datum/supply_pack/security/armorplatetac
@@ -125,7 +125,7 @@
/obj/item/clothing/accessory/armor/armorplate/tactical,
)
cost = 15
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Armor plate crate"
/datum/supply_pack/randomised/security/carriers
@@ -140,7 +140,7 @@
/obj/item/clothing/suit/armor/pcarrier/press
)
cost = 10
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/scg
containername = "Plate Carrier crate"
/datum/supply_pack/security/carriertags
@@ -158,7 +158,7 @@
/obj/item/clothing/accessory/armor/tag/abneg
)
cost = 20
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/scg
containername = "Plate Carrier crate"
/datum/supply_pack/security/helmcovers
@@ -174,7 +174,7 @@
/obj/item/clothing/accessory/armor/helmcover/tan
)
cost = 20
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/scg
containername = "Helmet Covers crate"
/datum/supply_pack/randomised/security/armorplates
@@ -193,7 +193,7 @@
/obj/item/clothing/accessory/armor/armorplate/bulletproof
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/scg
containername = "Armor plate crate"
/datum/supply_pack/randomised/security/carrierarms
@@ -210,7 +210,7 @@
/obj/item/clothing/accessory/armor/armguards/bulletproof
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/scg
containername = "Armor plate crate"
/datum/supply_pack/randomised/security/carrierlegs
@@ -227,7 +227,7 @@
/obj/item/clothing/accessory/armor/legguards/bulletproof
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/scg
containername = "Armor plate crate"
/datum/supply_pack/randomised/security/carrierbags
@@ -246,7 +246,7 @@
/obj/item/clothing/accessory/storage/pouches/large/tan
)
cost = 50
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/scg
containername = "Armor plate crate"
/datum/supply_pack/security/riot_gear
@@ -260,7 +260,7 @@
/obj/item/weapon/storage/box/handcuffs
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Riot gear crate"
access = access_armory
@@ -273,7 +273,7 @@
/obj/item/clothing/shoes/leg_guard/riot
)
cost = 30
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Riot armor crate"
access = access_armory
@@ -287,7 +287,7 @@
/obj/item/clothing/accessory/armor/legguards/riot
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Riot armor crate"
access = access_armory
@@ -300,7 +300,7 @@
/obj/item/clothing/shoes/leg_guard/laserproof
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Ablative armor crate"
access = access_armory
@@ -314,7 +314,7 @@
/obj/item/clothing/accessory/armor/legguards/laserproof
)
cost = 50
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/lawson
containername = "Ablative armor crate"
access = access_armory
@@ -327,7 +327,7 @@
/obj/item/clothing/shoes/leg_guard/bulletproof
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Ballistic armor crate"
access = access_armory
@@ -341,7 +341,7 @@
/obj/item/clothing/accessory/armor/legguards/bulletproof
)
cost = 50
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Ballistic armor crate"
access = access_armory
@@ -354,13 +354,13 @@
/obj/item/clothing/shoes/leg_guard/combat
)
cost = 40
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/saare
containername = "Combat armor crate"
access = access_armory
/datum/supply_pack/security/tactical
name = "Armor - Tactical"
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/saare
containername = "Tactical armor crate"
cost = 40
access = access_armory
@@ -385,7 +385,7 @@
/datum/supply_pack/security/flexitac
name = "Armor - Tactical Light"
- containertype = /obj/structure/closet/crate/secure/gear
+ containertype = /obj/structure/closet/crate/secure/saare
containername = "Tactical Light armor crate"
cost = 75
access = access_armory
@@ -410,15 +410,14 @@
name = "Misc - Security Barriers"
contains = list(/obj/machinery/deployable/barrier = 4)
cost = 20
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/secure/heph
containername = "Security barrier crate"
- access = null
/datum/supply_pack/security/securityshieldgen
name = "Misc - Wall shield generators"
contains = list(/obj/machinery/shieldwallgen = 4)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Wall shield generators crate"
access = access_teleporter
@@ -432,7 +431,7 @@
/obj/item/clothing/accessory/holster/hip
)
cost = 15
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/hedberg
containername = "Holster crate"
/datum/supply_pack/security/extragear
@@ -444,7 +443,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/security = 3
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/nanothreads
containername = "Security surplus equipment"
/datum/supply_pack/security/detectivegear
@@ -471,7 +470,7 @@
/obj/item/weapon/storage/bag/detective
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Forensic equipment"
access = access_forensics_lockers
@@ -484,7 +483,7 @@
/obj/item/device/detective_scanner
)
cost = 60
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/ward
containername = "Forensic equipment"
access = access_forensics_lockers
@@ -506,7 +505,7 @@
/obj/item/clothing/gloves/black = 2
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Investigation clothing"
access = access_forensics_lockers
@@ -536,7 +535,7 @@
/obj/item/device/flashlight/maglight
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Officer equipment"
access = access_brig
@@ -564,7 +563,7 @@
/obj/item/device/flashlight/maglight
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Warden equipment"
access = access_armory
@@ -590,7 +589,7 @@
/obj/item/device/flashlight/maglight
)
cost = 50
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Head of security equipment"
access = access_hos
@@ -609,7 +608,7 @@
/obj/item/weapon/storage/box/holobadge
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Security uniform crate"
/datum/supply_pack/security/navybluesecurityclothing
@@ -630,7 +629,7 @@
/obj/item/weapon/storage/box/holobadge
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Navy blue security uniform crate"
/datum/supply_pack/security/corporatesecurityclothing
@@ -650,7 +649,7 @@
/obj/item/weapon/storage/box/holobadge
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Corporate security uniform crate"
/datum/supply_pack/security/biosuit
@@ -666,7 +665,7 @@
/obj/item/weapon/storage/box/gloves
)
cost = 25
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Security biohazard gear"
access = access_security
@@ -676,6 +675,6 @@
/obj/item/weapon/contraband/poster/nanotrasen = 6
)
cost = 20
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanotrasen
containername = "Morale Posters"
access = access_maint_tunnels
diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm
index 25864ee549..272cb7fff3 100644
--- a/code/datums/supplypacks/supply.dm
+++ b/code/datums/supplypacks/supply.dm
@@ -18,14 +18,14 @@
/obj/item/weapon/reagent_containers/food/condiment/yeast = 3
)
cost = 10
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/freezer/centauri
containername = "Food crate"
/datum/supply_pack/supply/toner
name = "Toner cartridges"
contains = list(/obj/item/device/toner = 6)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/ummarcar
containername = "Toner cartridges"
/datum/supply_pack/supply/janitor
@@ -48,7 +48,7 @@
/obj/structure/mopbucket
)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/galaksi
containername = "Janitorial supplies"
/datum/supply_pack/supply/shipping
@@ -62,7 +62,7 @@
/obj/item/weapon/tool/wirecutters,
/obj/item/weapon/tape_roll = 2)
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/ummarcar
containername = "Shipping supplies crate"
/datum/supply_pack/supply/bureaucracy
@@ -82,13 +82,13 @@
)
name = "Office supplies"
cost = 15
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/ummarcar
containername = "Office supplies crate"
/datum/supply_pack/supply/spare_pda
name = "Spare PDAs"
cost = 10
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/thinktronic
containername = "Spare PDA crate"
contains = list(/obj/item/device/pda = 3)
@@ -112,7 +112,7 @@
/obj/item/clothing/glasses/meson
)
cost = 10
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Shaft miner equipment"
access = access_mining
@@ -127,12 +127,12 @@
name = "Cargo Train Tug"
contains = list(/obj/vehicle/train/engine)
cost = 35
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/xion
containername = "Cargo Train Tug Crate"
/datum/supply_pack/supply/cargotrailer
name = "Cargo Train Trolley"
contains = list(/obj/vehicle/train/trolley)
cost = 15
- containertype = /obj/structure/largecrate
+ containertype = /obj/structure/closet/crate/large/xion
containername = "Cargo Train Trolley Crate"
\ No newline at end of file
diff --git a/code/datums/supplypacks/voidsuits.dm b/code/datums/supplypacks/voidsuits.dm
index 6ab3fa9d85..a867b20255 100644
--- a/code/datums/supplypacks/voidsuits.dm
+++ b/code/datums/supplypacks/voidsuits.dm
@@ -17,7 +17,7 @@
/obj/item/weapon/tank/oxygen = 2,
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/aether
containername = "Atmospheric voidsuit crate"
access = access_atmospherics
@@ -31,7 +31,7 @@
/obj/item/weapon/tank/oxygen = 2,
)
cost = 50
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/aether
containername = "Heavy Duty Atmospheric voidsuit crate"
access = access_atmospherics
@@ -45,7 +45,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Engineering voidsuit crate"
access = access_engine_equip
@@ -59,7 +59,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Engineering Construction voidsuit crate"
access = access_engine_equip
@@ -73,7 +73,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 45
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Engineering Hazmat voidsuit crate"
access = access_engine_equip
@@ -87,7 +87,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 50
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Reinforced Engineering voidsuit crate"
access = access_engine_equip
@@ -101,7 +101,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/veymed
containername = "Medical voidsuit crate"
access = access_medical_equip
@@ -115,7 +115,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/veymed
containername = "Medical EMT voidsuit crate"
access = access_medical_equip
@@ -129,7 +129,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 45
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/nanocare
containername = "Medical Biohazard voidsuit crate"
access = access_medical_equip
@@ -143,7 +143,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 60
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/veymed
containername = "Vey-Med Autoadaptive voidsuit (humanoid) crate"
access = access_medical_equip
@@ -168,7 +168,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Security voidsuit crate"
/datum/supply_pack/voidsuits/security/crowd
@@ -181,7 +181,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 60
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Security Crowd Control voidsuit crate"
access = access_armory
@@ -195,7 +195,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 60
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/heph
containername = "Security EVA voidsuit crate"
access = access_armory
@@ -208,7 +208,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 40
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/xion
containername = "Mining voidsuit crate"
access = access_mining
@@ -221,7 +221,7 @@
/obj/item/weapon/tank/oxygen = 2
)
cost = 50
- containertype = /obj/structure/closet/crate/secure
+ containertype = /obj/structure/closet/crate/secure/grayson
containername = "Frontier Mining voidsuit crate"
access = access_mining
@@ -232,6 +232,6 @@
/obj/item/clothing/mask/gas/zaddat = 1
)
cost = 30
- containertype = /obj/structure/closet/crate
+ containertype = /obj/structure/closet/crate/nanotrasen
containername = "Zaddat Shroud crate"
access = null
\ No newline at end of file
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 56244b75f8..baead3b720 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -470,7 +470,7 @@
announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE))
//visible_message("\The [initial(name)] hums and hisses as it moves [to_despawn.real_name] into storage.", 3)
- visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2].", 3)
+ visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2]", 3)
//This should guarantee that ghosts don't spawn.
to_despawn.ckey = null
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 0aaa6a5c00..105266c86a 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -165,6 +165,8 @@
var/datum/action/innate/mecha/mech_switch_damtype/switch_damtype_action = new
var/datum/action/innate/mecha/mech_toggle_phasing/phasing_action = new
+ var/weapons_only_cycle = FALSE //So combat mechs don't switch to their equipment at times.
+
diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm
index 0d2034d790..33307c77d3 100644
--- a/code/game/mecha/mecha_actions.dm
+++ b/code/game/mecha/mecha_actions.dm
@@ -185,12 +185,15 @@
var/list/available_equipment = list()
available_equipment = chassis.equipment
+ if(chassis.weapons_only_cycle)
+ available_equipment = chassis.weapon_equipment
+
if(available_equipment.len == 0)
chassis.occupant_message("No equipment available.")
return
if(!chassis.selected)
chassis.selected = available_equipment[1]
- chassis.occupant_message("You select [chassis.selected]")
+ chassis.occupant_message("You select [chassis.selected]")
send_byjax(chassis.occupant,"exosuit.browser","eq_list",chassis.get_equipment_list())
button_icon_state = "mech_cycle_equip_on"
button.UpdateIcon()
@@ -419,3 +422,17 @@
return
+/obj/mecha/verb/toggle_weapons_only_cycle()
+ set category = "Exosuit Interface"
+ set name = "Toggle weapons only cycling"
+ set src = usr.loc
+ set popup_menu = 0
+ set_weapons_only_cycle()
+
+/obj/mecha/proc/set_weapons_only_cycle()
+ if(usr!=src.occupant)
+ return
+ weapons_only_cycle = !weapons_only_cycle
+ src.occupant_message("En":"#f00\">Dis"]abled weapons only cycling.")
+ return
+
diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm
index bc6d29a5a5..230b4ff3d2 100644
--- a/code/game/objects/random/mapping.dm
+++ b/code/game/objects/random/mapping.dm
@@ -34,6 +34,36 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/remains/robot)
+/obj/random/crate //Random 'standard' crates for variety in maintenance spawns.
+ name = "random crate"
+ desc = "This is a random crate"
+ icon = 'icons/obj/closets/bases/crate.dmi'
+ icon_state = "base"
+
+/obj/random/crate/item_to_spawn() //General crates, excludes some more high-grade and medical brands
+ return pick (/obj/structure/closet/crate/plastic,
+ /obj/structure/closet/crate/aether,
+ /obj/structure/closet/crate/centauri,
+ /obj/structure/closet/crate/einstein,
+ /obj/structure/closet/crate/focalpoint,
+ /obj/structure/closet/crate/gilthari,
+ /obj/structure/closet/crate/grayson,
+ /obj/structure/closet/crate/nanotrasen,
+ /obj/structure/closet/crate/nanothreads,
+ /obj/structure/closet/crate/oculum,
+ /obj/structure/closet/crate/ward,
+ /obj/structure/closet/crate/xion,
+ /obj/structure/closet/crate/zenghu,
+ /obj/structure/closet/crate/allico,
+ /obj/structure/closet/crate/carp,
+ /obj/structure/closet/crate/galaksi,
+ /obj/structure/closet/crate/thinktronic,
+ /obj/structure/closet/crate/ummarcar,
+ /obj/structure/closet/crate/unathi,
+ /obj/structure/closet/crate/hydroponics,
+ /obj/structure/closet/crate/engineering,
+ /obj/structure/closet/crate)
+
/obj/random/obstruction //Large objects to block things off in maintenance
name = "random obstruction"
desc = "This is a random obstruction."
diff --git a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm
index c158ea0b83..b90a7961e2 100644
--- a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm
+++ b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm
@@ -761,8 +761,210 @@
"lid_stripes" = COLOR_NT_RED
)
+// Freezers
+
/decl/closet_appearance/crate/freezer
+ color = COLOR_OFF_WHITE
+
+/decl/closet_appearance/crate/freezer/centauri
color = COLOR_BABY_BLUE
+ extra_decals = list(
+ "centauri" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/freezer/nanotrasen
+ color = COLOR_BABY_BLUE
+ extra_decals = list(
+ "nano" = COLOR_OFF_WHITE
+ )
+
+// Corporate Branding
+
+/decl/closet_appearance/crate/aether
+ color = COLOR_YELLOW_GRAY
+ decals = list(
+ "crate_stripes" = COLOR_BLUE_LIGHT,
+ "aether" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/allico
+ color = COLOR_LIGHT_VIOLET
+ decals = list(
+ "crate_stripe" = COLOR_AMBER
+ )
+
+/decl/closet_appearance/crate/carp
+ color = COLOR_PURPLE
+ decals = list(
+ "toptext" = COLOR_OFF_WHITE,
+ "crate_reticle" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/centauri
+ color = COLOR_BABY_BLUE
+ decals = list(
+ "crate_stripe" = COLOR_LUMINOL
+ )
+ extra_decals = list(
+ "centauri" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/cybersolutions
+ color = COLOR_ALUMINIUM
+ extra_decals = list(
+ "hazard" = COLOR_DARK_GOLD,
+ "toptext" = COLOR_DARK_GOLD
+ )
+
+/decl/closet_appearance/crate/einstein
+ color = COLOR_DARK_BLUE_GRAY
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_BEIGE,
+ "crate_stripe_right" = COLOR_BEIGE,
+ "einstein" = COLOR_OFF_WHITE,
+ "hazard" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/focalpoint
+ color = COLOR_GOLD
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_NAVY_BLUE,
+ "crate_stripe_right" = COLOR_NAVY_BLUE,
+ "focal" = COLOR_OFF_WHITE,
+ "hazard" = COLOR_NAVY_BLUE
+ )
+
+/decl/closet_appearance/crate/galaksi
+ color = COLOR_OFF_WHITE
+ decals = list(
+ "lid_stripes" = COLOR_HULL,
+ "galaksi" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/gilthari
+ color = COLOR_GRAY20
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_GOLD,
+ "crate_stripe_right" = COLOR_GOLD,
+ "gilthari" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/grayson
+ color = COLOR_STEEL
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_MAROON,
+ "crate_stripe_right" = COLOR_MAROON,
+ "grayson" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/heph
+ color = COLOR_GRAY20
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_NT_RED,
+ "crate_stripe_right" = COLOR_NT_RED,
+ "heph" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/morpheus
+ color = COLOR_ALUMINIUM
+ extra_decals = list(
+ "hazard" = COLOR_GUNMETAL,
+ "toptext" = COLOR_GUNMETAL
+ )
+
+/decl/closet_appearance/crate/nanotrasen
+ color = COLOR_NT_RED
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_OFF_WHITE,
+ "crate_stripe_right" = COLOR_OFF_WHITE,
+ "nano" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/nanotrasenclothing
+ color = COLOR_NT_RED
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_SEDONA,
+ "crate_stripe_right" = COLOR_SEDONA,
+ "nano" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/nanotrasenmedical
+ color = COLOR_OFF_WHITE
+ extra_decals = list(
+ "crate_stripe" = COLOR_NT_RED,
+ "nano" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/oculum
+ color = COLOR_SURGERY_BLUE
+ decals = list(
+ "crate_stripe_left" = COLOR_OFF_WHITE,
+ "crate_stripe_right" = COLOR_OFF_WHITE,
+ "oculum" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/saare
+ color = COLOR_ALUMINIUM
+ extra_decals = list(
+ "hazard" = COLOR_RED,
+ "xion" = COLOR_GRAY40
+ )
+
+/decl/closet_appearance/crate/thinktronic
+ color = COLOR_PALE_PURPLE_GRAY
+ decals = list(
+ "toptext" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/ummarcar
+ color = COLOR_BEIGE
+ decals = list(
+ "crate_stripes" = COLOR_OFF_WHITE,
+ "toptext" = COLOR_GRAY20
+ )
+
+/decl/closet_appearance/crate/unathiimport
+ color = COLOR_SILVER
+ decals = list(
+ "crate_stripe" = COLOR_RED,
+ "crate_reticle" = COLOR_RED_GRAY
+ )
+
+/decl/closet_appearance/crate/veymed
+ color = COLOR_OFF_WHITE
+ decals = list(
+ "crate_stripe" = COLOR_PALE_BTL_GREEN
+ )
+ extra_decals = list(
+ "lid_stripes" = COLOR_RED,
+ "crate_cross" = COLOR_GREEN
+ )
+
+/decl/closet_appearance/crate/ward
+ color = COLOR_OFF_WHITE
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_COMMAND_BLUE,
+ "crate_stripe_right" = COLOR_COMMAND_BLUE,
+ "hazard" = COLOR_OFF_WHITE,
+ "wt" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/xion
+ color = COLOR_ORANGE
+ extra_decals = list(
+ "crate_stripes" = COLOR_OFF_WHITE,
+ "xion" = COLOR_OFF_WHITE,
+ "hazard" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/zenghu
+ color = COLOR_OFF_WHITE
+ extra_decals = list(
+ "crate_stripes" = COLOR_RED,
+ "zenghu" = COLOR_OFF_WHITE
+ )
+
+// Secure Crates
/decl/closet_appearance/crate/secure
can_lock = TRUE
@@ -775,7 +977,8 @@
extra_decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripe_right" = COLOR_OFF_WHITE,
- "toxin" = COLOR_OFF_WHITE
+ "toxin" = COLOR_OFF_WHITE,
+ "nano" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/weapon
@@ -789,16 +992,61 @@
"hazard" = COLOR_OFF_WHITE
)
-/decl/closet_appearance/crate/secure/heph
- color = COLOR_GRAY20
+// Secure corporate branding
+
+/decl/closet_appearance/crate/secure/aether
+ color = COLOR_YELLOW_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
- "crate_stripe_left" = COLOR_NT_RED,
- "crate_stripe_right" = COLOR_NT_RED,
- "hazard" = COLOR_OFF_WHITE,
- "heph" = COLOR_OFF_WHITE
+ "crate_stripes" = COLOR_BLUE_LIGHT,
+ "aether" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/bishop
+ color = COLOR_OFF_WHITE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_SKY_BLUE,
+ "crate_stripe_right" = COLOR_SKY_BLUE,
+ "bishop" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/cybersolutions
+ color = COLOR_ALUMINIUM
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "hazard" = COLOR_DARK_GOLD,
+ "toptext" = COLOR_DARK_GOLD
+ )
+
+/decl/closet_appearance/crate/secure/einstein
+ color = COLOR_DARK_BLUE_GRAY
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_BEIGE,
+ "crate_stripe_right" = COLOR_BEIGE,
+ "einstein" = COLOR_OFF_WHITE,
+ "hazard" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/focalpoint
+ color = COLOR_GOLD
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_NAVY_BLUE,
+ "crate_stripe_right" = COLOR_NAVY_BLUE,
+ "focal" = COLOR_OFF_WHITE,
+ "hazard" = COLOR_NAVY_BLUE
)
/decl/closet_appearance/crate/secure/gilthari
@@ -813,16 +1061,15 @@
"gilthari" = COLOR_OFF_WHITE
)
-/decl/closet_appearance/crate/secure/ward
- color = COLOR_OFF_WHITE
+/decl/closet_appearance/crate/secure/grayson
+ color = COLOR_STEEL
decals = list(
"crate_bracing"
)
extra_decals = list(
- "crate_stripe_left" = COLOR_COMMAND_BLUE,
- "crate_stripe_right" = COLOR_COMMAND_BLUE,
- "hazard" = COLOR_OFF_WHITE,
- "wt" = COLOR_OFF_WHITE
+ "crate_stripe_left" = COLOR_MAROON,
+ "crate_stripe_right" = COLOR_MAROON,
+ "grayson" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/hedberg
@@ -837,6 +1084,18 @@
"hedberg" = COLOR_OFF_WHITE
)
+/decl/closet_appearance/crate/secure/heph
+ color = COLOR_GRAY20
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_NT_RED,
+ "crate_stripe_right" = COLOR_NT_RED,
+ "hazard" = COLOR_OFF_WHITE,
+ "heph" = COLOR_OFF_WHITE
+ )
+
/decl/closet_appearance/crate/secure/lawson
color = COLOR_SAN_MARINO_BLUE
decals = list(
@@ -849,6 +1108,103 @@
"lawson" = COLOR_OFF_WHITE
)
+/decl/closet_appearance/crate/secure/morpheus
+ color = COLOR_ALUMINIUM
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "hazard" = COLOR_GUNMETAL,
+ "toptext" = COLOR_GUNMETAL
+ )
+
+/decl/closet_appearance/crate/secure/nanotrasen
+ color = COLOR_NT_RED
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_OFF_WHITE,
+ "crate_stripe_right" = COLOR_OFF_WHITE,
+ "nano" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/nanotrasenmedical
+ color = COLOR_OFF_WHITE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe" = COLOR_NT_RED,
+ "nano" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/saare
+ color = COLOR_ALUMINIUM
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "hazard" = COLOR_RED,
+ "xion" = COLOR_GRAY40
+ )
+
+/decl/closet_appearance/crate/secure/solgov
+ color = COLOR_SAN_MARINO_BLUE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_OFF_WHITE,
+ "crate_stripes" = COLOR_OFF_WHITE,
+ "hazard" = COLOR_OFF_WHITE,
+ "scg" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/veymed
+ color = COLOR_OFF_WHITE
+ decals = list(
+ "crate_bracing",
+ "crate_stripe" = COLOR_PALE_BTL_GREEN
+ )
+ extra_decals = list(
+ "lid_stripes" = COLOR_RED,
+ "crate_cross" = COLOR_GREEN
+ )
+
+/decl/closet_appearance/crate/secure/ward
+ color = COLOR_OFF_WHITE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripe_left" = COLOR_COMMAND_BLUE,
+ "crate_stripe_right" = COLOR_COMMAND_BLUE,
+ "hazard" = COLOR_OFF_WHITE,
+ "wt" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/xion
+ color = COLOR_ORANGE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripes" = COLOR_OFF_WHITE,
+ "xion" = COLOR_OFF_WHITE,
+ "hazard" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/crate/secure/zenghu
+ color = COLOR_OFF_WHITE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "crate_stripes" = COLOR_RED,
+ "zenghu" = COLOR_OFF_WHITE
+ )
+
/decl/closet_appearance/crate/secure/hydroponics
extra_decals = list(
"crate_stripe_left" = COLOR_GREEN_GRAY,
@@ -869,6 +1225,7 @@
extra_decals = null
/decl/closet_appearance/large_crate/critter
+ color = COLOR_BEIGE
decals = list(
"airholes"
)
@@ -882,6 +1239,42 @@
"text" = COLOR_GREEN_GRAY
)
+/decl/closet_appearance/large_crate/aether
+ color = COLOR_YELLOW_GRAY
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "text" = COLOR_BLUE_LIGHT
+ )
+
+/decl/closet_appearance/large_crate/einstein
+ color = COLOR_DARK_BLUE_GRAY
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "text" = COLOR_BEIGE
+ )
+
+/decl/closet_appearance/large_crate/nanotrasen
+ color = COLOR_NT_RED
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "text" = COLOR_OFF_WHITE
+ )
+
+/decl/closet_appearance/large_crate/xion
+ color = COLOR_ORANGE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "text" = COLOR_OFF_WHITE
+ )
+
/decl/closet_appearance/large_crate/secure
can_lock = TRUE
@@ -895,6 +1288,46 @@
"text_upper" = COLOR_OFF_WHITE
)
+/decl/closet_appearance/large_crate/secure/aether
+ color = COLOR_YELLOW_GRAY
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "marking" = COLOR_OFF_WHITE,
+ "text_upper" = COLOR_BLUE_LIGHT
+ )
+
+/decl/closet_appearance/large_crate/secure/einstein
+ color = COLOR_DARK_BLUE_GRAY
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "marking" = COLOR_OFF_WHITE,
+ "text_upper" = COLOR_BEIGE
+ )
+
+/decl/closet_appearance/large_crate/secure/heph
+ color = COLOR_GRAY20
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "marking" = COLOR_NT_RED,
+ "text_upper" = COLOR_NT_RED
+ )
+
+/decl/closet_appearance/large_crate/secure/xion
+ color = COLOR_ORANGE
+ decals = list(
+ "crate_bracing"
+ )
+ extra_decals = list(
+ "marking" = COLOR_OFF_WHITE,
+ "text_upper" = COLOR_OFF_WHITE
+ )
+
// Cabinets.
/decl/closet_appearance/cabinet
base_icon = 'icons/obj/closets/bases/cabinet.dmi'
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index bd81b8ab76..6223061ed8 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -6,6 +6,7 @@
icon = 'icons/obj/closets/bases/crate.dmi'
closet_appearance = /decl/closet_appearance/crate
climbable = 1
+ dir = 4 //Spawn facing 'forward' by default.
var/points_per_crate = 5
var/rigged = 0
@@ -65,6 +66,26 @@
update_icon()
return 1
+/obj/structure/closet/crate/verb/rotate_clockwise()
+ set name = "Rotate Crate Clockwise"
+ set category = "Object"
+ set src in oview(1)
+
+ if (usr.stat || usr.restrained() || anchored)
+ return
+
+ src.set_dir(turn(src.dir, 270))
+
+/obj/structure/closet/crate/verb/rotate_counterclockwise()
+ set category = "Object"
+ set name = "Rotate Crate Counterclockwise"
+ set src in view(1)
+
+ if (usr.stat || usr.restrained() || anchored)
+ return
+
+ src.set_dir(turn(src.dir, 90))
+
/obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(opened)
if(isrobot(user))
@@ -274,6 +295,14 @@
var/target_temp = T0C - 40
var/cooling_power = 40
+/obj/structure/closet/crate/freezer/centauri
+ desc = "A freezer stamped with the logo of Centauri Provisions."
+ closet_appearance = /decl/closet_appearance/crate/freezer/centauri
+
+/obj/structure/closet/crate/freezer/nanotrasen
+ desc = "A freezer stamped with the logo of NanoTrasen."
+ closet_appearance = /decl/closet_appearance/crate/freezer/nanotrasen
+
/obj/structure/closet/crate/freezer/return_air()
var/datum/gas_mixture/gas = (..())
if(!gas) return null
@@ -303,6 +332,11 @@
organ.preserved = 0
..()
+/obj/structure/closet/crate/weapon
+ name = "weapons crate"
+ desc = "A barely secured weapons crate."
+ closet_appearance = /decl/closet_appearance/crate/secure/weapon
+
/obj/structure/closet/crate/freezer/rations //Fpr use in the escape shuttle
name = "emergency rations"
desc = "A crate of emergency rations."
@@ -310,14 +344,12 @@
starts_with = list(
/obj/random/mre = 6)
-
/obj/structure/closet/crate/bin
name = "large bin"
desc = "A large bin."
closet_appearance = null
icon = 'icons/obj/closets/largebin.dmi'
-
/obj/structure/closet/crate/radiation
name = "radioactive gear crate"
desc = "A crate with a radiation sign on it."
@@ -327,27 +359,145 @@
/obj/item/clothing/suit/radiation = 4,
/obj/item/clothing/head/radiation = 4)
+//TSCs
+
+/obj/structure/closet/crate/aether
+ desc = "A crate painted in the colours of Aether Atmospherics and Recycling."
+ closet_appearance = /decl/closet_appearance/crate/aether
+
+/obj/structure/closet/crate/centauri
+ desc = "A crate decorated with the logo of Centauri Provisions."
+ closet_appearance = /decl/closet_appearance/crate/centauri
+
+/obj/structure/closet/crate/einstein
+ desc = "A crate labelled with an Einstein Engines sticker."
+ closet_appearance = /decl/closet_appearance/crate/einstein
+
+/obj/structure/closet/crate/focalpoint
+ desc = "A crate marked with the decal of Focal Point Energistics."
+ closet_appearance = /decl/closet_appearance/crate/focalpoint
+
+/obj/structure/closet/crate/gilthari
+ desc = "A crate embossed with the logo of Gilthari Exports."
+ closet_appearance = /decl/closet_appearance/crate/gilthari
+
+/obj/structure/closet/crate/grayson
+ desc = "A bare metal crate spraypainted with Grayson Manufactories decals."
+ closet_appearance = /decl/closet_appearance/crate/grayson
+
+/obj/structure/closet/crate/heph
+ desc = "A sturdy crate marked with the logo of Hephaestus Industries."
+ closet_appearance = /decl/closet_appearance/crate/heph
+
+/obj/structure/closet/crate/morpheus
+ desc = "A crate crudely imprinted with 'MORPHEUS CYBERKINETICS'."
+ closet_appearance = /decl/closet_appearance/crate/morpheus
+
+/obj/structure/closet/crate/nanotrasen
+ desc = "A crate emblazoned with the standard NanoTrasen livery."
+ closet_appearance = /decl/closet_appearance/crate/nanotrasen
+
+/obj/structure/closet/crate/nanothreads
+ desc = "A crate emblazoned with the NanoThreads Garments livery, a subsidary of the NanoTrasen Corporation."
+ closet_appearance = /decl/closet_appearance/crate/nanotrasenclothing
+
+/obj/structure/closet/crate/nanocare
+ desc = "A crate emblazoned with the NanoCare Medical livery, a subsidary of the NanoTrasen Corporation."
+ closet_appearance = /decl/closet_appearance/crate/nanotrasenmedical
+
+/obj/structure/closet/crate/oculum
+ desc = "A crate minimally decorated with the logo of media giant Oculum Broadcast."
+ closet_appearance = /decl/closet_appearance/crate/oculum
+
+/obj/structure/closet/crate/veymed
+ desc = "A sterile crate extensively detailed in Veymed colours."
+ closet_appearance = /decl/closet_appearance/crate/veymed
+
+/obj/structure/closet/crate/ward
+ desc = "A crate decaled with the logo of Ward-Takahashi."
+ closet_appearance = /decl/closet_appearance/crate/ward
+
+/obj/structure/closet/crate/xion
+ desc = "A crate painted in Xion Manufacturing Group orange."
+ closet_appearance = /decl/closet_appearance/crate/xion
+
+/obj/structure/closet/crate/zenghu
+ desc = "A sterile crate marked with the logo of Zeng-Hu Pharmaceuticals."
+ closet_appearance = /decl/closet_appearance/crate/zenghu
+
+// Brands/subsidiaries
+
+/obj/structure/closet/crate/allico
+ desc = "A crate painted in the distinctive cheerful colours of AlliCo. Ltd."
+ closet_appearance = /decl/closet_appearance/crate/allico
+
+/obj/structure/closet/crate/carp
+ desc = "A crate painted with the garish livery of Consolidated Agricultural Resources Plc."
+ closet_appearance = /decl/closet_appearance/crate/carp
+
+/obj/structure/closet/crate/hedberg
+ name = "weapons crate"
+ desc = "A weapons crate stamped with the logo of Hedberg-Hammarstrom and the lock conspicuously absent."
+ closet_appearance = /decl/closet_appearance/crate/secure/hedberg
+
+/obj/structure/closet/crate/galaksi
+ desc = "A crate printed with the markings of Ward-Takahashi's Galaksi Appliance branding."
+ closet_appearance = /decl/closet_appearance/crate/galaksi
+
+/obj/structure/closet/crate/thinktronic
+ desc = "A crate printed with the markings of Thinktronic Systems."
+ closet_appearance = /decl/closet_appearance/crate/thinktronic
+
+/obj/structure/closet/crate/ummarcar
+ desc = "A flimsy crate marked labelled 'UmMarcar Office Supply'."
+ closet_appearance = /decl/closet_appearance/crate/ummarcar
+
+/obj/structure/closet/crate/unathi
+ name = "import crate"
+ desc = "A crate painted with the markings of Moghes Imported Sissalik Jerky."
+ closet_appearance = /decl/closet_appearance/crate/unathiimport
+
+
+// Secure Crates
/obj/structure/closet/crate/secure/weapon
name = "weapons crate"
desc = "A secure weapons crate."
closet_appearance = /decl/closet_appearance/crate/secure/weapon
+/obj/structure/closet/crate/secure/aether
+ desc = "A secure crate painted in the colours of Aether Atmospherics and Recycling."
+ closet_appearance = /decl/closet_appearance/crate/secure/aether
+
+/obj/structure/closet/crate/secure/bishop
+ desc = "A secure crate finely decorated with the emblem of Bishop Cybernetics."
+ closet_appearance = /decl/closet_appearance/crate/secure/bishop
+
+/obj/structure/closet/crate/secure/cybersolutions
+ desc = "An unadorned secure metal crate labelled 'Cyber Solutions'."
+ closet_appearance = /decl/closet_appearance/crate/secure/cybersolutions
+
+/obj/structure/closet/crate/secure/einstein
+ desc = "A secure crate labelled with an Einstein Engines sticker."
+ closet_appearance = /decl/closet_appearance/crate/secure/einstein
+
+/obj/structure/closet/crate/secure/focalpoint
+ desc = "A secure crate marked with the decal of Focal Point Energistics."
+ closet_appearance = /decl/closet_appearance/crate/secure/focalpoint
+
+/obj/structure/closet/crate/secure/gilthari
+ desc = "A secure crate embossed with the logo of Gilthari Exports."
+ closet_appearance = /decl/closet_appearance/crate/secure/gilthari
+
+/obj/structure/closet/crate/secure/grayson
+ desc = "A secure bare metal crate spraypainted with Grayson Manufactories decals."
+ closet_appearance = /decl/closet_appearance/crate/secure/grayson
+
/obj/structure/closet/crate/secure/hedberg
name = "weapons crate"
desc = "A secure weapons crate stamped with the logo of Hedberg-Hammarstrom."
closet_appearance = /decl/closet_appearance/crate/secure/hedberg
-/obj/structure/closet/crate/secure/gilthari
- name = "weapons crate"
- desc = "A secure weapons crate embossed with the logo of Gilthari Exports."
- closet_appearance = /decl/closet_appearance/crate/secure/gilthari
-
-/obj/structure/closet/crate/secure/ward
- name = "weapons crate"
- desc = "A secure weapons crate decaled with the logo of Ward-Takahashi."
- closet_appearance = /decl/closet_appearance/crate/secure/ward
-
/obj/structure/closet/crate/secure/heph
name = "weapons crate"
desc = "A secure weapons crate marked with the logo of Hephaestus Industries."
@@ -358,9 +508,47 @@
desc = "A secure weapons crate marked with the logo of Lawson Arms."
closet_appearance = /decl/closet_appearance/crate/secure/lawson
+/obj/structure/closet/crate/secure/morpheus
+ desc = "A secure crate crudely imprinted with 'MORPHEUS CYBERKINETICS'."
+ closet_appearance = /decl/closet_appearance/crate/secure/morpheus
+
+/obj/structure/closet/crate/secure/nanotrasen
+ desc = "A secure crate emblazoned with the standard NanoTrasen livery."
+ closet_appearance = /decl/closet_appearance/crate/secure/nanotrasen
+
+/obj/structure/closet/crate/secure/nanocare
+ desc = "A secure crate emblazoned with the NanoCare Medical livery, a subsidary of the NanoTrasen Corporation."
+ closet_appearance = /decl/closet_appearance/crate/secure/nanotrasenmedical
+
+/obj/structure/closet/crate/secure/scg
+ name = "weapons crate"
+ desc = "A secure crate in the official colours of the Solar Confederate Government."
+ closet_appearance = /decl/closet_appearance/crate/secure/solgov
+
+/obj/structure/closet/crate/secure/saare
+ name = "weapons crate"
+ desc = "A secure weapons crate plainly stamped with the logo of Stealth Assault Enterprises."
+ closet_appearance = /decl/closet_appearance/crate/secure/saare
+
+/obj/structure/closet/crate/secure/veymed
+ desc = "A secure sterile crate extensively detailed in Veymed colours."
+ closet_appearance = /decl/closet_appearance/crate/secure/veymed
+
+/obj/structure/closet/crate/secure/ward
+ desc = "A secure crate decaled with the logo of Ward-Takahashi."
+ closet_appearance = /decl/closet_appearance/crate/secure/ward
+
+/obj/structure/closet/crate/secure/xion
+ desc = "A secure crate painted in Xion Manufacturing Group orange."
+ closet_appearance = /decl/closet_appearance/crate/secure/xion
+
+/obj/structure/closet/crate/secure/zenghu
+ desc = "A secure sterile crate marked with the logo of Zeng-Hu Pharmaceuticals."
+ closet_appearance = /decl/closet_appearance/crate/secure/zenghu
+
/obj/structure/closet/crate/secure/phoron
name = "phoron crate"
- desc = "A secure phoron crate."
+ desc = "A secure phoron crate painted in standard NanoTrasen livery."
closet_appearance = /decl/closet_appearance/crate/secure/hazard
/obj/structure/closet/crate/secure/gear
@@ -368,27 +556,24 @@
desc = "A secure gear crate."
closet_appearance = /decl/closet_appearance/crate/secure/weapon
-
/obj/structure/closet/crate/secure/hydrosec
name = "secure hydroponics crate"
desc = "A crate with a lock on it, painted in the scheme of the station's botanists."
closet_appearance = /decl/closet_appearance/crate/secure/hydroponics
-
/obj/structure/closet/crate/secure/engineering
desc = "A crate with a lock on it, painted in the scheme of the station's engineers."
name = "secure engineering crate"
-
/obj/structure/closet/crate/secure/science
name = "secure science crate"
desc = "A crate with a lock on it, painted in the scheme of the station's scientists."
-
/obj/structure/closet/crate/secure/bin
name = "secure bin"
desc = "A secure bin."
+// Large crates
/obj/structure/closet/crate/large
name = "large crate"
@@ -414,6 +599,30 @@
break
return
+/obj/structure/closet/crate/large/critter
+ name = "animal crate"
+ desc = "A hefty crate for hauling animals."
+ closet_appearance = /decl/closet_appearance/large_crate/critter
+
+/obj/structure/closet/crate/large/aether
+ name = "large atmospherics crate"
+ desc = "A hefty metal crate, painted in Aether Atmospherics and Recycling colours."
+ closet_appearance = /decl/closet_appearance/large_crate/aether
+
+/obj/structure/closet/crate/large/einstein
+ name = "large crate"
+ desc = "A hefty metal crate, painted in Einstein Engines colours."
+ closet_appearance = /decl/closet_appearance/large_crate/einstein
+
+/obj/structure/closet/crate/large/nanotrasen
+ name = "large crate"
+ desc = "A hefty metal crate, painted in standard NanoTrasen livery."
+ closet_appearance = /decl/closet_appearance/large_crate/nanotrasen
+
+/obj/structure/closet/crate/large/xion
+ name = "large crate"
+ desc = "A hefty metal crate, painted in Xion Manufacturing Group orange."
+ closet_appearance = /decl/closet_appearance/large_crate/xion
/obj/structure/closet/crate/secure/large
name = "large crate"
@@ -441,10 +650,30 @@
return
-//fluff variant
/obj/structure/closet/crate/secure/large/reinforced
desc = "A hefty, reinforced metal crate with an electronic locking system."
+/obj/structure/closet/crate/secure/large/aether
+ name = "secure atmospherics crate"
+ desc = "A hefty metal crate with an electronic locking system, painted in Aether Atmospherics and Recycling colours."
+ closet_appearance = /decl/closet_appearance/large_crate/secure/aether
+
+/obj/structure/closet/crate/secure/large/einstein
+ desc = "A hefty metal crate with an electronic locking system, painted in Einstein Engines colours."
+ closet_appearance = /decl/closet_appearance/large_crate/secure/einstein
+
+/obj/structure/closet/crate/large/secure/heph
+ desc = "A hefty metal crate with an electronic locking system, marked with Hephaestus Industries colours."
+ closet_appearance = /decl/closet_appearance/large_crate/secure/heph
+
+/obj/structure/closet/crate/secure/large/nanotrasen
+ desc = "A hefty metal crate with an electronic locking system, painted in standard NanoTrasen livery."
+ closet_appearance = /decl/closet_appearance/large_crate/secure/hazard
+
+/obj/structure/closet/crate/large/secure/xion
+ desc = "A hefty metal crate with an electronic locking system, painted in Xion Manufacturing Group orange."
+ closet_appearance = /decl/closet_appearance/large_crate/secure/xion
+
/obj/structure/closet/crate/engineering
name = "engineering crate"
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index e9af3ce4b2..c9909656f4 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -44,8 +44,8 @@
/obj/structure/largecrate/hoverpod
name = "\improper Hoverpod assembly crate"
- desc = "It comes in a box for the fabricator's sake. Where does the wood come from? ... And why is it lighter?"
- icon_state = "mulecrate"
+ desc = "You aren't sure how this crate is so light, but the Wulf Aeronautics logo might be a hint."
+ icon_state = "vehiclecrate"
/obj/structure/largecrate/hoverpod/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.is_crowbar())
@@ -60,7 +60,7 @@
/obj/structure/largecrate/vehicle
name = "vehicle crate"
- desc = "It comes in a box for the consumer's sake. ..How is this lighter?"
+ desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?"
icon_state = "vehiclecrate"
/obj/structure/largecrate/vehicle/Initialize()
@@ -74,17 +74,22 @@
/obj/structure/largecrate/vehicle/quadbike
name = "\improper ATV crate"
+ desc = "A hefty wooden crate proudly displaying the logo of Ward-Takahashi's automotive division."
starts_with = list(/obj/structure/vehiclecage/quadbike)
/obj/structure/largecrate/vehicle/quadtrailer
name = "\improper ATV trailer crate"
+ desc = "A hefty wooden crate proudly displaying the logo of Ward-Takahashi's automotive division."
starts_with = list(/obj/structure/vehiclecage/quadtrailer)
/obj/structure/largecrate/animal
- icon_state = "mulecrate"
+ icon_state = "crittercrate"
+ desc = "A hefty wooden crate with air holes. It is marked with the logo of NanoTrasen Pastures and the slogan, '90% less cloning defects* than competing brands**, or your money back***!'"
/obj/structure/largecrate/animal/mulebot
name = "Mulebot crate"
+ desc = "A hefty wooden crate labelled 'Proud Product of the Xion Manufacturing Group'"
+ icon_state = "mulecrate"
starts_with = list(/mob/living/bot/mulebot)
/obj/structure/largecrate/animal/corgi
diff --git a/code/modules/client/preference_setup/loadout/loadout_mask.dm b/code/modules/client/preference_setup/loadout/loadout_mask.dm
index 5ae0b96e2b..716cdb4268 100644
--- a/code/modules/client/preference_setup/loadout/loadout_mask.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_mask.dm
@@ -20,4 +20,8 @@
/datum/gear/mask/sterile
display_name = "sterile mask"
path = /obj/item/clothing/mask/surgical
- cost = 2
\ No newline at end of file
+ cost = 2
+
+/datum/gear/mask/veil
+ display_name = "black veil"
+ path = /obj/item/clothing/mask/veil
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
index a40bc0998f..72365c6211 100644
--- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
@@ -552,4 +552,28 @@
/datum/gear/uniform/haltertop
display_name = "halter top"
- path = /obj/item/clothing/under/haltertop
\ No newline at end of file
+ path = /obj/item/clothing/under/haltertop
+
+/datum/gear/uniform/revealingdress
+ display_name = "revealing dress"
+ path = /obj/item/clothing/under/dress/revealingdress
+
+/datum/gear/uniform/rippedpunk
+ display_name = "ripped punk jeans"
+ path = /obj/item/clothing/under/rippedpunk
+
+/datum/gear/uniform/gothic
+ display_name = "gothic dress"
+ path = /obj/item/clothing/under/dress/gothic
+
+/datum/gear/uniform/formalred
+ display_name = "formal red dress"
+ path = /obj/item/clothing/under/dress/formalred
+
+/datum/gear/uniform/pentagram
+ display_name = "pentagram dress"
+ path = /obj/item/clothing/under/dress/pentagram
+
+/datum/gear/uniform/yellowswoop
+ display_name = "yellow swooped dress"
+ path = /obj/item/clothing/under/dress/yellowswoop
\ No newline at end of file
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index eab03a3c2e..d972cf82cc 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -288,3 +288,10 @@
desc = "A fine black bandana with nanotech lining and a skull emblem. Can be worn on the head or face."
icon_state = "bandskull"
item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull")
+
+/obj/item/clothing/mask/veil
+ name = "black veil"
+ desc = "A black veil, typically worn at funerals or by goths."
+ w_class = ITEMSIZE_TINY
+ body_parts_covered = FACE
+ icon_state = "veil"
\ No newline at end of file
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 800ba8e3ec..1fcddc2b77 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -535,6 +535,37 @@
desc = "A red and white dress themed after some winter holidays. Tastefully festive!"
icon_state = "festivedress"
+/obj/item/clothing/under/dress/revealingdress
+ name = "revealing dress"
+ desc = "A very revealing black and blue dress. Is this work appropriate?"
+ icon_state = "revealingdress"
+ index = 1
+
+/obj/item/clothing/under/dress/gothic
+ name = "gothic dress"
+ desc = "A black dress with a sheer mesh over it, tastefully old school goth."
+ icon_state = "gothic"
+ index = 1
+
+/obj/item/clothing/under/dress/formalred
+ name = "formal red dress"
+ desc = "A very formal red dress, for those fancy galas."
+ icon_state = "formalred"
+ flags_inv = HIDESHOES
+ index = 1
+
+/obj/item/clothing/under/dress/pentagram
+ name = "pentagram dress"
+ desc = "A black dress with straps over the chest in the shape of a pentagram."
+ icon_state = "pentagram"
+ index = 1
+
+obj/item/clothing/under/dress/yellowswoop
+ name = "yellow swooped dress"
+ desc = "A yellow dress that swoops to the side."
+ icon_state = "yellowswoop"
+ index = 1
+
/*
* wedding stuff
*/
@@ -767,6 +798,12 @@ Uniforms and such
desc = "Jean shorts and a black halter top. Perfect for casual Fridays!"
icon_state = "haltertop"
+/obj/item/clothing/under/rippedpunk
+ name = "ripped punk jeans"
+ desc = "Black ripped jeans and a fishnet top. How punk."
+ icon_state = "rippedpunk"
+ index = 1
+
/*
* swimsuit
*/
diff --git a/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm
index 6467646f1b..f21c341057 100644
--- a/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm
+++ b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm
@@ -77,7 +77,7 @@
// This will actually protect it from further damage.
if(prob(25))
A.energy_fail(rand(60, 120))
- log_debug("ELECTRICAL EVENT: Disabled \the [A]'s power for a temporary amount of time.")
+// log_debug("ELECTRICAL EVENT: Disabled \the [A]'s power for a temporary amount of time.")
playsound(A, 'sound/machines/defib_success.ogg', 50, 1)
apcs_disabled++
return
@@ -85,7 +85,7 @@
// Decent chance to overload lighting circuit.
if(prob(30))
A.overload_lighting()
- log_debug("ELECTRICAL EVENT: Overloaded \the [A]'s lighting.")
+// log_debug("ELECTRICAL EVENT: Overloaded \the [A]'s lighting.")
playsound(A, 'sound/effects/lightningshock.ogg', 50, 1)
apcs_overloaded++
@@ -93,7 +93,7 @@
if(prob(5))
A.emagged = TRUE
A.update_icon()
- log_debug("ELECTRICAL EVENT: Emagged \the [A].")
+// log_debug("ELECTRICAL EVENT: Emagged \the [A].")
playsound(A, 'sound/machines/chime.ogg', 50, 1)
apcs_emagged++
diff --git a/code/modules/metric/activity.dm b/code/modules/metric/activity.dm
index 5bdc33f47a..c33c88adca 100644
--- a/code/modules/metric/activity.dm
+++ b/code/modules/metric/activity.dm
@@ -40,13 +40,13 @@
var/list/activity = list()
for(var/department in departments)
activity[department] = assess_department(department)
- log_debug("Assessing department [department]. They have activity of [activity[department]].")
+// log_debug("Assessing department [department]. They have activity of [activity[department]].")
var/list/most_active_departments = list() // List of winners.
var/highest_activity = null // Department who is leading in activity, if one exists.
var/highest_number = 0 // Activity score needed to beat to be the most active department.
for(var/i = 1, i <= cutoff_number, i++)
- log_debug("Doing [i]\th round of counting.")
+// log_debug("Doing [i]\th round of counting.")
for(var/department in activity)
if(department in department_blacklist) // Blacklisted?
continue
@@ -57,7 +57,7 @@
if(highest_activity) // Someone's a winner.
most_active_departments.Add(highest_activity) // Add to the list of most active.
activity.Remove(highest_activity) // Remove them from the other list so they don't win more than once.
- log_debug("[highest_activity] has won the [i]\th round of activity counting.")
+// log_debug("[highest_activity] has won the [i]\th round of activity counting.")
highest_activity = null // Now reset for the next round.
highest_number = 0
//todo: finish
diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm
index a67440e013..d0c63faa56 100644
--- a/code/modules/mob/living/bot/medbot.dm
+++ b/code/modules/mob/living/bot/medbot.dm
@@ -1,3 +1,13 @@
+// Medbot Info
+
+#define MEDBOT_PANIC_NONE 0
+#define MEDBOT_PANIC_LOW 15
+#define MEDBOT_PANIC_MED 35
+#define MEDBOT_PANIC_HIGH 55
+#define MEDBOT_PANIC_FUCK 70
+#define MEDBOT_PANIC_ENDING 90
+#define MEDBOT_PANIC_END 100
+
/mob/living/bot/medbot
name = "Medibot"
desc = "A little medical robot. He looks somewhat underwhelmed."
@@ -23,6 +33,15 @@
var/treatment_virus = "spaceacillin"
var/treatment_emag = "toxin"
var/declare_treatment = 0 //When attempting to treat a patient, should it notify everyone wearing medhuds?
+
+ // Are we tipped over?
+ var/is_tipped = FALSE
+ //How panicked we are about being tipped over (why would you do this?)
+ var/tipped_status = MEDBOT_PANIC_NONE
+ //The name we got when we were tipped
+ var/tipper_name
+ //The last time we were tipped/righted and said a voice line, to avoid spam
+ var/last_tipping_action_voice = 0
/mob/living/bot/medbot/mysterious
name = "\improper Mysterious Medibot"
@@ -34,6 +53,9 @@
treatment_tox = "anti_toxin"
/mob/living/bot/medbot/handleIdle()
+ if(is_tipped) // Don't handle idle things if we're incapacitated!
+ return
+
if(vocal && prob(1))
var/message_options = list(
"Radar, put a mask on!" = 'sound/voice/medbot/mradar.ogg',
@@ -47,6 +69,9 @@
playsound(src, message_options[message], 50, 0)
/mob/living/bot/medbot/handleAdjacentTarget()
+ if(is_tipped) // Don't handle targets if we're incapacitated!
+ return
+
UnarmedAttack(target)
/mob/living/bot/medbot/handlePanic() // Speed modification based on alert level.
@@ -76,6 +101,9 @@
return .
/mob/living/bot/medbot/lookForTargets()
+ if(is_tipped) // Don't look for targets if we're incapacitated!
+ return
+
for(var/mob/living/carbon/human/H in view(7, src)) // Time to find a patient!
if(confirmTarget(H))
target = H
@@ -162,7 +190,28 @@
else
icon_state = "medibot[on]"
-/mob/living/bot/medbot/attack_hand(var/mob/user)
+/mob/living/bot/medbot/attack_hand(mob/living/carbon/human/H)
+ if(H.a_intent == I_DISARM && !is_tipped)
+ H.visible_message("[H] begins tipping over [src].", "You begin tipping over [src]...")
+
+ if(world.time > last_tipping_action_voice + 15 SECONDS)
+ last_tipping_action_voice = world.time // message for tipping happens when we start interacting, message for righting comes after finishing
+ var/list/messagevoice = list("Hey, wait..." = 'sound/voice/medbot/hey_wait.ogg',"Please don't..." = 'sound/voice/medbot/please_dont.ogg',"I trusted you..." = 'sound/voice/medbot/i_trusted_you.ogg', "Nooo..." = 'sound/voice/medbot/nooo.ogg', "Oh fuck-" = 'sound/voice/medbot/oh_fuck.ogg')
+ var/message = pick(messagevoice)
+ say(message)
+ playsound(src, messagevoice[message], 70, FALSE)
+
+ if(do_after(H, 3 SECONDS, target=src))
+ tip_over(H)
+
+ else if(H.a_intent == I_HELP && is_tipped)
+ H.visible_message("[H] begins righting [src].", "You begin righting [src]...")
+ if(do_after(H, 3 SECONDS, target=src))
+ set_right(H)
+ else
+ interact()
+
+/mob/living/bot/medbot/proc/interact(mob/user)
var/dat
dat += "Automatic Medical Unit v1.0
"
dat += "Status: [on ? "On" : "Off"]
"
@@ -300,6 +349,89 @@
s.start()
qdel(src)
return
+
+/mob/living/bot/medbot/handleRegular()
+ . = ..()
+
+ if(is_tipped)
+ handle_panic()
+ return
+
+/mob/living/bot/medbot/proc/tip_over(mob/user)
+ playsound(src, 'sound/machines/warning-buzzer.ogg', 50)
+ user.visible_message("[user] tips over [src]!", "You tip [src] over!")
+ is_tipped = TRUE
+ tipper_name = user.name
+ var/matrix/mat = transform
+ transform = mat.Turn(180)
+
+/mob/living/bot/medbot/proc/set_right(mob/user)
+ var/list/messagevoice
+ if(user)
+ user.visible_message("[user] sets [src] right-side up!", "You set [src] right-side up!")
+ if(user.name == tipper_name)
+ messagevoice = list("I forgive you." = 'sound/voice/medbot/forgive.ogg')
+ else
+ messagevoice = list("Thank you!" = 'sound/voice/medbot/thank_you.ogg', "You are a good person." = 'sound/voice/medbot/youre_good.ogg')
+ else
+ visible_message("[src] manages to [pick("writhe", "wriggle", "wiggle")] enough to right itself.")
+ messagevoice = list("Fuck you." = 'sound/voice/medbot/fuck_you.ogg', "Your behavior has been reported, have a nice day." = 'sound/voice/medbot/reported.ogg')
+
+ tipper_name = null
+ if(world.time > last_tipping_action_voice + 15 SECONDS)
+ last_tipping_action_voice = world.time
+ var/message = pick(messagevoice)
+ say(message)
+ playsound(src, messagevoice[message], 70)
+ tipped_status = MEDBOT_PANIC_NONE
+ is_tipped = FALSE
+ transform = matrix()
+
+// if someone tipped us over, check whether we should ask for help or just right ourselves eventually
+/mob/living/bot/medbot/proc/handle_panic()
+ tipped_status++
+ var/list/messagevoice
+ switch(tipped_status)
+ if(MEDBOT_PANIC_LOW)
+ messagevoice = list("I require assistance." = 'sound/voice/medbot/i_require_asst.ogg')
+ if(MEDBOT_PANIC_MED)
+ messagevoice = list("Please put me back." = 'sound/voice/medbot/please_put_me_back.ogg')
+ if(MEDBOT_PANIC_HIGH)
+ messagevoice = list("Please, I am scared!" = 'sound/voice/medbot/please_im_scared.ogg')
+ if(MEDBOT_PANIC_FUCK)
+ messagevoice = list("I don't like this, I need help!" = 'sound/voice/medbot/dont_like.ogg', "This hurts, my pain is real!" = 'sound/voice/medbot/pain_is_real.ogg')
+ if(MEDBOT_PANIC_ENDING)
+ messagevoice = list("Is this the end?" = 'sound/voice/medbot/is_this_the_end.ogg', "Nooo!" = 'sound/voice/medbot/nooo.ogg')
+ if(MEDBOT_PANIC_END)
+ global_announcer.autosay("PSYCH ALERT: Crewmember [tipper_name] recorded displaying antisocial tendencies torturing bots in [get_area(src)]. Please schedule psych evaluation.", "[src]", "Medical")
+ set_right() // strong independent medbot
+
+ // if(prob(tipped_status)) // Commented out pending introduction of jitter stuff from /tg/
+ // do_jitter_animation(tipped_status * 0.1)
+
+ if(messagevoice)
+ var/message = pick(messagevoice)
+ say(message)
+ playsound(src, messagevoice[message], 70)
+ else if(prob(tipped_status * 0.2))
+ playsound(src, 'sound/machines/warning-buzzer.ogg', 30, extrarange=-2)
+
+/mob/living/bot/medbot/examine(mob/user)
+ . = ..()
+ if(tipped_status == MEDBOT_PANIC_NONE)
+ return
+
+ switch(tipped_status)
+ if(MEDBOT_PANIC_NONE to MEDBOT_PANIC_LOW)
+ . += "It appears to be tipped over, and is quietly waiting for someone to set it right."
+ if(MEDBOT_PANIC_LOW to MEDBOT_PANIC_MED)
+ . += "It is tipped over and requesting help."
+ if(MEDBOT_PANIC_MED to MEDBOT_PANIC_HIGH)
+ . += "They are tipped over and appear visibly distressed." // now we humanize the medbot as a they, not an it
+ if(MEDBOT_PANIC_HIGH to MEDBOT_PANIC_FUCK)
+ . += "They are tipped over and visibly panicking!"
+ if(MEDBOT_PANIC_FUCK to INFINITY)
+ . += "They are freaking out from being tipped over!"
/mob/living/bot/medbot/confirmTarget(var/mob/living/carbon/human/H)
if(!..())
@@ -430,3 +562,12 @@
S.name = created_name
user.drop_from_inventory(src)
qdel(src)
+
+// Undefine these.
+#undef MEDBOT_PANIC_NONE
+#undef MEDBOT_PANIC_LOW
+#undef MEDBOT_PANIC_MED
+#undef MEDBOT_PANIC_HIGH
+#undef MEDBOT_PANIC_FUCK
+#undef MEDBOT_PANIC_ENDING
+#undef MEDBOT_PANIC_END
diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm
index 3950e55841..fe1c6ca632 100644
--- a/code/modules/mob/living/carbon/human/appearance.dm
+++ b/code/modules/mob/living/carbon/human/appearance.dm
@@ -48,6 +48,21 @@
update_hair()
return 1
+
+/mob/living/carbon/human/proc/change_hair_gradient(var/hair_gradient)
+ if(!hair_gradient)
+ return
+
+ if(grad_style == hair_gradient)
+ return
+
+ if(!(hair_gradient in GLOB.hair_gradients))
+ return
+
+ grad_style = hair_gradient
+
+ update_hair()
+ return 1
/mob/living/carbon/human/proc/change_facial_hair(var/facial_hair_style)
if(!facial_hair_style)
@@ -104,6 +119,17 @@
update_hair()
return 1
+
+/mob/living/carbon/human/proc/change_grad_color(var/red, var/green, var/blue)
+ if(red == r_grad && green == g_grad && blue == b_grad)
+ return
+
+ r_grad = red
+ g_grad = green
+ b_grad = blue
+
+ update_hair()
+ return 1
/mob/living/carbon/human/proc/change_facial_hair_color(var/red, var/green, var/blue)
if(red == r_facial && green == g_facial && blue == b_facial)
diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm
index 581055efb4..79d19b66db 100644
--- a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm
+++ b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm
@@ -88,6 +88,7 @@ var/list/wrapped_species_by_ref = list()
var/list/valid_hairstyles = list()
var/list/valid_facialhairstyles = list()
+ var/list/valid_gradstyles = GLOB.hair_gradients
for(var/hairstyle in hair_styles_list)
var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
if(gender == MALE && S.gender == FEMALE)
@@ -112,6 +113,9 @@ var/list/wrapped_species_by_ref = list()
if(valid_hairstyles.len)
var/new_hair = input("Select a hairstyle.", "Shapeshifter Hair") as null|anything in valid_hairstyles
change_hair(new_hair ? new_hair : "Bald")
+ if(valid_gradstyles.len)
+ var/new_hair = input("Select a hair gradient style.", "Shapeshifter Hair") as null|anything in valid_gradstyles
+ change_hair_gradient(new_hair ? new_hair : "None")
if(valid_facialhairstyles.len)
var/new_hair = input("Select a facial hair style.", "Shapeshifter Hair") as null|anything in valid_facialhairstyles
change_facial_hair(new_hair ? new_hair : "Shaved")
@@ -215,6 +219,10 @@ var/list/wrapped_species_by_ref = list()
if(!new_hair)
return
shapeshifter_set_hair_color(new_hair)
+ var/new_grad = input("Please select a new hair gradient color.", "Hair Gradient Colour") as color
+ if(!new_grad)
+ return
+ shapeshifter_set_grad_color(new_grad)
var/new_fhair = input("Please select a new facial hair color.", "Facial Hair Color") as color
if(!new_fhair)
return
@@ -224,6 +232,10 @@ var/list/wrapped_species_by_ref = list()
change_hair_color(hex2num(copytext(new_hair, 2, 4)), hex2num(copytext(new_hair, 4, 6)), hex2num(copytext(new_hair, 6, 8)))
+/mob/living/carbon/human/proc/shapeshifter_set_grad_color(var/new_grad)
+
+ change_grad_color(hex2num(copytext(new_grad, 2, 4)), hex2num(copytext(new_grad, 4, 6)), hex2num(copytext(new_grad, 6, 8)))
+
/mob/living/carbon/human/proc/shapeshifter_set_facial_color(var/new_fhair)
change_facial_hair_color(hex2num(copytext(new_fhair, 2, 4)), hex2num(copytext(new_fhair, 4, 6)), hex2num(copytext(new_fhair, 6, 8)))
diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm
index 4e5ba89709..5d98bdc606 100644
--- a/code/modules/vchat/vchat_client.dm
+++ b/code/modules/vchat/vchat_client.dm
@@ -393,6 +393,7 @@ var/to_chat_src
// Write the messages to the log
for(var/list/result in results)
o_file << "[result["message"]]
"
+ CHECK_TICK
o_file << "