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; }