rendered paste body private int[] calculateExpAndSp(int diff, int damage)
{
double xp = 0;
double sp = 0;
if (Config.ALT_GAME_EXPONENT_XP != 0 || Config.ALT_GAME_EXPONENT_SP != 0)
{
xp = (double)getExpReward() * damage / getMaxHp();
if (Config.ALT_GAME_EXPONENT_XP != 0)
xp *= Math.pow(2., -diff / Config.ALT_GAME_EXPONENT_XP);
sp = (double)getSpReward() * damage / getMaxHp();
if (Config.ALT_GAME_EXPONENT_SP != 0)
sp *= Math.pow(2., -diff / Config.ALT_GAME_EXPONENT_SP);
}
else
{
// mob is 2 to 9 levels below attacker lvl
if ((diff > 1) && (diff <= 9))
{
xp = (double)getExpReward() * damage / getMaxHp();
sp = (double)getSpReward() * damage / getMaxHp();
xp = xp - diff * xp / 10;
sp = sp - diff * sp / 10;
}
//attacker's level below or equal to mob lvl
else if (diff <= 1)
{
xp = (double)getExpReward() * damage / getMaxHp();
sp = (double)getSpReward() * damage / getMaxHp();
}
//mob is more than 9 levels below attacker lvl
else if (diff > 9)
{
xp = 0;
sp = 0;
}
if (xp <= 0)
{
xp = 0;
sp = 0;
}
else if (sp <= 0 && xp > 0)
{
sp = 0;
}
}
int[] tmp = { (int)xp, (int)sp };
return tmp;
}