Files
vgstation13/code/ZAS/Connection.dm
unknown a7bce8a609 WHOOPS
Signed-off-by: unknown <Colm@Blue.(none)>
2012-03-15 22:52:29 +00:00

61 lines
1.7 KiB
Plaintext

connection
var
turf //The turfs involved in the connection.
A
B
indirect = 0 //If the connection is purely indirect, the zones should not join.
last_updated //The tick at which this was last updated.
New(turf/T,turf/O)
A = T
B = O
if(A.zone)
if(!A.zone.connections) A.zone.connections = new()
A.zone.connections += src
if(B.zone)
if(!B.zone.connections) B.zone.connections = new()
B.zone.connections += src
if(A.zone && B.zone)
if(!A.zone.connected_zones)
A.zone.connected_zones = list()
if(!B.zone.connected_zones)
B.zone.connected_zones = list()
if(!(B.zone in A.zone.connected_zones))
A.zone.connected_zones += B.zone
A.zone.connected_zones[B.zone] = 1
else
A.zone.connected_zones[B.zone]++
if(!(A.zone in B.zone.connected_zones))
B.zone.connected_zones += A.zone
B.zone.connected_zones[A.zone] = 1
else
B.zone.connected_zones[A.zone]++
Del()
if(A.zone && A.zone.connections)
A.zone.connections -= src
if(B.zone && B.zone.connections)
B.zone.connections -= src
if(A.zone && B.zone)
if(B.zone in A.zone.connected_zones)
if(A.zone.connected_zones[B.zone] > 1)
A.zone.connected_zones[B.zone]--
else
A.zone.connected_zones -= B.zone
if(A.zone in B.zone.connected_zones)
if(B.zone.connected_zones[A.zone] > 1)
B.zone.connected_zones[A.zone]--
else
B.zone.connected_zones -= A.zone
if(A.zone.connected_zones && !A.zone.connected_zones.len)
A.zone.connected_zones = null
if(B.zone.connected_zones && !B.zone.connected_zones.len)
B.zone.connected_zones = null
. = ..()
proc/Cleanup()
if(A.zone == B.zone) del src
if(!A.zone || !B.zone) del src