From 28e053935934f9cafd5c159687ec57883ca6d3bf Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 14 Oct 2014 11:57:31 +0100 Subject: [PATCH] fix an issue with ZAS geometry not re-forming Signed-off-by: Mloc --- code/ZAS/Atom.dm | 2 +- code/ZAS/Connection.dm | 15 +++++++++------ code/ZAS/ConnectionGroup.dm | 6 +++--- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm index b4d1de20af4..1a2ad9cb02c 100644 --- a/code/ZAS/Atom.dm +++ b/code/ZAS/Atom.dm @@ -47,7 +47,7 @@ turf/c_airblock(turf/other) #ifdef ZASDBG ASSERT(isturf(other)) #endif - if(blocks_air) + if(blocks_air || other.blocks_air) return BLOCKED //Z-level handling code. Always block if there isn't an open space. diff --git a/code/ZAS/Connection.dm b/code/ZAS/Connection.dm index b9cf2278a18..37600dadead 100644 --- a/code/ZAS/Connection.dm +++ b/code/ZAS/Connection.dm @@ -76,11 +76,15 @@ Class Procs: edge.add_connection(src) /connection/proc/mark_direct() - state |= CONNECTION_DIRECT + if(!direct()) + state |= CONNECTION_DIRECT + edge.direct++ //world << "Marked direct." /connection/proc/mark_indirect() - state &= ~CONNECTION_DIRECT + if(direct()) + state &= ~CONNECTION_DIRECT + edge.direct-- //world << "Marked indirect." /connection/proc/mark_space() @@ -110,10 +114,9 @@ Class Procs: erase() return else if(block_status & ZONE_BLOCKED) - if(direct()) - mark_indirect() - else - mark_direct() + mark_indirect() + else + mark_direct() var/b_is_space = !istype(B,/turf/simulated) diff --git a/code/ZAS/ConnectionGroup.dm b/code/ZAS/ConnectionGroup.dm index 7fab5e94adc..94731228a6d 100644 --- a/code/ZAS/ConnectionGroup.dm +++ b/code/ZAS/ConnectionGroup.dm @@ -61,6 +61,7 @@ Class Procs: /connection_edge/var/zone/A /connection_edge/var/list/connecting_turfs = list() +/connection_edge/var/direct = 0 /connection_edge/var/coefficient = 0 @@ -69,6 +70,7 @@ Class Procs: /connection_edge/proc/add_connection(connection/c) coefficient++ + if(c.direct()) direct++ //world << "Connection added: [type] Coefficient: [coefficient]" /connection_edge/proc/remove_connection(connection/c) @@ -76,6 +78,7 @@ Class Procs: coefficient-- if(coefficient <= 0) erase() + if(c.direct()) direct-- /connection_edge/proc/contains_zone(zone/Z) @@ -114,7 +117,6 @@ Class Procs: /connection_edge/zone/var/zone/B -/connection_edge/zone/var/direct = 0 /connection_edge/zone/New(zone/A, zone/B) @@ -128,11 +130,9 @@ Class Procs: /connection_edge/zone/add_connection(connection/c) . = ..() connecting_turfs.Add(c.A) - if(c.direct()) direct++ /connection_edge/zone/remove_connection(connection/c) connecting_turfs.Remove(c.A) - if(c.direct()) direct-- . = ..() /connection_edge/zone/contains_zone(zone/Z)