mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-30 23:49:21 +01:00
-Fixed: Trying to build a terminal without enough cables would leave SMES bugged out until VV'ed.
-Made maximum input and output values depend on a variable instead of a define directly. For VV or future customizable SMESes. -Made reattempting to charge a bit smoother. -ion_act()'s explosion is now logged. And that's it. It's just a 30something lines commit, geez.
This commit is contained in:
+32
-33
@@ -11,16 +11,16 @@
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 0
|
||||
var/output = 50000
|
||||
var/lastout = 0
|
||||
var/loaddemand = 0
|
||||
var/capacity = 5e6
|
||||
var/charge = 1e6
|
||||
var/charging = 0
|
||||
var/chargemode = 0
|
||||
var/chargecount = 0
|
||||
var/chargelevel = 50000
|
||||
var/online = 1
|
||||
var/output = 50000 //Amount of power it tries to output
|
||||
var/lastout = 0 //Amount of power it actually outputs to the powernet
|
||||
var/loaddemand = 0 //For use in restore()
|
||||
var/capacity = 5e6 //Maximum amount of power it can hold
|
||||
var/charge = 1e6 //Current amount of power it holds
|
||||
var/charging = 0 //1 if it's actually charging, 0 if not
|
||||
var/chargemode = 0 //1 if it's trying to charge, 0 if not.
|
||||
//var/chargecount = 0
|
||||
var/chargelevel = 50000 //Amount of power it tries to charge from powernet
|
||||
var/online = 1 //1 if it's outputting power, 0 if not.
|
||||
var/name_tag = null
|
||||
var/obj/machinery/power/terminal/terminal = null
|
||||
//Holders for powerout event.
|
||||
@@ -29,6 +29,8 @@
|
||||
var/last_online = 0
|
||||
var/open_hatch = 0
|
||||
var/building_terminal = 0 //Suggestions about how to avoid clickspam building several terminals accepted!
|
||||
var/input_level_max = SMESMAXCHARGELEVEL
|
||||
var/output_level_max = SMESMAXOUTPUT
|
||||
|
||||
/obj/machinery/power/smes/New()
|
||||
..()
|
||||
@@ -73,7 +75,6 @@
|
||||
|
||||
|
||||
/obj/machinery/power/smes/process()
|
||||
|
||||
if(stat & BROKEN) return
|
||||
|
||||
//store machine state to see if we need to update the icon overlays
|
||||
@@ -86,19 +87,18 @@
|
||||
|
||||
if(charging)
|
||||
if(excess >= 0) // if there's power available, try to charge
|
||||
|
||||
var/load = min((capacity-charge)/SMESRATE, chargelevel) // charge at set rate, limited to spare capacity
|
||||
|
||||
charge += load * SMESRATE // increase the charge
|
||||
|
||||
add_load(load) // add the load to the terminal side network
|
||||
|
||||
else // if not enough capcity
|
||||
charging = 0 // stop charging
|
||||
chargecount = 0
|
||||
//chargecount = 0
|
||||
|
||||
else
|
||||
if(chargemode)
|
||||
if (chargemode && excess > 0 && excess >= chargelevel)
|
||||
charging = 1
|
||||
/* if(chargemode)
|
||||
if(chargecount > rand(3,6))
|
||||
charging = 1
|
||||
chargecount = 0
|
||||
@@ -108,15 +108,12 @@
|
||||
else
|
||||
chargecount = 0
|
||||
else
|
||||
chargecount = 0
|
||||
chargecount = 0 */
|
||||
|
||||
if(online) // if outputting
|
||||
lastout = min( charge/SMESRATE, output) //limit output to that stored
|
||||
|
||||
charge -= lastout*SMESRATE // reduce the storage (may be recovered in /restore() if excessive)
|
||||
|
||||
add_avail(lastout) // add output to powernet (smes side)
|
||||
|
||||
if(charge < 0.0001)
|
||||
online = 0 // stop output if charge falls to zero
|
||||
|
||||
@@ -160,7 +157,7 @@
|
||||
//Will return 1 on failure
|
||||
/obj/machinery/power/smes/proc/make_terminal(const/mob/user)
|
||||
if (user.loc == loc)
|
||||
user << "<span class='warning'>You must not be on the same tile as the SMES.</span>"
|
||||
user << "<span class='warning'>You must not be on the same tile as the [src].</span>"
|
||||
return 1
|
||||
|
||||
//Direction the terminal will face to
|
||||
@@ -178,7 +175,7 @@
|
||||
if(tempLoc.intact)
|
||||
user << "<span class='warning'>You must remove the floor plating first.</span>"
|
||||
return 1
|
||||
user << "<span class='notice'>You start adding cable to the SMES.</span>"
|
||||
user << "<span class='notice'>You start adding cable to the [src].</span>"
|
||||
if(do_after(user, 50))
|
||||
terminal = new /obj/machinery/power/terminal(tempLoc)
|
||||
terminal.dir = tempDir
|
||||
@@ -216,6 +213,7 @@
|
||||
var/obj/item/weapon/cable_coil/CC = W
|
||||
if (CC.amount < 10)
|
||||
user << "<span class='warning'>You need more cables.</span>"
|
||||
building_terminal = 0
|
||||
return
|
||||
if (make_terminal(user))
|
||||
building_terminal = 0
|
||||
@@ -223,8 +221,8 @@
|
||||
building_terminal = 0
|
||||
CC.use(10)
|
||||
user.visible_message(\
|
||||
"<span class='notice'>[user.name] has added cables to the SMES.</span>",\
|
||||
"<span class='notice'>You added cables the SMES.</span>")
|
||||
"<span class='notice'>[user.name] has added cables to the [src].</span>",\
|
||||
"<span class='notice'>You added cables to the [src].</span>")
|
||||
terminal.connect_to_network()
|
||||
stat = 0
|
||||
|
||||
@@ -242,6 +240,7 @@
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
building_terminal = 0
|
||||
return
|
||||
new /obj/item/weapon/cable_coil(loc,10)
|
||||
user.visible_message(\
|
||||
@@ -263,10 +262,10 @@
|
||||
data["charging"] = charging
|
||||
data["chargeMode"] = chargemode
|
||||
data["chargeLevel"] = chargelevel
|
||||
data["chargeMax"] = SMESMAXCHARGELEVEL
|
||||
data["chargeMax"] = input_level_max
|
||||
data["outputOnline"] = online
|
||||
data["outputLevel"] = output
|
||||
data["outputMax"] = SMESMAXOUTPUT
|
||||
data["outputMax"] = output_level_max
|
||||
data["outputLoad"] = round(loaddemand)
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
@@ -316,20 +315,20 @@
|
||||
if("min")
|
||||
chargelevel = 0
|
||||
if("max")
|
||||
chargelevel = SMESMAXCHARGELEVEL //30000
|
||||
chargelevel = input_level_max
|
||||
if("set")
|
||||
chargelevel = input(usr, "Enter new input level (0-[SMESMAXCHARGELEVEL])", "SMES Input Power Control", chargelevel) as num
|
||||
chargelevel = max(0, min(SMESMAXCHARGELEVEL, chargelevel)) // clamp to range
|
||||
chargelevel = input(usr, "Enter new input level (0-[input_level_max])", "SMES Input Power Control", chargelevel) as num
|
||||
chargelevel = max(0, min(input_level_max, chargelevel)) // clamp to range
|
||||
|
||||
else if( href_list["output"] )
|
||||
switch( href_list["output"] )
|
||||
if("min")
|
||||
output = 0
|
||||
if("max")
|
||||
output = SMESMAXOUTPUT //30000
|
||||
output = output_level_max
|
||||
if("set")
|
||||
output = input(usr, "Enter new output level (0-[SMESMAXOUTPUT])", "SMES Output Power Control", output) as num
|
||||
output = max(0, min(SMESMAXOUTPUT, output)) // clamp to range
|
||||
output = input(usr, "Enter new output level (0-[output_level_max])", "SMES Output Power Control", output) as num
|
||||
output = max(0, min(output_level_max, output)) // clamp to range
|
||||
|
||||
investigate_log("input/output; [chargelevel>output?"<font color='green'>":"<font color='red'>"][chargelevel]/[output]</font> | Output-mode: [online?"<font color='green'>on</font>":"<font color='red'>off</font>"] | Input-mode: [chargemode?"<font color='green'>auto</font>":"<font color='red'>off</font>"] by [usr.key]","singulo")
|
||||
|
||||
@@ -347,7 +346,7 @@
|
||||
smoke.set_up(3, 0, src.loc)
|
||||
smoke.attach(src)
|
||||
smoke.start()
|
||||
explosion(src.loc, -1, 0, 1, 3, 0)
|
||||
explosion(src.loc, -1, 0, 1, 3, 1, 0)
|
||||
del(src)
|
||||
return
|
||||
if(prob(15)) //Power drain
|
||||
|
||||
Reference in New Issue
Block a user