The way I read this is as follows:

PowerLevel |
HeroPower |
Difficulty |
Stagger(?) |
Comment |

200 |
(-)15 |
Recruit |
200 |
Technically I think it is not possible to get to PowerLevel 200, since 15 -> 231,25. With (-)15 I mean approaching 15 from negative. Unless I’m wrong 14 HP -> 199 PL, but 15 HP -> 231,5 PL. So fun fact, the step from 14 to 15 HP is the most significant HeroPower step! |

300 |
175 |
Veteran |
253 |
75 HP more than required for the difficulty to hit like in Recruit, seems fair. Although stagger would be ish 16% less effective. |

400 |
335 |
Champion |
307 |
135 HP more than required for the difficulty to hit like in Recruit, seems fair. Although stagger would be ish 23% less effective. |

600 |
655 |
Legend |
413 |
Impossible to hit like in Recruit unless perfect `+10% Power vs X` for common enemies. Given it is endgame, very fair, but require optimal gear. How easy it is to acquire said gear without playing Legend? For avoidance of doubt, with 600 HP + 10% vs X you would for all intents and purposes have 660 HP vs that type, and 660 > 655 so it would feel like playing Recruit on a “naked” toon. Note that with `+9% vs X` it is very possible you miss a breakpoint. And should be noted that to play Legend you should then have almost double the HP as if you are playing Champion (i.e. 655 vs 335). Do keep in mind that stagger is 30% less effective! (compared to damage) You would need 1215 HP for the same (i.e. 600) stagger! |

And as far as I know the enemy health scales as the PowerLevel scales per difficulty, i.e. if an enemy has 10 health in Recruit, said enemy will have 30 health in Legend (and 15 in Veteran and 20 in Champion).

The HeroPower -> PowerLevel formula for damage looks as follows according to my reverse engineering:

```
// javascript, useful in gdocs...
function getImpactScaling(heroPower, diff, type) {
// 200 for recruit, 400 veteran etc
// assume Legend, so 1000
if (typeof(diff)==='undefined') diff = 1000;
// assume attack / cleave == 8/5 if not given. Stagger == 3 (even in 1.05 beta? or changed?)
if (typeof(type)==='undefined') type = 8/5;
// scale down
heroPower = Math.min(heroPower, diff)
// any upscaling??
// heroPower = Math.max(heroPower, XXX?)
// add 185 to calc raw power
rawPower = heroPower + 185
// get scaling from raw power.
rawScaling = Math.min(rawPower, 200) + // base "rawness"
Math.max(rawPower - 200, 0) / type + // scaling from 200 raw power and up
(Math.max(Math.min(rawPower - 199, 1), 0) * (300 - Math.min(rawPower,300))) / (type * 2) // ninja math to handle the 200-300 bump
return rawScaling
}
```