I think I've figured out the movement formula
Code: Select all
velocity = (race's weight * 100) + speed
velocity -= ((carry / lift) * (0.3 * velocity ))
if running:
velocity *= 1.75 + athletics/100
Race's weight ranges from 0.5 to 2.0, it's set in the Construction Set per-gender,
Speed is your attribute,
Carry is the weight of the object's you're carying,
Lift is your encumbrance (the formula for which is 5 * strength I think),
the constants are presumably GMSTs, I don't know their names though.
This is for vanilla Morrowind (without bloodmoon or tribunal).
This is only moving forward, your speed varies if your move backwards/sideways/diagonally/crouch/swim. Also Sandstorms effect speed (they give you a penalty if you move against them and a bonus if you move with them). Also when you're in 3rd person mode your velocity bobs up and down to match the animation.
And this is only maximum speed, I don't know how acceleration / deceleration works.
I've done a lot of testing, but there's a big potential problem, I used the console's TDT command to show the velocity on the screen and figured it out using that, but if that velocity isn't accurate then this formula could be completely wrong / irrelevant. I did one basic test using player->getPos and manually timing movement for 10 seconds & Pythagorean theoreteming the points, it looks like TDT's velocity translates to units / second, but I should test that more.
edit:
also if you're carry gets over your lift (you're encumbered) you can't move... I imagine people already know this, but to be thorough I wanted to note it.