diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 423fd04bf5c..daad2e57444 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -48,7 +48,7 @@ display round(lastgen) and plasmatank amount
icon_state = "portgen0"
density = 1
anchored = 0
- directwired = 1
+ directwired = 0
use_power = 0
var/active = 0
@@ -67,12 +67,8 @@ display round(lastgen) and plasmatank amount
return
/obj/machinery/power/port_gen/process()
- if(active && HasFuel() && !crit_fail && anchored)
- if(prob(reliability))
- add_avail(power_gen * power_output)
- else if(!recent_fault)
- recent_fault = 1
- else crit_fail = 1
+ if(active && HasFuel() && !crit_fail && anchored && powernet)
+ add_avail(power_gen * power_output)
UseFuel()
src.updateDialog()
@@ -98,12 +94,18 @@ display round(lastgen) and plasmatank amount
name = "P.A.C.M.A.N.-type Portable Generator"
var/sheets = 0
var/max_sheets = 100
+ var/sheet_name = ""
var/sheet_path = /obj/item/stack/sheet/mineral/plasma
var/board_path = "/obj/item/weapon/circuitboard/pacman"
var/sheet_left = 0 // How much is left of the sheet
- var/time_per_sheet = 10
+ var/time_per_sheet = 40
var/heat = 0
+/obj/machinery/power/port_gen/pacman/initialize()
+ ..()
+ if(anchored)
+ connect_to_network()
+
/obj/machinery/power/port_gen/pacman/New()
..()
component_parts = list()
@@ -113,6 +115,8 @@ display round(lastgen) and plasmatank amount
component_parts += new /obj/item/weapon/cable_coil(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new board_path(src)
+ var/obj/sheet = new sheet_path(null)
+ sheet_name = sheet.name
RefreshParts()
/obj/machinery/power/port_gen/pacman/RefreshParts()
@@ -130,7 +134,7 @@ display round(lastgen) and plasmatank amount
/obj/machinery/power/port_gen/pacman/examine()
..()
- usr << "\blue The generator has [sheets] units of fuel left, producing [power_gen] per cycle."
+ usr << "\blue The generator has [sheets] units of [sheet_name] fuel left, producing [power_gen] per cycle."
if(crit_fail) usr << "\red The generator seems to have broken down."
/obj/machinery/power/port_gen/pacman/HasFuel()
@@ -170,13 +174,10 @@ display round(lastgen) and plasmatank amount
return
/obj/machinery/power/port_gen/pacman/handleInactive()
- heat -= 2
- if (heat < 0)
- heat = 0
- else
- for(var/mob/M in viewers(1, src))
- if (M.client && M.machine == src)
- src.updateUsrDialog()
+
+ if (heat > 0)
+ heat = max(heat - 2, 0)
+ src.updateDialog()
/obj/machinery/power/port_gen/pacman/proc/overheat()
explosion(src.loc, 2, 5, 2, -1)
@@ -196,14 +197,19 @@ display round(lastgen) and plasmatank amount
emagged = 1
emp_act(1)
else if(!active)
+
if(istype(O, /obj/item/weapon/wrench))
- anchored = !anchored
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- if(anchored)
+
+ if(!anchored)
+ connect_to_network()
user << "\blue You secure the generator to the floor."
else
+ disconnect_from_network()
user << "\blue You unsecure the generator from the floor."
- makepowernets()
+
+ playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
+ anchored = !anchored
+
else if(istype(O, /obj/item/weapon/screwdriver))
open = !open
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
@@ -248,13 +254,15 @@ display round(lastgen) and plasmatank amount
dat += text("Generator: On
")
else
dat += text("Generator: Off
")
- dat += text("sheets: [sheets]
")
+ dat += text("[capitalize(sheet_name)]: [sheets]
")
var/stack_percent = round(sheet_left * 100, 1)
dat += text("Current stack: [stack_percent]%
")
dat += text("Power output: - [power_gen * power_output] +
")
+ dat += text("Power current: [(powernet == null ? "Unconnected" : "[avail()]")]
")
dat += text("Heat: [heat]
")
dat += "
Close"
user << browse("[dat]", "window=port_gen")
+ onclose(user, "port_gen")
/obj/machinery/power/port_gen/pacman/Topic(href, href_list)
if(..())
@@ -289,7 +297,7 @@ display round(lastgen) and plasmatank amount
icon_state = "portgen1"
sheet_path = /obj/item/stack/sheet/mineral/uranium
power_gen = 15000
- time_per_sheet = 25
+ time_per_sheet = 65
board_path = "/obj/item/weapon/circuitboard/pacman/super"
overheat()
explosion(src.loc, 3, 3, 3, -1)
@@ -299,7 +307,7 @@ display round(lastgen) and plasmatank amount
icon_state = "portgen2"
sheet_path = /obj/item/stack/sheet/mineral/diamond
power_gen = 40000
- time_per_sheet = 30
+ time_per_sheet = 80
board_path = "/obj/item/weapon/circuitboard/pacman/mrs"
overheat()
explosion(src.loc, 4, 4, 4, -1)
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index a21e0357648..3f3fae0190a 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -176,7 +176,7 @@
C.powernet = PN
P = C.get_connections()
- else if( istype(O,/obj/machinery/power) )
+ else if(O.anchored && istype(O,/obj/machinery/power))
var/obj/machinery/power/M = O
M.powernet = PN
P = M.get_connections()