I have been checking the exp formula with my buff. I have found that even with the 200% buff, my exp is twice of what it "should" be.
Like, I put in all my stats for the battle. It comes up with exactly half according to the exp formula * my 200% buff. Then I times my exp by two and I get what I truly get in my battle.
Ender you being helpful and giving out 2x exp?
|
Beware that these formulas are kinda screwy. They are sometimes off by a factor of 2, 4, etc.
-Experience - Against Training Bots, Botsunauthorized
|
It's always times 2 though.
|
So you're saying you're getting 400%?
|
can i have the xp-formula .. i want to test too
|
I guess I am getting 400%.
Let me check with out the buff.
|
Without Buff 200%
Exp Formula x2 Actual
222889 445779 401201
316983 633967 570570
236583 473165 425849
With Buff 200%
Exp Formula x2 xBuff Actual
219938 439875 879751 791776
270972 541944 1083888 975500
245856 491712 983423 885082
Everything seems to be 11% higher after the x2
|
Perhaps this:
<[trainbot level] * [damage] * [INT]/[level&win-loss related variable]/ 2 * [trainbot level variable] * [block related variable]> * <[buff modifier]>
is incorrect.
Maybe the buff modifier only modifies part of that, and not the entirety of that function.
|
I tried messing with it again and can't seem to figure out the whole half as much exp thing. I don't think Ender put in the /2 after the win/loss variable.
|
Whoops. Thought I had 72 int this whole time and only had 63. That makes up for the 11% difference.
Still the problem of x2 though.
|
All I know is that my average EXP with 200% EXP buff is much lower than double my average unbuffed EXP. If anything, it's closer to only 150% of my unbuffed XP.
|
Could you run some tests?
|
|
Here's the exp code if you want to take a look:
public static function getExperienceTrain($isWin, $trainerLevel, $level, $damage, $intel, $blocks, $attempts) {
switch (true) {
case $trainerLevel < 300:
$expMod = 1.0;
break;
case $trainerLevel < 450:
$expMod = 1.3;
break;
case $trainerLevel < 600:
$expMod = 1.6;
break;
case $trainerLevel < 750:
$expMod = 1.9;
break;
case $trainerLevel < 900:
$expMod = 2.2;
break;
case $trainerLevel >= 900:
$expMod = 2.5;
break;
}
$blockMod = 1 + $blocks / ($attempts - $blocks);
switch (true) {
case !$isWin && $trainerLevel < $level:
$variable = 300;
break;
case !$isWin && $trainerLevel >= $level:
$variable = 200;
break;
case $isWin && $trainerLevel < $level:
$variable = 150;
break;
case $isWin && $trainerLevel >= $level:
$variable = 100;
break;
}
return round($trainerLevel * $damage * $intel / $variable / 1 * $expMod * $blockMod);
}
Buff exp is applied to the result of this.
|
return round($trainerLevel * $damage * $intel / $variable / 1 * $expMod * $blockMod);
should be
return round($trainerLevel * $damage * $intel / $variable / 2 * $expMod * $blockMod);
sorry everyone, but why would you divide by 1?
|
That likely explains the comment on BU about the formula being off by a factor of 2. What's in the game now is correct because early on I'd verified using builds with known exp/hour values with the help of Ms. Rose.
|
Then why divide by one? :P
|
Probably as a reminder to myself that leaving off the divide by 2 was an intentional choice and not an omission.
|
|