I've been working on correcting the AGI calculation (
Client::CalcAGI()) for when a client is encumbered:
Code:
sint16 str = GetSTR()*10;
if(weight > str) {
//ratio is wrong (close), but better than nothing
val -= (weight-str) * 100 / 1500; //WR said /1875
}
And was able to
calculate using the Titanium client that on an Iksar Monk (any level) with a base Str of 75 & base Agi of 120 it should be this:
Code:
val -= ((weight - str) * 100 / 1250) + 1; //since we're using ints, we're depending on this being rounded down (floor'd) automatically
However, once I put 5 points into Innate Strength (verified no other AAs trained), the calculation was off: at 90/85 weight (so 5 over), the client was showing 116 AGI & the server was showing 115 AGI using the new calculation.
I've been meaning to find out how the (linear) slope has changed (from -0.8), but it's a pretty time consuming process to add 40 pp (which equals 1 weight) & record the results dozens of times.
I guess I wanted to see if someone (with more free time than I do) would be willing to help me calculate this out.
EDIT: After a quick calculation, 10 STR from AA changed the slope to -0.71428571428571. On average, 1 STR contributes -0.010666666666667 to the slope, but 1 STR from AA appears to only contribute -0.008571428571429.