All pastes #36433 Raw Edit

Something

public text v1 · immutable
#36433 ·published 2006-01-11 02:34 UTC
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;
    }