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 ability to cycle through different striking modes #40354

Closed
wants to merge 3 commits into from

Conversation

CodeBandit
Copy link
Contributor

@CodeBandit CodeBandit commented May 8, 2020

Summary

SUMMARY: Features "Add ability to cycle through Striking Modes"

Purpose of change

Add a way to give variable powered strikes to attacks. Enables some viable melee weapon alternatives due to striking power. Lighter weapons can be used against heavily armored enemies by striking harder (unarmed especially suffers from this in the current state of the game, being unable to damage zombie soldiers outside of crits). Heavier and harder hitting weapons can now be used to strike softly to reduce stamina consumption against enemies that don't necessarily need your full force.

More specifics below

Describe the solution

Add striking modes able to be cycled through using ] as the default key (previously unassigned).

Normal: Default damage and stamina consumption.
Soft: .67 damage multiplier, .5x stamina multiplier.
Hard: 1.5 damage multiplier, 2x stamina multiplier.

Note*: Normal strikes is 1.5x the damage of soft strikes, and hard strikes is 1.5x the damage of normal strikes.

The move cost for the strikes stays the same, you are simply spending more or less effort on your strikes but that doesn't make your strikes slower or faster. The stamina multipliers account for recovery time.

This also applies to bashing furniture so low str characters can smash things supposing they want to expend twice the stamina to do so. This may be useful in certain circumstances.

Stumbling also incurs penalties depending on the striking mode. Stumble penalty is 2/3 of normal if on soft, and 1.5x of normal if on hard. This means if you stike with all your might and miss, you're likely in for a bad time.

In most circumstances, staying with normal strikes is more than good enough.

Always being on soft strikes lowers your damage and make it take longer to kill your enemy. This is especially not a good idea for fast, low damage weapons. Even more especially against armored enemies. You won't be damaging them at all. This is situationally useful for conserving stamina depending on the weapon.

Always being on hard strikes may increase your damage, but the player should consider stamina cost. Over-killing zombies at all times can be counter-productive especially if the player chooses to kill many of them. This would usually be used in the circumstance the extra power is needed. i.e. a single kevlar zombie heading in your direction.

Testing

Extensive testing striking the debug monster with different striking modes to ensure damage is proper.
Debug mode check stamina consumption to confirm stamina consumption is proper.
Debugging through bashskill in bash() to ensure bashing values were being modified by the striking modes.

Lastly, ran regression tests to ensure I didn't break anything I touched. It looks like some NPC needs tests were broken (none of my changes touched on NPC behaviour, only Avatar which is player specific). None of the changes changed any existing functionality relating to melee combat.
image

src/avatar.h Outdated Show resolved Hide resolved
@KorGgenT KorGgenT added <Enhancement / Feature> New features, or enhancements on existing [C++] Changes (can be) made in C++. Previously named `Code` Game: Mechanics Change Code that changes how major features work Melee Melee weapons, tactics, techniques, reach attack labels May 8, 2020
@kevingranade
Copy link
Member

Tl;dr I don't see anything resembling this working out.

From a UI/balance/game design point of view, this adds significant cognitive overhead to a part of the game that is and very much needs to be very streamlined since you have to tackle very large numbers of enemies. The intended complexity and challenge in this area is intended to revolve around tactics and strategy, not combat micromanagement. As such, melee micromanagement at the level of individual attacks is intentionally nonexistent.

From a versimlitude/realism POV, this does not line up at all with how I understand melee combat to work. For a given weapon and attack type and attacker, there is some optimal striking speed that is achievable, "forcing" a swing to be overpowered is going to result in dramatic diminishing returns and side effects like lowered accuracy, and "underswing" is going to result in a vastly ineffective attack. If you're talking about adjusting the kind of attack made, i.e. jabs or light thrusts instead of uppercuts or full sword swings, doing so would not be a simple as, "adjust both stamina and damage up and down" as there are a multitude of differences between different kinds of attacks in addition to intensity.

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 Game: Mechanics Change Code that changes how major features work Melee Melee weapons, tactics, techniques, reach attack
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants