Creature Damage

After much research I have finally figured out creature damage.

Each level/Class/Exp has a base value that I will soon start populating the classlevelstats table with. All damage is derived from the one base value using the a formula. Level 1 - 12 has one set of formulas and levels 13 up have the following formulas:

– 13 up
MinMeleeDmg = (BaseDamage + (MeleeAttackPower / 14)) * (MeleeBaseAttackTime / 1000) * DamageMultiplier
MaxMeleeDmg = ((BaseDamage * 1.5) + (MeleeAttackPower / 14)) * (MeleeBaseAttackTime / 1000) * DamageMultiplier

MinOffHandDmg = MinMeleeDmg / 2
MaxOffHandDmg = MaxMeleeDmg / 2

MinRangedDmg = (BaseDamage + (RangedAttackPower / 14)) * (RangedBaseAttackTime / 1000) * DamageMultiplier
MaxRangedDmg = ((BaseDamage * 1.5) + (RangedAttackPower / 14)) * (RangedBaseAttackTime / 1000) * DamageMultiplier

To give you an example a level 80 Warrior class, expansion 2, will have a BaseDamage value of 164.9240, Attack power of 642, and a ranged attack power of 103. These values are 100% correct and not made up. Using these values I can calculate the damage for a creature with 2000 baseattacktime and no damage mod using the formulas above;

MinMeleeDmg = (164.9240 + (642 / 14)) * (2000 / 1000) = 421.5623
MaxMeleeDmg = ((164.9240 * 1.5) + (642 / 14)) * (2000 / 1000) = 586.4863

MinOffHandDmg = 421.5623 / 2 = 210.7812
MaxOffHandDmg = 586.4863 / 2 = 293.2432

MinRangedDmg = (164.9240 + (103 / 14)) * (2000 / 1000) = 344.5623
MaxRangedDmg = ((164.9240 * 1.5) + (103 / 14)) * (2000 / 1000) = 509.4863

And that is how you get 100% accurate damage from one value.

Hi Malcrom. Nice system you have figured out there.

Paladin and mage damage is now correct for most levels. level 1 to 60 exp0 is 98% proper values, I had to fudge a couple because data was missing. levels 61 - 83 are estimated for exp0.

Values for exp1 and exp2 are mainly correct from 61 - 70 for exp1 and 71 to 80 for exp2. The rest are estimated for any creature outside the normal range. This will give 100% proper damage to almost every creature in TC with a very small few off by the slightest of margins.

I will soon post warrior damage then rogue. rogue damage will be mostly estimated because we have so little data.

Cool Malcrom, keep up the good work.

Nice job Malcrom. You been picking through Blizz’s trash or somethin’?

Oh, how does this effect mobs when they’re tamed? Will the formulas applied at taming have to change to account for the change in the “wild” values?

Pets seem to have a higher base. I will do more research on this after I finish creature [SIZE=14px]damage.[/SIZE]

Update to damage formula;

MinMeleeDmg = (BaseDamage + ((MeleeAttackPower / 14) * MeleeVariance) * (MeleeBaseAttackTime / 1000) * DamageMultiplier
MaxMeleeDmg = ((BaseDamage * 1.5) + ((MeleeAttackPower / 14) * MeleeVariance)) * (MeleeBaseAttackTime / 1000) * DamageMultiplier

MinOffHandDmg = MinMeleeDmg / 2
MaxOffHandDmg = MaxMeleeDmg / 2

MinRangedDmg = (BaseDamage + ((RangedAttackPower / 14) * RangeVariance) * (RangedBaseAttackTime / 1000) * DamageMultiplier
MaxRangedDmg = ((BaseDamage * 1.5) + ((RangedAttackPower / 14) * RangeVariance)) * (RangedBaseAttackTime / 1000) * DamageMultiplier

Viewing the following pictures you will notice I had to use a damage variance of 0.5 rather than the 0.4 you see in blizz’s picture. Lock damage range is checked in blizz’s pic so I’m not sure if they changed the variance value after the calculation.

http://static.mmo-champion.com/mmoc/images/news/2009/august/raidsdungeons_020.jpg

http://oi60.tinypic.com/a3la89.jpg

Seeing your formulas, isn’t it a bit strange that the Variance actually act as another damage multiplier ? That doesn’t match at all with the name. Also we don’t have any way to define the width of the damage range atm, and reading the “Variance” name I’d think it is supposed to do that.

I tried some differents calculations with no results but I’d say there is still something off with this variance.

EDIT :

I just took some randoms bosses damage range we established analysing some raid logs on Black Temple and we can see this :

http://puu.sh/dnz2U/d1775aa252.png

EstimatedMinDmg and EstimatedMaxDmg are the values we established long ago doing some maths with the logs.

CalculatedVariance is calculated this way :

(EstimatedMaxDmg / EstimatedMinDmg) - 1.

Based on the idea that variance should be defined as this :

maxdmg = mindmg * (1 + variance)

(So that 0 variance means… as the name says, mindmg = maxdmg)

I’d say that’s how variance should be calculated, and 0.4 is the default blizzard variance (that they didn’t changed it for those bosses).

(note that the values we estimated have changed with 3.0)

any progress on this?

Final

MinMeleeDmg = (((BaseDamage * 1) + ((MeleeAttackPower / 14) * MeleeVariance)) / (MeleeBaseAttackTime / 1000)) * DamageMultiplier
MaxMeleeDmg = (((BaseDamage * 1.5) + ((MeleeAttackPower / 14) * MeleeVariance)) / (MeleeBaseAttackTime / 1000)) * DamageMultiplier

MinOffHandDmg = MinMeleeDmg / 2
MaxOffHandDmg = MaxMeleeDmg / 2

MinRangedDmg = (((BaseDamage * 1) + ((RangeAttackPower / 14) * RangeVariance)) / (RangeBaseAttackTime / 1000)) * DamageMultiplier
MaxRangedDmg = (((BaseDamage * 1.5) + ((RangeAttackPower / 14) * RangeVariance)) / (RangeBaseAttackTime / 1000)) * DamageMultiplier