BeeStation / BeeStation-Hornet

99.95% station. 0.05% bees
https://beestation13.com
GNU Affero General Public License v3.0
200 stars 682 forks source link

Nanite active program conversion, rebalancing & additions #11827

Open PowerfulBacon opened 2 weeks ago

PowerfulBacon commented 2 weeks ago

Depends on https://github.com/BeeStation/BeeStation-Hornet/pull/11760

About The Pull Request

Program (New) Duration /s Cooldown /s Changes/Notes
Basic Healing 40 120 Heals 20 damage per-activation
Advanced Healing Removed
Mindshield Nanites Removed (Unused)
Temperature Regulation 120 60
Brain Heal 20 120 Heals 20 brain damage per-activation
Defib - - Completely expends the nanites in the host's body
Dermal Hardening 20 120 Resistance increased to 35 for bullet, reduced to 15 for melee, makes the skin black
Dermal Refractive Surface 20 120 Resistance increased to 35, makes the skin blue
Coagulation 60 60 Prevents bleeding the same way syndicate nanites do
Conductive 20 120
Armblade 30 30
Nanite Tomb 60 120 Prevents hard-crit and death, but not soft-crit
Bleeding Sensor Triggered when the host is bleeding
Pressure Sensor Allows sensors to detect certain pressures in the environment
Nerve Support 30 120 Makes the user completely immune to stuns.
Mechanical Repair Removed, nanites are for organics and exist in the blood/cells.
Blood Purification 20 120 Heals 20 toxin damage and removes up to 20 of all reagents in the body.

Why It's Good For The Game

Nanites are hard to balance by use rate, so let's balance them with a well known and easy to understand metric instead, time.

Testing Photographs and Procedure

