diff --git a/code/game/objects/explosion2.dm b/code/WorkInProgress/carn/Explosion2.dm
similarity index 100%
rename from code/game/objects/explosion2.dm
rename to code/WorkInProgress/carn/Explosion2.dm
diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm
index 9d2fb25d00f..3ba5796fd5c 100644
--- a/code/defines/obj/supplypacks.dm
+++ b/code/defines/obj/supplypacks.dm
@@ -5,568 +5,590 @@
//BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle.
//NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points.
+/datum/supply_packs
+ var/name = null
+ var/list/contains = list()
+ var/manifest
+ var/amount = null
+ var/cost = null
+ var/containertype = null
+ var/containername = null
+ var/access = null
+ var/hidden = 0
+ var/contraband = 0
+
+/datum/supply_packs/New()
+ manifest = "
"
+ for(var/path in contains)
+ if(!path) continue
+ var/atom/movable/AM = new path()
+ manifest += "- [AM.name]
"
+ AM.loc = null //just to make sure they're deleted by the garbage collector
+ manifest += "
"
+
/datum/supply_packs/specialops
name = "Special Ops supplies"
- contains = list("/obj/item/weapon/storage/emp_kit",
- "/obj/item/weapon/smokebomb",
- "/obj/item/weapon/smokebomb",
- "/obj/item/weapon/smokebomb",
- "/obj/item/weapon/pen/paralysis",
- "/obj/item/weapon/grenade/chem_grenade/incendiary")
+ contains = list(/obj/item/weapon/storage/emp_kit,
+ /obj/item/weapon/grenade/smokebomb,
+ /obj/item/weapon/grenade/smokebomb,
+ /obj/item/weapon/grenade/smokebomb,
+ /obj/item/weapon/pen/paralysis,
+ /obj/item/weapon/grenade/chem_grenade/incendiary)
cost = 20
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Special Ops crate"
hidden = 1
/datum/supply_packs/food
name = "Food crate"
- contains = list("/obj/item/weapon/reagent_containers/food/snacks/flour",
- "/obj/item/weapon/reagent_containers/food/snacks/flour",
- "/obj/item/weapon/reagent_containers/food/snacks/flour",
- "/obj/item/weapon/reagent_containers/food/snacks/flour",
- "/obj/item/weapon/reagent_containers/food/snacks/flour",
- "/obj/item/weapon/reagent_containers/food/drinks/milk",
- "/obj/item/weapon/reagent_containers/food/drinks/milk",
- "/obj/item/weapon/storage/fancy/egg_box",
- "/obj/item/weapon/reagent_containers/food/condiment/enzyme",
- "/obj/item/weapon/reagent_containers/food/snacks/grown/banana",
- "/obj/item/weapon/reagent_containers/food/snacks/grown/banana",
- "/obj/item/weapon/reagent_containers/food/snacks/grown/banana")
+ contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour,
+ /obj/item/weapon/reagent_containers/food/snacks/flour,
+ /obj/item/weapon/reagent_containers/food/snacks/flour,
+ /obj/item/weapon/reagent_containers/food/snacks/flour,
+ /obj/item/weapon/reagent_containers/food/snacks/flour,
+ /obj/item/weapon/reagent_containers/food/drinks/milk,
+ /obj/item/weapon/reagent_containers/food/drinks/milk,
+ /obj/item/weapon/storage/fancy/egg_box,
+ /obj/item/weapon/reagent_containers/food/condiment/enzyme,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/banana,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/banana,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/banana)
cost = 10
- containertype = "/obj/structure/closet/crate/freezer"
+ containertype = /obj/structure/closet/crate/freezer
containername = "Food crate"
/datum/supply_packs/monkey
name = "Monkey crate"
- contains = list ("/obj/item/weapon/storage/monkeycube_box")
+ contains = list (/obj/item/weapon/storage/monkeycube_box)
cost = 20
- containertype = "/obj/structure/closet/crate/freezer"
+ containertype = /obj/structure/closet/crate/freezer
containername = "Monkey crate"
/datum/supply_packs/beanbagammo
name = "Beanbag shells"
- contains = list("/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag",
- "/obj/item/ammo_casing/shotgun/beanbag")
+ contains = list(/obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag,
+ /obj/item/ammo_casing/shotgun/beanbag)
cost = 10
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Beanbag shells"
/datum/supply_packs/toner
name = "Toner Cartridges"
- contains = list("/obj/item/device/toner",
- "/obj/item/device/toner",
- "/obj/item/device/toner",
- "/obj/item/device/toner",
- "/obj/item/device/toner",
- "/obj/item/device/toner")
+ contains = list(/obj/item/device/toner,
+ /obj/item/device/toner,
+ /obj/item/device/toner,
+ /obj/item/device/toner,
+ /obj/item/device/toner,
+ /obj/item/device/toner)
cost = 10
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Toner Cartridges"
/datum/supply_packs/party
name = "Party equipment"
- contains = list("/obj/item/weapon/storage/drinkingglasses",
- "/obj/item/weapon/reagent_containers/food/drinks/shaker",
- "/obj/item/weapon/reagent_containers/food/drinks/bottle/patron",
- "/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager",
- "/obj/item/weapon/reagent_containers/food/drinks/ale",
- "/obj/item/weapon/reagent_containers/food/drinks/ale",
- "/obj/item/weapon/reagent_containers/food/drinks/beer",
- "/obj/item/weapon/reagent_containers/food/drinks/beer",
- "/obj/item/weapon/reagent_containers/food/drinks/beer",
- "/obj/item/weapon/reagent_containers/food/drinks/beer")
+ contains = list(/obj/item/weapon/storage/drinkingglasses,
+ /obj/item/weapon/reagent_containers/food/drinks/shaker,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/patron,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager,
+ /obj/item/weapon/reagent_containers/food/drinks/ale,
+ /obj/item/weapon/reagent_containers/food/drinks/ale,
+ /obj/item/weapon/reagent_containers/food/drinks/beer,
+ /obj/item/weapon/reagent_containers/food/drinks/beer,
+ /obj/item/weapon/reagent_containers/food/drinks/beer,
+ /obj/item/weapon/reagent_containers/food/drinks/beer)
cost = 20
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Party equipment"
/datum/supply_packs/internals
name = "Internals crate"
- contains = list("/obj/item/clothing/mask/gas",
- "/obj/item/clothing/mask/gas",
- "/obj/item/clothing/mask/gas",
- "/obj/item/weapon/tank/air",
- "/obj/item/weapon/tank/air",
- "/obj/item/weapon/tank/air")
+ contains = list(/obj/item/clothing/mask/gas,
+ /obj/item/clothing/mask/gas,
+ /obj/item/clothing/mask/gas,
+ /obj/item/weapon/tank/air,
+ /obj/item/weapon/tank/air,
+ /obj/item/weapon/tank/air)
cost = 10
- containertype = "/obj/structure/closet/crate/internals"
+ containertype = /obj/structure/closet/crate/internals
containername = "Internals crate"
/datum/supply_packs/evacuation
name = "Emergency equipment"
- contains = list("/obj/machinery/bot/floorbot",
- "/obj/machinery/bot/floorbot",
- "/obj/machinery/bot/medbot",
- "/obj/machinery/bot/medbot",
- "/obj/item/weapon/tank/air",
- "/obj/item/weapon/tank/air",
- "/obj/item/weapon/tank/air",
- "/obj/item/weapon/tank/air",
- "/obj/item/weapon/tank/air",
- "/obj/item/clothing/mask/gas",
- "/obj/item/clothing/mask/gas",
- "/obj/item/clothing/mask/gas",
- "/obj/item/clothing/mask/gas",
- "/obj/item/clothing/mask/gas")
+ contains = list(/obj/machinery/bot/floorbot,
+ /obj/machinery/bot/floorbot,
+ /obj/machinery/bot/medbot,
+ /obj/machinery/bot/medbot,
+ /obj/item/weapon/tank/air,
+ /obj/item/weapon/tank/air,
+ /obj/item/weapon/tank/air,
+ /obj/item/weapon/tank/air,
+ /obj/item/weapon/tank/air,
+ /obj/item/clothing/mask/gas,
+ /obj/item/clothing/mask/gas,
+ /obj/item/clothing/mask/gas,
+ /obj/item/clothing/mask/gas,
+ /obj/item/clothing/mask/gas)
cost = 35
- containertype = "/obj/structure/closet/crate/internals"
+ containertype = /obj/structure/closet/crate/internals
containername = "Emergency Crate"
/datum/supply_packs/janitor
name = "Janitorial supplies"
- contains = list("/obj/item/weapon/reagent_containers/glass/bucket",
- "/obj/item/weapon/reagent_containers/glass/bucket",
- "/obj/item/weapon/reagent_containers/glass/bucket",
- "/obj/item/weapon/mop",
- "/obj/item/weapon/caution",
- "/obj/item/weapon/caution",
- "/obj/item/weapon/caution",
- "/obj/item/weapon/cleaner",
- "/obj/item/weapon/grenade/chem_grenade/cleaner",
- "/obj/item/weapon/grenade/chem_grenade/cleaner",
- "/obj/item/weapon/grenade/chem_grenade/cleaner",
- "/obj/structure/mopbucket")
+ contains = list(/obj/item/weapon/reagent_containers/glass/bucket,
+ /obj/item/weapon/reagent_containers/glass/bucket,
+ /obj/item/weapon/reagent_containers/glass/bucket,
+ /obj/item/weapon/mop,
+ /obj/item/weapon/caution,
+ /obj/item/weapon/caution,
+ /obj/item/weapon/caution,
+ /obj/item/weapon/reagent_containers/spray/cleaner,
+ /obj/item/weapon/reagent_containers/glass/rag,
+ /obj/item/weapon/grenade/chem_grenade/cleaner,
+ /obj/item/weapon/grenade/chem_grenade/cleaner,
+ /obj/item/weapon/grenade/chem_grenade/cleaner,
+ /obj/structure/mopbucket)
cost = 10
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Janitorial supplies"
/datum/supply_packs/lightbulbs
name = "Replacement lights"
- contains = list("/obj/item/weapon/storage/lightbox/mixed",
- "/obj/item/weapon/storage/lightbox/mixed",
- "/obj/item/weapon/storage/lightbox/mixed")
+ contains = list(/obj/item/weapon/storage/lightbox/mixed,
+ /obj/item/weapon/storage/lightbox/mixed,
+ /obj/item/weapon/storage/lightbox/mixed)
cost = 10
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Replacement lights"
/datum/supply_packs/costume
name = "Standard Costume crate"
- contains = list("/obj/item/weapon/storage/backpack/clown",
- "/obj/item/clothing/shoes/clown_shoes",
- "/obj/item/clothing/mask/gas/clown_hat",
- "/obj/item/clothing/under/rank/clown",
- "/obj/item/weapon/bikehorn",
- "/obj/item/clothing/under/mime",
- "/obj/item/clothing/shoes/black",
- "/obj/item/clothing/gloves/white",
- "/obj/item/clothing/mask/gas/mime",
- "/obj/item/clothing/head/beret",
- "/obj/item/clothing/suit/suspenders",
- "/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing")
+ contains = list(/obj/item/weapon/storage/backpack/clown,
+ /obj/item/clothing/shoes/clown_shoes,
+ /obj/item/clothing/mask/gas/clown_hat,
+ /obj/item/clothing/under/rank/clown,
+ /obj/item/weapon/bikehorn,
+ /obj/item/clothing/under/mime,
+ /obj/item/clothing/shoes/black,
+ /obj/item/clothing/gloves/white,
+ /obj/item/clothing/mask/gas/mime,
+ /obj/item/clothing/head/beret,
+ /obj/item/clothing/suit/suspenders,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing)
cost = 10
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Standard Costumes"
access = access_theatre
/datum/supply_packs/wizard
name = "Wizard costume"
- contains = list("/obj/item/weapon/staff",
- "/obj/item/clothing/suit/wizrobe/fake",
- "/obj/item/clothing/shoes/sandal",
- "/obj/item/clothing/head/wizard/fake")
+ contains = list(/obj/item/weapon/staff,
+ /obj/item/clothing/suit/wizrobe/fake,
+ /obj/item/clothing/shoes/sandal,
+ /obj/item/clothing/head/wizard/fake)
cost = 20
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Wizard costume crate"
/datum/supply_packs/mule
name = "MULEbot Crate"
- contains = list("/obj/machinery/bot/mulebot")
+ contains = list(/obj/machinery/bot/mulebot)
cost = 20
- containertype = "/obj/structure/largecrate/mule"
+ containertype = /obj/structure/largecrate/mule
containername = "MULEbot Crate"
/datum/supply_packs/hydroponics // -- Skie
name = "Hydroponics Supply Crate"
- contains = list("/obj/item/weapon/plantbgone",
- "/obj/item/weapon/plantbgone",
- "/obj/item/weapon/plantbgone",
- "/obj/item/weapon/plantbgone",
- "/obj/item/weapon/hatchet",
- "/obj/item/weapon/minihoe",
- "/obj/item/device/analyzer/plant_analyzer",
- "/obj/item/clothing/gloves/botanic_leather",
- "/obj/item/clothing/suit/apron") // Updated with new things
- cost = 10
- containertype = "/obj/structure/closet/crate/hydroponics"
+ contains = list(/obj/item/weapon/reagent_containers/spray/plantbgone,
+ /obj/item/weapon/reagent_containers/spray/plantbgone,
+ /obj/item/weapon/reagent_containers/glass/bottle/ammonia,
+ /obj/item/weapon/reagent_containers/glass/bottle/ammonia,
+ /obj/item/weapon/hatchet,
+ /obj/item/weapon/minihoe,
+ /obj/item/device/analyzer/plant_analyzer,
+ /obj/item/clothing/gloves/botanic_leather,
+ /obj/item/clothing/suit/apron) // Updated with new things
+ cost = 15
+ containertype = /obj/structure/closet/crate/hydroponics
containername = "Hydroponics crate"
access = access_hydroponics
/datum/supply_packs/seeds
name = "Seeds Crate"
- contains = list("/obj/item/seeds/chiliseed",
- "/obj/item/seeds/berryseed",
- "/obj/item/seeds/cornseed",
- "/obj/item/seeds/eggplantseed",
- "/obj/item/seeds/tomatoseed",
- "/obj/item/seeds/soyaseed",
- "/obj/item/seeds/wheatseed",
- "/obj/item/seeds/carrotseed",
- "/obj/item/seeds/sunflowerseed",
- "/obj/item/seeds/chantermycelium",
- "/obj/item/seeds/potatoseed",
- "/obj/item/seeds/sugarcaneseed")
+ contains = list(/obj/item/seeds/chiliseed,
+ /obj/item/seeds/berryseed,
+ /obj/item/seeds/cornseed,
+ /obj/item/seeds/eggplantseed,
+ /obj/item/seeds/tomatoseed,
+ /obj/item/seeds/soyaseed,
+ /obj/item/seeds/wheatseed,
+ /obj/item/seeds/carrotseed,
+ /obj/item/seeds/sunflowerseed,
+ /obj/item/seeds/chantermycelium,
+ /obj/item/seeds/potatoseed,
+ /obj/item/seeds/sugarcaneseed)
cost = 10
- containertype = "/obj/structure/closet/crate/hydroponics"
+ containertype = /obj/structure/closet/crate/hydroponics
containername = "Seeds crate"
access = access_hydroponics
/datum/supply_packs/exoticseeds
name = "Exotic Seeds Crate"
- contains = list("/obj/item/seeds/nettleseed",
- "/obj/item/seeds/replicapod",
- "/obj/item/seeds/replicapod",
- "/obj/item/seeds/replicapod",
- "/obj/item/seeds/plumpmycelium",
- "/obj/item/seeds/libertymycelium",
- "/obj/item/seeds/amanitamycelium",
- "/obj/item/seeds/reishimycelium",
- "/obj/item/seeds/bananaseed",
- "/obj/item/seeds/eggyseed")
+ contains = list(/obj/item/seeds/nettleseed,
+ /obj/item/seeds/replicapod,
+ /obj/item/seeds/replicapod,
+ /obj/item/seeds/replicapod,
+ /obj/item/seeds/plumpmycelium,
+ /obj/item/seeds/libertymycelium,
+ /obj/item/seeds/amanitamycelium,
+ /obj/item/seeds/reishimycelium,
+ /obj/item/seeds/bananaseed,
+ /obj/item/seeds/eggyseed)
cost = 15
- containertype = "/obj/structure/closet/crate/hydroponics"
+ containertype = /obj/structure/closet/crate/hydroponics
containername = "Exotic Seeds crate"
access = access_hydroponics
/datum/supply_packs/medical
name = "Medical crate"
- contains = list("/obj/item/weapon/storage/firstaid/regular",
- "/obj/item/weapon/storage/firstaid/fire",
- "/obj/item/weapon/storage/firstaid/toxin",
- "/obj/item/weapon/storage/firstaid/o2",
- "/obj/item/weapon/reagent_containers/glass/bottle/antitoxin",
- "/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline",
- "/obj/item/weapon/reagent_containers/glass/bottle/stoxin",
- "/obj/item/weapon/storage/syringes")
+ contains = list(/obj/item/weapon/storage/firstaid/regular,
+ /obj/item/weapon/storage/firstaid/fire,
+ /obj/item/weapon/storage/firstaid/toxin,
+ /obj/item/weapon/storage/firstaid/o2,
+ /obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
+ /obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,
+ /obj/item/weapon/reagent_containers/glass/bottle/stoxin,
+ /obj/item/weapon/storage/syringes)
cost = 10
- containertype = "/obj/structure/closet/crate/medical"
+ containertype = /obj/structure/closet/crate/medical
containername = "Medical crate"
/datum/supply_packs/virus
name = "Virus crate"
- contains = list("/obj/item/weapon/reagent_containers/glass/bottle/flu_virion",
- "/obj/item/weapon/reagent_containers/glass/bottle/cold",
- "/obj/item/weapon/reagent_containers/glass/bottle/fake_gbs",
- "/obj/item/weapon/reagent_containers/glass/bottle/magnitis",
-// "/obj/item/weapon/reagent_containers/glass/bottle/wizarditis", worse than GBS if anything
-// "/obj/item/weapon/reagent_containers/glass/bottle/gbs", No. Just no.
- "/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat",
- "/obj/item/weapon/reagent_containers/glass/bottle/brainrot",
- "/obj/item/weapon/storage/syringes",
- "/obj/item/weapon/storage/beakerbox")
+ contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,
+ /obj/item/weapon/reagent_containers/glass/bottle/cold,
+ /obj/item/weapon/reagent_containers/glass/bottle/fake_gbs,
+ /obj/item/weapon/reagent_containers/glass/bottle/magnitis,
+// /obj/item/weapon/reagent_containers/glass/bottle/wizarditis, worse than GBS if anything
+// /obj/item/weapon/reagent_containers/glass/bottle/gbs, No. Just no.
+ /obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat,
+ /obj/item/weapon/reagent_containers/glass/bottle/brainrot,
+ /obj/item/weapon/storage/syringes,
+ /obj/item/weapon/storage/beakerbox)
cost = 20
- containertype = "/obj/structure/closet/crate/secure/weapon"
+ containertype = /obj/structure/closet/crate/secure/weapon
containername = "Virus crate"
access = access_cmo
/datum/supply_packs/metal50
name = "50 Metal Sheets"
- contains = list("/obj/item/stack/sheet/metal")
+ contains = list(/obj/item/stack/sheet/metal)
amount = 50
cost = 10
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Metal sheets crate"
/datum/supply_packs/glass50
name = "50 Glass Sheets"
- contains = list("/obj/item/stack/sheet/glass")
+ contains = list(/obj/item/stack/sheet/glass)
amount = 50
cost = 10
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Glass sheets crate"
/datum/supply_packs/electrical
name = "Electrical maintenance crate"
- contains = list("/obj/item/weapon/storage/toolbox/electrical",
- "/obj/item/weapon/storage/toolbox/electrical",
- "/obj/item/clothing/gloves/yellow",
- "/obj/item/clothing/gloves/yellow",
- "/obj/item/weapon/cell",
- "/obj/item/weapon/cell",
- "/obj/item/weapon/cell/high",
- "/obj/item/weapon/cell/high")
+ contains = list(/obj/item/weapon/storage/toolbox/electrical,
+ /obj/item/weapon/storage/toolbox/electrical,
+ /obj/item/clothing/gloves/yellow,
+ /obj/item/clothing/gloves/yellow,
+ /obj/item/weapon/cell,
+ /obj/item/weapon/cell,
+ /obj/item/weapon/cell/high,
+ /obj/item/weapon/cell/high)
cost = 15
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Electrical maintenance crate"
/datum/supply_packs/mechanical
name = "Mechanical maintenance crate"
- contains = list("/obj/item/weapon/storage/belt/utility/full",
- "/obj/item/weapon/storage/belt/utility/full",
- "/obj/item/weapon/storage/belt/utility/full",
- "/obj/item/clothing/suit/hazardvest",
- "/obj/item/clothing/suit/hazardvest",
- "/obj/item/clothing/suit/hazardvest",
- "/obj/item/clothing/head/welding",
- "/obj/item/clothing/head/welding",
- "/obj/item/clothing/head/hardhat")
+ contains = list(/obj/item/weapon/storage/belt/utility/full,
+ /obj/item/weapon/storage/belt/utility/full,
+ /obj/item/weapon/storage/belt/utility/full,
+ /obj/item/clothing/suit/hazardvest,
+ /obj/item/clothing/suit/hazardvest,
+ /obj/item/clothing/suit/hazardvest,
+ /obj/item/clothing/head/welding,
+ /obj/item/clothing/head/welding,
+ /obj/item/clothing/head/hardhat)
cost = 10
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Mechanical maintenance crate"
/datum/supply_packs/watertank
name = "Water tank crate"
- contains = list("/obj/structure/reagent_dispensers/watertank")
+ contains = list(/obj/structure/reagent_dispensers/watertank)
cost = 8
- containertype = "/obj/structure/largecrate"
+ containertype = /obj/structure/largecrate
containername = "water tank crate"
/datum/supply_packs/fueltank
name = "Fuel tank crate"
- contains = list("/obj/structure/reagent_dispensers/fueltank")
+ contains = list(/obj/structure/reagent_dispensers/fueltank)
cost = 8
- containertype = "/obj/structure/largecrate"
+ containertype = /obj/structure/largecrate
containername = "fuel tank crate"
/datum/supply_packs/engine
name = "Emitter crate"
- contains = list("/obj/machinery/emitter",
- "/obj/machinery/emitter",)
+ contains = list(/obj/machinery/emitter,
+ /obj/machinery/emitter)
cost = 10
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Emitter crate"
access = access_heads
/datum/supply_packs/engine/field_gen
name = "Field Generator crate"
- contains = list("/obj/machinery/field_generator",
- "/obj/machinery/field_generator",)
+ contains = list(/obj/machinery/field_generator,
+ /obj/machinery/field_generator)
containername = "Field Generator crate"
/datum/supply_packs/engine/sing_gen
name = "Singularity Generator crate"
- contains = list("/obj/machinery/the_singularitygen")
+ contains = list(/obj/machinery/the_singularitygen)
containername = "Singularity Generator crate"
/datum/supply_packs/engine/collector
name = "Collector crate"
- contains = list("/obj/machinery/power/rad_collector",
- "/obj/machinery/power/rad_collector",
- "/obj/machinery/power/rad_collector")
+ contains = list(/obj/machinery/power/rad_collector,
+ /obj/machinery/power/rad_collector,
+ /obj/machinery/power/rad_collector)
containername = "Collector crate"
/datum/supply_packs/engine/PA
name = "Particle Accelerator crate"
cost = 40
- contains = list("/obj/structure/particle_accelerator/fuel_chamber",
- "/obj/machinery/particle_accelerator/control_box",
- "/obj/structure/particle_accelerator/particle_emitter/center",
- "/obj/structure/particle_accelerator/particle_emitter/left",
- "/obj/structure/particle_accelerator/particle_emitter/right",
- "/obj/structure/particle_accelerator/power_box",
- "/obj/structure/particle_accelerator/end_cap")
+ contains = list(/obj/structure/particle_accelerator/fuel_chamber,
+ /obj/machinery/particle_accelerator/control_box,
+ /obj/structure/particle_accelerator/particle_emitter/center,
+ /obj/structure/particle_accelerator/particle_emitter/left,
+ /obj/structure/particle_accelerator/particle_emitter/right,
+ /obj/structure/particle_accelerator/power_box,
+ /obj/structure/particle_accelerator/end_cap)
containername = "Particle Accelerator crate"
/datum/supply_packs/mecha_ripley
name = "Circuit Crate (\"Ripley\" APLU)"
- contains = list("/obj/item/weapon/book/manual/ripley_build_and_repair",
- "/obj/item/weapon/circuitboard/mecha/ripley/main", //TEMPORARY due to lack of circuitboard printer
- "/obj/item/weapon/circuitboard/mecha/ripley/peripherals") //TEMPORARY due to lack of circuitboard printer
+ contains = list(/obj/item/weapon/book/manual/ripley_build_and_repair,
+ /obj/item/weapon/circuitboard/mecha/ripley/main, //TEMPORARY due to lack of circuitboard printer
+ /obj/item/weapon/circuitboard/mecha/ripley/peripherals) //TEMPORARY due to lack of circuitboard printer
cost = 30
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "APLU \"Ripley\" Circuit Crate"
access = access_robotics
/datum/supply_packs/mecha_odysseus
name = "Circuit Crate (\"Odysseus\")"
- contains = list("/obj/item/weapon/circuitboard/mecha/odysseus/peripherals", //TEMPORARY due to lack of circuitboard printer
- "/obj/item/weapon/circuitboard/mecha/odysseus/main") //TEMPORARY due to lack of circuitboard printer
+ contains = list(/obj/item/weapon/circuitboard/mecha/odysseus/peripherals, //TEMPORARY due to lack of circuitboard printer
+ /obj/item/weapon/circuitboard/mecha/odysseus/main) //TEMPORARY due to lack of circuitboard printer
cost = 25
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "\"Odysseus\" Circuit Crate"
access = access_robotics
/datum/supply_packs/robotics
name = "Robotics Assembly Crate"
- contains = list("/obj/item/device/assembly/prox_sensor",
- "/obj/item/device/assembly/prox_sensor",
- "/obj/item/device/assembly/prox_sensor",
- "/obj/item/weapon/storage/toolbox/electrical",
- "/obj/item/device/flash",
- "/obj/item/device/flash",
- "/obj/item/device/flash",
- "/obj/item/device/flash",
- "/obj/item/weapon/cell/high",
- "/obj/item/weapon/cell/high")
+ contains = list(/obj/item/device/assembly/prox_sensor,
+ /obj/item/device/assembly/prox_sensor,
+ /obj/item/device/assembly/prox_sensor,
+ /obj/item/weapon/storage/toolbox/electrical,
+ /obj/item/device/flash,
+ /obj/item/device/flash,
+ /obj/item/device/flash,
+ /obj/item/device/flash,
+ /obj/item/weapon/cell/high,
+ /obj/item/weapon/cell/high)
cost = 10
- containertype = "/obj/structure/closet/crate/secure/gear"
+ containertype = /obj/structure/closet/crate/secure/gear
containername = "Robotics Assembly"
access = access_robotics
/datum/supply_packs/plasma
name = "Plasma assembly crate"
- contains = list("/obj/item/weapon/tank/plasma",
- "/obj/item/weapon/tank/plasma",
- "/obj/item/weapon/tank/plasma",
- "/obj/item/device/assembly/igniter",
- "/obj/item/device/assembly/igniter",
- "/obj/item/device/assembly/igniter",
- "/obj/item/device/assembly/prox_sensor",
- "/obj/item/device/assembly/prox_sensor",
- "/obj/item/device/assembly/prox_sensor",
- "/obj/item/device/assembly/timer",
- "/obj/item/device/assembly/timer",
- "/obj/item/device/assembly/timer")
+ contains = list(/obj/item/weapon/tank/plasma,
+ /obj/item/weapon/tank/plasma,
+ /obj/item/weapon/tank/plasma,
+ /obj/item/device/assembly/igniter,
+ /obj/item/device/assembly/igniter,
+ /obj/item/device/assembly/igniter,
+ /obj/item/device/assembly/prox_sensor,
+ /obj/item/device/assembly/prox_sensor,
+ /obj/item/device/assembly/prox_sensor,
+ /obj/item/device/assembly/timer,
+ /obj/item/device/assembly/timer,
+ /obj/item/device/assembly/timer)
cost = 10
- containertype = "/obj/structure/closet/crate/secure/plasma"
+ containertype = /obj/structure/closet/crate/secure/plasma
containername = "Plasma assembly crate"
access = access_tox
/datum/supply_packs/weapons
name = "Weapons crate"
- contains = list("/obj/item/weapon/melee/baton",
- "/obj/item/weapon/melee/baton",
- "/obj/item/weapon/gun/energy/laser",
- "/obj/item/weapon/gun/energy/laser",
- "/obj/item/weapon/gun/energy/taser",
- "/obj/item/weapon/gun/energy/taser",
- "/obj/item/weapon/storage/flashbang_kit",
- "/obj/item/weapon/storage/flashbang_kit")
+ contains = list(/obj/item/weapon/melee/baton,
+ /obj/item/weapon/melee/baton,
+ /obj/item/weapon/gun/energy/laser,
+ /obj/item/weapon/gun/energy/laser,
+ /obj/item/weapon/gun/energy/taser,
+ /obj/item/weapon/gun/energy/taser,
+ /obj/item/weapon/storage/flashbang_kit,
+ /obj/item/weapon/storage/flashbang_kit)
cost = 30
- containertype = "/obj/structure/closet/crate/secure/weapon"
+ containertype = /obj/structure/closet/crate/secure/weapon
containername = "Weapons crate"
access = access_security
/datum/supply_packs/eweapons
name = "Experimental weapons crate"
- contains = list("/obj/item/weapon/flamethrower/full",
- "/obj/item/weapon/tank/plasma",
- "/obj/item/weapon/tank/plasma",
- "/obj/item/weapon/tank/plasma",
- "/obj/item/weapon/grenade/chem_grenade/incendiary",
- "/obj/item/weapon/grenade/chem_grenade/incendiary",
- "/obj/item/weapon/grenade/chem_grenade/incendiary")
+ contains = list(/obj/item/weapon/flamethrower/full,
+ /obj/item/weapon/tank/plasma,
+ /obj/item/weapon/tank/plasma,
+ /obj/item/weapon/tank/plasma,
+ /obj/item/weapon/grenade/chem_grenade/incendiary,
+ /obj/item/weapon/grenade/chem_grenade/incendiary,
+ /obj/item/weapon/grenade/chem_grenade/incendiary)
cost = 25
- containertype = "/obj/structure/closet/crate/secure/weapon"
+ containertype = /obj/structure/closet/crate/secure/weapon
containername = "Experimental weapons crate"
access = access_heads
/datum/supply_packs/armor
name = "Armor crate"
- contains = list("/obj/item/clothing/head/helmet",
- "/obj/item/clothing/head/helmet",
- "/obj/item/clothing/suit/armor/vest",
- "/obj/item/clothing/suit/armor/vest")
+ contains = list(/obj/item/clothing/head/helmet,
+ /obj/item/clothing/head/helmet,
+ /obj/item/clothing/suit/armor/vest,
+ /obj/item/clothing/suit/armor/vest)
cost = 15
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Armor crate"
access = access_security
/datum/supply_packs/riot
name = "Riot gear crate"
- contains = list("/obj/item/weapon/melee/baton",
- "/obj/item/weapon/melee/baton",
- "/obj/item/weapon/melee/baton",
- "/obj/item/weapon/shield/riot",
- "/obj/item/weapon/shield/riot",
- "/obj/item/weapon/shield/riot",
- "/obj/item/weapon/storage/flashbang_kit",
- "/obj/item/weapon/storage/flashbang_kit",
- "/obj/item/weapon/storage/flashbang_kit",
- "/obj/item/weapon/handcuffs",
- "/obj/item/weapon/handcuffs",
- "/obj/item/weapon/handcuffs",
- "/obj/item/clothing/head/helmet/riot",
- "/obj/item/clothing/suit/armor/riot",
- "/obj/item/clothing/head/helmet/riot",
- "/obj/item/clothing/suit/armor/riot",
- "/obj/item/clothing/head/helmet/riot",
- "/obj/item/clothing/suit/armor/riot")
+ contains = list(/obj/item/weapon/melee/baton,
+ /obj/item/weapon/melee/baton,
+ /obj/item/weapon/melee/baton,
+ /obj/item/weapon/shield/riot,
+ /obj/item/weapon/shield/riot,
+ /obj/item/weapon/shield/riot,
+ /obj/item/weapon/storage/flashbang_kit,
+ /obj/item/weapon/storage/flashbang_kit,
+ /obj/item/weapon/storage/flashbang_kit,
+ /obj/item/weapon/handcuffs,
+ /obj/item/weapon/handcuffs,
+ /obj/item/weapon/handcuffs,
+ /obj/item/clothing/head/helmet/riot,
+ /obj/item/clothing/suit/armor/riot,
+ /obj/item/clothing/head/helmet/riot,
+ /obj/item/clothing/suit/armor/riot,
+ /obj/item/clothing/head/helmet/riot,
+ /obj/item/clothing/suit/armor/riot)
cost = 60
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Riot gear crate"
access = access_armory
/datum/supply_packs/loyalty
name = "Loyalty implant crate"
- contains = list ("/obj/item/weapon/storage/lockbox/loyalty")
+ contains = list (/obj/item/weapon/storage/lockbox/loyalty)
cost = 60
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Loyalty implant crate"
access = access_armory
/datum/supply_packs/ballistic
name = "Ballistic gear crate"
- contains = list("/obj/item/clothing/suit/armor/bulletproof",
- "/obj/item/clothing/suit/armor/bulletproof",
- "/obj/item/weapon/gun/projectile/shotgun/pump/combat",
- "/obj/item/weapon/gun/projectile/shotgun/pump/combat")
+ contains = list(/obj/item/clothing/suit/armor/bulletproof,
+ /obj/item/clothing/suit/armor/bulletproof,
+ /obj/item/weapon/gun/projectile/shotgun/pump/combat,
+ /obj/item/weapon/gun/projectile/shotgun/pump/combat)
cost = 50
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Ballistic gear crate"
access = access_armory
/datum/supply_packs/expenergy
name = "Experimental energy gear crate"
- contains = list("/obj/item/clothing/suit/armor/laserproof",
- "/obj/item/clothing/suit/armor/laserproof",
- "/obj/item/weapon/gun/energy/gun",
- "/obj/item/weapon/gun/energy/gun")
+ contains = list(/obj/item/clothing/suit/armor/laserproof,
+ /obj/item/clothing/suit/armor/laserproof,
+ /obj/item/weapon/gun/energy/gun,
+ /obj/item/weapon/gun/energy/gun)
cost = 50
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Experimental energy gear crate"
access = access_armory
/datum/supply_packs/exparmor
name = "Experimental armor crate"
- contains = list("/obj/item/clothing/suit/armor/laserproof",
- "/obj/item/clothing/suit/armor/bulletproof",
- "/obj/item/clothing/head/helmet/riot",
- "/obj/item/clothing/suit/armor/riot")
+ contains = list(/obj/item/clothing/suit/armor/laserproof,
+ /obj/item/clothing/suit/armor/bulletproof,
+ /obj/item/clothing/head/helmet/riot,
+ /obj/item/clothing/suit/armor/riot)
cost = 35
- containertype = "/obj/structure/closet/crate/secure"
+ containertype = /obj/structure/closet/crate/secure
containername = "Experimental armor crate"
access = access_armory
/datum/supply_packs/securitybarriers
name = "Security Barriers"
- contains = list("/obj/machinery/deployable/barrier",
- "/obj/machinery/deployable/barrier",
- "/obj/machinery/deployable/barrier",
- "/obj/machinery/deployable/barrier")
+ contains = list(/obj/machinery/deployable/barrier,
+ /obj/machinery/deployable/barrier,
+ /obj/machinery/deployable/barrier,
+ /obj/machinery/deployable/barrier)
cost = 20
- containertype = "/obj/structure/closet/crate/secure/gear"
+ containertype = /obj/structure/closet/crate/secure/gear
containername = "Security Barriers crate"
/datum/supply_packs/randomised
var/num_contained = 3 //number of items picked to be contained in a randomised crate
- contains = list("/obj/item/clothing/head/collectable/chef",
- "/obj/item/clothing/head/collectable/paper",
- "/obj/item/clothing/head/collectable/tophat",
- "/obj/item/clothing/head/collectable/captain",
- "/obj/item/clothing/head/collectable/beret",
- "/obj/item/clothing/head/collectable/welding",
- "/obj/item/clothing/head/collectable/flatcap",
- "/obj/item/clothing/head/collectable/pirate",
- "/obj/item/clothing/head/collectable/kitty",
- "/obj/item/clothing/head/collectable/rabbitears",
- "/obj/item/clothing/head/collectable/wizard",
- "/obj/item/clothing/head/collectable/hardhat",
- "/obj/item/clothing/head/collectable/HoS",
- "/obj/item/clothing/head/collectable/thunderdome",
- "/obj/item/clothing/head/collectable/swat",
- "/obj/item/clothing/head/collectable/metroid",
- "/obj/item/clothing/head/collectable/metroid",
- "/obj/item/clothing/head/collectable/police",
- "/obj/item/clothing/head/collectable/police",
- "/obj/item/clothing/head/collectable/slime",
- "/obj/item/clothing/head/collectable/slime",
- "/obj/item/clothing/head/collectable/xenom",
- "/obj/item/clothing/head/collectable/xenom",
- "/obj/item/clothing/head/collectable/petehat")
+ contains = list(/obj/item/clothing/head/collectable/chef,
+ /obj/item/clothing/head/collectable/paper,
+ /obj/item/clothing/head/collectable/tophat,
+ /obj/item/clothing/head/collectable/captain,
+ /obj/item/clothing/head/collectable/beret,
+ /obj/item/clothing/head/collectable/welding,
+ /obj/item/clothing/head/collectable/flatcap,
+ /obj/item/clothing/head/collectable/pirate,
+ /obj/item/clothing/head/collectable/kitty,
+ /obj/item/clothing/head/collectable/rabbitears,
+ /obj/item/clothing/head/collectable/wizard,
+ /obj/item/clothing/head/collectable/hardhat,
+ /obj/item/clothing/head/collectable/HoS,
+ /obj/item/clothing/head/collectable/thunderdome,
+ /obj/item/clothing/head/collectable/swat,
+ /obj/item/clothing/head/collectable/metroid,
+ /obj/item/clothing/head/collectable/metroid,
+ /obj/item/clothing/head/collectable/police,
+ /obj/item/clothing/head/collectable/police,
+ /obj/item/clothing/head/collectable/slime,
+ /obj/item/clothing/head/collectable/slime,
+ /obj/item/clothing/head/collectable/xenom,
+ /obj/item/clothing/head/collectable/xenom,
+ /obj/item/clothing/head/collectable/petehat)
name = "Collectable hat crate!"
cost = 200
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Collectable hats crate! Brought to you by Bass.inc!"
/datum/supply_packs/randomised/New()
@@ -579,10 +601,10 @@
/datum/supply_packs/randomised/contraband
num_contained = 5
- contains = list("/obj/item/weapon/contraband/poster",
- "/obj/item/weapon/cigpacket/dromedaryco")
+ contains = list(/obj/item/weapon/contraband/poster,
+ /obj/item/weapon/cigpacket/dromedaryco)
name = "Contraband crate"
cost = 30
- containertype = "/obj/structure/closet/crate"
+ containertype = /obj/structure/closet/crate
containername = "Contraband crate"
contraband = 1
diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm
index aa8920bb4fc..ea6ab037bc4 100644
--- a/code/game/objects/items/weapons/grenades/smokebomb.dm
+++ b/code/game/objects/items/weapons/grenades/smokebomb.dm
@@ -13,10 +13,10 @@
..()
src.smoke = new /datum/effect/effect/system/bad_smoke_spread
src.smoke.attach(src)
- src.smoke.set_up(10, 0, usr.loc)
prime()
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
+ src.smoke.set_up(10, 0, usr.loc)
spawn(0)
src.smoke.start()
sleep(10)
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index 8834b4a6b78..dc66b2e1391 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -118,17 +118,6 @@ var/list/mechtoys = list(
var/orderedby = null
var/comment = null
-/datum/supply_packs
- var/name = null
- var/list/contains = new/list()
- var/amount = null
- var/cost = null
- var/containertype = null
- var/containername = null
- var/access = null
- var/hidden = 0
- var/contraband = 0
-
/datum/controller/supply_shuttle
var/processing = 1
var/processing_interval = 300
@@ -307,10 +296,9 @@ var/list/mechtoys = list(
if(SP.access)
A:req_access = list()
A:req_access += text2num(SP.access)
- for(var/B in SP.contains)
- if(!B) continue
- var/thepath = text2path(B)
- var/atom/B2 = new thepath(A)
+ for(var/typepath in SP.contains)
+ if(!typepath) continue
+ var/atom/B2 = new typepath(A)
if(SP.amount && B2:amount) B2:amount = SP.amount
slip.info += "[B2.name]" //add the item to the manifest
@@ -416,13 +404,9 @@ var/list/mechtoys = list(
reqform.info += "RANK: [idrank]
"
reqform.info += "REASON: [reason]
"
reqform.info += "SUPPLY CRATE TYPE: [P.name]
"
- reqform.info += "CONTENTS:
"
-
- for(var/B in P.contains)
- var/thepath = text2path(B)
- var/atom/B2 = new thepath()
- reqform.info += "- [B2.name]
"
- reqform.info += "
"
+ reqform.info += "CONTENTS:
"
+ reqform.info += P.manifest
+ reqform.info += "
"
reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:
"
reqform.update_icon() //Fix for appearing blank when printed.
@@ -593,13 +577,9 @@ var/list/mechtoys = list(
reqform.info += "RANK: [idrank]
"
reqform.info += "REASON: [reason]
"
reqform.info += "SUPPLY CRATE TYPE: [P.name]
"
- reqform.info += "CONTENTS:
"
-
- for(var/B in P.contains)
- var/thepath = text2path(B)
- var/atom/B2 = new thepath()
- reqform.info += "- [B2.name]
"
- reqform.info += "
"
+ reqform.info += "CONTENTS:
"
+ reqform.info += P.manifest
+ reqform.info += "
"
reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:
"
reqform.update_icon() //Fix for appearing blank when printed.