mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 18:44:48 +01:00
Completely reverted r1897 due to loss of interest in updating solars. Better to have the old set back than a half-finished set after all. (Only kept the space suit select equipment thing.)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1901 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
+200
-86
@@ -26,26 +26,37 @@
|
||||
|
||||
var/obj/cable/NC = new(T)
|
||||
|
||||
var/color = "red"
|
||||
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.cableColor(coil.color)
|
||||
|
||||
NC.d1 = 0
|
||||
NC.d2 = dirn
|
||||
NC.add_fingerprint()
|
||||
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)
|
||||
if (NC.shock(user, 50))
|
||||
if (prob(50)) //fail
|
||||
new/obj/item/weapon/cable_coil(NC.loc, 1, NC.color)
|
||||
del(NC)
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -134,8 +145,6 @@
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/weapon/cable_coil))
|
||||
if (shock(user, 50))
|
||||
return
|
||||
var/obj/item/weapon/cable_coil/coil = W
|
||||
coil.cable_join(src, user)
|
||||
|
||||
@@ -297,29 +306,27 @@
|
||||
|
||||
var/obj/cable/C = new(F)
|
||||
|
||||
var/color_n = "red"
|
||||
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.cableColor(color)
|
||||
|
||||
C.d1 = 0
|
||||
C.d2 = dirn
|
||||
C.add_fingerprint(user)
|
||||
C.updateicon()
|
||||
C.update_network()
|
||||
|
||||
var/datum/powernet/PN = new()
|
||||
PN.number = powernets.len + 1
|
||||
powernets += PN
|
||||
C.netnum = PN.number
|
||||
PN.cables += C
|
||||
|
||||
C.mergeConnectedNetworks(C.d2)
|
||||
C.mergeConnectedNetworksOnTurf()
|
||||
|
||||
|
||||
use(1)
|
||||
if (C.shock(user, 50))
|
||||
if (prob(50))
|
||||
new/obj/item/weapon/cable_coil(C.loc, C.d1 ? 2 : 1, C.color)
|
||||
if (prob(50)) //fail
|
||||
new/obj/item/weapon/cable_coil(C.loc, 1, C.color)
|
||||
del(C)
|
||||
//src.laying = 1
|
||||
//last = C
|
||||
@@ -329,7 +336,6 @@
|
||||
|
||||
/obj/item/weapon/cable_coil/proc/cable_join(obj/cable/C, mob/user)
|
||||
|
||||
|
||||
var/turf/U = user.loc
|
||||
if(!isturf(U))
|
||||
return
|
||||
@@ -365,39 +371,30 @@
|
||||
return
|
||||
|
||||
var/obj/cable/NC = new(U)
|
||||
|
||||
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.cableColor(color)
|
||||
|
||||
NC.d1 = 0
|
||||
NC.d2 = fdirn
|
||||
NC.add_fingerprint()
|
||||
NC.updateicon()
|
||||
NC.update_network()
|
||||
|
||||
NC.netnum = C.netnum
|
||||
var/datum/powernet/PN = powernets[C.netnum]
|
||||
PN.cables += NC
|
||||
NC.mergeConnectedNetworksOnTurf()
|
||||
use(1)
|
||||
if (NC.shock(user, 50))
|
||||
if (prob(50))
|
||||
new/obj/item/weapon/cable_coil(NC.loc, NC.d1 ? 2 : 1, NC.color)
|
||||
if (prob(50)) //fail
|
||||
new/obj/item/weapon/cable_coil(NC.loc, 1, NC.color)
|
||||
del(NC)
|
||||
|
||||
return
|
||||
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
|
||||
|
||||
var/nd1 = C.d2 // these will be the new directions
|
||||
var/nd2 = dirn
|
||||
|
||||
|
||||
if(nd1 > nd2) // swap directions to match icons/states
|
||||
nd1 = dirn
|
||||
nd2 = C.d2
|
||||
@@ -409,49 +406,166 @@
|
||||
if((LC.d1 == nd1 && LC.d2 == nd2) || (LC.d1 == nd2 && LC.d2 == nd1) ) // make sure no cable matches either direction
|
||||
user << "There's already a cable at that position."
|
||||
return
|
||||
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
|
||||
NC.d2 = nd2
|
||||
NC.add_fingerprint()
|
||||
NC.updateicon()
|
||||
NC.update_network()
|
||||
C.cableColor(color)
|
||||
|
||||
C.d1 = nd1
|
||||
C.d2 = nd2
|
||||
|
||||
C.add_fingerprint()
|
||||
C.updateicon()
|
||||
|
||||
|
||||
C.mergeConnectedNetworks(C.d1)
|
||||
C.mergeConnectedNetworks(C.d2)
|
||||
|
||||
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)
|
||||
if (C.shock(user, 50))
|
||||
if (prob(50)) //fail
|
||||
new/obj/item/weapon/cable_coil(C.loc, 2, C.color)
|
||||
del(C)
|
||||
|
||||
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
|
||||
// can be 1 of 3 outcomes:
|
||||
// 1. Isolated cable (or only connects to isolated machine) -> create new powernet
|
||||
// 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)
|
||||
for(var/obj/cable/TC in TB)
|
||||
if(src == TC)
|
||||
continue
|
||||
|
||||
var/fdir = (!direction)? 0 : turn(direction, 180)
|
||||
|
||||
if(TC.d1 == fdir || TC.d2 == fdir)
|
||||
|
||||
/obj/cable/proc/update_network()
|
||||
// easy way: do /makepowernets again
|
||||
makepowernets()
|
||||
// do things more logically if this turns out to be too slow
|
||||
// may just do this for case 3 anyway (simpler than refreshing list)
|
||||
if(!netnum)
|
||||
var/datum/powernet/PN = powernets[TC.netnum]
|
||||
netnum = TC.netnum
|
||||
PN = powernets[netnum]
|
||||
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'
|
||||
+25
-18
@@ -1,19 +1,13 @@
|
||||
/obj/machinery/power/solar
|
||||
var/id
|
||||
var/net_set = 0
|
||||
|
||||
/obj/machinery/power/solar/New()
|
||||
..()
|
||||
spawn(10)
|
||||
updateicon()
|
||||
update_solar_exposure()
|
||||
|
||||
if(powernet)
|
||||
add_avail(700)
|
||||
net_set = 1
|
||||
else
|
||||
net_set = 0
|
||||
|
||||
|
||||
for(var/obj/machinery/power/solar_control/SC in powernet.nodes)
|
||||
if(SC.id == id)
|
||||
control = SC
|
||||
|
||||
/obj/machinery/power/solar/attackby(obj/item/weapon/W, mob/user)
|
||||
..()
|
||||
@@ -45,9 +39,9 @@
|
||||
overlays += image('power.dmi', icon_state = "solar_panel-b", layer = FLY_LAYER)
|
||||
else
|
||||
overlays += image('power.dmi', icon_state = "solar_panel", layer = FLY_LAYER)
|
||||
src.dir = angle2dir(adir)
|
||||
return
|
||||
|
||||
/*
|
||||
/obj/machinery/power/solar/proc/update_solar_exposure()
|
||||
if(!sun)
|
||||
return
|
||||
@@ -64,22 +58,31 @@
|
||||
|
||||
#define SOLARGENRATE 1500
|
||||
|
||||
*/
|
||||
|
||||
/obj/machinery/power/solar/process()
|
||||
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
|
||||
add_avail(700)
|
||||
//return //TODO: FIX
|
||||
|
||||
if(!obscured)
|
||||
var/sgen = SOLARGENRATE * sunfrac
|
||||
add_avail(sgen)
|
||||
if(powernet && control)
|
||||
if(control in powernet.nodes) //this line right here...
|
||||
control.gen += sgen
|
||||
|
||||
if(adir != ndir)
|
||||
spawn(10+rand(0,15))
|
||||
adir = (360+adir+dd_range(-10,10,ndir-adir))%360
|
||||
updateicon()
|
||||
update_solar_exposure()
|
||||
|
||||
/obj/machinery/power/solar/proc/broken()
|
||||
stat |= BROKEN
|
||||
updateicon()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/power/solar/meteorhit()
|
||||
if(stat & !BROKEN)
|
||||
broken()
|
||||
@@ -90,14 +93,19 @@
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
if(prob(15))
|
||||
new /obj/item/weapon/shard( src.loc )
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(25))
|
||||
new /obj/item/weapon/shard( src.loc )
|
||||
del(src)
|
||||
return
|
||||
if (prob(50))
|
||||
broken()
|
||||
if(3.0)
|
||||
return
|
||||
if (prob(25))
|
||||
broken()
|
||||
return
|
||||
|
||||
/obj/machinery/power/solar/blob_act()
|
||||
@@ -110,7 +118,7 @@
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
/obj/machinery/power/solar_control/New()
|
||||
..()
|
||||
spawn(15)
|
||||
@@ -323,4 +331,3 @@
|
||||
if (prob(75))
|
||||
broken()
|
||||
src.density = 0
|
||||
*/
|
||||
@@ -3,8 +3,6 @@
|
||||
//Machine that tracks the sun and reports it's direction to the solar controllers
|
||||
//As long as this is working, solar panels on same powernet will track automatically
|
||||
|
||||
|
||||
|
||||
/obj/machinery/power/tracker
|
||||
name = "solar tracker"
|
||||
desc = "A solar directional tracker."
|
||||
@@ -17,8 +15,6 @@
|
||||
var/sun_angle = 0 // sun angle as set by sun datum
|
||||
|
||||
|
||||
/*
|
||||
|
||||
// called by datum/sun/calc_position() as sun's angle changes
|
||||
proc/set_angle(var/angle)
|
||||
sun_angle = angle
|
||||
@@ -38,8 +34,6 @@
|
||||
C.tracker_update(angle)
|
||||
|
||||
|
||||
|
||||
|
||||
// timed process
|
||||
// make sure we can draw power from the powernet
|
||||
process()
|
||||
@@ -53,6 +47,4 @@
|
||||
|
||||
// override power change to do nothing since we don't care about area power
|
||||
power_change()
|
||||
return
|
||||
|
||||
*/
|
||||
return
|
||||
Reference in New Issue
Block a user