new gas names!

This commit is contained in:
Ghilke
2020-08-20 13:00:16 +02:00
parent fac58a2a78
commit 98b68e004a
13 changed files with 273 additions and 278 deletions
+3 -3
View File
@@ -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
+1 -8
View File
@@ -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
+128 -128
View File
@@ -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)
+20 -20
View File
@@ -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()
+24 -24
View File
@@ -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)
+18 -18
View File
@@ -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