private int[] calculateExpAndSp(int diff, int damage)
{
double xp = 0;
double sp = 0;
// mob is 1 to 9 levels below attacker lvl
if ((diff > 0) && (diff <= 9)) // Level menor 0-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 <= 0) // Level maior
{
xp = (double)getExpReward() * damage / getMaxHp();
sp = (double)getSpReward() * damage / getMaxHp();
// Calcula XP exponent (By GNN Ricardom e Rod)
if (diff<1)
{
if (diff==-2) xp *= 1.1;
else if (diff==-3) xp *=1.2;
else if (diff==-4) xp *=1.3;
else if (diff==-5) xp *=1.4;
else if (diff==-6) xp *=1.5;
else if (diff==-7) xp *=1.6;
else if (diff==-8) xp *=1.7;
else if (diff==-9) xp *=1.8;
else if (diff<-10) xp *=1.9;
}
/* Calculo antigo del Angelica!
if (Config.ALT_GAME_EXPONENT_XP != 0)
xp *= Math.pow(2., -diff / Config.ALT_GAME_EXPONENT_XP);
if (Config.ALT_GAME_EXPONENT_SP != 0)
sp *= Math.pow(2., -diff / Config.ALT_GAME_EXPONENT_SP);
*/
}
//mob is more than 9 levels below attacker lvl
else if (diff > 9) // Level menor que 9
{
xp = 0;
sp = 0;
}
// Corrige os bugs do XP senao tira XP e os nego fica doidinho
if (xp <= 0)
{
xp = 0;
sp = 0;
}
else if (sp <= 0 && xp > 0)
{
sp = 0;
}
int[] tmp = { (int)xp, (int)sp };
return tmp;
}