public boolean attemptMove(Coord target){
	// Returns true on successful move.
	// Returns false on failure.
		
	// Attempts to move, attack or merge.
		if (possibleMoves.size() == 0 || (coord.row == target.row && coord.col == target.col) || !movesContains(possibleMoves, target)){
			return false;
		}
		
		Army victim = Siege.grid.getOccupantAt(target);
		if (victim != null){
			if (victim.owner != owner) // Attack if target has an enemy army.
				Siege.grid.setOccupantAt(target,attack(victim));
			else // Merge if target has an allied army.
				Siege.grid.setOccupantAt(target,mergeTo(victim));
		}
		
		if (isEmpty()){ // Delete yourself from grid if you got destroyed by merge / attack recoil.
			if (Siege.grid.getTile(coord).isCity())
				Siege.grid.setOccupantAt(coord, new Army(owner, coord));
			else
				Siege.grid.setOccupantAt(coord,null);
		}
		else if (Siege.grid.getOccupantAt(target) == null) // Force move otherwise.
			move(target);
		
		// Update yourself.
		coord = target;
		possibleMoves = new Vector<Coord>();
		updatePossibleInfluences();
		return true;
	}