diff -u -r angban~1/src/birth.c angband/src/birth.c --- angban~1/src/birth.c Tue Jul 25 20:57:48 2000 +++ angband/src/birth.c Sun Aug 13 14:00:28 2000 @@ -861,7 +861,18 @@ if (ch == 'S') return (FALSE); k = (islower(ch) ? A2I(ch) : -1); if (ch == ESCAPE) ch = '*'; - if (ch == '*') k = rand_int(MAX_CLASS); + if (ch == '*') + { + while (1) + { + k = rand_int(MAX_CLASS); + + /* Try again if not a legal choice */ + if (!(rp_ptr->choice & (1L << k))) continue; + + break; + } + } if ((k >= 0) && (k < n)) break; if (ch == '?') do_cmd_help(); else bell("Illegal class!");