George’s Saga: Angband-Style Combat

George As I promised, I’m now going to go into some detail about how combat works in Angband. Those of you who are not game geeks can feel free to move along.

In Angband, combat is based on skill and armor class (AC). Every mobile (by which I mean both the player character and the monsters) has an armor class; for monsters it is a fixed number, and for the PC it’s a number based on the armor the PC is wearing and many other factors, including the PC’s dexterity. The higher your AC, the harder you are to hit.

Similarly, the higher your attack skill, the easier it is to hit your opponent. Each PC has an attack skill based on his race, class, and level, and his equipment and circumstances can increase or decrease his “to hit” modifier. The basic equation is

	K = BASE + BONUS*LEVEL + 3*TO_HIT

A level 2 human warrior has a base attack skill of 68, and gets 4.5 more points for each level he attains. He might have an enchanted sword that gives him a to-hit bonus of +1. His attack skill is then

	K = 68 + 4.5*2 + 3*1 = 80

Thus, the PC’s skill goes up as he gains experience (and hence levels), and as he uses better and better equipment. There are also magic spells that will increase his “to hit” modifier, and other circumstances (such as wearing armor that’s too heavy for his strength) that will decrease it.

A monster’s skill level is similar; for normal physical attacks it’s simply

	K = 60 + 3*LEVEL

Thus, a level 5 monster will have an attack skill of 75. However, it gets a little more complicated because monsters have a wide variety of kinds of attack in Angband. Some monsters are poisonous, and will crawl on you to poison you. Others breathe fire, or spray acid, or such like. The base skill differs for each of these kinds of attack, and the level bonus might differ as well (I don’t recall, offhand). At the moment, the monsters in George’s Saga only have physical attacks.

Okay, so we have attack skills and armor classes. Let’s bring them together.

The probability P of a mobile with skill K hitting a mobile with armor class AC is

	P = 100 * (K - 0.75AC)/K

(It’s a little more complicated than this, actually; the code needs to handle the case where K is less than or equal to 0.) I don’t know how they came up with that particular equation; but it allows me to roll percentile dice for any attacker/defender pair, and if the roll is less than or equal to P, it’s a hit.

Well, actually…all rolls of 5% or less are deemed to be hits, and all rolls of 95% or more are deemed to be misses. (But that’s by the way, except that when the roll exceeds 95% I get to animate a “Swoosh” over the defender.)

If the attacker hits the defender, then he rolls for damage, and the damage is immediately applied to the defender. The armor doesn’t absorb it.

This system has many advantages over the GURPS Lite system, at least for my purposes.

  • It’s simpler, in that combat is resolved after one roll: the attacker hits or he doesn’t.
  • If the adversaries are of similar levels, the attacker will hit and do damage more often than not. There’s no frustration because you can’t hit the monster that’s attacking you.
  • If the defender is of a much higher level than the attacker, the attacker won’t be able to hit nearly as often (and will probably be toast in short order). This is appropriate.
  • Attack skill increases in small increments with levels gained and with “to hit” bonuses from equipment.
  • Armor class similarly increases in small increments with bonuses from equipment.

For example, a level 5 monster can hit a PC with no armor 95% of the time. Once the PC gets his armor class up to 8, the monster can hit 90% of the time; and when the PC’s armor class is 50 the monster can only hit 50% of the time. That might seem like a lot; a PC with AC=50 is probably at level 20 or higher. How come the monster can hit him so often?

It turns out that it’s fine. The point is that as the player’s AC increases the monster will do incrementally less damage, because it hits less often. And then, there’s a factor I’ve left out.

In Angband, unlike GURPS, a PC’s hit points go up fairly dramatically with level. A level 1 character might have 10 or 12 hit points; a level 25 character might have over 100 hit points. What’s going on here, in my view, is not that the level 25 character has ten times more life. Rather, it’s that the damage he takes is less significant. One point of damage for him is a minor cut or scrape, rather than a serious wound. In short, a mobile’s maximum number of hit points is a proxy for his skill at defense; the higher it is, the greater the number of small hits he can take. So the level 5 monster hits the level 25 PC less often, and the times the monster does hit are less important.

This is the scheme I’ve adopted in George’s Saga, and it appears to be working quite nicely.

WordPress Themes