questions

Forum > Questions > Exp Formula
Reply To Thread (login)
Roman [125]
2011-11-14 22:27:42
[13 years, 42 days ago]

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?


 
neps [252]
2011-11-14 22:56:30
[13 years, 42 days ago]
Beware that these formulas are kinda screwy. They are sometimes off by a factor of 2, 4, etc.

-Experience - Against Training Bots, Botsunauthorized

 
Roman [125]
2011-11-14 23:05:11
[13 years, 42 days ago]

It's always times 2 though.


 
Nosferatu [1]
2011-11-15 08:28:17
[13 years, 42 days ago]

So you're saying you're getting 400%?


 
Mithrandon [137]
2011-11-15 08:49:42
[13 years, 42 days ago]

can i have the xp-formula .. i want to test too


 
Roman [126]
2011-11-15 09:20:12
[13 years, 42 days ago]

I guess I am getting 400%.

Let me check with out the buff.


 
Roman [126]
2011-11-15 09:51:59
[13 years, 42 days ago]
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


 
neps [253]
2011-11-15 15:32:52
[13 years, 41 days ago]

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.


 
Roman [126]
2011-11-15 16:18:53
[13 years, 41 days ago]

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.


 
Roman [126]
2011-11-15 16:32:41
[13 years, 41 days ago]

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.


 
neps [253]
2011-11-16 00:55:19
[13 years, 41 days ago]

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.


 
Roman [127]
2011-11-16 08:39:09
[13 years, 41 days ago]

Could you run some tests?


 
Nosferatu [1]
2011-11-16 17:24:17
[13 years, 40 days ago]

Fuck no and fuck you!


 
Ender [1]
Administrator
2011-12-07 20:52:27
[13 years, 19 days ago]

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.


 
Alan [57]
2011-12-07 22:56:27
[13 years, 19 days ago]

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?


 
Ender [1]
Administrator
2011-12-07 23:40:55
[13 years, 19 days ago]

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.


 
Alan [57]
2011-12-07 23:42:02
[13 years, 19 days ago]

Then why divide by one? :P


 
Ender [1]
Administrator
2011-12-07 23:45:03
[13 years, 19 days ago]

Probably as a reminder to myself that leaving off the divide by 2 was an intentional choice and not an omission.


 
Alan [57]
2011-12-07 23:45:46
[13 years, 19 days ago]

okie dokie.


 
Forum > Questions > Exp Formula
Reply To Thread (login)