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

Weakpoints as objects #53486

Merged
merged 28 commits into from
Dec 24, 2021
Merged

Conversation

I-am-Erk
Copy link
Member

@I-am-Erk I-am-Erk commented Dec 16, 2021

Summary

Content "Now you can stab a zombie in the eye and it will go blind"

Purpose of change

With #51770, #51961, and #51979, @Joshua-Chin has been implementing a robust framework for detailed monster weakpoints and effects from hitting them, and I am way behind on actually using them in monsters!

This turned out to be a very, very bulky system to implement inline with the detail I wanted, so I begged for someone to help fix that and now, dseguin has come to my aid.

Describe the solution

This PR will add new, much more detailed weakpoint information to all humanoid zombies and most other humanoid monsters. I am not looking at non-humanoid monsters currently, because at least with zombies I can carry the same weakpoints forward to all the monsters.

  • Hitting the legs has a chance of knockodwn
  • Hitting the arms has a chance to stagger your opponent (momentary drop in speed)
  • Hitting the head has a chance of stun
  • Hitting the eyes has a chance of blinding, and if you do enough damage it can be permanent

In general, most weakpoints are harder to hit at range than in melee. If they are off the front-facing part of the zombie (eg an armpit) they are much harder. Small weakpoints are harder to hit with cut/bash weapons, and easier with stab/ranged attacks. Large ones like legs are easier to hit with wide sweeping cut/blunt attacks. Weakpoints on the extremities have decreased critical hit damage.

Also: if you are being grabbed by a humanoid, you have a higher chance of hitting the arms of the grabber, and therefore a higher chance of causing the Staggered effect. This effect now cancels grabs. In other words, you can struggle with the arms of your opponent and potentially dislodge them.

Describe alternatives you've considered

There are some possible weakpoints I have ignored for now, like hitting a feral in the chest and leaving it winded, or stabbing a zombie in the throat. The modular setup of these makes it easy to consider adding more later.

The actual balance of these still needs testing. In general I suspect I am lowballing the difficulty, we'll have to see.

Testing

Built, ran, and tested. All features appear to be functional. The actual balance will require more testing

Additional context

This is so awesome.

We may wish to increase the base armour on some of these zombies, but I would suggest first to do some playtesting to see how much trickier I have made their weakpoints. The effective DPS tests have, for the time being, been set to ignore weakpoints altogether. We should develop new tests for weakpoints, and also buff armour as the weakpoints tests now find effective dps way higher against many zombies.

@I-am-Erk I-am-Erk added Game: Balance Balancing of (existing) in-game features. [JSON] Changes (can be) made in JSON Monsters Monsters both friendly and unfriendly. labels Dec 16, 2021
@github-actions github-actions bot added astyled astyled PR, label is assigned by github actions json-styled JSON lint passed, label assigned by github actions labels Dec 16, 2021
@github-actions github-actions bot removed the json-styled JSON lint passed, label assigned by github actions label Dec 16, 2021
@dseguin
Copy link
Member

dseguin commented Dec 16, 2021

Something important to note:
The JSON for weakpoint sets must load before the JSON for monsters because of the "weakpoint_sets" dependency. To do that, just be sure that the name of the file/directory containing the weakpoint definitions is lexicographically before the monster definitions. You can also get around that by putting the weakpoints in data/json/mon_weakpoints/ ("mon_weakpoints" comes before "monsters").

It's kind of unintuitive but the loading order works in mysterious ways.

@I-am-Erk
Copy link
Member Author

I-am-Erk commented Dec 16, 2021

Thanks! Let me know if you think there is any function in your new implementation that I should be using here but am not.

(At a glance, I think I should redo how I've done, say, the Crawler and make use of "delete" to take out the leg entry, then merge arms and legs into a single weakpoint list)

@I-am-Erk I-am-Erk marked this pull request as ready for review December 23, 2021 18:27
@I-am-Erk
Copy link
Member Author

Needs some linting and testing but the content addition is good for now I think. If a reviewer can spot any humanoids I've missed, I'd appreciate it.

Copy link
Member

@dseguin dseguin left a comment

Choose a reason for hiding this comment

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

Just needs some linting and syntax fixes.

data/json/monster_weakpoints/generic_weakpoints.json Outdated Show resolved Hide resolved
data/json/monster_weakpoints/generic_weakpoints.json Outdated Show resolved Hide resolved
data/json/monster_weakpoints/generic_weakpoints.json Outdated Show resolved Hide resolved
data/json/monster_weakpoints/humanoid_weakpoints.json Outdated Show resolved Hide resolved
data/json/monster_weakpoints/humanoid_weakpoints.json Outdated Show resolved Hide resolved
data/json/monster_weakpoints/humanoid_weakpoints.json Outdated Show resolved Hide resolved
data/json/monster_weakpoints/humanoid_weakpoints.json Outdated Show resolved Hide resolved
data/json/monsters/zed-winged.json Outdated Show resolved Hide resolved
data/json/monsters/zed-winged.json Outdated Show resolved Hide resolved
data/json/monsters/zed_soldiers.json Outdated Show resolved Hide resolved
@kevingranade kevingranade merged commit 2eb7a4e into CleverRaven:master Dec 24, 2021
@I-am-Erk I-am-Erk deleted the weakpoints2again branch December 24, 2021 05:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions Game: Balance Balancing of (existing) in-game features. [JSON] Changes (can be) made in JSON Monsters Monsters both friendly and unfriendly.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants