static void monster_check() {
    const float diagonal_multiplier = (get_option<bool>( "CIRCLEDIST" ) ? 1.41 : 1.0);
    // Have a monster walk some distance in a direction and measure how long it takes.
    float vert_move = moves_to_destination( "mon_pig", {0,0,0}, {100,0,0} );
    CHECK( (vert_move / 10000.0) == Approx(1.0) );
    int horiz_move = moves_to_destination( "mon_pig", {0,0,0}, {0,100,0} );
    CHECK( (horiz_move / 10000.0) == Approx(1.0) );
    int diag_move = moves_to_destination( "mon_pig", {0,0,0}, {100,100,0} );
    CHECK( (diag_move / (10000.0 * diagonal_multiplier)) == Approx(1.0).epsilon(0.01) );

    check_shamble_speed( "mon_pig", {100, 0, 0} );
    check_shamble_speed( "mon_pig", {0, 100, 0} );
    check_shamble_speed( "mon_pig", {100, 100, 0} );
    check_shamble_speed( "mon_zombie", {100, 0, 0} );
    check_shamble_speed( "mon_zombie", {0, 100, 0} );
    check_shamble_speed( "mon_zombie", {100, 100, 0} );
    check_shamble_speed( "mon_zombie_dog", {100, 0, 0} );
    check_shamble_speed( "mon_zombie_dog", {0, 100, 0} );
    check_shamble_speed( "mon_zombie_dog", {100, 100, 0} );
    check_shamble_speed( "mon_zombear", {100, 0, 0} );
    check_shamble_speed( "mon_zombear", {0, 100, 0} );
    check_shamble_speed( "mon_zombear", {100, 100, 0} );
    check_shamble_speed( "mon_jabberwock", {100, 0, 0} );
    check_shamble_speed( "mon_jabberwock", {0, 100, 0} );
    check_shamble_speed( "mon_jabberwock", {100, 100, 0} );

    // Check moves to all squares relative to monster start within 50 squares.
    test_moves_to_squares("mon_zombie_dog");
    test_moves_to_squares("mon_pig");

    // Verify that a walking player can escape from a zombie, but is caught by a zombie dog.
    INFO( "Trigdist is " << ( get_option<bool>( "CIRCLEDIST" ) ? "on" : "off" ) );
    CHECK( can_catch_player( "mon_zombie", {1,0,0} ) < 0  );
    CHECK( can_catch_player( "mon_zombie", {1,1,0} ) < 0  );
    CHECK( can_catch_player( "mon_zombie_dog", {1,0,0} ) > 0  );
    CHECK( can_catch_player( "mon_zombie_dog", {1,1,0} ) > 0  );
}
void monster_check() {
    const float diagonal_multiplier = (OPTIONS["CIRCLEDIST"] ? 1.41 : 1.0);
    // Have a monster walk some distance in a direction and measure how long it takes.
    int vert_move = turns_to_destination( "mon_pig", {0,0,0}, {100,0,0} );
    CHECK( vert_move <= 100 + 2 );
    CHECK( vert_move >= 100 - 2 );
    int horiz_move = turns_to_destination( "mon_pig", {0,0,0}, {0,100,0} );
    CHECK( horiz_move <= 100 + 2 );
    CHECK( horiz_move >= 100 - 2 );
    int diag_move = turns_to_destination( "mon_pig", {0,0,0}, {100,100,0} );
    CHECK( diag_move <= (100 * diagonal_multiplier) + 3 );
    CHECK( diag_move >= (100 * diagonal_multiplier) - 3 );

    check_shamble_speed( "mon_zombie", {100, 0, 0} );
    check_shamble_speed( "mon_zombie", {0, 100, 0} );
    check_shamble_speed( "mon_zombie", {100, 0, 0} );
    check_shamble_speed( "mon_zombie_dog", {100, 0, 0} );
    check_shamble_speed( "mon_zombie_dog", {0, 100, 0} );
    check_shamble_speed( "mon_zombie_dog", {100, 100, 0} );
    check_shamble_speed( "mon_zombear", {100, 0, 0} );
    check_shamble_speed( "mon_zombear", {0, 100, 0} );
    check_shamble_speed( "mon_zombear", {100, 100, 0} );
    check_shamble_speed( "mon_jabberwock", {100, 0, 0} );
    check_shamble_speed( "mon_jabberwock", {0, 100, 0} );
    check_shamble_speed( "mon_jabberwock", {100, 100, 0} );
}