User:Judas/Armor Calculation

Armor Calculation 101
Considering all anomalies, bugs and plainly weird game mechanics regarding armor calculation, I thought it time to write down how armor calculation in Guild Wars actually works.

Note that while I have tested and/or verified all this myself, I can't guarantee that I haven't missed a certain mechanic or bug.

Introduction
Armor calculation in Guild Wars is rife with inconsistencies. In this article, I will try to list the way armor is calculated.

Categories
For the purpose of this article, I am lumping armor bonuses and penalties in 3 main categories:
 * Base Armor, consisting of:
 * Basic armor, the armor you are wearing,
 * Insignia,
 * Mysticism, if applicable,
 * Base Shield armor, and
 * Inscriptions (actual inscriptions, not inherent mods that can be reproduced with inscriptions).
 * Bonus Armor, consisting of:
 * All other weapon mods,
 * Inherent mods, including Unique (Green) item mods,
 * Consumables, and
 * Almost all armor-altering skills, with the exception of those in the third main category.
 * Cracked Armor is an armor penalty included in this category.
 * Special Armor, consisting of:
 * Bonuses: "I Am Unstoppable!", Illusionary Weaponry and Mantra of Signets, and
 * Penalties: Barbed Arrows, Healing Signet and Shadowy Burden.

Important Wiki articles
Before you read the rest of this guide, you may want to brush up on the following mechanics and bugs: Note: beware that some of these articles may be outdated due to bugs and mechanics that have only recently been discovered and are still being found/researched!
 * General mechanics:
 * Armor rating
 * Effect stacking
 * Bugs:
 * Cracked Armor
 * Elemental and Physical Resistance, Aggressive Refrain and Soldier's Fury
 * "I Am Unstoppable!", Illusionary Weaponry and Mantra of Signets
 * Barbed Arrows, Healing Signet and Shadowy Burden
 * Personal notes explaining some mechanics/bugs:
 * Cracked Armor + Elemental/Physical Resistance, and
 * Consumables and how to break Cracked Armor.

Calculating your armor, from start to finish
By following the steps below in order, you can calculate your effective armor rating.

Step 1: Base Armor
The first step is pretty simple. Just add everything from the Base Armor category.

Step 2: Bonus Armor
Calculate your Bonus Armor value by adding all bonuses and subtracting all penalties from this Category. That includes the penalty from Cracked Armor. I call this the net Bonus Armor:
 * If the net Bonus Armor is 25 or lower, add that value to your Base Armor.
 * Your Bonus Armor can only lower your armor to 60, or to your Base Armor, if that is lower than 60.
 * If the net Bonus Armor is 26 or higher, check whether the highest Bonus Armor bonus you have is more than 25.
 * If your highest Bonus Armor bonus is higher than 25, add that value to your Base Armor.
 * If your highest Bonus Armor bonus is 25 or lower, add 25 to your Base Armor.

Step 3: Armor Penetration
If Armor Penetration affects the damage, apply the proper percentage to the armor rating you have now.

Step 4: Special Armor
Lastly, add the bonuses and subtract the penalties from the skills in the Special Armor category. Note that this cannot lower your armor to below 0.

That concludes the armor calculation. The value you have now is your final effective armor rating!

Examples
To raise familiarity with Armor Calculation, here are a few examples of different situations.

Example 1
Example here.

Example 2
Example here.

Example 3
Example here.

Notes for rewrite, for temporary reference

 * Base Armor
 * Add all Base Armor bonuses: value A
 * If A>60, then B=A-60, and A=60
 * Bonus Armor
 * Add all Bonus Armor bonuses: value C
 * If the highest single bonus is more than 25, set that to value D
 * Add all Bonus Armor penalties (including Cracked Armor): value E
 * F=C-E
 * If F<26, then G=B+F. If G<0, then G=0
 * If 26<=F, then G=B+C, or, if D exists, G=B+D
 * Armor Penetration
 * H=(A+G)*(100-AP%)/100
 * Special Armor
 * Add all Special Armor bonuses: value I
 * Add all Special Armor penalties: value J
 * K=H+I-J
 * If K<0, then K=0
 * Final Armor
 * K is your Final Armor rating!