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

Death Nettle changes #25253

Open
wants to merge 36 commits into
base: master
Choose a base branch
from

Conversation

ViceEmargo
Copy link

@ViceEmargo ViceEmargo commented Feb 15, 2024

This is my first PR, let's gooooo.

About the PR

A user must have Botanist's Leather Gloves equipped in order to pick up this feisty plant, or you'll face its stinging wrath.
An unprepared user will be stung, taking heat and caustic damage, with a small chance to get stunned from the pain.
Death Nettle is now able to pierce hard suits.
Death Nettle will also "wilt" after 5 uses.

Why / Balance

Death Nettle is a very powerful tool which Botany must cooperate with Chemistry and Cargo in order to obtain.
Being a melee weapon with a relatively high base damage (8 heat, 8 caustic, totaling 16), as well as being a chemical injector capable of injecting 5u of reagent to a target per swing, a single Death Nettle can be a powerful weapon.
Once a botanist has groomed a Death Nettle into an incredible weapon, it could then be mass produced and distributed to the station in response of Nuclear Operatives or other major station threats.

This PR gives Death Nettle restrictions in exchange for being a powerful melee weapon and chemical injector.
Gloves are a fairly limited resource, generally only being found in Botanist's lockers, and they are not available in any vending machine.
If the player is not wearing these gloves specifically, they will take a minor amount of heat damage and caustic damage, with a small chance of being temporarily paralyzed.

Technical details

Expands the DamageOnInteract system and component to allow stunning (paralyzing) a user who takes damage when interacting with an entity with the DamageOnInteract component.
Also includes the option to add a delay on when a user can interact with an object with this component, primarily to stop spam clicking.
Also adds the ability to throw the object in a random direction if the entity is not being pulled. (Due to throwing not currently being predicted, this caused the entity to spastically jostle around)

DN-090824.mp4

Media

  • I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

🆑

  • add: Botanist's leather gloves must be equipped in order to pickup Death Nettle.
  • add: Death Nettle will damage, and a chance to stun, a user without Botanist's leather gloves.
  • tweak: Death Nettle can pierce hardsuits and inject 5 units of reagent.
  • add: Death Nettle will "wilt" after 5 uses.
  • tweak: Fly Amanita Spores contain less amatoxin.

@github-actions github-actions bot added the Status: Needs Review This PR requires new reviews before it can be merged. label Feb 15, 2024
@Sirionaut
Copy link
Contributor

5 damage seems a bit low if you don't use leather gloves, so low it heals on it own?(not sure where the threshold is).

I would say it should deal the same damage types as the nettles, so burn and caustic, and make it scale with potency. picking it up without gloves should be almost as bad as getting hit with it.

regarding the code, people will suggest to fix the whitespaces and probably take a look at this #21113

@Hmeister-real
Copy link
Contributor

5 damage seems a bit low if you don't use leather gloves, so low it heals on it own?(not sure where the threshold is).

I would say it should deal the same damage types as the nettles, so burn and caustic, and make it scale with potency. picking it up without gloves should be almost as bad as getting hit with it.

I think it should inject 1/4 of what a hit would do + 5 burn, since your not hitting yourself with it your just trying to hold it.

@Kadeo64
Copy link
Contributor

Kadeo64 commented Feb 15, 2024

botany should not be arming the masses with deathnettle, they should be arming the masses with gatfruits like the harvest gods intended

@Arendian
Copy link
Contributor

Arendian commented Feb 15, 2024

I still think the injection amount should be lower than it originally was. If you swab amatoxin to it, it can crit someone in two hits: 6u of amatoxin * 12 damage = 72 poison per hit regardless of the armor they're wearing + 7.5 heat and 7.5 caustic for a total of 89 damage!! per hit on unarmored targets.

At an injection rate of 1.5 per hit instead of 6 it's still a very respectable 33 damage per hit on unarmored targets (1.5 * 12 = 18 poison from the amatoxin + 7.5 caustic + 7.5 heat = 33), which is 4 hits to crit someone. It will also make the deathnettle empty in 8 hits instead of 3 while keeping it's total damage potential the same but spread out over more hits, allowing you to crit two people(4 hits per person) with 1 deathnettle before it's empty.

This damage per hit is a tiny bit higher than the damage of an energy sword(15 heat + 15 slash), and I think deathnettles should at best be equal to one of those.

