diff --git a/baystation12.dme b/baystation12.dme
index c9e41c74de..d8416d1446 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -459,6 +459,7 @@
#include "code\game\objects\effects\decals\crayon.dm"
#include "code\game\objects\effects\decals\misc.dm"
#include "code\game\objects\effects\decals\remains.dm"
+#include "code\game\objects\effects\decals\warning_stripes.dm"
#include "code\game\objects\effects\decals\Cleanable\aliens.dm"
#include "code\game\objects\effects\decals\Cleanable\fuel.dm"
#include "code\game\objects\effects\decals\Cleanable\humans.dm"
diff --git a/code/ZAS/Connection.dm b/code/ZAS/Connection.dm
index ab479450cf..ee8a5470d8 100644
--- a/code/ZAS/Connection.dm
+++ b/code/ZAS/Connection.dm
@@ -188,7 +188,7 @@ connection
//If there are more than one connection, decrement the number of connections
//Otherwise, remove all connections between the zones.
- if(zone_2 in zone_1.connected_zones)
+ if(zone_2 in zone_1.closed_connection_zones)
if(zone_1.closed_connection_zones[zone_2] > 1)
zone_1.closed_connection_zones[zone_2]--
else
@@ -198,7 +198,7 @@ connection
zone_1.closed_connection_zones = null
//Then do the same for the other zone.
- if(zone_1 in zone_2.connected_zones)
+ if(zone_1 in zone_2.closed_connection_zones)
if(zone_2.closed_connection_zones[zone_1] > 1)
zone_2.closed_connection_zones[zone_1]--
else
diff --git a/code/ZAS/Debug.dm b/code/ZAS/Debug.dm
index a656285825..b3f069a554 100644
--- a/code/ZAS/Debug.dm
+++ b/code/ZAS/Debug.dm
@@ -3,16 +3,15 @@ client/proc/Zone_Info(turf/T as null|turf)
set category = "Debug"
if(T)
if(T.zone)
- T.zone.DebugDisplay(mob)
+ T.zone.DebugDisplay(src)
else
mob << "No zone here."
else
- for(T in world)
- T.overlays -= 'debug_space.dmi'
- T.overlays -= 'debug_group.dmi'
- T.overlays -= 'debug_connect.dmi'
-
+ if(zone_debug_images)
+ images -= zone_debug_images
+ zone_debug_images = null
+client/var/list/zone_debug_images
client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
set category = "Debug"
@@ -57,50 +56,60 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
zone/proc
- DebugDisplay(mob/M)
+ DebugDisplay(client/client)
+ if(!istype(client))
+ return
+
if(!dbg_output)
dbg_output = 1 //Don't want to be spammed when someone investigates a zone...
+
+ if(!client.zone_debug_images)
+ client.zone_debug_images = list()
for(var/turf/T in contents)
- T.overlays += 'debug_group.dmi'
+ client.zone_debug_images += image('debug_group.dmi', T)
for(var/turf/space/S in unsimulated_tiles)
- S.overlays += 'debug_space.dmi'
+ client.zone_debug_images += image('debug_space.dmi', S)
- M << "Zone Air Contents"
- M << "Oxygen: [air.oxygen]"
- M << "Nitrogen: [air.nitrogen]"
- M << "Plasma: [air.toxins]"
- M << "Carbon Dioxide: [air.carbon_dioxide]"
- M << "Temperature: [air.temperature]"
- M << "Heat Energy: [air.temperature * air.heat_capacity()]"
- M << "Pressure: [air.return_pressure()]"
- M << ""
- M << "Space Tiles: [length(unsimulated_tiles)]"
- M << "Movable Objects: [length(movables())]"
- M << "Connections: [length(connections)]"
+ client << "Zone Air Contents"
+ client << "Oxygen: [air.oxygen]"
+ client << "Nitrogen: [air.nitrogen]"
+ client << "Plasma: [air.toxins]"
+ client << "Carbon Dioxide: [air.carbon_dioxide]"
+ client << "Temperature: [air.temperature] K"
+ client << "Heat Energy: [air.temperature * air.heat_capacity()] J"
+ client << "Pressure: [air.return_pressure()] KPa"
+ client << ""
+ client << "Space Tiles: [length(unsimulated_tiles)]"
+ client << "Movable Objects: [length(movables())]"
+ client << "Connections: [length(connections)]"
for(var/connection/C in connections)
- M << "[C.A] --> [C.B] [(C.indirect?"Open":"Closed")]"
- C.A.overlays += 'debug_connect.dmi'
- C.B.overlays += 'debug_connect.dmi'
+ client << "\ref[C] [C.A] --> [C.B] [(C.indirect?"Open":"Closed")]"
+ client.zone_debug_images += image('debug_connect.dmi', C.A)
+ client.zone_debug_images += image('debug_connect.dmi', C.B)
+
+ client << "Connected Zones:"
+ for(var/zone/zone in connected_zones)
+ client << "\ref[zone] [zone] - [connected_zones[zone]] (Connected)"
+
+ for(var/zone/zone in closed_connection_zones)
+ client << "\ref[zone] [zone] - [closed_connection_zones[zone]] (Unconnected)"
+
for(var/C in connections)
if(!istype(C,/connection))
- M << "[C] (Not Connection!)"
+ client << "[C] (Not Connection!)"
+
+ client.images += client.zone_debug_images
else
dbg_output = 0
- for(var/turf/T in contents)
- T.overlays -= 'debug_group.dmi'
+ client.images -= client.zone_debug_images
+ client.zone_debug_images = null
- for(var/turf/space/S in unsimulated_tiles)
- S.overlays -= 'debug_space.dmi'
-
- for(var/connection/C in connections)
- C.A.overlays -= 'debug_connect.dmi'
- C.B.overlays -= 'debug_connect.dmi'
for(var/zone/Z in zones)
if(Z.air == air && Z != src)
var/turf/zloc = pick(Z.contents)
- M << "\red Illegal air datum shared by: [zloc.loc.name]"
+ client << "\red Illegal air datum shared by: [zloc.loc.name]"
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index e8d4078593..dea31aab3f 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -147,8 +147,26 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
icon = 'icons/obj/doors/Door2x1glassfull.dmi'
opacity = 0
doortype = 10
+ bound_width = 64
glass = 1
+ update_nearby_tiles(need_rebuild)
+ . = ..()
+
+ if(!.)
+ return
+
+ var/turf/simulated/second_turf = get_step(src, EAST)
+ var/turf/simulated/north = get_step(second_turf, NORTH)
+ var/turf/simulated/east = get_step(second_turf, EAST)
+ var/turf/simulated/south = get_step(second_turf, SOUTH)
+
+ update_heat_protection(second_turf)
+
+ if(istype(north)) air_master.tiles_to_update |= north
+ if(istype(south)) air_master.tiles_to_update |= south
+ if(istype(east)) air_master.tiles_to_update |= east
+
/obj/machinery/door/airlock/freezer
name = "Freezer Airlock"
icon = 'icons/obj/doors/Doorfreezer.dmi'
@@ -1306,29 +1324,31 @@ About the new airlock wires panel:
if( !arePowerSystemsOn() || (stat & NOPOWER) || isWireCut(AIRLOCK_WIRE_DOOR_BOLTS) )
return
if(safe)
- if(locate(/mob/living) in get_turf(src))
- // playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) //THE BUZZING IT NEVER STOPS -Pete
- spawn (60)
- close()
- return
+ for(var/turf/turf in locs)
+ if(locate(/mob/living) in turf)
+ // playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) //THE BUZZING IT NEVER STOPS -Pete
+ spawn (60)
+ close()
+ return
- for(var/mob/living/M in get_turf(src))
- if(isrobot(M))
- M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
- else
- M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
- M.SetStunned(5)
- M.SetWeakened(5)
- var/obj/effect/stop/S
- S = new /obj/effect/stop
- S.victim = M
- S.loc = src.loc
- spawn(20)
- del(S)
- M.emote("scream")
- var/turf/location = src.loc
- if(istype(location, /turf/simulated))
- location.add_blood(M)
+ for(var/turf/turf in locs)
+ for(var/mob/living/M in turf)
+ if(isrobot(M))
+ M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
+ else
+ M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
+ M.SetStunned(5)
+ M.SetWeakened(5)
+ var/obj/effect/stop/S
+ S = new /obj/effect/stop
+ S.victim = M
+ S.loc = src.loc
+ spawn(20)
+ del(S)
+ M.emote("scream")
+ var/turf/location = src.loc
+ if(istype(location, /turf/simulated))
+ location.add_blood(M)
use_power(50)
if(istype(src, /obj/machinery/door/airlock/glass))
@@ -1337,9 +1357,10 @@ About the new airlock wires panel:
playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1)
else
playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1)
- var/obj/structure/window/killthis = (locate(/obj/structure/window) in get_turf(src))
- if(killthis)
- killthis.ex_act(2)//Smashin windows
+ for(var/turf/turf in locs)
+ var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf)
+ if(killthis)
+ killthis.ex_act(2)//Smashin windows
..()
return
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 58b838d555..93f0abb4d0 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -272,4 +272,25 @@
if(istype(source)) air_master.tiles_to_update += source
if(istype(destination)) air_master.tiles_to_update += destination
return 1
-*/
\ No newline at end of file
+*/
+
+/obj/machinery/door/firedoor/multi_tile
+ icon = 'DoorHazard2x1.dmi'
+ bound_width = 64
+
+
+ update_nearby_tiles(need_rebuild)
+ if(!.)
+ return
+
+ . = ..()
+ var/turf/simulated/second_turf = get_step(src, EAST)
+ var/turf/simulated/north = get_step(second_turf, NORTH)
+ var/turf/simulated/east = get_step(second_turf, EAST)
+ var/turf/simulated/south = get_step(second_turf, SOUTH)
+
+ update_heat_protection(second_turf)
+
+ if(istype(north)) air_master.tiles_to_update |= north
+ if(istype(south)) air_master.tiles_to_update |= south
+ if(istype(east)) air_master.tiles_to_update |= east
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm
new file mode 100644
index 0000000000..89067ada2a
--- /dev/null
+++ b/code/game/objects/effects/decals/warning_stripes.dm
@@ -0,0 +1,9 @@
+/obj/effect/decal/warning_stripes
+ icon = 'icons/effects/warning_stripes.dmi'
+ layer = 2
+
+/obj/effect/decal/warning_stripes/New()
+ . = ..()
+
+ loc.overlays += src
+ del src
\ No newline at end of file
diff --git a/icons/effects/warning_stripes.dmi b/icons/effects/warning_stripes.dmi
new file mode 100644
index 0000000000..a0cf5e3244
Binary files /dev/null and b/icons/effects/warning_stripes.dmi differ
diff --git a/icons/obj/doors/DoorHazard.dmi b/icons/obj/doors/DoorHazard.dmi
index f828889ba2..757c94f327 100644
Binary files a/icons/obj/doors/DoorHazard.dmi and b/icons/obj/doors/DoorHazard.dmi differ
diff --git a/icons/obj/doors/DoorHazard2x1.dmi b/icons/obj/doors/DoorHazard2x1.dmi
new file mode 100644
index 0000000000..102bcf081d
Binary files /dev/null and b/icons/obj/doors/DoorHazard2x1.dmi differ