Player vs. Player Mitigation
Before I get into the mitigation data, I need to explain some things.
In EverQuest, melee damage rolls are one of twenty possible values. (I assume this is loosely modeled after Dungeons and Dragons somehow) Player characters also get an additional random multiplier on top of the d20 roll most of the time, but both NPCs and PCs will roll a d20 on melee hits. NPC hits that are not mitigated by vie buffs, rune buffs, disciplines, the innate warrior mitigation, or shielding equipment will always roll one of the same twenty possible values.
Melee damage hits can also be described using two values: the "damage bonus" and the "damage interval". These are two terms long ago made up by the EverQuest community. (see old Steel Warrior threads) The damage bonus, or DB, is what you expect it to be-- simply a flat value added to the damage. The damage interval or DI is the value multiplied with the d20 roll. (note: DI * d20 is rounded) For example, Cazic Thule (in fearplane) has a min hit of 220 and a max hit of 600. His DB is 200 and his DI is 20. 1 * 20 + 200 = 220 and 20 * 20 + 200 = 600. This also applies to player character damage before the PC damage multiplier is applied. More on that later.
For the rest of this document, I will refer to the maximum hit as DI20 and the minimum hit as DI1.
The probability distribution of rolling one of these twenty values follows a shallow bell curve such that DI10 and DI11 will appear more frequently than other values except for DI1 or DI20 when offense == mitigation. DI1 and DI20 appear the most frequently because the ends of the bell curve are compressed into those intervals.
When offense == mitigation, DI1 and DI20 will both parse slightly higher than 15%. I call this the "double 15 point".
When offense == mitigation, the curve looks like this: (note this is likely unequal a smidge; it's hard to be certain)
Code:
Lvl61War 224wAC 1061AC 273def 126agi backface Lvl60NPCTestSixty.txt
1] 102: 6694 (15.2%)
2] 119: 1171 (2.6%)
3] 135: 1387 (3.1%)
4] 152: 1483 (3.3%)
5] 168: 1558 (3.5%)
6] 184: 1735 (3.9%)
7] 201: 1772 (4%)
8] 218: 1898 (4.3%)
9] 235: 2068 (4.7%)
10] 251: 2125 (4.8%)
11] 267: 2206 (5%)
12] 284: 2048 (4.6%)
13] 300: 1888 (4.2%)
14] 317: 1808 (4.1%)
15] 333: 1635 (3.7%)
16] 350: 1593 (3.6%)
17] 367: 1456 (3.3%)
18] 383: 1370 (3.1%)
19] 400: 1307 (2.9%)
20] 416: 6778 (15.4%)
Knowing this much, we can estimate NPC offense values by simply parsing logs at varying mitigation AC values until we find the mitigation value that strikes the double 15 point. I did this for arena dummies since those proced heals making log production easy, however the goal is to be able to parse raid bosses and a wide variety of NPCs. For that to be practical, I needed to come up with a model that predicts the DI probability distribution from a single log. To accomplish that, I made many PvP logs with known mitigation and offense values, like I did for avoidance.
There is one quirk with PC damage that made this possible: when PC offense is less than 115, the damage multiplier is not applied; this means that players with less than 115 offense will only roll one of twenty possible damages just like NPCs.
Here are the results at 100 offense:
http://imgur.com/1bNBICI
You can immediately see that the double 15 point is not at 100 mitigation. There appears to be a 1.25 offense multiplier or a 1.25 mitigation divisor in PvP. Unlike avoidance, I think it highly likely that this is in PvP only. Here is why:
- The pet Elementaling Earth's double 15 point on my player character was at ~77 mitigation AC. It also just happened to of parsed double 15s on the arena target dummy 'Test Twenty', which was ~77 mit ac when I parsed that NPC using a player character.
- Dzarn once posted the following: "Ignoring a lot of factors, at the most basic level if you have a 1:1 of mitigation v offense then a reverse bell curve of rolls is created."
- The gap between my Aspect of Air and Aspect of Fire offense estimates resulted in the expected value (~104) when the multiplier was removed.
- Azia dummies list their AC values. I assume this value to be their 'NPCBaseAC' as Dzarn mentioned. The double 15 point for level 50 0 AC Azia was 74 offense. Estimating that same dummy without the multiplier also results in 74, and estimating the dummy with 110 AC resulted in a mitigation estimate of 184.
I came up with some simple functions that mimicked part of the DI1 and DI20 curves for use in estimating NPC offense and mitigation. The output of which compared to actual parsed logs is in the above graph. It will only return reasonably accurate estimates when the probabilities are within 5% to 35% or so. Note that this is intended to calculate NPC offense and mitigation estimates only and not for use in emu combat calculations. A more accurate model for the latter will be outlined later in this document.
Here are the functions I devised to predict values when offense is 100. This applies to PvP only:
Code:
DI1Probabiliy = Mitigation / Offense / 4.71 - 0.11
Offense = Mitigation / (DI1Probability + 0.11) / 4.71
Mitigation = 4.71 * (DI1Probability + 0.11) * Offense
DI20Probabiliy = Offense / Mitigation / 3.05 - 0.11
Offense = (DI20Probability + 0.11) * Mitigation * 3.05
Mitigation = Offense / (D20 + 0.11) / 3.05
This works well even at higher offenses, but at very low levels it starts fitting worse. 100 offense is about what a level 15 PC or NPC might have, so it works well for just about everything. Again, the big problem with this model is that
these only work when the DI1/DI20 probabilities are between 5-35% or so.
That's kind of useless however because to estimate NPC values, we need to remove the 1.25 multiplier. In the following sections I will explain how I estimate NPC mitigation and offense using versions of these functions without the 1.25 multiplier.
Estimating NPC Mitigation from PC Offense and DI Probability
Code:
Mitigation = 4.71 * (DI1Probability + 0.11) * Offense * 1.25
Mitigation = Offense / 1.25 / (D20Probability + 0.11) / 3.05
The above functions will provide reasonable estimates for NPC mitigation if DI1 or DI20 are within ~5-35% and offense is somewhere around 100 but below 115.
This is the most problematic of the four to estimate, because of the PC damage multiplier at 115 offense and because production of these logs requires heals on the NPC to keep it alive. Parsing very high AC NPCs is not possible with this method because 114 offense only parses accurately up to roughly 200 mitigation.
For common NPCs, I use charm and cast a high level regeneration spell on it; for raid bosses I simply deaggro and allow it to regenerate naturally. I leveled up a shadowknight to level 90 but kept weapon skills at or below 100 so I could parse NPCs up to level 66 without my weapon skills going up.
I also parsed Azia dummies (mostly) using the more tedious method of targeting the double 15 point by adjusting my offense until a produced a double 15 log. While more tedious, the results are a bit more accurate.
http://imgur.com/pMlsMJg
The classic NPCs and the Azia dummy had a slight exponential curve. Interestingly and coincidentally all the common NPCs I parsed seemed to cap out at around 200 mitigation. 200 mitigation is actually slightly outside the 5-35% I warned about at 114 offense, so those estimates are a bit less accurate. Some of these NPCs could have potentially had defiant gear as well, which I usually did not check for. (not all NPCs wear their inventories however) The noticeable outlier for classic NPCs was a sebilite golem, which had no defiant armor. That NPC either has extra AC, I erred somehow, or the RNG was particularly streaky for that log. I am unwilling to devote the time to investigate that result.
The Azia dummy mitigations at 0 AC may indicate a value resulting from defense skill + agility mitigation, but that is lower than what a PC's mitigation would be from defense skill alone and has a different slope.
The results when parsing NPCs with agility debuffs on them were inconclusive. I only did three NPCs because of how tedious they are to produce. The results indicated either no change to mitigation or a very small one. The margins of error are simply too high. A 60 agil buff would be more easily noticed on very low level NPCs however, so I parsed a fire beetle. From that parse it does seem that agility modifies mitigation, but I can't say by how much other than 'very little'.
It's worth mentioning that Dzarn has said that "most of the creatures in game don't exceed 600 AC". The problem I have is that the avoidance + mitigation ceilings I estimate combine to result in ~660 AC and that's before applying the 'obfuscation' multiplier that clients do. This may indicate an error in my conclusions somewhere.
Estimating NPC Offense from PC Mitigation and DI Probability
Code:
Offense = Mitigation / (DI1Probability + 0.11) / 4.71 * 1.25
Offense = (DI20Probability + 0.11) * Mitigation * 3.05 * 1.25
The best way to estimate NPC offense is to tank the NPC having mitigation AC somewhat close to what you believe its offense to be, which allows both DI1 and DI20 estimates to be usable. Keeping your tank's AC below the softcap is preferable, otherwise more math is involved. (see next section)
Here are the results of NPCs that I've parsed:
http://imgur.com/c5ipFez
Some conclusions we can make from this:
It's clear that NPCs at the same level may have differing offense values, but this is uncommon below level 40 or 50. A froglok krup knight actually parsed higher in offense than a froglok ilis knight and a froglok reet knight. (see spreadsheet for data)
Offense is linear up to level 29 before becoming less predictable. Levels 1-5 had a slightly different slope than 9-29.
The level ~43 to 50 plateau for classic NPCs is visible before increasing again. There is no absolute ceiling like mitigation and avoidance seem to have, which is expected.
Not shown on this graph, but atk debuffs lowered the offense by the amount expected: -1 offense per -1 atk. Atk debuffs work better than players might expect since internal calculations do not do the client 'obfuscation' multiplier.
I also parsed some NPCs with strength buffs and debuffs on them. Strength spells indisputably modify NPC offense significantly, and by the same amount as it does for PCs. (offense == 2/3rds the amount of strength above 75) A fire beetle with a 68 strength buff went from 10-11 offense to ~57 for example. Unlike agility and avoidance, low strength does not impose an offense penalty; this makes attempting to calculate NPC strength values from debuffed NPC parses possible.
There is a floor as to how much strength debuffs reduce offense-- this may indicate how much offense comes from skill(s), or otherwise how much offense comes from level alone. This floor seems to be something close to
level * 5.5 - 5. Even the PoP NPC I parsed had this floor. The level 55 and level 60 NPCs plotted on that graph which have a lower than usual offense are a froglok reet knight and a shik`nar warrior-- strength debuffs reduced their offense much less than other NPCs I parsed, suggesting that they have lower than typical strength. I surmise that the floor is when the NPC hits 75 strength, at which point no extra offense is granted. (which is how it is for PCs) If this theory is correct, then it allows us to estimate NPC strength values, assuming the NPC has no +atk.
When a strength and atk debuff is applied simultaneously, the strength is debuffed first and the offense reduction is capped to the floor, then the atk debuff is applied, so they do stack. Atk debuffs do not have a floor and will take an NPC down to 1 offense if the atk debuff is strong enough.
I also attempted to try and find a strength cap for NPCs with the following results:
- Rathe's Son (mage pet) with Maniacal Strength + Burnout IV (+128 STR) resulted in the expected ~+85 offense.
- Greater Conjuration Earth (mage pet) with Maniacal Strength + Burnout IV (+128 STR) resulted in the expected ~+85 offense.
- Greater Conjuration Earth (mage pet) with Maniacal Strength + Burnout IV + Focus of Soul + Strength of the Diaku (+230 STR) resulted in the expected ~+153 offense.
- Greater Conjuration Earth (mage pet) with Maniacal Strength + Burnout V + Focus of Soul + Strength of the Diaku + Ferine Avatar (+390 STR +180 ATK) resulted in the expected ~+440 offense.
- Defender Kealren (level 55 Shadowhaven NPC) with Focus of Soul + Strength of the Diaku (+110 STR) resulted in the expected ~+73 offense.
- Defender Kealren (level 55 Shadowhaven NPC) with Cripple (-105 STR at my level) resulted in the expected ~-70 offense.
The results do not indicate a statistic cap for NPCs.
I selected the Shadowhaven guard because it parsed an unusually high offense, which I estimated at 220 strength. Cripple did not take it to the 'floor' value; this suggests that all of that NPC's offense above the debuff floor comes from strength (and not atk) and that its strength value is not capped at 255, assuming that NPCs use the same offense function as PCs.
Interestingly, Va Dyn Khar in Vex Thal, (not on the graph) parsed around 370 offense which is lower than some common NPCs. I also parsed Lord Nagafen before they gave him the mitigation of the mighty buff, and his offense clocked in around 540-- that would be the offense equivalent to having (for a level 55 NPC) 363 strength, or 255 strength and +122 atk, or 138 strength and +200 atk, or 213 strength and +150 atk. I can't say what he had in his inventory.
The AC Softcap
Adjusting for, or avoiding altogether, the AC softcap is important when doing these calculations. Demonstar has provided me with a client decompile of the softcap algorithm from an older client (nice of Sony to put it in the client) which is of course extremely valuable. Since it's different in modern clients I won't post it here. TAKP's public branch has it.
The softcap threshold for a level 65 or under warrior is 430, and it's 403 for knights. These values increase after level 65 in modern clients. In demonstar's decompile, the returns are divided by 3 at level 65 for warriors, but in Dzarn's AC thread, he says that warrior AC is multiplied by 0.35, so I've been doing that for Live parses. I could clearly see the bend in the DI probabilities at 430 mitigation when I parsed and graphed Live logs.
So for example, if your level 65 warrior PC has 1200 mitigation AC and no AAs, then his true mitigation would be (1200-430)*0.35+430=699.
The Combat Stability AA increases this cap just as the description says: if you have say, rank 8 of this AA, then the warrior's softcap would be 430*1.27=546. Physical enhancement is an additional 2%. Combat Agility multiplies your avoidance AC similarly. I was able to confirm this from parses.
If you parse logs on Sony's Test server, you can /resetaa once each time you zone/log in. You should buy some non-combat AA like Eyes Wide Open after you reset to ensure that the server turns all the AAs off.
The Player Character Damage Multiplier
As I mentioned previously in this document, PCs get an extra damage multiplier on top of the d20 * DI damage that NPCs and PCs roll, which is why PCs don't typically do only 20 damage values like NPCs do. This multiplier may only happen when offense is >= 115.
One of the goals I set out to accomplish was to better determine how PC damage was calculated. I had actually come up with an accurate model after a lot of effort, then a few months later somebody pasted actual Sony code which overnight made it obsolete. The code paste is here:
https://forums.daybreakgames.com/eq/...-to-do.229581/
That snippet is missing the 115 threshold, which I can assure you exists, but what's really valuable from that snippet are how the 'damage table' is calculated (it's not really a 'table' but a multiplier cap) and the roll chances to apply the multiplier per attack, both of which change at varying level tiers and are different for monks. The chance roll is also missing.
In that code,
attack is the offense value I talk about in this document.
dmg_d is the d20 * DI damage and does NOT include the damage bonus.
maxextra would be the 'damage table' that's commonly been mentioned over the years when discussing PC damage.
chance is the chance to NOT roll the multiplier.