To summarize: with a few extremely rare weapons as an exception(throngler) there is not a single other melee weapon that comes even remotely close to the damage ratio of a deathnettle that injects 6u per hit. Even Energy swords need 4 hits to crit an unarmored target, more if the target is armored, and those cost 8 tc and are extremely loud, while deatnettles are basically free and pretty quiet. So I think the injection rate should be set to 1.5 instead of 6 to lower the damage per hit on unarmored targets to 33 instead of the current 89.

@ViceEmargo
Copy link
Author

5 damage seems a bit low if you don't use leather gloves, so low it heals on it own?(not sure where the threshold is).

I would say it should deal the same damage types as the nettles, so burn and caustic, and make it scale with potency. picking it up without gloves should be almost as bad as getting hit with it.

regarding the code, people will suggest to fix the whitespaces and probably take a look at this #21113

I have made some changes to remove some whitespace, and changed OnHandPickUp based on this feedback.
I am not sure how all of it worked, but it seems like it condenses arguments passed into methods which is good enough for me to know right now.
I have also increased damage, and split damage amongst heat and caustic.
I'm not sure of any other plant mechanic besides how much reagent is inside a plant that is affected by Potency, so I don't really feel like being the trendsetter on starting that with damage scaling based on potency.

@ViceEmargo
Copy link
Author

I still think the injection amount should be lower than it originally was. If you swab amatoxin to it, it can crit someone in two hits: 6u of amatoxin * 12 damage = 72 poison per hit regardless of the armor they're wearing + 7.5 heat and 7.5 caustic for a total of 89 damage!! per hit on unarmored targets.

At an injection rate of 1.5 per hit instead of 6 it's still a very respectable 33 damage per hit on unarmored targets (1.5 * 12 = 18 poison from the amatoxin + 7.5 caustic + 7.5 heat = 33), which is 4 hits to crit someone. It will also make the deathnettle empty in 8 hits instead of 3 while keeping it's total damage potential the same but spread out over more hits, allowing you to crit two people(4 hits per person) with 1 deathnettle before it's empty.

This damage per hit is a tiny bit higher than the damage of an energy sword(15 heat + 15 slash), and I think deathnettles should at best be equal to one of those.

To summarize: with a few extremely rare weapons as an exception(throngler) there is not a single other melee weapon that comes even remotely close to the damage ratio of a deathnettle that injects 6u per hit. Even Energy swords need 4 hits to crit an unarmored target, more if the target is armored, and those cost 8 tc and are extremely loud, while deatnettles are basically free and pretty quiet. So I think the injection rate should be set to 1.5 instead of 6 to lower the damage per hit on unarmored targets to 33 instead of the current 89.

I think half or more of complaints about Death Nettle are really about Amatoxin.
I agree that putting amatoxin in death nettle in its current state is incredibly strong, but I don't believe changes to Death Nettle should be made simply due to what amatoxin is capable of making it.
That being said, after my experience making this PR, I would like to look into balancing Amatoxin itself.
I'd like to go into more detail when I look into it making a PR for it, but my thoughts right now are that there should be less Amatoxin in Amanita, (currently with 50 potency, you can get 13 amatoxin. I think closer to 6 or 8 would alleviate the power it can give to death nettle), and make Amatoxin (as well as other poisons to be honest) a slower metabolism rate.

@UbaserB
Copy link
Member

UbaserB commented Feb 19, 2024

yeess i always wanted the requirement of wearing special gloves to use

@PolterTzi
Copy link
Contributor

I do think it would be fitting for both nettles to inject you with a bit of their reagents if handled improperly (without gloves). Maybe do let people use them without gloves, just at the cost of getting injected themselves each time they put it in their hands or attack.
But not sure if it's enough to justify reverting the nerfs.

@ViceEmargo
Copy link
Author

@Partmedia Is it okay that I mention you to review this PR since you seem to be involved in Botany with your PR?

@github-actions github-actions bot added the Merge Conflict This PR currently has conflicts that need to be addressed. label Feb 21, 2024
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@Partmedia
Copy link
Contributor

That's fine, yes, though I need to get up to speed on the death nettle discussion. Can you please link me to relevant discussions about this on Discord or from other PR's?

I skimmed your PR, and there are some code issues that we need to address, but we can worry about those once we conceptually agree how to go forward from here.

@Anzarot121
Copy link
Contributor

That's fine, yes, though I need to get up to speed on the death nettle discussion. Can you please link me to relevant discussions about this on Discord or from other PR's?

I skimmed your PR, and there are some code issues that we need to address, but we can worry about those once we conceptually agree how to go forward from here.

