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

Fixes free chemsplosion reagent purging by replacing it with the same thing but dangerous #83195

Conversation

Metekillot
Copy link
Contributor

@Metekillot Metekillot commented May 11, 2024

About The Pull Request

#83168

From the above, it became clear to me that the penthrite combinations were likely never going to happen, because that requires the cooperation of miners, who are a notoriously fickle and treasure hungry lot. So instead, I reworked the methods that you can purge with reagent explosions.

If you pair an explosion of at least 1 power in someone's bloodstream with omnizine and any of the purging reagents, it purges the chems from their blood. So omnizine, calomel, and 20u each of potassium and water will purge their blood in exchange for a hefty bit of damage and some slight delimbing.

Penthrite + atropine and penthrite + epinephrine explosions will still clear your blood, too. I kept that in to prevent miner penstacking and, if somehow medbay gets hold of the chem combinations, for simple chemsplosion blood purging.

You can also force people to vomit by causing an explosion of at least 1 power in their stomach, but that only purges everything in their stomach. This interaction doesn't require omnizine and a purging reagent.

Why It's Good For The Game

Chemsplosion purging in its current state is a longstanding bug that's been left implemented because blood filtering is otherwise boring and takes a long time. This makes it exciting and very quick but it will also fucking kill somebody if you're not careful.

Changelog

Unilateral blood purging with pseudo explosions has been replaced with blood purging explosions via pairing a minimum explosive power of 1 with omnizine and a purging reagent. You can also purge blood with penthrite + epinephrine and penthrite + atropine, though the latter will very likely gib the purged person in question.

🆑 Bisar
balance: Replaced the free reagent purging with actually purging by exploding someone in the blood while they have omnizine and a purgative in their bloodstream. Let's go practice medicine!
fix: Fixed the free reagent purging mechanic from causing an explosion so weak that it doesn't cause any damage.
/:cl:

@xXPawnStarrXx
Copy link
Contributor

You understand that miners won't co-operate, yet what makes you so sure that the botanists would too. I forsee medical literally relying on donk pockets as the only reliable source of omnizine.

@DaCoolBoss
Copy link
Contributor

You understand that miners won't co-operate, yet what makes you so sure that the botanists would too. I forsee medical literally relying on donk pockets as the only reliable source of omnizine.

Donk pockets can be made in kitchen or bought at cargo so I don't see the problem here.

@Dorsisdwarf
Copy link
Contributor

You understand that miners won't co-operate, yet what makes you so sure that the botanists would too.

Botanists are less likely to be dead, are available to hassle in person because they hang out working on station, and are used to taking grow requests instead of playing ss13's singleplayer shooter mode.

@Metekillot
Copy link
Contributor Author

You understand that miners won't co-operate, yet what makes you so sure that the botanists would too. I forsee medical literally relying on donk pockets as the only reliable source of omnizine.

Could you explain at further length what the problem is? Donk pockets are easy to make if it comes down to that. You only need to have 1 unit.

@Higgin
Copy link
Contributor

Higgin commented May 12, 2024

at that point just filter or use calomel or pent in med

if multiver counts, still plenty accessible for purging outside of med

good change

@Deadgebert
Copy link
Contributor

Deadgebert commented May 12, 2024

This has the same problems with the last PR with an additional issue.

  • Current alternatives to chem purge do not work with the current speed of the game. They're too slow. There's nothing you can do to speed it up by 'getting better' at the job. Allergies/scrubber backflow/bees/foam apply very large amounts of chemicals into a body, requiring you to sit there for 3 minutes blood filtering.
  • Tying chem purge to a chemical that chemistry cannot normally access is basically removing it from the game. You shouldn't add a reliance on chemistry rushing their way to the nearest package of donks so they can chem purge later
  • The 'explosive' part kind of sucks and will push people away from using it. You can't reliably use it on yourself unless you have someone else there to treat you.
  • You've severely over complicated the reaction, making it harder to discover and putting it further in the category of 'secret club knowledge'.

@Sadboysuss
Copy link
Contributor

This is much better than what was before, but I think the omnizine should be left out of the reaction, calomel, and potassium water reaction seems good enough.

@xXPawnStarrXx
Copy link
Contributor

Could you explain at further length what the problem is? Donk pockets are easy to make if it comes down to that. You only need to have 1 unit.

The problem is the reliance on another department for the solution, I agree it should be stubborn to deal with. A chemical like pentetic acid could be used instead, so it's available in department but isn't instantly available. You could have a round where the botanists are completely useless or just refuse to help what so ever.

