All pastes #29178 Raw Edit

Anonymous

public text v1 · immutable
#29178 ·published 2005-11-19 03:05 UTC
rendered paste body

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