diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index f0ea47e98e3..54510858f14 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -1,5 +1,9 @@
// Foam
// Similar to smoke, but slower and mobs absorb its reagent through their exposed skin.
+#define ALUMINUM_FOAM 1
+#define IRON_FOAM 2
+#define RESIN_FOAM 3
+
/obj/effect/particle_effect/foam
name = "foam"
@@ -22,16 +26,16 @@
/obj/effect/particle_effect/foam/metal
name = "aluminium foam"
- metal = 1
+ metal = ALUMINUM_FOAM
icon_state = "mfoam"
/obj/effect/particle_effect/foam/metal/iron
name = "iron foam"
- metal = 2
+ metal = IRON_FOAM
/obj/effect/particle_effect/foam/metal/resin
name = "resin foam"
- metal = 3
+ metal = RESIN_FOAM
/obj/effect/particle_effect/foam/New(loc)
@@ -48,12 +52,12 @@
/obj/effect/particle_effect/foam/proc/kill_foam()
STOP_PROCESSING(SSfastprocess, src)
switch(metal)
- if(1)
- new /obj/structure/foamedmetal(src.loc)
- if(2)
- new /obj/structure/foamedmetal/iron(src.loc)
- if(3)
- new /obj/structure/foamedmetal/resin(src.loc)
+ if(ALUMINUM_FOAM)
+ new /obj/structure/foamedmetal(get_turf(src))
+ if(IRON_FOAM)
+ new /obj/structure/foamedmetal/iron(get_turf(src))
+ if(RESIN_FOAM)
+ new /obj/structure/foamedmetal/resin(get_turf(src))
flick("[icon_state]-disolve", src)
QDEL_IN(src, 5)
@@ -240,13 +244,15 @@
/obj/structure/foamedmetal/resin
name = "ATMOS Resin"
desc = "A lightweight, transparent resin used to suffocate fires, scrub the air of toxins, and restore the air to a safe temperature"
- opacity = 0
+ opacity = FALSE
icon_state = "atmos_resin"
alpha = 120
obj_integrity = 10
max_integrity = 10
+ layer = EDGED_TURF_LAYER
-/obj/structure/foamedmetal/resin/New()
+/obj/structure/foamedmetal/resin/Initialize()
+ . = ..()
if(isopenturf(loc))
var/turf/open/O = loc
if(O.air)
@@ -256,17 +262,21 @@
qdel(H)
var/list/G_gases = G.gases
for(var/I in G_gases)
- if(I != "o2")
+ if(I != "o2" && I != "n2")
G.gases[I][MOLES] = 0
G.garbage_collect()
O.air_update_turf()
for(var/obj/machinery/atmospherics/components/unary/U in O)
- if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber.
- U.welded = 1
+ if(!U.welded)
+ U.welded = TRUE
U.update_icon()
U.visible_message("[U] sealed shut!")
for(var/mob/living/L in O)
L.ExtinguishMob()
for(var/obj/item/Item in O)
Item.extinguish()
- ..()
+
+
+#undef ALUMINUM_FOAM
+#undef IRON_FOAM
+#undef RESIN_FOAM
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index 5c4a73a6d39..7431d4ff850 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -212,6 +212,7 @@
safety = 0
max_water = 200
power = 8
+ force = 10
precision = 1
cooling_power = 5
w_class = WEIGHT_CLASS_HUGE
@@ -278,10 +279,10 @@
if(resin_cooldown)
to_chat(user, "Resin launcher is still recharging...")
return
- resin_cooldown = 1
+ resin_cooldown = TRUE
R.remove_any(100)
- var/obj/effect/resin_container/A = new /obj/effect/resin_container(get_turf(src))
- log_game("[user.ckey] ([user.name]) used Resin Launcher at [get_area(user)] ([user.x], [user.y], [user.z]).")
+ var/obj/effect/resin_container/A = new (get_turf(src))
+ log_game("[key_name_admin(user)] used Resin Launcher at [get_area(user)] [COORD(user)].")
playsound(src,'sound/items/syringeproj.ogg',40,1)
for(var/a=0, a<5, a++)
step_towards(A, target)
@@ -289,13 +290,13 @@
A.Smoke()
spawn(100)
if(src)
- resin_cooldown = 0
+ resin_cooldown = FALSE
return
if(nozzle_mode == RESIN_FOAM)
if(!Adj|| !isturf(target))
return
if(metal_synthesis_cooldown < 5)
- var/obj/effect/particle_effect/foam/metal/F = new /obj/effect/particle_effect/foam/metal/resin(get_turf(target))
+ var/obj/effect/particle_effect/foam/metal/resin/F = new (get_turf(target))
F.amount = 0
metal_synthesis_cooldown++
spawn(100)
@@ -319,7 +320,7 @@
qdel(src)
#undef EXTINGUISHER
-#undef resin
+#undef RESIN_LAUNCHER
#undef RESIN_FOAM
/obj/item/weapon/reagent_containers/chemtank
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index fe76a59db96..841ce45b7b5 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -66,22 +66,24 @@
icon_state = "holosign_engi"
/obj/structure/holosign/barrier/atmos
- name = "holo atmospheric fan"
- desc = "A holographic fan that acts as a barrier for atmospheric changes."
- icon_state = "holo_fan"
+ name = "holo firelock"
+ desc = "A holographic barrier resembling a firelock. Though it does not prevent solid objects from passing through, gas is kept out."
+ icon_state = "holo_firelock"
density = FALSE
- anchored = 1
+ layer = ABOVE_MOB_LAYER
+ anchored = TRUE
CanAtmosPass = ATMOS_PASS_NO
- layer = ABOVE_NORMAL_TURF_LAYER
+ layer = ABOVE_MOB_LAYER
+ alpha = 150
-/obj/structure/holosign/barrier/atmos/New()
- ..()
- air_update_turf(1)
+/obj/structure/holosign/barrier/atmos/Initialize()
+ . = ..()
+ air_update_turf(TRUE)
/obj/structure/holosign/barrier/atmos/Destroy()
- CanAtmosPass = ATMOS_PASS_YES
- air_update_turf(1)
- return ..()
+ var/turf/T = get_turf(src)
+ . = ..()
+ T.air_update_turf(TRUE)
/obj/structure/holosign/barrier/cyborg
name = "Energy Field"
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 3f2e98e1a58..885ad621311 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