This commit is contained in:
GinjaNinja32
2016-01-10 22:12:12 +00:00
parent e77a06e176
commit 12a38a3610

View File

@@ -344,68 +344,51 @@ obj/structure/cable/proc/cableColor(var/colorC)
. = list() // this will be a list of all connected power objects
var/turf/T
// Handle z-level connections.
if(d1 == 11 || d1 == 12)
// Connections below.
if(d1 == 11)
var/turf/turf = GetBelow(src)
if(turf)
. += power_list(turf, src, 12, 1)
// Connections above.
if(d1 == 12)
var/turf/turf = GetAbove(src)
if(turf)
. += power_list(turf, src, 11, 1)
//get matching cables from the first direction
else if(d1) //if not a node cable
T = get_step(src, d1)
// Handle up/down cables
if(d1 == 11 || d2 == 11)
T = GetBelow(src)
if(T)
. += power_list(T, src, turn(d1, 180), powernetless_only) //get adjacents matching cables
if(d1&(d1-1)) //diagonal direction, must check the 4 possibles adjacents tiles
T = get_step(src,d1&3) // go north/south
. += power_list(T, src, 12, 1)
if(d1 == 12 || d1 == 12)
T = GetAbove(src)
if(T)
. += power_list(T, src, d1 ^ 3, powernetless_only) //get diagonally matching cables
T = get_step(src,d1&12) // go east/west
. += power_list(T, src, 11, 1)
// Handle standard cables in adjacent turfs
for(var/cable_dir in list(d1, d2))
if(cable_dir == 11 || cable_dir == 12 || cable_dir == 0)
continue
var/reverse = reverse_dir[cable_dir]
T = get_step(src, cable_dir)
if(T)
. += power_list(T, src, d1 ^ 12, powernetless_only) //get diagonally matching cables
for(var/obj/structure/cable/C in T)
if((C.d1 && C.d1 == reverse) || (C.d2 && C.d2 == reverse))
. += C
if(cable_dir & (cable_dir - 1)) // Diagonal, check for /\/\/\ style cables along cardinal directions
for(var/pair in list(NORTH|SOUTH, EAST|WEST))
T = get_step(src, cable_dir & pair)
if(T)
var/req_dir = cable_dir ^ pair
for(var/obj/structure/cable/C in T)
if((C.d1 && C.d1 == req_dir) || (C.d2 && C.d2 == req_dir))
. += C
. += power_list(loc, src, d1, powernetless_only) //get on turf matching cables
// Handle cables on the same turf as us
for(var/obj/structure/cable/C in loc)
if(C.d1 == d1 || C.d2 == d1 || C.d1 == d2 || C.d2 == d2) // if either of C's d1 and d2 match either of ours
. += C
if(d1 == 0)
for(var/obj/machinery/power/P in loc)
if(P.powernet == 0) continue // exclude APCs with powernet=0
if(!powernetless_only || !P.powernet)
. += P
// Second direction.
// Handle z-level connections.
if(d2 == 11 || d2 == 12)
// Connections below.
if(d2 == 11)
var/turf/turf = GetBelow(src)
if(turf)
. += power_list(turf, src, 12, 1)
// Connections above.
if(d2 == 12)
var/turf/turf = GetAbove(src)
if(turf)
. += power_list(turf, src, 11, 1)
else
//do the same on the second direction (which can't be 0)
T = get_step(src, d2)
if(T)
. += power_list(T, src, turn(d2, 180), powernetless_only) //get adjacents matching cables
if(d2&(d2-1)) //diagonal direction, must check the 4 possibles adjacents tiles
T = get_step(src,d2&3) // go north/south
if(T)
. += power_list(T, src, d2 ^ 3, powernetless_only) //get diagonally matching cables
T = get_step(src,d2&12) // go east/west
if(T)
. += power_list(T, src, d2 ^ 12, powernetless_only) //get diagonally matching cables
. += power_list(loc, src, d2, powernetless_only) //get on turf matching cables
return .
// if the caller asked for powernetless cables only, dump the ones with powernets
if(powernetless_only)
for(var/obj/structure/cable/C in .)
if(C.powernet)
. -= C
//should be called after placing a cable which extends another cable, creating a "smooth" cable that no longer terminates in the centre of a turf.
//needed as this can, unlike other placements, disconnect cables