public int fireArrow(int direction){
		//display action in log
		Logger.writeToLog("* Fired an arrow *\r\n");
		movementCost += ARROW_COST; //there is a cost to fire an arrow
		Node arrowPos = currentNode; //start arrow at agent's location
		int addToX, addToY;
		switch(direction){
			case NORTH:
				addToX = 0;
				addToY = -1;
				break;
			case EAST:
				addToX = 1;
				addToY = 0;
				break;
			case SOUTH:
				addToX = 0;
				addToY = 1;
				break;
			case WEST:
				addToX = -1;
				addToY = 0;
				break;
			default:
				addToX = 0;
				addToY = 0;
		}
		//keep moving the arrow until it reaches an end condition
		while(!grid.getNode(arrowPos.getX()+addToX,arrowPos.getY()+addToY).hasWall()){
			arrowPos = grid.getNode(arrowPos.getX()+addToX,arrowPos.getY()+addToY);
			if(arrowPos.hasMinion() && arrowPos.getMinionStatus() != Node.DEAD){
				grid.setNodeType(arrowPos.getX(),arrowPos.getY(),Grid.MINION,false); //there is no longer a minion here
				Logger.writeToLog("You hear a shriek of pain...\r\n");
				return HIT_MINION;
			}
			else if(arrowPos.hasWumpus() && arrowPos.getWumpusStatus() != Node.DEAD){
				grid.setNodeType(arrowPos.getX(),arrowPos.getY(),Grid.WUMPUS,false); //there is no longer a Wumpus here
				Logger.writeToLog("You hear a deafening roar...\r\n");
				return HIT_WUMPUS;
			}
		}
		Logger.writeToLog("You listen for a dying scream, but it seems like your arrow missed...\r\n");
		return HIT_WALL;
	}