@DaydreamIQ
Copy link
Contributor

The entire reason people rely on this method is cause nobody wants to bother wasting 15 minutes filtering the blood of the dumbass who chugged 2000u of beer five times in a row.

@Metekillot
Copy link
Contributor Author

Metekillot commented May 12, 2024

This is much better than what was before, but I think the omnizine should be left out of the reaction, calomel, and potassium water reaction seems good enough.

Omnizine is not difficult to get. You only need to have it present for the reaction.

EDIT: you can dilute Omnizine and use it for multiple reactions. That's intended here. The work of diluting it or of getting more of it are both meant to be valid strategies to do this purging technique. The reagent combinations are meant to make the process more involved; I'm not trying to make a bottleneck to the availability of this with omnizine supply.

0.1 or 0.01 units of Omnizine satisfy the requirements; peep the code.

Could you explain at further length what the problem is? Donk pockets are easy to make if it comes down to that. You only need to have 1 unit.

The problem is the reliance on another department for the solution, I agree it should be stubborn to deal with. A chemical like pentetic acid could be used instead, so it's available in department but isn't instantly available. You could have a round where the botanists are completely useless or just refuse to help what so ever.

You need to rely on other departments sometimes. That's how this game works.

@sneksnek
Copy link

Omnizine and calomel are trivial to acquire. The former is obtainable through donkpockets in medbay (toss them in the blender) and calomel is simple to produce. Attaining the necessary chemicals isn't an issue.

This PR is an improvement over the former but I still view water and potassium purging as not a concern.

Viewing this from the lens of countering chemical antagonism (poisoning and the like), lower volumes of chemicals can be treated with multiver. While water and potassium would still be superior, it is likely that multiver is sufficient. Mixes that confer immediate harmful effects that could render multiver ineffective for countering would likely not be affected by water and potassium purging. There could be a case for larger volumes of chemicals, like quantities that are transferred into victims through foam, smoke, or bees, since multiver may not purge fast enough for it to be an effective countermeasure. This would mean that water and potassium has an advantage over multiver, but counters for those circumstances already exist (wearing internals or using insulative gear like a modsuit). Water and potassium would be more accessible than modsuits which can present an issue, but I do not know if that is a common issue. If it is, then this change has merit.

In the context of medbay application, you could consider water and potassium to be overused since it's superior to multiver in most circumstances. However, my opinion is that in cases of lower volumes, the time difference is not significant enough to warrant a change. The time difference in higher volumes is an argument for keeping water and potassium purging as is. Having patients 'modestly' explode could be reasoned as a fair trade since you may spend less time stitching them back up than filtering them. The idea places a bad idea in my mouth though because patients may panic over being exploded. The malpractice is too conspicuous.

As a final thing to consider, explosives in payload mixes will purge any other harmful chemicals in a patient's system. This can potentially work to their benefit if the resulting explosion does not completely annihilate, since the other toxins a person may have accrued would be purged. This can also reduce the workload for fixing up their body should they perish in one piece. With this change, the purge will not occur, so payloads can include toxins to finish victims if the explosive wasn't strong enough to outright kill them, or make the recovery process more arduous.

@Metekillot
Copy link
Contributor Author

Metekillot commented May 12, 2024

* The 'explosive' part kind of sucks and will push people away from using it. You can't reliably use it on yourself unless you have someone else there to treat you.

It's a fair trade-off to instantly invalidate the work of whatever antagonist or vicious circumstance has caused you to be filled with so many chems that safer, slower purging isn't practical.

* You've severely over complicated the reaction, making it harder to discover and putting it further in the category of 'secret club knowledge'.

We can document it on the wiki.

snipping @sneksnek reply for length

Would you be able to summarize your concerns or support points?

@sneksnek
Copy link

Sorry, I can be needlessly verbose. Let me make it concise:

Currently, water potassium purging is a more accessible means of countering large volume foam/smoke chem grenades. Modsuits and internals exist to do so, but the aforementioned purge is more accessible than modsuits if distributed. Adding a detrimental cost to the purge is good in this case, but I am unsure how common of an issue this is in reality.

Currently in medbay application, water potassium purging only makes a significant difference in time investment with large volume purging. Multiver and other means currently purge lower volumes at a reasonable rate. Changing the purge to damage the patient can be reasoned as a fair trade for time, but I dislike the concept of actually blowing patients up. It may cause patients/bystanders to panic or believe they are being maliciously harmed.

