@Override
	public int processWithDelay(final Player player) {
		if (started) {
			int level = player.getSkills().getLevel(Skills.RUNECRAFTING);
			if (Utils.getRandom(level <= 50 ? 2 : 1) == 1) {
				npcLife--;
				player.getInventory().addItem(creatures.getRuneId(), 1);
				player.getInventory().deleteItem(24227, 1);
				double totalXp = creatures.xp;
				if (Runecrafting.hasRcingSuit(player))
					totalXp *= 1.025;
				player.getSkills().addXp(Skills.RUNECRAFTING, totalXp);
				player.setNextGraphics(new Graphics(3071));
				points += creatures.pointValue*10;
				if(points >= 1) {
					int pointsInt = (int) points;
					points -= pointsInt;
					Controler controler = player.getControlerManager().getControler();
					if(controler instanceof RunespanControler) 
						((RunespanControler)controler).addInventoryPoints(pointsInt);
				}
			} else {// When you don't get a rune random chance to get xp.
				player.getSkills().addXp(Skills.RUNECRAFTING, Utils.random(0 , 2));
			}
			if (npcLife == 0) {
				processEsslingDeath(player);
				return -1;
			}

			player.setNextAnimation(new Animation(16596));
			creature.setNextAnimation(new Animation(creatures.getNpcEmoteId()));
			creature.setNextFaceWorldTile(player);
			creature.resetWalkSteps();
			player.setNextFaceWorldTile(creature);
			World.sendProjectile(creature, creature, player, 3060, 31, 35, 35, 0, 2, 0);
			WorldTasksManager.schedule(new WorldTask() {
				@Override
				public void run() {
					player.setNextGraphics(new Graphics(3062));
				}
			}, 1);
		}
		return 1;
	}