mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Power Magnets Optimization #1
Currently removed all instances of makepowernets() and update_network() (Update network just called makepowernets()) from cable.dm. All actings regarding cables went from 0.5 to <0.08 per call. -Added a verb in the debug panel called Make Powernets. This calls makepowernets(). git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1729 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -79,6 +79,7 @@
|
|||||||
verbs += /client/proc/modifytemperature
|
verbs += /client/proc/modifytemperature
|
||||||
verbs += /client/proc/callproc
|
verbs += /client/proc/callproc
|
||||||
verbs += /client/proc/Cell
|
verbs += /client/proc/Cell
|
||||||
|
verbs += /client/proc/cmd_debug_make_powernets
|
||||||
verbs += /client/proc/cmd_debug_del_all
|
verbs += /client/proc/cmd_debug_del_all
|
||||||
verbs += /client/proc/cmd_debug_tog_aliens
|
verbs += /client/proc/cmd_debug_tog_aliens
|
||||||
verbs += /client/proc/Debug2 //debug toggle switch
|
verbs += /client/proc/Debug2 //debug toggle switch
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
return
|
return
|
||||||
if(istype(M, /mob/living/carbon/human))
|
if(istype(M, /mob/living/carbon/human))
|
||||||
log_admin("[key_name(src)] has made [M.key] an abomination.")
|
log_admin("[key_name(src)] has made [M.key] an abomination.")
|
||||||
|
|
||||||
// spawn(10)
|
// spawn(10)
|
||||||
// M.make_abomination()
|
// M.make_abomination()
|
||||||
|
|
||||||
@@ -296,6 +296,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
log_admin("[key_name(src)] has deleted all instances of [hsbitem].")
|
log_admin("[key_name(src)] has deleted all instances of [hsbitem].")
|
||||||
message_admins("[key_name_admin(src)] has deleted all instances of [hsbitem].", 0)
|
message_admins("[key_name_admin(src)] has deleted all instances of [hsbitem].", 0)
|
||||||
|
|
||||||
|
/client/proc/cmd_debug_make_powernets()
|
||||||
|
set category = "Debug"
|
||||||
|
set name = "Make Powernets"
|
||||||
|
makepowernets()
|
||||||
|
log_admin("[key_name(src)] has remade the powernet. makepowernets() called.")
|
||||||
|
message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0)
|
||||||
|
|
||||||
/client/proc/cmd_debug_tog_aliens()
|
/client/proc/cmd_debug_tog_aliens()
|
||||||
set category = "Server"
|
set category = "Server"
|
||||||
set name = "Toggle Aliens"
|
set name = "Toggle Aliens"
|
||||||
@@ -361,18 +368,18 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
M.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), M.slot_r_hand)
|
M.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), M.slot_r_hand)
|
||||||
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_hand)
|
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_hand)
|
||||||
M.equip_if_possible(new /obj/item/weapon/smokebomb(M), M.slot_r_store)
|
M.equip_if_possible(new /obj/item/weapon/smokebomb(M), M.slot_r_store)
|
||||||
|
|
||||||
|
|
||||||
if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0
|
if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0
|
||||||
M.equip_if_possible(new /obj/item/clothing/under/det(M), M.slot_w_uniform)
|
M.equip_if_possible(new /obj/item/clothing/under/det(M), M.slot_w_uniform)
|
||||||
M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes)
|
M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes)
|
||||||
|
|
||||||
M.equip_if_possible(new /obj/item/clothing/suit/det_suit(M), M.slot_wear_suit)
|
M.equip_if_possible(new /obj/item/clothing/suit/det_suit(M), M.slot_wear_suit)
|
||||||
M.equip_if_possible(new /obj/item/clothing/glasses/thermal/monocle(M), M.slot_glasses)
|
M.equip_if_possible(new /obj/item/clothing/glasses/thermal/monocle(M), M.slot_glasses)
|
||||||
M.equip_if_possible(new /obj/item/clothing/head/det_hat(M), M.slot_head)
|
M.equip_if_possible(new /obj/item/clothing/head/det_hat(M), M.slot_head)
|
||||||
|
|
||||||
M.equip_if_possible(new /obj/item/weapon/cloaking_device(M), M.slot_r_store)
|
M.equip_if_possible(new /obj/item/weapon/cloaking_device(M), M.slot_r_store)
|
||||||
|
|
||||||
M.equip_if_possible(new /obj/item/weapon/gun/projectile(M), M.slot_r_hand)
|
M.equip_if_possible(new /obj/item/weapon/gun/projectile(M), M.slot_r_hand)
|
||||||
M.equip_if_possible(new /obj/item/ammo_magazine(M), M.slot_l_store)
|
M.equip_if_possible(new /obj/item/ammo_magazine(M), M.slot_l_store)
|
||||||
|
|
||||||
@@ -381,13 +388,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
M.equip_if_possible(new /obj/item/clothing/suit/chef(M), M.slot_wear_suit)
|
M.equip_if_possible(new /obj/item/clothing/suit/chef(M), M.slot_wear_suit)
|
||||||
M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes)
|
M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes)
|
||||||
M.equip_if_possible(new /obj/item/clothing/head/chefhat(M), M.slot_head)
|
M.equip_if_possible(new /obj/item/clothing/head/chefhat(M), M.slot_head)
|
||||||
|
|
||||||
|
|
||||||
M.equip_if_possible(new /obj/item/weapon/kitchen/rollingpin(M), M.slot_r_hand)
|
M.equip_if_possible(new /obj/item/weapon/kitchen/rollingpin(M), M.slot_r_hand)
|
||||||
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_hand)
|
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_hand)
|
||||||
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_r_store)
|
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_r_store)
|
||||||
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_s_store)
|
M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_s_store)
|
||||||
|
|
||||||
if ("tournament janitor")
|
if ("tournament janitor")
|
||||||
M.equip_if_possible(new /obj/item/clothing/under/rank/janitor(M), M.slot_w_uniform)
|
M.equip_if_possible(new /obj/item/clothing/under/rank/janitor(M), M.slot_w_uniform)
|
||||||
M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes)
|
M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes)
|
||||||
@@ -395,12 +402,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
for(var/obj/item/I in backpack)
|
for(var/obj/item/I in backpack)
|
||||||
del(I)
|
del(I)
|
||||||
M.equip_if_possible(backpack, M.slot_back)
|
M.equip_if_possible(backpack, M.slot_back)
|
||||||
|
|
||||||
M.equip_if_possible(new /obj/item/weapon/mop(M), M.slot_r_hand)
|
M.equip_if_possible(new /obj/item/weapon/mop(M), M.slot_r_hand)
|
||||||
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M)
|
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M)
|
||||||
bucket.reagents.add_reagent("water", 70)
|
bucket.reagents.add_reagent("water", 70)
|
||||||
M.equip_if_possible(bucket, M.slot_l_hand)
|
M.equip_if_possible(bucket, M.slot_l_hand)
|
||||||
|
|
||||||
M.equip_if_possible(new /obj/item/weapon/chem_grenade/cleaner(M), M.slot_r_store)
|
M.equip_if_possible(new /obj/item/weapon/chem_grenade/cleaner(M), M.slot_r_store)
|
||||||
M.equip_if_possible(new /obj/item/weapon/chem_grenade/cleaner(M), M.slot_l_store)
|
M.equip_if_possible(new /obj/item/weapon/chem_grenade/cleaner(M), M.slot_l_store)
|
||||||
M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack)
|
M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack)
|
||||||
|
|||||||
@@ -26,25 +26,32 @@
|
|||||||
|
|
||||||
var/obj/cable/NC = new(T)
|
var/obj/cable/NC = new(T)
|
||||||
|
|
||||||
var/color = "red"
|
NC.cableColor(coil.color)
|
||||||
if(coil.color)
|
|
||||||
color = coil.color
|
|
||||||
NC.color = coil.color
|
|
||||||
switch(color)
|
|
||||||
if("red")
|
|
||||||
NC.icon = 'power_cond_red.dmi'
|
|
||||||
if("yellow")
|
|
||||||
NC.icon = 'power_cond_yellow.dmi'
|
|
||||||
if("green")
|
|
||||||
NC.icon = 'power_cond_green.dmi'
|
|
||||||
if("blue")
|
|
||||||
NC.icon = 'power_cond_blue.dmi'
|
|
||||||
|
|
||||||
NC.d1 = 0
|
NC.d1 = 0
|
||||||
NC.d2 = dirn
|
NC.d2 = dirn
|
||||||
NC.add_fingerprint()
|
NC.add_fingerprint()
|
||||||
NC.updateicon()
|
NC.updateicon()
|
||||||
NC.update_network()
|
|
||||||
|
NC.mergeConnectedNetworks(NC.d2)
|
||||||
|
NC.mergeConnectedNetworksOnTurf()
|
||||||
|
if(netnum == 0 && NC.netnum == 0)
|
||||||
|
var/datum/powernet/PN = new()
|
||||||
|
|
||||||
|
PN.number = powernets.len + 1
|
||||||
|
powernets += PN
|
||||||
|
NC.netnum = PN.number
|
||||||
|
netnum = PN.number
|
||||||
|
PN.cables += NC
|
||||||
|
PN.nodes += src
|
||||||
|
powernet = PN
|
||||||
|
else if(netnum == 0)
|
||||||
|
netnum = NC.netnum
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
powernet = PN
|
||||||
|
PN.nodes += src
|
||||||
|
NC.mergeConnectedNetworksOnTurf()
|
||||||
|
|
||||||
coil.use(1)
|
coil.use(1)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
@@ -297,30 +304,33 @@
|
|||||||
|
|
||||||
var/obj/cable/C = new(F)
|
var/obj/cable/C = new(F)
|
||||||
|
|
||||||
var/color_n = "red"
|
C.cableColor(color)
|
||||||
if(color)
|
|
||||||
color_n = color
|
|
||||||
C.color = color_n
|
|
||||||
switch(color)
|
|
||||||
if("red")
|
|
||||||
C.icon = 'power_cond_red.dmi'
|
|
||||||
if("yellow")
|
|
||||||
C.icon = 'power_cond_yellow.dmi'
|
|
||||||
if("green")
|
|
||||||
C.icon = 'power_cond_green.dmi'
|
|
||||||
if("blue")
|
|
||||||
C.icon = 'power_cond_blue.dmi'
|
|
||||||
|
|
||||||
C.d1 = 0
|
C.d1 = 0
|
||||||
C.d2 = dirn
|
C.d2 = dirn
|
||||||
C.add_fingerprint(user)
|
C.add_fingerprint(user)
|
||||||
C.updateicon()
|
C.updateicon()
|
||||||
C.update_network()
|
C.mergeConnectedNetworks(C.d2)
|
||||||
|
C.mergeConnectedNetworksOnTurf()
|
||||||
|
if(C.netnum == 0)
|
||||||
|
var/counter = 1
|
||||||
|
while(counter < powernets.len + 1)
|
||||||
|
if(!powernets[counter])
|
||||||
|
C.netnum = counter
|
||||||
|
var/datum/powernet/PN = powernets[counter]
|
||||||
|
PN.cables += C
|
||||||
|
break
|
||||||
|
counter++
|
||||||
|
if(C.netnum == 0)
|
||||||
|
var/datum/powernet/PN = new()
|
||||||
|
|
||||||
|
PN.number = powernets.len + 1
|
||||||
|
powernets += PN
|
||||||
|
C.netnum = PN.number
|
||||||
|
PN.cables += C
|
||||||
|
|
||||||
|
|
||||||
use(1)
|
use(1)
|
||||||
if (C.shock(user, 50))
|
|
||||||
if (prob(50))
|
|
||||||
new/obj/item/weapon/cable_coil(C.loc, C.d1 ? 2 : 1, C.color)
|
|
||||||
del(C)
|
|
||||||
//src.laying = 1
|
//src.laying = 1
|
||||||
//last = C
|
//last = C
|
||||||
|
|
||||||
@@ -329,7 +339,6 @@
|
|||||||
|
|
||||||
/obj/item/weapon/cable_coil/proc/cable_join(obj/cable/C, mob/user)
|
/obj/item/weapon/cable_coil/proc/cable_join(obj/cable/C, mob/user)
|
||||||
|
|
||||||
|
|
||||||
var/turf/U = user.loc
|
var/turf/U = user.loc
|
||||||
if(!isturf(U))
|
if(!isturf(U))
|
||||||
return
|
return
|
||||||
@@ -365,39 +374,27 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/obj/cable/NC = new(U)
|
var/obj/cable/NC = new(U)
|
||||||
|
NC.cableColor(color)
|
||||||
var/color_n = "red"
|
|
||||||
if(color)
|
|
||||||
color_n = color
|
|
||||||
NC.color = color_n
|
|
||||||
switch(color)
|
|
||||||
if("red")
|
|
||||||
NC.icon = 'power_cond_red.dmi'
|
|
||||||
if("yellow")
|
|
||||||
NC.icon = 'power_cond_yellow.dmi'
|
|
||||||
if("green")
|
|
||||||
NC.icon = 'power_cond_green.dmi'
|
|
||||||
if("blue")
|
|
||||||
NC.icon = 'power_cond_blue.dmi'
|
|
||||||
|
|
||||||
NC.d1 = 0
|
NC.d1 = 0
|
||||||
NC.d2 = fdirn
|
NC.d2 = fdirn
|
||||||
NC.add_fingerprint()
|
NC.add_fingerprint()
|
||||||
NC.updateicon()
|
NC.updateicon()
|
||||||
NC.update_network()
|
|
||||||
|
NC.netnum = C.netnum
|
||||||
|
var/datum/powernet/PN = powernets[C.netnum]
|
||||||
|
PN.cables += NC
|
||||||
|
NC.mergeConnectedNetworksOnTurf()
|
||||||
use(1)
|
use(1)
|
||||||
if (NC.shock(user, 50))
|
C.shock(user, 25)
|
||||||
if (prob(50))
|
|
||||||
new/obj/item/weapon/cable_coil(NC.loc, NC.d1 ? 2 : 1, NC.color)
|
|
||||||
del(NC)
|
|
||||||
|
|
||||||
return
|
return
|
||||||
else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub
|
else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub
|
||||||
// if so, make it a full cable pointing from it's old direction to our dirn
|
// if so, make it a full cable pointing from it's old direction to our dirn
|
||||||
|
|
||||||
var/nd1 = C.d2 // these will be the new directions
|
var/nd1 = C.d2 // these will be the new directions
|
||||||
var/nd2 = dirn
|
var/nd2 = dirn
|
||||||
|
|
||||||
|
|
||||||
if(nd1 > nd2) // swap directions to match icons/states
|
if(nd1 > nd2) // swap directions to match icons/states
|
||||||
nd1 = dirn
|
nd1 = dirn
|
||||||
nd2 = C.d2
|
nd2 = C.d2
|
||||||
@@ -410,48 +407,163 @@
|
|||||||
user << "There's already a cable at that position."
|
user << "There's already a cable at that position."
|
||||||
return
|
return
|
||||||
C.shock(user, 25)
|
C.shock(user, 25)
|
||||||
del(C)
|
|
||||||
var/obj/cable/NC = new(T)
|
|
||||||
|
|
||||||
var/color_n = "red"
|
|
||||||
if(color)
|
|
||||||
color_n = color
|
|
||||||
NC.color = color_n
|
|
||||||
switch(color)
|
|
||||||
if("red")
|
|
||||||
NC.icon = 'power_cond_red.dmi'
|
|
||||||
if("yellow")
|
|
||||||
NC.icon = 'power_cond_yellow.dmi'
|
|
||||||
if("green")
|
|
||||||
NC.icon = 'power_cond_green.dmi'
|
|
||||||
if("blue")
|
|
||||||
NC.icon = 'power_cond_blue.dmi'
|
|
||||||
|
|
||||||
NC.d1 = nd1
|
C.cableColor(color)
|
||||||
NC.d2 = nd2
|
|
||||||
NC.add_fingerprint()
|
C.d1 = nd1
|
||||||
NC.updateicon()
|
C.d2 = nd2
|
||||||
NC.update_network()
|
|
||||||
|
C.add_fingerprint()
|
||||||
|
C.updateicon()
|
||||||
|
|
||||||
|
|
||||||
|
C.mergeConnectedNetworks(C.d1)
|
||||||
|
C.mergeConnectedNetworks(C.d2)
|
||||||
|
|
||||||
|
|
||||||
use(1)
|
use(1)
|
||||||
if (NC.shock(user, 50))
|
|
||||||
if (prob(50))
|
|
||||||
new/obj/item/weapon/cable_coil(NC.loc, NC.d1 ? 2 : 1, NC.color)
|
|
||||||
del(NC)
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/cable/proc/mergeConnectedNetworks(var/direction)
|
||||||
|
var/turf/TB
|
||||||
|
if((d1 == direction || d2 == direction) != 1)
|
||||||
|
return
|
||||||
|
TB = get_step(src, direction)
|
||||||
|
|
||||||
// called when a new cable is created
|
for(var/obj/cable/TC in TB)
|
||||||
// can be 1 of 3 outcomes:
|
if(src == TC)
|
||||||
// 1. Isolated cable (or only connects to isolated machine) -> create new powernet
|
continue
|
||||||
// 2. Joins to end or bridges loop of a single network (may also connect isolated machine) -> add to old network
|
|
||||||
// 3. Bridges gap between 2 networks -> merge the networks (must rebuild lists also)
|
|
||||||
|
|
||||||
|
var/fdir = (!direction)? 0 : turn(direction, 180)
|
||||||
|
|
||||||
|
if(TC.d1 == fdir || TC.d2 == fdir)
|
||||||
|
|
||||||
/obj/cable/proc/update_network()
|
if(!netnum)
|
||||||
// easy way: do /makepowernets again
|
var/datum/powernet/PN = powernets[TC.netnum]
|
||||||
makepowernets()
|
netnum = TC.netnum
|
||||||
// do things more logically if this turns out to be too slow
|
PN = powernets[netnum]
|
||||||
// may just do this for case 3 anyway (simpler than refreshing list)
|
PN.cables += src
|
||||||
|
continue
|
||||||
|
|
||||||
|
if(TC.netnum != netnum)
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
var/datum/powernet/TPN = powernets[TC.netnum]
|
||||||
|
var/kingNetnum = netnum
|
||||||
|
if(PN.cables.len + PN.nodes.len < TPN.cables.len + TPN.nodes.len)
|
||||||
|
kingNetnum = TC.netnum
|
||||||
|
var/datum/powernet/temp = PN
|
||||||
|
PN = TPN
|
||||||
|
TPN = temp
|
||||||
|
for(var/obj/cable/C in TPN.cables)
|
||||||
|
TPN.cables -= C
|
||||||
|
PN.cables += C
|
||||||
|
C.netnum = kingNetnum
|
||||||
|
for(var/obj/machinery/power/M in TPN.nodes)
|
||||||
|
if(M.netnum < 0) // APCs have netnum=-1 so they don't count as network nodes directly
|
||||||
|
continue
|
||||||
|
TPN.nodes -= M
|
||||||
|
PN.nodes += M
|
||||||
|
M.netnum = kingNetnum
|
||||||
|
M.powernet = powernets[M.netnum]
|
||||||
|
TC.netnum = kingNetnum
|
||||||
|
TPN.cables -= TC
|
||||||
|
PN.cables += TC
|
||||||
|
for(var/obj/machinery/power/M in TB)
|
||||||
|
if(!netnum)
|
||||||
|
if(!M.netnum)
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
netnum = M.netnum
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
PN.nodes += src
|
||||||
|
|
||||||
|
/obj/cable/proc/mergeConnectedNetworksOnTurf()
|
||||||
|
var/turf/TB
|
||||||
|
TB = loc
|
||||||
|
|
||||||
|
for(var/obj/cable/C in TB)
|
||||||
|
if(C == src)
|
||||||
|
continue
|
||||||
|
if(netnum == 0)
|
||||||
|
var/datum/powernet/PN = powernets[C.netnum]
|
||||||
|
netnum = C.netnum
|
||||||
|
PN.cables += src
|
||||||
|
continue
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
var/datum/powernet/TPN = powernets[C.netnum]
|
||||||
|
var/kingNetnum = netnum
|
||||||
|
if(PN.cables.len + PN.nodes.len < TPN.cables.len + TPN.nodes.len)
|
||||||
|
kingNetnum = C.netnum
|
||||||
|
var/datum/powernet/temp = PN
|
||||||
|
PN = TPN
|
||||||
|
TPN = temp
|
||||||
|
|
||||||
|
TPN.cables -= C
|
||||||
|
PN.cables += C
|
||||||
|
C.netnum = kingNetnum
|
||||||
|
for(var/obj/machinery/power/M in TB)
|
||||||
|
|
||||||
|
if(M.netnum < 0)
|
||||||
|
continue
|
||||||
|
if(M.netnum == 0)
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
PN.nodes += M
|
||||||
|
M.netnum = netnum
|
||||||
|
M.powernet = powernets[M.netnum]
|
||||||
|
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
var/datum/powernet/TPN = powernets[M.netnum]
|
||||||
|
var/kingNetnum = netnum
|
||||||
|
if(PN.cables.len + PN.nodes.len < TPN.cables.len + TPN.nodes.len)
|
||||||
|
kingNetnum = M.netnum
|
||||||
|
var/datum/powernet/temp = PN
|
||||||
|
PN = TPN
|
||||||
|
TPN = temp
|
||||||
|
|
||||||
|
TPN.nodes -= M
|
||||||
|
PN.nodes += M
|
||||||
|
M.netnum = kingNetnum
|
||||||
|
M.powernet = powernets[M.netnum]
|
||||||
|
for(var/obj/machinery/power/apc/N in TB)
|
||||||
|
var/obj/machinery/power/M
|
||||||
|
M = N.terminal
|
||||||
|
|
||||||
|
if(M.netnum == 0)
|
||||||
|
if(netnum == 0)
|
||||||
|
continue
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
PN.nodes += M
|
||||||
|
M.netnum = netnum
|
||||||
|
M.powernet = powernets[M.netnum]
|
||||||
|
continue
|
||||||
|
|
||||||
|
var/datum/powernet/PN = powernets[netnum]
|
||||||
|
var/datum/powernet/TPN = powernets[M.netnum]
|
||||||
|
var/kingNetnum = netnum
|
||||||
|
if(PN.cables.len + PN.nodes.len < TPN.cables.len + TPN.nodes.len)
|
||||||
|
kingNetnum = M.netnum
|
||||||
|
var/datum/powernet/temp = PN
|
||||||
|
PN = TPN
|
||||||
|
TPN = temp
|
||||||
|
|
||||||
|
TPN.nodes -= M
|
||||||
|
PN.nodes += M
|
||||||
|
M.netnum = kingNetnum
|
||||||
|
M.powernet = powernets[M.netnum]
|
||||||
|
|
||||||
|
obj/cable/proc/cableColor(var/colorC)
|
||||||
|
var/color_n = "red"
|
||||||
|
if(colorC)
|
||||||
|
color_n = colorC
|
||||||
|
color = color_n
|
||||||
|
switch(colorC)
|
||||||
|
if("red")
|
||||||
|
icon = 'power_cond_red.dmi'
|
||||||
|
if("yellow")
|
||||||
|
icon = 'power_cond_yellow.dmi'
|
||||||
|
if("green")
|
||||||
|
icon = 'power_cond_green.dmi'
|
||||||
|
if("blue")
|
||||||
|
icon = 'power_cond_blue.dmi'
|
||||||
Reference in New Issue
Block a user