mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 20:20:33 +01:00
[MIRROR] Add 5 new gases, related interactions/items/content, changes parts of fusion (#736)
* Merge pull request #53013 from Ghilker/reactions-go-BRRRR The scope of this PR is to add new and interesting stuff to the atmos crew and to bring more people to it both old and new. This PR adds 5 new gases, a bunch of reactions (i'm still working on this but suggestions are useful), new recipes and items to the atmosians arsenal. These gases have high utility for everyone, atmosians will find them useful to do their job both as firefighters and air maintenance. FINAL GAS NAMES (will change only if a maintainer ask about it) Healium Proto Nitrate Cyrion B Halon Hexane reactions avaiable in this PR: https://drive.google.com/file/d/1e6DZlBaKSCNdCADKnrH3F3aDWvl0iZr4/view What the PR add: -Healium: a red gas, stronger than n2o if breathed, with healing properties -Proto Nitrate: a green inert gas if breathed but with different reactions with various gases at high temperatures -Cyrion B: a black deadly gas if breathed that decompones very fast if exposed to N2 even at minimal amounts -Halon: a light blue gas that when used in a fire it will suck up the O2 and will help cool the room, helping fighting the fire -Hexane: a purple gas that has the ability to filter from the air plasma and n2o, useful to clean distro from the harmful gases quickly -Healium Crystal: a reddish crystal that when broken will explode cooling the room and removing the plasma from the air (act like a grenade) -Proto Nitrate Crystal: a greenish crystal that when broken will explode refilling a space with O2 and N2 -Cyrion B Crystal: a blackish crystal that when broken will explode dealing damage around it -Metallic hydrogen recipe addition (atmosian armor and fireaxe) -Statue of an elder atmosian (for bragging rights) -Supermatter Interactions -More gas interactions (Roinnel have multiple and different interactions) -New RPD device: the pressure valve, a device that allow gas flow in a pipenet if the input pressure is higher than the set pressure it's getting atomized -Fusion is a bit "easier" to start (minor changes to the math so that the instability is more reasonable) -pluox can be also made without using rads -cyrion-b bounty -all 5 gases can be sold to cargo More stuff needs to be added (like the SM interactions(added) and probably more reactions and breathe reactions) Please leave suggestions and feedbacks as it helps improve the PR Atmos desperately need more content and need to be proactive in the making of its tools, with this PR is a start to more atmos content 🆑 add: hydrogen + rads = trit add: 5 new gases add: Healium : made from Bz + Freon + cold, it knocks people down but have healing properties add: Proto Nitrate : made from pluox and H2 + heat, it has different reaction with a bunch of other gases add: Cyrion B : made from hypernoblium + stimulum around 0°C, it has heavy damage if breathed but is decomposed rapidly by N2 add: Halon : made from bz + trit + cold, it reacts with O2 at high temperature removing it and cooling the air, helping putting out fires add: Hexane : made from bz + H2 + cold, it reacts with plasma and n2o and removes them from the air mix, filtering them. tweak: stimulum no longer require plasma add: canister sprites, gas sprites add: crystal from gases formation and reaction add: new metallic hydrogen recipes add: elder atmosian statue add: supermatter interactions tweak: minor changes to fusion math to make it "easier" to start add : pluoxium can be also made without using rads (not removing the rad production one) (this also produces a minimal amount of h2) tweak: lowered hypernoblium min temperature of reaction tweak: metallic hydrogen production more common add: cyrion-b bounty add: all 5 gases are up to selling /🆑 * Add 5 new gases, related interactions/items/content, changes parts of fusion Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
This commit is contained in:
co-authored by
LemonInTheDark
parent
32592ec8e2
commit
5504cc9b36
@@ -448,12 +448,14 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache())
|
||||
var/datum/gas_reaction/reaction = r
|
||||
|
||||
var/list/min_reqs = reaction.min_requirements
|
||||
if((min_reqs["TEMP"] && temp < min_reqs["TEMP"]) \
|
||||
|| (min_reqs["ENER"] && ener < min_reqs["ENER"]))
|
||||
if( (min_reqs["TEMP"] && temp < min_reqs["TEMP"]) || \
|
||||
(min_reqs["ENER"] && ener < min_reqs["ENER"]) || \
|
||||
(min_reqs["MAX_TEMP"] && temp > min_reqs["MAX_TEMP"])
|
||||
)
|
||||
continue
|
||||
|
||||
for(var/id in min_reqs)
|
||||
if (id == "TEMP" || id == "ENER")
|
||||
if (id == "TEMP" || id == "ENER" || id == "MAX_TEMP")
|
||||
continue
|
||||
if(!cached_gases[id] || cached_gases[id][MOLES] < min_reqs[id])
|
||||
continue reaction_loop
|
||||
|
||||
@@ -170,6 +170,51 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
|
||||
dangerous = TRUE
|
||||
rarity = 700
|
||||
|
||||
/datum/gas/healium
|
||||
id = "healium"
|
||||
specific_heat = 10
|
||||
name = "Healium"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "healium"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/proto_nitrate
|
||||
id = "proto_nitrate"
|
||||
specific_heat = 30
|
||||
name = "Proto Nitrate"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "proto_nitrate"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/cyrion_b
|
||||
id = "cyrion_b"
|
||||
specific_heat = 350
|
||||
name = "Cyrion B"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "cyrion_b"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/halon
|
||||
id = "halon"
|
||||
specific_heat = 175
|
||||
name = "Halon"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "halon"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/datum/gas/hexane
|
||||
id = "hexane"
|
||||
specific_heat = 5
|
||||
name = "Hexane"
|
||||
dangerous = TRUE
|
||||
gas_overlay = "hexane"
|
||||
moles_visible = MOLES_GAS_VISIBLE
|
||||
rarity = 100
|
||||
|
||||
/obj/effect/overlay/gas
|
||||
icon = 'icons/effects/atmospherics.dmi'
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -101,7 +101,12 @@
|
||||
/datum/gas/nitryl = new/datum/tlv/dangerous,
|
||||
/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/hydrogen = new/datum/tlv/dangerous,
|
||||
/datum/gas/healium = new/datum/tlv/dangerous,
|
||||
/datum/gas/proto_nitrate = new/datum/tlv/dangerous,
|
||||
/datum/gas/cyrion_b = new/datum/tlv/dangerous,
|
||||
/datum/gas/halon = new/datum/tlv/dangerous,
|
||||
/datum/gas/hexane = new/datum/tlv/dangerous
|
||||
)
|
||||
|
||||
/obj/machinery/airalarm/server // No checks here.
|
||||
@@ -122,7 +127,12 @@
|
||||
/datum/gas/nitryl = new/datum/tlv/no_checks,
|
||||
/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/hydrogen = new/datum/tlv/no_checks,
|
||||
/datum/gas/healium = new/datum/tlv/dangerous,
|
||||
/datum/gas/proto_nitrate = new/datum/tlv/dangerous,
|
||||
/datum/gas/cyrion_b = new/datum/tlv/dangerous,
|
||||
/datum/gas/halon = new/datum/tlv/dangerous,
|
||||
/datum/gas/hexane = new/datum/tlv/dangerous
|
||||
)
|
||||
|
||||
/obj/machinery/airalarm/kitchen_cold_room // Kitchen cold rooms start off at -80°C or 193.15°K.
|
||||
@@ -143,7 +153,12 @@
|
||||
/datum/gas/nitryl = new/datum/tlv/dangerous,
|
||||
/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/hydrogen = new/datum/tlv/dangerous,
|
||||
/datum/gas/healium = new/datum/tlv/dangerous,
|
||||
/datum/gas/proto_nitrate = new/datum/tlv/dangerous,
|
||||
/datum/gas/cyrion_b = new/datum/tlv/dangerous,
|
||||
/datum/gas/halon = new/datum/tlv/dangerous,
|
||||
/datum/gas/hexane = new/datum/tlv/dangerous
|
||||
)
|
||||
|
||||
/obj/machinery/airalarm/unlocked
|
||||
@@ -531,7 +546,12 @@
|
||||
/datum/gas/stimulum,
|
||||
/datum/gas/pluoxium,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hydrogen
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/healium,
|
||||
/datum/gas/proto_nitrate,
|
||||
/datum/gas/cyrion_b,
|
||||
/datum/gas/halon,
|
||||
/datum/gas/hexane,
|
||||
),
|
||||
"scrubbing" = 1,
|
||||
"widenet" = 1
|
||||
|
||||
@@ -64,7 +64,12 @@
|
||||
"caution" = /obj/machinery/portable_atmospherics/canister,
|
||||
"miasma" = /obj/machinery/portable_atmospherics/canister/miasma,
|
||||
"freon" = /obj/machinery/portable_atmospherics/canister/freon,
|
||||
"hydrogen" = /obj/machinery/portable_atmospherics/canister/hydrogen
|
||||
"hydrogen" = /obj/machinery/portable_atmospherics/canister/hydrogen,
|
||||
"healium" = /obj/machinery/portable_atmospherics/canister/healium,
|
||||
"proto_nitrate" = /obj/machinery/portable_atmospherics/canister/proto_nitrate,
|
||||
"cyrion_b" = /obj/machinery/portable_atmospherics/canister/cyrion_b,
|
||||
"halon" = /obj/machinery/portable_atmospherics/canister/halon,
|
||||
"hexane" = /obj/machinery/portable_atmospherics/canister/hexane
|
||||
)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/interact(mob/user)
|
||||
@@ -80,28 +85,28 @@
|
||||
. += "<span class='notice'>This canister is [mode]. A sticker on its side says <b>MAX PRESSURE: [siunit(pressure_limit, "Pa", 0)]</b>.</span>"
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/nitrogen
|
||||
name = "n2 canister"
|
||||
name = "Nitrogen canister"
|
||||
desc = "Nitrogen gas. Reportedly useful for something."
|
||||
icon_state = "red"
|
||||
base_icon_state = "red"
|
||||
gas_type = /datum/gas/nitrogen
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen
|
||||
name = "o2 canister"
|
||||
name = "Oxygen canister"
|
||||
desc = "Oxygen. Necessary for human life."
|
||||
icon_state = "blue"
|
||||
base_icon_state = "blue"
|
||||
gas_type = /datum/gas/oxygen
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/carbon_dioxide
|
||||
name = "co2 canister"
|
||||
name = "Carbon dioxide canister"
|
||||
desc = "Carbon dioxide. What the fuck is carbon dioxide?"
|
||||
icon_state = "black"
|
||||
base_icon_state = "black"
|
||||
gas_type = /datum/gas/carbon_dioxide
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/toxins
|
||||
name = "plasma canister"
|
||||
name = "Plasma canister"
|
||||
desc = "Plasma gas. The reason YOU are here. Highly toxic."
|
||||
icon_state = "orange"
|
||||
base_icon_state = "orange"
|
||||
@@ -115,55 +120,55 @@
|
||||
gas_type = /datum/gas/bz
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/nitrous_oxide
|
||||
name = "n2o canister"
|
||||
name = "Nitrous oxide canister"
|
||||
desc = "Nitrous oxide gas. Known to cause drowsiness."
|
||||
icon_state = "redws"
|
||||
base_icon_state = "redws"
|
||||
gas_type = /datum/gas/nitrous_oxide
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/air
|
||||
name = "air canister"
|
||||
name = "Air canister"
|
||||
desc = "Pre-mixed air."
|
||||
icon_state = "grey"
|
||||
base_icon_state = "grey"
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/tritium
|
||||
name = "tritium canister"
|
||||
name = "Tritium canister"
|
||||
desc = "Tritium. Inhalation might cause irradiation."
|
||||
icon_state = "green"
|
||||
base_icon_state = "green"
|
||||
gas_type = /datum/gas/tritium
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/nob
|
||||
name = "hyper-noblium canister"
|
||||
name = "Hyper-noblium canister"
|
||||
desc = "Hyper-Noblium. More noble than all other gases."
|
||||
icon_state = "nob"
|
||||
base_icon_state = "nob"
|
||||
gas_type = /datum/gas/hypernoblium
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/nitryl
|
||||
name = "nitryl canister"
|
||||
name = "Nitryl canister"
|
||||
desc = "Nitryl gas. Feels great 'til the acid eats your lungs."
|
||||
icon_state = "brown"
|
||||
base_icon_state = "brown"
|
||||
gas_type = /datum/gas/nitryl
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/stimulum
|
||||
name = "stimulum canister"
|
||||
name = "Stimulum canister"
|
||||
desc = "Stimulum. High energy gas, high energy people."
|
||||
icon_state = "darkpurple"
|
||||
base_icon_state = "darkpurple"
|
||||
gas_type = /datum/gas/stimulum
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/pluoxium
|
||||
name = "pluoxium canister"
|
||||
name = "Pluoxium canister"
|
||||
desc = "Pluoxium. Like oxygen, but more bang for your buck."
|
||||
icon_state = "darkblue"
|
||||
base_icon_state = "darkblue"
|
||||
gas_type = /datum/gas/pluoxium
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/water_vapor
|
||||
name = "water vapor canister"
|
||||
name = "Water vapor canister"
|
||||
desc = "Water Vapor. We get it, you vape."
|
||||
icon_state = "water_vapor"
|
||||
base_icon_state = "water_vapor"
|
||||
@@ -171,7 +176,7 @@
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/miasma
|
||||
name = "miasma canister"
|
||||
name = "Miasma canister"
|
||||
desc = "Miasma. Makes you wish your nose were blocked."
|
||||
icon_state = "miasma"
|
||||
base_icon_state = "miasma"
|
||||
@@ -179,7 +184,7 @@
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/freon
|
||||
name = "freon canister"
|
||||
name = "Freon canister"
|
||||
desc = "Freon. Can absorb heat"
|
||||
icon_state = "freon"
|
||||
base_icon_state = "freon"
|
||||
@@ -187,13 +192,52 @@
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/hydrogen
|
||||
name = "hydrogen canister"
|
||||
name = "Hydrogen canister"
|
||||
desc = "Hydrogen, highly flammable"
|
||||
icon_state = "h2"
|
||||
base_icon_state = "h2"
|
||||
gas_type = /datum/gas/hydrogen
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/healium
|
||||
name = "Healium canister"
|
||||
desc = "Healium, causes deep sleep"
|
||||
icon_state = "healium"
|
||||
base_icon_state = "healium"
|
||||
gas_type = /datum/gas/healium
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/proto_nitrate
|
||||
name = "Proto Nitrate canister"
|
||||
desc = "Proto Nitrate, react differently with various gases"
|
||||
icon_state = "proto_nitrate"
|
||||
base_icon_state = "proto_nitrate"
|
||||
gas_type = /datum/gas/proto_nitrate
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/cyrion_b
|
||||
name = "Cyrion B canister"
|
||||
desc = "Cyrion B, highly toxic"
|
||||
icon_state = "cyrion_b"
|
||||
base_icon_state = "cyrion_b"
|
||||
gas_type = /datum/gas/cyrion_b
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/halon
|
||||
name = "Halon canister"
|
||||
desc = "Halon, remove oxygen 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/hexane
|
||||
name = "Hexane canister"
|
||||
desc = "hexane, highly flammable"
|
||||
icon_state = "hexane"
|
||||
base_icon_state = "hexane"
|
||||
gas_type = /datum/gas/hexane
|
||||
filled = 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/fusion_test
|
||||
name = "fusion test canister"
|
||||
@@ -207,7 +251,7 @@
|
||||
air_contents.gases[/datum/gas/hydrogen][MOLES] = 500
|
||||
air_contents.gases[/datum/gas/plasma][MOLES] = 500
|
||||
air_contents.gases[/datum/gas/tritium][MOLES] = 350
|
||||
air_contents.temperature = 15000
|
||||
air_contents.temperature = 10000
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/proc/get_time_left()
|
||||
if(timing)
|
||||
|
||||
@@ -24,6 +24,11 @@
|
||||
/datum/gas/water_vapor,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/healium,
|
||||
/datum/gas/proto_nitrate,
|
||||
/datum/gas/cyrion_b,
|
||||
/datum/gas/halon,
|
||||
/datum/gas/hexane,
|
||||
)
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/Destroy()
|
||||
|
||||
@@ -34,6 +34,12 @@
|
||||
description = "Our R&D department is working on the development of more efficient electrical batteries using hydrogen as a catalyst. Ship us a tank full of it. (20 Moles)"
|
||||
gas_type = /datum/gas/hydrogen
|
||||
|
||||
/datum/bounty/item/engineering/gas/cyrion_b_tank
|
||||
name = "Full Tank of Cyrion-B"
|
||||
description = "The main planet of \[REDACTED] has been chosen as testing grounds for the new weapon that uses the Cyrion-B gas. Ship us a tank full of it. (20 Moles)"
|
||||
reward = 10000
|
||||
gas_type = /datum/gas/cyrion_b
|
||||
|
||||
/datum/bounty/item/engineering/emitter
|
||||
name = "Emitter"
|
||||
description = "We think there may be a defect in your station's emitter designs, based on the sheer number of delaminations your sector seems to see. Ship us one of yours."
|
||||
|
||||
@@ -110,7 +110,20 @@
|
||||
var/obj/machinery/portable_atmospherics/canister/C = O
|
||||
var/worth = 10
|
||||
var/gases = C.air_contents.gases
|
||||
C.air_contents.assert_gases(/datum/gas/bz,/datum/gas/stimulum,/datum/gas/hypernoblium,/datum/gas/miasma,/datum/gas/tritium,/datum/gas/pluoxium,/datum/gas/freon,/datum/gas/hydrogen)
|
||||
C.air_contents.assert_gases(/datum/gas/bz,
|
||||
/datum/gas/stimulum,
|
||||
/datum/gas/hypernoblium,
|
||||
/datum/gas/miasma,
|
||||
/datum/gas/tritium,
|
||||
/datum/gas/pluoxium,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/healium,
|
||||
/datum/gas/proto_nitrate,
|
||||
/datum/gas/cyrion_b,
|
||||
/datum/gas/halon,
|
||||
/datum/gas/hexane
|
||||
)
|
||||
|
||||
worth += gases[/datum/gas/hypernoblium][MOLES]*1000
|
||||
worth += gases[/datum/gas/stimulum][MOLES]*100
|
||||
@@ -120,4 +133,9 @@
|
||||
worth += gases[/datum/gas/bz][MOLES]*4
|
||||
worth += gases[/datum/gas/miasma][MOLES]*2
|
||||
worth += gases[/datum/gas/hydrogen][MOLES]*1
|
||||
worth += gases[/datum/gas/healium][MOLES]*19
|
||||
worth += gases[/datum/gas/proto_nitrate][MOLES]*5
|
||||
worth += gases[/datum/gas/cyrion_b][MOLES]*1050
|
||||
worth += gases[/datum/gas/halon][MOLES]*9
|
||||
worth += gases[/datum/gas/hexane][MOLES]*6
|
||||
return worth
|
||||
|
||||
@@ -370,6 +370,16 @@
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF
|
||||
strip_delay = 80
|
||||
|
||||
/obj/item/clothing/head/helmet/elder_atmosian
|
||||
name = "Elder Atmosian Helmet"
|
||||
desc = "A superb helmet made with the thoughest and rarest materials avaiable to man."
|
||||
icon_state = "knight_greyscale"
|
||||
inhand_icon_state = "knight_greyscale"
|
||||
armor = list(MELEE = 15, BULLET = 10, LASER = 30, ENERGY = 30, BOMB = 10, BIO = 10, RAD = 20, FIRE = 65, ACID = 40, WOUND = 15)
|
||||
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
//monkey sentience caps
|
||||
|
||||
/obj/item/clothing/head/helmet/monkey_sentience
|
||||
|
||||
@@ -287,3 +287,14 @@
|
||||
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 50, RAD = 20, FIRE = -10, ACID = 50, WOUND = 10)
|
||||
|
||||
/obj/item/clothing/suit/armor/elder_atmosian
|
||||
name = "Elder Atmosian Armor"
|
||||
desc = "A superb armor made with the thoughest and rarest materials avaiable to man."
|
||||
icon_state = "knight_grey"
|
||||
inhand_icon_state = "knight_greyscale"
|
||||
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS//Can change color and add prefix
|
||||
armor = list(MELEE = 15, BULLET = 10, LASER = 30, ENERGY = 30, BOMB = 10, BIO = 10, RAD = 20, FIRE = 65, ACID = 40, WOUND = 15)
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
/datum/movespeed_modifier/reagent/freon
|
||||
multiplicative_slowdown = 1.6
|
||||
|
||||
/datum/movespeed_modifier/reagent/halon
|
||||
multiplicative_slowdown = 1.8
|
||||
|
||||
/datum/movespeed_modifier/reagent/lenturi
|
||||
multiplicative_slowdown = 1.5
|
||||
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
#define H2O_HEAT_PENALTY 12 //This'll get made slowly over time, I want my spice rock spicy god damnit
|
||||
#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 HEALIUM_HEAT_PENALTY 4
|
||||
#define PROTO_NITRATE_HEAT_PENALTY -3
|
||||
#define CYRION_B_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
|
||||
@@ -33,11 +35,15 @@
|
||||
#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 HEALIUM_TRANSMIT_MODIFIER 2.4
|
||||
#define PROTO_NITRATE_TRANSMIT_MODIFIER 15
|
||||
#define CYRION_B_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 HYDROGEN_HEAT_RESISTANCE 2 // just a bit of heat resistance to spice it up
|
||||
#define PROTO_NITRATE_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
|
||||
@@ -159,6 +165,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/datum/gas/bz,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hydrogen,
|
||||
/datum/gas/healium,
|
||||
/datum/gas/proto_nitrate,
|
||||
/datum/gas/cyrion_b,
|
||||
)
|
||||
///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(
|
||||
@@ -173,6 +182,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/healium = 0,
|
||||
/datum/gas/proto_nitrate = 0,
|
||||
/datum/gas/cyrion_b = 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(
|
||||
@@ -183,6 +195,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/healium = HEALIUM_TRANSMIT_MODIFIER,
|
||||
/datum/gas/proto_nitrate = PROTO_NITRATE_TRANSMIT_MODIFIER,
|
||||
/datum/gas/cyrion_b = CYRION_B_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(
|
||||
@@ -196,11 +211,15 @@ 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/healium = HEALIUM_HEAT_PENALTY,
|
||||
/datum/gas/proto_nitrate = PROTO_NITRATE_HEAT_PENALTY,
|
||||
/datum/gas/cyrion_b = CYRION_B_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/hydrogen = HYDROGEN_HEAT_RESISTANCE,
|
||||
/datum/gas/proto_nitrate = PROTO_NITRATE_HEAT_RESISTANCE,
|
||||
)
|
||||
///The list of gases mapped against their powermix ratio
|
||||
var/list/gas_powermix = list(
|
||||
@@ -214,6 +233,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/healium = 1,
|
||||
/datum/gas/proto_nitrate = 1,
|
||||
/datum/gas/cyrion_b = 1,
|
||||
)
|
||||
///The last air sample's total molar count, will always be above or equal to 0
|
||||
var/combined_gas = 0
|
||||
@@ -624,6 +646,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
if(prob(50))
|
||||
//(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/cyrion_b]))
|
||||
playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
|
||||
supermatter_zap(src, 6, clamp(power*2, 4000, 20000), ZAP_MOB_STUN)
|
||||
|
||||
if(gas_comp[/datum/gas/bz] >= 0.4 && prob(30 * gas_comp[/datum/gas/bz]))
|
||||
src.fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick
|
||||
|
||||
|
||||
@@ -1362,6 +1362,61 @@
|
||||
if(isplasmaman(L))
|
||||
REMOVE_TRAIT(L, TRAIT_NOFIRE, type)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/healium
|
||||
name = "Healium"
|
||||
description = "A Powerful sleeping agent with healing properties"
|
||||
reagent_state = GAS
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5
|
||||
color = "90560B"
|
||||
taste_description = "rubbery"
|
||||
|
||||
/datum/reagent/healium/on_mob_metabolize(mob/living/L)
|
||||
. = ..()
|
||||
ADD_TRAIT(L, TRAIT_KNOCKEDOUT, type)
|
||||
|
||||
/datum/reagent/healium/on_mob_end_metabolize(mob/living/L)
|
||||
REMOVE_TRAIT(L, TRAIT_KNOCKEDOUT, type)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/halon
|
||||
name = "Halon"
|
||||
description = "A firefighter gas that remove oxygen and cool down the area"
|
||||
reagent_state = GAS
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5
|
||||
color = "90560B"
|
||||
taste_description = "minty"
|
||||
|
||||
/datum/reagent/halon/on_mob_metabolize(mob/living/L)
|
||||
. = ..()
|
||||
L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/halon)
|
||||
ADD_TRAIT(L, TRAIT_RESISTHEAT, type)
|
||||
|
||||
/datum/reagent/halon/on_mob_end_metabolize(mob/living/L)
|
||||
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/halon)
|
||||
REMOVE_TRAIT(L, TRAIT_RESISTHEAT, type)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/hexane
|
||||
name = "Hexane"
|
||||
description = "A filtering gas, don't breathe it if you suffer from brain conditions"
|
||||
reagent_state = GAS
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5
|
||||
color = "90560B"
|
||||
taste_description = "fresh"
|
||||
|
||||
/datum/reagent/hexane/on_mob_metabolize(mob/living/L)
|
||||
. = ..()
|
||||
L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/halon)
|
||||
ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type)
|
||||
ADD_TRAIT(L, TRAIT_SIXTHSENSE, type)
|
||||
|
||||
/datum/reagent/hexane/on_mob_end_metabolize(mob/living/L)
|
||||
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/halon)
|
||||
REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type)
|
||||
REMOVE_TRAIT(L, TRAIT_SIXTHSENSE, type)
|
||||
return ..()
|
||||
|
||||
/////////////////////////Colorful Powder////////////////////////////
|
||||
//For colouring in /proc/mix_color_from_reagents
|
||||
|
||||
|
||||
@@ -99,7 +99,24 @@
|
||||
|
||||
var/list/breath_gases = breath.gases
|
||||
|
||||
breath.assert_gases(/datum/gas/oxygen, /datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitrogen, /datum/gas/tritium, /datum/gas/nitryl, /datum/gas/pluoxium, /datum/gas/stimulum, /datum/gas/freon, /datum/gas/hypernoblium)
|
||||
breath.assert_gases(/datum/gas/oxygen,
|
||||
/datum/gas/plasma,
|
||||
/datum/gas/carbon_dioxide,
|
||||
/datum/gas/nitrous_oxide,
|
||||
/datum/gas/bz,
|
||||
/datum/gas/nitrogen,
|
||||
/datum/gas/tritium,
|
||||
/datum/gas/nitryl,
|
||||
/datum/gas/pluoxium,
|
||||
/datum/gas/stimulum,
|
||||
/datum/gas/freon,
|
||||
/datum/gas/hypernoblium,
|
||||
/datum/gas/healium,
|
||||
/datum/gas/proto_nitrate,
|
||||
/datum/gas/cyrion_b,
|
||||
/datum/gas/halon,
|
||||
/datum/gas/hexane
|
||||
)
|
||||
|
||||
//Partial pressures in our breath
|
||||
var/O2_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/oxygen][MOLES])+(8*breath.get_breath_partial_pressure(breath_gases[/datum/gas/pluoxium][MOLES]))
|
||||
@@ -314,6 +331,47 @@
|
||||
|
||||
breath_gases[/datum/gas/freon][MOLES]-=gas_breathed
|
||||
|
||||
// Healium
|
||||
var/healium_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/healium][MOLES])
|
||||
if(healium_pp > gas_stimulation_min)
|
||||
var/existing = H.reagents.get_reagent_amount(/datum/reagent/healium)
|
||||
H.reagents.add_reagent(/datum/reagent/healium,max(0, 1 - existing))
|
||||
H.adjustOxyLoss(-5)
|
||||
H.adjustFireLoss(-7)
|
||||
H.adjustToxLoss(-7)
|
||||
H.adjustBruteLoss(-10)
|
||||
gas_breathed = breath_gases[/datum/gas/healium][MOLES]
|
||||
breath_gases[/datum/gas/healium][MOLES]-=gas_breathed
|
||||
|
||||
// Proto Nitrate
|
||||
// Inert
|
||||
// Cyrion B
|
||||
var/cyrion_b_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/cyrion_b][MOLES])
|
||||
if(cyrion_b_pp > gas_stimulation_min)
|
||||
H.adjustBruteLoss(25)
|
||||
H.adjustOxyLoss(5)
|
||||
H.adjustFireLoss(8)
|
||||
H.adjustToxLoss(8)
|
||||
gas_breathed = breath_gases[/datum/gas/cyrion_b][MOLES]
|
||||
breath_gases[/datum/gas/cyrion_b][MOLES]-=gas_breathed
|
||||
|
||||
// Halon
|
||||
var/halon_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/halon][MOLES])
|
||||
if(halon_pp > gas_stimulation_min)
|
||||
H.adjustOxyLoss(5)
|
||||
var/existing = H.reagents.get_reagent_amount(/datum/reagent/halon)
|
||||
H.reagents.add_reagent(/datum/reagent/halon,max(0, 1 - existing))
|
||||
gas_breathed = breath_gases[/datum/gas/halon][MOLES]
|
||||
breath_gases[/datum/gas/halon][MOLES]-=gas_breathed
|
||||
|
||||
// Hexane
|
||||
var/hexane_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/hexane][MOLES])
|
||||
if(hexane_pp > gas_stimulation_min)
|
||||
H.hallucination += 50
|
||||
H.reagents.add_reagent(/datum/reagent/hexane,5)
|
||||
if(prob(33))
|
||||
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
|
||||
|
||||
// Stimulum
|
||||
gas_breathed = breath_gases[/datum/gas/stimulum][MOLES]
|
||||
if (gas_breathed > gas_stimulation_min)
|
||||
|
||||
Reference in New Issue
Block a user