CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.29k stars 4.12k forks source link

Enemy Modifiers #59560

Closed ghost closed 2 years ago

ghost commented 2 years ago

Is your feature request related to a problem? Please describe.

Monster evolution is a great feature but has some limitations. I would like a way for monster upgrades to become more varied and allow for greater challenges as well as adding a layer of complexity to enemies. Here is my proposal.

Solution you would like.

Add modifiers that can track with enemies, adding to their stats or changing behavior. This is not entirely unlike a mutation system for enemies, but simplified.

Make an enemy-modifiers.json to list modifiers and their stat changes. When a monster evolves it can either upgrade the normal way or gain a modifier. The chance to gain a modifier should drop with each subsequent one; perhaps at first 50% chance, then 25%, and halving each time. Modifiers would stack. Ideally they would be tiered, for example - "Speedy" 1/2/3: (adding) 5/10/15 speed to the monster.

Modifier string names can be attached as prefixes to the monster- Speedy Boomer, _Perceptive etc. There could be groups of modifiers, so that it is not universal for all monsters. We could give weight to different modifiers as well. Some modifiers could even give stronger benefits at the cost of hindering certain traits.

Allowing some modifiers to be applied conditionally could be very powerful. Variants could be created without extra code, making the game more procedural and flexible. We could have a fungal modifier, a necro modifier, etc. Possibly even elemental modifiers. For example a monster gets hit by lightning and has a good chance to gain an electric modifier, or enters a radiated place and can gain a radiation modifier.

Modifiers could be able to add special attacks, change monster species and/or faction, and many other powerful features.

Describe alternatives you have considered.

Adding a ton of new enemy variations.

Additional context

I am unsure if monsters are currently tracked with unique IDs or not, but this would almost certainly involve that.

GuardianDll commented 2 years ago

I think i saw this idea in discord before before, with replacing all monsters witt different modifiers, like "not electric brute, but zombie + strong + electric", but i cant find it

ghost commented 2 years ago

I may have been involved in a conversation on discord a while back, but i never made a pr or suggestion about it.

I don't want to do away with monster evolutions and different forms, but i think adding modifiers could really spice the game up and open up so many possibilities,

chrispikula commented 2 years ago

Random prefixes is something that has been done in other games before, and it does increase variety, which is nice.

However, one thing that would make this very difficult for CDDA is that some monsters are already nigh-invulnerable, so an unlucky modifier might make them impossible, or lead to a game over.

I propose that the modifiers, if they exist, should be asymptotic, so that if a monster already has a very strong defense or stat, and they get a modifier that improves it, that it isn't as strong as it would be on a weaker unit. No one really has a way to deal with a kevlar hulk that is now even more resistant to damage, or a gasoline zombie that now is also 'explosive', and is going to wipe out a third of the reality bubble.

ghost commented 2 years ago

I think that is a decent concern. There would need to be some balancing and checks in place to make sure it doesn't create challenges too difficult. Most evolution are larger jumps in difficulty than modifiers i am proposing. For example Zombie runner turns into zombie hunter, and there is quite a difficulty spike between the two.

I actually think that flat rate boosts for the most part favor the weaker enemies. For example a modifier that adds +10 hp would have more impact on a regular zombie than a kevlar hulk. Because a kevlar hulk has 300 hp so its only about a 3 percent increase in health. I don't think percentage boosts would be as easy to code for modifiers, but if we did percentage than i agree the boost should be less for stronger units.

I agree about dangerous combinations. We would need to be able to blacklist some or even all modifiers from certain enemies, And any extreme/rare/elemental modifiers would need to be carefully approached.

PatrikLundell commented 2 years ago

It should be noted that variation makes gameplay slower and more tedious: Currently you encounter a group consisting of 17 zombies, 3 zombie runners, and 4 strong zombies, which you can see on the summary associated with the compass. With the changes you'd see 24 individually named and separated zombies, a small number of which are displayed with name, so you'd have to check each and every zombie for nasty combinations each and every encounter.

ghost commented 2 years ago

That is not a bad point. However i use the compass to get rough ideas of what enemies are nearby. We could either have the compass widget display monsters name without modifiers thereby grouping them, or let it separate them, and you would never see the full list in that widget when playing during large hordes, which is the case often for me on mobile anyways.

Thats why i use "V" to view enemies and items. I use that function all the time as it is so much more powerful. And that could certainly list all the zombies with their modifiers. Enemies can be sorted by distance or name i think. if sorted by name, allowing similar enemies to be grouped would be nice, either disregarding the prefixes, having modifiers follow the monster name, or changing "V"iewing monsters to show monster names and have another column for modifiers.

ghost commented 2 years ago

There is also the option of making modifiers hidden, which would make combat more...surprising. But thats probably a bit too hardcore and overall less enjoyable.

PatrikLundell commented 2 years ago

I've never used 'V' for anything but items, but probably should. However, using the compass for a quick check works much of the time when using a decent screen, with hordes overloading the functionality and thus forcing the use of a more cumbersome method.

Grouping dissimilar monsters using the base names would definitely have to be an active hardcore choice.

ghost commented 2 years ago

I would definitely recommend trying it out and see how you like it. On the "V" menu, you can hit TAB to switch between enemies and items pretty quickly.

I do think some more brainstorming with the modifiers idea would be needed. Make enemies quickly distinguishable without slowing the game. Naturally it would somewhat because more planning could be needed assessing situations, but for most gameplay it can add a good zest to and mix up combat a little more.

With tilesets, we could add indicators or overlays to sprites that can show quickly some modifiers, but idk if that would be desired at all. I think it would probably look messy.

chrispikula commented 2 years ago

Something like 15 Zombies (1El, 3Fa) would be a compact way to show modifier via the Compass In this case, 1 is an Electric Variant, and 3 are Fast, It would at least give the player an indication that the player should check the 'V'iew monsters menu.

Further side note: Variant identification could be hidden behind the biological proficiency for that monster type. Gives a reason to do dissections even if you don't want to go the mutation route.

ghost commented 2 years ago

Multiple modifiers could make the shorthand difficult. We could possibly add another compass that shows more information while the original groups them together. A better solution may be to group them in terms of how many modifiers they have, and just open up "V"iew for more info, or e"x"amine them. I personally like this idea. For example:

5 Zombies, 6 Zombie Runners, 3 Zombie Runners (2), 2 Tough Zombies (1), Tough Zombie (2)

I was considering if nothing else that modifiers could show, but you would need to dissect to become proficient in identifying how modifiers affect enemies. We could add a section to the faction "#" window for modifiers that would explain how they work.