diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index 166d7f67d26..afe24768a1d 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -20780,6 +20780,15 @@ /obj/structure/chair/comfy/black, /turf/simulated/floor/wood, /area/station/service/library) +"brz" = ( +/obj/structure/closet/walllocker/emerglocker/directional/north, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/extinguisher, +/turf/simulated/floor/plating, +/area/station/public/storage/emergency/port) "brA" = ( /obj/structure/chair/office/dark, /obj/effect/landmark/start/librarian, @@ -42871,8 +42880,8 @@ c_tag = "Atmospherics West"; dir = 4 }, -/obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/delivery/partial, +/obj/structure/reagent_dispensers/watertank/firetank, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "dbL" = ( @@ -50125,14 +50134,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/station/maintenance/aft) -"eOg" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/economy/atm/directional/west, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "redcorner" - }, -/area/station/security/lobby) "eOh" = ( /obj/machinery/economy/vending/cigarette, /obj/structure/window/reinforced, @@ -52623,11 +52624,6 @@ icon_state = "white" }, /area/station/maintenance/asmaint) -"gaW" = ( -/obj/effect/spawner/random/blood/often, -/obj/machinery/economy/atm/directional/north, -/turf/simulated/floor/wood, -/area/station/maintenance/apmaint2) "gba" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -59809,6 +59805,14 @@ }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) +"jPg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/economy/atm/directional/west, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "redcorner" + }, +/area/station/security/lobby) "jPk" = ( /obj/structure/cable{ icon_state = "0-2" @@ -61259,6 +61263,13 @@ /obj/effect/mapping_helpers/turfs/rust/maybe, /turf/simulated/wall/r_wall, /area/station/engineering/gravitygenerator) +"kyJ" = ( +/obj/machinery/economy/atm/directional/north, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/station/hallway/primary/aft/south) "kzB" = ( /obj/effect/spawner/random/food_or_drink/three_course_meal, /obj/structure/closet/crate/freezer, @@ -63822,6 +63833,7 @@ /obj/effect/turf_decal/delivery/partial{ dir = 1 }, +/obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "lLM" = ( @@ -64204,10 +64216,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) -"lVm" = ( -/obj/item/kirbyplants/large, -/turf/simulated/floor/wood, -/area/station/service/bar) "lVr" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 10 @@ -68034,15 +68042,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/aft) -"nZt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/station/hallway/secondary/entry/north) "nZF" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research{ @@ -73435,6 +73434,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/station/maintenance/aft) +"qEe" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/secondary/entry/north) "qEg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -74986,6 +74991,10 @@ icon_state = "dark" }, /area/station/telecomms/chamber) +"rsw" = ( +/obj/item/kirbyplants/large, +/turf/simulated/floor/wood, +/area/station/service/bar) "rsz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -75412,13 +75421,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/aft) -"rED" = ( -/obj/machinery/economy/atm/directional/north, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "yellowcorner" - }, -/area/station/hallway/primary/aft/south) "rET" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -82863,12 +82865,6 @@ }, /turf/simulated/floor/wood, /area/station/command/office/ntrep) -"vGS" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/station/hallway/secondary/entry/north) "vHd" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable{ @@ -83015,6 +83011,15 @@ icon_state = "bluecorner" }, /area/station/hallway/secondary/exit) +"vKU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/secondary/entry/north) "vLb" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable{ @@ -84520,15 +84525,6 @@ icon_state = "whitehall" }, /area/station/hallway/primary/starboard/west) -"wBH" = ( -/obj/structure/closet/walllocker/emerglocker/directional/north, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/extinguisher, -/turf/simulated/floor/plating, -/area/station/public/storage/emergency/port) "wCg" = ( /obj/structure/cable, /obj/structure/cable{ @@ -85932,6 +85928,11 @@ }, /turf/simulated/floor/plasteel, /area/station/maintenance/assembly_line) +"xnt" = ( +/obj/effect/spawner/random/blood/often, +/obj/machinery/economy/atm/directional/north, +/turf/simulated/floor/wood, +/area/station/maintenance/apmaint2) "xnF" = ( /obj/structure/cable{ icon_state = "1-2" @@ -97991,7 +97992,7 @@ aJP aRm aOR aQa -vGS +qEe aMD fay fay @@ -99019,7 +99020,7 @@ aJR aRV aOR aQa -nZt +vKU aRd nff aUm @@ -109314,7 +109315,7 @@ bgA blO iPh blR -wBH +brz bsD bui blR @@ -110387,7 +110388,7 @@ gwb uWp tGO cgQ -gaW +xnt xRm lnh kym @@ -116298,7 +116299,7 @@ cBp cAL cDY cvx -rED +kyJ mqV ePP ePP @@ -116737,7 +116738,7 @@ avd axD axA ayj -eOg +jPg azP aBY aCv @@ -124483,7 +124484,7 @@ bqk bqk bqk bAV -lVm +rsw aUS bAo bHy diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 0f3c55b9ac8..7f7f5e4a3fa 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -63343,6 +63343,14 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/aft/west) +"mzy" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/reagent_dispensers/watertank/firetank, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/station/engineering/atmos) "mzz" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp, @@ -141784,7 +141792,7 @@ jDd lMu cZf deb -cZf +mzy skI bUV bVx diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 5a70e414b17..64865129e61 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -90253,6 +90253,7 @@ /obj/structure/sign/nosmoking_2{ pixel_y = -32 }, +/obj/structure/reagent_dispensers/watertank/firetank, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "vhF" = ( diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index baf0841327f..819f156c3a4 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -52380,6 +52380,7 @@ /area/station/science/genetics) "kvh" = ( /obj/machinery/light, +/obj/structure/reagent_dispensers/watertank/firetank, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "kvi" = ( diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index c9b148c00c4..536099d8cc6 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -63048,6 +63048,7 @@ name = "south bump"; pixel_y = -28 }, +/obj/structure/reagent_dispensers/watertank/firetank, /turf/simulated/floor/plasteel{ icon_state = "caution" }, diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index a41aacb953c..4a02bed7e86 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -18,7 +18,10 @@ dog_fashion = /datum/dog_fashion/back resistance_flags = FIRE_PROOF new_attack_chain = TRUE - var/max_water = 50 + /// Used to determine the chemical that spawns in the extinguisher + var/reagent_id = "water" + /// Used to determine the maximum capacity of extinguishers + var/reagent_capacity = 50 /// If `TRUE`, using in hand will toggle the extinguisher's safety. This must be set to `FALSE` for extinguishers with different firing modes (i.e. backpacks). var/has_safety = TRUE /// If `TRUE`, the extinguisher will not fire. @@ -29,6 +32,17 @@ var/cooling_power = 2 COOLDOWN_DECLARE(last_use) +/obj/item/extinguisher/atmospherics + name = "atmospheric fire extinguisher" + desc = "An extinguisher coated in yellow paint that is pre-filled with firefighting foam." + icon_state = "atmoFE0" + item_state = "atmoFE" + base_icon_state = "atmoFE" + materials = list(MAT_TITANIUM = 200) + dog_fashion = null + reagent_id = "firefighting_foam" + reagent_capacity = 65 + /obj/item/extinguisher/mini name = "pocket fire extinguisher" desc = "A light and compact fibreglass-framed model fire extinguisher." @@ -41,7 +55,7 @@ w_class = WEIGHT_CLASS_SMALL force = 3 materials = list() - max_water = 30 + reagent_capacity = 30 dog_fashion = null /obj/item/extinguisher/examine(mob/user) @@ -52,8 +66,8 @@ /obj/item/extinguisher/Initialize(mapload) . = ..() if(!reagents) - create_reagents(max_water) - reagents.add_reagent("water", max_water) + create_reagents(reagent_capacity) + reagents.add_reagent(reagent_id, reagent_capacity) ADD_TRAIT(src, TRAIT_CAN_POINT_WITH, ROUNDSTART_TRAIT) /obj/item/extinguisher/activate_self(mob/user) @@ -77,7 +91,7 @@ if(extinguisher_spray(target, user)) return ITEM_INTERACT_COMPLETE -/obj/item/extinguisher/ranged_interact_with_atom(atom/target, mob/living/user, list/modifiers) +/obj/item/extinguisher/ranged_interact_with_atom(atom/target, mob/living/user, list/modifiers) if(extinguisher_spray(target, user)) return ITEM_INTERACT_COMPLETE @@ -90,7 +104,7 @@ return TRUE var/obj/structure/reagent_dispensers/watertank/W = target - var/transferred = W.reagents.trans_to(src, max_water) + var/transferred = W.reagents.trans_to(src, reagent_capacity) if(!transferred) to_chat(user, "\The [W] is empty!") return TRUE @@ -149,7 +163,7 @@ INVOKE_ASYNC(water, TYPE_PROC_REF(/obj/effect/particle_effect/water, extinguish_move), new_target) /obj/item/extinguisher/cyborg_recharge(coeff, emagged) - reagents.check_and_add("water", max_water, 5 * coeff) + reagents.check_and_add("water", reagent_capacity, 5 * coeff) /obj/item/extinguisher/proc/buckled_speed_move(obj/structure/chair/buckled_to, direction) // Buckled_to may not be a chair here, but we're assuming so because it makes it easier to typecheck var/movementdirection = turn(direction, 180) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 27583c49901..e2c7ca02ccb 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -224,7 +224,7 @@ item_state = "nozzleatmos" has_safety = FALSE safety_active = FALSE - max_water = 500 + reagent_capacity = 500 precision = TRUE cooling_power = 5 w_class = WEIGHT_CLASS_HUGE @@ -257,7 +257,7 @@ tank = loc reagents = tank.reagents - max_water = tank.volume + reagent_capacity = tank.volume return ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm index 6703f3bbe31..65b49cb4f35 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm @@ -110,7 +110,7 @@ else new /obj/item/storage/backpack/satchel_atmos(src) new /obj/item/storage/backpack/duffel/atmos(src) - new /obj/item/extinguisher(src) + new /obj/item/extinguisher/atmospherics(src) new /obj/item/grenade/gas/oxygen(src) new /obj/item/grenade/gas/oxygen(src) new /obj/item/clothing/suit/storage/hazardvest/staff(src) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index cb395ed749b..60616779c89 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -87,6 +87,12 @@ icon_state = "water_high" //I was gonna clean my room... tank_volume = 100000 +/obj/structure/reagent_dispensers/watertank/firetank + name = "firefighting foam tank" + desc = "A firefighting foam tank." + icon_state = "firetank" + reagent_id = "firefighting_foam" + tank_volume = 8000 /obj/structure/reagent_dispensers/oil name = "oil tank" diff --git a/code/modules/supply/supply_packs/pack_engineering.dm b/code/modules/supply/supply_packs/pack_engineering.dm index 9019b32fbe2..96db9d966b7 100644 --- a/code/modules/supply/supply_packs/pack_engineering.dm +++ b/code/modules/supply/supply_packs/pack_engineering.dm @@ -12,6 +12,13 @@ containertype = /obj/structure/largecrate containername = "fuel tank crate" +/datum/supply_packs/engineering/foamtank + name = "Firefighting Foam Tank Crate" + contains = list(/obj/structure/reagent_dispensers/watertank/firetank) + cost = 150 + containertype = /obj/structure/largecrate + containername = "firefighting foam tank crate" + /// the most robust crate /datum/supply_packs/engineering/tools name = "Toolbox Crate" diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index f03540a971b..494fd2a0a60 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 718e4382d4f..807ba98992c 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 48630968005..55cc29e1b83 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 5a3c7b1c9c5..37bce988912 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