mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-24 00:51:46 +00:00
Filled PAPs
There now exists pre-filled portable airpumps, mainly to be used by the ERT.
This commit is contained in:
@@ -11,46 +11,54 @@
|
||||
|
||||
var/canister_color = "yellow"
|
||||
var/can_label = 1
|
||||
var/filled = 0.5
|
||||
pressure_resistance = 7*ONE_ATMOSPHERE
|
||||
start_pressure = 4.5 * ONE_ATMOSPHERE
|
||||
pressure_resistance = 7 * ONE_ATMOSPHERE
|
||||
var/temperature_resistance = 1000 + T0C
|
||||
volume = 1000
|
||||
use_power = 0
|
||||
var/release_log = ""
|
||||
var/update_flag = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/
|
||||
can_label = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/sleeping_agent
|
||||
name = "Canister: \[N2O\]"
|
||||
icon_state = "redws"
|
||||
canister_color = "redws"
|
||||
can_label = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/nitrogen
|
||||
name = "Canister: \[N2\]"
|
||||
icon_state = "red"
|
||||
canister_color = "red"
|
||||
can_label = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen
|
||||
name = "Canister: \[O2\]"
|
||||
icon_state = "blue"
|
||||
canister_color = "blue"
|
||||
can_label = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/phoron
|
||||
name = "Canister \[Phoron\]"
|
||||
icon_state = "orange"
|
||||
canister_color = "orange"
|
||||
can_label = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/carbon_dioxide
|
||||
name = "Canister \[CO2\]"
|
||||
icon_state = "black"
|
||||
canister_color = "black"
|
||||
can_label = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/air
|
||||
name = "Canister \[Air\]"
|
||||
icon_state = "grey"
|
||||
canister_color = "grey"
|
||||
can_label = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/air/airlock
|
||||
filled = 0.05
|
||||
start_pressure = 0
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/empty/
|
||||
start_pressure = 0
|
||||
can_label = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/empty/oxygen
|
||||
name = "Canister: \[O2\]"
|
||||
icon_state = "blue"
|
||||
@@ -345,10 +353,9 @@ update_flag
|
||||
return 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/phoron/New()
|
||||
|
||||
..()
|
||||
|
||||
src.air_contents.adjust_gas("phoron", (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature))
|
||||
src.air_contents.adjust_gas("phoron", MolesForPressure())
|
||||
|
||||
src.update_icon()
|
||||
return 1
|
||||
@@ -357,7 +364,7 @@ update_flag
|
||||
|
||||
..()
|
||||
|
||||
src.air_contents.adjust_gas("oxygen", (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature))
|
||||
src.air_contents.adjust_gas("oxygen", MolesForPressure())
|
||||
src.update_icon()
|
||||
return 1
|
||||
|
||||
@@ -365,7 +372,7 @@ update_flag
|
||||
|
||||
..()
|
||||
|
||||
air_contents.adjust_gas("sleeping_agent", (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature))
|
||||
air_contents.adjust_gas("sleeping_agent", MolesForPressure())
|
||||
|
||||
src.update_icon()
|
||||
return 1
|
||||
@@ -387,22 +394,21 @@ update_flag
|
||||
|
||||
..()
|
||||
|
||||
src.air_contents.adjust_gas("nitrogen", (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature))
|
||||
src.air_contents.adjust_gas("nitrogen", MolesForPressure())
|
||||
|
||||
src.update_icon()
|
||||
return 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/carbon_dioxide/New()
|
||||
|
||||
..()
|
||||
src.air_contents.adjust_gas("carbon_dioxide", (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature))
|
||||
src.air_contents.adjust_gas("carbon_dioxide", )
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/air/New()
|
||||
|
||||
..()
|
||||
src.air_contents.adjust_multi("oxygen", (O2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature), "nitrogen", (N2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature))
|
||||
var/list/air_mix = StandardAirMix()
|
||||
src.air_contents.adjust_multi("oxygen", air_mix["oxygen"], "nitrogen", air_mix["nitrogen"])
|
||||
|
||||
src.update_icon()
|
||||
return 1
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
var/volume = 0
|
||||
var/destroyed = 0
|
||||
|
||||
var/maximum_pressure = 90*ONE_ATMOSPHERE
|
||||
var/start_pressure = ONE_ATMOSPHERE
|
||||
var/maximum_pressure = 90 * ONE_ATMOSPHERE
|
||||
|
||||
/obj/machinery/portable_atmospherics/New()
|
||||
..()
|
||||
@@ -39,6 +40,14 @@
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/proc/StandardAirMix()
|
||||
return list(
|
||||
"oxygen" = O2STANDARD * MolesForPressure(),
|
||||
"nitrogen" = N2STANDARD * MolesForPressure())
|
||||
|
||||
/obj/machinery/portable_atmospherics/proc/MolesForPressure(var/target_pressure = start_pressure)
|
||||
return max(0, (air_contents.return_pressure() - target_pressure)) * air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
|
||||
/obj/machinery/portable_atmospherics/update_icon()
|
||||
return null
|
||||
|
||||
|
||||
@@ -10,14 +10,20 @@
|
||||
var/target_pressure = 100
|
||||
|
||||
volume = 1000
|
||||
|
||||
|
||||
power_rating = 7500 //7500 W ~ 10 HP
|
||||
power_losses = 150
|
||||
|
||||
/obj/machinery/portable_atmospherics/powered/pump/filled
|
||||
start_pressure = 90 * ONE_ATMOSPHERE
|
||||
|
||||
/obj/machinery/portable_atmospherics/powered/pump/New()
|
||||
..()
|
||||
cell = new/obj/item/weapon/cell(src)
|
||||
|
||||
var/list/air_mix = StandardAirMix()
|
||||
src.air_contents.adjust_multi("oxygen", air_mix["oxygen"], "nitrogen", air_mix["nitrogen"])
|
||||
|
||||
/obj/machinery/portable_atmospherics/powered/pump/update_icon()
|
||||
src.overlays = 0
|
||||
|
||||
@@ -53,16 +59,16 @@
|
||||
/obj/machinery/portable_atmospherics/powered/pump/process()
|
||||
..()
|
||||
var/power_draw = -1
|
||||
|
||||
|
||||
if(on && cell && cell.charge)
|
||||
var/datum/gas_mixture/environment
|
||||
if(holding)
|
||||
environment = holding.air_contents
|
||||
else
|
||||
environment = loc.return_air()
|
||||
|
||||
|
||||
var/pressure_delta
|
||||
var/output_volume
|
||||
var/output_volume
|
||||
var/air_temperature
|
||||
if(direction_out)
|
||||
pressure_delta = target_pressure - environment.return_pressure()
|
||||
@@ -72,15 +78,15 @@
|
||||
pressure_delta = target_pressure - air_contents.return_pressure()
|
||||
output_volume = air_contents.volume * air_contents.group_multiplier
|
||||
air_temperature = air_contents.temperature? air_contents.temperature : environment.temperature
|
||||
|
||||
|
||||
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
|
||||
|
||||
|
||||
if (pressure_delta > 0.01)
|
||||
if (direction_out)
|
||||
power_draw = pump_gas(src, air_contents, environment, transfer_moles, power_rating)
|
||||
else
|
||||
power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating)
|
||||
|
||||
|
||||
if (power_draw < 0)
|
||||
last_flow_rate = 0
|
||||
last_power_draw = 0
|
||||
@@ -88,13 +94,13 @@
|
||||
power_draw = max(power_draw, power_losses)
|
||||
cell.use(power_draw * CELLRATE)
|
||||
last_power_draw = power_draw
|
||||
|
||||
|
||||
update_connected_network()
|
||||
|
||||
|
||||
//ran out of charge
|
||||
if (!cell.charge)
|
||||
update_icon()
|
||||
|
||||
|
||||
src.updateDialog()
|
||||
|
||||
/obj/machinery/portable_atmospherics/powered/pump/return_air()
|
||||
|
||||
Reference in New Issue
Block a user