public static void dig(MapLocation initial_dig_location) throws GameActionException {
    if (Scanner.says_there_are_targets_in_range() && my_type.canAttack()) return;

    if (my_type == RobotType.TURRET) return;

    Direction initial_dig_direction;
    if (initial_dig_location == null || initial_dig_location == current_location) {
      initial_dig_direction = Direction.NORTH;
    } else {
      initial_dig_direction = current_location.directionTo(initial_dig_location);
    }

    for (int offset : combat_directions) {
      if (Clock.getBytecodeNum() > byte_code_limiter - 300) return;
      Direction try_to_clear =
          Direction.values()[(initial_dig_direction.ordinal() + offset + 8) % 8];
      if (rc.senseRubble(current_location.add(try_to_clear))
          >= GameConstants.RUBBLE_OBSTRUCTION_THRESH) {
        rc.clearRubble(try_to_clear);
        return;
      }
    }
  }