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 bleed resistance to monsters #49546

Merged
merged 13 commits into from Jul 7, 2021
Merged

Conversation

Venera3
Copy link
Contributor

@Venera3 Venera3 commented Jul 3, 2021

Summary

Features "Add monster bleed resistance"

Purpose of change

Bleeding is currently applied to all fleshy monsters in the same (damage-dependent, slightly randomized) amount, this allows for plinking down even supposedly-armored targets with ease provided the player has the means to do any damage to them while running away. Late-game, highly evolved zombies being bothered by blood loss also isn't very true to them supposedly being bioengineered by an eldritch god on the fly (spoiler alert).
Implements #49243.

Describe the solution

Move make_bleed to Creature, reroute all hardcoded ways of adding bleed to monsters through it.
Add a new monster property bleed_rate, a percentage-based modifier on the applied bleeding effect's duration and hence intensity and making the monster completely immune to bleeding on 0.

TODO:

  • Actually change the monsters

Describe alternatives you've considered

Hook it up to bleed's damage dealing step, but a mob showing Heavy Arterial Bleeding in its info and drawing a red streak everywhere while not getting damaged at all looked very weird.
Add an option to load it from species, but I couldn't figure out a neat way of filtering for "only overwrite this field if the main monster definition didn't include it", much less how to handle mixed-species monsters in a clean way.
Add a similar effect/mutation field to the player, but there's already an unutilized-in-vanilla mutation field for bleed resist (though at a glance it might be a bit broken), and effect code scares me.

Testing

Monsters still get bled by cutting/stabbing/bullet damage, the effect's duration is modified according to their bleed_rate, intensity scaling works as before. Bleed immune monsters don't show the effect or trails.

Additional context

I dream of having a dynamic system for JSON-declaring resistances to arbitrary effects, but this will have to do for the moment.

Planned monster bleed rates:

  • Boring normal animals stay at the current rate,
  • Day 1 zombies start at the default 100%,
  • "Mid-range" zombies (evolved once, roughly) go down to 50%,
  • High-level zombies (skellyjuggs, hulks, masters) become immune to bleeding altogether,
  • Mi-Go get a scaling bleed rate reduction from 75% for base mi-go to 25% for the myrmidons - biotech is kinda their thing,
  • Later variants of mutated critters / giant bugs get a slight reduction to counteract the player's damage output - around 60%, tops
  • Slimes and fleshy nether creatures get ~50%-25% on account of them not really having to make sense from a boring "biology" perspective,
  • Mycus become completely immune to bleeding
  • Triffids might also get a reduction, but here I'll defer to @Mom-Bun since they volunteered to work on them in the future

@anothersimulacrum anothersimulacrum added <Enhancement / Feature> New features, or enhancements on existing [C++] Changes (can be) made in C++. Previously named `Code` Mechanics: Effects / Skills / Stats Effects / Skills / Stats Monsters Monsters both friendly and unfriendly. labels Jul 3, 2021
src/creature.h Outdated Show resolved Hide resolved
Co-authored-by: anothersimulacrum <anothersimulacrum@gmail.com>
src/creature.cpp Outdated Show resolved Hide resolved
@natsirt721
Copy link
Contributor

natsirt721 commented Jul 4, 2021

You mention a lot of biological enemies, what about mechanical enemies (ie CROWS, Riot Platforms etc)? Do they already have special handling? IMO a the 'bleed' (ie fluid leak) chance should be very low, but definitely lethal (at least for stationary enemies - how can a CROWS be an effective enemy if it cant elevate or slew the gun?)

Venera3 and others added 2 commits July 4, 2021 08:01
Co-authored-by: anothersimulacrum <anothersimulacrum@gmail.com>
Co-authored-by: anothersimulacrum <anothersimulacrum@gmail.com>
@Venera3
Copy link
Contributor Author

Venera3 commented Jul 4, 2021

Mechanical enemies' bleed is pretty weird, I'll agree. They already use a different effect ( dripping_mechanical_fluid ), changing that to be deadlier would be pretty straightforward, but out of scope for this - adding a few duration-based intensity levels with scaling damage would allow their ´bleed_rate´ to limit the rate of application down the line.

@Vendidurt
Copy link

Vendidurt commented Jul 4, 2021

Will turrets bleeding mechanical fluid knock them down too? Ive had a turret at : _ _ _ _ and "bleeding" for 2 hours, it did not collapse.

@Venera3 Venera3 marked this pull request as ready for review July 6, 2021 18:09
@Venera3
Copy link
Contributor Author

Venera3 commented Jul 6, 2021

No, dripping mechanical fluid does no damage on its own.

Monster bleed rates are in for vanilla mobs, mostly as outlined above - I erred on the more resistance side for the skeletal/cyborg mobs.

@Shodan14
Copy link

Shodan14 commented Jul 6, 2021

Would be nice to eventually get extra bleeding (or bleeding resistance reduction) from some weapons (like barbed arrows etc.).

@Venera3 Venera3 deleted the bleedresist branch September 21, 2021 07:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[C++] Changes (can be) made in C++. Previously named `Code` <Enhancement / Feature> New features, or enhancements on existing Mechanics: Effects / Skills / Stats Effects / Skills / Stats Monsters Monsters both friendly and unfriendly.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants