diff -aurN jslashem-0.0.7E7F3-J0.1.5-org/src/attrib.c jslashem-0.0.7E7F3-J0.1.5-edited/src/attrib.c --- jslashem-0.0.7E7F3-J0.1.5-org/src/attrib.c 2007-03-05 20:30:44.000000000 +0900 +++ jslashem-0.0.7E7F3-J0.1.5-edited/src/attrib.c 2007-10-18 17:01:13.000000000 +0900 @@ -691,7 +691,7 @@ void -init_attr(np) +init_attr_(np) register int np; { register int i, x, tryct; @@ -740,6 +740,112 @@ } } +static char +get_acception() +{ + char c; + +/*JP pline("St:");*/ + pline("強:"); + if (ACURR(A_STR) > 118) { + pline("%2d",ACURR(A_STR) - 100); + } else if (ACURR(A_STR) == 118) { + pline("18/**"); /*OZAWA: for Emacs matching mechanism*/ + } else if (ACURR(A_STR) > 18) { + pline("18/%02d",ACURR(A_STR) - 18); + } else { + pline("%-1d",ACURR(A_STR)); + } +/*JP pline(" Dx:%-1d Co:%-1d In:%-1d Wi:%-1d Ch:%-1d ",ACURR(A_DEX),ACURR(A_CON),ACURR(A_INT),ACURR(A_WIS),ACURR(A_CHA));*/ + pline(" 早:%-1d 耐:%-1d 知:%-1d 賢:%-1d 魅:%-1d ",ACURR(A_DEX),ACURR(A_CON),ACURR(A_INT),ACURR(A_WIS),ACURR(A_CHA)); +/*JP c = yn_function("Accept?","ynrq",'n');*/ + c = yn_function("よろしいですか?","ynrq",'n'); + return(c); +} + +void +init_attr(np) +int np; +{ + char c; + boolean forced,askforce,ok,done; + schar att; + int aval; + char buf[BUFSZ]; + int i; + + askforce = TRUE; + done = FALSE; + do { + if (askforce) { + askforce = FALSE; +/*JP c = yn_function("Do you want to force anything?","yn",'n');*/ + c = yn_function("能力値にリクエストはありますか?","yn",'n'); + if (c == 'n') { + forced = FALSE; + } else { + forced = TRUE; +/*JP c = yn_function("What do you want to force?","sdciwh",'\0');*/ + c = yn_function("どの能力値?","sdciwh",'\0'); + switch (c) { + case 's': att = A_STR; break; + case 'd': att = A_DEX; break; + case 'c': att = A_CON; break; + case 'i': att = A_INT; break; + case 'w': att = A_WIS; break; + case 'h': + default: att = A_CHA; break; + } + while (1) { + ok = TRUE; +/*JP getlin("What is the minimum value?",buf);*/ + getlin("最低いくつが希望ですか?",buf); + i = 0; + while (buf[i]) { + if (!isdigit(buf[i])) ok = FALSE; + i++; + } + if (!ok) continue; + aval = atoi(buf); + if (aval < ATTRMIN(att) || aval > ATTRMAX(att)) continue; + break; + } + } + } + i = 0; + ok = FALSE; +/*JP pline("Trying ... ");*/ + pline("作成中..."); + while (i < 2000 && !ok) { + init_attr_(np); + if (forced) { + if (ACURR(att) >= aval) ok = TRUE; + } else { + ok = TRUE; + } + i++; + } + if (!ok) { +/*JP c = yn_function("This doesn't seem to work. Try again?","yn",'n');*/ + c = yn_function("なかなかうまく行かないようですが,まだやってみますか?","yn",'n'); + if (c == 'n') askforce = TRUE; + done = FALSE; + continue; + } + c = get_acception(); + switch (c) { + case 'y': done = TRUE; + break; + case 'r': askforce = TRUE; /* fall through */ + case 'n': done = FALSE; + break; + case 'q': exit_nhwindows(NULL); + terminate(0); + } + } while (!done); +} + + void redist_attr() {