mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-18 11:36:24 +01:00
new gas names!
This commit is contained in:
@@ -877,7 +877,7 @@
|
||||
result = /obj/structure/statue/elder_atmosian
|
||||
time = 60
|
||||
reqs = list(/obj/item/stack/sheet/mineral/metal_hydrogen = 10,
|
||||
/obj/item/grenade/gas_crystal/x_crystal = 1,
|
||||
/obj/item/grenade/gas_crystal/y_crystal = 1,
|
||||
/obj/item/grenade/gas_crystal/z_crystal = 1,)
|
||||
/obj/item/grenade/gas_crystal/raynar_crystal = 1,
|
||||
/obj/item/grenade/gas_crystal/roinneil_crystal = 1,
|
||||
/obj/item/grenade/gas_crystal/cymar_crystal = 1,)
|
||||
category = CAT_MISC
|
||||
|
||||
@@ -214,13 +214,9 @@
|
||||
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
|
||||
//Transfer 5% of current tank air contents to turf
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount)
|
||||
if(air_transfer.gases[/datum/gas/plasma] || air_transfer.gases[/datum/gas/tritium] || air_transfer.gases[/datum/gas/hydrogen])
|
||||
if(air_transfer.gases[/datum/gas/plasma])
|
||||
if(air_transfer.gases[/datum/gas/plasma])
|
||||
air_transfer.gases[/datum/gas/plasma][MOLES] *= 5
|
||||
if(air_transfer.gases[/datum/gas/tritium])
|
||||
air_transfer.gases[/datum/gas/tritium][MOLES] *= 6.5
|
||||
if(air_transfer.gases[/datum/gas/hydrogen])
|
||||
air_transfer.gases[/datum/gas/hydrogen][MOLES] *= 7
|
||||
else
|
||||
air_transfer.temperature += 15000
|
||||
target.assume_air(air_transfer)
|
||||
@@ -228,9 +224,6 @@
|
||||
target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500)
|
||||
//location.hotspot_expose(1000,500,1)
|
||||
SSair.add_to_active(target, 0)
|
||||
target.air_update_turf()
|
||||
|
||||
|
||||
|
||||
/obj/item/flamethrower/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -7,23 +7,23 @@
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
/obj/item/grenade/gas_crystal/x_crystal
|
||||
name = "X Crystal"
|
||||
desc = "A crystal made from the Gas X, it's cold to the touch."
|
||||
icon_state = "crystal_x"
|
||||
/obj/item/grenade/gas_crystal/raynar_crystal
|
||||
name = "Raynar crystal"
|
||||
desc = "A crystal made from the Raynar gas, it's cold to the touch."
|
||||
icon_state = "raynar_crystal"
|
||||
var/stamina_damage = 30
|
||||
var/freeze_range = 4
|
||||
|
||||
/obj/item/grenade/gas_crystal/y_crystal
|
||||
name = "Y Crystal"
|
||||
desc = "A crystal made from the Gas Y, you can see the liquid gases inside."
|
||||
icon_state = "crystal_y"
|
||||
/obj/item/grenade/gas_crystal/roinneil_crystal
|
||||
name = "Roinneil crystal"
|
||||
desc = "A crystal made from the Roinneil gas, you can see the liquid gases inside."
|
||||
icon_state = "roinneil_crystal"
|
||||
var/refill_range = 5
|
||||
|
||||
/obj/item/grenade/gas_crystal/z_crystal
|
||||
name = "Z Crystal"
|
||||
desc = "A crystal made from the Gas Z, you can see the liquid plasma inside."
|
||||
icon_state = "crystal_z"
|
||||
/obj/item/grenade/gas_crystal/cymar_crystal
|
||||
name = "Cymar crystal"
|
||||
desc = "A crystal made from the Cymar Gas, you can see the liquid plasma inside."
|
||||
icon_state = "cymar_crystal"
|
||||
ex_dev = 1
|
||||
ex_heavy = 2
|
||||
ex_light = 4
|
||||
@@ -45,15 +45,17 @@
|
||||
SEND_SIGNAL(src, COMSIG_GRENADE_ARMED, det_time, delayoverride)
|
||||
addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
|
||||
|
||||
/obj/item/grenade/gas_crystal/x_crystal/prime(mob/living/lanced_by)
|
||||
/obj/item/grenade/gas_crystal/raynar_crystal/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
playsound(src, 'sound/effects/spray2.ogg', 100, TRUE)
|
||||
for(var/turf/T in view(freeze_range,loc))
|
||||
if(isopenturf(T))
|
||||
var/turf/open/F = T
|
||||
if(F.air.temperature > 260)
|
||||
F.air.temperature = 200
|
||||
if(F.air.temperature > 260 && F.air.temperature < 370)
|
||||
F.atmos_spawn_air("Nitrogen = 100; TEMP = 273")
|
||||
if(F.air.temperature > 370)
|
||||
F.atmos_spawn_air("Nitrogen = 250; TEMP = 30")
|
||||
F.MakeSlippery(TURF_WET_PERMAFROST, 1 MINUTES)
|
||||
if(F.air.gases[/datum/gas/plasma])
|
||||
F.air.gases[/datum/gas/plasma][MOLES] -= F.air.gases[/datum/gas/plasma][MOLES] * 0.5
|
||||
@@ -64,7 +66,7 @@
|
||||
L.adjust_bodytemperature(-150)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/gas_crystal/y_crystal/prime(mob/living/lanced_by)
|
||||
/obj/item/grenade/gas_crystal/roinneil_crystal/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
playsound(src, 'sound/effects/spray2.ogg', 100, TRUE)
|
||||
@@ -76,7 +78,7 @@
|
||||
F.air_update_turf()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/gas_crystal/z_crystal/prime(mob/living/lanced_by)
|
||||
/obj/item/grenade/gas_crystal/cymar_crystal/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
qdel(src)
|
||||
|
||||
@@ -170,48 +170,48 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
|
||||
dangerous = TRUE
|
||||
rarity = 700
|
||||
|
||||
/datum/gas/gas_x
|
||||
id = "gas_x"
|
||||
/datum/gas/raynar
|
||||
id = "raynar"
|
||||
specific_heat = 10
|
||||
name = "Gas X"
|
||||
name = "Raynar"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "gas_x"
|
||||
gas_overlay = "raynar"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/gas_y
|
||||
id = "gas_y"
|
||||
/datum/gas/roinneil
|
||||
id = "roinneil"
|
||||
specific_heat = 30
|
||||
name = "Gas Y"
|
||||
name = "Roinneil"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "gas_y"
|
||||
gas_overlay = "roinneil"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/gas_z
|
||||
id = "gas_z"
|
||||
/datum/gas/cymar
|
||||
id = "cymar"
|
||||
specific_heat = 350
|
||||
name = "Gas Z"
|
||||
name = "Cymar"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "gas_z"
|
||||
gas_overlay = "cymar"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/delta_gas
|
||||
id = "delta_gas"
|
||||
/datum/gas/halon
|
||||
id = "halon"
|
||||
specific_heat = 175
|
||||
name = "Delta gas"
|
||||
name = "Halon"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "delta_gas"
|
||||
gas_overlay = "halon"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/gamma_gas
|
||||
id = "gamma_gas"
|
||||
/datum/gas/sivana
|
||||
id = "sivana"
|
||||
specific_heat = 5
|
||||
name = "Gamma gas"
|
||||
name = "Sivana"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "gamma_gas"
|
||||
gas_overlay = "sivana"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ freonfire = -5
|
||||
plasmafire = -4
|
||||
h2fire = -3
|
||||
tritfire = -2
|
||||
delta_gas_o2removal = -1
|
||||
halon_o2removal = -1
|
||||
nitrous_decomp = 0
|
||||
water_vapor = 1
|
||||
fusion = 2
|
||||
@@ -16,17 +16,17 @@ stimformation = 5
|
||||
nobiliumformation = 6
|
||||
stimball = 7
|
||||
ammoniacrystals = 8
|
||||
gamma_gas_plasma_filtering = 9
|
||||
gamma_gas_n2o_filtering = 10
|
||||
gasZ_decomp = 11
|
||||
gasX_production = 12
|
||||
gasY_production = 13
|
||||
gasZ_production = 14
|
||||
delta_gas_formation = 15
|
||||
gamma_gas_formation = 16
|
||||
crystalX_production = 17
|
||||
crystalY_production = 18
|
||||
crystalZ_production = 19
|
||||
sivana_plasma_filtering = 9
|
||||
sivana_n2o_filtering = 10
|
||||
cymar_decomp = 11
|
||||
raynar_production = 12
|
||||
roinneil_production = 13
|
||||
cymar_production = 14
|
||||
halon_formation = 15
|
||||
sivana_formation = 16
|
||||
raynar_crystal_production = 17
|
||||
roinneil_crystal_production = 18
|
||||
cymar crystal_production = 19
|
||||
nobiliumsuppression = INFINITY
|
||||
*/
|
||||
|
||||
@@ -797,32 +797,32 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = clamp((air.temperature*old_heat_capacity + energy_released)/new_heat_capacity,TCMB,INFINITY)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/delta_gas_formation
|
||||
/datum/gas_reaction/halon_formation
|
||||
priority = 15
|
||||
name = "Delta gas formation"
|
||||
id = "delta_gas_formation"
|
||||
name = "Halon formation"
|
||||
id = "halon_formation"
|
||||
|
||||
/datum/gas_reaction/delta_gas_formation/init_reqs()
|
||||
/datum/gas_reaction/halon_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/bz = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/tritium = MINIMUM_MOLE_COUNT,
|
||||
"TEMP" = 150
|
||||
)
|
||||
|
||||
/datum/gas_reaction/delta_gas_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/halon_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/bz][MOLES])
|
||||
var/energy_used = heat_efficency * 100
|
||||
ASSERT_GAS(/datum/gas/delta_gas,air)
|
||||
ASSERT_GAS(/datum/gas/halon,air)
|
||||
if ((cached_gases[/datum/gas/tritium][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
if(air.temperature >= 250)
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/tritium][MOLES] -= heat_efficency * 5
|
||||
cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.25
|
||||
cached_gases[/datum/gas/delta_gas][MOLES] += heat_efficency * 2
|
||||
cached_gases[/datum/gas/halon][MOLES] += heat_efficency * 2
|
||||
|
||||
if(energy_used > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
@@ -830,32 +830,32 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/gamma_gas_formation
|
||||
/datum/gas_reaction/sivana_formation
|
||||
priority = 16
|
||||
name = "Gamma gas formation"
|
||||
id = "gamma_gas_formation"
|
||||
name = "Sivana formation"
|
||||
id = "sivana_formation"
|
||||
|
||||
/datum/gas_reaction/gamma_gas_formation/init_reqs()
|
||||
/datum/gas_reaction/sivana_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/bz = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/hydrogen = MINIMUM_MOLE_COUNT,
|
||||
"TEMP" = 150
|
||||
)
|
||||
|
||||
/datum/gas_reaction/gamma_gas_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/sivana_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/bz][MOLES])
|
||||
var/energy_used = heat_efficency * 100
|
||||
ASSERT_GAS(/datum/gas/gamma_gas,air)
|
||||
ASSERT_GAS(/datum/gas/sivana,air)
|
||||
if ((cached_gases[/datum/gas/hydrogen][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
if(air.temperature >= 250)
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/hydrogen][MOLES] -= heat_efficency * 5
|
||||
cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.25
|
||||
cached_gases[/datum/gas/delta_gas][MOLES] += heat_efficency * 2
|
||||
cached_gases[/datum/gas/halon][MOLES] += heat_efficency * 2
|
||||
|
||||
if(energy_used > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
@@ -863,32 +863,32 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/gas_x_formation
|
||||
/datum/gas_reaction/raynar_formation
|
||||
priority = 12
|
||||
name = "Gas X formation"
|
||||
id = "gas_x_formation"
|
||||
name = "Raynar formation"
|
||||
id = "raynar_formation"
|
||||
|
||||
/datum/gas_reaction/gas_x_formation/init_reqs()
|
||||
/datum/gas_reaction/raynar_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/bz = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/freon = MINIMUM_MOLE_COUNT,
|
||||
"TEMP" = 50
|
||||
)
|
||||
|
||||
/datum/gas_reaction/gas_x_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/raynar_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature * 0.3, cached_gases[/datum/gas/freon][MOLES], cached_gases[/datum/gas/bz][MOLES])
|
||||
var/energy_used = heat_efficency * 100
|
||||
ASSERT_GAS(/datum/gas/gas_x,air)
|
||||
ASSERT_GAS(/datum/gas/raynar,air)
|
||||
if ((cached_gases[/datum/gas/freon][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
if(air.temperature >= 100)
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/freon][MOLES] -= heat_efficency * 5
|
||||
cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.25
|
||||
cached_gases[/datum/gas/gas_x][MOLES] += heat_efficency * 3
|
||||
cached_gases[/datum/gas/raynar][MOLES] += heat_efficency * 3
|
||||
|
||||
if(energy_used > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
@@ -896,32 +896,32 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/gas_y_formation
|
||||
/datum/gas_reaction/roinneil_formation
|
||||
priority = 13
|
||||
name = "Gas Y formation"
|
||||
id = "gas_y_formation"
|
||||
name = "Roinneil formation"
|
||||
id = "roinneil_formation"
|
||||
|
||||
/datum/gas_reaction/gas_y_formation/init_reqs()
|
||||
/datum/gas_reaction/roinneil_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/pluoxium = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/hydrogen = MINIMUM_MOLE_COUNT,
|
||||
"TEMP" = 5000
|
||||
)
|
||||
|
||||
/datum/gas_reaction/gas_y_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/roinneil_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature * 0.005, cached_gases[/datum/gas/pluoxium][MOLES], cached_gases[/datum/gas/hydrogen][MOLES])
|
||||
var/energy_used = heat_efficency * 100
|
||||
ASSERT_GAS(/datum/gas/gas_y,air)
|
||||
ASSERT_GAS(/datum/gas/roinneil,air)
|
||||
if ((cached_gases[/datum/gas/pluoxium][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/hydrogen][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
if(air.temperature >= 10000)
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/hydrogen][MOLES] -= heat_efficency * 2
|
||||
cached_gases[/datum/gas/pluoxium][MOLES] -= heat_efficency * 0.2
|
||||
cached_gases[/datum/gas/gas_y][MOLES] += heat_efficency * 2.5
|
||||
cached_gases[/datum/gas/roinneil][MOLES] += heat_efficency * 2.5
|
||||
|
||||
if(energy_used > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
@@ -929,32 +929,32 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/gas_z_formation
|
||||
/datum/gas_reaction/cymar_formation
|
||||
priority = 14
|
||||
name = "Gas Z formation"
|
||||
id = "gas_z_formation"
|
||||
name = "Cymar formation"
|
||||
id = "cymar_formation"
|
||||
|
||||
/datum/gas_reaction/gas_z_formation/init_reqs()
|
||||
/datum/gas_reaction/cymar_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/hypernoblium = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/stimulum = MINIMUM_MOLE_COUNT,
|
||||
"TEMP" = 260
|
||||
)
|
||||
|
||||
/datum/gas_reaction/gas_z_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/cymar_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature * 0.005, cached_gases[/datum/gas/hypernoblium][MOLES], cached_gases[/datum/gas/stimulum][MOLES])
|
||||
var/energy_used = heat_efficency * 10
|
||||
ASSERT_GAS(/datum/gas/gas_z,air)
|
||||
ASSERT_GAS(/datum/gas/cymar,air)
|
||||
if ((cached_gases[/datum/gas/hypernoblium][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/stimulum][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
if(air.temperature >= 290)
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/hypernoblium][MOLES] -= heat_efficency * 0.01
|
||||
cached_gases[/datum/gas/stimulum][MOLES] -= heat_efficency * 0.5
|
||||
cached_gases[/datum/gas/gas_z][MOLES] += heat_efficency * 0.5
|
||||
cached_gases[/datum/gas/cymar][MOLES] += heat_efficency * 0.5
|
||||
|
||||
if(energy_used > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
@@ -962,28 +962,28 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/delta_gas_o2removal
|
||||
/datum/gas_reaction/halon_o2removal
|
||||
priority = -1
|
||||
name = "delta gas o2 removal"
|
||||
id = "delta_gas_o2removal"
|
||||
name = "Halon o2 removal"
|
||||
id = "halon_o2removal"
|
||||
|
||||
/datum/gas_reaction/delta_gas_o2removal/init_reqs()
|
||||
/datum/gas_reaction/halon_o2removal/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/delta_gas = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/halon = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/oxygen = MINIMUM_MOLE_COUNT,
|
||||
"TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST
|
||||
)
|
||||
|
||||
/datum/gas_reaction/delta_gas_o2removal/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/halon_o2removal/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature / ( FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 10), cached_gases[/datum/gas/delta_gas][MOLES], cached_gases[/datum/gas/oxygen][MOLES])
|
||||
var/heat_efficency = min(temperature / ( FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 10), cached_gases[/datum/gas/halon][MOLES], cached_gases[/datum/gas/oxygen][MOLES])
|
||||
var/energy_used = heat_efficency * 100
|
||||
ASSERT_GAS(/datum/gas/carbon_dioxide,air)
|
||||
if ((cached_gases[/datum/gas/delta_gas][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/oxygen][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
if ((cached_gases[/datum/gas/halon][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/oxygen][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/delta_gas][MOLES] -= heat_efficency
|
||||
cached_gases[/datum/gas/halon][MOLES] -= heat_efficency
|
||||
cached_gases[/datum/gas/oxygen][MOLES] -= heat_efficency * 10
|
||||
cached_gases[/datum/gas/carbon_dioxide][MOLES] += heat_efficency * 5
|
||||
|
||||
@@ -993,27 +993,27 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity - energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/gamma_gas_plasma_filtering
|
||||
/datum/gas_reaction/sivana_plasma_filtering
|
||||
priority = 9
|
||||
name = "gamma gas plasma filtering"
|
||||
id = "gamma_gas_plasma_filtering"
|
||||
name = "Sivana plasma filtering"
|
||||
id = "sivana_plasma_filtering"
|
||||
|
||||
/datum/gas_reaction/gamma_gas_plasma_filtering/init_reqs()
|
||||
/datum/gas_reaction/sivana_plasma_filtering/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/gamma_gas = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/sivana = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/plasma = MINIMUM_MOLE_COUNT,
|
||||
)
|
||||
|
||||
/datum/gas_reaction/gamma_gas_plasma_filtering/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/sivana_plasma_filtering/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/gamma_gas][MOLES], cached_gases[/datum/gas/plasma][MOLES])
|
||||
var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/sivana][MOLES], cached_gases[/datum/gas/plasma][MOLES])
|
||||
var/energy_used = heat_efficency * 100
|
||||
ASSERT_GAS(/datum/gas/carbon_dioxide,air)
|
||||
if ((cached_gases[/datum/gas/gamma_gas][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/plasma][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
if ((cached_gases[/datum/gas/sivana][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/plasma][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/gamma_gas][MOLES] -= heat_efficency * 0.2
|
||||
cached_gases[/datum/gas/sivana][MOLES] -= heat_efficency * 0.2
|
||||
cached_gases[/datum/gas/plasma][MOLES] -= heat_efficency * 0.5
|
||||
cached_gases[/datum/gas/carbon_dioxide][MOLES] += heat_efficency * 0.4
|
||||
|
||||
@@ -1023,28 +1023,28 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/gamma_gas_n2o_filtering
|
||||
/datum/gas_reaction/sivana_n2o_filtering
|
||||
priority = 10
|
||||
name = "gamma gas n2o filtering"
|
||||
id = "gamma_gas_n2o_filtering"
|
||||
name = "Sivana n2o filtering"
|
||||
id = "sivana_n2o_filtering"
|
||||
|
||||
/datum/gas_reaction/gamma_gas_n2o_filtering/init_reqs()
|
||||
/datum/gas_reaction/sivana_n2o_filtering/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/gamma_gas = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/sivana = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/nitrous_oxide = MINIMUM_MOLE_COUNT,
|
||||
)
|
||||
|
||||
/datum/gas_reaction/gamma_gas_n2o_filtering/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/sivana_n2o_filtering/react(datum/gas_mixture/air, datum/holder)
|
||||
var/list/cached_gases = air.gases
|
||||
var/temperature = air.temperature
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/gamma_gas][MOLES], cached_gases[/datum/gas/nitrous_oxide][MOLES])
|
||||
var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/sivana][MOLES], cached_gases[/datum/gas/nitrous_oxide][MOLES])
|
||||
var/energy_used = heat_efficency * 100
|
||||
ASSERT_GAS(/datum/gas/oxygen,air)
|
||||
ASSERT_GAS(/datum/gas/nitrogen,air)
|
||||
if ((cached_gases[/datum/gas/gamma_gas][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/nitrous_oxide][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
if ((cached_gases[/datum/gas/sivana][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/nitrous_oxide][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/gamma_gas][MOLES] -= heat_efficency * 0.2
|
||||
cached_gases[/datum/gas/sivana][MOLES] -= heat_efficency * 0.2
|
||||
cached_gases[/datum/gas/nitrous_oxide][MOLES] -= heat_efficency * 0.5
|
||||
cached_gases[/datum/gas/oxygen][MOLES] += heat_efficency * 0.4
|
||||
cached_gases[/datum/gas/nitrogen][MOLES] += heat_efficency * 0.4
|
||||
@@ -1055,18 +1055,18 @@ nobiliumsuppression = INFINITY
|
||||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity),TCMB)
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/gasZ_decomp
|
||||
/datum/gas_reaction/cymar_decomp
|
||||
priority = 11
|
||||
name = "gas Z decomposition"
|
||||
id = "gas_z_decomp"
|
||||
name = "Cymar decomposition"
|
||||
id = "cymar_decomp"
|
||||
|
||||
/datum/gas_reaction/gasZ_decomp/init_reqs()
|
||||
/datum/gas_reaction/cymar_decomp/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/nitrogen = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/gas_z = MINIMUM_MOLE_COUNT
|
||||
/datum/gas/cymar = MINIMUM_MOLE_COUNT
|
||||
)
|
||||
|
||||
/datum/gas_reaction/gasZ_decomp/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/cymar_decomp/react(datum/gas_mixture/air, datum/holder)
|
||||
var/energy_released = 0
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow
|
||||
@@ -1074,10 +1074,10 @@ nobiliumsuppression = INFINITY
|
||||
var/burned_fuel = 0
|
||||
|
||||
|
||||
burned_fuel = min(20, cached_gases[/datum/gas/nitrogen][MOLES], cached_gases[/datum/gas/gas_z][MOLES])
|
||||
if(cached_gases[/datum/gas/gas_z][MOLES] - burned_fuel < 0)
|
||||
burned_fuel = min(20, cached_gases[/datum/gas/nitrogen][MOLES], cached_gases[/datum/gas/cymar][MOLES])
|
||||
if(cached_gases[/datum/gas/cymar][MOLES] - burned_fuel < 0)
|
||||
return NO_REACTION
|
||||
cached_gases[/datum/gas/gas_z][MOLES] -= burned_fuel
|
||||
cached_gases[/datum/gas/cymar][MOLES] -= burned_fuel
|
||||
|
||||
if(burned_fuel)
|
||||
energy_released += (10 * burned_fuel)
|
||||
@@ -1093,18 +1093,18 @@ nobiliumsuppression = INFINITY
|
||||
return REACTING
|
||||
return NO_REACTION
|
||||
|
||||
/datum/gas_reaction/crystalX_formation
|
||||
/datum/gas_reaction/raynar_crystal_formation
|
||||
priority = 17
|
||||
name = "crystal X formation"
|
||||
id = "crystalX_formation"
|
||||
name = "raynar crystal formation"
|
||||
id = "raynar_crystal_formation"
|
||||
|
||||
/datum/gas_reaction/crystalX_formation/init_reqs()
|
||||
/datum/gas_reaction/raynar_crystal_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/oxygen = 50,
|
||||
/datum/gas/gas_x = 10
|
||||
/datum/gas/raynar = 10
|
||||
)
|
||||
|
||||
/datum/gas_reaction/crystalX_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/raynar_crystal_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/energy_released = 0
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/list/cached_gases = air.gases
|
||||
@@ -1112,29 +1112,29 @@ nobiliumsuppression = INFINITY
|
||||
var/turf/open/location = isturf(holder) ? holder : null
|
||||
var/consumed_fuel = 0
|
||||
if(temperature > 1000 && temperature < 2500)
|
||||
consumed_fuel = min(cached_gases[/datum/gas/gas_x][MOLES] / 10, 20 * (temperature * 0.001))
|
||||
consumed_fuel = min(cached_gases[/datum/gas/raynar][MOLES] / 10, 20 * (temperature * 0.001))
|
||||
cached_gases[/datum/gas/oxygen][MOLES] -= consumed_fuel
|
||||
cached_gases[/datum/gas/gas_x][MOLES] -= consumed_fuel * 4
|
||||
cached_gases[/datum/gas/raynar][MOLES] -= consumed_fuel * 4
|
||||
if(prob(1 * consumed_fuel))
|
||||
new /obj/item/grenade/gas_crystal/x_crystal(location)
|
||||
new /obj/item/grenade/gas_crystal/raynar_crystal(location)
|
||||
energy_released += consumed_fuel * 800
|
||||
if(energy_released > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
|
||||
air.temperature = (temperature * old_heat_capacity + energy_released) / new_heat_capacity
|
||||
|
||||
/datum/gas_reaction/crystalY_formation
|
||||
/datum/gas_reaction/roinneil_crystal_formation
|
||||
priority = 18
|
||||
name = "crystal Y formation"
|
||||
id = "crystalY_formation"
|
||||
name = "roinneil crystal formation"
|
||||
id = "roinneil_crystal_formation"
|
||||
|
||||
/datum/gas_reaction/crystalY_formation/init_reqs()
|
||||
/datum/gas_reaction/roinneil_crystal_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/nitrogen = 50,
|
||||
/datum/gas/gas_y = 10
|
||||
/datum/gas/roinneil = 10
|
||||
)
|
||||
|
||||
/datum/gas_reaction/crystalY_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/roinneil_crystal_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/energy_released = 0
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/list/cached_gases = air.gases
|
||||
@@ -1142,29 +1142,29 @@ nobiliumsuppression = INFINITY
|
||||
var/turf/open/location = isturf(holder) ? holder : null
|
||||
var/consumed_fuel = 0
|
||||
if(temperature > 100 && temperature < 150)
|
||||
consumed_fuel = min(cached_gases[/datum/gas/gas_y][MOLES] / 10, 20 * (temperature * 0.01))
|
||||
consumed_fuel = min(cached_gases[/datum/gas/roinneil][MOLES] / 10, 20 * (temperature * 0.01))
|
||||
cached_gases[/datum/gas/nitrogen][MOLES] -= consumed_fuel
|
||||
cached_gases[/datum/gas/gas_y][MOLES] -= consumed_fuel * 4
|
||||
cached_gases[/datum/gas/roinneil][MOLES] -= consumed_fuel * 4
|
||||
if(prob(1 * consumed_fuel))
|
||||
new /obj/item/grenade/gas_crystal/y_crystal(location)
|
||||
new /obj/item/grenade/gas_crystal/roinneil_crystal(location)
|
||||
energy_released += consumed_fuel * 800
|
||||
if(energy_released > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
|
||||
air.temperature = (temperature * old_heat_capacity + energy_released) / new_heat_capacity
|
||||
|
||||
/datum/gas_reaction/crystalZ_formation
|
||||
/datum/gas_reaction/cymar_crystal_formation
|
||||
priority = 19
|
||||
name = "crystal Z formation"
|
||||
id = "crystalZ_formation"
|
||||
name = "cymar crystal formation"
|
||||
id = "cymar_crystal_formation"
|
||||
|
||||
/datum/gas_reaction/crystalZ_formation/init_reqs()
|
||||
/datum/gas_reaction/cymar_crystal_formation/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/plasma = 50,
|
||||
/datum/gas/gas_z = 10
|
||||
/datum/gas/cymar = 10
|
||||
)
|
||||
|
||||
/datum/gas_reaction/crystalZ_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/cymar_crystal_formation/react(datum/gas_mixture/air, datum/holder)
|
||||
var/energy_released = 0
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/list/cached_gases = air.gases
|
||||
@@ -1172,29 +1172,29 @@ nobiliumsuppression = INFINITY
|
||||
var/turf/open/location = isturf(holder) ? holder : null
|
||||
var/consumed_fuel = 0
|
||||
if(temperature > 270 && temperature < 280)
|
||||
consumed_fuel = min(cached_gases[/datum/gas/gas_z][MOLES] / 10, 20 * (temperature * 0.02))
|
||||
consumed_fuel = min(cached_gases[/datum/gas/cymar][MOLES] / 10, 20 * (temperature * 0.02))
|
||||
cached_gases[/datum/gas/plasma][MOLES] -= consumed_fuel
|
||||
cached_gases[/datum/gas/gas_z][MOLES] -= consumed_fuel * 4
|
||||
cached_gases[/datum/gas/cymar][MOLES] -= consumed_fuel * 4
|
||||
if(prob(1 * consumed_fuel))
|
||||
new /obj/item/grenade/gas_crystal/z_crystal(location)
|
||||
new /obj/item/grenade/gas_crystal/cymar_crystal(location)
|
||||
energy_released += consumed_fuel * 800
|
||||
if(energy_released > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
|
||||
air.temperature = (temperature * old_heat_capacity + energy_released) / new_heat_capacity
|
||||
|
||||
/datum/gas_reaction/y_terror
|
||||
/datum/gas_reaction/roinneil_response
|
||||
priority = 20
|
||||
name = "gas y terror"
|
||||
id = "y_terror"
|
||||
name = "Roinneil response"
|
||||
id = "roinneil_response"
|
||||
|
||||
/datum/gas_reaction/y_terror/init_reqs()
|
||||
/datum/gas_reaction/roinneil_response/init_reqs()
|
||||
min_requirements = list(
|
||||
/datum/gas/gas_y = MINIMUM_MOLE_COUNT,
|
||||
/datum/gas/roinneil = MINIMUM_MOLE_COUNT,
|
||||
"TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST
|
||||
)
|
||||
|
||||
/datum/gas_reaction/y_terror/react(datum/gas_mixture/air, datum/holder)
|
||||
/datum/gas_reaction/roinneil_response/react(datum/gas_mixture/air, datum/holder)
|
||||
var/energy_released = 0
|
||||
var/old_heat_capacity = air.heat_capacity()
|
||||
var/list/cached_gases = air.gases
|
||||
@@ -1207,17 +1207,17 @@ nobiliumsuppression = INFINITY
|
||||
/datum/gas/tritium,
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/nitrous_oxide,
|
||||
/datum/gas/gas_z
|
||||
/datum/gas/cymar
|
||||
)
|
||||
if(cached_gases[/datum/gas/plasma][MOLES] > MINIMUM_MOLE_COUNT && cached_gases[/datum/gas/plasma][MOLES] < 10)
|
||||
var produced_amount = min(5, cached_gases[/datum/gas/plasma][MOLES], cached_gases[/datum/gas/gas_y][MOLES])
|
||||
var produced_amount = min(5, cached_gases[/datum/gas/plasma][MOLES], cached_gases[/datum/gas/roinneil][MOLES])
|
||||
cached_gases[/datum/gas/plasma][MOLES] = 0
|
||||
cached_gases[/datum/gas/gas_y][MOLES] -= produced_amount * 0.1
|
||||
cached_gases[/datum/gas/roinneil][MOLES] -= produced_amount * 0.1
|
||||
energy_released -= produced_amount * 1500
|
||||
if(prob(produced_amount * 20))
|
||||
new/obj/item/stack/sheet/mineral/plasma(location)
|
||||
if(cached_gases[/datum/gas/bz][MOLES] > MINIMUM_MOLE_COUNT)
|
||||
var consumed_amount = min(5, cached_gases[/datum/gas/bz][MOLES], cached_gases[/datum/gas/gas_y][MOLES])
|
||||
var consumed_amount = min(5, cached_gases[/datum/gas/bz][MOLES], cached_gases[/datum/gas/roinneil][MOLES])
|
||||
if(cached_gases[/datum/gas/bz][MOLES] < 30)
|
||||
location.rad_act(cached_gases[/datum/gas/bz][MOLES])
|
||||
cached_gases[/datum/gas/bz][MOLES] -= consumed_amount
|
||||
@@ -1226,23 +1226,23 @@ nobiliumsuppression = INFINITY
|
||||
L.hallucination += cached_gases[/datum/gas/bz][MOLES] * 0.5
|
||||
energy_released += 100
|
||||
if(cached_gases[/datum/gas/freon][MOLES] > 100 && cached_gases[/datum/gas/oxygen][MOLES] > 100)
|
||||
cached_gases[/datum/gas/gas_y][MOLES] = 0
|
||||
cached_gases[/datum/gas/roinneil][MOLES] = 0
|
||||
location.air.temperature = 240
|
||||
if(cached_gases[/datum/gas/tritium][MOLES] > MINIMUM_MOLE_COUNT)
|
||||
var produced_amount = min(5, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/gas_y][MOLES])
|
||||
var produced_amount = min(5, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/roinneil][MOLES])
|
||||
location.rad_act(produced_amount * 2.4)
|
||||
cached_gases[/datum/gas/tritium][MOLES] -= produced_amount
|
||||
cached_gases[/datum/gas/hydrogen][MOLES] += produced_amount
|
||||
cached_gases[/datum/gas/gas_y][MOLES] -= produced_amount * 0.01
|
||||
cached_gases[/datum/gas/roinneil][MOLES] -= produced_amount * 0.01
|
||||
energy_released += 50
|
||||
if(cached_gases[/datum/gas/hydrogen][MOLES] > 150)
|
||||
var produced_amount = min(5, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/gas_y][MOLES])
|
||||
var produced_amount = min(5, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/roinneil][MOLES])
|
||||
cached_gases[/datum/gas/hydrogen][MOLES] -= produced_amount
|
||||
cached_gases[/datum/gas/gas_y][MOLES] += produced_amount * 0.5
|
||||
cached_gases[/datum/gas/roinneil][MOLES] += produced_amount * 0.5
|
||||
energy_released -= 150
|
||||
if(cached_gases[/datum/gas/gas_z][MOLES] > MINIMUM_MOLE_COUNT)
|
||||
var max_power = min(5, cached_gases[/datum/gas/gas_z][MOLES])
|
||||
cached_gases[/datum/gas/gas_z][MOLES] = 0
|
||||
if(cached_gases[/datum/gas/cymar][MOLES] > MINIMUM_MOLE_COUNT)
|
||||
var max_power = min(5, cached_gases[/datum/gas/cymar][MOLES])
|
||||
cached_gases[/datum/gas/cymar][MOLES] = 0
|
||||
explosion(location, max_power * 0.15, max_power * 0.45, max_power * 0.65, max_power, max_power* 2)
|
||||
|
||||
|
||||
|
||||
@@ -102,11 +102,11 @@
|
||||
/datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires
|
||||
/datum/gas/freon = new/datum/tlv/dangerous,
|
||||
/datum/gas/hydrogen = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/delta_gas = new/datum/tlv/dangerous,
|
||||
/datum/gas/gamma_gas = new/datum/tlv/dangerous
|
||||
/datum/gas/raynar = new/datum/tlv/dangerous,
|
||||
/datum/gas/roinneil = new/datum/tlv/dangerous,
|
||||
/datum/gas/cymar = new/datum/tlv/dangerous,
|
||||
/datum/gas/halon = new/datum/tlv/dangerous,
|
||||
/datum/gas/sivana = new/datum/tlv/dangerous
|
||||
)
|
||||
|
||||
/obj/machinery/airalarm/server // No checks here.
|
||||
@@ -128,11 +128,11 @@
|
||||
/datum/gas/pluoxium = new/datum/tlv/no_checks,
|
||||
/datum/gas/freon = new/datum/tlv/no_checks,
|
||||
/datum/gas/hydrogen = new/datum/tlv/no_checks,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/delta_gas = new/datum/tlv/dangerous,
|
||||
/datum/gas/gamma_gas = new/datum/tlv/dangerous
|
||||
/datum/gas/raynar = new/datum/tlv/dangerous,
|
||||
/datum/gas/roinneil = new/datum/tlv/dangerous,
|
||||
/datum/gas/cymar = new/datum/tlv/dangerous,
|
||||
/datum/gas/halon = new/datum/tlv/dangerous,
|
||||
/datum/gas/sivana = new/datum/tlv/dangerous
|
||||
)
|
||||
|
||||
/obj/machinery/airalarm/kitchen_cold_room // Kitchen cold rooms start off at -80°C or 193.15°K.
|
||||
@@ -154,11 +154,11 @@
|
||||
/datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires
|
||||
/datum/gas/freon = new/datum/tlv/dangerous,
|
||||
/datum/gas/hydrogen = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/gas_x = new/datum/tlv/dangerous,
|
||||
/datum/gas/delta_gas = new/datum/tlv/dangerous,
|
||||
/datum/gas/gamma_gas = new/datum/tlv/dangerous
|
||||
/datum/gas/raynar = new/datum/tlv/dangerous,
|
||||
/datum/gas/roinneil = new/datum/tlv/dangerous,
|
||||
/datum/gas/cymar = new/datum/tlv/dangerous,
|
||||
/datum/gas/halon = new/datum/tlv/dangerous,
|
||||
/datum/gas/sivana = new/datum/tlv/dangerous
|
||||
)
|
||||
|
||||
/obj/machinery/airalarm/unlocked
|
||||
@@ -547,11 +547,11 @@
|
||||
/datum/gas/pluoxium,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/gas_x,
|
||||
/datum/gas/gas_y,
|
||||
/datum/gas/gas_z,
|
||||
/datum/gas/delta_gas,
|
||||
/datum/gas/gamma_gas,
|
||||
/datum/gas/raynar,
|
||||
/datum/gas/roinneil,
|
||||
/datum/gas/cymar,
|
||||
/datum/gas/halon,
|
||||
/datum/gas/sivana,
|
||||
),
|
||||
"scrubbing" = 1,
|
||||
"widenet" = 1
|
||||
|
||||
@@ -66,11 +66,11 @@
|
||||
"miasma" = /obj/machinery/portable_atmospherics/canister/miasma,
|
||||
"freon" = /obj/machinery/portable_atmospherics/canister/freon,
|
||||
"hydrogen" = /obj/machinery/portable_atmospherics/canister/hydrogen,
|
||||
"gas-x" = /obj/machinery/portable_atmospherics/canister/gas_x,
|
||||
"gas-y" = /obj/machinery/portable_atmospherics/canister/gas_y,
|
||||
"gas-z" = /obj/machinery/portable_atmospherics/canister/gas_z,
|
||||
"delta-gas" = /obj/machinery/portable_atmospherics/canister/delta_gas,
|
||||
"gamma-gas" = /obj/machinery/portable_atmospherics/canister/gamma_gas
|
||||
"raynar" = /obj/machinery/portable_atmospherics/canister/raynar,
|
||||
"roinneil" = /obj/machinery/portable_atmospherics/canister/roinneil,
|
||||
"cymar" = /obj/machinery/portable_atmospherics/canister/cymar,
|
||||
"halon" = /obj/machinery/portable_atmospherics/canister/halon,
|
||||
"gamma-gas" = /obj/machinery/portable_atmospherics/canister/sivana
|
||||
)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/interact(mob/user)
|
||||
@@ -200,44 +200,44 @@
|
||||
gas_type = /datum/gas/hydrogen
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/gas_x
|
||||
name = "gas_x canister"
|
||||
desc = "gas_x, highly flammable"
|
||||
icon_state = "gas_x"
|
||||
base_icon_state = "gas_x"
|
||||
gas_type = /datum/gas/gas_x
|
||||
/obj/machinery/portable_atmospherics/canister/raynar
|
||||
name = "raynar canister"
|
||||
desc = "Raynar, causes deep sleep"
|
||||
icon_state = "raynar"
|
||||
base_icon_state = "raynar"
|
||||
gas_type = /datum/gas/raynar
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/gas_y
|
||||
name = "gas_y canister"
|
||||
desc = "gas_y, highly flammable"
|
||||
icon_state = "gas_y"
|
||||
base_icon_state = "gas_y"
|
||||
gas_type = /datum/gas/gas_y
|
||||
/obj/machinery/portable_atmospherics/canister/roinneil
|
||||
name = "roinneil canister"
|
||||
desc = "Roinneil, uses high temperatures to have different reaction with various gases"
|
||||
icon_state = "roinneil"
|
||||
base_icon_state = "roinneil"
|
||||
gas_type = /datum/gas/roinneil
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/gas_z
|
||||
name = "gas_z canister"
|
||||
desc = "gas_z, highly flammable"
|
||||
icon_state = "gas_z"
|
||||
base_icon_state = "gas_z"
|
||||
gas_type = /datum/gas/gas_z
|
||||
/obj/machinery/portable_atmospherics/canister/cymar
|
||||
name = "cymar canister"
|
||||
desc = "Cymar, highly toxic"
|
||||
icon_state = "cymar"
|
||||
base_icon_state = "cymar"
|
||||
gas_type = /datum/gas/cymar
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/delta_gas
|
||||
name = "delta_gas canister"
|
||||
desc = "delta_gas, highly flammable"
|
||||
icon_state = "delta_gas"
|
||||
base_icon_state = "delta_gas"
|
||||
gas_type = /datum/gas/delta_gas
|
||||
/obj/machinery/portable_atmospherics/canister/halon
|
||||
name = "halon canister"
|
||||
desc = "Halon, remove oxigen from high temperature fires and cool down the area"
|
||||
icon_state = "halon"
|
||||
base_icon_state = "halon"
|
||||
gas_type = /datum/gas/halon
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/gamma_gas
|
||||
name = "gamma_gas canister"
|
||||
desc = "gamma_gas, highly flammable"
|
||||
icon_state = "gamma_gas"
|
||||
base_icon_state = "gamma_gas"
|
||||
gas_type = /datum/gas/gamma_gas
|
||||
/obj/machinery/portable_atmospherics/canister/sivana
|
||||
name = "sivana canister"
|
||||
desc = "sivana, highly flammable"
|
||||
icon_state = "sivana"
|
||||
base_icon_state = "sivana"
|
||||
gas_type = /datum/gas/sivana
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/fusion_test
|
||||
|
||||
@@ -24,11 +24,11 @@
|
||||
/datum/gas/water_vapor,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/gas_x,
|
||||
/datum/gas/gas_y,
|
||||
/datum/gas/gas_z,
|
||||
/datum/gas/delta_gas,
|
||||
/datum/gas/gamma_gas,
|
||||
/datum/gas/raynar,
|
||||
/datum/gas/roinneil,
|
||||
/datum/gas/cymar,
|
||||
/datum/gas/halon,
|
||||
/datum/gas/sivana,
|
||||
)
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/Destroy()
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
#define H2O_HEAT_PENALTY 8
|
||||
#define FREON_HEAT_PENALTY -10 //very good heat absorbtion and less plasma and o2 generation
|
||||
#define HYDROGEN_HEAT_PENALTY 10 // similar heat penalty as tritium (dangerous)
|
||||
#define GAS_X_HEAT_PENALTY 4
|
||||
#define GAS_Y_HEAT_PENALTY -3
|
||||
#define GAS_Z_HEAT_PENALTY 8
|
||||
#define RAYNAR_HEAT_PENALTY 4
|
||||
#define ROINNEIL_HEAT_PENALTY -3
|
||||
#define CYMAR_HEAT_PENALTY 8
|
||||
|
||||
//All of these get divided by 10-bzcomp * 5 before having 1 added and being multiplied with power to determine rads
|
||||
//Keep the negative values here above -10 and we won't get negative rads
|
||||
@@ -35,16 +35,16 @@
|
||||
#define PLUOXIUM_TRANSMIT_MODIFIER -5 //Should halve the power output
|
||||
#define H2O_TRANSMIT_MODIFIER 2
|
||||
#define HYDROGEN_TRANSMIT_MODIFIER 25 //increase the radiation emission, but less than the trit (2.5)
|
||||
#define GAS_X_TRANSMIT_MODIFIER 2.4
|
||||
#define GAS_Y_TRANSMIT_MODIFIER 15
|
||||
#define GAS_Z_TRANSMIT_MODIFIER 20
|
||||
#define RAYNAR_TRANSMIT_MODIFIER 2.4
|
||||
#define ROINNEIL_TRANSMIT_MODIFIER 15
|
||||
#define CYMAR_TRANSMIT_MODIFIER 20
|
||||
|
||||
#define BZ_RADIOACTIVITY_MODIFIER 5 //Improves the effect of transmit modifiers
|
||||
|
||||
#define N2O_HEAT_RESISTANCE 6 //Higher == Gas makes the crystal more resistant against heat damage.
|
||||
#define PLUOXIUM_HEAT_RESISTANCE 3
|
||||
#define HYDROGEN_HEAT_RESISTANCE 2 // just a bit of heat resistance to spice it up
|
||||
#define GAS_Y_HEAT_RESISTANCE 5
|
||||
#define ROINNEIL_HEAT_RESISTANCE 5
|
||||
|
||||
#define POWERLOSS_INHIBITION_GAS_THRESHOLD 0.20 //Higher == Higher percentage of inhibitor gas needed before the charge inertia chain reaction effect starts.
|
||||
#define POWERLOSS_INHIBITION_MOLE_THRESHOLD 20 //Higher == More moles of the gas are needed before the charge inertia chain reaction effect starts. //Scales powerloss inhibition down until this amount of moles is reached
|
||||
@@ -167,9 +167,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/datum/gas/bz,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/gas_x,
|
||||
/datum/gas/gas_y,
|
||||
/datum/gas/gas_z,
|
||||
/datum/gas/raynar,
|
||||
/datum/gas/roinneil,
|
||||
/datum/gas/cymar,
|
||||
)
|
||||
///The list of gases mapped against their current comp. We use this to calculate different values the supermatter uses, like power or heat resistance. It doesn't perfectly match the air around the sm, instead moving up at a rate determined by gas_change_rate per call. Ranges from 0 to 1
|
||||
var/list/gas_comp = list(
|
||||
@@ -184,9 +184,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/datum/gas/bz = 0,
|
||||
/datum/gas/freon = 0,
|
||||
/datum/gas/hydrogen = 0,
|
||||
/datum/gas/gas_x = 0,
|
||||
/datum/gas/gas_y = 0,
|
||||
/datum/gas/gas_z = 0,
|
||||
/datum/gas/raynar = 0,
|
||||
/datum/gas/roinneil = 0,
|
||||
/datum/gas/cymar = 0,
|
||||
)
|
||||
///The list of gases mapped against their transmit values. We use it to determine the effect different gases have on radiation
|
||||
var/list/gas_trans = list(
|
||||
@@ -197,9 +197,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/datum/gas/tritium = TRITIUM_TRANSMIT_MODIFIER,
|
||||
/datum/gas/bz = BZ_TRANSMIT_MODIFIER,
|
||||
/datum/gas/hydrogen = HYDROGEN_TRANSMIT_MODIFIER,
|
||||
/datum/gas/gas_x = GAS_X_TRANSMIT_MODIFIER,
|
||||
/datum/gas/gas_y = GAS_Y_TRANSMIT_MODIFIER,
|
||||
/datum/gas/gas_z = GAS_Z_TRANSMIT_MODIFIER,
|
||||
/datum/gas/raynar = RAYNAR_TRANSMIT_MODIFIER,
|
||||
/datum/gas/roinneil = ROINNEIL_TRANSMIT_MODIFIER,
|
||||
/datum/gas/cymar = CYMAR_TRANSMIT_MODIFIER,
|
||||
)
|
||||
///The list of gases mapped against their heat penaltys. We use it to determin molar and heat output
|
||||
var/list/gas_heat = list(
|
||||
@@ -213,16 +213,16 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/datum/gas/bz = BZ_HEAT_PENALTY,
|
||||
/datum/gas/freon = FREON_HEAT_PENALTY,
|
||||
/datum/gas/hydrogen = HYDROGEN_HEAT_PENALTY,
|
||||
/datum/gas/gas_x = GAS_X_HEAT_PENALTY,
|
||||
/datum/gas/gas_y = GAS_Y_HEAT_PENALTY,
|
||||
/datum/gas/gas_z = GAS_Z_HEAT_PENALTY,
|
||||
/datum/gas/raynar = RAYNAR_HEAT_PENALTY,
|
||||
/datum/gas/roinneil = ROINNEIL_HEAT_PENALTY,
|
||||
/datum/gas/cymar = CYMAR_HEAT_PENALTY,
|
||||
)
|
||||
///The list of gases mapped against their heat resistance. We use it to moderate heat damage.
|
||||
var/list/gas_resist = list(
|
||||
/datum/gas/nitrous_oxide = N2O_HEAT_RESISTANCE,
|
||||
/datum/gas/pluoxium = PLUOXIUM_HEAT_RESISTANCE,
|
||||
/datum/gas/hydrogen = HYDROGEN_HEAT_RESISTANCE,
|
||||
/datum/gas/gas_y = GAS_Y_HEAT_RESISTANCE,
|
||||
/datum/gas/roinneil = ROINNEIL_HEAT_RESISTANCE,
|
||||
)
|
||||
///The list of gases mapped against their powermix ratio
|
||||
var/list/gas_powermix = list(
|
||||
@@ -236,9 +236,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/datum/gas/bz = 1,
|
||||
/datum/gas/freon = -1,
|
||||
/datum/gas/hydrogen = 1,
|
||||
/datum/gas/gas_x = 1,
|
||||
/datum/gas/gas_y = 1,
|
||||
/datum/gas/gas_z = 1,
|
||||
/datum/gas/raynar = 1,
|
||||
/datum/gas/roinneil = 1,
|
||||
/datum/gas/cymar = 1,
|
||||
)
|
||||
///The last air sample's total molar count, will always be above or equal to 0
|
||||
var/combined_gas = 0
|
||||
@@ -655,7 +655,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
//(1 + (tritRad + pluoxDampen * bzDampen * o2Rad * plasmaRad / (10 - bzrads))) * freonbonus
|
||||
radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-(gas_comp[/datum/gas/bz] * BZ_RADIOACTIVITY_MODIFIER)))) * freonbonus))// RadModBZ(500%)
|
||||
|
||||
if(prob(gas_comp[/datum/gas/gas_z]))
|
||||
if(prob(gas_comp[/datum/gas/cymar]))
|
||||
playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
|
||||
supermatter_zap(src, 6, clamp(power*2, 4000, 20000), ZAP_MOB_STUN)
|
||||
|
||||
|
||||
@@ -111,11 +111,11 @@
|
||||
/datum/gas/stimulum,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hypernoblium,
|
||||
/datum/gas/gas_x,
|
||||
/datum/gas/gas_y,
|
||||
/datum/gas/gas_z,
|
||||
/datum/gas/delta_gas,
|
||||
/datum/gas/gamma_gas
|
||||
/datum/gas/raynar,
|
||||
/datum/gas/roinneil,
|
||||
/datum/gas/cymar,
|
||||
/datum/gas/halon,
|
||||
/datum/gas/sivana
|
||||
)
|
||||
|
||||
//Partial pressures in our breath
|
||||
@@ -331,33 +331,33 @@
|
||||
|
||||
breath_gases[/datum/gas/freon][MOLES]-=gas_breathed
|
||||
|
||||
// Gas X
|
||||
var/gas_x_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/gas_x][MOLES])
|
||||
if(gas_x_pp > 0.01)
|
||||
// Raynar
|
||||
var/raynar_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/raynar][MOLES])
|
||||
if(raynar_pp > 0.01)
|
||||
H.Unconscious(200)
|
||||
H.Sleeping(200)
|
||||
H.adjustOxyLoss(-5)
|
||||
H.adjustFireLoss(-7)
|
||||
H.adjustToxLoss(-7)
|
||||
H.adjustBruteLoss(-10)
|
||||
gas_breathed = breath_gases[/datum/gas/gas_x][MOLES]
|
||||
breath_gases[/datum/gas/gas_x][MOLES]-=gas_breathed
|
||||
gas_breathed = breath_gases[/datum/gas/raynar][MOLES]
|
||||
breath_gases[/datum/gas/raynar][MOLES]-=gas_breathed
|
||||
|
||||
// Gas Y
|
||||
// Roinneil
|
||||
// Inert
|
||||
// Gas Z
|
||||
var/gas_z_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/gas_z][MOLES])
|
||||
if(gas_z_pp > 0.1)
|
||||
// Cymar
|
||||
var/cymar_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/cymar][MOLES])
|
||||
if(cymar_pp > 0.1)
|
||||
H.adjustBruteLoss(25)
|
||||
H.adjustOxyLoss(5)
|
||||
H.adjustFireLoss(8)
|
||||
H.adjustToxLoss(8)
|
||||
gas_breathed = breath_gases[/datum/gas/gas_z][MOLES]
|
||||
breath_gases[/datum/gas/gas_z][MOLES]-=gas_breathed
|
||||
gas_breathed = breath_gases[/datum/gas/cymar][MOLES]
|
||||
breath_gases[/datum/gas/cymar][MOLES]-=gas_breathed
|
||||
|
||||
// Delta Gas
|
||||
// Halon
|
||||
|
||||
// Gamma Gas
|
||||
// Sivana
|
||||
|
||||
// Stimulum
|
||||
gas_breathed = breath_gases[/datum/gas/stimulum][MOLES]
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Reference in New Issue
Block a user