All pastes #18799 Raw Edit

Stuff

public text v1 · immutable
#18799 ·published 2005-07-29 19:30 UTC
rendered paste body
			// init vars
			boolean canSpoilLowerLevel = Config.CAN_SPOIL_LOWER_LEVEL_MOBS;
			boolean canDelevelToSpoil =  Config.CAN_DELEVEL_AND_SPOIL_MOBS;			
			boolean spoil = false;
			boolean wasNegative = false;
			boolean delevelledPlayer = false;
			double x = 0;
			double lvlDifference = 0;
			double rateOfSpoil = 0;
			double 	maxLevelDifference = 	Config.MAXIMUM_PLAYER_AND_MOB_LEVEL_DIFFERENCE;
			double 	baseRateOfSpoil = 		Config.BASE_SPOIL_RATE;
			double 	minimumRateOfSpoil = 	Config.MINIMUM_SPOIL_RATE;
			double 	spoilLevelLimit = 		Config.SPOIL_LEVEL_DIFFERENCE_LIMIT;
			int 	maxLevelOfSpoil = 		Config.LAST_LEVEL_SPOIL_IS_LEARNED;
			int mobLevel = target.getLevel();
			int playerLevel = activeChar.getLevel();
			int spoilCheck = 0;
			int spoilLevelANDPlayerLevelDifference = 0;
			
			Random rand = new Random();
			
			// first make sure target mob is alive
			if ( target.isDead() == false ) {			
				lvlDifference = mobLevel - playerLevel;
				
				// rate of spoil
				x = lvlDifference / maxLevelDifference;
				if ( x < 0 ) {
					x *= -1;
					wasNegative = true;
				}
				if ( canSpoilLowerLevel == true && wasNegative ) {
					rateOfSpoil = baseRateOfSpoil;
				}
				else {
					if ( x > 1 ) x = 1;
					rateOfSpoil = baseRateOfSpoil * ( 1 - Math.pow(x, 2) );
					if ( rateOfSpoil < minimumRateOfSpoil ) rateOfSpoil = minimumRateOfSpoil;
				}				
				if ( playerLevel > maxLevelOfSpoil ) playerLevel = maxLevelOfSpoil;
				
				// essentially somewhere above i need to get spoilCheck which is the MIN_LEVEL that the skill used (spoil) is learned at				
				spoilLevelANDPlayerLevelDifference = playerLevel - spoilCheck;
				
				if ( spoilLevelANDPlayerLevelDifference < 0 ) {
					if ( canDelevelToSpoil ) delevelledPlayer = true;
					else {
						spoilLevelANDPlayerLevelDifference *= -1;
						delevelledPlayer = false;
					}
				}
				
				if ( spoilLevelANDPlayerLevelDifference > spoilLevelLimit && !delevelledPlayer ) {
					spoilLevelANDPlayerLevelDifference /= spoilLevelLimit;
					
					if ( spoilLevelANDPlayerLevelDifference < 0 ) spoilLevelANDPlayerLevelDifference *= -1;
					if ( spoilLevelANDPlayerLevelDifference > 1 ) spoilLevelANDPlayerLevelDifference = 1;
					
					double rateOfSpoilMultiplier = (baseRateOfSpoil * ( 1 - Math.pow(spoilLevelANDPlayerLevelDifference, 2) ))/100;
					rateOfSpoil *= rateOfSpoilMultiplier;
					if ( rateOfSpoil < minimumRateOfSpoil ) rateOfSpoil = minimumRateOfSpoil;
				}
				
				
				// now do randomization
				int randomSuccessRate = rand.nextInt(99);			
				if ( randomSuccessRate < rateOfSpoil ) spoil = true;
			}