mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
61 lines
1.7 KiB
Plaintext
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 |