Damage calculation

A Simplified Damage Calculation
''Note: For simplicity, on this page the term attack describes any attempt to damage an opponent. However, whenever the word "attack" is used in skill descriptions, it refers to the attack action.''

There are many different factors to consider while calculating damage. To avoid confusion, this section presents a simplified damage calculation which only takes into consideration the more common factors.

The Approximate Damage (ApproxD) depends on the Raw Damage (RD) and the Armor Effect (AE).
 * '''ApproxD = RD &times; AE;

For damage that ignores armor, AE is set to 1.

Raw Damage
Skill-based offense (like Shock) have a specific raw damage (RD) value indicated in the skill description.

Weapons attacks select RD each time uniformly from the damage range of the weapon. For weapons that have an attribute requirement on their damage range, there is actually another hidden range used for when the attacker does not meet the requirement (see here for details).

Effective Damage
The Effective Damage (ED) considers all the Damage Modifiers that were dropped when calculating the Approximate Damage. The ED depends on the Raw Damage (RD), various Damage Modifiers (D*), and the Armor Effect (AE).


 * ED = [([RD &times; DScale &times; AE] + DShift) &times; DMult] + DNeg

Again, for attacks that ignore armor, AE is set to 1, essentially removing it from the equation.

Damage Cap and Redirection
Certain enchantments will restrict the maximum damage the target can receive, or redirect some of the damage away from the target, thus making the received damage less than the Effective Damage. Redirection is always applied before the cap.

A Simple Example
You are a Warrior, with 16 Swordmastery and wielding a Vampiric Longsword of Fortitude, attacking a Monk, who has 70 armor (either from Blessed Insignia or Stalwart Insignia), with a normal attack.

Raw Damage
The minimum Raw Damage is 15 and the maximum is 22. (Life steal is not considered damage by the game and doesn't count.)

Damage Rating
Using the second formula,
 * DRnoncaster = 5 &times; Rank;  if Rank <= Threshold
 * DRnoncaster = 5 &times; Threshold + 2 &times; (Rank-Threshold);  if Rank > Threshold
 * Threshold1 = Level /2 + 2

Your rank in Swordmastery exceeds the threshold (which is 12 for a level 20 character), so your Damage Rating is DRnoncaster = 5 &times; Threshold + 2 &times; (Rank-Threshold) = 5 &times; 12 + 2 &times; 4 = 68

Armor Rating
The monks BaseAR is 60 - standard caster armor.

She is using Stalwart (or Blessed) Insignia, but she is not using any +armour mods on her weapon, so her ARShift is +10. You have no armor penetration.

Her Armour Rating is EffAR = BaseAR &times; (1 - NAP) + ARShift = 60 + 10 = 70

Using the formula for Armour Effect, AE = 2(EffDR - EffAR)/40 = 2(68 - 70)/40 = 2(-2)/40 

Using a calculator (or the chart), gives an Armour Effect of 96%. Which takes us all the way back to the first equation. Your Approximate Damage is (15-22) &times; 96% = (14 - 21). Not very spectacular, but it's the process that is important.

An Unnecessarily Complicated Example
You are a Warrior, with 16 Axe Mastery and 10 Strength this time and wielding a Sundering Chaos Axe of Fortitude, attacking a Monk, who has 70 armour and is under the effect of Dark Escape. Your first attack is Executioner's Strike, followed by Critical Chop.


 * ED = [([RD &times; DScale &times; AE] + DShift) &times; DMult] + DNeg

Armour Effect
As before, you have a Damage Rating of 68 (at level 20 and 16 weapon mastery), but the Armour Rating has changed, due to armour penetration. Your Sundering prefix does not trigger.

The new Armour Rating is EffAR = BaseAR &times; (1 - NAP) + ARShift = 60 &times; (1 - 0.10) + 10 = 64

Which gives a total Armour Effect of 107%.

Damage Scale
Your axe does +15% from its inscription and +20% damage from customization, for a total Damage Scale of 38%.

Damage Shifter
You have no external damage bonus other than your attack skill, like Strength of Honor or Order of Pain, so the Damage Shifter is +42.

Damage Multiplier
Dark Escape gives the monk a Damage Multiplier of 1/2.

Damage Negator
None

Effective Damage
The new raw damage for your axe is 6-28, giving a final formula of ED = [([RD &times; DScale &times; AE] + DShift) &times; DMult] + DNeg

The minimum damage is ED = [([6 &times; (1.20 &times; 1.15) &times; 1.07] + 42) &times; 0.5] + 0 = 25

The maximum damage is ED = [([28 &times; (1.20 &times; 1.15) &times; 1.07] + 42) &times; 0.5] + 0 = 41

Armor Effect
As before, you have a Damage rating of 68, and the Monk's Armour Level is still the same. But this time, the Sundering Prefix triggers. So we have a new Armour Rating: EffAR = BaseAR &times; (1 - NAP) + ARShift = 60 &times; (1 - 0.30) + 10 = 52

This gives a total Armour Effect of 132%. To avoid any inaccuracies we will use the exact term: 20.4

Damage Scale
Your axe does +15% from its inscription and +20% damage from customisation, for a total Damage Scale of 38%.

Damage Shifter
You have no external damage bonus other than your attack skill, like Strength of Honor or Order of Pain, so the Damage Shifter is +21.

Damage Multiplier
Dark Escape gives the monk a Damage Multiplier of 1/2.

Damage Negator
None

Effective Damage
The raw damage for your axe is 6-28, giving a final formula of ED = [([RD &times; DScale &times; AE] + DShift) &times; DMult] + DNeg

The minimum damage is '''ED = [([6 &times; (1.2 &times; 1.15) &times; 20.4] + 21) &times; 0.5] + 0 = 16

The maximum damage is '''ED = [([28 &times; (1.2 &times; 1.15) &times; 20.4] + 21) &times; 0.5] + 0 = 36

Related Articles

 * Damage
 * Spike damage
 * Damage over time
 * Point Blank Area of Effect
 * Area of Effect

Original References
The present article is built on the results of the research laid out in the original unannotated version of the following article, with additional original research conducted by users of the GuildWiki. This is a clearer, more elegant explanation of the Simplified Damage Formula
 * SonOfRah's damage article
 * http://www.guildwarsguru.com/content/game-mechanics-id674.php