[ Disclaimer, Create new user --- Wiki markup help, Install P99 ]
Combat Mechanics
Damage Calculation
| Caster & Priest Damage Multiplier | |||
|---|---|---|---|
| Level Range | maxExtra | maxExtraChance | minusFactor |
| 1-50 | 210? | 49? | 80 |
| 51-55 | 210? | 35? | 80? |
| 56-59 | 210? | 28? | 80? |
| 60 | 210 | 23? | 80 |
| Melee & Tank Damage Multiplier | |||
|---|---|---|---|
| Level Range | maxExtra | maxExtraChance | minusFactor |
| 1-50 | 210? | 49? | 80 |
| 51-55 | 245? | 35? | 80? |
| 56-59 | 265? | 28? | 70? |
| 60 | 285 | 23? | 65 |
NOTE: Not all of the values in the two damage multiplier tables have been tested on P99. Original EQEMU values are here. The EQEMU has a monk specific table, so it is possible that there are unique tables for some classes.
Here is a breakdown of the damage calculation in a simplified format. Please note that it is difficult to confirm all of the magic numbers for P99, so a few of them may differ slightly from the EQEMU code. Because of this, the max damage numbers may be a few points off when looking at P99 damage numbers.
===================
1. Calculate Wrath
===================
1a. StrengthModifier = ((2 * STR) - 150) / 3
1b. If STR is less than 75, StrengthModifier = 0
Wrath = Weapon Skill + StrengthModifier + Worn ATK + Spell ATK
===================
2. Roll a D20
===================
2a. WrathRoll = Random Float Value Between 0.0 and 1.0 * (Wrath + 5)
2b. MitigationRoll = Random Float Value Between 0.0 and 1.0 * (Defenders Total Worn AC + Defenders Total Spell AC + (Defenders Defense Skill / 5) + (Defenders Agility / 20) + 5)
3c. AverageRoll = (WrathRoll + MitigationRoll + 10) / 2
3d. If AverageRoll is less than 1, AverageRoll = 1
3e. RollIndex = (WrathRoll - MitigationRoll) + (AverageRoll / 2)
3f. If RollIndex is less than 0, RollIndex = 0
3g. Weighted D20 Dice Roll = ((RollIndex * 20) / AverageRoll) rounded down
3h. If Weighted D20 Dice Roll is less than 0, Weighted D20 Dice Roll = 0
3i. If Weighted D20 Dice Roll is greater than 19, Weighted D20 Dice Roll = 19
3j. Weighted D20 Dice Roll = Weighted D20 Dice Roll + 1
RolledD20 = Weighted D20 Dice Roll / 10
===================
3. Calculate DamageDone
===================
3a. If Wrath is less than 115, DamageDone = Weapon Damage * RolledD20
3b. Continue if Wrath is greater than or equal to 115
3c. Roll D100. If Rolled D100 is less than maxExtraChance, DamageDone = Weapon Damage * RolledD20
3d. Continue if Rolled D100 is greater than or equal to maxExtraChance
3e. Base Bonus = (Wrath - minusFactor) / 2
3f. If Base Bonus is less than 10, Base Bonus = 10
3g. Extra Percent = 100 + (Base Bonus * Random Float Value between 0.0 and 1.0)
3h. If Extra Percent is greater than maxExtra, Extra Percent = maxExtra
DamageDone = (Weapon Damage * RolledD20 * Extra Percent) / 100
===================
4. Calculate FinalDamage
===================
4a. If using Archery, DamageDone = DamageDone / 2
4b. If using Archery as a Ranger and target is "stationary", which means not moving and not rooted, skip 4a
4c. If NOT using Archery, skip 4a and 4b
4d. Continue if Critical Hit is possible and has occured
4e. If DamageDone is less than Weapon Damage, DamageDone = Weapon Damage
4f. DamageDone = DamageDone + 5
4g. DamageDone = DamageDone * 1.7
4h. Continue if Warrior and Berserk
4i. DamageDone = DamageDone + (Damage from step 4f * 1.19)
FinalDamage = DamageDone + Main Hand Damage Bonus
NOTE: Throwing does NOT get the Main Hand Damage Bonus
NOTE: Archery uses the Main Hand Damage Bonus of the Weapon in your Primary Hand
NOTE: When using Breezeboot's_Frigid_Gnasher in your Primary Hand, it uses the 2Handed Damage bonus for 50 Delay rather than the 1Handed Damage Bonus. This is still true even if you are dual wielding
Damage Calculation Examples
Below are some P99 examples with videos and logs, which are found in the video description. All of these calculations are max damage calculations.
Level 52 Monk with Tranquil Staff (29/30) in the Main Hand
1. Wrath = 244 2Hand Blunt Skill + ((144 STR * 2) - 150) / 3 + 0 Worn ATK + 40 Spell ATK from Celestial_Tranquility = 330
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (330 Wrath - 80 minusFactor) / 2 = 125
3b. Extra Percent = 100 + (125 Base Bonus * 1.0 Random Value) = 225
3c. DamageDone = (29 Weapon Damage * 2 RolledD20 * 225 ExtraPercent) / 100 = 130 rounded down
4. 130 + 16 Main Hand Damage Bonus = 146
Max Damage Calculated = 146
Max Damage Recorded = 144
449 hits out of 1070 hits total are below or at Weapon Damage * 2 (74 Damage). That is a ~58% chance to hit above Weapon Damage * 2 (74 Damage).
Level 52 Monk with Epic Fist (9/16) in the Main Hand
1. Wrath = 231 Hand to Hand Skill + ((141 STR * 2) - 150) / 3 + 0 Worn ATK + 0 Spell ATK = 275
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (275 Wrath - 80 minusFactor) / 2 = 97 rounded down
3b. Extra Percent = 100 + (98 Base Bonus * 1.0 Random Value) = 197
3c. DamageDone = (9 Weapon Damage * 2 RolledD20 * 198 ExtraPercent) / 100 = 35 rounded down
4. 35 + 9 Main Hand Damage Bonus = 44
Max Damage Calculated = 44
Max Damage Recorded = 44
325 hits out of 713 hits total are below or at Weapon Damage * 2 (27 Damage). That is a ~55% chance to hit above Weapon Damage * 2 (27 Damage).
Level 52 Monk with Imbued Fighter Staff (38/40) in the Main Hand
1. Wrath = 244 2Hand Blunt Skill + ((141 STR * 2) - 150) / 3 + 0 Worn ATK + 0 Spell ATK = 288
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (288 Wrath - 80 minusFactor) / 2 = 104
3b. Extra Percent = 100 + (104 Base Bonus * 1.0 Random Value) = 204
3c. DamageDone = (38 Weapon Damage * 2 RolledD20 * 204 ExtraPercent) / 100 = 155 rounded down
4. 155 + 18 Main Hand Damage Bonus = 173
Max Damage Calculated = 173
Max Damage Recorded = 171
135 hits out of 288 hits total are below or at Weapon Damage * 2 (94 Damage). That is a ~54% chance to hit above Weapon Damage * 2 (94 Damage).
Level 60 Shadowknight with Frostwrath (24/22) in the Main Hand
1. Wrath = 225 1Hand Slash Skill + ((231 STR * 2) - 150) / 3 + 10 worn ATK from Aura_of_Battle + 6 worn ATK from Blazing_Gauntlets_of_Fennin_Ro = 345
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (345 Wrath - 65 minusFactor) / 2 = 140
3b. Extra Percent = 100 + (140 Base Bonus * 1.0 Random Value) = 240
3c. DamageDone = (24 Weapon Damage * 2 RolledD20 * 240 ExtraPercent) / 100 = 115 rounded down
4. 115 + 11 Main Hand Damage Bonus = 126
Max Damage Calculated = 126
Max Damage Recorded = 127
408 hits out of 1050 hits total are below or at Weapon Damage * 2 (59 Damage). That is a ~61% chance to hit above Weapon Damage * 2 (59 Damage).
Level 60 Shadowknight with Ancient Fire Etched Flamberge (46/44) in the Main Hand
1. Wrath = 225 2Hand Slash Skill + ((231 STR * 2) - 150) / 3 + 10 worn ATK from Aura_of_Battle + 6 worn ATK from Blazing_Gauntlets_of_Fennin_Ro = 345
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (345 Wrath - 65 minusFactor) / 2 = 140
3b. Extra Percent = 100 + (140 Base Bonus * 1.0 Random Value) = 240
3c. DamageDone = (46 Weapon Damage * 2 RolledD20 * 240 ExtraPercent) / 100 = 220 rounded down
4. 220 + 37 Main Hand Damage Bonus = 258
Max Damage Calculated = 257
Max Damage Recorded = 258
219 hits out of 496 hits total are below or at Weapon Damage * 2 (129 Damage). That is a ~56% chance to hit above Weapon Damage * 2 (129 Damage).
Level 60 Shaman with Spear of Fate (20/30) in the Main Hand
1. Wrath = 200 Pierce Skill + ((255 STR * 2) - 150) / 3 + 20 Worn ATK from 2x Aura_of_Battle + 100 Spell ATK from Primal_Avatar = 440
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (440 Wrath - 80 minusFactor) / 2 = 180 rounded down
3b. Extra Percent = 100 + (180 Base Bonus * 1.0 Random Value) = 280
3c. Extra Percent = 210, because 280 > 210 maxExtra
3d. DamageDone = (20 Weapon Damage * 2 RolledD20 * 210 ExtraPercent) / 100 = 84
4. 84 + 0 Main Hand Damage Bonus = 84
Max Damage Calculated = 84
Max Damage Recorded = 84
333 hits out of 959 hits total are below or at Weapon Damage * 2 (40 Damage). That is a ~65% chance to hit above Weapon Damage * 2 (40 Damage).
Level 25 Warrior with Wurmslayer (25/40) in the Main Hand
1. Wrath = 130 1Hand Slash Skill + ((157 STR * 2) - 150) / 3 + 0 Worn ATK + 0 Spell ATK = 185
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (185 Wrath - 80 minusFactor) / 2 = 52 rounded down
3b. Extra Percent = 100 + (52 Base Bonus * 1.0 Random Value) = 152
3c. DamageDone = (25 Weapon Damage * 2 RolledD20 * 152 ExtraPercent) / 100 = 76
4a. 76 + 0 Main hand Damage Bonus = 76 Max Damage
4b. 76 + 5 * 1.7 = 137 rounded down
4c. 137 + 0 Main Hand Damage Bonus = 137 Max Critical Hit Damage
Max Damage Calculated = 76
Max Damage Recorded = 76
Max Critical Hit Damage Calculated = 137
Max Critical Hit Damage Recorded = 134
606 hits out of 873 hits total are below or at Weapon Damage * 2 (50 Damage). That is a ~31% chance to hit above Weapon Damage * 2 (50 Damage).
Level 24 Cleric with Poison Wind Censer (20/28) in the Main Hand
1. Wrath = 100 2Hand Blunt Skill + ((128 STR * 2) - 150) / 3 + 0 Worn ATK + 0 Spell ATK = 135
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (135 Wrath - 80 minusFactor) / 2 = 27 rounded down
3b. Extra Percent = 100 + (27 Base Bonus * 1.0 Random Value) = 127
3d. DamageDone = (20 Weapon Damage * 2 RolledD20 * 127 ExtraPercent) / 100 = 50 rounded down
4. 50 + 0 Main Hand Damage Bonus = 50
Max Damage Calculated = 50
Max Damage Recorded = 49
497 hits out of 586 hits total are below or at Weapon Damage * 2 (40 Damage). That is a ~15% chance to hit above Weapon Damage * 2 (40 Damage).
Level 52 Monk with Shattering Hammer (9/30) as Throwing Weapon in the Ranged Slot
1. Wrath = 121 Throwing Skill + ((144 STR * 2) - 150) / 3 + 0 Worn ATK + 40 Spell ATK from Celestial_Tranquility = 207
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (207 Wrath - 80 minusFactor) / 2 = 63 rounded down
3b. Extra Percent = 100 + (63 Base Bonus * 1.0 Random Value) = 163
3c. DamageDone = (9 Weapon Damage * 2 RolledD20 * 163 ExtraPercent) / 100 = 29 rounded down
4. 29 + 0 Main Hand Damage Bonus = 29
Max Damage Calculated = 29
Max Damage Recorded = 30
169 hits out of 290 hits total are below or at Weapon Damage * 2 (18 Damage). That is a ~42% chance to hit above Weapon Damage * 2 (18 Damage).
Level 60 Shadowknight with Weighted Axe (45/150) in the Main Hand, Talisen Bow (25/50) in the Ranged Slot, 1 Damage Arrows in the Ammo Slot
1. Wrath = 68 Archery Skill + ((206 STR * 2) - 150) / 3 + 16 Worn ATK + 20 Spell ATK = 191 rounded down
2. RolledD20 = 20 / 10 = 2
3a. Base Bonus = (191 Wrath - 65 minusFactor) / 2 = 63 rounded down
3b. Extra Percent = 100 + (63 Base Bonus * 1.0 Random Value) = 163
3c. DamageDone = (26 Weapon Damage * 2 RolledD20 * 163 ExtraPercent) / 100 = 84 Damage / 2 Archery Penalty = 42 rounded down
4. 42 + 110 Main Hand Damage Bonus = 152
Max Damage Calculated = 152
Max Damage Recorded = 155
142 hits out of 268 hits total are below or at Weapon Damage * 2 / 2 (26 Damage). That is a ~48% chance to hit above Weapon Damage * 2 / 2 (26 Damage).
12/17/2023 Edit: Monk 2H Fist Weaving DPS:
FistWeaveDPS = floor((1 + floor((OffenseSkill + Strength) / 100 * FistDamage)) / 2) * DualWieldChance * [ (1 - DoubleAttackChance) + DoubleAttackChance * (1 - TripleAttackChance) * 2 + DoubleAttackChance * TripleAttackChance * 3 ] * (1 / (floor(2HWeaponDelay / (1 + (HastePercent / 100))) * 0.1))