There are discussions here, here and here.
#25029
#25177
#25068
By the way, I must inform you that the PR of the second link essentially makes it so that at 100 potency, nettle contains only 3 histamines.
And also, author, add to the text of the PR that it solves the issue to which I provided a link.

@ViceEmargo
Copy link
Author

ViceEmargo commented Feb 22, 2024

That's fine, yes, though I need to get up to speed on the death nettle discussion. Can you please link me to relevant discussions about this on Discord or from other PR's?

I skimmed your PR, and there are some code issues that we need to address, but we can worry about those once we conceptually agree how to go forward from here.

Thank you very much. As well as some of the github discussions that Anzarot121 shared, here is a discussion thread on the Discord that is relevant. Although, this discord thread became quite bloated, and has a lot to read.

https://discord.com/channels/310555209753690112/1204095027836624956 - "Death nettles need some reeling in."

This discussion might be related as well, as I wanted to bring up that poisons might need a checkup, but that is for another PR.
https://discord.com/channels/310555209753690112/1208134860800139396 - "The Problem with Poisons"

I am totally happy to accept any code criticism to improve the flow and adhere to accepted standards.

@ViceEmargo ViceEmargo marked this pull request as draft February 22, 2024 23:41
Content.Server/Botany/Components/ThornImmuneComponent.cs Outdated Show resolved Hide resolved
Content.Server/Botany/Components/ThornyImmuneComponent.cs Outdated Show resolved Hide resolved
Content.Server/Botany/Systems/ThornySystem.cs Outdated Show resolved Hide resolved
Content.Server/Botany/Systems/ThornySystem.cs Outdated Show resolved Hide resolved
Content.Server/Botany/Systems/ThornySystem.cs Outdated Show resolved Hide resolved
@Partmedia Partmedia added Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged. and removed Status: Needs Review This PR requires new reviews before it can be merged. labels Apr 10, 2024
@github-actions github-actions bot added the No C# For things that don't need code. label Sep 4, 2024
@slarticodefast
Copy link
Member

Is this ready for re-review now?
Looks much simple now that it is using DamageOnInteract

@ViceEmargo
Copy link
Author

ViceEmargo commented Sep 5, 2024

Is this ready for re-review now? Looks much simple now that it is using DamageOnInteract

No, I think I should survey the code again, and see if I can add more flavor to this, after I've changed to DamageOnInteract. I'm still concerned about adding throwing physics, as to the client, when they picked up the nettle and failed, the nettle would keep snapping to the player, then throwing.

@slarticodefast
Copy link
Member

Since throwing is not predicted the sudden "snapping" part might be unavoidable at the moment. An alternative idea you could try out instead of picking up and then throwing the item would be to cancel the pickup and throw the item from where it was lying. This might potentially be visually more appealing.

@ViceEmargo
Copy link
Author

Since throwing is not predicted the sudden "snapping" part might be unavoidable at the moment. An alternative idea you could try out instead of picking up and then throwing the item would be to cancel the pickup and throw the item from where it was lying. This might potentially be visually more appealing.

Yeah, I did try that too, perhaps I'll try to re-add that.
I also JUST took a peak at SS13 botany to get some more ideas, and I just found out they actually have this exact feature I wanted of nettles and botanist's gloves. Apparently the nettle also had a chance to stun the user if they failed to pick it up.....and the nettle had a mechanic of wilting away with every use....I think I might look into implementing features like those if I can muster the gumption.

@ViceEmargo
Copy link
Author

Thank you for all the assistance and guidance.
This PR is ready for Re-Review

@slarticodefast slarticodefast added Status: Needs Review This PR requires new reviews before it can be merged. and removed No C# For things that don't need code. Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged. labels Sep 9, 2024
@ViceEmargo ViceEmargo changed the title Death nettle nerf reversion and added restriction Death Nettle changes Sep 17, 2024
@slarticodefast slarticodefast added the Undergoing Maintainer Discussion This PR is currently going through an internal discussion by the maintainer team. label Sep 19, 2024
@SlamBamActionman
Copy link
Member

Hello! I've taken the time to go through this PR with how stuff works in master and such, and this is my feedback:

As has been observed, amatoxin is a lynchpin when it comes to balancing nettles. The non-penetration of the normal nettles has made it basically dead when it comes to antag work, despite the potential to deal 55 damage per nettle/swing.

Making the death nettle able to penetrate armor is a suitable upgrade to make it distinct. However, that also makes it necessary to be much more careful when balancing it. As-is, I think this PR makes the death nettle waaaay too strong for pretty much anything, either for crew or antags. It's already very strong in its basic form, but combining that with amatoxin (even at only 50% content) is really scary (you can two-hit SecOffs with a 50% amatoxin yield, and almost two-hit a bloodred).

