Movement Scaler
What is Movement Scaler?
Movement Scalar is the base stat used in Diablo III which is used to judged your walking rate amongst other things.
Calculating the Heroes Movement Rates
The forumulae used in Diablo III are as follows:
- MovementScalar (Fixed per Hero class)
- WalkingRate (Fixed per Hero class)
- StrafingRate (Fixed per Hero class)
- SprintingRate (Fixed per Hero class)
- RunningRate (Fixed per Hero class)
- MovementBonusTotal (Starts at 0)
- MovementScalarReductionPercent
- MovementScalarReductionResistance
- MovementScalarUncappedBonus
First step is to calculate the Movement Scalar Total which is done by the following formula:
MovementScalarTotal = MovementScalarCappedTotal + MovementScalarUncappedBonus
This basically means you can have a capped value which cannot go above a certain amount and a bonus which is totally uncapped. Lets look at the capped total:
MovementScalarCappedTotal = Min(1.25, MovementScalarSubtotal)
Basically this means you take whatever is lowest, 1.25 or the MovementScalarSubTotal.
Working out the MovementScalarSubtotal:
MovementScalarSubtotal = Max(0.1, MovementScalar) * (1 + MovementBonusTotal) * (1 - MovementScalarReductionPercent * (1 - Min(1, MovementScalarReductionResistance)))
Breaking that down:
Calc1 = 1 - Min(1, MovementScalarReductionResistance)
This makes sure the worst you can get here is a 0, best 1. So even if you set the ReductionResistance to 9999 it'll end up being 0. Although in theory you can have a negative value but Blizzard will no doubt prevent that somewhere else in their code if it matters.
Calc2 = (1 - MovementScalarReductionPercent * Calc1 )
A percent will be a value between 0.00 and 1.00 so all this does is take whatever the resistance is and take the percentage (as the name gives away). So if your ReductionResistance was 50% and your ReductionPercentage was 50% you'll end up with 25%.
Calc3 = (1 + MovementBonusTotal)
This just gives you a minimum of 1.
Calc4 = Max(0.1, MovementScalar)
Now this is the one we've been waiting for, just how does the MovementScalar change the speed of our character? 0.1 is the default, so anything above that is a perk!
- Default: 0.1 * 1 * 1 * 1 = 0.1; This would be full speed.
- Full Resistance: 0.1 * 1 * 0 * 0 = 0; You would be unable to move.
- Some buff: 0.1 * 1.25 * 1 * 1 = 1.125; 25% increase (easy to show with 10 * 125% = 12.5);
Now back to the original formula:
MovementScalarCappedTotal = Min(1.25, MovementScalarSubtotal)
So we now know the best bonus is 1.25 which is the same as 250% in game bonus to run speed! No point going above that then guys and girls, 250% is your limit!
MovementScalarTotal = MovementScalarCappedTotal + MovementScalarUncappedBonus
This is then used for the following Formulae:
- WalkingRateTotal = WalkingRate * MovementScalarTotal
- StrafingRateTotal = StrafingRate * MovementScalarTotal
- SprintingRateTotal = SprintingRate * MovementScalarTotal
- RunningRateTotal = RunningRate * MovementScalarTotal
So as you can see the MovementScalar is just a percentage speed increase!