![image](https://github.com/user-attachments/assets/041e8365-3f83-44c8-93a9-d8f70ceb492f) ![image](https://github.com/user-attachments/assets/5b91da41-6229-4dca-8fea-ffae5f49b957) ![image](https://github.com/user-attachments/assets/520652da-a964-4e2e-82d8-8efd706ce961) ![image](https://github.com/user-attachments/assets/65482f5b-a2f2-4c64-b373-d86c22bbe988) ![image](https://github.com/user-attachments/assets/242ee1a9-a5cb-4948-8725-fc80d977d4c5) ![image](https://github.com/user-attachments/assets/4ace57be-0e88-4048-8456-4bf69310e4b3) ![image](https://github.com/user-attachments/assets/d3afc676-c62f-4e4b-b3ed-92d0615fc933) ![image](https://github.com/user-attachments/assets/d406f380-1f7b-4608-9cef-ffd1bf5dfaef) ![image](https://github.com/user-attachments/assets/207820a8-51bf-4dbb-a9be-d9e8c6b9b885) ![image](https://github.com/user-attachments/assets/c43d3d5a-ae4d-4282-9835-37c85fe3b606) ![image](https://github.com/user-attachments/assets/668bdaf0-8209-45ae-9e3e-15eb4f20f217) Forced speech sensor ![image](https://github.com/user-attachments/assets/8c95c744-f370-4dba-90b6-783ea0f14618) ![image](https://github.com/user-attachments/assets/e1264b69-3aca-4468-8100-4b6c9c46c4b1)

Changelog

:cl: add: Nanites now support active abilities, which last for a set amount of time before needing to cooldown (Instead of lasting until the nanites in the mob run out). tweak: Simplifies trigger nanites to make them easier to understand and work with. add: Adds nanite tomb, a nanite program which temporarilly prevents death. add: Adds bleeding sensor, a nanite program which detects if the user is currently bleeding. add: Adds pressure sensor, a nanite program for sensing the pressure. add: Continuous sensor nanites can now be set to send a code when they stop detecting the conditions. del: Removes advanced healing nanites. balance: Converts a large number of passive nanites into active nanites, which require triggering to activate and have a set duration and cooldown. /:cl:

github-actions[bot] commented 2 weeks ago

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

MarkusLarsson421 commented 2 weeks ago

I have a hunch that not all those 210 file changes are intended.

PowerfulBacon commented 2 weeks ago

Yea, merging the trait changes into my older branch broke it. Its an easy fix

Rukofamicom commented 2 weeks ago

Balance-wise these look much better, although this might be enough of a nerf that nanites largely stop being used. They're still worthwhile but they will rarely be single-handedly deciding battles now, which is a much better spot for them to be.

I'm not familiar enough with the all of the code touched to give a full approval this time though.

Fronsis commented 1 week ago

I'm unsure if you can check this and if it's related to this particular rework but i got hit by a random EMP nade(i was quite way from it though idk if it mattes the distance) while having the following programs installed:

Screenshot_78

After a minute where i only took like 1 or 2 ticks of 1-2 toxin damage i immediatly went FULL braindead with no previous brain damage, when they revived me my nanites were gone¿? but i continued receiving brain traumas(round two or three) and brain damage and i had to get them healed with brain surgery, eventually i got new nanites and they had to install a brain repair program and a final surgery fixed the issue.

Round was: 50599

PowerfulBacon commented 1 week ago

This seems to be intended, the happiness enhancer program decays into a brain decay program upon being EMPed which causes brain damage until its removed from the nanites.

The revival program now purges your nanites when it fires, hence the nanites being gone upon revival.

PowerfulBacon commented 1 week ago

Frozen pending https://github.com/BeeStation/BeeStation-Hornet/pull/11760

Lumiwrath commented 1 week ago

I don't believe this is a good direction for nanites to go in the long term, I believe this is a complete disconnect between the community and maintainers like with what happened to 'health analyzer redesign/nerf'.

I honestly believe the current use-rate balance is doing good enough, the main issue of the balance is in regards the addition of protocols for nanites increasing its total capacity and effective nanite regeneration rate.

PowerfulBacon commented 1 week ago

The reason I didn't go down the path of nanite use rate, replication rate and storage is because it would result in effectively making all nanites useless in order to compensate for some particular programs that are tainting all nanites. I would rather have nanites still be usable by players than to completely strip away their utility to the point of losing their value.

Rukofamicom commented 1 week ago

I would rather have nanites still be usable by players than to completely strip away their utility to the point of losing their value.

I'm not the most well-versed in nanites, but as I said in my previous post, this is such massive nerf they may not see much use afterward so you may have missed the mark if this was your goal.

I do think a substantial nerf is necessary and that this PR is an improvement over our current situation, but I also agree that tackling the consumption and replication rates of nanites would probably be a better solution overall.

It would also maintain a much less transparent system that is harder to learn, however.

PowerfulBacon commented 1 week ago

The main difference between cooldowns and bumping the use_rate, is that with this other nanite programs can still function after one program hits a cooldown. Solely balancing them based off of use_rate would mean that after the 30 seconds is up, you would have 0 nanites left in total and none of them would work at all, making them completely useless rather than just less powerful.

Rukofamicom commented 1 week ago

Correct me if I'm wrong but you can force nanites to turn off when they're low, letting them regenerate and reactivate later, very similar to making them work on a cooldown, but the cooldown is adjustable based on how much load you're putting into your nanites. Nanites with more functionality run out faster, and less functionality run out slower

Also even when that isn't set up, nanites going to zero just means you have to reload them for the next use-case - this isn't the same as making them useless.

While the current system is a lot less transparent, I think the depth of the system is better overall.

Lumiwrath commented 1 week ago

The reason I didn't go down the path of nanite use rate, replication rate and storage is because it would result in effectively making all nanites useless in order to compensate for some particular programs that are tainting all nanites.

That's the reason why we are able to add 'rules' to programs to have them be used in certain conditions leaving other programs room to still work when needed. That management is what makes the balance for veteran nanite users and beginners, with players learning how to be more efficient with their usage over time.

Like what was said before the current main issue with the balance is to do more with protocols.

Lumiwrath commented 1 week ago

I would rather have nanites still be usable by players than to completely strip away their utility to the point of losing their value.

So the main issue is the trigger cost of these things is trigger cost compared to usage-rate, its too aggressive to the point where it loses its value compared to use-rate where the player can control how far and much it can be used more accurately. The cooldown.

Please don't forget the research for the nanites were also made with the current nanites in mind. The research tier and cost will also need to be looked into for rebalancing for this pr.

With the current nanites its very easy to hit the 'program limit' making almost no room for more utility programs. This is with it being efficiently made using conditions for it to apply when required. With this PR it should look into doubling or even so far as potentially tripling the total amount of programs able to be added to a cloud id. With programs requiring triggers for it to be used, it will take up more program space than before.

MarkusLarsson421 commented 1 week ago

Limited experience, but it feels like making the programs active programs has next to no effect and is simply circumvented by using passive programs to call the active program automatically. Such as calling the active healing program when brute or burn is more than 5 using a passive sensor program.

Lumiwrath commented 1 week ago

With the potential trigger change, temperature sensor, damage sensor for brain health to make up for the lack of automation of detection

Fronsis commented 1 week ago

This seems to be intended, the happiness enhancer program decays into a brain decay program upon being EMPed which causes brain damage until its removed from the nanites.

The revival program now purges your nanites when it fires, hence the nanites being gone upon revival.

I strongly recommend you take a look at it yourself because from the moment i got EMP'd the only reason i realized something was wrong was because of the small change on the health-bar (didn't even go below green) until i dropped dead before reaching to Science it was only After i got revived that i started to take random brain traumas non-stop, also i didn't had revival nanites it was a normal defib from the doc, basically i had no way to tell i was getting brain damage until i randomly dropped dead.

github-actions[bot] commented 6 days ago

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