Friday, 31 July 2009

Critical Hits

Currently, players and monsters can both score critical hits (1 in 20 chance in fact).

The base damage from a normal melee or ranged hit is:

DamageInflicted := Random(LocalMonster.AttackDamage) + LocalMonster.AttackDamageBonus + LocalMonster.GetBonusDamage(LocalPlayer.SubRace) + 1;

This is then subsequently modified by armour:

Absorption := (LocalPlayer.AC / (ARMOURCAPACITYCAP * 8));
DamageInflicted := DamageInflicted * (1 - Absorption);
Result := Trunc(DamageInflicted);

The constant ARMOURCAPACITYCAP is currently set to 25, hence an AC of 200 (not currently achievable) could potentially block all incoming physical damage (AC is currently linear, unlike EV, which is non-linear).

However, the damage from a critical hit can potentially one-shot a player at lower levels. For a critical melee or ranged hit, the damage is:

DamageInflicted := LocalMonster.AttackDamage + LocalMonster.AttackDamageBonus + LocalMonster.GetBonusDamage(LocalPlayer.SubRace) + 1;

For example, a non-weapon wielding Greedy Adventurer has a base AttackDamage of 8 and an AttackDamageBonus of 1, thus on a crit, it could do 8+1+1=10 points of damage, before absorption by armour. The usual starting AC is 20, which means 1 point of damage is absorbed, leaving 9 to get through.

The only classes that are normally capable of withstanding this at level 1 are Warriors and Knights. If the monster is carrying a magical weapon, then it will do more damage and thus potentially one-shot any character.

I don't like one-shots.

So the question is: should monsters be able to critically hit? And even if not, should their damage always be limited to, at maximum, the player's maximum health - 1? Or some other fraction of the players' health?


Anonymous said...

Your last idea is what critical hit means in LambdaRogue (though only some unique monsters have this ability): at least 1 HP remains -- I consider dead in one hit as a bit unfair, although there might be (more or less hardcore) roguelike players who might appreciate this.

Dave said...

at least 1 HP remains

Change made..the maximum damage that can be inflicted in a single attack is MaxHP - 1.

Of course, if monsters have multiple attacks, that's another problem.

Anonymous said...

Not necessary. Only the FIRST critical hit should reduce player's HP to 1 -- this should be enough for the player to recognize the dangerous habits of that monster and to decide whether to run away or to heal or use another tactics. If the player takes no adequate measures and the monster hits critical a second time, then the player should be dead.

It is just to prevent unwanted surprises.