User:Phol ende wodan/Combat System Overhaul Draft 1

From NetHackWiki
< User:Phol ende wodan
Revision as of 04:30, 8 August 2017 by Phol ende wodan (talk | contribs) (Create WIP proposal to rework combat)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This is a proposal for an overhaul to NetHack's entire to-hit, armor, and damage reduction system. The current system is lifted from early versions of D&D, in which multiple player characters generally face their enemies, and bonuses are rare. NetHack has grown and evolved far from its roots, and these original mechanics are very unbalanced with the modern game. I believe that these issues are best resolved by removing the existing systems and building up new ones from scratch, instead of trying to tweak lots of values and algorithms to try and get it right.

This is a work in progress, it is incomplete, and it should be considered an early first draft. Ideas are being thrown out here as they enter my head; balances are likely off. Please post on the talk page to tell me how something here is wrong.

Primary goals of a new system

  1. A new system should include multiple defensive stats: at least one for evasiveness, which influences only to-hit, and at least one for damage reduction, which influences only damage. Currently, to-hit and damage are wrapped up in a single character stat: armor class. Bundling both of these mechanics together makes armor less strategic for players (since one should simply get AC as low as possible). It also doesn't reflect real-world combat; it should be easier to whack an enemy wearing heavy plate than one wearing light leather, but it isn't.
  2. Evasiveness, armor index, and armor enchantment should naturally be zero, and improve as they increase. Stats that improve at smaller values, like AC currently does, are counterintuitive. Negative values are valid, but only expected in edge cases such as negative armor enchantment.
  3. A good, if not complete, appraisal of the player's defense ability should be shown at all times on the status bar.
  4. Wearing armor should still identify its enchantment.
  5. Persistent flat bonuses should either be small or eliminated.
  6. Roles should have different amounts of competency in using armor and shields. To this end, armor and shield skills should be included.
  7. Player-monster symmetry should be preserved for the most part, though the player might get a few extra bonuses which will serve to compensate for the fact that there is one player fighting a horde of monsters.
  8. The effect of Luck should be severely reduced. It's an advantage awarded only to the player, for one, and it hurts player-monster symmetry if the player has lots of advantages unavailable to monsters. Even doing what some variants implement and using 1d(Luck) seems too powerful - it can be assumed that a midgame character will have maximized their Luck and it will stay high for the rest of the game; 1d(Luck) has a high average of +7 and a high variance which makes it harder to balance.

Evasiveness

Evasiveness is an inherent value of a monster form that determines how easy it is to score a hit. It partially replaces monster base AC as a stat. Its natural value is zero, which corresponds to AC 10 in vanilla (a naked human with no special skills or bonuses). It should generally correlate with monster difficulty.

Armor penalty

Most types of armor, especially body armor, confer a penalty which makes the wearer easier to hit. This penalty increases for heavier armor. Shields, however, are a tool used to ward off and block blows; wearing a shield will directly increase your evasiveness.

Rules of thumb for creating armor penalties (assume the wearer is unskilled/unfamiliar with armor):

  • Zero: The armor does not impede movement during combat, and does not hinder the wearer moving the covered body part.
  • One: The armor might impede movement during combat, and the wearer might not feel comfortable moving the covered body part.
  • Two: The armor does impede movement during combat, and the wearer has difficulty moving the covered body part.
  • Three: The armor hampers movement during combat.
  • Four: The armor makes movement during combat very difficult. Not many armors should have this penalty.

Proposed armor penalties:

Armor penalty Items with this level penalty
Zero
  • All shields
  • All shirts
  • All cloaks except oilskin and leather
  • Leather gloves and gauntlets of dexterity
  • Low boots and elven boots
  • Elven helm, orcish helm, fedora, both conical hats, dented pot
  • Leather jacket
One
  • Oilskin and leather cloaks, and mummy wrapping
  • Gauntlets of power
  • All boots not listed elsewhere
  • All randomized helms except the visored helmet
  • Dwarvish iron helm
  • Leather armor, studded leather armor
Two
  • Gauntlets of fumbling
  • Visored helmet (on the basis that the other helms are probably halfhelms, but this is a fullhelm)
  • Iron shoes, fumble boots
  • Ring mail, scale mail, elven mithril-coat
Three
  • Dwarvish mithril-coat
  • Chain mails, banded mail
Four
  • Splint mail
  • All plate mails

Dragon armor is not included in this list because it will probably be modified drastically. I would also like to add one or two additional armors like a crystal scale mail (penalty 2).

Armor and Shield skills