I think making it comparable to an e-sword if properly upgraded is a suitable place to put it. For that, I propose making it into a 2u injector instead. This is less than the nettle but that is offset by the fact it's armor penetrating.

This results in the following damages:

Base damage: 16 (8 heat, 8 caustic)
2u injection: 20 (16 + 2 + 2)
2u w/ 50% poison: 33 (16 + 15 + 2)
2u w/ 100% poison: 46 (16 + 30)

Sec Hardsuit:
Nothing inside: 13 (8 heat, 5 caustic)
2u injection: 17 (13 + 2 + 2)
2u w/ 50% poison: 30 (13 + 15 + 2)
2u w/ 100% poison: 43 (13 + 30)

Nukie:
Nothing inside: 8 (4 heat, 4 caustic)
2u injection: 12 (8 + 2 + 2)
2u w/ 50% poison: 25 (8 + 15 + 2)
2u w/ 100% poison: 38 (8 + 30)

This means that a botanist who is going through the effort of growing a death nettle and perfecting it to a near 100% amatoxin potency will come out on top against an e-sword, saving 8 TC and gaining other benefits such as being far less obvious. It will still be a good weapon against nukies if the poison is somewhat refined, but it's offset by being a melee weapon and difficulty to access.

And if you don't refine it? A 20 per hit weapon against unarmored targets for just a bit of mutating is a perfectly fine result.

@ViceEmargo
Copy link
Author

Hello! I've taken the time to go through this PR with how stuff works in master and such, and this is my feedback:

As has been observed, amatoxin is a lynchpin when it comes to balancing nettles. The non-penetration of the normal nettles has made it basically dead when it comes to antag work, despite the potential to deal 55 damage per nettle/swing.

Making the death nettle able to penetrate armor is a suitable upgrade to make it distinct. However, that also makes it necessary to be much more careful when balancing it. As-is, I think this PR makes the death nettle waaaay too strong for pretty much anything, either for crew or antags. It's already very strong in its basic form, but combining that with amatoxin (even at only 50% content) is really scary (you can two-hit SecOffs with a 50% amatoxin yield, and almost two-hit a bloodred).

I think making it comparable to an e-sword if properly upgraded is a suitable place to put it. For that, I propose making it into a 2u injector instead. This is less than the nettle but that is offset by the fact it's armor penetrating.

This results in the following damages:

Base damage: 16 (8 heat, 8 caustic)
2u injection: 20 (16 + 2 + 2)
2u w/ 50% poison: 33 (16 + 15 + 2)
2u w/ 100% poison: 46 (16 + 30)

Sec Hardsuit:
Nothing inside: 13 (8 heat, 5 caustic)
2u injection: 17 (13 + 2 + 2)
2u w/ 50% poison: 30 (13 + 15 + 2)
2u w/ 100% poison: 43 (13 + 30)

Nukie:
Nothing inside: 8 (4 heat, 4 caustic)
2u injection: 12 (8 + 2 + 2)
2u w/ 50% poison: 25 (8 + 15 + 2)
2u w/ 100% poison: 38 (8 + 30)

This means that a botanist who is going through the effort of growing a death nettle and perfecting it to a near 100% amatoxin potency will come out on top against an e-sword, saving 8 TC and gaining other benefits such as being far less obvious. It will still be a good weapon against nukies if the poison is somewhat refined, but it's offset by being a melee weapon and difficulty to access.

And if you don't refine it? A 20 per hit weapon against unarmored targets for just a bit of mutating is a perfectly fine result.

Hello,
Thank you very much for this information.
I am aware of the unholy alliance between Death Nettles and amanita shrooms.
Perhaps I should have included this relevant information when creating this PR long ago.
Amatoxin used to deal slightly less damage per unit at the time of creating this PR, although faster.

I would like to balance Death Nettle itself based on its default circumstances, as it includes Sulfuric Acid and Fluorosulfuric acid.
Death Nettle in this PR only gets 5 swings before it it destroyed. All 5 swings will just put a person in a Security Hardsuit into crit, do about 80 damage to a person in a Blood-red hardsuit, and crit a person not wearing any armor in 4 hits.

I recognize that amatoxin is wildly superior to the acids in damage to unit,

1u of Fluorosulfuric acid is 2.6 Caustic damage basically immediately
1u of Surfuric Acid is 1.6 Caustic damage basically immediately
A 50 potency Death Nettle will contain 9.33 of sulfuric acid, and 9.33 of fluorosurfuric acid.
The sum total damage of these injected reagents is roughly 40 Caustic damage.

