mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-16 01:46:52 +01:00
- all cells in the game are now small, medium, large - super, hyper capacity cells, device, and weapon cells are all removed - cells now have standardized variants, some of which are printable by R&D - energy weapons rebalanced - **advanced energy guns and stun revolvers removed** - use the new modular weapon system and microfission cells. --------- Co-authored-by: silicons <silicons@silicons.dev>
52 lines
2.3 KiB
Plaintext
52 lines
2.3 KiB
Plaintext
/obj/item/modular_computer/proc/power_failure(malfunction = FALSE)
|
|
if(enabled) // Shut down the computer
|
|
visible_message(SPAN_DANGER("\The [src]'s screen flickers briefly and then goes dark."))
|
|
if(active_program)
|
|
active_program.event_powerfailure(0)
|
|
for(var/datum/computer_file/program/PRG in idle_threads)
|
|
PRG.event_powerfailure(1)
|
|
shutdown_computer(0)
|
|
|
|
/// Tries to use power from battery. Passing 0 as parameter results in this proc returning whether battery is functional or not.
|
|
/obj/item/modular_computer/proc/battery_power(power_usage = 0)
|
|
apc_powered = FALSE
|
|
if(!battery_module || !battery_module.check_functionality() || battery_module.battery.charge <= 0)
|
|
return FALSE
|
|
if(battery_module.battery.use(DYNAMIC_W_TO_CELL_UNITS(power_usage, 1)) || ((power_usage == 0) && battery_module.battery.charge))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/// Tries to use power from APC, if present.
|
|
/obj/item/modular_computer/proc/apc_power(power_usage = 0)
|
|
apc_powered = TRUE
|
|
// Tesla link was originally limited to machinery only, but this probably works too, and the benefit of being able to power all devices from an APC outweights
|
|
// the possible minor performance loss.
|
|
if(!tesla_link || !tesla_link.check_functionality())
|
|
return FALSE
|
|
var/area/A = get_area(src)
|
|
if(!istype(A) || !A.powered(EQUIP))
|
|
return FALSE
|
|
|
|
// At this point, we know that APC can power us for this tick. Check if we also need to charge our battery, and then actually use the power.
|
|
if(battery_module && (battery_module.battery.charge < battery_module.battery.max_charge) && (power_usage > 0))
|
|
power_usage += tesla_link.passive_charging_rate
|
|
battery_module.battery.give(DYNAMIC_W_TO_CELL_UNITS(tesla_link.passive_charging_rate, 1))
|
|
|
|
A.use_power_oneoff(power_usage, EQUIP)
|
|
return TRUE
|
|
|
|
/// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged
|
|
/obj/item/modular_computer/proc/handle_power()
|
|
var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage
|
|
for(var/obj/item/computer_hardware/H in get_all_components())
|
|
if(H.enabled)
|
|
power_usage += H.power_usage
|
|
last_power_usage = power_usage
|
|
|
|
// First tries to charge from an APC, if APC is unavailable switches to battery power. If neither works the computer fails.
|
|
if(apc_power(power_usage))
|
|
return
|
|
if(battery_power(power_usage))
|
|
return
|
|
power_failure()
|