Skip to content
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

Merged
merged 38 commits into from Sep 10, 2020
Merged

Add 5 new gases, related interactions/items/content, changes parts of fusion #53013

merged 38 commits into from Sep 10, 2020

Conversation

Ghilker
Copy link
Contributor

@Ghilker Ghilker commented Aug 17, 2020

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

  • More Additions
  • Balancing
  • Docs
  • PR done

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:

@tgstation-server tgstation-server added Feature Exposes new bugs in interesting ways Sprites A bikeshed full of soulless bikes. Tweak labels Aug 17, 2020
@GuyonBroadway
Copy link
Contributor

You crazy madman, this is beautiful!

@Donkie
Copy link
Contributor

Donkie commented Aug 17, 2020

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.

@MrPerson
Copy link
Contributor

Yeah all the gasses and crystals are gonna get proper names. Suggestions are welcome

@GuyonBroadway
Copy link
Contributor

Well gas delta sounds a lot like halon so there's an idea.

@Tlaltecuhtli
Copy link
Contributor

how bad is explosive gas performance wise? trit was emp gas until it got changed cause flooding it was lagging server

@Ghilker
Copy link
Contributor Author

Ghilker commented Aug 17, 2020

Uh there is no explosive gas
edit: scratch that, now there is an explosive reaction, but i tested it extensively and is not hard on the performances

@CRITAWAKETS
Copy link
Contributor

Needs more gas uses besides "this stops fires!" because fires are almost always caused by atmospherics anyways

@LemonInTheDark
Copy link
Member

Glad you're back

@msgerbs
Copy link
Contributor

msgerbs commented Aug 18, 2020

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?

Needs more gas uses besides "this stops fires!" because fires are almost always caused by atmospherics anyways

Sounds to me like we need something else that burns besides plasma/tritium then!

@SpaceManiac SpaceManiac changed the title AHAH atmos goes BRRR (New gases, new items, new interactions, new content) Add 5 new gases, related interactions/items/content Aug 28, 2020
@LemonInTheDark LemonInTheDark changed the title Add 5 new gases, related interactions/items/content Add 5 new gases, related interactions/items/content, changes parts of fusion Aug 29, 2020
Copy link
Member

@LemonInTheDark LemonInTheDark left a 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

code/game/objects/items/grenades/atmos_grenades.dm Outdated Show resolved Hide resolved
code/game/objects/items/grenades/atmos_grenades.dm Outdated Show resolved Hide resolved
code/modules/atmospherics/gasmixtures/reactions.dm Outdated Show resolved Hide resolved
code/modules/atmospherics/gasmixtures/reactions.dm Outdated Show resolved Hide resolved
code/modules/atmospherics/gasmixtures/reactions.dm Outdated Show resolved Hide resolved
code/modules/atmospherics/gasmixtures/reactions.dm Outdated Show resolved Hide resolved
@Ghilker
Copy link
Contributor Author

Ghilker commented Aug 30, 2020

come on travis don't be an ass

@Doosteroni
Copy link

heh travass

@Doosteroni
Copy link

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?

@Ghilker
Copy link
Contributor Author

Ghilker commented Sep 3, 2020

@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.

Copy link
Member

@LemonInTheDark LemonInTheDark left a 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.

Comment on lines 821 to 822
"TEMP" = 150,
"MAX_TEMP" = 250
Copy link
Member

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?

Copy link
Member

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

Comment on lines +838 to +841
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)
Copy link
Member

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.

Copy link
Contributor Author

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

Comment on lines 853 to 854
"TEMP" = 150,
"MAX_TEMP" = 250
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above

Comment on lines 885 to 886
"TEMP" = 50,
"MAX_TEMP" = 100
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto

Copy link
Contributor Author

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)

Comment on lines 930 to 931
if(air.temperature >= 10000)
return NO_REACTION
Copy link
Member

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

Copy link
Contributor Author

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)
Copy link
Member

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.

Copy link
Member

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

Copy link
Contributor Author

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

spoopy

Comment on lines 1287 to 1288
"TEMP" = 260,
"MAX_TEMP" = 300
Copy link
Member

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?

Copy link
Contributor Author

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)
Copy link
Member

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?

Copy link
Contributor Author

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this needed?

Copy link
Contributor Author

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

@Ghilker
Copy link
Contributor Author

Ghilker commented Sep 4, 2020

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

@LemonInTheDark
Copy link
Member

Should be fine, I trust ghil to maintain this. If he doesn't I'll beat him up over chat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Atmospherics Nobody knows how this code works Feature Exposes new bugs in interesting ways Sprites A bikeshed full of soulless bikes.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet