This commit is contained in:
izac112
2023-06-03 19:53:45 +02:00
608 changed files with 17985 additions and 4722 deletions
@@ -0,0 +1,120 @@
#define CENTER 1
#define SIDE 2
/obj/item/weapon/picnic_blankets_carried
name = "picnic blanket"
desc = "A neatly folded picnic blanket!"
var/unfolded_desc = "Separates your meal from the dirty floor. Or table."
icon = 'icons/obj/picnic_vr.dmi'
icon_state = "picnic_carried"
w_class = ITEMSIZE_NORMAL
attack_verb = list("flicked", "whipped", "swooshed")
force = 0.5
hitsound = 'sound/weapons/towelwhip.ogg'
drop_sound = 'sound/items/drop/cloth.ogg'
pickup_sound = 'sound/items/pickup/cloth.ogg'
/obj/item/weapon/picnic_blankets_carried/verb/fold_out()
set name = "Fold out"
set desc = "Fold out the picnic blanket for use"
set category = "Object"
var/obj/structure/picnic_blanket_deployed/P = new /obj/structure/picnic_blanket_deployed(usr.loc)
P.name = name
P.desc = unfolded_desc
P.unfold()
qdel(src)
/obj/structure/picnic_blanket_deployed
name = "picnic blanket"
desc = "Separates your meal from the dirty floor. Or table."
var/folded_desc = "A neatly folded picnic blanket!"
icon = 'icons/obj/picnic_vr.dmi'
icon_state = "picnic_central"
var/blanket_type = CENTER
layer = HIDING_LAYER - 0.01 //Stuff shouldn't be able to hide under the blanket on the ground
var/list/attached_blankets = list()
/obj/structure/picnic_blanket_deployed/verb/fold_up()
set name = "Fold up"
set desc = "Folds the blanket up for carrying"
set category = "Object"
set src in oview(1)
for(var/obj/structure/picnic_blanket_deployed/side in attached_blankets)
qdel(side)
var/obj/item/weapon/picnic_blankets_carried/P = new /obj/item/weapon/picnic_blankets_carried(usr.loc)
P.name = name
P.desc = folded_desc
qdel(src)
/obj/structure/picnic_blanket_deployed/proc/unfold()
var/dirs = alldirs
var/isTableTop //Controls whether to spawn things across tables, or on ground
var/doWeHaveTable //Helper var set to true if ANY obj is a table
var/anti_spam = FALSE //Helper var to avoid spamming people if they are mired in trash.
for(var/obj/O in get_turf(src)) //Center element determines behaviour
if(istype(O, /obj/structure/table))
isTableTop = TRUE
layer = TABLE_LAYER + 0.01 //We should be just a bit over tables!
populate_blankets:
for(var/dir in dirs)
var/turf/T = get_step(get_turf(src), dir)
doWeHaveTable = FALSE //Resetting to False each loop
if(T.density)
continue
if(LAZYLEN(T.contents) > 20) //Avoiding potential perf issues by not iterating over large piles of objs
if(!anti_spam)
to_chat(usr, SPAN_NOTICE("Too many items! Couldn't fully unfold the blanket!"))
anti_spam = TRUE
continue
for(var/obj/O in T)
if(O.density) //Cables & Atmos machinery dont bother us.
if(isTableTop && istype(O, /obj/structure/table)) //We expand to the table if the center is a table
doWeHaveTable = TRUE
break
else
continue populate_blankets
if(isTableTop && !doWeHaveTable) //However, if center is a table, we don't expand if we havn't found any.
continue //If center is on table, we only allow the rest to appear on tables as well.
//Actually spawning
var/obj/structure/picnic_blanket_deployed/side = new /obj/structure/picnic_blanket_deployed(T)
side.verbs -= /obj/structure/picnic_blanket_deployed/verb/fold_up
attached_blankets += side
side.blanket_type = SIDE
side.name = name //Making sure side blankets inherit our vars if they got edited at runtime
side.desc = desc
side.set_dir(dir)
if(isTableTop)
side.layer = TABLE_LAYER + 0.01 //We should be just above tables.
side.update_icon()
/obj/structure/picnic_blanket_deployed/update_icon()
if(blanket_type == SIDE)
icon_state = "picnic_sides" //8 directional icon
if(blanket_type == CENTER)
icon_state = "picnic_central" //Adding in case anything might call update_icon on center one. Just to be safe
. = ..()
/obj/structure/picnic_blanket_deployed/examine(mob/user)
. = ..()
if(blanket_type == CENTER)
. += SPAN_NOTICE("This is the center of a folded out picnic blanket. You can use this to start packing it up!")
if(blanket_type == SIDE)
. += SPAN_NOTICE("This is one of the edges. Look for the center to start packing!")
//For Mapping use only.
//If player folds it back up, it reverts to normal type so the Initialize() won't cause issues
//Should be added last to any maps made, to ensure it initializes after all other relevant objs.
//Set unfoldable to TRUE if want to prevent players from picking it up
/obj/structure/picnic_blanket_deployed/for_mapping_use
name = "RENAME ME"
var/unfoldable = FALSE
/obj/structure/picnic_blanket_deployed/for_mapping_use/Initialize()
. = ..()
unfold()
if(unfoldable)
verbs -= /obj/structure/picnic_blanket_deployed/verb/fold_up
@@ -6,7 +6,7 @@
item_state = "saddlebag"
icon_state = "saddlebag"
max_storage_space = INVENTORY_DUFFLEBAG_SPACE //Saddlebags can hold more, like dufflebags
slowdown = 1 //And are slower, too...
slowdown = 0.5 //And are slower, too...
var/taurtype = /datum/sprite_accessory/tail/taur/horse //Acceptable taur type to be wearing this
var/no_message = "You aren't the appropriate taur type to wear this!"
@@ -35,7 +35,7 @@
icon_state = "saddlebag"
var/icon_base = "saddlebag"
max_storage_space = INVENTORY_DUFFLEBAG_SPACE //Saddlebags can hold more, like dufflebags
slowdown = 1 //And are slower, too...
slowdown = 0.5 //And are slower, too...
var/no_message = "You aren't the appropriate taur type to wear this!"
/obj/item/weapon/storage/backpack/saddlebag_common/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
+73 -51
View File
@@ -5,18 +5,26 @@
* re-implemented in other classes.
*
* Contains:
* Generic non-item
* Trash Bag
* Plastic Bag
* Mining Satchel
* Plant Bag
* Sheet Snatcher
* Sheet Snatcher (Cyborg)
* Cash Bag
* Chemistry Bag
Food Bag
* Food Bag
* Food Bag (Service Hound)
* Evidence Bag
*
* -Sayu
*/
// Generic non-item
// -----------------------------
// Generic non-item
// -----------------------------
/obj/item/weapon/storage/bag
allow_quick_gather = 1
allow_quick_empty = 1
@@ -67,7 +75,6 @@
// -----------------------------
// Plastic Bag
// -----------------------------
/obj/item/weapon/storage/bag/plasticbag
name = "plastic bag"
desc = "It's a very flimsy, very noisy alternative to a bag."
@@ -85,9 +92,9 @@
// Mining Satchel
// -----------------------------
/*
* Mechoid - Orebags are the most common quick-gathering thing, and also have tons of lag associated with it. Their checks are going to be hyper-simplified due to this, and their INCREDIBLY singular target contents.
* Mechoid - Orebags are the most common quick-gathering thing, and also have tons of lag associated with it.
* Their checks are going to be hyper-simplified due to this, and their INCREDIBLY singular target contents.
*/
/obj/item/weapon/storage/bag/ore
name = "mining satchel"
desc = "This little bugger can be used to store and transport ores."
@@ -239,25 +246,14 @@
/obj/item/weapon/storage/bag/ore/open(mob/user as mob) //No opening it for the weird UI of having shit-tons of ore inside it.
user.examinate(src)
/*
/obj/item/weapon/storage/bag/ore/proc/update_ore_count() //Stolen from ore boxes. OLD way of storing ore.
stored_ore = list()
for(var/obj/item/weapon/ore/O in contents)
if(stored_ore[O.name])
stored_ore[O.name]++
else
stored_ore[O.name] = 1
*/
// -----------------------------
// Plant bag
// -----------------------------
/obj/item/weapon/storage/bag/plants
name = "plant bag"
icon = 'icons/obj/hydroponics_machines.dmi'
icon = 'icons/obj/hydroponics_machines_vr.dmi'
icon_state = "plantbag"
desc = "A sturdy bag used to transport fresh produce with ease."
max_storage_space = ITEMSIZE_COST_NORMAL * 25
max_w_class = ITEMSIZE_NORMAL
w_class = ITEMSIZE_SMALL
@@ -265,8 +261,9 @@
/obj/item/weapon/storage/bag/plants/large
name = "large plant bag"
w_class = ITEMSIZE_SMALL
max_storage_space = ITEMSIZE_COST_NORMAL * 45
icon_state = "large_plantbag"
desc = "A large and sturdy bag used to transport fresh produce with ease."
max_storage_space = ITEMSIZE_COST_NORMAL * 50
// -----------------------------
// Sheet Snatcher
@@ -400,24 +397,9 @@
/obj/item/weapon/storage/bag/sheetsnatcher/borg
name = "sheet snatcher 9000"
desc = ""
desc = null
capacity = 500//Borgs get more because >specialization
// -----------------------------
// Food Bag (Service Hound)
// -----------------------------
/obj/item/weapon/storage/bag/dogborg
name = "dog bag"
icon = 'icons/obj/storage.dmi'
icon_state = "foodbag"
desc = "A bag for storing things of all kinds."
max_storage_space = ITEMSIZE_COST_NORMAL * 25
max_w_class = ITEMSIZE_NORMAL
w_class = ITEMSIZE_SMALL
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment,
/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/coin,/obj/item/weapon/spacecash,
/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/pill)
// -----------------------------
// Cash Bag
// -----------------------------
@@ -432,12 +414,12 @@
w_class = ITEMSIZE_SMALL
can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash,/obj/item/weapon/spacecasinocash)
// -----------------------------
// Chemistry Bag
// -----------------------------
// -----------------------------
// Chemistry Bag
// -----------------------------
/obj/item/weapon/storage/bag/chemistry
name = "chemistry bag"
icon = 'icons/obj/storage.dmi'
icon = 'icons/obj/storage_vr.dmi'
icon_state = "chembag"
desc = "A bag for storing pills, patches, and bottles."
max_storage_space = 200
@@ -445,12 +427,38 @@
slowdown = 3
can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle)
// -----------------------------
// Food Bag
// -----------------------------
// -----------------------------
// Xeno Bag
// -----------------------------
/obj/item/weapon/storage/bag/xeno
name = "xenobiology bag"
icon = 'icons/obj/storage_vr.dmi'
icon_state = "xenobag"
desc = "A bag for storing various slime products."
max_storage_space = ITEMSIZE_COST_SMALL * 12
max_w_class = ITEMSIZE_NORMAL
w_class = ITEMSIZE_SMALL
can_hold = list(/obj/item/slime_extract,/obj/item/slimepotion, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)
// -----------------------------
// Virology Bag
// -----------------------------
/obj/item/weapon/storage/bag/virology
name = "virology bag"
icon = 'icons/obj/storage_vr.dmi'
icon_state = "biobag"
desc = "A bag for storing various biological products."
max_storage_space = ITEMSIZE_COST_SMALL * 12
max_w_class = ITEMSIZE_NORMAL
w_class = ITEMSIZE_SMALL
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial/,/obj/item/weapon/virusdish/)
// -----------------------------
// Food Bag
// -----------------------------
/obj/item/weapon/storage/bag/food
name = "food bag"
icon = 'icons/obj/storage.dmi'
icon = 'icons/obj/storage_vr.dmi'
icon_state = "foodbag"
desc = "A bag for storing foods of all kinds."
max_storage_space = ITEMSIZE_COST_NORMAL * 25
@@ -458,16 +466,30 @@
w_class = ITEMSIZE_SMALL
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment)
// -----------------------------
// Evidence Bag
// -----------------------------
// -----------------------------
// Food Bag (Service Hound)
// -----------------------------
/obj/item/weapon/storage/bag/dogborg
name = "dog bag"
icon = 'icons/obj/storage_vr.dmi'
icon_state = "foodbag"
desc = "An intergrated bag for storing things of all kinds."
max_storage_space = ITEMSIZE_COST_NORMAL * 25
max_w_class = ITEMSIZE_NORMAL
w_class = ITEMSIZE_SMALL
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment,
/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/coin,/obj/item/weapon/spacecash,
/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/pill)
// -----------------------------
// Evidence Bag
// -----------------------------
/obj/item/weapon/storage/bag/detective
name = "secure satchel"
icon = 'icons/obj/storage.dmi'
icon = 'icons/obj/storage_vr.dmi'
icon_state = "detbag"
desc = "A bag for storing investigation things. You know, securely."
max_storage_space = ITEMSIZE_COST_NORMAL * 15
max_w_class = ITEMSIZE_NORMAL
w_class = ITEMSIZE_SMALL
can_hold = list(/obj/item/weapon/forensics/swab,/obj/item/weapon/sample/print,/obj/item/weapon/sample/fibers,/obj/item/weapon/evidencebag)
can_hold = list(/obj/item/weapon/forensics/swab,/obj/item/weapon/sample/print,/obj/item/weapon/sample/fibers,/obj/item/weapon/evidencebag)
@@ -1,15 +1,2 @@
/obj/item/weapon/storage/bag/chemistry
slot_flags = null
/obj/item/weapon/storage/bag/xeno
name = "xenobiology bag"
icon = 'icons/obj/storage.dmi'
icon_state = "chembag"
max_storage_space = ITEMSIZE_COST_SMALL * 12
max_w_class = ITEMSIZE_NORMAL
w_class = ITEMSIZE_SMALL
can_hold = list(
/obj/item/slime_extract,
/obj/item/slimepotion,
/obj/item/weapon/reagent_containers/food/snacks/monkeycube
)
@@ -151,4 +151,27 @@
/obj/item/weapon/storage/excavation,
/obj/item/weapon/anobattery,
/obj/item/weapon/pickaxe
)
/obj/item/weapon/storage/belt/hydro
name = "hydroponics belt"
desc = "A belt used to hold most hydroponics supplies. Suprisingly, not green."
icon = 'icons/inventory/belt/item_vr.dmi'
icon_state = "plantbelt"
item_state = "plantbelt"
storage_slots = 5
max_w_class = ITEMSIZE_LARGE
max_storage_space = ITEMSIZE_COST_NORMAL * 5
can_hold = list(
/obj/item/device/analyzer/plant_analyzer,
/obj/item/weapon/reagent_containers/glass/beaker,
/obj/item/weapon/reagent_containers/glass/bottle,
/obj/item/weapon/shovel/spade,
/obj/item/weapon/tool/wirecutters,
/obj/item/weapon/material/minihoe,
/obj/item/weapon/material/knife/machete/hatchet,
/obj/item/weapon/reagent_containers/spray/plantbgone,
/obj/item/weapon/plantspray,
/obj/item/weapon/gun/energy/floragun,
/obj/item/seeds
)
@@ -79,6 +79,8 @@
/obj/item/weapon/storage/fancy/egg_box/open(mob/user as mob)
if(open)
return
if (isobserver(usr))
return
open = TRUE
update_icon()
..()
+15 -1
View File
@@ -23,6 +23,7 @@
var/hitcost = 240
var/use_external_power = FALSE //only used to determine if it's a cyborg baton
var/grip_safety = TRUE
var/taped_safety = FALSE
/obj/item/weapon/melee/baton/New()
..()
@@ -100,7 +101,7 @@
/obj/item/weapon/melee/baton/dropped()
..()
if(status && grip_safety)
if(status && grip_safety && !taped_safety)
status = 0
visible_message("<span class='warning'>\The [src]'s grip safety engages!</span>")
update_icon()
@@ -109,6 +110,8 @@
. = ..()
if(Adjacent(user))
if(taped_safety)
. += "<span class='warning'>Someone has wrapped tape around the grip!</span>"
if(bcell)
. += "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>"
if(!bcell)
@@ -129,6 +132,17 @@
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
else
to_chat(user, "<span class='notice'>This cell is not fitted for [src].</span>")
if(istype(W, /obj/item/weapon/tape_roll) || istype(W, /obj/item/taperoll))
if(grip_safety && !taped_safety) //no point letting people wrap tape around the grips of batons without a safety
to_chat(user, "<span class='notice'>You firmly wrap tape around the baton's grip, disabling the safety system.</span>")
playsound(src, 'sound/effects/tape.ogg',25)
taped_safety = TRUE
else if(grip_safety && taped_safety)
to_chat(user, "<span class='notice'>The grip safety has already been taped down.</span>")
if(istype(W, /obj/item/weapon/tool/screwdriver))
if(taped_safety)
to_chat(user, "<span class='notice'>You painstakingly scrape away the tape over the grip safety.</span>")
taped_safety = FALSE
/obj/item/weapon/melee/baton/attack_hand(mob/user as mob)
if(user.get_inactive_hand() == src)
@@ -1,18 +1,22 @@
/* Surgery Tools
* Contains:
* Bio-Regenerator
* Retractor
* Hemostat
* Cautery
* Surgical Drill
* Scalpel
* Circular Saw
* Bio-Regenerator
* Researchable Scalpels
* Circular Saws
* Misc Tools
* Cyborg Tools
* Alien Tools
*/
/obj/item/weapon/surgical
name = "Surgical tool"
desc = "This shouldn't be here, ahelp it."
icon = 'icons/obj/surgery.dmi'
icon = 'icons/obj/surgery_vr.dmi'
w_class = ITEMSIZE_SMALL
drop_sound = 'sound/items/drop/weldingtool.ogg'
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
@@ -29,7 +33,6 @@
/obj/item/weapon/surgical/bioregen
name="bioregenerator"
desc="A special tool used in surgeries which can pull toxins from and restore oxygen to organic tissue as well as recreate missing biological structures to allow otherwise irreperable flesh to be mended."
icon='icons/obj/surgery_vr.dmi'
icon_state="bioregen"
drop_sound = 'sound/items/drop/scrap.ogg'
@@ -110,27 +113,27 @@
/obj/item/weapon/surgical/scalpel/laser1
name = "laser scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved."
icon_state = "scalpel_laser1_on"
icon_state = "scalpel_laser1"
damtype = "fire"
/obj/item/weapon/surgical/scalpel/laser2
name = "laser scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced."
icon_state = "scalpel_laser2_on"
icon_state = "scalpel_laser2"
damtype = "fire"
force = 12.0
/obj/item/weapon/surgical/scalpel/laser3
name = "laser scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!"
icon_state = "scalpel_laser3_on"
icon_state = "scalpel_laser3"
damtype = "fire"
force = 15.0
/obj/item/weapon/surgical/scalpel/manager
name = "incision management system"
desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps."
icon_state = "scalpel_manager_on"
icon_state = "scalpel_manager"
force = 7.5
/obj/item/weapon/surgical/scalpel/ripper
@@ -143,12 +146,12 @@
origin_tech = list(TECH_MATERIAL = 5, TECH_BIO = 3, TECH_ILLEGAL = 2)
/*
* Circular Saw
* Circular Saws
*/
/obj/item/weapon/surgical/circular_saw
name = "circular saw"
desc = "For heavy duty cutting."
icon_state = "saw3"
icon_state = "saw"
hitsound = 'sound/weapons/circsawhit.ogg'
drop_sound = 'sound/items/drop/accessory.ogg'
force = 15.0
@@ -169,13 +172,15 @@
item_state = "saw3"
hitsound = 'sound/weapons/emitter2.ogg'
damtype = SEARING
w_class = ITEMSIZE_LARGE
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 6)
matter = list(MAT_STEEL = 12500)
matter = list(MAT_STEEL = 25000,MAT_GLASS = 20000)
attack_verb = list("attacked", "slashed", "seared", "cut")
toolspeed = 0.75
//misc, formerly from code/defines/weapons.dm
/*
* Misc Tools
*/
/obj/item/weapon/surgical/bonegel
name = "bone gel"
desc = "For fixing bones."
@@ -192,7 +197,7 @@
throwforce = 1.0
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 3)
var/usage_amount = 10
drop_sound = 'sound/items/drop/accessory.ogg'
drop_sound = 'sound/items/drop/bottle.ogg'
/obj/item/weapon/surgical/bonesetter
name = "bone setter"
@@ -215,24 +220,31 @@
throw_range = 5
attack_verb = list("attacked", "hit", "bludgeoned")
// Cyborg Tools
/*
* Cyborg Tools
*/
/obj/item/weapon/surgical/retractor/cyborg
icon_state = "cyborg_retractor"
toolspeed = 0.5
/obj/item/weapon/surgical/hemostat/cyborg
icon_state = "cyborg_hemostat"
toolspeed = 0.5
/obj/item/weapon/surgical/cautery/cyborg
icon_state = "cyborg_cautery"
toolspeed = 0.5
/obj/item/weapon/surgical/surgicaldrill/cyborg
icon_state = "cyborg_drill"
toolspeed = 0.5
/obj/item/weapon/surgical/scalpel/cyborg
icon_state = "cyborg_scalpel"
toolspeed = 0.5
/obj/item/weapon/surgical/circular_saw/cyborg
icon_state = "cyborg_saw"
toolspeed = 0.5
/obj/item/weapon/surgical/bonegel/cyborg
@@ -242,13 +254,16 @@
toolspeed = 0.5
/obj/item/weapon/surgical/bonesetter/cyborg
icon_state = "cyborg_setter"
toolspeed = 0.5
/obj/item/weapon/surgical/bioregen/cyborg //VoreStation edit: let the borgs S U C C
icon_state = "cyborg_bioregen"
toolspeed = 0.5
// Alien Tools
/*
* Alien Tools
*/
/obj/item/weapon/surgical/retractor/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
@@ -104,6 +104,16 @@
. = ..()
air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
/obj/item/weapon/tank/jetpack/breaker
name = "CSC industrial jetpack"
desc = "A JetFast EVA thruster pack. A warning label clearly states \'WARNING: CONTAINS VOLATILE REACTION MASS TOXIC TO MOST LIFEFORMS. NOT TO BE USED WITH CLOSED CYCLE BREATHING SYSTEMS.\'"
icon_state = "jetpack-breaker"
item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack")
/obj/item/weapon/tank/jetpack/breaker/Initialize()
. = ..()
air_contents.adjust_gas("volatile_fuel", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
/obj/item/weapon/tank/jetpack/carbondioxide
name = "jetpack (carbon dioxide)"
desc = "A tank of compressed carbon dioxide for use as propulsion in zero-gravity areas. Painted black to indicate that it should not be used as a source for internals."