There are three main points (among many) that cause the actual chance to hit to be reduced even if it is above 100%.
- The Armor Class of the monster being attacked.
- When using ranged attacks, the chance to hit is reduced based on the distance between you and the monster.
- The maximum actual chance to hit is 95% after all other calculations are done.
In addition, please note that you can easily miss a monster completely in which chance to hit is not taken into consideration. If an arrow doesn't pass through a tile the monster is on, it will just miss.
Here is the complete story for a player vs. monster, taken from Jarulf's Guide.
if the effect is Holy Bolt and the monster is not undead or Diablo, exit as other monsters are immune
if the target monster is an Illusion Weaver that is currently running away, exit as it is at the moment immune to any attack
if the monster is immune to the spell type, exit as it can't be damaged
if the target is a monster that is Stone Cursed, the attack is an automatic hit, go directly to damage calculations
if the effect is an arrow, calculate 50 + Dex + ToHititems + clvl + bonusplayer - distance·distance/2
if the effect is an arrow, subtract Acmonster
if the effect is a spell, calculate 50 + Mag + bonusplayer
if the effect is a spell, subtract 2·mlvl
if the value calculated is below 5, set it to 5
if the value calculated is above 95, set it to 95
the value now achieved is the final chance to hit (FTH)
a hit is secured if Rnd < FTH
The steps 5-11 above can be summarized to:
FTHarrow = 50 + Dex + ToHititems + clvl + bonusplayer -
distance·distance/2 - Acmonster
FTHspell = 50 + Mag + bonusplayer - 2·mlvl
The bonusplayer for arrows is 10 for Warriors and Bards, 20 for Rogues, and 0 for all other classes.
The bonusplayer for spells is 20 for Sorcerers, 10 for Bards, and 0 for all other classes.
Note that if FTH is below 5 or above 95 it is adjusted to 5 and 95. This is commonly referred to as the auto hit and auto miss of a character.