Armor skill is basically a measurement of how well you can move and fight while wearing armor. Having armor skill reduces the effective weight of worn armor and reduces its to-hit penalties (to a minimum of zero). All roles can train to at least Basic, and some fighter roles start out with Basic. Armor skill is trained by the sum of all penalties of worn armor (before reductions are applied) each time you move, and by twice that amount each time you make a weapon attack. The cutoffs for Basic, Skilled and Expert are not defined at this time.

Skill level Penalty reduction Weight multiplier (when worn) Starting skill Maximum skill
Unskilled 0 4/3 Archeologist, Caveman, Healer, Monk, Priest, Rogue, Ranger, Tourist, Valkyrie, Wizard
Basic 1 1 Barbarian, Knight, Samurai Healer, Monk, Tourist, Wizard
Skilled 2 2/3 Archeologist, Barbarian, Caveman, Priest, Rogue
Expert 3 1/3 Barbarian, Knight, Ranger, Samurai, Valkyrie

Shield skill represents how good you are at using a shield to block and prevent attacks. Wearing a shield has a direct effect on enemies' chance of hitting you proportional to your skill with the shield. Replacing AC, shields now have a base defense value (basically: large shields and dwarvish roundshields are 1 better than small shields, Mordor shields, shield of reflection) that adds to their overall bonus.

A user has suggested improving this page or section as follows:

"shield skill table"

Basic ideas: Wizards and Monks are restricted in shields, Healers can get to Skilled, Priests can get to Expert (thematic standard priest kit)


Changes to other mechanics

  • Divine protection will probably have a smaller cap of about 6, it will be the most expensive thing one can buy from a priest, and it can only be bought one point at a time. (Possible exception: you get 1d2 points of protection if it's your first point and you are buying it from a coaligned priest.)
  • Certain monsters like aligned priests and angelic beings may have divine protection.
  • Intelligent monsters will pick up non-cursed luckstones; any monster carrying one will effectively have 3 Luck, and their to-hit will recieve a corresponding bonus.

To-hit formula

Getting a higher number in this calculation is good for the attacker. Note that most of these terms are probably unbalanced. If you care to, please point out exactly how it's unbalanced so I can try to amend it.

Melee to-hit is calculated as follows:

  • Start with the negative of the target's evasiveness.
  • If the target has protection (the sum of divine protection and spell protection), subtract 1d(protection).
  • Subtract floor((target speed / 6) - 12). This penalizes slow monsters and gives a small bonus to fast monsters.
  • If the target is wearing a shield, subtract the target's shield skill. (The literal values can be used; restricted = 0, unskilled = 1, ..., expert = 4). If the shield is enchanted, subtract a further min(1d(enchantment), (skill level)).
  • If the target is a Monk not wearing body armor or a shield, subtract the target's martial arts skill.
  • Subtract one-third of the target's level.
  • Add one-third of the attacker's level.
  • Sum up the target's penalties from armor, making armor skill reductions as appropriate, then add it.
  • Add a dexterity bonus for the attacker equal to floor(Dex-10/4).
  • Add a skill bonus for the attacker.
  • If the attacker is wielding a weapon, add 1d(enchantment) if the enchantment is positive, and add the plain enchantment value if it is negative.
  • If the attacker is wearing a ring of increase accuracy, add its enchantment. Unlike most other things, this is a flat bonus.
  • Subtract 1d(Luck/3) for the target's Luck.
  • Add 1d(Luck/3) for the attacker's Luck.
  • If the attacker is a Monk wearing body armor, subtract 10.
  • If the attacker is a Monk not wearing body armor or a shield, add 1d(martial arts skill / 2).

Damage formula

Damage reduction

Other unsorted ideas

More realistic than a single damage reduction stat would be to have three armor stats on top of evasiveness, which describe the armor's effectiveness at blocking piercing, slashing, and bludgeoning damage. Discussed in IRC; this seems like too much complication for too little gameplay benefit. Even if it were only implemented on the monster side of things, it would encourage players to carry around one slashing, one bludgeoning, and one piercing weapon and switch to whichever one is most useful for the next monster; I don't want optimal gameplay to be annoying.

Each attack targets one of [hands, feet, head, torso]. Armor enchantment on other slots does not affect damage reduction. As always, all heroes wear indestructible unremovable magic pants, and the monsters are smart enough not to target that part of the body.

  • This should not change anything cosmetically, a message is still "The goblin hits!" instead of "The goblin hits your hands!" because this is not Dwarf Fortress.
  • Under a system like this, more +5 armor in new armor slots doesn't stack, so adding pants-slot armor could actually work. However, there's no pressing need to add new items for this.