diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
index 5b7ffde0763..8b389f06c12 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
@@ -134,6 +134,7 @@
anchored = 1
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/circuit/red,
/area/ruin/syndicate_lava_base/main)
"bC" = (
@@ -1573,6 +1574,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/syndicate_lava_base/main)
"iM" = (
@@ -1611,6 +1613,7 @@
dir = 8
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/circuit/red,
/area/ruin/syndicate_lava_base/main)
"iZ" = (
@@ -1622,6 +1625,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/syndicate_lava_base/main)
"jb" = (
@@ -2160,6 +2164,12 @@
/obj/structure/cable,
/turf/open/floor/wood,
/area/ruin/syndicate_lava_base/bar)
+"lZ" = (
+/obj/machinery/power/rtg/lavaland,
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/turf/open/lava/smooth/lava_land_surface,
+/area/ruin/syndicate_lava_base/main)
"md" = (
/obj/machinery/sleeper/syndie{
dir = 4
@@ -2506,6 +2516,7 @@
pixel_x = 32
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/circuit/red,
/area/ruin/syndicate_lava_base/main)
"ox" = (
@@ -2909,6 +2920,7 @@
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/syndicate_lava_base/main)
"vA" = (
@@ -4382,6 +4394,7 @@
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/effect/mapping_helpers/airlock/locked,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/structure/cable,
/turf/open/floor/iron/dark,
/area/ruin/syndicate_lava_base/main)
"Uk" = (
@@ -4713,6 +4726,11 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer2,
/turf/open/floor/iron,
/area/ruin/syndicate_lava_base/dormitories)
+"ZE" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4,
+/obj/structure/cable,
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/syndicate_lava_base/main)
"ZG" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -6679,7 +6697,7 @@ gQ
hV
ha
Dx
-Dx
+ZE
ha
ha
ju
@@ -6729,8 +6747,8 @@ hD
dy
dy
wi
-si
-si
+lZ
+lZ
ju
ld
JV
@@ -6777,8 +6795,8 @@ dy
eF
eF
dy
-ab
-ab
+si
+si
ab
ab
ju
@@ -6824,10 +6842,10 @@ ab
dy
gg
dy
-ab
-ab
-ab
-ab
+si
+si
+si
+si
ab
ab
ab
@@ -6874,7 +6892,7 @@ ab
fx
gh
fx
-ab
+si
ab
ab
ab
@@ -6922,9 +6940,9 @@ ab
ab
ab
ab
-ab
-ab
-ab
+si
+si
+si
ab
ab
ab
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 03e659468a8..6b65f4bfdb2 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -6652,6 +6652,12 @@
},
/turf/open/floor/iron,
/area/ruin/space/has_grav/ancientstation/delta/rnd)
+"DS" = (
+/obj/machinery/power/rtg/old_station,
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/turf/template_noop,
+/area/template_noop)
"DT" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -6873,6 +6879,11 @@
/obj/item/paper/fluff/ruins/oldstation/protosupermatter,
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/ancientstation/delta/proto)
+"KJ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/turf/template_noop,
+/area/template_noop)
"KO" = (
/obj/item/stack/rods,
/turf/open/floor/plating/airless{
@@ -8378,8 +8389,8 @@ aa
aa
aa
aa
-aa
-aa
+DS
+DS
aa
dF
aa
@@ -8428,7 +8439,7 @@ aa
aa
aa
aa
-aa
+KJ
aa
dF
aa
diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm
index 4201979ccbd..b137fadbb21 100644
--- a/code/__DEFINES/machines.dm
+++ b/code/__DEFINES/machines.dm
@@ -27,6 +27,9 @@
#define IDLE_POWER_USE 1
#define ACTIVE_POWER_USE 2
+#define BASE_MACHINE_IDLE_CONSUMPTION 100
+#define BASE_MACHINE_ACTIVE_CONSUMPTION (BASE_MACHINE_IDLE_CONSUMPTION * 10)
+
/// Bitflags for a machine's preferences on when it should start processing. For use with machinery's `processing_flags` var.
#define START_PROCESSING_ON_INIT (1<<0) /// Indicates the machine will automatically start processing right after it's `Initialize()` is ran.
#define START_PROCESSING_MANUALLY (1<<1) /// Machines with this flag will not start processing when it's spawned. Use this if you want to manually control when a machine starts processing.
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 3997ff65f30..7f28327131a 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -41,6 +41,7 @@
reset_chem_buttons()
/obj/machinery/sleeper/RefreshParts()
+ . = ..()
var/E
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
E += B.rating
@@ -161,6 +162,7 @@
/obj/machinery/sleeper/process()
..()
check_nap_violations()
+ use_power(active_power_usage)
/obj/machinery/sleeper/nap_violation(mob/violator)
open_machine()
@@ -283,7 +285,6 @@
desc = "'Sleeper' units were once known for their healing properties, until a lengthy investigation revealed they were also dosing patients with deadly lead acetate. This appears to be one of those old 'sleeper' units repurposed as a 'Party Pod'. It’s probably not a good idea to use it."
icon_state = "partypod"
base_icon_state = "partypod"
- idle_power_usage = 3000
circuit = /obj/item/circuitboard/machine/sleeper/party
var/leddit = FALSE //Get it like reddit and lead alright fine
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index bd3eab0223b..5a8a6326947 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -107,9 +107,9 @@
//1 = use idle_power_usage
//2 = use active_power_usage
///the amount of static power load this machine adds to its area's power_usage list when use_power = IDLE_POWER_USE
- var/idle_power_usage = 0
+ var/idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION
///the amount of static power load this machine adds to its area's power_usage list when use_power = ACTIVE_POWER_USE
- var/active_power_usage = 0
+ var/active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION
///the current amount of static power usage this machine is taking from its area
var/static_power_usage = 0
var/power_channel = AREA_USAGE_EQUIP
@@ -678,8 +678,20 @@
..()
RefreshParts()
-/obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames.
- return
+/obj/machinery/proc/RefreshParts()
+ SHOULD_CALL_PARENT(TRUE)
+ //reset to baseline
+ idle_power_usage = initial(idle_power_usage)
+ active_power_usage = initial(active_power_usage)
+ if(!component_parts || !component_parts.len)
+ return
+ var/parts_energy_rating = 0
+ for(var/obj/item/stock_parts/part in component_parts)
+ parts_energy_rating += part.energy_rating
+
+ idle_power_usage = initial(idle_power_usage) * (1 + parts_energy_rating)
+ active_power_usage = initial(active_power_usage) * (1 + parts_energy_rating)
+ update_current_power_usage()
/obj/machinery/proc/default_pry_open(obj/item/crowbar)
. = !(state_open || panel_open || is_operational || (flags_1 & NODECONSTRUCT_1)) && crowbar.tool_behaviour == TOOL_CROWBAR
diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index 9ec0ff1e1a6..4f0ea0664e2 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -12,8 +12,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
verb_ask = "queries"
verb_exclaim = "alarms"
- idle_power_usage = 20
- active_power_usage = 50
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.05
circuit = /obj/item/circuitboard/machine/announcement_system
@@ -104,6 +103,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
/// Sends a message to the appropriate channels.
/obj/machinery/announcement_system/proc/broadcast(message, list/channels)
+ use_power(active_power_usage)
if(channels.len == 0)
radio.talk_into(src, message, null)
else
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 35072f830c8..c4500940339 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -3,9 +3,7 @@
desc = "It produces items using iron, glass, plastic and maybe some more."
icon_state = "autolathe"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 100
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.5
circuit = /obj/item/circuitboard/machine/autolathe
layer = BELOW_OBJ_LAYER
@@ -190,7 +188,7 @@
for(var/MAT in being_built.materials)
total_amount += being_built.materials[MAT]
- var/power = max(2000, (total_amount)*multiplier/5) //Change this to use all materials
+ var/power = max(active_power_usage, (total_amount)*multiplier/5) //Change this to use all materials
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
@@ -307,7 +305,7 @@
else
flick("autolathe_o", src)//plays metal insertion animation
- use_power(min(1000, amount_inserted / 100))
+ use_power(min(active_power_usage * 0.25, amount_inserted / 100))
/obj/machinery/autolathe/proc/make_item(power, list/materials_used, list/picked_materials, multiplier, coeff, is_stack, mob/user)
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
@@ -337,6 +335,7 @@
busy = FALSE
/obj/machinery/autolathe/RefreshParts()
+ . = ..()
var/mat_capacity = 0
for(var/obj/item/stock_parts/matter_bin/new_matter_bin in component_parts)
mat_capacity += new_matter_bin.rating*75000
diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm
index abc6a2a187d..670d6b55cbe 100644
--- a/code/game/machinery/bank_machine.dm
+++ b/code/game/machinery/bank_machine.dm
@@ -3,8 +3,6 @@
desc = "A machine used to deposit and withdraw station funds."
icon_screen = "vault"
icon_keyboard = "security_key"
- idle_power_usage = 100
-
var/siphoning = FALSE
var/next_warning = 0
var/obj/item/radio/radio
@@ -66,6 +64,7 @@
next_warning = world.time + minimum_time_between_warnings
/obj/machinery/computer/bank_machine/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "BankMachine", name)
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index d80725367e8..f8a19a4a71e 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -11,8 +11,7 @@
var/id = null
var/initialized_button = 0
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, FIRE = 90, ACID = 70)
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02
resistance_flags = LAVA_PROOF | FIRE_PROOF
/obj/machinery/button/indestructible
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 69a21cdf87d..267b0f75a60 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -8,8 +8,7 @@
icon = 'icons/obj/machines/camera.dmi' //ICON OVERRIDEN IN SKYRAT AESTHETICS - SEE MODULE
icon_state = "camera" //mapping icon to represent upgrade states. if you want a different base icon, update default_camera_icon as well as this.
use_power = ACTIVE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 10
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.02
layer = WALL_OBJ_LAYER
plane = GAME_PLANE_UPPER
resistance_flags = FIRE_PROOF
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index e695f12d8be..2ced5cf38da 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -3,9 +3,6 @@
desc = "It charges power cells."
icon = 'icons/obj/power.dmi'
icon_state = "ccharger"
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 60
power_channel = AREA_USAGE_EQUIP
circuit = /obj/item/circuitboard/machine/cell_charger
pass_flags = PASSTABLE
@@ -136,6 +133,7 @@
charging.emp_act(severity)
/obj/machinery/cell_charger/RefreshParts()
+ . = ..()
charge_rate = 250
for(var/obj/item/stock_parts/capacitor/C in component_parts)
charge_rate *= C.rating
diff --git a/code/game/machinery/civilian_bounties.dm b/code/game/machinery/civilian_bounties.dm
index 6a5d7ec73a1..f798a0a852c 100644
--- a/code/game/machinery/civilian_bounties.dm
+++ b/code/game/machinery/civilian_bounties.dm
@@ -18,6 +18,7 @@
icon_keyboard = "id_key"
warmup_time = 3 SECONDS
circuit = /obj/item/circuitboard/computer/bountypad
+ interface_type = "CivCargoHoldTerminal"
///Typecast of an inserted, scanned ID card inside the console, as bounties are held within the ID card.
var/obj/item/card/id/inserted_scan_id
@@ -143,13 +144,6 @@
return FALSE
id_eject(user, inserted_scan_id)
-/obj/machinery/computer/piratepad_control/civilian/ui_interact(mob/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "CivCargoHoldTerminal", name)
- ui.open()
-
-
/obj/machinery/computer/piratepad_control/civilian/ui_data(mob/user)
var/list/data = list()
data["points"] = points
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index 6e9116f98a1..04c9442dcb1 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -68,11 +68,7 @@
return GLOB.not_incapacitated_state
/obj/machinery/computer/operating/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "OperatingComputer", name)
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index 75ea5fb7311..7260a3a593f 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -3,9 +3,6 @@
icon = 'icons/obj/computer.dmi'
icon_state = "computer"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 300
- active_power_usage = 300
max_integrity = 200
integrity_failure = 0.5
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 40, ACID = 20)
@@ -128,3 +125,18 @@
return
if(!user.canUseTopic(src, !issilicon(user)) || !is_operational)
return
+
+/obj/machinery/computer/ui_interact(mob/user, datum/tgui/ui)
+ SHOULD_CALL_PARENT(TRUE)
+ //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
+ if(clicksound && world.time > next_clicksound && isliving(user))
+ next_clicksound = world.time + rand(50, 150)
+ playsound(src, get_sfx_skyrat(clicksound), clickvol)
+ //SKYRAT EDIT END
+ . = ..()
+ update_use_power(ACTIVE_POWER_USE)
+
+/obj/machinery/computer/ui_close(mob/user)
+ SHOULD_CALL_PARENT(TRUE)
+ . = ..()
+ update_use_power(IDLE_POWER_USE)
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index d44041bce8a..8d921487dcc 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -22,11 +22,7 @@
return ..()
/obj/machinery/computer/aifixer/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 150)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AiRestorer", name)
diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm
index 00ef676739d..5dca8f71661 100644
--- a/code/game/machinery/computer/apc_control.dm
+++ b/code/game/machinery/computer/apc_control.dm
@@ -40,11 +40,7 @@
return APC.z == z && !APC.malfhack && !APC.aidisabled && !(APC.obj_flags & EMAGGED) && !APC.machine_stat && !istype(APC.area, /area/ai_monitored) && !(APC.area.area_flags & NO_ALERTS)
/obj/machinery/computer/apc_control/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
operator = user
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index 4ee5cdb7984..83088595c55 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -20,11 +20,7 @@
return ..()
/obj/machinery/computer/atmos_alert/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AtmosAlertConsole", name)
diff --git a/code/game/machinery/computer/atmos_computers/_atmos_control.dm b/code/game/machinery/computer/atmos_computers/_atmos_control.dm
index 7651109971f..659f881f2bf 100644
--- a/code/game/machinery/computer/atmos_computers/_atmos_control.dm
+++ b/code/game/machinery/computer/atmos_computers/_atmos_control.dm
@@ -122,6 +122,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
return TRUE
/obj/machinery/computer/atmos_control/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AtmosControlConsole", name)
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index f3a078d538d..37637187b7a 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -64,6 +64,7 @@
network += "[port.id]_[i]"
/obj/machinery/computer/security/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
// Update UI
ui = SStgui.try_update_ui(user, src, ui)
@@ -174,6 +175,7 @@
cam_background.fill_rect(1, 1, size_x, size_y)
/obj/machinery/computer/security/ui_close(mob/user)
+ . = ..()
var/user_ref = REF(user)
var/is_living = isliving(user)
// Living creature or not, we remove you anyway.
diff --git a/code/game/machinery/computer/chef_orders/chef_order.dm b/code/game/machinery/computer/chef_orders/chef_order.dm
index 303ae382d8e..0492566858e 100644
--- a/code/game/machinery/computer/chef_orders/chef_order.dm
+++ b/code/game/machinery/computer/chef_orders/chef_order.dm
@@ -36,6 +36,7 @@
. += grocery_list[item] * item.cost_per_order
/obj/machinery/computer/chef_order/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "ProduceConsole", name)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 439c6015d54..55c2617541c 100755
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -642,6 +642,7 @@ GLOBAL_VAR_INIT(cops_arrived, FALSE)
return data
/obj/machinery/computer/communications/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if (!ui)
ui = new(user, src, "CommunicationsConsole")
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 6e0f1a2f2b2..fcea93b685f 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -8,9 +8,6 @@
desc = "Used to monitor active health sensors built into most of the crew's uniforms."
icon_screen = "crew"
icon_keyboard = "med_key"
- use_power = IDLE_POWER_USE
- idle_power_usage = 250
- active_power_usage = 500
circuit = /obj/item/circuitboard/computer/crew
light_color = LIGHT_COLOR_BLUE
@@ -84,6 +81,7 @@
icon_keyboard = "syndie_key"
/obj/machinery/computer/crew/ui_interact(mob/user)
+ . = ..()
GLOB.crewmonitor.show(user,src)
GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm
index 8079046ab56..7e190d3870f 100644
--- a/code/game/machinery/computer/dna_console.dm
+++ b/code/game/machinery/computer/dna_console.dm
@@ -55,9 +55,6 @@
density = TRUE
circuit = /obj/item/circuitboard/computer/scan_consolenew
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 400
light_color = LIGHT_COLOR_BLUE
/// Link to the techweb's stored research. Used to retrieve stored mutations
@@ -236,6 +233,7 @@
stored_research = SSresearch.science_tech
/obj/machinery/computer/scan_consolenew/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
// Most of ui_interact is spent setting variables for passing to the tgui
// interface.
// We can also do some general state processing here too as it's a good
@@ -431,6 +429,7 @@
scrambleready = world.time + SCRAMBLE_TIMEOUT
to_chat(usr,span_notice("DNA scrambled."))
scanner_occupant.AddComponent(/datum/component/genetic_damage, GENETIC_DAMAGE_STRENGTH_MULTIPLIER*50/(connected_scanner.damage_coeff ** 2))
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Check whether a specific mutation is eligible for discovery within the
@@ -564,7 +563,7 @@
// Check if we cracked a mutation
check_discovery(alias)
-
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Apply a chromosome to a specific mutation.
@@ -598,7 +597,7 @@
if(CM.can_apply(HM) && (CM.name == params["chromo"]))
stored_chromosomes -= CM
CM.apply(HM)
-
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Attempt overwriting Base DNA : The pairs are instead the top row vs the top row of the new code.
@@ -734,6 +733,7 @@
//Not sure what this does but it seems to be a sanity check and this needs a sanity check
scanner_occupant.domutcheck()
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
@@ -814,7 +814,7 @@
injectorready = world.time + INJECTOR_TIMEOUT * 5 * (1 - 0.1 * connected_scanner.precision_coeff)
else
injectorready = world.time + INJECTOR_TIMEOUT * 5
-
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Save a mutation to the console's storage buffer.
@@ -1025,6 +1025,7 @@
var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(result_path)
stored_research.discovered_mutations += result_path
say("Successfully mutated [HM.name].")
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Combines two mutations from the disk to try and create a new mutation
@@ -1087,6 +1088,7 @@
var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(result_path)
stored_research.discovered_mutations += result_path
say("Successfully mutated [HM.name].")
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Sets the Genetic Makeup pulse strength.
@@ -1322,7 +1324,7 @@
// ready timer.
if(I)
injectorready = world.time + INJECTOR_TIMEOUT
-
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Applies a genetic makeup buffer to the scanner occupant
@@ -1359,6 +1361,7 @@
var/type = params["type"]
apply_genetic_makeup(type, buffer_slot)
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Applies a genetic makeup buffer to the next scanner occupant. This sets
@@ -1424,6 +1427,7 @@
genetic_damage_pulse_timer = world.time + (pulse_duration*10)
genetic_damage_pulse_index = WRAP(text2num(params["index"]), 1, len+1)
begin_processing()
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Cancels the delayed action - In this context it is not the genetic damage
@@ -1584,6 +1588,7 @@
A.copy_mutation(HM)
injector_selection[adv_inj] += A
to_chat(usr,span_notice("Mutation successfully added to advanced injector."))
+ connected_scanner.use_power(connected_scanner.active_power_usage)
return
// Deletes a mutation from an advanced injector
diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm
index 54ebec54c8a..32f60992ee8 100644
--- a/code/game/machinery/computer/launchpad_control.dm
+++ b/code/game/machinery/computer/launchpad_control.dm
@@ -151,11 +151,7 @@
return pad
/obj/machinery/computer/launchpad/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "LaunchpadConsole", name)
diff --git a/code/game/machinery/computer/mechlaunchpad.dm b/code/game/machinery/computer/mechlaunchpad.dm
index 337a1edc1dc..f6703f86b5f 100644
--- a/code/game/machinery/computer/mechlaunchpad.dm
+++ b/code/game/machinery/computer/mechlaunchpad.dm
@@ -108,11 +108,7 @@
return pad
/obj/machinery/computer/mechpad/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "MechpadConsole", name)
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index a28cfc099d7..9f8eedb0cc5 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -56,11 +56,7 @@
M.close()
/obj/machinery/computer/pod/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "MassDriverControl", name)
diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
index e0b45c5e043..d7128612dd7 100644
--- a/code/game/machinery/computer/prisoner/gulag_teleporter.dm
+++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
@@ -20,6 +20,7 @@
scan_machinery()
/obj/machinery/computer/prisoner/gulag_teleporter_computer/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "GulagTeleporterConsole", name)
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 171b7571242..9b4fc6de73b 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -22,11 +22,7 @@
return TRUE
/obj/machinery/computer/robotics/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "RoboticsControlConsole", name)
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index 670ae06ae92..8fa4199079f 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -18,11 +18,7 @@
return ..()
/obj/machinery/computer/station_alert/ui_interact(mob/user)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
alert_control.ui_interact(user)
/obj/machinery/computer/station_alert/on_set_machine_stat(old_value)
diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm
index 7e9a56923b0..300fb564d8c 100644
--- a/code/game/machinery/computer/teleporter.dm
+++ b/code/game/machinery/computer/teleporter.dm
@@ -39,11 +39,7 @@
return power_station
/obj/machinery/computer/teleporter/ui_interact(mob/user, datum/tgui/ui)
- //SKYRAT EDIT ADDITON BEGIN - AESTHETICS
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + rand(50, 100)
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- //SKYRAT EDIT END
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Teleporter", name)
diff --git a/code/game/machinery/computer/tram_controls.dm b/code/game/machinery/computer/tram_controls.dm
index bf61d47f832..957547569be 100644
--- a/code/game/machinery/computer/tram_controls.dm
+++ b/code/game/machinery/computer/tram_controls.dm
@@ -47,6 +47,7 @@
return ..()
/obj/machinery/computer/tram_controls/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "TramControl", name)
diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm
index 989b1dc1160..e99a2cab3eb 100644
--- a/code/game/machinery/dance_machine.dm
+++ b/code/game/machinery/dance_machine.dm
@@ -175,6 +175,7 @@
/obj/machinery/jukebox/proc/activate_music()
active = TRUE
+ update_use_power(ACTIVE_POWER_USE)
update_appearance()
START_PROCESSING(SSobj, src)
stop = world.time + selection.song_length
@@ -467,6 +468,7 @@
L.stop_sound_channel(CHANNEL_JUKEBOX)
else if(active)
active = FALSE
+ update_use_power(IDLE_POWER_USE)
STOP_PROCESSING(SSobj, src)
dance_over()
playsound(src,'sound/machines/terminal_off.ogg',50,TRUE)
diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm
index 0e05cd2f2e5..b42dd190775 100644
--- a/code/game/machinery/defibrillator_mount.dm
+++ b/code/game/machinery/defibrillator_mount.dm
@@ -181,7 +181,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28)
desc = "Holds defibrillators. You can grab the paddles if one is mounted. This PENLITE variant also allows for slow, passive recharging of the defibrillator."
icon_state = "penlite_mount"
use_power = IDLE_POWER_USE
- idle_power_usage = 1
wallframe_type = /obj/item/wallframe/defib_mount/charging
@@ -203,7 +202,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28)
if(!C || !is_operational)
return PROCESS_KILL
if(C.charge < C.maxcharge)
- use_power(50 * delta_time)
+ use_power(active_power_usage * delta_time)
C.give(40 * delta_time)
defib.update_power()
diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm
index e362a889511..f1c2b3dd7f6 100644
--- a/code/game/machinery/dish_drive.dm
+++ b/code/game/machinery/dish_drive.dm
@@ -5,8 +5,7 @@
Or you can just drop your plates on the floor, like civilized folk."
icon = 'icons/obj/kitchen.dmi'
icon_state = "synthesizer"
- idle_power_usage = 8 //5 with default parts
- active_power_usage = 13 //10 with default parts
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.04
density = FALSE
circuit = /obj/item/circuitboard/machine/dish_drive
pass_flags = PASSTABLE
@@ -70,6 +69,7 @@
..()
/obj/machinery/dish_drive/RefreshParts()
+ . = ..()
var/total_rating = 0
for(var/obj/item/stock_parts/S in component_parts)
total_rating += S.rating
@@ -83,7 +83,6 @@
suction_enabled = board.suction
transmit_enabled = board.transmit
-
/obj/machinery/dish_drive/process()
if(time_since_dishes <= world.time && transmit_enabled)
do_the_dishes()
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index 921631cea54..63630952491 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -6,9 +6,6 @@
base_icon_state = "scanner"
density = TRUE
obj_flags = NO_BUILD // Becomes undense when the door is open
- use_power = IDLE_POWER_USE
- idle_power_usage = 50
- active_power_usage = 300
occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/brain)
circuit = /obj/item/circuitboard/machine/dnascanner
var/locked = FALSE
@@ -20,6 +17,7 @@
var/obj/machinery/computer/scan_consolenew/linked_console = null
/obj/machinery/dna_scannernew/RefreshParts()
+ . = ..()
scan_level = 0
damage_coeff = 0
precision_coeff = 0
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index df606b76fc5..18b598325fd 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -21,6 +21,9 @@
interaction_flags_atom = INTERACT_ATOM_UI_INTERACT
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.1
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.2
+
var/secondsElectrified = MACHINE_NOT_ELECTRIFIED
var/shockedby
var/visible = TRUE
@@ -183,7 +186,7 @@
/obj/machinery/door/proc/bumpopen(mob/user)
if(operating || !can_open_with_hands)
return
-
+
add_fingerprint(user)
if(!density || (obj_flags & EMAGGED))
return
@@ -348,6 +351,7 @@
if(operating)
return
operating = TRUE
+ use_power(active_power_usage)
do_animate("opening")
set_opacity(0)
sleep(5)
diff --git a/code/game/machinery/ecto_sniffer.dm b/code/game/machinery/ecto_sniffer.dm
index b081e05b8c6..250e95446f0 100644
--- a/code/game/machinery/ecto_sniffer.dm
+++ b/code/game/machinery/ecto_sniffer.dm
@@ -31,7 +31,7 @@
/obj/machinery/ecto_sniffer/proc/activate(mob/activator)
flick("ecto_sniffer_flick", src)
playsound(loc, 'sound/machines/ectoscope_beep.ogg', 75)
- use_power(10)
+ use_power(active_power_usage)
say("Reporting [pick(world.file2list("strings/spook_levels.txt"))] levels of paranormal activity!")
if(activator?.ckey)
ectoplasmic_residues += activator.ckey
diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm
index 04b338c10e4..674130183f0 100644
--- a/code/game/machinery/embedded_controller/access_controller.dm
+++ b/code/game/machinery/embedded_controller/access_controller.dm
@@ -7,8 +7,8 @@
/obj/machinery/door_buttons
power_channel = AREA_USAGE_ENVIRON
use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 4
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.04
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/idSelf
@@ -79,6 +79,7 @@
controller.cycleClose(door)
else
controller.onlyClose(door)
+ use_power(active_power_usage)
addtimer(CALLBACK(src, .proc/not_busy), 2 SECONDS)
/obj/machinery/door_buttons/access_button/proc/not_busy()
diff --git a/code/game/machinery/fat_sucker.dm b/code/game/machinery/fat_sucker.dm
index 9bbeb928e71..48755ef34ff 100644
--- a/code/game/machinery/fat_sucker.dm
+++ b/code/game/machinery/fat_sucker.dm
@@ -37,7 +37,7 @@
. = ..()
/obj/machinery/fat_sucker/RefreshParts()
- ..()
+ . = ..()
var/rating = 0
for(var/obj/item/stock_parts/micro_laser/L in component_parts)
rating += L.rating
@@ -153,7 +153,7 @@
playsound(loc, 'sound/machines/chime.ogg', 30, FALSE)
else
next_fact--
- use_power(500)
+ use_power(active_power_usage)
/obj/machinery/fat_sucker/proc/start_extracting()
if(state_open || !occupant || processing || !powered())
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index b766b8c04c2..4d00c47071d 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -18,9 +18,8 @@
max_integrity = 250
integrity_failure = 0.4
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30)
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 6
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.02
power_channel = AREA_USAGE_ENVIRON
resistance_flags = FIRE_PROOF
@@ -185,6 +184,7 @@
log_game("[user] triggered a fire alarm at [COORD(src)]")
soundloop.start() //Manually pulled fire alarms will make the sound, rather than the doors.
SEND_SIGNAL(src, COMSIG_FIREALARM_ON_TRIGGER)
+ update_use_power(ACTIVE_POWER_USE)
/**
* Resets all firelocks in the area. Also tells the area to disable alarm lighting, if it was enabled.
@@ -203,6 +203,7 @@
log_game("[user] reset a fire alarm at [COORD(src)]")
soundloop.stop()
SEND_SIGNAL(src, COMSIG_FIREALARM_ON_RESET)
+ update_use_power(IDLE_POWER_USE)
/obj/machinery/firealarm/attack_hand(mob/user, list/modifiers)
if(buildstage != 2)
diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm
index 3cd3efad6f2..6a36cb344fc 100644
--- a/code/game/machinery/gulag_item_reclaimer.dm
+++ b/code/game/machinery/gulag_item_reclaimer.dm
@@ -5,9 +5,6 @@
icon_state = "dorm_taken"
req_access = list(ACCESS_BRIG) //REQACCESS TO ACCESS ALL STORED ITEMS
density = FALSE
- use_power = IDLE_POWER_USE
- idle_power_usage = 100
- active_power_usage = 2500
var/list/stored_items = list()
var/obj/machinery/gulag_teleporter/linked_teleporter = null
@@ -88,3 +85,4 @@
stored_items[user] -= W
W.forceMove(drop_location)
stored_items -= user
+ use_power(active_power_usage)
diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm
index d164a2c8542..0d44d795f17 100644
--- a/code/game/machinery/gulag_teleporter.dm
+++ b/code/game/machinery/gulag_teleporter.dm
@@ -15,9 +15,7 @@ The console is located at computer/gulag_teleporter.dm
state_open = FALSE
density = TRUE
obj_flags = NO_BUILD // Becomes undense when the door is open
- use_power = IDLE_POWER_USE
- idle_power_usage = 200
- active_power_usage = 5000
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 5
circuit = /obj/item/circuitboard/machine/gulag_teleporter
var/locked = FALSE
var/message_cooldown
@@ -167,6 +165,8 @@ The console is located at computer/gulag_teleporter.dm
if(R)
R.fields["criminal"] = "Incarcerated"
+ use_power(active_power_usage)
+
/obj/item/circuitboard/machine/gulag_teleporter
name = "labor camp teleporter (Machine Board)"
build_path = /obj/machinery/gulag_teleporter
diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm
index 3e4bd98dd6d..c56295feed4 100644
--- a/code/game/machinery/harvester.dm
+++ b/code/game/machinery/harvester.dm
@@ -7,7 +7,6 @@
base_icon_state = "harvester"
verb_say = "states"
state_open = FALSE
- idle_power_usage = 50
circuit = /obj/item/circuitboard/machine/harvester
light_color = LIGHT_COLOR_BLUE
var/interval = 20
@@ -23,6 +22,7 @@
name = "auto-autopsy"
/obj/machinery/harvester/RefreshParts()
+ . = ..()
interval = 0
var/max_time = 40
for(var/obj/item/stock_parts/micro_laser/L in component_parts)
@@ -132,7 +132,7 @@
O.forceMove(target) //Some organs, like chest ones, are different so we need to manually move them
operation_order.Remove(BP)
break
- use_power(5000)
+ use_power(active_power_usage)
addtimer(CALLBACK(src, .proc/harvest), interval)
/obj/machinery/harvester/proc/end_harvesting()
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 68e5fcee7b4..ede916c842d 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -41,9 +41,6 @@ Possible to do for anyone motivated enough:
layer = LOW_OBJ_LAYER
plane = FLOOR_PLANE
req_access = list(ACCESS_KEYCARD_AUTH) //Used to allow for forced connecting to other (not secure) holopads. Anyone can make a call, though.
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 100
max_integrity = 300
armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, FIRE = 50, ACID = 0)
circuit = /obj/item/circuitboard/machine/holopad
@@ -196,6 +193,7 @@ Possible to do for anyone motivated enough:
outgoing_call.ConnectionFailure(src)
/obj/machinery/holopad/RefreshParts()
+ . = ..()
var/holograph_range = 4
for(var/obj/item/stock_parts/capacitor/B in component_parts)
holograph_range += 1 * B.rating
@@ -572,7 +570,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
/obj/machinery/holopad/proc/SetLightsAndPower()
var/total_users = LAZYLEN(masters) + LAZYLEN(holo_calls)
update_use_power(total_users > 0 ? ACTIVE_POWER_USE : IDLE_POWER_USE)
- update_mode_power_usage(ACTIVE_POWER_USE, HOLOPAD_PASSIVE_POWER_USAGE + (HOLOGRAM_POWER_USAGE * total_users))
+ update_mode_power_usage(ACTIVE_POWER_USE, active_power_usage + HOLOPAD_PASSIVE_POWER_USAGE + (HOLOGRAM_POWER_USAGE * total_users))
if(total_users || replay_mode)
set_light(2)
else
diff --git a/code/game/machinery/hypnochair.dm b/code/game/machinery/hypnochair.dm
index 93faf6f0620..9ba728cf48a 100644
--- a/code/game/machinery/hypnochair.dm
+++ b/code/game/machinery/hypnochair.dm
@@ -115,6 +115,8 @@
"...an annoying buzz in your ears..."\
)]")
+ use_power(active_power_usage * delta_time)
+
/obj/machinery/hypnochair/proc/finish_interrogation()
interrogating = FALSE
STOP_PROCESSING(SSobj, src)
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index 01612da120d..9cc0b0ab0e3 100644
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -5,9 +5,6 @@
icon_state = "igniter0"
base_icon_state = "igniter"
plane = FLOOR_PLANE
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 4
max_integrity = 300
armor = list(MELEE = 50, BULLET = 30, LASER = 70, ENERGY = 50, BOMB = 20, BIO = 0, FIRE = 100, ACID = 70)
resistance_flags = FIRE_PROOF
@@ -33,7 +30,7 @@
return
add_fingerprint(user)
- use_power(50)
+ use_power(active_power_usage)
on = !( on )
update_appearance()
@@ -124,7 +121,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/sparker, 26)
flick("[initial(icon_state)]-spark", src)
spark_system.start()
last_spark = world.time
- use_power(1000)
+ use_power(active_power_usage)
var/turf/location = loc
if (isturf(location))
location.hotspot_expose(1000,2500,1)
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index 6c0dc124a74..90a8fc6ad26 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -13,6 +13,7 @@
base_icon_state = "iv_drip"
anchored = FALSE
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
+ use_power = NO_POWER_USE
///Who are we sticking our needle in?
var/mob/living/carbon/attached
///Are we donating or injecting?
diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm
index 298e2802d20..a0ee702722b 100644
--- a/code/game/machinery/launch_pad.dm
+++ b/code/game/machinery/launch_pad.dm
@@ -5,9 +5,7 @@
desc = "A bluespace pad able to thrust matter through bluespace, teleporting it to or from nearby locations."
icon = 'icons/obj/telescience.dmi'
icon_state = "lpad-idle"
- use_power = IDLE_POWER_USE
- idle_power_usage = 200
- active_power_usage = 2500
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2.5
hud_possible = list(DIAG_LAUNCHPAD_HUD)
circuit = /obj/item/circuitboard/machine/launchpad
var/icon_teleport = "lpad-beam"
@@ -26,11 +24,12 @@
var/teleport_beam = "sm_arc_supercharged"
/obj/machinery/launchpad/RefreshParts()
- var/E = 0
+ . = ..()
+ var/max_range_multiplier = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
- E += M.rating
+ max_range_multiplier += M.rating
range = initial(range)
- range *= E
+ range *= max_range_multiplier
/obj/machinery/launchpad/Initialize(mapload)
. = ..()
@@ -165,7 +164,7 @@
playsound(target, 'sound/weapons/emitter2.ogg', 25, TRUE)
// use a lot of power
- use_power(1000)
+ use_power(active_power_usage)
var/turf/source = target
var/list/log_msg = list()
@@ -232,9 +231,7 @@
icon_state = "blpad-idle"
icon_teleport = "blpad-beam"
anchored = FALSE
- use_power = IDLE_POWER_USE
- idle_power_usage = 0
- active_power_usage = 0
+ use_power = NO_POWER_USE
teleport_speed = 20
range = 8
stationary = FALSE
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index 60539798173..55863959e8e 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -6,6 +6,7 @@
base_icon_state = "light"
desc = "Make dark."
power_channel = AREA_USAGE_LIGHT
+ use_power = NO_POWER_USE
/// Set this to a string, path, or area instance to control that area
/// instead of the switch's location.
var/area/area = null
diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm
index 067c64e6340..efbe2e0ab79 100644
--- a/code/game/machinery/limbgrower.dm
+++ b/code/game/machinery/limbgrower.dm
@@ -6,9 +6,6 @@
icon = 'icons/obj/machines/limbgrower.dmi'
icon_state = "limbgrower_idleoff"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 100
circuit = /obj/item/circuitboard/machine/limbgrower
/// The category of limbs we're browing in our UI.
@@ -163,7 +160,7 @@
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
return
- power = max(2000, (power + consumed_reagents_list[reagent_id]))
+ power = max(active_power_usage, (power + consumed_reagents_list[reagent_id]))
busy = TRUE
use_power(power)
@@ -234,6 +231,7 @@
return text2path(path)
/obj/machinery/limbgrower/RefreshParts()
+ . = ..()
reagents.maximum_volume = 0
for(var/obj/item/reagent_containers/glass/our_beaker in component_parts)
reagents.maximum_volume += our_beaker.volume
diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm
index 00670d1f8aa..7cc2a0753d7 100644
--- a/code/game/machinery/mass_driver.dm
+++ b/code/game/machinery/mass_driver.dm
@@ -3,9 +3,6 @@
desc = "The finest in spring-loaded piston toy technology, now on a space station near you."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "mass_driver"
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 50
var/power = 1
var/code = 1
var/id = 1
@@ -36,7 +33,7 @@
/obj/machinery/mass_driver/proc/drive(amount)
if(machine_stat & (BROKEN|NOPOWER))
return
- use_power(500)
+ use_power(active_power_usage)
var/O_limit
var/atom/target = get_edge_target_turf(src, dir)
for(var/atom/movable/O in loc)
@@ -47,7 +44,7 @@
if(O_limit >= 20)
audible_message(span_notice("[src] lets out a screech, it doesn't seem to be able to handle the load."))
break
- use_power(500)
+ use_power(active_power_usage)
O.throw_at(target, drive_range * power, power)
flick("mass_driver1", src)
diff --git a/code/game/machinery/mechlaunchpad.dm b/code/game/machinery/mechlaunchpad.dm
index b10f2cc7ae2..76f4f444bc0 100644
--- a/code/game/machinery/mechlaunchpad.dm
+++ b/code/game/machinery/mechlaunchpad.dm
@@ -60,6 +60,7 @@
"style" = STYLE_SEETHROUGH,
"reverse_dropoff_coords" = list(reverse_turf.x, reverse_turf.y, reverse_turf.z)
))
+ use_power(active_power_usage)
/obj/structure/closet/supplypod/mechpod
style = STYLE_SEETHROUGH
diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm
index 22ae4160642..f1af93cc679 100644
--- a/code/game/machinery/medical_kiosk.dm
+++ b/code/game/machinery/medical_kiosk.dm
@@ -55,7 +55,7 @@
var/obj/item/card/id/card = paying.get_idcard(TRUE)
if(card?.registered_account?.account_job?.paycheck_department == payment_department)
- use_power(20)
+ use_power(active_power_usage)
paying_customer = TRUE
say("Hello, esteemed medical staff!")
RefreshParts()
@@ -63,7 +63,7 @@
var/bonus_fee = pandemonium ? rand(10,30) : 0
if(attempt_charge(src, paying, bonus_fee) & COMPONENT_OBJ_CANCEL_CHARGE )
return
- use_power(20)
+ use_power(active_power_usage)
paying_customer = TRUE
icon_state = "[base_icon_state]_active"
say("Thank you for your patronage!")
@@ -91,6 +91,7 @@
return TOOL_ACT_TOOLTYPE_SUCCESS
/obj/machinery/medical_kiosk/RefreshParts()
+ . = ..()
var/obj/item/circuitboard/machine/medical_kiosk/board = circuit
if(board)
active_price = board.custom_cost
diff --git a/code/game/machinery/medipen_refiller.dm b/code/game/machinery/medipen_refiller.dm
index ad319824297..1650434c301 100644
--- a/code/game/machinery/medipen_refiller.dm
+++ b/code/game/machinery/medipen_refiller.dm
@@ -5,7 +5,6 @@
icon_state = "medipen_refiller"
density = TRUE
circuit = /obj/item/circuitboard/machine/medipen_refiller
- idle_power_usage = 100
/// list of medipen subtypes it can refill
var/list/allowed = list(/obj/item/reagent_containers/hypospray/medipen = /datum/reagent/medicine/epinephrine,
/obj/item/reagent_containers/hypospray/medipen/atropine = /datum/reagent/medicine/atropine,
@@ -25,6 +24,7 @@
/obj/machinery/medipen_refiller/RefreshParts()
+ . = ..()
var/new_volume = 100
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
new_volume += 100 * B.rating
@@ -94,3 +94,4 @@
cut_overlays()
busy = FALSE
to_chat(user, span_notice("Medipen refilled."))
+ use_power(active_power_usage)
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 8e28586274e..34e79c90014 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -32,11 +32,9 @@ DEFINE_BITFIELD(turret_flags, list(
invisibility = INVISIBILITY_OBSERVER //the turret is invisible if it's inside its cover
density = TRUE
desc = "A covered turret that shoots at its enemies."
- use_power = IDLE_POWER_USE //this turret uses and requires power
- idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power
- active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power
req_access = list(ACCESS_SECURITY) /// Only people with Security access
power_channel = AREA_USAGE_EQUIP //drains power from the EQUIPMENT channel
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.15
max_integrity = 160 //the turret's health
integrity_failure = 0.5
armor = list(MELEE = 50, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, FIRE = 90, ACID = 90)
diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm
index 060a21f6511..78c2ef1dfaa 100644
--- a/code/game/machinery/porta_turret/portable_turret_construct.dm
+++ b/code/game/machinery/porta_turret/portable_turret_construct.dm
@@ -15,6 +15,7 @@
desc = "An unfinished covered turret frame."
anchored = FALSE
density = TRUE
+ use_power = NO_POWER_USE
var/build_step = PTURRET_UNSECURED //the current step in the building process
var/finish_name = "turret" //the name applied to the product turret
var/obj/item/gun/installed_gun = null
diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm
index 438aa5f00c3..8586dd5f0c3 100644
--- a/code/game/machinery/porta_turret/portable_turret_cover.dm
+++ b/code/game/machinery/porta_turret/portable_turret_cover.dm
@@ -10,6 +10,7 @@
layer = HIGH_OBJ_LAYER
density = FALSE
max_integrity = 80
+ use_power = NO_POWER_USE
var/obj/machinery/porta_turret/parent_turret = null
/obj/machinery/porta_turret_cover/Destroy()
diff --git a/code/game/machinery/prisongate.dm b/code/game/machinery/prisongate.dm
index 303263bde10..8237959f543 100644
--- a/code/game/machinery/prisongate.dm
+++ b/code/game/machinery/prisongate.dm
@@ -11,8 +11,8 @@
armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, FIRE = 80, ACID = 70)
use_power = IDLE_POWER_USE
power_channel = AREA_USAGE_EQUIP
- idle_power_usage = 5
- active_power_usage = 30
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.03
anchored = TRUE
/// dictates whether the gate barrier is up or not
var/gate_active = TRUE
@@ -25,11 +25,13 @@
gate_active = FALSE
flick("prisongate_turningoff", src)
icon_state = "prisongate_off"
+ update_use_power(IDLE_POWER_USE)
else
gate_active = TRUE
visible_message(span_notice("[src] whirrs back to life as its hardlight barrier fills the space between it."))
flick("prisongate_turningon", src)
icon_state = "prisongate_on"
+ update_use_power(ACTIVE_POWER_USE)
/obj/machinery/prisongate/CanAllowThrough(atom/movable/gate_toucher, border_dir)
. = ..()
diff --git a/code/game/machinery/prisonlabor.dm b/code/game/machinery/prisonlabor.dm
index 20ee5d09aa0..2144b957326 100644
--- a/code/game/machinery/prisonlabor.dm
+++ b/code/game/machinery/prisonlabor.dm
@@ -4,8 +4,8 @@
icon = 'icons/obj/machines/prison.dmi'
icon_state = "offline"
use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 50
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.05
var/obj/item/stack/license_plates/empty/current_plate
var/pressing = FALSE
@@ -58,7 +58,7 @@
update_appearance()
return FALSE
- use_power(100)
+ use_power(active_power_usage)
to_chat(user, span_notice("You finish pressing a new license plate!"))
pressing = FALSE
diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm
index daf8fb99132..d7cb8f59b10 100644
--- a/code/game/machinery/quantum_pad.dm
+++ b/code/game/machinery/quantum_pad.dm
@@ -3,9 +3,7 @@
desc = "A bluespace quantum-linked telepad used for teleporting objects to other quantum pads."
icon = 'icons/obj/telescience.dmi'
icon_state = "qpad-idle"
- use_power = IDLE_POWER_USE
- idle_power_usage = 200
- active_power_usage = 5000
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 10
obj_flags = CAN_BE_HIT | UNIQUE_RENAME
circuit = /obj/item/circuitboard/machine/quantumpad
var/teleport_cooldown = 400 //30 seconds base due to base parts
@@ -42,6 +40,7 @@
. += span_notice("The linking device is now able to be scanned with a multitool.")
/obj/machinery/quantumpad/RefreshParts()
+ . = ..()
var/E = 0
for(var/obj/item/stock_parts/capacitor/C in component_parts)
E += C.rating
@@ -164,7 +163,7 @@
last_teleport = world.time
// use a lot of power
- use_power(10000 / power_efficiency)
+ use_power(active_power_usage / power_efficiency)
sparks()
target_pad.sparks()
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index d3a8c0a851b..b3f8da8dd61 100755
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -4,9 +4,6 @@
icon_state = "recharger"
base_icon_state = "recharger"
desc = "A charging dock for energy based weaponry."
- use_power = IDLE_POWER_USE
- idle_power_usage = 4
- active_power_usage = 250
circuit = /obj/item/circuitboard/machine/recharger
pass_flags = PASSTABLE
var/obj/item/charging = null
@@ -25,6 +22,7 @@
))
/obj/machinery/recharger/RefreshParts()
+ . = ..()
for(var/obj/item/stock_parts/capacitor/C in component_parts)
recharge_coeff = C.rating
@@ -153,7 +151,7 @@
if(C)
if(C.charge < C.maxcharge)
C.give(C.chargerate * recharge_coeff * delta_time / 2)
- use_power(125 * recharge_coeff * delta_time)
+ use_power(active_power_usage * recharge_coeff * delta_time)
using_power = TRUE
update_appearance()
@@ -161,7 +159,7 @@
var/obj/item/ammo_box/magazine/recharge/R = charging
if(R.stored_ammo.len < R.max_ammo)
R.stored_ammo += new R.ammo_type(R)
- use_power(100 * recharge_coeff * delta_time)
+ use_power(active_power_usage * recharge_coeff * delta_time)
using_power = TRUE
update_appearance()
return
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index ec0b93987ae..f9ebe95de9e 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -4,9 +4,6 @@
icon = 'icons/obj/objects.dmi'
icon_state = "borgcharger0"
density = FALSE
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 1000
req_access = list(ACCESS_ROBOTICS)
state_open = TRUE
circuit = /obj/item/circuitboard/machine/cyborgrecharger
@@ -35,6 +32,7 @@
GLOB.roundstart_station_borgcharger_areas += area_name
/obj/machinery/recharge_station/RefreshParts()
+ . = ..()
recharge_speed = 0
repairs = 0
for(var/obj/item/stock_parts/capacitor/C in component_parts)
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index fd6da3c9c63..a8a28b71d33 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -47,6 +47,7 @@
AddElement(/datum/element/connect_loc, loc_connections)
/obj/machinery/recycler/RefreshParts()
+ . = ..()
var/amt_made = 0
var/mat_mod = 0
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
@@ -139,17 +140,20 @@
else if(isliving(AM))
living_detected = TRUE
crunchy_nom += AM
+
var/not_eaten = to_eat.len - nom.len - crunchy_nom.len
if(living_detected) // First, check if we have any living beings detected.
if(obj_flags & EMAGGED)
for(var/CRUNCH in crunchy_nom) // Eat them and keep going because we don't care about safety.
if(isliving(CRUNCH)) // MMIs and brains will get eaten like normal items
crush_living(CRUNCH)
+ use_power(active_power_usage)
else // Stop processing right now without eating anything.
emergency_stop()
return
for(var/nommed in nom)
recycle_item(nommed)
+ use_power(active_power_usage)
if(nom.len && sound)
playsound(src, item_recycle_sound, (50 + nom.len*5), TRUE, nom.len, ignore_walls = (nom.len - 10)) // As a substitute for playing 50 sounds at once.
if(not_eaten)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index ae61b81d34b..b41b1494eb4 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -30,6 +30,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments)
icon = 'icons/obj/terminals.dmi' //OVERRIDEN IN SKYRAT AESTHETICS - SEE MODULE
icon_state = "req_comp_off"
base_icon_state = "req_comp"
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.15
var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department
var/list/messages = list() //List of all messages
var/departmentType = 0 //bitflag
diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm
index 55c11d5b476..0524cf1f683 100644
--- a/code/game/machinery/roulette_machine.dm
+++ b/code/game/machinery/roulette_machine.dm
@@ -24,10 +24,7 @@
icon = 'icons/obj/machines/roulette.dmi'
icon_state = "idle"
density = TRUE
- use_power = IDLE_POWER_USE
anchored = FALSE
- idle_power_usage = 10
- active_power_usage = 100
max_integrity = 500
armor = list(MELEE = 45, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 10, BIO = 30, FIRE = 30, ACID = 30)
var/static/list/numbers = list("0" = "green", "1" = "red", "3" = "red", "5" = "red", "7" = "red", "9" = "red", "12" = "red", "14" = "red", "16" = "red",\
@@ -210,6 +207,8 @@
addtimer(CALLBACK(src, .proc/finish_play, player_id, bet_type, bet_amount, payout, rolled_number), 34) //4 deciseconds more so the animation can play
addtimer(CALLBACK(src, .proc/finish_play_animation), 30)
+ use_power(active_power_usage)
+
/obj/machinery/roulette/proc/finish_play_animation()
icon_state = "idle"
flick("flick_down", src)
diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm
index 4c3204c835e..0fb305f2daa 100644
--- a/code/game/machinery/scan_gate.dm
+++ b/code/game/machinery/scan_gate.dm
@@ -40,8 +40,6 @@
desc = "A gate able to perform mid-depth scans on any organisms who pass under it."
icon = 'icons/obj/machines/scangate.dmi'
icon_state = "scangate"
- use_power = IDLE_POWER_USE
- idle_power_usage = 50
circuit = /obj/item/circuitboard/machine/scanner_gate
var/scanline_timer
@@ -251,6 +249,8 @@
assembly?.activate()
set_scanline("scanning", 10)
+ use_power(active_power_usage)
+
/obj/machinery/scanner_gate/proc/alarm_beep()
if(next_beep <= world.time)
next_beep = world.time + 20
diff --git a/code/game/machinery/sheetifier.dm b/code/game/machinery/sheetifier.dm
index 9718a5f0f95..700f017a78f 100644
--- a/code/game/machinery/sheetifier.dm
+++ b/code/game/machinery/sheetifier.dm
@@ -4,9 +4,6 @@
icon = 'icons/obj/machines/sheetifier.dmi'
icon_state = "base_machine"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 100
circuit = /obj/item/circuitboard/machine/sheetifier
layer = BELOW_OBJ_LAYER
var/busy_processing = FALSE
@@ -43,6 +40,7 @@
update_appearance()
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
materials.retrieve_all() //Returns all as sheets
+ use_power(active_power_usage)
/obj/machinery/sheetifier/wrench_act(mob/living/user, obj/item/tool)
. = ..()
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 01b24cc2053..807ec527313 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -265,8 +265,6 @@
req_access = list(ACCESS_TELEPORTER)
flags_1 = CONDUCT_1
use_power = NO_POWER_USE
- idle_power_usage = 10
- active_power_usage = 50
max_integrity = 300
var/active = FALSE
var/locked = TRUE
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 4e33d5affe7..e06bed0829e 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -22,8 +22,6 @@
icon_keyboard = null
icon_screen = "slots_screen"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 50
circuit = /obj/item/circuitboard/computer/slot_machine
light_color = LIGHT_COLOR_BROWN
var/money = 3000 //How much money it has CONSUMED
@@ -220,6 +218,7 @@
/obj/machinery/computer/slot_machine/proc/do_spin()
randomize_reels()
updateDialog()
+ use_power(active_power_usage)
/obj/machinery/computer/slot_machine/proc/finish_spinning(spin_loop, mob/user, the_name)
toggle_reel_spin(0, REEL_DEACTIVATE_DELAY)
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index d50f4c3daad..38f76e281ef 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -129,6 +129,7 @@
cell.use(required_energy / efficiency)
/obj/machinery/space_heater/RefreshParts()
+ . = ..()
var/laser = 0
var/cap = 0
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
@@ -415,6 +416,7 @@
icon_state = "sheater-off"
/obj/machinery/space_heater/improvised_chem_heater/RefreshParts()
+ . = ..()
var/lasers_rating = 0
var/capacitors_rating = 0
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
diff --git a/code/game/machinery/stasis.dm b/code/game/machinery/stasis.dm
index c3c35b18b4b..d3f7a5966eb 100644
--- a/code/game/machinery/stasis.dm
+++ b/code/game/machinery/stasis.dm
@@ -10,8 +10,6 @@
can_buckle = TRUE
buckle_lying = 90
circuit = /obj/item/circuitboard/machine/stasis
- idle_power_usage = 40
- active_power_usage = 340
fair_market_price = 10
payment_department = ACCOUNT_MED
var/stasis_enabled = TRUE
diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm
index 176041dc2a0..bb6d939b76c 100644
--- a/code/game/machinery/status_display.dm
+++ b/code/game/machinery/status_display.dm
@@ -25,8 +25,6 @@
verb_ask = "beeps"
verb_exclaim = "beeps"
density = FALSE
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
layer = ABOVE_WINDOW_LAYER
var/obj/effect/overlay/status_display_text/message1_overlay
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 249e663148c..5a99acec9f4 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -5,8 +5,6 @@
icon = 'icons/obj/machines/suit_storage.dmi'
icon_state = "classic"
base_icon_state = "classic"
- use_power = ACTIVE_POWER_USE
- active_power_usage = 60
power_channel = AREA_USAGE_EQUIP
density = TRUE
obj_flags = NO_BUILD // Becomes undense when the unit is open
@@ -439,12 +437,12 @@
cell = suit.cell
if(mod)
cell = mod.get_cell()
- if(!cell)
+ if(!cell || cell.charge == cell.maxcharge)
return
var/cell_charged = cell.give(charge_rate * delta_time)
if(cell_charged)
- use_power(cell_charged)
+ use_power((active_power_usage + charge_rate) * delta_time)
/obj/machinery/suit_storage_unit/proc/shock(mob/user, prb)
if(!prob(prb))
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index fd9cab2e1a4..b269c71fcab 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -16,6 +16,7 @@
interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_OFFLINE
+ use_power = NO_POWER_USE
var/minimum_timer = 90
var/timer_set = 90
var/maximum_timer = 60000
diff --git a/code/game/machinery/teambuilder.dm b/code/game/machinery/teambuilder.dm
index eee3dba2d54..c8b55bf5b52 100644
--- a/code/game/machinery/teambuilder.dm
+++ b/code/game/machinery/teambuilder.dm
@@ -9,6 +9,7 @@
density = FALSE
can_buckle = FALSE
resistance_flags = INDESTRUCTIBLE // Just to be safe.
+ use_power = NO_POWER_USE
///Are non-humans allowed to use this?
var/humans_only = FALSE
///What color is your mob set to when crossed?
diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm
index 06c3575b427..3d2dbb5e673 100644
--- a/code/game/machinery/telecomms/computers/logbrowser.dm
+++ b/code/game/machinery/telecomms/computers/logbrowser.dm
@@ -158,6 +158,7 @@
return FALSE
/obj/machinery/computer/telecomms/server/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if (!ui)
ui = new(user, src, "ServerMonitor", name)
diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm
index 6f0a2fcf7c1..2e66f7cec62 100644
--- a/code/game/machinery/telecomms/machines/broadcaster.dm
+++ b/code/game/machinery/telecomms/machines/broadcaster.dm
@@ -14,8 +14,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
desc = "A dish-shaped machine used to broadcast processed subspace signals."
telecomms_type = /obj/machinery/telecomms/broadcaster
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 25
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.01
circuit = /obj/item/circuitboard/machine/telecomms/broadcaster
/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from)
@@ -54,6 +53,8 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
/* --- Do a snazzy animation! --- */
flick("broadcaster_send", src)
+ use_power(idle_power_usage)
+
/proc/end_message_delay()
GLOB.message_delay = FALSE
GLOB.recentmessages = list()
diff --git a/code/game/machinery/telecomms/machines/bus.dm b/code/game/machinery/telecomms/machines/bus.dm
index 76c89063dfd..8ff91e570a8 100644
--- a/code/game/machinery/telecomms/machines/bus.dm
+++ b/code/game/machinery/telecomms/machines/bus.dm
@@ -14,8 +14,7 @@
desc = "A mighty piece of hardware used to send massive amounts of data quickly."
telecomms_type = /obj/machinery/telecomms/bus
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 50
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.01
netspeed = 40
circuit = /obj/item/circuitboard/machine/telecomms/bus
var/change_frequency = 0
@@ -46,6 +45,8 @@
if(relay_information(signal, send))
break
+ use_power(idle_power_usage)
+
//Preset Buses
/obj/machinery/telecomms/bus/preset_one
diff --git a/code/game/machinery/telecomms/machines/hub.dm b/code/game/machinery/telecomms/machines/hub.dm
index 290cb094e7d..7831056c81e 100644
--- a/code/game/machinery/telecomms/machines/hub.dm
+++ b/code/game/machinery/telecomms/machines/hub.dm
@@ -14,8 +14,7 @@
desc = "A mighty piece of hardware used to send/receive massive amounts of data."
telecomms_type = /obj/machinery/telecomms/hub
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 80
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.01
long_range_link = TRUE
netspeed = 40
circuit = /obj/item/circuitboard/machine/telecomms/hub
@@ -33,6 +32,8 @@
// Then broadcast that signal to
relay_information(signal, /obj/machinery/telecomms/broadcaster)
+ use_power(idle_power_usage)
+
//Preset HUB
/obj/machinery/telecomms/hub/preset
diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm
index fbf385a9044..c683ff510c8 100644
--- a/code/game/machinery/telecomms/machines/message_server.dm
+++ b/code/game/machinery/telecomms/machines/message_server.dm
@@ -11,9 +11,6 @@
icon_state = "blackbox"
name = "Blackbox Recorder"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 100
armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 70)
var/obj/item/stored
@@ -77,9 +74,6 @@
desc = "A machine that processes and routes PDA and request console messages."
telecomms_type = /obj/machinery/telecomms/message_server
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 100
circuit = /obj/item/circuitboard/machine/telecomms/message_server
var/list/datum/data_tablet_msg/pda_msgs = list()
diff --git a/code/game/machinery/telecomms/machines/processor.dm b/code/game/machinery/telecomms/machines/processor.dm
index 02db6748971..906635d67ab 100644
--- a/code/game/machinery/telecomms/machines/processor.dm
+++ b/code/game/machinery/telecomms/machines/processor.dm
@@ -12,8 +12,7 @@
desc = "This machine is used to process large quantities of information."
telecomms_type = /obj/machinery/telecomms/processor
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 30
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.01
circuit = /obj/item/circuitboard/machine/telecomms/processor
var/process_mode = 1 // 1 = Uncompress Signals, 0 = Compress Signals
diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm
index f9abd5972db..d34de916d9a 100644
--- a/code/game/machinery/telecomms/machines/receiver.dm
+++ b/code/game/machinery/telecomms/machines/receiver.dm
@@ -12,8 +12,7 @@
desc = "This machine has a dish-like shape and green lights. It is designed to detect and process subspace radio activity."
telecomms_type = /obj/machinery/telecomms/receiver
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 30
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
circuit = /obj/item/circuitboard/machine/telecomms/receiver
/obj/machinery/telecomms/receiver/receive_signal(datum/signal/subspace/signal)
@@ -28,6 +27,8 @@
if(!relay_information(signal, /obj/machinery/telecomms/hub))
relay_information(signal, /obj/machinery/telecomms/bus)
+ use_power(idle_power_usage)
+
/obj/machinery/telecomms/receiver/proc/check_receive_level(datum/signal/subspace/signal)
if (z in signal.levels)
return TRUE
diff --git a/code/game/machinery/telecomms/machines/relay.dm b/code/game/machinery/telecomms/machines/relay.dm
index 5744c8086fa..668d30b5bb8 100644
--- a/code/game/machinery/telecomms/machines/relay.dm
+++ b/code/game/machinery/telecomms/machines/relay.dm
@@ -12,8 +12,7 @@
desc = "A mighty piece of hardware used to send massive amounts of data far away."
telecomms_type = /obj/machinery/telecomms/relay
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 30
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.01
netspeed = 5
long_range_link = 1
circuit = /obj/item/circuitboard/machine/telecomms/relay
@@ -31,6 +30,8 @@
else
signal.levels |= relay_turf.z
+ use_power(idle_power_usage)
+
/// Checks to see if it can send/receive.
/obj/machinery/telecomms/relay/proc/can(datum/signal/signal)
if(!on)
diff --git a/code/game/machinery/telecomms/machines/server.dm b/code/game/machinery/telecomms/machines/server.dm
index e38c8c6bb85..edfbbbe0ca3 100644
--- a/code/game/machinery/telecomms/machines/server.dm
+++ b/code/game/machinery/telecomms/machines/server.dm
@@ -11,8 +11,7 @@
desc = "A machine used to store data and network statistics."
telecomms_type = /obj/machinery/telecomms/server
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 15
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.01
circuit = /obj/item/circuitboard/machine/telecomms/server
var/list/log_entries = list()
var/totaltraffic = 0 // gigabytes (if > 1024, divide by 1024 -> terrabytes)
@@ -54,6 +53,7 @@
if(!can_send)
relay_information(signal, /obj/machinery/telecomms/broadcaster)
+ use_power(idle_power_usage)
// Simple log entry datum
/datum/comm_log_entry
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 6b75950b48c..f79c46b102f 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -8,9 +8,6 @@
desc = "It's the hub of a teleporting machine."
icon_state = "tele0"
base_icon_state = "tele"
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 2000
circuit = /obj/item/circuitboard/machine/teleporter_hub
var/accuracy = 0
var/obj/machinery/teleport/station/power_station
@@ -27,6 +24,7 @@
return ..()
/obj/machinery/teleport/hub/RefreshParts()
+ . = ..()
var/A = 0
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
A += M.rating
@@ -77,7 +75,7 @@
return
if (ismovable(M))
if(do_teleport(M, target, channel = TELEPORT_CHANNEL_BLUESPACE))
- use_power(5000)
+ use_power(active_power_usage)
if(!calibrated && prob(30 - ((accuracy) * 10))) //oh dear a problem
if(ishuman(M))//don't remove people from the round randomly you jerks
var/mob/living/carbon/human/human = M
@@ -130,9 +128,6 @@
desc = "The power control station for a bluespace teleporter. Used for toggling power, and can activate a test-fire to prevent malfunctions."
icon_state = "controller"
base_icon_state = "controller"
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 2000
circuit = /obj/item/circuitboard/machine/teleporter_station
var/engaged = FALSE
var/obj/machinery/computer/teleporter/teleporter_console
@@ -145,6 +140,7 @@
link_console_and_hub()
/obj/machinery/teleport/station/RefreshParts()
+ . = ..()
var/E
for(var/obj/item/stock_parts/capacitor/C in component_parts)
E += C.rating
@@ -220,7 +216,7 @@
to_chat(user, span_alert("The teleporter hub isn't responding."))
else
engaged = !engaged
- use_power(5000)
+ use_power(active_power_usage)
to_chat(user, span_notice("Teleporter [engaged ? "" : "dis"]engaged!"))
else
teleporter_console.target_ref = null
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 516cffa7361..dab14d0c366 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -8,6 +8,7 @@
layer = ABOVE_ALL_MOB_LAYER // Overhead
plane = ABOVE_GAME_PLANE
density = FALSE
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 5
var/transform_dead = 0
var/transform_standing = 0
var/cooldown_duration = 600 // 1 minute
@@ -92,7 +93,7 @@
// Sleep for a couple of ticks to allow the human to see the pain
sleep(5)
- use_power(5000) // Use a lot of power.
+ use_power(active_power_usage) // Use a lot of power.
var/mob/living/silicon/robot/R = H.Robotize()
R.cell = new /obj/item/stock_parts/cell/upgraded/plus(R, robot_cell_charge)
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 4ca590c3946..9f12c1330a1 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -224,6 +224,7 @@ GLOBAL_LIST_INIT(dye_registry, list(
qdel(color_source)
color_source = null
update_appearance()
+ use_power(active_power_usage)
/obj/item/proc/dye_item(dye_color, dye_key_override)
var/dye_key_selector = dye_key_override ? dye_key_override : dying_key
diff --git a/code/modules/NTNet/relays.dm b/code/modules/NTNet/relays.dm
index 4f044cb90f3..63cca33c0c2 100644
--- a/code/modules/NTNet/relays.dm
+++ b/code/modules/NTNet/relays.dm
@@ -3,8 +3,7 @@
name = "NTNet Quantum Relay"
desc = "A very complex router and transmitter capable of connecting electronic devices together. Looks fragile."
use_power = ACTIVE_POWER_USE
- active_power_usage = 10000 //10kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. Used to be 20 but that actually drained the smes one round
- idle_power_usage = 100
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 10 //10kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. Used to be 20 but that actually drained the smes one round
icon = 'icons/obj/machines/telecomms.dmi'
icon_state = "bus"
density = TRUE
diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm
index 6aefc37e68f..c73a735f4fa 100644
--- a/code/modules/antagonists/abductor/machinery/console.dm
+++ b/code/modules/antagonists/abductor/machinery/console.dm
@@ -7,6 +7,7 @@
/obj/machinery/abductor
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ use_power = NO_POWER_USE
var/team_number = 0
//Console
diff --git a/code/modules/antagonists/fugitive/fugitive_ship.dm b/code/modules/antagonists/fugitive/fugitive_ship.dm
index f6a9fd5edea..0f5d0de7370 100644
--- a/code/modules/antagonists/fugitive/fugitive_ship.dm
+++ b/code/modules/antagonists/fugitive/fugitive_ship.dm
@@ -31,6 +31,7 @@
antag.is_captured = TRUE
to_chat(fugitive, span_userdanger("You are thrown into a vast void of bluespace, and as you fall further into oblivion the comparatively small entrance to reality gets smaller and smaller until you cannot see it anymore. You have failed to avoid capture."))
fugitive.ghostize(TRUE) //so they cannot suicide, round end stuff.
+ use_power(active_power_usage)
/obj/machinery/computer/shuttle/hunter
name = "shuttle console"
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index 2acb79cb7d2..d8f59c9e035 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -297,6 +297,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module))
desc = "A weapon which disintegrates all organic life in a large area."
density = TRUE
verb_exclaim = "blares"
+ use_power = NO_POWER_USE
var/timing = FALSE
var/obj/effect/countdown/doomsday/countdown
var/detonation_timer
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 978c63e1ab6..5fc499db532 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -68,9 +68,8 @@
desc = "A machine that monitors atmosphere levels. Goes off if the area is dangerous."
icon = 'icons/obj/monitors.dmi' //OVERRIDEN IN SKYRAT AESTHETICS - SEE MODULE
icon_state = "alarmp"
- use_power = IDLE_POWER_USE
- idle_power_usage = 4
- active_power_usage = 8
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.02
power_channel = AREA_USAGE_ENVIRON
req_access = list(ACCESS_ATMOSPHERICS)
max_integrity = 250
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm
index 82da03a4124..31d7c04caa8 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm
@@ -3,6 +3,7 @@
dir = SOUTH
initialize_directions = SOUTH|NORTH
use_power = IDLE_POWER_USE
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.25
device_type = BINARY
layer = GAS_PUMP_LAYER
pipe_flags = PIPING_BRIDGE
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
index 4c82f903a49..f149ccfd6d6 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
@@ -16,6 +16,7 @@ Passive gate is similar to the regular pump except:
interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE
construction_type = /obj/item/pipe/directional
pipe_state = "passivegate"
+ use_power = NO_POWER_USE
///Set the target pressure the component should arrive to
var/target_pressure = ONE_ATMOSPHERE
///Variable for radio frequency
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
index c5b3a43dc50..e0cb334b048 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
@@ -6,6 +6,7 @@
shift_underlay_only = FALSE
construction_type = /obj/item/pipe/directional
pipe_state = "pvalve"
+ use_power = NO_POWER_USE
///Amount of pressure needed before the valve for it to open
var/target_pressure = ONE_ATMOSPHERE
///Frequency for radio signaling
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/binary_devices/thermomachine.dm
index 620d9bb9f5a..15761a31b59 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/thermomachine.dm
@@ -88,6 +88,7 @@
return ..()
/obj/machinery/atmospherics/components/binary/thermomachine/RefreshParts()
+ . = ..()
var/calculated_bin_rating
for(var/obj/item/stock_parts/matter_bin/bin in component_parts)
calculated_bin_rating += bin.rating
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
index 40fc7f5f761..1c829649b64 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
@@ -15,6 +15,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off.
construction_type = /obj/item/pipe/binary
pipe_state = "mvalve"
custom_reconcilation = TRUE
+ use_power = NO_POWER_USE
///Type of valve (manual or digital), used to set the icon of the component in update_icon_nopipes()
var/valve_type = MANUAL_VALVE
///Bool to stop interactions while the opening/closing animation is going
diff --git a/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm b/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm
index d87ce13c733..9adc068e3ca 100644
--- a/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm
+++ b/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm
@@ -118,6 +118,7 @@
env.garbage_collect()
/obj/machinery/electrolyzer/RefreshParts()
+ . = ..()
var/manipulator = 0
var/cap = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm
index cde55b10a35..d51fbdbefee 100644
--- a/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm
+++ b/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm
@@ -8,7 +8,7 @@
icon_state = "core_off"
circuit = /obj/item/circuitboard/machine/HFR_core
use_power = IDLE_POWER_USE
- idle_power_usage = 50
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION
///Vars for the state of the icon of the object (open, off, active)
icon_state_open = "core_open"
icon_state_off = "core_off"
@@ -171,7 +171,7 @@
radio.set_listening(FALSE)
radio.recalculateChannels()
investigate_log("has been created.", INVESTIGATE_HYPERTORUS)
-
+
RegisterSignal(src.loc, COMSIG_ATOM_ENTERED, .proc/on_entered)
for(var/atom/movable/movable_object in src.loc)
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm b/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm
index d9d26724d94..5acd1acce8d 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm
@@ -3,6 +3,7 @@
dir = SOUTH
initialize_directions = SOUTH|NORTH|WEST
use_power = IDLE_POWER_USE
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION
device_type = TRINARY
layer = GAS_FILTER_LAYER
pipe_flags = PIPING_ONE_PER_TURF
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 1855a63721c..c95f4423a1b 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -78,6 +78,10 @@
occupant_typecache = list(/mob/living/carbon, /mob/living/simple_animal)
processing_flags = NONE
+ use_power = IDLE_POWER_USE
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.75
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 1.5
+
showpipe = FALSE
var/autoeject = TRUE
@@ -132,6 +136,7 @@
..(dir, dir)
/obj/machinery/atmospherics/components/unary/cryo_cell/RefreshParts()
+ . = ..()
var/C
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
C += M.rating
@@ -215,6 +220,10 @@ GLOBAL_VAR_INIT(cryo_overlay_cover_off, mutable_appearance('icons/obj/cryogenics
SEND_SIGNAL(src, COMSIG_CRYO_SET_ON, active)
. = on
on = active
+ if(on)
+ update_use_power(ACTIVE_POWER_USE)
+ else
+ update_use_power(IDLE_POWER_USE)
update_appearance()
/obj/machinery/atmospherics/components/unary/cryo_cell/on_set_is_operational(old_value)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index a4883ada87c..2b29c650fc3 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -12,6 +12,8 @@
pipe_state = "injector"
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF //really helpful in building gas chambers for xenomorphs
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.25
+
///Rate of operation of the device
var/volume_rate = 50
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
index 94880577f26..8a25fd86da3 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
@@ -12,6 +12,7 @@
desc = "Has a valve and pump attached to it."
use_power = IDLE_POWER_USE
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.15
can_unwrench = TRUE
welded = FALSE
layer = GAS_SCRUBBER_LAYER
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
index d2b1d4bfee4..5cbb5185176 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
@@ -7,8 +7,8 @@
name = "air scrubber"
desc = "Has a valve and pump attached to it."
use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 60
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.1
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.15
can_unwrench = TRUE
welded = FALSE
layer = GAS_SCRUBBER_LAYER
diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm
index 192c8ff2458..5a337707c57 100644
--- a/code/modules/atmospherics/machinery/other/meter.dm
+++ b/code/modules/atmospherics/machinery/other/meter.dm
@@ -5,9 +5,8 @@
icon_state = "meter"
layer = HIGH_PIPE_LAYER
power_channel = AREA_USAGE_ENVIRON
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 9
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.03
max_integrity = 150
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 40, ACID = 0)
greyscale_config = /datum/greyscale_config/meter
diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm
index 457352b6ab8..56552eeedf0 100644
--- a/code/modules/atmospherics/machinery/other/miner.dm
+++ b/code/modules/atmospherics/machinery/other/miner.dm
@@ -26,8 +26,8 @@
var/power_draw_dynamic_kpa_coeff = 0.5
var/broken = FALSE
var/broken_message = "ERROR"
- idle_power_usage = 150
- active_power_usage = 2000
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 1.5
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
/obj/machinery/atmospherics/miner/Initialize(mapload)
. = ..()
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index f2b79a9648e..760a6de6574 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -182,8 +182,7 @@
name = "huge air scrubber"
icon_state = "hugescrubber"
anchored = TRUE
- active_power_usage = 500
- idle_power_usage = 10
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.5
overpressure_m = 200
volume_rate = 1500
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 4a538cdbef6..dce9667a13e 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -161,9 +161,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
bound_y = 0
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 100
- active_power_usage = 5000
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 5
var/calibrated = TRUE
/// Type of instanced gateway destination, needs to be subtype of /datum/gateway_destination/gateway
@@ -308,6 +306,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
try_to_linkup()
/obj/machinery/computer/gateway_control/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Gateway", name)
diff --git a/code/modules/awaymissions/mission_code/challenge.dm b/code/modules/awaymissions/mission_code/challenge.dm
index 05d07922015..b296d894064 100644
--- a/code/modules/awaymissions/mission_code/challenge.dm
+++ b/code/modules/awaymissions/mission_code/challenge.dm
@@ -34,4 +34,5 @@
welded = TRUE
/obj/machinery/power/emitter/energycannon/RefreshParts()
+ SHOULD_CALL_PARENT(FALSE)
return
diff --git a/code/modules/cargo/department_order.dm b/code/modules/cargo/department_order.dm
index 55ede94f8ca..7e80403e601 100644
--- a/code/modules/cargo/department_order.dm
+++ b/code/modules/cargo/department_order.dm
@@ -33,6 +33,7 @@ GLOBAL_LIST_INIT(department_order_cooldowns, list(
department_delivery_areas = list(/area/hallway/primary/central) //if this doesn't exist like honestly fuck your map man
/obj/machinery/computer/department_orders/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "DepartmentOrders")
diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm
index 28f5496189c..1c15fac6da9 100644
--- a/code/modules/cargo/expressconsole.dm
+++ b/code/modules/cargo/expressconsole.dm
@@ -16,6 +16,7 @@
blockade_warning = "Bluespace instability detected. Delivery impossible."
req_access = list(ACCESS_QM)
is_express = TRUE
+ interface_type = "CargoExpress"
var/message
var/printed_beacons = 0 //number of beacons printed. Used to determine beacon names.
@@ -93,12 +94,6 @@
"desc" = P.desc || P.name // If there is a description, use it. Otherwise use the pack's name.
))
-/obj/machinery/computer/cargo/express/ui_interact(mob/living/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "CargoExpress", name)
- ui.open()
-
/obj/machinery/computer/cargo/express/ui_data(mob/user)
var/canBeacon = beacon && (isturf(beacon.loc) || ismob(beacon.loc))//is the beacon in a valid location?
var/list/data = list()
diff --git a/code/modules/cargo/markets/market_telepad.dm b/code/modules/cargo/markets/market_telepad.dm
index a8ecb11d383..1c433f48584 100644
--- a/code/modules/cargo/markets/market_telepad.dm
+++ b/code/modules/cargo/markets/market_telepad.dm
@@ -16,7 +16,7 @@
circuit = /obj/item/circuitboard/machine/ltsrbt
density = TRUE
- idle_power_usage = 200
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 2
/// Divider for power_usage_per_teleport.
var/power_efficiency = 1
@@ -48,6 +48,7 @@
. = ..()
/obj/machinery/ltsrbt/RefreshParts()
+ . = ..()
recharge_time = base_recharge_time
// On tier 4 recharge_time should be 20 and by default it is 80 as scanning modules should be tier 1.
for(var/obj/item/stock_parts/scanning_module/scan in component_parts)
diff --git a/code/modules/cargo/orderconsole.dm b/code/modules/cargo/orderconsole.dm
index c8e302ee8ec..31a4550dfdf 100644
--- a/code/modules/cargo/orderconsole.dm
+++ b/code/modules/cargo/orderconsole.dm
@@ -34,7 +34,8 @@
var/stationcargo = TRUE
///The account this console processes and displays. Independent from the account the shuttle processes.
var/cargo_account = ACCOUNT_CAR
-
+ ///Interface name for the ui_interact call for different subtypes.
+ var/interface_type = "Cargo"
/obj/machinery/computer/cargo/request
name = "supply request console"
@@ -89,9 +90,10 @@
circuit.configure_machine(src)
/obj/machinery/computer/cargo/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
- ui = new(user, src, "Cargo", name)
+ ui = new(user, src, interface_type, name)
ui.open()
/obj/machinery/computer/cargo/ui_data()
diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm
index ace61770f20..687173c6f72 100644
--- a/code/modules/events/pirates.dm
+++ b/code/modules/events/pirates.dm
@@ -341,6 +341,8 @@
var/sending_timer
///This is the cargo hold ID used by the piratepad machine. Match these two to link them together.
var/cargo_hold_id
+ ///Interface name for the ui_interact call for different subtypes.
+ var/interface_type = "CargoHoldTerminal"
/obj/machinery/computer/piratepad_control/Initialize(mapload)
..()
@@ -365,9 +367,10 @@
pad_ref = WEAKREF(pad)
/obj/machinery/computer/piratepad_control/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
- ui = new(user, src, "CargoHoldTerminal", name)
+ ui = new(user, src, interface_type, name)
ui.open()
/obj/machinery/computer/piratepad_control/ui_data(mob/user)
diff --git a/code/modules/experisci/destructive_scanner.dm b/code/modules/experisci/destructive_scanner.dm
index f4fa42289e6..0be450ff6bd 100644
--- a/code/modules/experisci/destructive_scanner.dm
+++ b/code/modules/experisci/destructive_scanner.dm
@@ -35,6 +35,7 @@
return
aggressive = TRUE
start_closing(aggressive)
+ use_power(idle_power_usage)
///Closes the machine to kidnap everything in the turf into it.
/obj/machinery/destructive_scanner/proc/start_closing(aggressive)
@@ -47,6 +48,7 @@
scanning = TRUE
update_icon()
playsound(src, 'sound/machines/destructive_scanner/TubeDown.ogg', 100)
+ use_power(idle_power_usage)
addtimer(CALLBACK(src, .proc/start_scanning, aggressive), 1.2 SECONDS)
///Starts scanning the fancy scanning effects
@@ -55,6 +57,7 @@
playsound(src, 'sound/machines/destructive_scanner/ScanDangerous.ogg', 100, extrarange = 5)
else
playsound(src, 'sound/machines/destructive_scanner/ScanSafe.ogg', 100)
+ use_power(active_power_usage)
addtimer(CALLBACK(src, .proc/finish_scanning, aggressive), 6 SECONDS)
diff --git a/code/modules/explorer_drone/scanner_array.dm b/code/modules/explorer_drone/scanner_array.dm
index 66a272bc688..968beb9d3cf 100644
--- a/code/modules/explorer_drone/scanner_array.dm
+++ b/code/modules/explorer_drone/scanner_array.dm
@@ -195,8 +195,6 @@ GLOBAL_LIST_INIT(scan_conditions,init_scan_conditions())
icon = 'icons/obj/exploration.dmi'
icon_state = "scanner_off"
desc = "Sophisticated scanning array. Easily influenced by enviroment."
- idle_power_usage = 0
- active_power_usage = 500
/obj/machinery/exoscanner/Initialize(mapload)
. = ..()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm
index 75012e96a3a..363f173c15b 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm
@@ -17,8 +17,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
icon_state = "fryer_off"
density = TRUE
pass_flags_self = PASSMACHINE | LETPASSTHROW
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
layer = BELOW_OBJ_LAYER
circuit = /obj/item/circuitboard/machine/deep_fryer
var/obj/item/food/deepfryholder/frying //What's being fried RIGHT NOW?
@@ -47,6 +46,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
return ..()
/obj/machinery/deepfryer/RefreshParts()
+ . = ..()
var/oil_efficiency
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
oil_efficiency += M.rating
@@ -108,6 +108,8 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
frying_burnt = TRUE
visible_message(span_warning("[src] emits an acrid smell!"))
+ use_power(active_power_usage)
+
/obj/machinery/deepfryer/attack_ai(mob/user)
return
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index 39a3869bf1d..502d179981c 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -4,9 +4,6 @@
icon = 'icons/obj/kitchen.dmi'
icon_state = "grinder"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 500
circuit = /obj/item/circuitboard/machine/gibber
var/operating = FALSE //Is it on?
@@ -21,6 +18,7 @@
add_overlay("grjam")
/obj/machinery/gibber/RefreshParts()
+ . = ..()
gibtime = 40
meat_produced = initial(meat_produced)
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
@@ -144,7 +142,7 @@
audible_message(span_hear("You hear a loud metallic grinding sound."))
return
- use_power(1000)
+ use_power(active_power_usage)
audible_message(span_hear("You hear a loud squelchy grinding sound."))
playsound(loc, 'sound/machines/juicer.ogg', 50, TRUE)
operating = TRUE
diff --git a/code/modules/food_and_drinks/kitchen_machinery/griddle.dm b/code/modules/food_and_drinks/kitchen_machinery/griddle.dm
index 19fc4f6e5a5..40421e50a35 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/griddle.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/griddle.dm
@@ -5,8 +5,7 @@
icon_state = "griddle1_off"
density = TRUE
pass_flags_self = PASSMACHINE | PASSTABLE| LETPASSTHROW // It's roughly the height of a table.
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
layer = BELOW_OBJ_LAYER
circuit = /obj/item/circuitboard/machine/griddle
processing_flags = START_PROCESSING_MANUALLY
@@ -142,6 +141,8 @@
if(prob(10))
visible_message(span_danger("[griddled_item] doesn't seem to be doing too great on the [src]!"))
+ use_power(active_power_usage)
+
/obj/machinery/griddle/update_icon_state()
icon_state = "griddle[variant]_[on ? "on" : "off"]"
return ..()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index f62d30d57bb..4d9368133fe 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -7,9 +7,6 @@
icon_state = "mw"
layer = BELOW_OBJ_LAYER
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 100
circuit = /obj/item/circuitboard/machine/microwave
pass_flags = PASSTABLE
light_color = LIGHT_COLOR_YELLOW
@@ -46,6 +43,7 @@
. = ..()
/obj/machinery/microwave/RefreshParts()
+ . = ..()
efficiency = 0
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
efficiency += M.rating
@@ -319,7 +317,7 @@
pre_success()
return
time--
- use_power(500)
+ use_power(active_power_usage)
addtimer(CALLBACK(src, .proc/loop, type, time, wait), wait)
/obj/machinery/microwave/power_change()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
index ed284e91947..79400c29121 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
@@ -7,9 +7,6 @@ GLOBAL_LIST_EMPTY(monkey_recyclers)
icon_state = "grinder"
layer = BELOW_OBJ_LAYER
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 50
circuit = /obj/item/circuitboard/machine/monkey_recycler
var/stored_matter = 0
var/cube_production = 0.2
@@ -29,6 +26,7 @@ GLOBAL_LIST_EMPTY(monkey_recyclers)
return ..()
/obj/machinery/monkey_recycler/RefreshParts() //Ranges from 0.2 to 0.8 per monkey recycled
+ . = ..()
cube_production = 0
for(var/obj/item/stock_parts/manipulator/B in component_parts)
//cube_production += B.rating * 0.1 //ORIGINAL
@@ -82,7 +80,7 @@ GLOBAL_LIST_EMPTY(monkey_recyclers)
playsound(src.loc, 'sound/machines/juicer.ogg', 50, TRUE)
var/offset = prob(50) ? -2 : 2
animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking
- use_power(500)
+ use_power(active_power_usage)
stored_matter += cube_production
addtimer(VARSET_CALLBACK(src, pixel_x, base_pixel_x))
addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, span_notice("The machine now has [stored_matter] monkey\s worth of material stored.")))
diff --git a/code/modules/food_and_drinks/kitchen_machinery/oven.dm b/code/modules/food_and_drinks/kitchen_machinery/oven.dm
index 7a04bc6ee5a..b592af2effa 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/oven.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/oven.dm
@@ -15,8 +15,6 @@
icon_state = "oven_off"
density = TRUE
pass_flags_self = PASSMACHINE | LETPASSTHROW
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
layer = BELOW_OBJ_LAYER
circuit = /obj/item/circuitboard/machine/oven
processing_flags = START_PROCESSING_MANUALLY
@@ -84,6 +82,7 @@
visible_message(span_danger("You smell a burnt smell coming from [src]!"))
set_smoke_state(worst_cooked_food_state)
update_appearance()
+ use_power(active_power_usage)
/obj/machinery/oven/attackby(obj/item/I, mob/user, params)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
index 100075e4850..f3124827e7d 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
@@ -7,9 +7,6 @@
icon_state = "processor1"
layer = BELOW_OBJ_LAYER
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 50
circuit = /obj/item/circuitboard/machine/processor
var/broken = FALSE
var/processing = FALSE
@@ -42,6 +39,7 @@
LAZYADD(processor_inputs[machine_type], typecache)
/obj/machinery/processor/RefreshParts()
+ . = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
rating_amount = B.rating
for(var/obj/item/stock_parts/manipulator/M in component_parts)
@@ -138,7 +136,7 @@
span_notice("You turn on [src]."), \
span_hear("You hear a food processor."))
playsound(src.loc, 'sound/machines/blender.ogg', 50, TRUE)
- use_power(500)
+ use_power(active_power_usage)
var/total_time = 0
for(var/atom/movable/movable_input as anything in processor_contents)
var/datum/food_processor_process/recipe = PROCESSOR_SELECT_RECIPE(movable_input)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index dadea030864..79b7b831f93 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -8,9 +8,6 @@
icon_state = "smartfridge"
layer = BELOW_OBJ_LAYER
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 100
circuit = /obj/item/circuitboard/machine/smartfridge
/// What path boards used to construct it should build into when dropped. Needed so we don't accidentally have them build variants with items preloaded in them.
var/base_build_path = /obj/machinery/smartfridge
@@ -36,6 +33,7 @@
load(new typekey(src))
/obj/machinery/smartfridge/RefreshParts()
+ . = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
max_n_of_items = 1500 * B.rating
@@ -168,6 +166,7 @@
if(!M.put_in_hands(O))
O.forceMove(drop_location())
adjust_item_drop_location(O)
+ use_power(active_power_usage)
/obj/machinery/smartfridge/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
@@ -266,9 +265,6 @@
desc = "A wooden contraption, used to dry plant products, food and hide."
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "drying_rack"
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 200
visible_contents = FALSE
base_build_path = /obj/machinery/smartfridge/drying_rack //should really be seeing this without admin fuckery.
var/drying = FALSE
@@ -290,7 +286,6 @@
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
..()
-/obj/machinery/smartfridge/drying_rack/RefreshParts()
/obj/machinery/smartfridge/drying_rack/default_deconstruction_screwdriver()
/obj/machinery/smartfridge/drying_rack/exchange_parts()
/obj/machinery/smartfridge/drying_rack/spawn_frame()
@@ -348,6 +343,7 @@
SStgui.update_uis(src)
update_appearance()
+ use_power(active_power_usage)
/obj/machinery/smartfridge/drying_rack/accept_check(obj/item/O)
if(HAS_TRAIT(O, TRAIT_DRYABLE)) //set on dryable element
@@ -457,6 +453,7 @@
organ.organ_flags |= ORGAN_FROZEN
/obj/machinery/smartfridge/organ/RefreshParts()
+ . = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
max_n_of_items = 20 * B.rating
repair_rate = max(0, STANDARD_ORGAN_HEALING * (B.rating - 1) * 0.5)
diff --git a/code/modules/food_and_drinks/restaurant/_venue.dm b/code/modules/food_and_drinks/restaurant/_venue.dm
index 1a311315480..50d3b492ee6 100644
--- a/code/modules/food_and_drinks/restaurant/_venue.dm
+++ b/code/modules/food_and_drinks/restaurant/_venue.dm
@@ -108,9 +108,6 @@
icon_state = "portal"
anchored = TRUE
density = FALSE
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 100
circuit = /obj/item/circuitboard/machine/restaurant_portal
layer = BELOW_OBJ_LAYER
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | UNACIDABLE | ACID_PROOF
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index b559a0db1cb..c1444e90ae6 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -33,8 +33,6 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf
name = "holodeck control console"
desc = "A computer used to control a nearby holodeck."
icon_screen = "holocontrol"
- idle_power_usage = 10
- active_power_usage = 50
//new vars
///what area type this holodeck loads into. linked turns into the nearest instance of this area
@@ -133,6 +131,7 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf
LAZYADD(program_cache, list(info_this))
/obj/machinery/computer/holodeck/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Holodeck", name)
@@ -357,7 +356,7 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf
derez(item)
for(var/obj/effect/holodeck_effect/holo_effect as anything in effects)
holo_effect.tick()
- update_mode_power_usage(ACTIVE_POWER_USE, 50 + spawned.len * 3 + effects.len * 5)
+ update_mode_power_usage(ACTIVE_POWER_USE, active_power_usage + spawned.len * 3 + effects.len * 5)
/obj/machinery/computer/holodeck/proc/toggle_power(toggleOn = FALSE)
if(active == toggleOn)
diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm
index 46990746310..c5113edac1f 100644
--- a/code/modules/holodeck/items.dm
+++ b/code/modules/holodeck/items.dm
@@ -118,9 +118,8 @@
var/area/currentarea = null
var/eventstarted = FALSE
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 6
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.006
power_channel = AREA_USAGE_ENVIRON
/obj/machinery/readybutton/attack_ai(mob/user)
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 76bfb95f0f1..4336d408368 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -4,8 +4,6 @@
icon = 'icons/obj/machines/biogenerator.dmi'
icon_state = "biogen-empty"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 40
circuit = /obj/item/circuitboard/machine/biogenerator
var/processing = FALSE
var/obj/item/reagent_containers/glass/beaker = null
@@ -46,6 +44,7 @@
update_appearance()
/obj/machinery/biogenerator/RefreshParts()
+ . = ..()
var/E = 0
var/P = 0
var/max_storage = 40
@@ -180,7 +179,7 @@
processing = TRUE
update_appearance()
playsound(loc, 'sound/machines/blender.ogg', 50, TRUE)
- use_power(S * 30)
+ use_power(S * active_power_usage)
sleep(S + 15 / productivity)
processing = FALSE
update_appearance()
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 39b6392b918..6b1a897e5f6 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -8,7 +8,6 @@
pixel_z = 8
obj_flags = CAN_BE_HIT | UNIQUE_RENAME
circuit = /obj/item/circuitboard/machine/hydroponics
- idle_power_usage = 5000
use_power = NO_POWER_USE
///The amount of water in the tray (max 100)
var/waterlevel = 100
@@ -161,6 +160,7 @@
AddComponent(/datum/component/usb_port, list(/obj/item/circuit_component/hydroponics))
/obj/machinery/hydroponics/constructable/RefreshParts()
+ . = ..()
var/tmp_capacity = 0
for (var/obj/item/stock_parts/matter_bin/M in component_parts)
tmp_capacity += M.rating
@@ -461,7 +461,7 @@
self_sustaining = new_value
- update_use_power(self_sustaining ? IDLE_POWER_USE : NO_POWER_USE)
+ update_use_power(self_sustaining ? ACTIVE_POWER_USE : NO_POWER_USE)
update_appearance()
SEND_SIGNAL(src, COMSIG_HYDROTRAY_SET_SELFSUSTAINING, new_value)
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index 4d37dd64273..2a1f2e966a1 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -89,6 +89,7 @@
return NONE
/obj/machinery/seed_extractor/RefreshParts()
+ . = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
max_seeds = initial(max_seeds) * B.rating
for(var/obj/item/stock_parts/manipulator/M in component_parts)
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 7e2053a2c26..9f941f04307 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -50,6 +50,8 @@
var/sending_request = FALSE
///Prevents spamming requests, acts as a second layer of protection against spam
COOLDOWN_DECLARE(db_request_cooldown)
+ ///Interface name for the ui_interact call for different subtypes.
+ var/interface_type = "LibraryVisitor"
/obj/machinery/computer/libraryconsole/Initialize(mapload)
. = ..()
@@ -57,9 +59,10 @@
INVOKE_ASYNC(src, .proc/update_db_info)
/obj/machinery/computer/libraryconsole/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
- ui = new(user, src, "LibraryVisitor")
+ ui = new(user, src, interface_type)
ui.open()
/obj/machinery/computer/libraryconsole/ui_data(mob/user)
@@ -273,6 +276,7 @@
icon_screen = "library"
icon_keyboard = null
circuit = /obj/item/circuitboard/computer/libraryconsole
+ interface_type = "LibraryConsole"
///Can spawn secret lore item
var/can_spawn_lore = TRUE
///The screen we're currently on, sent to the ui
@@ -307,12 +311,6 @@
if(mapload)
dynamic_inv_load = TRUE //Only load in stuff if we were placed during mapload
-/obj/machinery/computer/libraryconsole/bookmanagement/ui_interact(mob/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "LibraryConsole")
- ui.open()
-
/obj/machinery/computer/libraryconsole/bookmanagement/ui_data(mob/user)
var/list/data = list()
data["can_db_request"] = can_db_request()
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/TheDerelict.dm b/code/modules/mapfluff/ruins/spaceruin_code/TheDerelict.dm
index 76d6e79ae4a..332fb3bacb3 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/TheDerelict.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/TheDerelict.dm
@@ -115,6 +115,7 @@
lock_vault()
/obj/machinery/computer/vaultcontroller/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "VaultController", name)
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/oldstation.dm b/code/modules/mapfluff/ruins/spaceruin_code/oldstation.dm
index c704b60ff15..4edfbffae17 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/oldstation.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/oldstation.dm
@@ -82,8 +82,8 @@
anchored = TRUE
density = TRUE
obj_flags = NO_BUILD // Becomes undense when the door is open
- idle_power_usage = 50
- active_power_usage = 300
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.5
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.3
var/busy = FALSE
var/busy_icon_state
diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm
index 53f37e45f13..1d19fd1f534 100644
--- a/code/modules/mining/aux_base.dm
+++ b/code/modules/mining/aux_base.dm
@@ -45,6 +45,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/auxiliary_base, 32)
return ..()
/obj/machinery/computer/auxiliary_base/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AuxBaseConsole", name)
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index 82e5bc8c390..e48f6f9fe17 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -10,8 +10,7 @@
icon = null
icon_state = null
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
///A flag that describes this device type
var/hardware_flag = 0
///Power usage during last tick
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 19780f67072..d3f4c7fea64 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -21,9 +21,6 @@
icon = 'icons/obj/library.dmi'
icon_state = "photocopier"
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 30
- active_power_usage = 200
power_channel = AREA_USAGE_EQUIP
max_integrity = 300
integrity_failure = 0.33
@@ -218,6 +215,7 @@
*/
/obj/machinery/photocopier/proc/do_copy_loop(datum/callback/copy_cb, mob/user)
busy = TRUE
+ update_use_power(ACTIVE_POWER_USE)
var/i
for(i in 1 to num_copies)
if(attempt_charge(src, user) & COMPONENT_OBJ_CANCEL_CHARGE)
@@ -229,6 +227,7 @@
* Sets busy to `FALSE`. Created as a proc so it can be used in callbacks.
*/
/obj/machinery/photocopier/proc/reset_busy()
+ update_use_power(IDLE_POWER_USE)
busy = FALSE
/**
diff --git a/code/modules/plumbing/ducts.dm b/code/modules/plumbing/ducts.dm
index dfb9885c400..295cc7b790d 100644
--- a/code/modules/plumbing/ducts.dm
+++ b/code/modules/plumbing/ducts.dm
@@ -8,6 +8,8 @@ All the important duct code:
icon = 'icons/obj/plumbing/fluid_ducts.dmi'
icon_state = "nduct"
+ use_power = NO_POWER_USE
+
///bitfield with the directions we're connected in
var/connects
///set to TRUE to disable smart duct behaviour
diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm
index 014a3240d9a..4adb0f008b4 100644
--- a/code/modules/plumbing/plumbers/_plumb_machinery.dm
+++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm
@@ -8,8 +8,7 @@
icon = 'icons/obj/plumbing/plumbers.dmi'
icon_state = "pump"
density = TRUE
- active_power_usage = 30
- use_power = ACTIVE_POWER_USE
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 7.5
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
///Plumbing machinery is always gonna need reagents, so we might aswell put it here
var/buffer = 50
diff --git a/code/modules/plumbing/plumbers/acclimator.dm b/code/modules/plumbing/plumbers/acclimator.dm
index 7707bce23f1..7cc83ca4f48 100644
--- a/code/modules/plumbing/plumbers/acclimator.dm
+++ b/code/modules/plumbing/plumbers/acclimator.dm
@@ -11,6 +11,7 @@
icon_state = "acclimator"
base_icon_state = "acclimator"
buffer = 200
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
///towards wich temperature do we build?
var/target_temperature = 300
@@ -55,6 +56,7 @@
if(!emptying) //suspend heating/cooling during emptying phase
reagents.adjust_thermal_energy((target_temperature - reagents.chem_temp) * heater_coefficient * delta_time * SPECIFIC_HEAT_DEFAULT * reagents.total_volume) //keep constant with chem heater
reagents.handle_reactions()
+ use_power(active_power_usage * delta_time)
else if(acclimate_state != NEUTRAL)
acclimate_state = NEUTRAL
update_appearance()
diff --git a/code/modules/plumbing/plumbers/bottler.dm b/code/modules/plumbing/plumbers/bottler.dm
index fadbcbd9a4b..7aa6466990c 100644
--- a/code/modules/plumbing/plumbers/bottler.dm
+++ b/code/modules/plumbing/plumbers/bottler.dm
@@ -7,7 +7,7 @@
reagent_flags = TRANSPARENT | DRAINABLE
buffer = 100
-
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
///how much do we fill
var/wanted_amount = 10
///where things are sent
@@ -68,7 +68,7 @@
wanted_amount = new_amount
to_chat(user, span_notice(" The [src] will now fill for [wanted_amount]u."))
-/obj/machinery/plumbing/bottler/process()
+/obj/machinery/plumbing/bottler/process(delta_time)
if(machine_stat & NOPOWER)
return
// Sanity check the result locations and stop processing if they don't exist
@@ -78,6 +78,7 @@
///see if machine has enough to fill, is anchored down and has any inputspot objects to pick from
if(reagents.total_volume >= wanted_amount && anchored && length(inputspot.contents))
+ use_power(active_power_usage * delta_time)
var/obj/AM = pick(inputspot.contents)///pick a reagent_container that could be used
if((istype(AM, /obj/item/reagent_containers) && !istype(AM, /obj/item/reagent_containers/hypospray/medipen)) || istype(AM, /obj/item/ammo_casing/shotgun/dart))
var/obj/item/reagent_containers/B = AM
diff --git a/code/modules/plumbing/plumbers/destroyer.dm b/code/modules/plumbing/plumbers/destroyer.dm
index cce5d122f71..e6aecd95bca 100644
--- a/code/modules/plumbing/plumbers/destroyer.dm
+++ b/code/modules/plumbing/plumbers/destroyer.dm
@@ -3,6 +3,7 @@
desc = "Breaks down chemicals and annihilates them."
icon_state = "disposal"
pass_flags_self = PASSMACHINE | LETPASSTHROW // Small
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
///we remove 5 reagents per second
var/disposal_rate = 5
@@ -17,6 +18,7 @@
if(icon_state != initial(icon_state) + "_working") //threw it here instead of update icon since it only has two states
icon_state = initial(icon_state) + "_working"
reagents.remove_any(disposal_rate * delta_time)
+ use_power(active_power_usage * delta_time)
else
if(icon_state != initial(icon_state))
icon_state = initial(icon_state)
diff --git a/code/modules/plumbing/plumbers/fermenter.dm b/code/modules/plumbing/plumbers/fermenter.dm
index 73f2d330495..dd8b32e02b5 100644
--- a/code/modules/plumbing/plumbers/fermenter.dm
+++ b/code/modules/plumbing/plumbers/fermenter.dm
@@ -7,7 +7,7 @@
reagent_flags = TRANSPARENT | DRAINABLE
buffer = 400
-
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
///input dir
var/eat_dir = SOUTH
@@ -47,4 +47,5 @@
if(G.distill_reagent)
var/amount = G.seed.potency * 0.25
reagents.add_reagent(G.distill_reagent, amount)
+ use_power(active_power_usage * amount)
qdel(G)
diff --git a/code/modules/plumbing/plumbers/grinder_chemical.dm b/code/modules/plumbing/plumbers/grinder_chemical.dm
index b8a2f6d0676..eb7e7f53c3c 100644
--- a/code/modules/plumbing/plumbers/grinder_chemical.dm
+++ b/code/modules/plumbing/plumbers/grinder_chemical.dm
@@ -7,7 +7,7 @@
reagent_flags = TRANSPARENT | DRAINABLE
buffer = 400
-
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
var/eat_dir = SOUTH
/obj/machinery/plumbing/grinder_chemical/Initialize(mapload, bolt, layer)
@@ -42,6 +42,7 @@
return
var/obj/item/I = AM
if(I.juice_results || I.grind_results)
+ use_power(active_power_usage)
if(I.juice_results)
I.on_juice()
reagents.add_reagent_list(I.juice_results)
diff --git a/code/modules/plumbing/plumbers/pill_press.dm b/code/modules/plumbing/plumbers/pill_press.dm
index dae3f216c70..e21ee2f18c1 100644
--- a/code/modules/plumbing/plumbers/pill_press.dm
+++ b/code/modules/plumbing/plumbers/pill_press.dm
@@ -4,7 +4,7 @@
desc = "A press that makes pills, patches and bottles."
icon_state = "pill_press"
buffer = 60 //SKYRAT EDIT HYPOVIALS. This is needed so it can completely fill the vials up.
-
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
///maximum size of a pill
var/max_pill_volume = 50
///maximum size of a patch
@@ -62,7 +62,7 @@
patch_style["class_name"] = patches_assets.icon_class_name(raw_patch_style)
patch_styles += list(patch_style)
-/obj/machinery/plumbing/pill_press/process()
+/obj/machinery/plumbing/pill_press/process(delta_time)
if(machine_stat & NOPOWER)
return
if(reagents.total_volume >= current_volume)
@@ -108,6 +108,7 @@
stored_products -= AM
AM.forceMove(drop_location())
+ use_power(active_power_usage * delta_time)
/obj/machinery/plumbing/pill_press/ui_assets(mob/user)
return list(
diff --git a/code/modules/plumbing/plumbers/pumps.dm b/code/modules/plumbing/plumbers/pumps.dm
index f69fd835c9a..c10cacbc7ec 100644
--- a/code/modules/plumbing/plumbers/pumps.dm
+++ b/code/modules/plumbing/plumbers/pumps.dm
@@ -7,8 +7,7 @@
base_icon_state = "pump"
anchored = FALSE
density = TRUE
- idle_power_usage = 10
- active_power_usage = 1000
+ use_power = NO_POWER_USE
///units we pump per second
var/pump_power = 1
diff --git a/code/modules/plumbing/plumbers/reaction_chamber.dm b/code/modules/plumbing/plumbers/reaction_chamber.dm
index 3268a6561cb..eddf6bd3e3c 100644
--- a/code/modules/plumbing/plumbers/reaction_chamber.dm
+++ b/code/modules/plumbing/plumbers/reaction_chamber.dm
@@ -5,7 +5,7 @@
icon_state = "reaction_chamber"
buffer = 200
reagent_flags = TRANSPARENT | NO_REACT
-
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
/**
* list of set reagents that the reaction_chamber allows in, and must all be present before mixing is enabled.
* example: list(/datum/reagent/water = 20, /datum/reagent/fuel/oil = 50)
@@ -73,6 +73,8 @@
reagents.adjust_thermal_energy((target_temperature - reagents.chem_temp) * heater_coefficient * delta_time * SPECIFIC_HEAT_DEFAULT * reagents.total_volume) //keep constant with chem heater
reagents.handle_reactions()
+ use_power(active_power_usage * delta_time)
+
/obj/machinery/plumbing/reaction_chamber/power_change()
. = ..()
if(use_power != NO_POWER_USE)
diff --git a/code/modules/plumbing/plumbers/splitters.dm b/code/modules/plumbing/plumbers/splitters.dm
index ceedf7d955b..e18a3a49b05 100644
--- a/code/modules/plumbing/plumbers/splitters.dm
+++ b/code/modules/plumbing/plumbers/splitters.dm
@@ -3,7 +3,7 @@
name = "Chemical Splitter"
desc = "A chemical splitter for smart chemical factorization. Waits till a set of conditions is met and then stops all input and splits the buffer evenly or other in two ducts."
icon_state = "splitter"
-
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
buffer = 100
density = FALSE
diff --git a/code/modules/plumbing/plumbers/synthesizer.dm b/code/modules/plumbing/plumbers/synthesizer.dm
index 6f49377a0e0..7e2728f3f64 100644
--- a/code/modules/plumbing/plumbers/synthesizer.dm
+++ b/code/modules/plumbing/plumbers/synthesizer.dm
@@ -5,7 +5,7 @@
icon_state = "synthesizer"
icon = 'icons/obj/plumbing/plumbers.dmi'
-
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2
///Amount we produce for every process. Ideally keep under 5 since thats currently the standard duct capacity
var/amount = 1
///I track them here because I have no idea how I'd make tgui loop like that
@@ -51,6 +51,7 @@
if(reagents.total_volume >= amount*delta_time*0.5) //otherwise we get leftovers, and we need this to be precise
return
reagents.add_reagent(reagent_id, amount*delta_time*0.5)
+ use_power(active_power_usage * amount * delta_time * 0.5)
/obj/machinery/plumbing/synthesizer/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
diff --git a/code/modules/plumbing/plumbers/teleporter.dm b/code/modules/plumbing/plumbers/teleporter.dm
index 0228640fb6a..5956bf95436 100644
--- a/code/modules/plumbing/plumbers/teleporter.dm
+++ b/code/modules/plumbing/plumbers/teleporter.dm
@@ -77,7 +77,7 @@
to_chat(user, span_notice("You store linkage information in [I]'s buffer."))
return TRUE
-/obj/machinery/plumbing/receiver/process()
+/obj/machinery/plumbing/receiver/process(delta_time)
if(machine_stat & NOPOWER || panel_open)
return
@@ -96,6 +96,8 @@
next_index++
+ use_power(active_power_usage * delta_time)
+
///Notify all senders to forget us
/obj/machinery/plumbing/receiver/proc/lose_senders()
for(var/A in senders)
diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm
index 3819cee732a..2aea8f5309f 100644
--- a/code/modules/power/floodlight.dm
+++ b/code/modules/power/floodlight.dm
@@ -61,8 +61,8 @@
density = TRUE
max_integrity = 100
integrity_failure = 0.8
- idle_power_usage = 100
- active_power_usage = 1000
+ idle_power_usage = 0
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION
anchored = FALSE
light_power = 1.75
var/list/light_setting_list = list(0, 5, 10, 15)
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index 132678e02c0..b0ae3328e32 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -133,7 +133,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
/obj/machinery/gravity_generator/main
icon_state = "on_8"
idle_power_usage = 0
- active_power_usage = 3000
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 3
power_channel = AREA_USAGE_ENVIRON
sprite_number = 8
use_power = IDLE_POWER_USE
diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm
index 895b93810a7..1f5ea41f50a 100644
--- a/code/modules/power/lighting/light.dm
+++ b/code/modules/power/lighting/light.dm
@@ -8,8 +8,8 @@
plane = GAME_PLANE_UPPER
max_integrity = 100
use_power = ACTIVE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 20
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.02
power_channel = AREA_USAGE_LIGHT //Lights are calc'd via area so they dont need to be in the machine list
///What overlay the light should use
var/overlay_icon = 'icons/obj/lighting_overlay.dmi'
@@ -200,7 +200,6 @@
set_light(l_range = 0)
update_appearance()
- active_power_usage = (brightness * 10)
if(on != on_gs)
on_gs = on
if(on)
diff --git a/code/modules/power/monitor.dm b/code/modules/power/monitor.dm
index 5802c49a167..091151fe479 100644
--- a/code/modules/power/monitor.dm
+++ b/code/modules/power/monitor.dm
@@ -7,8 +7,6 @@
icon_keyboard = "power_key"
light_color = LIGHT_COLOR_YELLOW
use_power = ACTIVE_POWER_USE
- idle_power_usage = 20
- active_power_usage = 100
circuit = /obj/item/circuitboard/computer/powermonitor
tgui_id = "PowerMonitor"
@@ -83,6 +81,7 @@
demand.Cut(1, 2)
/obj/machinery/computer/monitor/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "PowerMonitor", name)
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 112d7922956..2f0315e679d 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -102,6 +102,7 @@
return ..()
/obj/machinery/power/port_gen/pacman/RefreshParts()
+ . = ..()
var/temp_rating = 0
var/consumption_coeff = 0
for(var/obj/item/stock_parts/SP in component_parts)
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index 179b02968d4..f2772304f23 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -26,6 +26,7 @@
add_avail(power_gen)
/obj/machinery/power/rtg/RefreshParts()
+ . = ..()
var/part_level = 0
for(var/obj/item/stock_parts/SP in component_parts)
part_level += SP.rating
@@ -103,4 +104,55 @@
circuit = null
/obj/machinery/power/rtg/debug/RefreshParts()
+ SHOULD_CALL_PARENT(FALSE)
return
+
+/obj/machinery/power/rtg/lavaland
+ name = "Lava powered RTG"
+ desc = "This device only works when exposed to the toxic fumes of Lavaland"
+ circuit = null
+ power_gen = 1500
+ anchored = TRUE
+ resistance_flags = LAVA_PROOF
+
+/obj/machinery/power/rtg/lavaland/Initialize(mapload)
+ . = ..()
+ var/turf/our_turf = get_turf(src)
+ if(!islava(our_turf))
+ power_gen = 0
+ if(!is_mining_level(z))
+ power_gen = 0
+
+/obj/machinery/power/rtg/lavaland/Moved(atom/OldLoc, Dir)
+ . = ..()
+ var/turf/our_turf = get_turf(src)
+ if(!islava(our_turf))
+ power_gen = 0
+ return
+ if(!is_mining_level(z))
+ power_gen = 0
+ return
+ power_gen = initial(power_gen)
+
+/obj/machinery/power/rtg/old_station
+ name = "Old RTG"
+ desc = "A very old RTG, it seems on the verge of being destroyed"
+ circuit = null
+ power_gen = 750
+ anchored = TRUE
+
+/obj/machinery/power/rtg/old_station/attackby(obj/item/I, mob/user, params)
+ if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-open", initial(icon_state), I))
+ to_chat(user,span_warning("You feel it crumbling under your hands!"))
+ return
+ else if(default_deconstruction_crowbar(I, user = user))
+ return
+ return ..()
+
+/obj/machinery/power/rtg/old_station/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct, mob/user)
+ to_chat(user,span_warning("It's starting to fall off!"))
+ if(!do_after(user, 3 SECONDS, src))
+ return TRUE
+ to_chat(user,span_notice("You feel like you made a mistake"))
+ new /obj/effect/decal/cleanable/ash/large(loc)
+ qdel(src)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 183e62d3711..e419a61eea7 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -11,8 +11,6 @@
circuit = /obj/item/circuitboard/machine/emitter
use_power = NO_POWER_USE
- idle_power_usage = 10
- active_power_usage = 300
/// The icon state used by the emitter when it's on.
var/icon_state_on = "emitter_+a"
@@ -84,6 +82,7 @@
welded = FALSE
/obj/machinery/power/emitter/RefreshParts()
+ . = ..()
var/max_fire_delay = 12 SECONDS
var/fire_shoot_delay = 12 SECONDS
var/min_fire_delay = 2.4 SECONDS
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 3f430b86769..dee9e1f7d38 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -61,6 +61,7 @@
update_appearance()
/obj/machinery/power/smes/RefreshParts()
+ SHOULD_CALL_PARENT(FALSE)
var/IO = 0
var/MC = 0
var/C
@@ -408,7 +409,8 @@
log_smes()
/obj/machinery/power/smes/engineering
- charge = 1.5e6 // Engineering starts with some charge for singulo
+ charge = 2e6 // Engineering starts with some charge for singulo //sorry little one, singulo as engine is gone
+ output_level = 90000
/obj/machinery/power/smes/magical
name = "magical power storage unit"
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index dc8c6821aea..22f7a352163 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -355,7 +355,7 @@
icon_state = "computer"
density = TRUE
use_power = IDLE_POWER_USE
- idle_power_usage = 250
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION
max_integrity = 200
integrity_failure = 0.5
var/icon_screen = "solar"
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 781f10d10a4..62d4efac206 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -39,6 +39,7 @@
wires = new /datum/wires/tesla_coil(src)
/obj/machinery/power/energy_accumulator/tesla_coil/RefreshParts()
+ . = ..()
var/power_multiplier = 0
zap_cooldown = 100
for(var/obj/item/stock_parts/capacitor/C in component_parts)
diff --git a/code/modules/power/turbine/turbine_computer.dm b/code/modules/power/turbine/turbine_computer.dm
index 9c5ba267667..15a76d3f051 100644
--- a/code/modules/power/turbine/turbine_computer.dm
+++ b/code/modules/power/turbine/turbine_computer.dm
@@ -44,6 +44,7 @@
turbine_core = WEAKREF(machine)
/obj/machinery/computer/turbine_computer/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "TurbineComputer", name)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index f8106c94940..6daf009f080 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -18,8 +18,6 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "dispenser"
base_icon_state = "dispenser"
- use_power = IDLE_POWER_USE
- idle_power_usage = 40
interaction_flags_machine = INTERACT_MACHINE_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE
resistance_flags = FIRE_PROOF | ACID_PROOF
circuit = /obj/item/circuitboard/machine/chem_dispenser
@@ -168,7 +166,7 @@
if (recharge_counter >= 8)
var/usedpower = cell.give(recharge_amount)
if(usedpower)
- use_power(250*recharge_amount)
+ use_power(active_power_usage + recharge_amount)
recharge_counter = 0
return
recharge_counter += delta_time
@@ -462,21 +460,22 @@
visible_message(span_danger("[src] malfunctions, spraying chemicals everywhere!"))
/obj/machinery/chem_dispenser/RefreshParts()
+ . = ..()
recharge_amount = initial(recharge_amount)
var/newpowereff = 0.0666666
+ var/parts_rating = 0
for(var/obj/item/stock_parts/cell/P in component_parts)
cell = P
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
newpowereff += 0.0166666666*M.rating
+ parts_rating += M.rating
for(var/obj/item/stock_parts/capacitor/C in component_parts)
recharge_amount *= C.rating
+ parts_rating += C.rating
for(var/obj/item/stock_parts/manipulator/M in component_parts)
if (M.rating > 1)
dispensable_reagents |= upgrade_reagents
- if (M.rating > 2)
- dispensable_reagents |= upgrade_reagents2
- if (M.rating > 3)
- dispensable_reagents |= upgrade_reagents3
+ parts_rating += M.rating
powerefficiency = round(newpowereff, 0.01)
/obj/machinery/chem_dispenser/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
@@ -719,6 +718,7 @@
circuit = /obj/item/circuitboard/machine/chem_dispenser/abductor
working_state = null
nopower_state = null
+ use_power = NO_POWER_USE
dispensable_reagents = list(
/datum/reagent/aluminium,
/datum/reagent/bromine,
diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm
index 78be5eab528..556cf9e55c1 100644
--- a/code/modules/reagents/chemistry/machinery/chem_heater.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm
@@ -15,8 +15,7 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0b"
base_icon_state = "mixer"
- use_power = IDLE_POWER_USE
- idle_power_usage = 40
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.4
resistance_flags = FIRE_PROOF | ACID_PROOF
circuit = /obj/item/circuitboard/machine/chem_heater
@@ -90,6 +89,7 @@
return TRUE
/obj/machinery/chem_heater/RefreshParts()
+ . = ..()
heater_coefficient = 0.1
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
heater_coefficient *= M.rating
@@ -154,6 +154,8 @@
beaker.reagents.adjust_thermal_energy((target_temperature - beaker.reagents.chem_temp) * heater_coefficient * delta_time * SPECIFIC_HEAT_DEFAULT * beaker.reagents.total_volume)
beaker.reagents.handle_reactions()
+ use_power(active_power_usage * delta_time)
+
/obj/machinery/chem_heater/attackby(obj/item/I, mob/user, params)
if(default_deconstruction_screwdriver(user, "mixer0b", "mixer0b", I))
return
diff --git a/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm b/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm
index f1d1368970d..994e79550d6 100644
--- a/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm
@@ -13,8 +13,7 @@ This will not clean any inverted reagents. Inverted reagents will still be corre
icon = 'icons/obj/chemical.dmi'
icon_state = "HPLC"
base_icon_state = "HPLC"
- use_power = IDLE_POWER_USE
- idle_power_usage = 20
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.2
resistance_flags = FIRE_PROOF | ACID_PROOF
circuit = /obj/item/circuitboard/machine/chem_mass_spec
///If we're processing reagents or not
@@ -48,6 +47,7 @@ This will not clean any inverted reagents. Inverted reagents will still be corre
return ..()
/obj/machinery/chem_mass_spec/RefreshParts()
+ . = ..()
cms_coefficient = 1
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
cms_coefficient /= laser.rating
@@ -307,6 +307,7 @@ This will not clean any inverted reagents. Inverted reagents will still be corre
return FALSE
if(!processing_reagents)
return TRUE
+ use_power(active_power_usage)
if(progress_time >= delay_time)
processing_reagents = FALSE
progress_time = 0
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 8adc025e574..3aa244e19b8 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -12,8 +12,7 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0"
base_icon_state = "mixer"
- use_power = IDLE_POWER_USE
- idle_power_usage = 20
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.2
resistance_flags = FIRE_PROOF | ACID_PROOF
circuit = /obj/item/circuitboard/machine/chem_master
@@ -73,6 +72,7 @@
return ..()
/obj/machinery/chem_master/RefreshParts()
+ . = ..()
reagents.maximum_volume = 0
for(var/obj/item/reagent_containers/glass/beaker/B in component_parts)
reagents.maximum_volume += B.reagents.maximum_volume
@@ -284,6 +284,7 @@
name, ""))
if (amount == null || amount <= 0)
return FALSE
+ use_power(active_power_usage)
if (to_container == "beaker" && !mode)
reagents.remove_reagent(reagent, amount)
return TRUE
@@ -334,7 +335,7 @@
var/vol_each_text = params["volume"]
var/vol_each_max = reagents.total_volume / amount
var/list/style
-
+ use_power(active_power_usage)
if (item_type == "pill")
vol_each_max = min(50, vol_each_max)
else if (item_type == "patch")
diff --git a/code/modules/reagents/chemistry/machinery/chem_recipe_debug.dm b/code/modules/reagents/chemistry/machinery/chem_recipe_debug.dm
index 476cf054ffc..76e4b0ce7d5 100644
--- a/code/modules/reagents/chemistry/machinery/chem_recipe_debug.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_recipe_debug.dm
@@ -7,8 +7,7 @@
density = TRUE
icon = 'icons/obj/chemical.dmi'
icon_state = "HPLC_debug"
- use_power = IDLE_POWER_USE
- idle_power_usage = 40
+ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.4
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
///List of every reaction in the game kept locally for easy access
var/list/cached_reactions = list()
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index 618c671f24b..c04b7907b64 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -9,8 +9,6 @@
icon_state = "pandemic0"
icon_keyboard = null
base_icon_state = "pandemic"
- use_power = IDLE_POWER_USE
- idle_power_usage = 20
resistance_flags = ACID_PROOF
circuit = /obj/item/circuitboard/computer/pandemic
@@ -154,6 +152,7 @@
update_appearance()
/obj/machinery/computer/pandemic/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Pandemic", name)
@@ -220,6 +219,7 @@
if(!istype(A) || !A.mutable)
to_chat(usr, span_warning("ERROR: Cannot replicate virus strain."))
return
+ use_power(active_power_usage)
A = A.Copy()
var/list/data = list("viruses" = list(A))
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
@@ -235,6 +235,7 @@
if("create_vaccine_bottle")
if (wait)
return
+ use_power(active_power_usage)
var/id = params["index"]
var/datum/disease/D = SSdisease.archive_diseases[id]
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index ba04fddc261..db373cae632 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -7,9 +7,6 @@
icon_state = "juicer1"
base_icon_state = "juicer"
layer = BELOW_OBJ_LAYER
- use_power = IDLE_POWER_USE
- idle_power_usage = 5
- active_power_usage = 100
circuit = /obj/item/circuitboard/machine/reagentgrinder
pass_flags = PASSTABLE
resistance_flags = ACID_PROOF
@@ -68,6 +65,7 @@
SSexplosions.low_mov_atom += beaker
/obj/machinery/reagentgrinder/RefreshParts()
+ . = ..()
speed = 1
for(var/obj/item/stock_parts/manipulator/M in component_parts)
speed = M.rating
@@ -276,6 +274,7 @@
playsound(src, 'sound/machines/blender.ogg', 50, TRUE)
else
playsound(src, 'sound/machines/juicer.ogg', 20, TRUE)
+ use_power(active_power_usage * time)
addtimer(CALLBACK(src, .proc/stop_operating), time / speed)
/obj/machinery/reagentgrinder/proc/stop_operating()
diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
index 9b97dd74d58..e7a62c7c2df 100644
--- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm
+++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
@@ -49,6 +49,7 @@
return ..()
/obj/machinery/smoke_machine/RefreshParts()
+ . = ..()
var/new_volume = REAGENTS_BASE_VOLUME
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
new_volume += REAGENTS_BASE_VOLUME * B.rating
@@ -66,7 +67,6 @@
max_range += M.rating
max_range = max(3, max_range)
-
/obj/machinery/smoke_machine/on_set_is_operational(old_value)
if(old_value) //Turned off
end_processing()
@@ -87,6 +87,7 @@
var/datum/effect_system/smoke_spread/chem/smoke_machine/smoke = new()
smoke.set_up(reagents, setting*3, efficiency, T)
smoke.start()
+ use_power(active_power_usage)
/obj/machinery/smoke_machine/wrench_act(mob/living/user, obj/item/tool)
. = ..()
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index fe033fe8c8a..3d0a446dde1 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -424,13 +424,13 @@
if(machine_stat & NOPOWER) // won't charge if no power
return
- use_power(100) // base power usage
+ use_power(idle_power_usage) // base power usage
if(!pressure_charging) // if off or ready, no need to charge
return
// otherwise charge
- use_power(500) // charging power usage
+ use_power(idle_power_usage) // charging power usage
var/atom/L = loc //recharging from loc turf
diff --git a/code/modules/research/bepis.dm b/code/modules/research/bepis.dm
index b6a630363b6..7a870343fa2 100644
--- a/code/modules/research/bepis.dm
+++ b/code/modules/research/bepis.dm
@@ -18,8 +18,6 @@
density = TRUE
layer = ABOVE_MOB_LAYER
plane = GAME_PLANE_UPPER
- use_power = IDLE_POWER_USE
- active_power_usage = 1500
circuit = /obj/item/circuitboard/machine/bepis
///How much cash the UI and machine are depositing at a time.
@@ -86,6 +84,7 @@
return default_deconstruction_screwdriver(user, "chamber_open", "chamber", tool)
/obj/machinery/rnd/bepis/RefreshParts()
+ . = ..()
var/C = 0
var/M = 0
var/L = 0
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 47d5ada291e..6966a79ff14 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -14,12 +14,12 @@ Note: Must be placed within 3 tiles of the R&D Console
var/decon_mod = 0
/obj/machinery/rnd/destructive_analyzer/RefreshParts()
+ . = ..()
var/T = 0
for(var/obj/item/stock_parts/S in component_parts)
T += S.rating
decon_mod = T
-
/obj/machinery/rnd/destructive_analyzer/proc/ConvertReqString2List(list/source_list)
var/list/temp_list = params2list(source_list)
for(var/O in temp_list)
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 5329f80eee6..b63c830ef1e 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -88,6 +88,7 @@
/obj/item/transfer_valve))
/obj/machinery/rnd/experimentor/RefreshParts()
+ . = ..()
for(var/obj/item/stock_parts/manipulator/M in component_parts)
if(resetTime > 0 && (resetTime - M.rating) >= 1)
resetTime -= M.rating
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index 64399375d98..0300c1448f1 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -45,6 +45,7 @@
cached_designs |= d
/obj/machinery/rnd/production/RefreshParts()
+ . = ..()
calculate_efficiency()
/obj/machinery/rnd/production/ui_interact(mob/user)
@@ -152,11 +153,11 @@
if(materials.on_hold())
say("Mineral access is on hold, please contact the quartermaster.")
return FALSE
- var/power = 1000
+ var/power = active_power_usage
amount = clamp(amount, 1, 50)
for(var/M in D.materials)
power += round(D.materials[M] * amount / 35)
- power = min(3000, power)
+ power = min(active_power_usage, power)
use_power(power)
var/coeff = efficient_with(D.build_path) ? efficiency_coeff : 1
var/list/efficient_mats = list()
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 7ef84c60a6f..1c6d97db5ab 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -137,6 +137,7 @@ Nothing else in the console has ID requirements.
return ..()
/obj/machinery/computer/rdconsole/ui_interact(mob/user, datum/tgui/ui = null)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if (!ui)
ui = new(user, src, "Techweb", name)
diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm
index 88c3b7ed77b..7e535f10261 100644
--- a/code/modules/research/rdmachines.dm
+++ b/code/modules/research/rdmachines.dm
@@ -119,6 +119,6 @@
else
var/obj/item/stack/S = item_inserted
stack_name = S.name
- use_power(min(1000, (amount_inserted / 100)))
+ use_power(min(active_power_usage, (amount_inserted / 100)))
add_overlay("protolathe_[stack_name]")
addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10)
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 78904de857c..28bf1bf3cb1 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -40,6 +40,7 @@
return ..()
/obj/machinery/rnd/server/RefreshParts()
+ . = ..()
var/tot_rating = 0
for(var/obj/item/stock_parts/SP in src)
tot_rating += SP.rating
@@ -60,8 +61,10 @@
/obj/machinery/rnd/server/proc/refresh_working()
if(machine_stat & EMPED || research_disabled || machine_stat & NOPOWER)
working = FALSE
+ update_use_power(NO_POWER_USE)
else
working = TRUE
+ update_use_power(ACTIVE_POWER_USE)
update_appearance()
/obj/machinery/rnd/server/emp_act()
diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm
index e313216546b..39ff2989899 100644
--- a/code/modules/research/stock_parts.dm
+++ b/code/modules/research/stock_parts.dm
@@ -222,6 +222,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
var/rating = 1
///Used when a base part has a different name to higher tiers of part. For example, machine frames want any manipulator and not just a micro-manipulator.
var/base_name
+ var/energy_rating = 1
/obj/item/stock_parts/Initialize(mapload)
. = ..()
@@ -271,6 +272,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "An advanced capacitor used in the construction of a variety of devices."
icon_state = "adv_capacitor"
rating = 2
+ energy_rating = 3
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
/obj/item/stock_parts/scanning_module/adv
@@ -278,6 +280,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "adv_scan_module"
rating = 2
+ energy_rating = 3
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
/obj/item/stock_parts/manipulator/nano
@@ -285,6 +288,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "nano_mani"
rating = 2
+ energy_rating = 3
custom_materials = list(/datum/material/iron=30)
/obj/item/stock_parts/micro_laser/high
@@ -292,6 +296,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A tiny laser used in certain devices."
icon_state = "high_micro_laser"
rating = 2
+ energy_rating = 3
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
/obj/item/stock_parts/matter_bin/adv
@@ -299,6 +304,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A container designed to hold compressed matter awaiting reconstruction."
icon_state = "advanced_matter_bin"
rating = 2
+ energy_rating = 3
custom_materials = list(/datum/material/iron=80)
//Rating 3
@@ -308,6 +314,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
icon_state = "super_capacitor"
rating = 3
+ energy_rating = 5
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
/obj/item/stock_parts/scanning_module/phasic
@@ -315,6 +322,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
icon_state = "super_scan_module"
rating = 3
+ energy_rating = 5
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
/obj/item/stock_parts/manipulator/pico
@@ -322,6 +330,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "pico_mani"
rating = 3
+ energy_rating = 5
custom_materials = list(/datum/material/iron=30)
/obj/item/stock_parts/micro_laser/ultra
@@ -329,6 +338,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "ultra_high_micro_laser"
desc = "A tiny laser used in certain devices."
rating = 3
+ energy_rating = 5
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
/obj/item/stock_parts/matter_bin/super
@@ -336,6 +346,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A container designed to hold compressed matter awaiting reconstruction."
icon_state = "super_matter_bin"
rating = 3
+ energy_rating = 5
custom_materials = list(/datum/material/iron=80)
//Rating 4
@@ -345,6 +356,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A capacity capacitor used in the construction of a variety of devices."
icon_state = "quadratic_capacitor"
rating = 4
+ energy_rating = 10
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
/obj/item/stock_parts/scanning_module/triphasic
@@ -352,6 +364,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices."
icon_state = "triphasic_scan_module"
rating = 4
+ energy_rating = 10
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
/obj/item/stock_parts/manipulator/femto
@@ -359,6 +372,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "femto_mani"
rating = 4
+ energy_rating = 10
custom_materials = list(/datum/material/iron=30)
/obj/item/stock_parts/micro_laser/quadultra
@@ -366,6 +380,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "quadultra_micro_laser"
desc = "A tiny laser used in certain devices."
rating = 4
+ energy_rating = 10
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
/obj/item/stock_parts/matter_bin/bluespace
@@ -373,6 +388,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A container designed to hold compressed matter awaiting reconstruction."
icon_state = "bluespace_matter_bin"
rating = 4
+ energy_rating = 10
custom_materials = list(/datum/material/iron=80)
// Subspace stock parts
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index b1faed4eaea..5be9ab1a82a 100644
--- a/code/modules/security_levels/keycard_authentication.dm
+++ b/code/modules/security_levels/keycard_authentication.dm
@@ -9,9 +9,6 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
desc = "This device is used to trigger station functions, which require more than one ID card to authenticate."
icon = 'icons/obj/monitors.dmi'
icon_state = "auth_off"
- use_power = IDLE_POWER_USE
- idle_power_usage = 2
- active_power_usage = 6
power_channel = AREA_USAGE_ENVIRON
req_access = list(ACCESS_KEYCARD_AUTH)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm
index c26523f3853..cffe675b72a 100644
--- a/code/modules/shuttle/computer.dm
+++ b/code/modules/shuttle/computer.dm
@@ -26,6 +26,7 @@
connect_to_shuttle(SSshuttle.get_containing_shuttle(src))
/obj/machinery/computer/shuttle/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "ShuttleConsole", name)
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index c3935638fa3..e222032199a 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -47,6 +47,7 @@
return GLOB.human_adjacent_state
/obj/machinery/computer/emergency_shuttle/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "EmergencyShuttleConsole", name)
diff --git a/code/modules/shuttle/spaceship_navigation_beacon.dm b/code/modules/shuttle/spaceship_navigation_beacon.dm
index f58bc204fb0..06c065f8704 100644
--- a/code/modules/shuttle/spaceship_navigation_beacon.dm
+++ b/code/modules/shuttle/spaceship_navigation_beacon.dm
@@ -10,8 +10,6 @@
icon = 'icons/obj/abductor.dmi'
icon_state = "core"
base_icon_state = "core"
- use_power = IDLE_POWER_USE
- idle_power_usage = 0
density = TRUE
circuit = /obj/item/circuitboard/machine/spaceship_navigation_beacon
diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm
index 8967528468c..f697f317cd4 100644
--- a/code/modules/station_goals/bsa.dm
+++ b/code/modules/station_goals/bsa.dm
@@ -259,6 +259,7 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE)
return GLOB.physical_state
/obj/machinery/computer/bsa_control/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "BluespaceArtillery", name)
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm
index 61619531c3a..8ca219027f7 100644
--- a/code/modules/station_goals/dna_vault.dm
+++ b/code/modules/station_goals/dna_vault.dm
@@ -66,7 +66,7 @@
icon_state = "vault"
density = TRUE
anchored = TRUE
- idle_power_usage = 5000
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 5
pixel_x = -32
pixel_y = -64
light_range = 3
@@ -220,3 +220,4 @@
to_chat(H, span_notice("Your arms move as fast as lightning."))
H.next_move_modifier = 0.5
power_lottery[H] = list()
+ use_power(active_power_usage)
diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm
index 8e12556225a..6ce8ed814d9 100644
--- a/code/modules/station_goals/shield.dm
+++ b/code/modules/station_goals/shield.dm
@@ -43,6 +43,7 @@
var/notice
/obj/machinery/computer/sat_control/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "SatelliteControl", name)
diff --git a/code/modules/vehicles/mecha/mech_bay.dm b/code/modules/vehicles/mecha/mech_bay.dm
index 2ee53176128..fe735d9510f 100644
--- a/code/modules/vehicles/mecha/mech_bay.dm
+++ b/code/modules/vehicles/mecha/mech_bay.dm
@@ -41,6 +41,7 @@
recharging_turf = get_step(loc, dir)
/obj/machinery/mech_bay_recharge_port/RefreshParts()
+ . = ..()
var/total_rating = 0
for(var/obj/item/stock_parts/capacitor/cap in component_parts)
total_rating += cap.rating
@@ -65,7 +66,7 @@
if(recharging_mech.cell.charge < recharging_mech.cell.maxcharge)
var/delta = min(recharge_power * delta_time, recharging_mech.cell.maxcharge - recharging_mech.cell.charge)
recharging_mech.give_power(delta)
- use_power(delta*150)
+ use_power(delta + active_power_usage)
else
recharge_console.update_appearance()
if(recharging_mech.loc != recharging_turf)
@@ -105,6 +106,7 @@
return ..()
/obj/machinery/computer/mech_bay_power_console/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "MechBayPowerConsole", name)
diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm
index 7585b3124b5..5aaac9b1d54 100644
--- a/code/modules/vehicles/mecha/mech_fabricator.dm
+++ b/code/modules/vehicles/mecha/mech_fabricator.dm
@@ -4,9 +4,6 @@
name = "exosuit fabricator"
desc = "Nothing is being built."
density = TRUE
- use_power = IDLE_POWER_USE
- idle_power_usage = 20
- active_power_usage = 5000
req_access = list(ACCESS_ROBOTICS)
circuit = /obj/item/circuitboard/machine/mechfab
processing_flags = START_PROCESSING_MANUALLY
@@ -79,6 +76,7 @@
return ..()
/obj/machinery/mecha_part_fabricator/RefreshParts()
+ . = ..()
var/T = 0
//maximum stocking amount (default 300000, 600000 at T4)
diff --git a/code/modules/vehicles/mecha/mecha_control_console.dm b/code/modules/vehicles/mecha/mecha_control_console.dm
index b52cd69a879..eef2a1de549 100644
--- a/code/modules/vehicles/mecha/mecha_control_console.dm
+++ b/code/modules/vehicles/mecha/mecha_control_console.dm
@@ -7,6 +7,7 @@
circuit = /obj/item/circuitboard/computer/mecha_control
/obj/machinery/computer/mecha/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "ExosuitControlConsole", name)
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 5375454e026..1f031034d87 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -226,6 +226,7 @@
return !shut_up
/obj/machinery/vending/RefreshParts() //Better would be to make constructable child
+ SHOULD_CALL_PARENT(FALSE)
if(!component_parts)
return
@@ -970,7 +971,7 @@ GLOBAL_LIST_EMPTY(vending_products)
purchase_message_cooldown = world.time + 5 SECONDS
//This is not the best practice, but it's safe enough here since the chances of two people using a machine with the same ref in 5 seconds is fuck low
last_shopper = REF(usr)
- use_power(5)
+ use_power(active_power_usage)
if(icon_vend) //Show the vending animation if needed
flick(icon_vend,src)
playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3)
@@ -1282,7 +1283,7 @@ GLOBAL_LIST_EMPTY(vending_products)
last_shopper = REF(usr)
/// Remove the item
loaded_items--
- use_power(5)
+ use_power(active_power_usage)
vending_machine_input[choice] = max(vending_machine_input[choice] - 1, 0)
if(user.CanReach(src) && user.put_in_hands(dispensed_item))
to_chat(user, span_notice("You take [dispensed_item.name] out of the slot."))
diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm
index 2990ebe568e..1310708108d 100644
--- a/code/modules/wiremod/shell/brain_computer_interface.dm
+++ b/code/modules/wiremod/shell/brain_computer_interface.dm
@@ -273,12 +273,9 @@
icon_state = "bci_implanter"
base_icon_state = "bci_implanter"
layer = ABOVE_WINDOW_LAYER
- use_power = IDLE_POWER_USE
anchored = TRUE
density = TRUE
obj_flags = NO_BUILD // Becomes undense when the door is open
- idle_power_usage = 50
- active_power_usage = 300
var/busy = FALSE
var/busy_icon_state
@@ -407,6 +404,8 @@
if (!occupant || busy)
return
+ update_use_power(ACTIVE_POWER_USE)
+
var/locked_state = locked
locked = TRUE
@@ -416,6 +415,7 @@
addtimer(CALLBACK(src, .proc/complete_process, locked_state), 3 SECONDS)
/obj/machinery/bci_implanter/proc/complete_process(locked_state)
+ update_use_power(IDLE_POWER_USE)
locked = locked_state
set_busy(FALSE)
diff --git a/modular_skyrat/modules/aesthetics/computer/code/computer.dm b/modular_skyrat/modules/aesthetics/computer/code/computer.dm
index 37a029c9f22..5f94ee145fd 100644
--- a/modular_skyrat/modules/aesthetics/computer/code/computer.dm
+++ b/modular_skyrat/modules/aesthetics/computer/code/computer.dm
@@ -10,9 +10,3 @@
next_clicksound = world.time + 5
playsound(src, get_sfx_skyrat(clicksound), clickvol)
-/obj/machinery/computer/ui_interact(mob/user, datum/tgui/ui)
- if(clicksound && world.time > next_clicksound && isliving(user))
- next_clicksound = world.time + 5
- playsound(src, get_sfx_skyrat(clicksound), clickvol)
- . = ..()
-
diff --git a/modular_skyrat/modules/ammo_workbench/code/ammo_workbench.dm b/modular_skyrat/modules/ammo_workbench/code/ammo_workbench.dm
index 901fdde3660..80404b04a93 100644
--- a/modular_skyrat/modules/ammo_workbench/code/ammo_workbench.dm
+++ b/modular_skyrat/modules/ammo_workbench/code/ammo_workbench.dm
@@ -342,6 +342,7 @@
//MISC MACHINE PROCS
/obj/machinery/ammo_workbench/RefreshParts()
+ . = ..()
var/time_efficiency = 20
for(var/obj/item/stock_parts/micro_laser/new_laser in component_parts)
time_efficiency -= new_laser.rating * 2
diff --git a/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm b/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm
index 9604b709783..3ba50c019cc 100644
--- a/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm
+++ b/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm
@@ -38,6 +38,7 @@
return GLOB.physical_state
/obj/machinery/computer/bsa_control/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "BluespaceArtillery", name)
diff --git a/modular_skyrat/modules/central_command_module/code/computers/command_report_computer.dm b/modular_skyrat/modules/central_command_module/code/computers/command_report_computer.dm
index 68240264382..c373170a030 100644
--- a/modular_skyrat/modules/central_command_module/code/computers/command_report_computer.dm
+++ b/modular_skyrat/modules/central_command_module/code/computers/command_report_computer.dm
@@ -25,6 +25,7 @@
COOLDOWN_DECLARE(static/announcement_cooldown)
/obj/machinery/computer/centcom_announcement/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "CommandReportConsole")
diff --git a/modular_skyrat/modules/central_command_module/code/computers/station_goal_computer.dm b/modular_skyrat/modules/central_command_module/code/computers/station_goal_computer.dm
index b4d397cd5e4..83703817283 100644
--- a/modular_skyrat/modules/central_command_module/code/computers/station_goal_computer.dm
+++ b/modular_skyrat/modules/central_command_module/code/computers/station_goal_computer.dm
@@ -21,6 +21,7 @@
station_goal_cache = subtypesof(/datum/station_goal)
/obj/machinery/computer/station_goal/ui_interact(mob/user)
+ . = ..()
var/list/dat = list("STATION GOAL SELECTION - OFFICIAL USE ONLY")
if(!goal_assigned)
dat += "Please select ONE goal to assign to [station_name()]"
diff --git a/modular_skyrat/modules/cryosleep/code/cryopod.dm b/modular_skyrat/modules/cryosleep/code/cryopod.dm
index 618b7cce724..9325066df4d 100644
--- a/modular_skyrat/modules/cryosleep/code/cryopod.dm
+++ b/modular_skyrat/modules/cryosleep/code/cryopod.dm
@@ -48,6 +48,7 @@ GLOBAL_LIST_EMPTY(cryopod_computers)
return ..()
/obj/machinery/computer/cryopod/ui_interact(mob/user, datum/tgui/ui)
+ . = ..()
if(machine_stat & (NOPOWER|BROKEN))
return
diff --git a/modular_skyrat/modules/multicellcharger/code/multi_cell_charger.dm b/modular_skyrat/modules/multicellcharger/code/multi_cell_charger.dm
index 12561e684cc..c33f8aece85 100644
--- a/modular_skyrat/modules/multicellcharger/code/multi_cell_charger.dm
+++ b/modular_skyrat/modules/multicellcharger/code/multi_cell_charger.dm
@@ -112,6 +112,7 @@
return COMPONENT_CANCEL_ATTACK_CHAIN
/obj/machinery/cell_charger_multi/RefreshParts()
+ . = ..()
charge_rate = 0 // No, you cant get free charging speed!
for(var/obj/item/stock_parts/capacitor/C in component_parts)
charge_rate += charge_rate_base * C.rating
diff --git a/modular_skyrat/modules/mutants/code/mutant_cure.dm b/modular_skyrat/modules/mutants/code/mutant_cure.dm
index 7b7b421f1ed..c02805969e7 100644
--- a/modular_skyrat/modules/mutants/code/mutant_cure.dm
+++ b/modular_skyrat/modules/mutants/code/mutant_cure.dm
@@ -301,6 +301,7 @@
status = STATUS_IDLE
/obj/machinery/rnd/rna_recombinator/RefreshParts()
+ . = ..()
for(var/obj/item/stock_parts/manipulator/M in component_parts)
if(recombination_step_time > 0 && (recombination_step_time - M.rating) >= 1)
recombination_step_time -= M.rating
diff --git a/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_machine.dm b/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_machine.dm
index 90c3bfe270b..d4f9b1ff84e 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_machine.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_machine.dm
@@ -15,6 +15,7 @@
var/world_compare = 0
/obj/machinery/xenoarch/RefreshParts()
+ . = ..()
efficiency = -1
for(var/obj/item/stock_parts/micro_laser/laser_part in component_parts)
efficiency += laser_part.rating