I think it’s a great idea, it improves melee combat in several ways:
[ul][li]More varied combat descriptions.[/li]
[li]If done well, will apply flavors to combat, in that you would tend to use different sets of attacks against different enemies.[/li]
[li]More variance in how combat plays out since different attacks might inflict wounds or conditions in addition to straight damage. For example if you end up immobilizing a target, you might move away from them and then mop them up later. Even short of that, breaking the predictability of “X strikes to kill a zombie” would be worthwhile.[/li]
[li]If we come up with actual logic behind when enemies are vulnerable to different attacks, we can just add it without changing player behavior or the UI[/li][/ul]
Side note, I’m strongly against anything resembling df’s UI for combat. The underlying system is ok, but the micromanagement of combat is horrific. This system seems like it’s grabbing just the good parts, so this is intended more for commenters than Coolthulu.
Some extensions, not necessary for a v1:
As opposed to any kind of player or martial art black/white -listing, I’d prefer to see attacks (defined in json of course) with one or more attributes stating the “goal” of the attack, such as “damage”, “crippling”, “defense”, “avoidance”, “delaying”, “stunning”. The player would choose a goal for their attacks, basically switching “modes”, and that would bias which attacks get selected. Examples of how that might play out at the end.
In addition to or instead of random variation every turn, the attacks might have various cooldowns so they’re not usable indefinitely. This would be nice because it could lend a cadence to combat, you might hit an enemy with a number of good attacks, but at some point all your good ones are in the process of cooling down, so you might want to go on the defensive for a turn or two to let them reset.
Attacks could change the state of the player after use, for example some concept of how the weapon is being held, the facing of the player relative to the enemy, the degree to which the player has their weapon, arms, or legs ready to block. This could be leveraged to trigger either combos, where attacks set the player up to perform a specific next attack, or failures could be combo breakers, changing the player to a state where they don’t have good attacks available. This sort of thing could also provide cadence to combat, since eventually these changes are going to get you into a state where attacking isn’t necessarily the best option. You might want to go on the defensive, or maybe even retreat for a bit (your stamina is getting burned at the same time too).
Attacks could inflict minor and temporary conditions on enemies that can be capitalized on, for example a hard hit could inflict an off-balance condition, and a follow up attack could cause a knockdown. This is the most complex option, requiring a large number of attacks to be augmented with this kind of thing for the system to work.
A related idea is replacing mandatory counterattacks (which suck in several ways) with inflicting a “counter-attackable” condition, if the player attacks a monster with this kind of condition, it triggers a counterattack, which will generally be beneficial in some way, either by being faster, or hitting harder, or inflicting another condition.
Some examples of how attack modes might play out:
If you’re in a fighting retreat vs an overwhelming number of zombies, you might set your goal to “delay”, and when a zombie catches up to you, you might trip, or push, or hip-throw, or mule kick, etc in order to temporally disable opponents, giving you time to escape.
If on the other hand you were cornered, you might switch to “crippling”, and you’d kick ankles, break arms, snap necks, cut tendons, etc in order to cripple the opponents near you, forming a wall between you and the rest of the horde (they might push past each other to get at you, so this wouldn’t be foolproof).
Another crippling mode scenario would be if there are just a few too many zombies to deal with at once, you might try and cripple a few before the main group arrived to even the odds a bit, then switch to damage to finish them off.
A very simple alternating pattern would be offence vs defence, defensive attacks would tend to do less damage, but allow your stamina to recover, so you can either alternate between the two, or if you’re hurt it might be worthwhile to just stick with defense. On the other hand if something lands an attack that causes bleeding, you might not be able to stay on defense, requiring you to either finish off some opponents or run away.