A 50 potency Fly Amanita Spore contains 13 amatoxin.
If you swab this into Death Nettle, this 13 amatoxin will give you a damage potential of 195 Poison damage (holy smokes, eh?)

Regardless if the Death Nettle injects 2u or 5u, this damage potential is scary.
Death Nettle is not a loud weapon, and is frankly a silent killer (ignore the screams of your enemies as their blood is eroded by highly potent acids!)

I was hoping to work on this PR first, but Fly Amanita Spores are my primary target for change next.
A 50 potency Fly Amanita Spore can round remove anyone who happens to snack on one. (Given the circumstances that someone eats a shroom, and when they enter crit, they are injected with an airloss medication)
I'm hoping to both reduce the metabolism rate for amatoxin, lower the damage per tick, and severely reduce the amount of amatoxin contained within a single shroom.
The power of amatoxin swabbed into Death Nettle lies in that 50 Potency. 13 amatoxin is a lot.
I'd like to change that down to somewhere between 3 and 5 at 50 potency.
In amatoxin's current state, if a 50 potency fly amanita spore were swabbed into Death Nettle, that would only give a potential damage of 75 Poison damage, still a lot, but much more reasonable.

TL;DR,
I don't want to punish Death Nettle for the great sin of Fly Amanita Spores.
Instead, I would like to tackle Fly Amanita Spores in a separate, but very necessary PR.
As this was my first PR, I was hesitant to open any other PRs, as this is very much a learning experience on the workflow.

@SlamBamActionman
Copy link
Member

SlamBamActionman commented Nov 9, 2024

Since Death Nettle and Amatoxin are so heavily intwined I brought it up in the maintainer discussion;

Independent of the Death Nettle we feel the Amatoxin itself is in a pretty good place; it's already slower than other toxins so it's not a great stealth kill poison, so with its potency it fills a niche as a great WarOps spear enhancer or to send someone to medbay to be looted/further injected.

The fact that the Amanita spores can have such high reagent amount is where we found issues, and where we think a nerf is appropriate. Were the death nettles to be nerfed to 2u injection & 5 hits it is unreasonable that a basic 50% potency amanita fills that entire use (13.5u).

After discussing it we feel a nerf to the reagent amount is warranted, since that can affect how it's used in nettles but doesn't impact its use elsewhere much. The suggested amount was a max of 10u amatoxin at 100% potency; that'll leave 5u at 50%, so while it is still a strong combo at that potency it is no longer as sustainable. It'll let experienced botanists try to tinker for a perfect 100% potency nettle which will give all five hits full impact, which rewards the time investment and risk of getting caught (since both death nettles and amanita spores are highly suspicious to grow). We're open to nerfing it further in the future, but this felt like a good starting value.

Considering the relationship nettles and amatoxin has, I think it's preferable if the nerf is included in this PR. It's just a single value change of the max reagent amount from 25 to 10 after all.

@ViceEmargo
Copy link
Author

Honestly, it is nigh impossible to reach 100 potency. It is already difficult just to get 50 potency without destroying a plant because the kudzu and death gene they can contract are so easy to roll. 50 potency is where stuff like this showed primarily be balanced, as it is easily obtainable.
I've adjusted the values (seeds.yml) so that Fly Amanita Spores will contain 5.16 amatoxin (and 3.5 nutriment) at 50 potency, and 9.33 amatoxin at 100 potency.
I've adjusted the entity itself (spawned from the entity menu) as well.

@UbaserB
Copy link
Member

UbaserB commented Nov 11, 2024

kudzu and death gene they can contract are so easy to roll.

Just wanted to point out, with enough chems basically anything is possible.. since there's phalanx which removes the death gene, sedin which removes the seedless gene, alongside healing chems like ammonia/dylo/etc. Sure, its relatively hard to get but I feel like getting to a high amount of potency isn't actually all that difficult.

@ViceEmargo
Copy link
Author

Maybe I'm just a cynical botanist, but it can be hard to acquire those chemicals from the Chemistry staff.
I've personally never even seen Sedin (although, I have never asked for it.)
The highest potency I've gotten is about 58, and the highest I've seen from someone else was somewhere in the mid 70s.

Also, updated my branch to latest upstream seemed to fix the build issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Needs Review This PR requires new reviews before it can be merged. Undergoing Maintainer Discussion This PR is currently going through an internal discussion by the maintainer team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.