mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
WHOOPS
Signed-off-by: unknown <Colm@Blue.(none)>
This commit is contained in:
61
code/ZAS/Connection.dm
Normal file
61
code/ZAS/Connection.dm
Normal file
@@ -0,0 +1,61 @@
|
||||
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
|
||||
Reference in New Issue
Block a user