Combat System Notes
A collection of what is known about how it works on Live.
The primary aim is, to collect in one place all (or at least most) of the known aspects of the EQ combat system seen on Live. The last time I looked in detail, most of the things weren't exactly implemented yet, or were... well, a bit wrong. (Shielding being one good example.)
I apologize in advance for the somewhat long-winded format, and any errors that might have slipped into this. Corrections are more than welcome.
Mob Damage
First, let's start with NPC -> PC damage. The info below is based primarily on various class boards, and memories of lots of getting beat on by mobs. (A hill giant hits you for ... -- Oh, look what pretty birdies...)
At it's heart, a mob can hit for 20 discrete values. These are based on two input parameters (let's call them DB, for damage base or bonus, and DI, for damage interval).
dmg = DB + [1-20] * DI
The above would be a simple representation of that as a formula. Just where in the [1-20] interval you land depends on how your mitigation AC compares to the attack value of the mob, and of course the RNG. (More on why I'm calling it mitigation AC below.)
A min hit would be: DB + 1*DI
A max hit: DB + 20*DI
To make the above seem more real, an example.
If the mob info I have is right, a Tacvi mob would have something like DB = 1000 and DI = 200. That would mean a min hit of 1200 and a max hit of 5000, with the rest falling between those two values.
A bog standard level 37 hill giant would have DB = 33 and DI = 3.2. (Yes, DI doesn't have to be a whole number. It also isn't going to be what EQ uses directly, or what should be used by the emu.)
To expand on the DI usage thing, DI10 (10*DI) is my best guess for what is actually used. This would be the equivalent of the DMG value of a player weapon. A player just doesn't have the hard cap of 2*DMG, that a mob has. (Yes, that one quote the EQ Devs made at some point, about how players hit harder than mobs, actually seems to be accurate. Of course, no player is walking around with a 2000 dmg weapon, like that Tacvi mob above, so...)
With a basic combat formula for mob damage establish, on to two concepts central to tanking, shielding and defensive (the disc).
Shielding
In short, shielding is a percentage reduction of DB in the combat formula, up to a cap of 35%. (So, in the above example, with 30% shielding DB would be 700 for the dmg calculation, instead of 1000.) It doesn't do a thing about the DI portion of the damage.
Defensive
This affects the DI portion of the dmg formula. The mechanism for it is actually pretty much identical for the innate 5% bonus warriors have, how Stonestance (the Monk discipline) works, and of course Defensive. The only thing that differs is stacking and the percentage involved.
Anyway, Defensive works by multiplying DI by 50%. (Going back to our Tacvi test dummy from above, DI would be 100 suddenly, instead of 200, leading to a new max hit of 3000, instead of 5000.)
Implementation wise, I'd suggest something like setting the value to how much dmg is meant to still be done, while under any of these mitigation effects. No reason to throw an extra substraction into the workload for the server. (So, 100% for non-warriors, 95% for warriors, and so on...)
[1-20] * DI * mitigation%
Given that that whole portion of the formula is all multiplications, it doesn't really matter if Defensive is meant to slash down the [1-20] or the DI part, the end result is identical. (To simplify the PvP headache, just go with the DI, which can get applied to player weapons more or less directly.)
I can't really find a definitive answer if the innate defensive bonus of warriors stacks with Defensive or not.
Shielding and Defensive, yes, they stack. So, let's expand our dmg formula.
dmg = DB * (100% - shielding%) + [1-20] * DI * Def%
Fun observations about mob design, that arise out of this formula, and just what defensive does.
- If you want to minimize the impact of Defensive, give the mob a high DB, with a compartively low DI.
- Shielding can be very powerful (several hundreds worth of damage mitigated per hit).
- For a while, DB seems to have been what was used directly for bash and kick dmg of mobs. (This has changed a bit, with some kind of variable entering into it a couple of expansions back, but back during classic, that hill giant would indeed bash for 33.)
Dmg spread
Or just when you learnt to hate Gauss-curves...
In all seriousness. When you look at a graphical hit probabiliy distribution for DI, it never is evenly spread. You usually have spikes at DI1 and DI20, with a soft curving for the values in between.
Whether or not the DI1 or the DI20 spike is bigger, depends on how your AC compares to the mobs attack. My limited attempts at replicating this effect have lead me to a Gauss-curve, that is used to map a map a straight random into a weighted number, which is then used to genertate the [1-20] pick.
Where you start on the curve is dictated by the AC - ATK comparison.
Given the earlier observations about how mob dmg relates to player dmg, if you keep the translation of the weighted random variable (fixed divisor for mobs, a sliding 'damage table' for players), you can even use the same code for player and mob damage.
I realize that this section is rather lacking, but for the most part it also seems to be the least understood area, simply due to how hard it is to accurately test.
Hit steps
The order of checks for each hit.
Block, Dodge, Parry and Riposte are all subject to a strikethrough check as well.
1. Check Block
2. Check Parry
3. Check Riposte
4. Check Dodge
5. Check Shield Block
6. Check Avoidance (hit roll)
Mod 2s
The group of item stats that were introduced with PoP.
Shielding: Caps at 35%
DoT Shielding: Caps at 35%
Spell Shielding: Caps at 35%
Attack: Caps at 250. (300 with AA, not sure if this has been raised since.)
Avoidance: Caps at 100
Accuracy: Increase hit chance. Caps at 150
Damage Shield: Increase DS from spells. There has to be some kind of DS coming from an effect, for this to do anything. Caps at ?
Strikethrough: Chance to ignore a dodge/parry/block/riposte roll, and just hit the target anyway. Caps at 35%
Stunresist: Caps at 35%
Combat Effects: Increase the chance to get a proc from a weapon. Caps at 100
AC and Shield use
The AC that is displayed by the client is pretty much meaningless, since it's a combination of the avoidance and mitigation aspects.
Mitigation is all about the AC on items. Only those matter. But, it of course doesn't end there. To further complicate matters, there is a soft-cap for mitigation AC. This cap is dependant on both class and level, and it's frighteningly low.
AC over the cap is subject to a modifier. This modifier is something like .45 for warriors, and close to that for the other tanks. Casters are the lowest on the totem pole, getting something like 1:20.
Shields are the odd-man out for this whole thing. For everything else, all item AC is added together, the part that is over the softcap is divided by the modifier, and then added to the cap-AC. This is your active mitigation AC. Shields raise the soft-cap, or in other words are always counted in full.
The Combat Stability AA raises the softcap. That is all that it does. So, someone who isn't wearing any armor, or isn't even managing to reach the base cap, isn't going to get any benefit from the AA. (To be fair, with soft-caps in the low hundreds, it's very hard not to reach that, with any kind of decent armor.)
Exact numbers for soft-caps are in rather short supply, though I might just have missed them in my searches. The exact modifiers for the over-cap AC is also guess-work at best, with only a rough order being found. (In general, plate>chain>leather>silk, with casters of all sorts falling below the melee types. Clerics and Bards being the oddballs, by actually being somewhat close to the tanks they share their armor archetype with. Druids are the worst of the non-silk classes. And the silk-classes are just screwed.)
And on that note, I'll end this installment. I hope the presented information wasn't too confusing in it's layout, and that it might actually help to improve the emu. I'll add other things to this as they are found, or are needed.
|