private GameState preacherDay(GameState state, Card card)
	{
		if(state.getPlayer(card.getFaction()).checkCPU())
		{
			HashMap<GameState, String> choiceMap = allPreacherDay(state, card);
			
			GameState choice = state.getPlayer(card.getFaction())
					.chooseState(choiceMap.keySet().toArray(new GameState[0]), card);
			
			state.log(choiceMap.get(choice));
			
			return choice;
		}
		else
		{
			Color faction = card.getFaction();
			Loot bag = state.getPlayer(faction).getLoot();
			boolean allEmpty = true;
			
			for(String s : Treasure.allTreasures()) //list all treasures
			{
				if(bag.countTreasure(s) != 0)
				{
					allEmpty = false;
				}
			}
				
			if(allEmpty)
			{
				state.log("The Preacher (" + card.abbreviate() + 
						") had no treasures to choose from");
				return state;
			}
			
			String treasure = state.getPlayer(faction).getGUI().makeChoice("Choose one treasure to keep, " +
					"the rest will be discarded:", bag);
	
			state.log("The Preacher (" + card.abbreviate() + 
					") discarded all treasures besides 1 " + treasure);
			
			for(String s : Treasure.allTreasures())
			{
				if(s.equals(treasure))
				{
					state.getPlayer(faction).getLoot()
						.addLoot(s, (-state.getPlayer(faction).getLoot().countTreasure(s))+1);
				}
				else
				{
					state.getPlayer(faction).getLoot()
						.addLoot(s, -state.getPlayer(faction).getLoot().countTreasure(s));
				}
			}
			return state;
		}
	}