The change may have some side effects concerning payload dynamics. An explosion in a victim resultant from foam or smoke would purge any harmful chemicals along with it. A victim could possibly survive if the explosion was weak enough, or at the very least, revival would take less time. This could indirectly buff some payloads since harmful chemicals persist. Removing the additional reagents necessary may be a solution to this, but keeping the minimum explosive strength.

@Metekillot
Copy link
Contributor Author

Metekillot commented May 13, 2024

Currently, water potassium purging is a more accessible means of countering large volume foam/smoke chem grenades. Modsuits and internals exist to do so, but the aforementioned purge is more accessible than modsuits if distributed. Adding a detrimental cost to the purge is good in this case, but I am unsure how common of an issue this is in reality.

Your concern is that you don't know how often potwater purging happens; currently, it can be a 50/50 to walk into medbay to find a stack of 20ish patches that cause it.

Currently in medbay application, water potassium purging only makes a significant difference in time investment with large volume purging. Multiver and other means currently purge lower volumes at a reasonable rate. Changing the purge to damage the patient can be reasoned as a fair trade for time, but I dislike the concept of actually blowing patients up. It may cause patients/bystanders to panic or believe they are being maliciously harmed.

Yes, I can see how that would confuse people. That sounds like a good opportunity for chaos, confusion, and engaging gameplay.

The change may have some side effects concerning payload dynamics. An explosion in a victim resultant from foam or smoke would purge any harmful chemicals along with it. A victim could possibly survive if the explosion was weak enough, or at the very least, revival would take less time. This could indirectly buff some payloads since harmful chemicals persist. Removing the additional reagents necessary may be a solution to this, but keeping the minimum explosive strength.

Your concern is that a chem mix that blows you up and poisons you would make it difficult to get you back to good health? I believe that would be the intent behind such a complicated chem mix.

@sneksnek
Copy link

sneksnek commented May 13, 2024

Currently, water potassium purging is a more accessible means of countering large volume foam/smoke chem grenades. Modsuits and internals exist to do so, but the aforementioned purge is more accessible than modsuits if distributed. Adding a detrimental cost to the purge is good in this case, but I am unsure how common of an issue this is in reality.

Your concern is that you don't know how often potwater purging happens; currently, it can be a 50/50 to walk into medbay to find a stack of 20ish patches that cause it.

Alright, that's fair enough.

Currently in medbay application, water potassium purging only makes a significant difference in time investment with large volume purging. Multiver and other means currently purge lower volumes at a reasonable rate. Changing the purge to damage the patient can be reasoned as a fair trade for time, but I dislike the concept of actually blowing patients up. It may cause patients/bystanders to panic or believe they are being maliciously harmed.

Yes, I can see how that would confuse people. That sounds like a good opportunity for chaos, confusion, and engaging gameplay.

I will disagree on this part, since I don't personally view getting shoved around by obstinate spacemen to be that thrilling. But this is subjective point.

The change may have some side effects concerning payload dynamics. An explosion in a victim resultant from foam or smoke would purge any harmful chemicals along with it. A victim could possibly survive if the explosion was weak enough, or at the very least, revival would take less time. This could indirectly buff some payloads since harmful chemicals persist. Removing the additional reagents necessary may be a solution to this, but keeping the minimum explosive strength.

Your concern is that a chem mix that blows you up and poisons you would make it difficult to get you back to good health? I believe that would be the intent behind such a complicated chem mix.

My point is that this change enables something new. Currently, if a foam/smoke grenade injects a large volume of poison into a victim, the person who threw the grenade would have to be careful to not add a weak bodily explosion to the mix. This is because the explosion would purge the victim of chemicals, just like the water potassium purge. With the change, the grenadier could add an explosion to the foam/smoke mix without concern for it possibly purging the victim.

@projectkepler-ru
Copy link
Contributor

this is still not a good idea and it wouldn't be a fix, it'd be a balance changes. I do not appreciate you getting a GBP boost from something that fundamentally affect how medical plays around dealing with a lot of chem at once. Because as it stands

Omnizine, as common as it is (with certain source) is simply too much dependencies on people.
While at time, we dont realy have to worry bcuz a person isn't always expected to be revivable

im saying this kinda ass.

Copy link
Contributor

This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself

@github-actions github-actions bot added the Stale Even the uncaring universe rejects you, why even go on label May 23, 2024
Copy link
Contributor

@Jacquerel Jacquerel left a comment

