mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
Cache canister updates and make huge scrubbers use power; add movable version
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
var/icon_state_open = "cold_off"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
idle_power_usage = 25
|
||||
|
||||
var/on = FALSE
|
||||
var/min_temperature = 0
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
pressure_resistance = 7 * ONE_ATMOSPHERE
|
||||
var/temperature_resistance = 1000 + T0C
|
||||
|
||||
var/update_flag = 0
|
||||
var/update = 0
|
||||
var/static/list/label2types = list(
|
||||
"n2" = /obj/machinery/portable_atmospherics/canister/nitrogen,
|
||||
"o2" = /obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
@@ -90,26 +90,57 @@
|
||||
air_contents.gases["o2"][MOLES] = (O2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature)
|
||||
air_contents.gases["n2"][MOLES] = (N2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature)
|
||||
|
||||
#define HOLDING 1
|
||||
#define CONNECTED 2
|
||||
#define EMPTY 4
|
||||
#define LOW 8
|
||||
#define FULL 16
|
||||
#define DANGER 32
|
||||
/obj/machinery/portable_atmospherics/canister/update_icon()
|
||||
if(destroyed)
|
||||
overlays = 0
|
||||
overlays.Cut()
|
||||
icon_state = "[initial(icon_state)]-1"
|
||||
return
|
||||
|
||||
overlays.Cut()
|
||||
var/last_update = update
|
||||
update = 0
|
||||
|
||||
if(holding)
|
||||
overlays += "can-open"
|
||||
update |= HOLDING
|
||||
if(connected_port)
|
||||
overlays += "can-connector"
|
||||
update |= CONNECTED
|
||||
var/pressure = air_contents.return_pressure()
|
||||
if(pressure < 10)
|
||||
overlays += "can-o0"
|
||||
update |= EMPTY
|
||||
else if(pressure < ONE_ATMOSPHERE)
|
||||
overlays += "can-o1"
|
||||
update |= LOW
|
||||
else if(pressure < 15 * ONE_ATMOSPHERE)
|
||||
overlays += "can-o2"
|
||||
update |= FULL
|
||||
else
|
||||
update |= DANGER
|
||||
|
||||
if(update == last_update)
|
||||
return
|
||||
|
||||
overlays.Cut()
|
||||
if(update & HOLDING)
|
||||
overlays += "can-open"
|
||||
if(update & CONNECTED)
|
||||
overlays += "can-connector"
|
||||
if(update & EMPTY)
|
||||
overlays += "can-o0"
|
||||
else if(update & LOW)
|
||||
overlays += "can-o1"
|
||||
else if(update & FULL)
|
||||
overlays += "can-o2"
|
||||
else if(update & DANGER)
|
||||
overlays += "can-o3"
|
||||
#undef HOLDING
|
||||
#undef CONNECTED
|
||||
#undef EMPTY
|
||||
#undef LOW
|
||||
#undef FULL
|
||||
#undef DANGER
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > temperature_resistance)
|
||||
|
||||
@@ -97,18 +97,26 @@
|
||||
/obj/machinery/portable_atmospherics/scrubber/huge
|
||||
name = "huge air scrubber"
|
||||
icon_state = "scrubber:0"
|
||||
anchored = 1
|
||||
anchored = TRUE
|
||||
active_power_usage = 500
|
||||
idle_power_usage = 10
|
||||
|
||||
volume_rate = 1500
|
||||
volume = 50000
|
||||
|
||||
var/movable = FALSE
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/huge/movable
|
||||
movable = TRUE
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/huge/update_icon()
|
||||
icon_state = "scrubber:[on]"
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/huge/process_atmos()
|
||||
if(!anchored)
|
||||
if((!anchored && !movable) || !is_operational())
|
||||
on = FALSE
|
||||
update_icon()
|
||||
use_power = 1 + on
|
||||
if(!on)
|
||||
return
|
||||
|
||||
@@ -120,6 +128,7 @@
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/huge/attackby(obj/item/weapon/W, mob/user)
|
||||
if(default_unfasten_wrench(user, W))
|
||||
on = FALSE
|
||||
if(!movable)
|
||||
on = FALSE
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -50,10 +50,8 @@
|
||||
// returns true if the area has power on given channel (or doesn't require power).
|
||||
// defaults to power_channel
|
||||
/obj/machinery/proc/powered(var/chan = -1) // defaults to power_channel
|
||||
|
||||
if(!src.loc)
|
||||
if(!loc)
|
||||
return 0
|
||||
|
||||
if(!use_power)
|
||||
return 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user