April sync (#360)

* Maps and things no code/icons

* helpers defines globalvars

* Onclick world.dm orphaned_procs

* subsystems

Round vote and shuttle autocall done here too

* datums

* Game folder

* Admin - chatter modules

* clothing - mining

* modular computers - zambies

* client

* mob level 1

* mob stage 2 + simple_animal

* silicons n brains

* mob stage 3 + Alien/Monkey

* human mobs

* icons updated

* some sounds

* emitter y u no commit

* update tgstation.dme

* compile fixes

* travis fixes

Also removes Fast digest mode, because reasons.

* tweaks for travis Mentors are broke again

Also fixes Sizeray guns

* oxygen loss fix for vore code.

* removes unused code

* some code updates

* bulk fixes

* further fixes

* outside things

* whoops.

* Maint bar ported

* GLOBs.
This commit is contained in:
Poojawa
2017-04-13 23:37:00 -05:00
committed by GitHub
parent cdc32c98fa
commit 7e9b96a00f
1322 changed files with 174827 additions and 23888 deletions
@@ -33,13 +33,19 @@
var/material_drop = /obj/item/stack/sheet/metal
var/material_drop_amount = 2
var/delivery_icon = "deliverycloset" //which icon to use when packagewrapped. null to be unwrappable.
var/anchorable = TRUE
/obj/structure/closet/Initialize(mapload)
..()
if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents
take_contents()
addtimer(CALLBACK(src, .proc/take_contents), 0)
..()
update_icon()
PopulateContents()
//USE THIS TO FILL IT, NOT INITIALIZE OR NEW
/obj/structure/closet/proc/PopulateContents()
return
/obj/structure/closet/Destroy()
dump_contents()
@@ -73,8 +79,6 @@
..()
if(anchored)
to_chat(user, "It is anchored to the ground.")
if(broken)
to_chat(user, "<span class='notice'>It appears to be broken.</span>")
else if(secure && !opened)
to_chat(user, "<span class='notice'>Alt-click to [locked ? "unlock" : "lock"].</span>")
@@ -118,7 +122,7 @@
/obj/structure/closet/proc/take_contents()
var/turf/T = get_turf(src)
for(var/atom/movable/AM in T)
if(insert(AM) == -1) // limit reached
if(AM != src && insert(AM) == -1) // limit reached
break
/obj/structure/closet/proc/open(mob/living/user)
@@ -240,7 +244,7 @@
"<span class='notice'>You [welded ? "weld" : "unwelded"] \the [src] with \the [WT].</span>",
"<span class='italics'>You hear welding.</span>")
update_icon()
else if(istype(W, /obj/item/weapon/wrench))
else if(istype(W, /obj/item/weapon/wrench) && anchorable)
if(isinspace() && !anchored)
return
anchored = !anchored
@@ -315,6 +319,9 @@
togglelock(user)
return
/obj/structure/closet/attack_paw(mob/user)
return attack_hand(user)
/obj/structure/closet/attack_robot(mob/user)
if(user.Adjacent(src))
return attack_hand(user)
@@ -11,6 +11,7 @@
integrity_failure = 0
material_drop = /obj/item/stack/sheet/cloth
delivery_icon = null //unwrappable
anchorable = FALSE
var/foldedbag_path = /obj/item/bodybag
var/tagged = 0 // so closet code knows to put the tag overlay back
@@ -14,6 +14,7 @@
cutting_sound = 'sound/items/poster_ripped.ogg'
material_drop = /obj/item/stack/sheet/cardboard
delivery_icon = "deliverybox"
anchorable = FALSE
var/move_speed_multiplier = 1
var/move_delay = 0
var/egged = 0
@@ -3,7 +3,7 @@
desc = "It's a storage unit for athletic wear."
icon_door = "mixed"
/obj/structure/closet/athletic_mixed/New()
/obj/structure/closet/athletic_mixed/PopulateContents()
..()
new /obj/item/clothing/under/shorts/purple(src)
new /obj/item/clothing/under/shorts/grey(src)
@@ -19,7 +19,7 @@
name = "boxing gloves"
desc = "It's a storage unit for gloves for use in the boxing ring."
/obj/structure/closet/boxinggloves/New()
/obj/structure/closet/boxinggloves/PopulateContents()
..()
new /obj/item/clothing/gloves/boxing/blue(src)
new /obj/item/clothing/gloves/boxing/green(src)
@@ -31,7 +31,7 @@
name = "mask closet"
desc = "IT'S A STORAGE UNIT FOR FIGHTER MASKS OLE!"
/obj/structure/closet/masks/New()
/obj/structure/closet/masks/PopulateContents()
..()
new /obj/item/clothing/mask/luchador(src)
new /obj/item/clothing/mask/luchador/rudos(src)
@@ -43,7 +43,7 @@
desc = "It's a storage unit for laser tag equipment."
icon_door = "red"
/obj/structure/closet/lasertag/red/New()
/obj/structure/closet/lasertag/red/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser/redtag(src)
@@ -57,7 +57,7 @@
desc = "It's a storage unit for laser tag equipment."
icon_door = "blue"
/obj/structure/closet/lasertag/blue/New()
/obj/structure/closet/lasertag/blue/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser/bluetag(src)
@@ -21,7 +21,7 @@
name = "russian surplus closet"
desc = "It's a storage unit for Russian standard-issue surplus."
/obj/structure/closet/gimmick/russian/New()
/obj/structure/closet/gimmick/russian/PopulateContents()
..()
for(var/i in 1 to 5)
new /obj/item/clothing/head/ushanka(src)
@@ -32,7 +32,7 @@
name = "tacticool gear closet"
desc = "It's a storage unit for Tacticool gear."
/obj/structure/closet/gimmick/tacticool/New()
/obj/structure/closet/gimmick/tacticool/PopulateContents()
..()
new /obj/item/clothing/glasses/eyepatch(src)
new /obj/item/clothing/glasses/sunglasses(src)
@@ -59,7 +59,7 @@
name = "red-team Thunderdome closet"
icon_door = "red"
/obj/structure/closet/thunderdome/tdred/New()
/obj/structure/closet/thunderdome/tdred/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/red(src)
@@ -78,7 +78,7 @@
name = "green-team Thunderdome closet"
icon_door = "green"
/obj/structure/closet/thunderdome/tdgreen/New()
/obj/structure/closet/thunderdome/tdgreen/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/green(src)
@@ -97,7 +97,7 @@
desc = "It's a storage unit for operational gear."
icon_state = "syndicate"
/obj/structure/closet/malf/suits/New()
/obj/structure/closet/malf/suits/PopulateContents()
..()
new /obj/item/weapon/tank/jetpack/void(src)
new /obj/item/clothing/mask/breath(src)
@@ -5,7 +5,7 @@
desc = "It's a storage unit for formal clothing."
icon_door = "black"
/obj/structure/closet/gmcloset/New()
/obj/structure/closet/gmcloset/PopulateContents()
..()
new /obj/item/clothing/head/that(src)
new /obj/item/device/radio/headset/headset_srv(src)
@@ -33,7 +33,7 @@
desc = "It's a storage unit for foodservice garments and mouse traps."
icon_door = "black"
/obj/structure/closet/chefcloset/New()
/obj/structure/closet/chefcloset/PopulateContents()
..()
new /obj/item/clothing/under/waiter(src)
new /obj/item/clothing/under/waiter(src)
@@ -57,7 +57,7 @@
desc = "It's a storage unit for janitorial clothes and gear."
icon_door = "mixed"
/obj/structure/closet/jcloset/New()
/obj/structure/closet/jcloset/PopulateContents()
..()
new /obj/item/clothing/under/rank/janitor(src)
new /obj/item/weapon/cartridge/janitor(src)
@@ -81,7 +81,7 @@
desc = "It's a storage unit for courtroom apparel and items."
icon_door = "blue"
/obj/structure/closet/lawcloset/New()
/obj/structure/closet/lawcloset/PopulateContents()
..()
new /obj/item/clothing/under/lawyer/female(src)
new /obj/item/clothing/under/lawyer/black(src)
@@ -102,9 +102,7 @@
desc = "It's a storage unit for Nanotrasen-approved religious attire."
icon_door = "black"
/obj/structure/closet/wardrobe/chaplain_black/New()
..()
contents = list()
/obj/structure/closet/wardrobe/chaplain_black/PopulateContents()
new /obj/item/clothing/under/rank/chaplain(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/suit/nun(src)
@@ -131,14 +129,14 @@
max_integrity = 70
horizontal = TRUE
delivery_icon = "deliverycrate"
material_drop = /obj/item/stack/sheet/mineral/wood
material_drop_amount = 5
/obj/structure/closet/wardrobe/red
name = "security wardrobe"
icon_door = "red"
/obj/structure/closet/wardrobe/red/New()
..()
contents = list()
/obj/structure/closet/wardrobe/red/PopulateContents()
new /obj/item/clothing/suit/hooded/wintercoat/security(src)
new /obj/item/weapon/storage/backpack/security(src)
new /obj/item/weapon/storage/backpack/satchel/sec(src)
@@ -161,9 +159,7 @@
name = "cargo wardrobe"
icon_door = "orange"
/obj/structure/closet/wardrobe/cargotech/New()
..()
contents = list()
/obj/structure/closet/wardrobe/cargotech/PopulateContents()
new /obj/item/clothing/suit/hooded/wintercoat/cargo(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/cargotech(src)
@@ -179,9 +175,7 @@
name = "atmospherics wardrobe"
icon_door = "atmos_wardrobe"
/obj/structure/closet/wardrobe/atmospherics_yellow/New()
..()
contents = list()
/obj/structure/closet/wardrobe/atmospherics_yellow/PopulateContents()
new /obj/item/weapon/storage/backpack/dufflebag/engineering(src)
new /obj/item/weapon/storage/backpack/satchel/eng(src)
new /obj/item/weapon/storage/backpack/industrial(src)
@@ -197,9 +191,7 @@
name = "engineering wardrobe"
icon_door = "yellow"
/obj/structure/closet/wardrobe/engineering_yellow/New()
..()
contents = list()
/obj/structure/closet/wardrobe/engineering_yellow/PopulateContents()
new /obj/item/weapon/storage/backpack/dufflebag/engineering(src)
new /obj/item/weapon/storage/backpack/industrial(src)
new /obj/item/weapon/storage/backpack/satchel/eng(src)
@@ -217,9 +209,7 @@
/obj/structure/closet/wardrobe/white/medical
name = "medical doctor's wardrobe"
/obj/structure/closet/wardrobe/white/medical/New()
..()
contents = list()
/obj/structure/closet/wardrobe/white/medical/PopulateContents()
new /obj/item/weapon/storage/backpack/dufflebag/med(src)
new /obj/item/weapon/storage/backpack/medic(src)
new /obj/item/weapon/storage/backpack/satchel/med(src)
@@ -245,9 +235,7 @@
name = "robotics wardrobe"
icon_door = "black"
/obj/structure/closet/wardrobe/robotics_black/New()
..()
contents = list()
/obj/structure/closet/wardrobe/robotics_black/PopulateContents()
new /obj/item/clothing/glasses/hud/diagnostic(src)
new /obj/item/clothing/glasses/hud/diagnostic(src)
new /obj/item/clothing/under/rank/roboticist(src)
@@ -271,9 +259,7 @@
name = "chemistry wardrobe"
icon_door = "white"
/obj/structure/closet/wardrobe/chemistry_white/New()
..()
contents = list()
/obj/structure/closet/wardrobe/chemistry_white/PopulateContents()
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/shoes/sneakers/white(src)
@@ -293,9 +279,7 @@
name = "genetics wardrobe"
icon_door = "white"
/obj/structure/closet/wardrobe/genetics_white/New()
..()
contents = list()
/obj/structure/closet/wardrobe/genetics_white/PopulateContents()
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/under/rank/geneticist(src)
new /obj/item/clothing/shoes/sneakers/white(src)
@@ -313,9 +297,7 @@
name = "virology wardrobe"
icon_door = "white"
/obj/structure/closet/wardrobe/virology_white/New()
..()
contents = list()
/obj/structure/closet/wardrobe/virology_white/PopulateContents()
new /obj/item/clothing/under/rank/virologist(src)
new /obj/item/clothing/under/rank/virologist(src)
new /obj/item/clothing/shoes/sneakers/white(src)
@@ -334,9 +316,7 @@
name = "science wardrobe"
icon_door = "white"
/obj/structure/closet/wardrobe/science_white/New()
..()
contents = list()
/obj/structure/closet/wardrobe/science_white/PopulateContents()
new /obj/item/weapon/storage/backpack/science(src)
new /obj/item/weapon/storage/backpack/science(src)
new /obj/item/weapon/storage/backpack/satchel/tox(src)
@@ -358,9 +338,7 @@
name = "botanist wardrobe"
icon_door = "green"
/obj/structure/closet/wardrobe/botanist/New()
..()
contents = list()
/obj/structure/closet/wardrobe/botanist/PopulateContents()
new /obj/item/weapon/storage/backpack/botany(src)
new /obj/item/weapon/storage/backpack/botany(src)
new /obj/item/weapon/storage/backpack/satchel/hyd(src)
@@ -3,7 +3,7 @@
desc = "It's a storage unit for level-3 biohazard gear."
icon_state = "bio"
/obj/structure/closet/l3closet/New()
/obj/structure/closet/l3closet/PopulateContents()
..()
new /obj/item/weapon/storage/bag/bio( src )
new /obj/item/clothing/suit/bio_suit/general( src )
@@ -13,9 +13,7 @@
/obj/structure/closet/l3closet/virology
icon_state = "bio_viro"
/obj/structure/closet/l3closet/virology/New()
..()
contents = list()
/obj/structure/closet/l3closet/virology/PopulateContents()
new /obj/item/weapon/storage/bag/bio( src )
new /obj/item/clothing/suit/bio_suit/virology( src )
new /obj/item/clothing/head/bio_hood/virology( src )
@@ -24,9 +22,7 @@
/obj/structure/closet/l3closet/security
icon_state = "bio_sec"
/obj/structure/closet/l3closet/security/New()
..()
contents = list()
/obj/structure/closet/l3closet/security/PopulateContents()
new /obj/item/clothing/suit/bio_suit/security( src )
new /obj/item/clothing/head/bio_hood/security( src )
@@ -34,9 +30,7 @@
/obj/structure/closet/l3closet/janitor
icon_state = "bio_jan"
/obj/structure/closet/l3closet/janitor/New()
..()
contents = list()
/obj/structure/closet/l3closet/janitor/PopulateContents()
new /obj/item/clothing/suit/bio_suit/janitor( src )
new /obj/item/clothing/head/bio_hood/janitor( src )
@@ -44,9 +38,7 @@
/obj/structure/closet/l3closet/scientist
icon_state = "bio_viro"
/obj/structure/closet/l3closet/scientist/New()
..()
contents = list()
/obj/structure/closet/l3closet/scientist/PopulateContents()
new /obj/item/weapon/storage/bag/bio( src )
new /obj/item/clothing/suit/bio_suit/scientist( src )
new /obj/item/clothing/head/bio_hood/scientist( src )
@@ -1,12 +1,12 @@
/obj/structure/closet/secure_closet/bar
name = "booze storage"
req_access = list(access_bar)
req_access = list(GLOB.access_bar)
icon_state = "cabinet"
resistance_flags = FLAMMABLE
obj_integrity = 70
max_integrity = 70
/obj/structure/closet/secure_closet/bar/New()
/obj/structure/closet/secure_closet/bar/PopulateContents()
..()
for(var/i in 1 to 10)
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
@@ -1,9 +1,9 @@
/obj/structure/closet/secure_closet/quartermaster
name = "\proper quartermaster's locker"
req_access = list(access_qm)
req_access = list(GLOB.access_qm)
icon_state = "qm"
/obj/structure/closet/secure_closet/quartermaster/New()
/obj/structure/closet/secure_closet/quartermaster/PopulateContents()
..()
new /obj/item/clothing/neck/cloak/qm(src)
new /obj/item/clothing/under/rank/cargo(src)
@@ -1,9 +1,9 @@
/obj/structure/closet/secure_closet/engineering_chief
name = "\proper chief engineer's locker"
req_access = list(access_ce)
req_access = list(GLOB.access_ce)
icon_state = "ce"
/obj/structure/closet/secure_closet/engineering_chief/New()
/obj/structure/closet/secure_closet/engineering_chief/PopulateContents()
..()
new /obj/item/clothing/neck/cloak/ce(src)
new /obj/item/clothing/under/rank/chief_engineer(src)
@@ -29,11 +29,11 @@
/obj/structure/closet/secure_closet/engineering_electrical
name = "electrical supplies locker"
req_access = list(access_engine_equip)
req_access = list(GLOB.access_engine_equip)
icon_state = "eng"
icon_door = "eng_elec"
/obj/structure/closet/secure_closet/engineering_electrical/New()
/obj/structure/closet/secure_closet/engineering_electrical/PopulateContents()
..()
new /obj/item/clothing/gloves/color/yellow(src)
new /obj/item/clothing/gloves/color/yellow(src)
@@ -46,11 +46,11 @@
/obj/structure/closet/secure_closet/engineering_welding
name = "welding supplies locker"
req_access = list(access_engine_equip)
req_access = list(GLOB.access_engine_equip)
icon_state = "eng"
icon_door = "eng_weld"
/obj/structure/closet/secure_closet/engineering_welding/New()
/obj/structure/closet/secure_closet/engineering_welding/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/clothing/head/welding(src)
@@ -59,10 +59,10 @@
/obj/structure/closet/secure_closet/engineering_personal
name = "engineer's locker"
req_access = list(access_engine_equip)
req_access = list(GLOB.access_engine_equip)
icon_state = "eng_secure"
/obj/structure/closet/secure_closet/engineering_personal/New()
/obj/structure/closet/secure_closet/engineering_personal/PopulateContents()
..()
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
@@ -75,10 +75,10 @@
/obj/structure/closet/secure_closet/atmospherics
name = "\proper atmospheric technician's locker"
req_access = list(access_atmospherics)
req_access = list(GLOB.access_atmospherics)
icon_state = "atmos"
/obj/structure/closet/secure_closet/atmospherics/New()
/obj/structure/closet/secure_closet/atmospherics/PopulateContents()
..()
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/weapon/pipe_dispenser(src)
@@ -3,9 +3,9 @@
/obj/structure/closet/secure_closet/freezer/kitchen
name = "kitchen Cabinet"
req_access = list(access_kitchen)
req_access = list(GLOB.access_kitchen)
/obj/structure/closet/secure_closet/freezer/kitchen/New()
/obj/structure/closet/secure_closet/freezer/kitchen/PopulateContents()
..()
for(var/i = 0, i < 3, i++)
new /obj/item/weapon/reagent_containers/food/condiment/flour(src)
@@ -17,7 +17,7 @@
desc = "This refrigerator looks quite dusty, is there anything edible still inside?"
req_access = list()
/obj/structure/closet/secure_closet/freezer/kitchen/maintenance/New()
/obj/structure/closet/secure_closet/freezer/kitchen/maintenance/PopulateContents()
..()
for(var/i = 0, i < 5, i++)
new /obj/item/weapon/reagent_containers/food/condiment/milk(src)
@@ -32,14 +32,14 @@
/obj/structure/closet/secure_closet/freezer/meat
name = "meat fridge"
/obj/structure/closet/secure_closet/freezer/meat/New()
/obj/structure/closet/secure_closet/freezer/meat/PopulateContents()
..()
for(var/i = 0, i < 4, i++)
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/monkey(src)
/obj/structure/closet/secure_closet/freezer/fridge
name = "refrigerator"
/obj/structure/closet/secure_closet/freezer/fridge/New()
/obj/structure/closet/secure_closet/freezer/fridge/PopulateContents()
..()
for(var/i = 0, i < 5, i++)
new /obj/item/weapon/reagent_containers/food/condiment/milk(src)
@@ -51,9 +51,9 @@
/obj/structure/closet/secure_closet/freezer/money
name = "freezer"
desc = "This contains cold hard cash."
req_access = list(access_heads_vault)
req_access = list(GLOB.access_heads_vault)
/obj/structure/closet/secure_closet/freezer/money/New()
/obj/structure/closet/secure_closet/freezer/money/PopulateContents()
..()
for(var/i = 0, i < 3, i++)
new /obj/item/stack/spacecash/c1000(src)
@@ -65,8 +65,8 @@
/obj/structure/closet/secure_closet/freezer/cream_pie
name = "cream pie closet"
desc = "Contains pies filled with cream and/or custard, you sickos."
req_access = list(access_theatre)
req_access = list(GLOB.access_theatre)
/obj/structure/closet/secure_closet/freezer/pie/New()
/obj/structure/closet/secure_closet/freezer/pie/PopulateContents()
..()
new /obj/item/weapon/reagent_containers/food/snacks/pie/cream(src)
@@ -1,9 +1,9 @@
/obj/structure/closet/secure_closet/hydroponics
name = "botanist's locker"
req_access = list(access_hydroponics)
req_access = list(GLOB.access_hydroponics)
icon_state = "hydro"
/obj/structure/closet/secure_closet/hydroponics/New()
/obj/structure/closet/secure_closet/hydroponics/PopulateContents()
..()
new /obj/item/weapon/storage/bag/plants/portaseeder(src)
new /obj/item/device/plant_analyzer(src)
@@ -2,9 +2,9 @@
name = "medicine closet"
desc = "Filled to the brim with medical junk."
icon_state = "med"
req_access = list(access_medical)
req_access = list(GLOB.access_medical)
/obj/structure/closet/secure_closet/medical1/New()
/obj/structure/closet/secure_closet/medical1/PopulateContents()
..()
new /obj/item/weapon/reagent_containers/glass/beaker(src)
new /obj/item/weapon/reagent_containers/glass/beaker(src)
@@ -24,9 +24,9 @@
/obj/structure/closet/secure_closet/medical2
name = "anesthetic closet"
desc = "Used to knock people out."
req_access = list(access_surgery)
req_access = list(GLOB.access_surgery)
/obj/structure/closet/secure_closet/medical2/New()
/obj/structure/closet/secure_closet/medical2/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/weapon/tank/internals/anesthetic(src)
@@ -35,10 +35,10 @@
/obj/structure/closet/secure_closet/medical3
name = "medical doctor's locker"
req_access = list(access_surgery)
req_access = list(GLOB.access_surgery)
icon_state = "med_secure"
/obj/structure/closet/secure_closet/medical3/New()
/obj/structure/closet/secure_closet/medical3/PopulateContents()
..()
new /obj/item/device/radio/headset/headset_med(src)
new /obj/item/weapon/defibrillator/loaded(src)
@@ -49,10 +49,10 @@
/obj/structure/closet/secure_closet/CMO
name = "\proper chief medical officer's locker"
req_access = list(access_cmo)
req_access = list(GLOB.access_cmo)
icon_state = "cmo"
/obj/structure/closet/secure_closet/CMO/New()
/obj/structure/closet/secure_closet/CMO/PopulateContents()
..()
new /obj/item/clothing/neck/cloak/cmo(src)
new /obj/item/weapon/storage/backpack/dufflebag/med(src)
@@ -69,14 +69,14 @@
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/device/assembly/flash/handheld(src)
new /obj/item/weapon/reagent_containers/hypospray/CMO(src)
new /obj/item/device/autoimplanter/cmo(src)
new /obj/item/device/autosurgeon/cmo(src)
new /obj/item/weapon/door_remote/chief_medical_officer(src)
/obj/structure/closet/secure_closet/animal
name = "animal control"
req_access = list(access_surgery)
req_access = list(GLOB.access_surgery)
/obj/structure/closet/secure_closet/animal/New()
/obj/structure/closet/secure_closet/animal/PopulateContents()
..()
new /obj/item/device/assembly/signaler(src)
for(var/i in 1 to 3)
@@ -87,7 +87,7 @@
desc = "Store dangerous chemicals in here."
icon_door = "chemical"
/obj/structure/closet/secure_closet/chemical/New()
/obj/structure/closet/secure_closet/chemical/PopulateContents()
..()
new /obj/item/weapon/storage/box/pillbottles(src)
new /obj/item/weapon/storage/box/pillbottles(src)
@@ -1,10 +1,10 @@
/obj/structure/closet/secure_closet/ertCom
name = "commander's closet"
desc = "Emergency Response Team equipment locker."
req_access = list(access_cent_captain)
req_access = list(GLOB.access_cent_captain)
icon_state = "cap"
/obj/structure/closet/secure_closet/ertCom/New()
/obj/structure/closet/secure_closet/ertCom/PopulateContents()
..()
new /obj/item/weapon/storage/firstaid/regular(src)
new /obj/item/weapon/storage/box/handcuffs(src)
@@ -22,10 +22,10 @@
/obj/structure/closet/secure_closet/ertSec
name = "security closet"
desc = "Emergency Response Team equipment locker."
req_access = list(access_cent_specops)
req_access = list(GLOB.access_cent_specops)
icon_state = "hos"
/obj/structure/closet/secure_closet/ertSec/New()
/obj/structure/closet/secure_closet/ertSec/PopulateContents()
..()
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/teargas(src)
@@ -36,10 +36,10 @@
/obj/structure/closet/secure_closet/ertMed
name = "medical closet"
desc = "Emergency Response Team equipment locker."
req_access = list(access_cent_medical)
req_access = list(GLOB.access_cent_medical)
icon_state = "cmo"
/obj/structure/closet/secure_closet/ertMed/New()
/obj/structure/closet/secure_closet/ertMed/PopulateContents()
..()
new /obj/item/weapon/storage/firstaid/o2(src)
new /obj/item/weapon/storage/firstaid/toxin(src)
@@ -52,10 +52,10 @@
/obj/structure/closet/secure_closet/ertEngi
name = "engineer closet"
desc = "Emergency Response Team equipment locker."
req_access = list(access_cent_storage)
req_access = list(GLOB.access_cent_storage)
icon_state = "ce"
/obj/structure/closet/secure_closet/ertEngi/New()
/obj/structure/closet/secure_closet/ertEngi/PopulateContents()
..()
new /obj/item/stack/sheet/plasteel(src, 50)
new /obj/item/stack/sheet/metal(src, 50)
@@ -1,10 +1,10 @@
/obj/structure/closet/secure_closet/personal
desc = "It's a secure locker for personnel. The first card swiped gains control."
name = "personal closet"
req_access = list(access_all_personal_lockers)
req_access = list(GLOB.access_all_personal_lockers)
var/registered_name = null
/obj/structure/closet/secure_closet/personal/New()
/obj/structure/closet/secure_closet/personal/PopulateContents()
..()
if(prob(50))
new /obj/item/weapon/storage/backpack/dufflebag(src)
@@ -17,9 +17,7 @@
/obj/structure/closet/secure_closet/personal/patient
name = "patient's closet"
/obj/structure/closet/secure_closet/personal/patient/New()
..()
contents.Cut()
/obj/structure/closet/secure_closet/personal/patient/PopulateContents()
new /obj/item/clothing/under/color/white( src )
new /obj/item/clothing/shoes/sneakers/white( src )
@@ -29,9 +27,7 @@
obj_integrity = 70
max_integrity = 70
/obj/structure/closet/secure_closet/personal/cabinet/New()
..()
contents = list()
/obj/structure/closet/secure_closet/personal/cabinet/PopulateContents()
new /obj/item/weapon/storage/backpack/satchel/leather/withwallet( src )
new /obj/item/device/radio/headset( src )
@@ -1,9 +1,9 @@
/obj/structure/closet/secure_closet/RD
name = "\proper research director's locker"
req_access = list(access_rd)
req_access = list(GLOB.access_rd)
icon_state = "rd"
/obj/structure/closet/secure_closet/RD/New()
/obj/structure/closet/secure_closet/RD/PopulateContents()
..()
new /obj/item/clothing/neck/cloak/rd(src)
new /obj/item/clothing/suit/bio_suit/scientist(src)
@@ -1,9 +1,9 @@
/obj/structure/closet/secure_closet/captains
name = "\proper captain's locker"
req_access = list(access_captain)
req_access = list(GLOB.access_captain)
icon_state = "cap"
/obj/structure/closet/secure_closet/captains/New()
/obj/structure/closet/secure_closet/captains/PopulateContents()
..()
new /obj/item/clothing/suit/hooded/wintercoat/captain(src)
if(prob(50))
@@ -32,10 +32,10 @@
/obj/structure/closet/secure_closet/hop
name = "\proper head of personnel's locker"
req_access = list(access_hop)
req_access = list(GLOB.access_hop)
icon_state = "hop"
/obj/structure/closet/secure_closet/hop/New()
/obj/structure/closet/secure_closet/hop/PopulateContents()
..()
new /obj/item/clothing/neck/cloak/hop(src)
new /obj/item/clothing/under/rank/head_of_personnel(src)
@@ -56,10 +56,10 @@
/obj/structure/closet/secure_closet/hos
name = "\proper head of security's locker"
req_access = list(access_hos)
req_access = list(GLOB.access_hos)
icon_state = "hos"
/obj/structure/closet/secure_closet/hos/New()
/obj/structure/closet/secure_closet/hos/PopulateContents()
..()
new /obj/item/clothing/neck/cloak/hos(src)
new /obj/item/weapon/cartridge/hos(src)
@@ -85,10 +85,10 @@
/obj/structure/closet/secure_closet/warden
name = "\proper warden's locker"
req_access = list(access_armory)
req_access = list(GLOB.access_armory)
icon_state = "warden"
/obj/structure/closet/secure_closet/warden/New()
/obj/structure/closet/secure_closet/warden/PopulateContents()
..()
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/clothing/suit/armor/vest/warden(src)
@@ -109,10 +109,10 @@
/obj/structure/closet/secure_closet/security
name = "security officer's locker"
req_access = list(access_security)
req_access = list(GLOB.access_security)
icon_state = "sec"
/obj/structure/closet/secure_closet/security/New()
/obj/structure/closet/secure_closet/security/PopulateContents()
..()
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/head/helmet/sec(src)
@@ -123,47 +123,47 @@
/obj/structure/closet/secure_closet/security/sec
/obj/structure/closet/secure_closet/security/sec/New()
/obj/structure/closet/secure_closet/security/sec/PopulateContents()
..()
new /obj/item/weapon/storage/belt/security/full(src)
/obj/structure/closet/secure_closet/security/cargo
/obj/structure/closet/secure_closet/security/cargo/New()
/obj/structure/closet/secure_closet/security/cargo/PopulateContents()
..()
new /obj/item/clothing/tie/armband/cargo(src)
new /obj/item/device/encryptionkey/headset_cargo(src)
/obj/structure/closet/secure_closet/security/engine
/obj/structure/closet/secure_closet/security/engine/New()
/obj/structure/closet/secure_closet/security/engine/PopulateContents()
..()
new /obj/item/clothing/tie/armband/engine(src)
new /obj/item/device/encryptionkey/headset_eng(src)
/obj/structure/closet/secure_closet/security/science
/obj/structure/closet/secure_closet/security/science/New()
/obj/structure/closet/secure_closet/security/science/PopulateContents()
..()
new /obj/item/clothing/tie/armband/science(src)
new /obj/item/device/encryptionkey/headset_sci(src)
/obj/structure/closet/secure_closet/security/med
/obj/structure/closet/secure_closet/security/med/New()
/obj/structure/closet/secure_closet/security/med/PopulateContents()
..()
new /obj/item/clothing/tie/armband/medblue(src)
new /obj/item/device/encryptionkey/headset_med(src)
/obj/structure/closet/secure_closet/detective
name = "\proper detective's cabinet"
req_access = list(access_forensics_lockers)
req_access = list(GLOB.access_forensics_lockers)
icon_state = "cabinet"
resistance_flags = FLAMMABLE
obj_integrity = 70
max_integrity = 70
/obj/structure/closet/secure_closet/detective/New()
/obj/structure/closet/secure_closet/detective/PopulateContents()
..()
new /obj/item/clothing/under/rank/det(src)
new /obj/item/clothing/suit/det_suit(src)
@@ -185,29 +185,29 @@
/obj/structure/closet/secure_closet/injection
name = "lethal injections"
req_access = list(access_hos)
req_access = list(GLOB.access_hos)
/obj/structure/closet/secure_closet/injection/New()
/obj/structure/closet/secure_closet/injection/PopulateContents()
..()
for(var/i in 1 to 5)
new /obj/item/weapon/reagent_containers/syringe/lethal/execution(src)
/obj/structure/closet/secure_closet/brig
name = "brig locker"
req_access = list(access_brig)
req_access = list(GLOB.access_brig)
anchored = 1
var/id = null
/obj/structure/closet/secure_closet/brig/New()
/obj/structure/closet/secure_closet/brig/PopulateContents()
..()
new /obj/item/clothing/under/rank/prisoner( src )
new /obj/item/clothing/shoes/sneakers/orange( src )
/obj/structure/closet/secure_closet/courtroom
name = "courtroom locker"
req_access = list(access_court)
req_access = list(GLOB.access_court)
/obj/structure/closet/secure_closet/courtroom/New()
/obj/structure/closet/secure_closet/courtroom/PopulateContents()
..()
new /obj/item/clothing/shoes/sneakers/brown(src)
for(var/i in 1 to 3)
@@ -219,10 +219,10 @@
/obj/structure/closet/secure_closet/armory1
name = "armory armor locker"
req_access = list(access_armory)
req_access = list(GLOB.access_armory)
icon_state = "armory"
/obj/structure/closet/secure_closet/armory1/New()
/obj/structure/closet/secure_closet/armory1/PopulateContents()
..()
new /obj/item/clothing/suit/armor/laserproof(src)
for(var/i in 1 to 3)
@@ -234,10 +234,10 @@
/obj/structure/closet/secure_closet/armory2
name = "armory ballistics locker"
req_access = list(access_armory)
req_access = list(GLOB.access_armory)
icon_state = "armory"
/obj/structure/closet/secure_closet/armory2/New()
/obj/structure/closet/secure_closet/armory2/PopulateContents()
..()
new /obj/item/weapon/storage/box/firingpins(src)
for(var/i in 1 to 3)
@@ -247,10 +247,10 @@
/obj/structure/closet/secure_closet/armory3
name = "armory energy gun locker"
req_access = list(access_armory)
req_access = list(GLOB.access_armory)
icon_state = "armory"
/obj/structure/closet/secure_closet/armory3/New()
/obj/structure/closet/secure_closet/armory3/PopulateContents()
..()
new /obj/item/weapon/storage/box/firingpins(src)
new /obj/item/weapon/gun/energy/ionrifle(src)
@@ -261,10 +261,10 @@
/obj/structure/closet/secure_closet/tac
name = "armory tac locker"
req_access = list(access_armory)
req_access = list(GLOB.access_armory)
icon_state = "tac"
/obj/structure/closet/secure_closet/tac/New()
/obj/structure/closet/secure_closet/tac/PopulateContents()
..()
new /obj/item/weapon/gun/ballistic/automatic/wt550(src)
new /obj/item/clothing/head/helmet/alt(src)
@@ -273,10 +273,10 @@
/obj/structure/closet/secure_closet/lethalshots
name = "shotgun lethal rounds"
req_access = list(access_armory)
req_access = list(GLOB.access_armory)
icon_state = "tac"
/obj/structure/closet/secure_closet/lethalshots/New()
/obj/structure/closet/secure_closet/lethalshots/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/weapon/storage/box/lethalshot(src)
@@ -1,107 +0,0 @@
/obj/structure/statue/petrified
name = "statue"
desc = "An incredibly lifelike marble carving."
icon_state = "human_male"
density = 1
anchored = 1
obj_integrity = 200
max_integrity = 200
var/timer = 240 //eventually the person will be freed
var/mob/living/petrified_mob
/obj/structure/statue/petrified/New(loc, mob/living/L, statue_timer)
if(statue_timer)
timer = statue_timer
if(L)
petrified_mob = L
if(L.buckled)
L.buckled.unbuckle_mob(L,force=1)
L.visible_message("<span class='warning'>[L]'s skin rapidly turns to marble!</span>", "<span class='userdanger'>Your body freezes up! Can't... move... can't... think...</span>")
L.forceMove(src)
L.disabilities |= MUTE
L.faction += "mimic" //Stops mimics from instaqdeling people in statues
L.status_flags |= GODMODE
obj_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues
max_integrity = obj_integrity
START_PROCESSING(SSobj, src)
..()
/obj/structure/statue/petrified/process()
if(!petrified_mob)
STOP_PROCESSING(SSobj, src)
timer--
petrified_mob.Stun(2) //So they can't do anything while petrified
if(timer <= 0)
STOP_PROCESSING(SSobj, src)
qdel(src)
/obj/structure/statue/petrified/contents_explosion(severity, target)
return
/obj/structure/statue/petrified/handle_atom_del(atom/A)
if(A == petrified_mob)
petrified_mob = null
/obj/structure/statue/petrified/Destroy()
if(istype(src.loc, /mob/living/simple_animal/hostile/statue))
var/mob/living/simple_animal/hostile/statue/S = src.loc
forceMove(S.loc)
if(S.mind)
if(petrified_mob)
S.mind.transfer_to(petrified_mob)
petrified_mob.Weaken(5)
to_chat(petrified_mob, "<span class='notice'>You slowly come back to your senses. You are in control of yourself again!</span>")
qdel(S)
for(var/obj/O in src)
O.forceMove(loc)
if(petrified_mob)
petrified_mob.status_flags &= ~GODMODE
petrified_mob.forceMove(loc)
petrified_mob.disabilities &= ~MUTE
petrified_mob.take_overall_damage((petrified_mob.health - obj_integrity + 100)) //any new damage the statue incurred is transfered to the mob
petrified_mob.faction -= "mimic"
petrified_mob = null
return ..()
/obj/structure/statue/petrified/deconstruct(disassembled = TRUE)
if(!disassembled)
if(petrified_mob)
petrified_mob.dust()
visible_message("<span class='danger'>[src] shatters!.</span>")
qdel(src)
/mob/proc/petrify(statue_timer)
/mob/living/carbon/human/petrify(statue_timer)
if(!isturf(loc))
return 0
var/obj/structure/statue/petrified/S = new(loc, src, statue_timer)
S.name = "statue of [name]"
bleedsuppress = 1
S.icon = icon
S.icon_state = icon_state
S.copy_overlays(overlays)
var/newcolor = list(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
S.add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY)
return 1
/mob/living/carbon/monkey/petrify(statue_timer)
if(!isturf(loc))
return 0
var/obj/structure/statue/petrified/S = new(loc, src, statue_timer)
S.name = "statue of a monkey"
S.icon_state = "monkey"
return 1
/mob/living/simple_animal/pet/dog/corgi/petrify(statue_timer)
if(!isturf(loc))
return 0
var/obj/structure/statue/petrified/S = new (loc, src, statue_timer)
S.name = "statue of a corgi"
S.icon_state = "corgi"
S.desc = "If it takes forever, I will wait for you..."
return 1
@@ -6,7 +6,7 @@
/obj/structure/closet/syndicate/personal
desc = "It's a personal storage unit for operative gear."
/obj/structure/closet/syndicate/personal/New()
/obj/structure/closet/syndicate/personal/PopulateContents()
..()
new /obj/item/clothing/under/syndicate(src)
new /obj/item/clothing/shoes/sneakers/black(src)
@@ -20,9 +20,7 @@
/obj/structure/closet/syndicate/nuclear
desc = "It's a storage unit for a Syndicate boarding party."
/obj/structure/closet/syndicate/nuclear/New()
..()
contents = list()
/obj/structure/closet/syndicate/nuclear/PopulateContents()
for(var/i in 1 to 5)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/weapon/storage/box/flashbangs(src)
@@ -34,7 +32,7 @@
/obj/structure/closet/syndicate/resources
desc = "An old, dusty locker."
/obj/structure/closet/syndicate/resources/New()
/obj/structure/closet/syndicate/resources/PopulateContents()
..()
var/common_min = 30 //Minimum amount of minerals in the stack for common minerals
var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals
@@ -99,9 +97,7 @@
/obj/structure/closet/syndicate/resources/everything
desc = "It's an emergency storage closet for repairs."
/obj/structure/closet/syndicate/resources/everything/New()
..()
contents = list()
/obj/structure/closet/syndicate/resources/everything/PopulateContents()
var/list/resources = list(
/obj/item/stack/sheet/metal,
/obj/item/stack/sheet/glass,
@@ -17,7 +17,7 @@
desc = "It's a storage unit for emergency breath masks and O2 tanks."
icon_state = "emergency"
/obj/structure/closet/emcloset/New()
/obj/structure/closet/emcloset/PopulateContents()
..()
if (prob(40))
@@ -63,7 +63,7 @@
desc = "It's a storage unit for fire-fighting supplies."
icon_state = "fire"
/obj/structure/closet/firecloset/New()
/obj/structure/closet/firecloset/PopulateContents()
..()
new /obj/item/clothing/suit/fire/firefighter(src)
@@ -72,10 +72,7 @@
new /obj/item/weapon/extinguisher(src)
new /obj/item/clothing/head/hardhat/red(src)
/obj/structure/closet/firecloset/full/New()
..()
contents = list()
/obj/structure/closet/firecloset/full/PopulateContents()
new /obj/item/clothing/suit/fire/firefighter(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/device/flashlight(src)
@@ -92,7 +89,7 @@
icon_state = "eng"
icon_door = "eng_tool"
/obj/structure/closet/toolcloset/New()
/obj/structure/closet/toolcloset/PopulateContents()
..()
if(prob(40))
new /obj/item/clothing/suit/hazardvest(src)
@@ -135,7 +132,7 @@
icon_state = "eng"
icon_door = "eng_rad"
/obj/structure/closet/radiation/New()
/obj/structure/closet/radiation/PopulateContents()
..()
new /obj/item/device/geiger_counter(src)
new /obj/item/clothing/suit/radiation(src)
@@ -149,7 +146,7 @@
desc = "It's a storage unit for explosion-protective suits."
icon_state = "bomb"
/obj/structure/closet/bombcloset/New()
/obj/structure/closet/bombcloset/PopulateContents()
..()
new /obj/item/clothing/suit/bomb_suit( src )
new /obj/item/clothing/under/color/black( src )
@@ -162,9 +159,7 @@
desc = "It's a storage unit for explosion-protective suits."
icon_state = "bomb"
/obj/structure/closet/bombclosetsecurity/New()
..()
contents = list()
/obj/structure/closet/bombclosetsecurity/PopulateContents()
new /obj/item/clothing/suit/bomb_suit/security( src )
new /obj/item/clothing/under/rank/security( src )
new /obj/item/clothing/shoes/sneakers/brown( src )
@@ -176,7 +171,7 @@
/obj/structure/closet/ammunitionlocker
name = "ammunition locker"
/obj/structure/closet/ammunitionlocker/New()
/obj/structure/closet/ammunitionlocker/PopulateContents()
..()
for(var/i in 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
@@ -3,7 +3,7 @@
desc = "It's a storage unit for standard-issue Nanotrasen attire."
icon_door = "blue"
/obj/structure/closet/wardrobe/New()
/obj/structure/closet/wardrobe/PopulateContents()
..()
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/blue(src)
@@ -15,9 +15,7 @@
name = "pink wardrobe"
icon_door = "pink"
/obj/structure/closet/wardrobe/pink/New()
..()
contents = list()
/obj/structure/closet/wardrobe/pink/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/pink(src)
for(var/i in 1 to 3)
@@ -28,9 +26,7 @@
name = "black wardrobe"
icon_door = "black"
/obj/structure/closet/wardrobe/black/New()
..()
contents = list()
/obj/structure/closet/wardrobe/black/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/black(src)
if(prob(25))
@@ -54,9 +50,7 @@
name = "green wardrobe"
icon_door = "green"
/obj/structure/closet/wardrobe/green/New()
..()
contents = list()
/obj/structure/closet/wardrobe/green/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/green(src)
for(var/i in 1 to 3)
@@ -71,9 +65,7 @@
desc = "It's a storage unit for Nanotrasen-regulation prisoner attire."
icon_door = "orange"
/obj/structure/closet/wardrobe/orange/New()
..()
contents = list()
/obj/structure/closet/wardrobe/orange/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/prisoner(src)
for(var/i in 1 to 3)
@@ -85,9 +77,7 @@
name = "yellow wardrobe"
icon_door = "yellow"
/obj/structure/closet/wardrobe/yellow/New()
..()
contents = list()
/obj/structure/closet/wardrobe/yellow/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/yellow(src)
for(var/i in 1 to 3)
@@ -101,9 +91,7 @@
name = "white wardrobe"
icon_door = "white"
/obj/structure/closet/wardrobe/white/New()
..()
contents = list()
/obj/structure/closet/wardrobe/white/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/white(src)
for(var/i in 1 to 3)
@@ -116,9 +104,7 @@
name = "pajama wardrobe"
icon_door = "white"
/obj/structure/closet/wardrobe/pjs/New()
..()
contents = list()
/obj/structure/closet/wardrobe/pjs/PopulateContents()
new /obj/item/clothing/under/pj/red(src)
new /obj/item/clothing/under/pj/red(src)
new /obj/item/clothing/under/pj/blue(src)
@@ -132,9 +118,7 @@
name = "grey wardrobe"
icon_door = "grey"
/obj/structure/closet/wardrobe/grey/New()
..()
contents = list()
/obj/structure/closet/wardrobe/grey/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/grey(src)
for(var/i in 1 to 3)
@@ -160,9 +144,7 @@
name = "mixed wardrobe"
icon_door = "mixed"
/obj/structure/closet/wardrobe/mixed/New()
..()
contents = list()
/obj/structure/closet/wardrobe/mixed/PopulateContents()
if(prob(40))
new /obj/item/clothing/suit/jacket(src)
if(prob(40))
@@ -85,7 +85,7 @@
name = "blood freezer"
desc = "A freezer containing packs of blood."
/obj/structure/closet/crate/freezer/blood/New()
/obj/structure/closet/crate/freezer/blood/PopulateContents()
. = ..()
new /obj/item/weapon/reagent_containers/blood/empty(src)
new /obj/item/weapon/reagent_containers/blood/empty(src)
@@ -102,7 +102,7 @@
name = "surplus prosthetic limbs"
desc = "A crate containing an assortment of cheap prosthetic limbs."
/obj/structure/closet/crate/freezer/surplus_limbs/New()
/obj/structure/closet/crate/freezer/surplus_limbs/PopulateContents()
. = ..()
new /obj/item/bodypart/l_arm/robot/surplus(src)
new /obj/item/bodypart/l_arm/robot/surplus(src)
@@ -135,7 +135,7 @@
name = "\improper RCD crate"
icon_state = "engi_crate"
/obj/structure/closet/crate/rcd/New()
/obj/structure/closet/crate/rcd/PopulateContents()
..()
for(var/i in 1 to 4)
new /obj/item/weapon/rcd_ammo(src)
@@ -33,7 +33,7 @@
if(user)
to_chat(user, "<span class='danger'>The crate's anti-tamper system activates!</span>")
var/message = "[ADMIN_LOOKUPFLW(user)] has detonated [src.name]."
bombers += message
GLOB.bombers += message
message_admins(message)
log_game("[key_name(user)] has detonated [src.name].")
for(var/atom/movable/AM in src)