evaluate.cpp evaluate_unstoppable_pawn

Before return add this:

Square frontPawn = frontmost_sq(us,b);
    Square themKing  = pos.king_square(~us);
    File pawnFile = file_of(frontPawn);

    Square queeningSq = relative_square(us, make_square(pawnFile, RANK_8));

    if(us == pos.side_to_move())
    {
        //  if king is too far is really unstoppable
        if(square_distance(frontPawn, queeningSq) + 1 <= square_distance(themKing, queeningSq))
            return (Score) (16 << int(relative_rank(us, rank_of(frontPawn))));
    }
    else
    {
        if(square_distance(frontPawn, queeningSq) + 2 <= square_distance(themKing, queeningSq))
            return (Score) (16 << int(relative_rank(us, rank_of(frontPawn))));
    }

    return Unstoppable * int(relative_rank(us, frontmost_sq(us, b)));
  }