Choose a reason for hiding this comment

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

Triple slashes are for proc/variable documenting comments, don't use them inside of a proc or you'll really confuse the autodoc and intellisense.

code/modules/reagents/chemistry/recipes.dm Outdated Show resolved Hide resolved
code/modules/reagents/chemistry/recipes.dm Outdated Show resolved Hide resolved
code/modules/reagents/chemistry/recipes/pyrotechnics.dm Outdated Show resolved Hide resolved
code/modules/reagents/chemistry/recipes/pyrotechnics.dm Outdated Show resolved Hide resolved
code/modules/reagents/chemistry/recipes.dm Show resolved Hide resolved
code/modules/reagents/chemistry/recipes.dm Outdated Show resolved Hide resolved
code/modules/reagents/chemistry/recipes.dm Outdated Show resolved Hide resolved
@Jacquerel Jacquerel removed the Stale Even the uncaring universe rejects you, why even go on label May 23, 2024
@MrMelbert
Copy link
Contributor

MrMelbert commented May 23, 2024

for anyone curious this line of code dates back to at least 12 years ago, post r4407 pregithub. we have no way to tell what the actual purpose of it is (whether it's an intended balance knob or some hacky fix to stopping explosion-a-geddon). my hunch is it's the latter

@Metekillot
Copy link
Contributor Author

I need to update or check something in my VScode because it screwed half the review suggestions I committed and didn't add the coauthor information. I'll fix that in a moment.

@Metekillot Metekillot force-pushed the potwater-replacement-with-zanier-shenanigans branch from 89003fd to ffc5961 Compare May 25, 2024 16:53
@tgstation-server tgstation-server removed the Test Merge Candidate You're our unpaid test team label May 25, 2024
@Metekillot
Copy link
Contributor Author

@jlsnow301 When you have a moment could you re-eval the test-merge validity? I knocked it off with a code suggestion force push. Also I haven't a clue how to add co-author info through the VScode plugins.

@MrMelbert MrMelbert added the 📌 Test Merge Candidate This version will not be removed by actions when the PR is updated label May 25, 2024
Copy link
Contributor

github-actions bot commented May 29, 2024

This pull request was test merged in 94 round(s).

Round list

manuel

Copy link
Member

@Maurukas Maurukas left a comment

Choose a reason for hiding this comment

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

As with the previous PR, this is not a bug. This is intentional.

However: The code does not appear to work in game.

I built this PR tonight with the intent of demonstrating the infinite chemical explosion warned about. After several failed attempts, I realized that chemicals are still full purging as they normally are. This doesn't appear to change anything when compiled and run.

@Metekillot
Copy link
Contributor Author

As with the previous PR, this is not a bug. This is intentional.

However: The code does not appear to work in game.

I built this PR tonight with the intent of demonstrating the infinite chemical explosion warned about. After several failed attempts, I realized that chemicals are still full purging as they normally are. This doesn't appear to change anything when compiled and run.

You are correct. I was trying to call an early return after purging a mob's reagents to prevent fall through; I should have been calling the early return in a mob's if clause if they didn't have the clause to clear reagents. I changed it to do the correct thing.

Copy link
Contributor

github-actions bot commented Jun 8, 2024

This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself

@github-actions github-actions bot added the Stale Even the uncaring universe rejects you, why even go on label Jun 8, 2024
…potwater-replacement-with-zanier-shenanigans
@ZephyrTFA ZephyrTFA removed the Stale Even the uncaring universe rejects you, why even go on label Jun 8, 2024
@ZephyrTFA ZephyrTFA self-assigned this Jun 8, 2024
@Jacquerel
Copy link
Contributor

@Metekillot was this every testmerged and also functional?

@ZephyrTFA
Copy link
Contributor

@Metekillot was this every testmerged and also functional?

haha no, I havent had the time to oversee a test merge

@Metekillot
Copy link
Contributor Author

@Metekillot was this every testmerged and also functional?

Testmerge: no

Functional: yes

Infinite explosion even though you didn't ask: could only manage multiple explosions in the edge case of one reactant in stomach trickling into blood that has other reactant in it, but you die and stop digesting after 2-3

@Jacquerel
Copy link
Contributor

well get it testmerged again and then if that is successful over a few rounds I will merge it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Balance Changes to functionality that modifies how effective certain methods are at powergaming Fix Rewrites a bug so it appears in different circumstances 📌 Test Merge Candidate This version will not be removed by actions when the PR is updated
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet