diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm
index 269d71e68b4..adb73f87d40 100644
--- a/code/modules/mod/mod_types.dm
+++ b/code/modules/mod/mod_types.dm
@@ -68,6 +68,7 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/t_ray,
/obj/item/mod/module/magboot,
+ /obj/item/mod/module/firefighting_tank,
)
default_pins = list(
/obj/item/mod/module/magboot,
diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm
index 87d079af7e9..2f07adbc495 100644
--- a/code/modules/mod/modules/modules_engineering.dm
+++ b/code/modules/mod/modules/modules_engineering.dm
@@ -151,3 +151,110 @@
QDEL_NULL(chain)
return ..()
+/// Atmos water tank module
+
+/obj/item/mod/module/firefighting_tank
+ name = "MOD firefighting tank"
+ desc = "A refrigerated and pressurized module tank with an extinguisher nozzle, intended to fight fires. Swaps between extinguisher, nanofrost launcher, and metal foam dispenser for breaches. Nanofrost converts plasma in the air to nitrogen, but only if it is combusting at the time."
+ icon_state = "firefighting_tank"
+ module_type = MODULE_ACTIVE
+ complexity = 2
+ active_power_cost = DEFAULT_CHARGE_DRAIN * 3
+ device = /obj/item/extinguisher/mini/mod
+
+#define EXTINGUISHER 0
+#define NANOFROST 1
+#define METAL_FOAM 2
+
+/obj/item/extinguisher/mini/mod
+ name = "modsuit extinguisher nozzle"
+ desc = "A heavy duty nozzle attached to a modsuit's internal tank."
+ icon = 'icons/obj/watertank.dmi'
+ icon_state = "atmos_nozzle_1"
+ item_state = "nozzleatmos"
+ safety = 0
+ max_water = 500
+ power = 8
+ precision = 1
+ cooling_power = 5
+ w_class = WEIGHT_CLASS_HUGE
+ flags = NODROP // Necessary to ensure that the nozzle and tank never seperate
+ var/nozzle_mode = EXTINGUISHER
+ var/metal_synthesis_charge = 5
+ COOLDOWN_DECLARE(nanofrost_cooldown)
+
+/obj/item/extinguisher/mini/mod/attack_self(mob/user)
+ switch(nozzle_mode)
+ if(EXTINGUISHER)
+ nozzle_mode = NANOFROST
+ to_chat(user, "Swapped to nanofrost launcher.")
+ if(NANOFROST)
+ nozzle_mode = METAL_FOAM
+ to_chat(user, "Swapped to metal foam synthesizer.")
+ if(METAL_FOAM)
+ nozzle_mode = EXTINGUISHER
+ to_chat(user, "Swapped to water extinguisher.")
+ update_icon(UPDATE_ICON_STATE)
+
+/obj/item/extinguisher/mini/mod/update_icon_state()
+ switch(nozzle_mode)
+ if(EXTINGUISHER)
+ icon_state = "atmos_nozzle_1"
+ if(NANOFROST)
+ icon_state = "atmos_nozzle_2"
+ if(METAL_FOAM)
+ icon_state = "atmos_nozzle_3"
+
+/obj/item/extinguisher/mini/mod/examine(mob/user)
+ . = ..()
+ switch(nozzle_mode)
+ if(EXTINGUISHER)
+ . += "[src] is currently set to extinguishing mode."
+ if(NANOFROST)
+ . += "[src] is currently set to nanofrost mode."
+ if(METAL_FOAM)
+ . += "[src] is currently set to metal foam mode."
+
+/obj/item/extinguisher/mini/mod/afterattack(atom/target, mob/user)
+ var/is_adjacent = user.Adjacent(target)
+ if(is_adjacent && AttemptRefill(target, user))
+ return
+ switch(nozzle_mode)
+ if(EXTINGUISHER)
+ ..()
+
+ if(NANOFROST)
+ if(reagents.total_volume < 100)
+ to_chat(user, "You need at least 100 units of water to use the nanofrost launcher!")
+ return
+ if(!COOLDOWN_FINISHED(src, nanofrost_cooldown))
+ to_chat(user, "Nanofrost launcher is still recharging.")
+ return
+ COOLDOWN_START(src, nanofrost_cooldown, 10 SECONDS)
+ reagents.remove_any(100)
+ var/obj/effect/nanofrost_container/A = new /obj/effect/nanofrost_container(get_turf(src))
+ log_game("[key_name(user)] used Nanofrost at [get_area(user)] ([user.x], [user.y], [user.z]).")
+ playsound(src, 'sound/items/syringeproj.ogg', 40, 1)
+ for(var/counter in 1 to 5)
+ step_towards(A, target)
+ sleep(2)
+ A.Smoke()
+
+ if(METAL_FOAM)
+ if(!is_adjacent|| !isturf(target))
+ return
+ if(metal_synthesis_charge <= 0)
+ to_chat(user, "Metal foam mix is still being synthesized.")
+ return
+ var/obj/effect/particle_effect/foam/F = new/obj/effect/particle_effect/foam(get_turf(target), 1)
+ F.amount = 0
+ reagents.remove_any(10)
+ metal_synthesis_charge--
+ addtimer(CALLBACK(src, PROC_REF(decrease_metal_charge)), 5 SECONDS)
+
+/obj/item/extinguisher/mini/mod/proc/decrease_metal_charge()
+ metal_synthesis_charge++
+
+#undef EXTINGUISHER
+#undef NANOFROST
+#undef METAL_FOAM
diff --git a/icons/obj/clothing/modsuit/mod_modules.dmi b/icons/obj/clothing/modsuit/mod_modules.dmi
index 37e377f952c..382401bffcb 100644
Binary files a/icons/obj/clothing/modsuit/mod_modules.dmi and b/icons/obj/clothing/modsuit/mod_modules.dmi differ
diff --git a/icons/obj/watertank.dmi b/icons/obj/watertank.dmi
index 0c0278d69ce..2ec36339d92 100644
Binary files a/icons/obj/watertank.dmi and b/icons/obj/watertank.dmi differ