New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add 5 new gases, related interactions/items/content, changes parts of fusion #53013
Conversation
You crazy madman, this is beautiful! |
Very nice 👍 Would appreciate if they had more interesting names than X,Y,Z,Delta,Gamma. No other gases are named like that ingame so it feels out of place. |
Yeah all the gasses and crystals are gonna get proper names. Suggestions are welcome |
Well gas delta sounds a lot like halon so there's an idea. |
how bad is explosive gas performance wise? trit was emp gas until it got changed cause flooding it was lagging server |
Uh there is no explosive gas |
Needs more gas uses besides "this stops fires!" because fires are almost always caused by atmospherics anyways |
Glad you're back |
I really like this, but I feel like I spend half the round setting up a place to do gas shenanigans already. Can we get some additional space on all the maps that's set up for basic reactions?
Sounds to me like we need something else that burns besides plasma/tritium then! |
…supermatter interactions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lots of "why is this", not the most professional, my apologies.
I'll get the rest later, too tired to properly review it currently
come on travis don't be an ass |
heh travass |
Can you make it so fusion creates some of these gasses (if you haven't already) so it has a purpose besides pouring it into a canister and fusion flooding? |
@Doosteroni fusion changes will come on later times, currently fusion is midtier atmos that is required to do for the more advanced gases such as Cyrion B. Next step after this PR is to make fusion more end game oriented and add a specific reaction to create heat for heat based reactions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some comments about style, concerns over argument order, and a lot about the intended scaling of these reactions.
Optimizing the reaction should be interesting and challenging, and I want to make sure you're thinking about that. I get that atmos has a pretty high barrier to entry, but remember it's much easier for both you and the players to lower requirements then it is for you to raise them.
That's not to say moderation isn't a virtue here, but don't go too easy on em yeah?
Ah one other thing, you don't need to explain how to optimize the reactions, I just need to know you're thinking about it.
"TEMP" = 150, | ||
"MAX_TEMP" = 250 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like a kinda uninteresting set of requirements, I get the interest in making them easier to make, but could optimizing its production be made more engaging?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe scratch that, depends on the below
if(energy_used) | ||
var/new_heat_capacity = air.heat_capacity() | ||
if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) | ||
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity), TCMB) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the reaction exothermic or endothermic? If it produces heat this could be quite fun.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
energy_used = heat_efficency * 100
the reaction is exothermic, i could increase the multiplier to make it more engaging and maybe make the min and max temp closer toghether
"TEMP" = 150, | ||
"MAX_TEMP" = 250 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See above
"TEMP" = 50, | ||
"MAX_TEMP" = 100 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ditto
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i'll change this one to be the "easy" one that can be made at T0C but it has very high heat production that makes it hard to produce near max temp (i was thinking 300 K)
if(air.temperature >= 10000) | ||
return NO_REACTION |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like ya missed this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
f
if(cached_gases[/datum/gas/bz][MOLES] - consumed_amount < 0) | ||
return NO_REACTION | ||
if(cached_gases[/datum/gas/bz][MOLES] < 30) | ||
radiation_pulse(location, consumed_amount, 1, 1, 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the no contaminate on this one, at least for now, we'll see how strong it can get.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh and use FALSE/TRUE for these
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i'll use false/true on the last 2 numbers, the first is a range modifier
cached_gases[/datum/gas/bz][MOLES] -= consumed_amount | ||
else | ||
for(var/mob/living/carbon/L in location) | ||
L.hallucination += cached_gases[/datum/gas/bz][MOLES] * 0.5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
spoopy
"TEMP" = 260, | ||
"MAX_TEMP" = 300 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aren't freon fires cold?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
well yes, but this is not freon fire per sé, this is a reaction between proto nitrate, freon and o2 that will kickstart the fire without having to cool the 2 gases that's why its between 260 and 300 (but i think i'll do it like 270 and 310)
var/turf/open/location = isturf(holder) ? holder : null | ||
var max_power = min(5, cached_gases[/datum/gas/cyrion_b][MOLES]) | ||
cached_gases[/datum/gas/cyrion_b][MOLES] = 0 | ||
explosion(location, max_power * 0.55, max_power * 0.95, max_power * 1.25, max_power, max_power* 3) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the arg list for explosion
(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = TRUE, ignorecap = FALSE, flame_range = 0, silent = FALSE, smoke = FALSE)
or
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
you're giving 6 arguments, and giving the last one as if it's a scaling number, but it's the var that decides if this should be logged to the admins. What was intended here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oof i wanted to use the max_power *3 as flash_range, but it seems i added one too many, i'll fix it
explosion(location, max_power * 0.55, max_power * 0.95, max_power * 1.25, max_power, max_power* 3) | ||
return REACTING | ||
|
||
/datum/gas_reaction/pluox_formation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this needed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since i've added many recipes that uses pluox, i think there is a need of adding more ways to produce this kind of gas, expecially since in many rounds atmos techs don't have access to the SM (feasible farm of it but not in big amounts if we talk about short times) and the radiation produced by the incinerator while trit burning are not high enough to produce the gas fast and reliably, so i added this recipe to compensate that
Ok so i made changes to make gas reaction more interesting and challenging by tweaking parts about produced energy, min/max temperatures and exo/endo reactions. They could use more interesting math calculation for the produced amounts of gas but i'm no math savy and can only do simple and linear stuff. If you have ideas on math formulas or tweaks on the other features lemme know |
Should be fine, I trust ghil to maintain this. If he doesn't I'll beat him up over chat. |
About The Pull Request
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
Why It's Good For The Game
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
Changelog
🆑
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
/:cl: