diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 2bb013f65e..7a6e313cd0 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -1,3 +1,4 @@
+
//Baseline portable generator. Has all the default handling. Not intended to be used on it's own (since it generates unlimited power).
/obj/machinery/power/port_gen
name = "portable generator"
@@ -8,8 +9,9 @@
anchored = FALSE
use_power = NO_POWER_USE
- var/active = FALSE
+ var/active = 0
var/power_gen = 5000
+ var/recent_fault = 0
var/power_output = 1
var/consumption = 0
var/base_icon = "portgen0"
@@ -25,13 +27,8 @@
QDEL_NULL(soundloop)
return ..()
-/obj/machinery/power/port_gen/connect_to_network()
- if(!anchored)
- return FALSE
- . = ..()
-
/obj/machinery/power/port_gen/proc/HasFuel() //Placeholder for fuel check.
- return TRUE
+ return 1
/obj/machinery/power/port_gen/proc/UseFuel() //Placeholder for fuel use.
return
@@ -42,38 +39,26 @@
/obj/machinery/power/port_gen/proc/handleInactive()
return
-/obj/machinery/power/port_gen/proc/TogglePower()
- if(active)
- active = FALSE
- update_icon()
- soundloop.stop()
- else if(HasFuel())
- active = TRUE
- START_PROCESSING(SSmachines, src)
- update_icon()
- soundloop.start()
-
/obj/machinery/power/port_gen/update_icon()
icon_state = "[base_icon]_[active]"
/obj/machinery/power/port_gen/process()
- if(active)
- if(!HasFuel() || !anchored)
- TogglePower()
- return
- if(powernet)
- add_avail(power_gen * power_output)
+ if(active && HasFuel() && !crit_fail && anchored && powernet)
+ add_avail(power_gen * power_output)
UseFuel()
+ src.updateDialog()
+ soundloop.start()
+
else
+ active = 0
handleInactive()
+ update_icon()
+ soundloop.stop()
/obj/machinery/power/port_gen/examine(mob/user)
..()
to_chat(user, "It is[!active?"n't":""] running.")
-/////////////////
-// P.A.C.M.A.N //
-/////////////////
/obj/machinery/power/port_gen/pacman
name = "\improper P.A.C.M.A.N.-type portable generator"
circuit = /obj/item/circuitboard/machine/pacman
@@ -93,8 +78,8 @@
/obj/machinery/power/port_gen/pacman/Initialize()
. = ..()
- var/obj/S = sheet_path
- sheet_name = initial(S.name)
+ var/obj/sheet = new sheet_path(null)
+ sheet_name = sheet.name
/obj/machinery/power/port_gen/pacman/Destroy()
DropFuel()
@@ -115,16 +100,14 @@
/obj/machinery/power/port_gen/pacman/examine(mob/user)
..()
- to_chat(user, "The generator has [sheets] units of [sheet_name] fuel left, producing [DisplayPower(power_gen)] per cycle.")
- if(anchored)
- to_chat(user, "It is anchored to the ground.")
- if(in_range(user, src) || isobserver(user))
- to_chat(user, "The status display reads: Fuel efficiency increased by [(consumption*100)-100]%.")
+ to_chat(user, "The generator has [sheets] units of [sheet_name] fuel left, producing [power_gen] per cycle.")
+ if(crit_fail)
+ to_chat(user, "The generator seems to have broken down.")
/obj/machinery/power/port_gen/pacman/HasFuel()
if(sheets >= 1 / (time_per_sheet / power_output) - sheet_left)
- return TRUE
- return FALSE
+ return 1
+ return 0
/obj/machinery/power/port_gen/pacman/DropFuel()
if(sheets)
@@ -160,11 +143,13 @@
if (current_heat > 300)
overheat()
qdel(src)
+ return
/obj/machinery/power/port_gen/pacman/handleInactive()
- current_heat = max(current_heat - 2, 0)
- if(current_heat == 0)
- STOP_PROCESSING(SSmachines, src)
+
+ if (current_heat > 0)
+ current_heat = max(current_heat - 2, 0)
+ src.updateDialog()
/obj/machinery/power/port_gen/pacman/proc/overheat()
explosion(src.loc, 2, 5, 2, -1)
@@ -179,21 +164,24 @@
to_chat(user, "You add [amount] sheets to the [src.name].")
sheets += amount
addstack.use(amount)
+ updateUsrDialog()
return
else if(!active)
- if(O.tool_behaviour == TOOL_WRENCH)
+
+ if(istype(O, /obj/item/wrench))
+
if(!anchored && !isinspace())
- anchored = TRUE
connect_to_network()
to_chat(user, "You secure the generator to the floor.")
+ anchored = TRUE
else if(anchored)
- anchored = FALSE
disconnect_from_network()
to_chat(user, "You unsecure the generator from the floor.")
+ anchored = FALSE
- playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
+ playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1)
return
- else if(O.tool_behaviour == TOOL_SCREWDRIVER)
+ else if(istype(O, /obj/item/screwdriver))
panel_open = !panel_open
O.play_tool_sound(src)
if(panel_open)
@@ -217,52 +205,60 @@
/obj/machinery/power/port_gen/pacman/attack_paw(mob/user)
interact(user)
-/obj/machinery/power/port_gen/pacman/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
- datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
- ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
- if(!ui)
- ui = new(user, src, ui_key, "portable_generator", name, 450, 340, master_ui, state)
- ui.open()
+/obj/machinery/power/port_gen/pacman/ui_interact(mob/user)
+ . = ..()
+ if (get_dist(src, user) > 1 )
+ if(!isAI(user))
+ user.unset_machine()
+ user << browse(null, "window=port_gen")
+ return
-/obj/machinery/power/port_gen/pacman/ui_data()
- var/data = list()
+ var/dat = text("[name]
")
+ if (active)
+ dat += text("Generator: On
")
+ else
+ dat += text("Generator: Off
")
+ dat += text("[capitalize(sheet_name)]: [sheets] - Eject
")
+ 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" : "[DisplayPower(avail())]")]
")
+ dat += text("Heat: [current_heat]
")
+ dat += "
Close"
+ user << browse(dat, "window=port_gen")
+ onclose(user, "port_gen")
- data["active"] = active
- data["sheet_name"] = capitalize(sheet_name)
- data["sheets"] = sheets
- data["stack_percent"] = round(sheet_left * 100, 0.1)
-
- data["anchored"] = anchored
- data["connected"] = (powernet == null ? 0 : 1)
- data["ready_to_boot"] = anchored && HasFuel()
- data["power_generated"] = DisplayPower(power_gen)
- data["power_output"] = DisplayPower(power_gen * power_output)
- data["power_available"] = (powernet == null ? 0 : DisplayPower(avail()))
- data["current_heat"] = current_heat
- . = data
-
-/obj/machinery/power/port_gen/pacman/ui_act(action, params)
+/obj/machinery/power/port_gen/pacman/Topic(href, href_list)
if(..())
return
- switch(action)
- if("toggle_power")
- TogglePower()
- . = TRUE
- if("eject")
+ src.add_fingerprint(usr)
+ if(href_list["action"])
+ if(href_list["action"] == "enable")
+ if(!active && HasFuel() && !crit_fail)
+ active = 1
+ src.updateUsrDialog()
+ update_icon()
+ if(href_list["action"] == "disable")
+ if (active)
+ active = 0
+ src.updateUsrDialog()
+ update_icon()
+ if(href_list["action"] == "eject")
if(!active)
DropFuel()
- . = TRUE
-
- if("lower_power")
+ src.updateUsrDialog()
+ if(href_list["action"] == "lower_power")
if (power_output > 1)
power_output--
- . = TRUE
-
- if("higher_power")
+ src.updateUsrDialog()
+ if (href_list["action"] == "higher_power")
if (power_output < 4 || (obj_flags & EMAGGED))
power_output++
- . = TRUE
+ src.updateUsrDialog()
+ if (href_list["action"] == "close")
+ usr << browse(null, "window=port_gen")
+ usr.unset_machine()
/obj/machinery/power/port_gen/pacman/super
name = "\improper S.U.P.E.R.P.A.C.M.A.N.-type portable generator"