public GameState doAction(GameState state, Card card, int time) 
	{
		Color faction = card.getFaction();
		Player player = state.getPlayer(faction);
		if(!player.checkCPU())
		{	
			//First we just display all the possible choices for treasure
			String choice = "";
			Loot Lbag = state.getBoard().getLoot(state.getDay());
			choice = player.getGUI().makeChoice("Please choose one treasure:", Lbag);
			
			Lbag.addLoot(choice, -1);
			state.getBoard().setLoot(state.getDay(), Lbag);
			player.getLoot().addLoot(choice, 1);
			if(!choice.equals(Treasure.SABER))
			{
				state.log(Faction.getPirateName(faction) + " chose " + choice);
			}
			
			//There are a few special cases that we need to case on (with standard rules)
			
			if(choice.equals(Treasure.OFFICER))
			{
				state.getBoard().removeCard(card);
				player.addToDiscard(card);
			}
			else if(choice.equals(Treasure.SABER))
			{
				state = saberAction(state, faction);
			}
		}
		else //if the player is a CPU, we generate all possible outcomes for treasure choice
		{	
			HashMap<GameState, String> choiceMap = allActionsWithPhrases(new GameState(state), card, time);
			
			GameState choice = state.getPlayer(faction)
					.chooseState(choiceMap.keySet().toArray(new GameState[0]), card);
			
			state.log(choiceMap.get(choice));
			
			return choice;
		}
		return state;
	}