public void run() throws CantRunRaidException { 
		if (this.raidSettings.getDestination() == null)
			throw new CantRunRaidException(CantRunRaidBecause.DESTINATION_NULL);
		if (this.raidSettings.getTeam() == null || this.raidSettings.getTeam().isEmpty())
			throw new CantRunRaidException(CantRunRaidBecause.NO_SURVIVORS);
		
		final int TOO_MANY_ZOMBIES = 10;//TODO parameter that can be changed by the user

		int zombiesKilled, zombiesInWholeZoneAtFirst = this.raidSettings.getDestination().getZombiesLeft();
		this.messagesToDisplayOnceRaidIsOver = new LinkedList<String>();
		this.survivorsHurtDuringRaid = new LinkedList<Survivor>();
		this.newSurvivorsFound = new LinkedList<Survivor>();
		
		int zombiesAboutToEncouter = someOfThem(zombiesInWholeZoneAtFirst);
		
		if (zombiesAboutToEncouter >= TOO_MANY_ZOMBIES) {
			nopeNopeNope(zombiesAboutToEncouter);
		} else {
			zombiesKilled = this.clearArea(zombiesAboutToEncouter);
			this.loot = this.lootArea();

			this.addLootRelatedMessages();
			this.addZombieRelatedMessages(zombiesAboutToEncouter, zombiesKilled);
			
			encouterNPCs();
			
			improveSkills(zombiesKilled);
		}
	}