From e38d955238b88c1248feb3decb611d7f69858ad0 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sat, 11 Jan 2020 20:26:50 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#38997=20bldg.c=20=E3=81=AE?= =?utf8?q?=E6=95=B4=E5=BD=A2=20/=20Reshaped=20bldg.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/bldg.c | 1806 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 888 insertions(+), 918 deletions(-) diff --git a/src/bldg.c b/src/bldg.c index bd263cd4c..55f8baf37 100644 --- a/src/bldg.c +++ b/src/bldg.c @@ -205,15 +205,11 @@ static bool is_member(player_type *player_ptr, building_type *bldg) return TRUE; } - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass != CLASS_SORCERER) return FALSE; + + for (int i = 0; i < MAX_MAGIC; i++) { - int i; - bool OK = FALSE; - for (i = 0; i < MAX_MAGIC; i++) - { - if (bldg->member_realm[i + 1]) OK = TRUE; - } - return OK; + if (bldg->member_realm[i + 1]) return TRUE; } return FALSE; @@ -229,10 +225,10 @@ static bool is_member(player_type *player_ptr, building_type *bldg) */ void clear_bldg(int min_row, int max_row) { - int i; - - for (i = min_row; i <= max_row; i++) + for (int i = min_row; i <= max_row; i++) + { prt("", i, 0); + } } @@ -259,7 +255,6 @@ static void building_prt_gold(player_type *player_ptr) static void show_building(player_type *player_ptr, building_type* bldg) { char buff[20]; - int i; byte action_color; char tmp_str[80]; @@ -267,76 +262,81 @@ static void show_building(player_type *player_ptr, building_type* bldg) sprintf(tmp_str, "%s (%s) %35s", bldg->owner_name, bldg->owner_race, bldg->name); prt(tmp_str, 2, 1); - - for (i = 0; i < 8; i++) + for (int i = 0; i < 8; i++) { - if (bldg->letters[i]) + if (!bldg->letters[i]) continue; + + if (bldg->action_restr[i] == 0) { - if (bldg->action_restr[i] == 0) + if ((is_owner(player_ptr, bldg) && (bldg->member_costs[i] == 0)) || + (!is_owner(player_ptr, bldg) && (bldg->other_costs[i] == 0))) { - if ((is_owner(player_ptr, bldg) && (bldg->member_costs[i] == 0)) || - (!is_owner(player_ptr, bldg) && (bldg->other_costs[i] == 0))) - { - action_color = TERM_WHITE; - buff[0] = '\0'; - } - else if (is_owner(player_ptr, bldg)) - { - action_color = TERM_YELLOW; - sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->member_costs[i]); - } - else - { - action_color = TERM_YELLOW; - sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->other_costs[i]); - } + action_color = TERM_WHITE; + buff[0] = '\0'; } - else if (bldg->action_restr[i] == 1) + else if (is_owner(player_ptr, bldg)) { - if (!is_member(player_ptr, bldg)) - { - action_color = TERM_L_DARK; - strcpy(buff, _("(閉店)", "(closed)")); - } - else if ((is_owner(player_ptr, bldg) && (bldg->member_costs[i] == 0)) || - (is_member(player_ptr, bldg) && (bldg->other_costs[i] == 0))) - { - action_color = TERM_WHITE; - buff[0] = '\0'; - } - else if (is_owner(player_ptr, bldg)) - { - action_color = TERM_YELLOW; - sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->member_costs[i]); - } - else - { - action_color = TERM_YELLOW; - sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->other_costs[i]); - } + action_color = TERM_YELLOW; + sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->member_costs[i]); } else { - if (!is_owner(player_ptr, bldg)) - { - action_color = TERM_L_DARK; - strcpy(buff, _("(閉店)", "(closed)")); - } - else if (bldg->member_costs[i] != 0) - { - action_color = TERM_YELLOW; - sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->member_costs[i]); - } - else - { - action_color = TERM_WHITE; - buff[0] = '\0'; - } + action_color = TERM_YELLOW; + sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->other_costs[i]); + } + + sprintf(tmp_str, " %c) %s %s", bldg->letters[i], bldg->act_names[i], buff); + c_put_str(action_color, tmp_str, 19 + (i / 2), 35 * (i % 2)); + continue; + } + + if (bldg->action_restr[i] == 1) + { + if (!is_member(player_ptr, bldg)) + { + action_color = TERM_L_DARK; + strcpy(buff, _("(閉店)", "(closed)")); + } + else if ((is_owner(player_ptr, bldg) && (bldg->member_costs[i] == 0)) || + (is_member(player_ptr, bldg) && (bldg->other_costs[i] == 0))) + { + action_color = TERM_WHITE; + buff[0] = '\0'; + } + else if (is_owner(player_ptr, bldg)) + { + action_color = TERM_YELLOW; + sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->member_costs[i]); + } + else + { + action_color = TERM_YELLOW; + sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->other_costs[i]); } sprintf(tmp_str, " %c) %s %s", bldg->letters[i], bldg->act_names[i], buff); c_put_str(action_color, tmp_str, 19 + (i / 2), 35 * (i % 2)); + continue; } + + if (!is_owner(player_ptr, bldg)) + { + action_color = TERM_L_DARK; + strcpy(buff, _("(閉店)", "(closed)")); + } + else if (bldg->member_costs[i] != 0) + { + action_color = TERM_YELLOW; + sprintf(buff, _("($%ld)", "(%ldgp)"), (long int)bldg->member_costs[i]); + } + else + { + action_color = TERM_WHITE; + buff[0] = '\0'; + } + + sprintf(tmp_str, " %c) %s %s", bldg->letters[i], bldg->act_names[i], buff); + c_put_str(action_color, tmp_str, 19 + (i / 2), 35 * (i % 2)); } prt(_(" ESC) 建物を出る", " ESC) Exit building"), 23, 0); @@ -370,8 +370,10 @@ static void arena_comm(player_type *player_ptr, int cmd) msg_print(_("スペースキーで続行", "Press the space bar to continue")); msg_print(NULL); player_ptr->arena_number++; + break; } - else if (player_ptr->arena_number > MAX_ARENA_MONS) + + if (player_ptr->arena_number > MAX_ARENA_MONS) { if (player_ptr->arena_number < MAX_ARENA_MONS + 2) { @@ -403,46 +405,49 @@ static void arena_comm(player_type *player_ptr, int cmd) "You enter the arena briefly and bask in your glory.")); msg_print(NULL); } + + break; } - else if (player_ptr->riding && (player_ptr->pclass != CLASS_BEASTMASTER) && (player_ptr->pclass != CLASS_CAVALRY)) + + if (player_ptr->riding && (player_ptr->pclass != CLASS_BEASTMASTER) && (player_ptr->pclass != CLASS_CAVALRY)) { msg_print(_("ペットに乗ったままではアリーナへ入れさせてもらえなかった。", "You don't have permission to enter with pet.")); msg_print(NULL); + break; } - else - { - player_ptr->exit_bldg = FALSE; - reset_tim_flags(player_ptr); + + player_ptr->exit_bldg = FALSE; + reset_tim_flags(player_ptr); - /* Save the surface floor as saved floor */ - prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS); + /* Save the surface floor as saved floor */ + prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS); - player_ptr->current_floor_ptr->inside_arena = TRUE; - player_ptr->leaving = TRUE; - player_ptr->leave_bldg = TRUE; - } + player_ptr->current_floor_ptr->inside_arena = TRUE; + player_ptr->leaving = TRUE; + player_ptr->leave_bldg = TRUE; break; case BACT_POSTER: if (player_ptr->arena_number == MAX_ARENA_MONS) + { msg_print(_("あなたは勝利者だ。 アリーナでのセレモニーに参加しなさい。", "You are victorious. Enter the arena for the ceremony.")); + break; + } - else if (player_ptr->arena_number > MAX_ARENA_MONS) + if (player_ptr->arena_number > MAX_ARENA_MONS) { msg_print(_("あなたはすべての敵に勝利した。", "You have won against all foes.")); + break; } - else - { - r_ptr = &r_info[arena_info[player_ptr->arena_number].r_idx]; - name = (r_name + r_ptr->name); - msg_format(_("%s に挑戦するものはいないか?", "Do I hear any challenges against: %s"), name); - - player_ptr->monster_race_idx = arena_info[player_ptr->arena_number].r_idx; - player_ptr->window |= (PW_MONSTER); - handle_stuff(player_ptr); + + r_ptr = &r_info[arena_info[player_ptr->arena_number].r_idx]; + name = (r_name + r_ptr->name); + msg_format(_("%s に挑戦するものはいないか?", "Do I hear any challenges against: %s"), name); - } + player_ptr->monster_race_idx = arena_info[player_ptr->arena_number].r_idx; + player_ptr->window |= (PW_MONSTER); + handle_stuff(player_ptr); break; case BACT_ARENA_RULES: screen_save(); @@ -450,7 +455,6 @@ static void arena_comm(player_type *player_ptr, int cmd) /* Peruse the arena help file */ (void)show_file(TRUE, _("arena_j.txt", "arena.txt"), NULL, 0, 0); screen_load(); - break; } } @@ -569,11 +573,13 @@ static void display_fruit(int row, int col, int fruit) */ static void reset_deck(int deck[]) { - int i; - for (i = 0; i < 53; i++) deck[i] = i; + for (int i = 0; i < 53; i++) + { + deck[i] = i; + } /* shuffle cards */ - for (i = 0; i < 53; i++) { + for (int i = 0; i < 53; i++) { int tmp1 = randint0(53 - i) + i; int tmp2 = deck[i]; deck[i] = deck[tmp1]; @@ -588,11 +594,11 @@ static void reset_deck(int deck[]) */ static bool have_joker(void) { - int i; - - for (i = 0; i < 5; i++) { + for (int i = 0; i < 5; i++) + { if (IS_JOKER(cards[i])) return TRUE; } + return FALSE; } @@ -604,9 +610,11 @@ static bool have_joker(void) */ static bool find_card_num(int num) { - int i; - for (i = 0; i < 5; i++) + for (int i = 0; i < 5; i++) + { if (NUM_OF(cards[i]) == num && !IS_JOKER(cards[i])) return TRUE; + } + return FALSE; } @@ -617,17 +625,16 @@ static bool find_card_num(int num) */ static bool yaku_check_flush(void) { - int i, suit; bool joker_is_used = FALSE; - suit = IS_JOKER(cards[0]) ? SUIT_OF(cards[1]) : SUIT_OF(cards[0]); - for (i = 0; i < 5; i++) { - if (SUIT_OF(cards[i]) != suit) { - if (have_joker() && !joker_is_used) - joker_is_used = TRUE; - else - return FALSE; - } + int suit = IS_JOKER(cards[0]) ? SUIT_OF(cards[1]) : SUIT_OF(cards[0]); + for (int i = 0; i < 5; i++) { + if (SUIT_OF(cards[i]) == suit) continue; + + if (have_joker() && !joker_is_used) + joker_is_used = TRUE; + else + return FALSE; } return TRUE; @@ -640,12 +647,12 @@ static bool yaku_check_flush(void) */ static int yaku_check_straight(void) { - int i, lowest = 99; + int lowest = 99; bool joker_is_used = FALSE; bool straight = FALSE; /* get lowest */ - for (i = 0; i < 5; i++) + for (int i = 0; i < 5; i++) { if (NUM_OF(cards[i]) < lowest && !IS_JOKER(cards[i])) lowest = NUM_OF(cards[i]); @@ -654,7 +661,9 @@ static int yaku_check_straight(void) /* Check Royal Straight Flush */ if (yaku_check_flush()) { - if (lowest == 0) { + int i; + if (lowest == 0) + { for (i = 0; i < 4; i++) { if (!find_card_num(9 + i)) { @@ -664,14 +673,18 @@ static int yaku_check_straight(void) break; } } + if (i == 4) return 3; /* Wow! Royal Straight Flush!!! */ } - if (lowest == 9) { + + if (lowest == 9) + { for (i = 0; i < 3; i++) { if (!find_card_num(10 + i)) break; } + if (i == 3 && have_joker()) return 3; /* Wow! Royal Straight Flush!!! */ } } @@ -679,8 +692,10 @@ static int yaku_check_straight(void) joker_is_used = FALSE; /* Straight Only Check */ - - if (lowest == 0) { /* (10 - J - Q - K)[JOKER] - A */ + /* (10 - J - Q - K)[JOKER] - A */ + if (lowest == 0) + { + int i; for (i = 0; i < 4; i++) { if (!find_card_num(9 + i)) { @@ -690,20 +705,24 @@ static int yaku_check_straight(void) break; /* None */ } } + if (i == 4) straight = TRUE; } joker_is_used = FALSE; + int i; for (i = 0; i < 5; i++) { - if (!find_card_num(lowest + i)) { + if (!find_card_num(lowest + i)) + { if (have_joker() && !joker_is_used) joker_is_used = TRUE; else break; /* None */ } } + if (i == 5) straight = TRUE; if (straight && yaku_check_flush()) return 2; /* Straight Flush */ @@ -718,19 +737,19 @@ static int yaku_check_straight(void) */ static int yaku_check_pair(void) { - int i, i2, matching = 0; - - for (i = 0; i < 5; i++) + int matching = 0; + for (int i = 0; i < 5; i++) { - for (i2 = i + 1; i2 < 5; i2++) + for (int j = i + 1; j < 5; j++) { - if (IS_JOKER(cards[i]) || IS_JOKER(cards[i2])) continue; - if (NUM_OF(cards[i]) == NUM_OF(cards[i2])) + if (IS_JOKER(cards[i]) || IS_JOKER(cards[j])) continue; + if (NUM_OF(cards[i]) == NUM_OF(cards[j])) matching++; } } - if (have_joker()) { + if (have_joker()) + { switch (matching) { case 0: matching = 1; @@ -765,7 +784,8 @@ static int yaku_check(void) { prt(" ", 4, 3); - switch (yaku_check_straight()) { + switch (yaku_check_straight()) + { case 3: /* RF! */ c_put_str(TERM_YELLOW, _("ロイヤルストレートフラッシュ", "Royal Flush"), 4, 3); return ODDS_RF; @@ -830,9 +850,8 @@ static int yaku_check(void) */ static void display_kaeruka(int hoge, int kaeruka[]) { - int i; char col = TERM_WHITE; - for (i = 0; i < 5; i++) + for (int i = 0; i < 5; i++) { if (i == hoge) col = TERM_YELLOW; else if (kaeruka[i]) col = TERM_WHITE; @@ -843,6 +862,7 @@ static void display_kaeruka(int hoge, int kaeruka[]) else c_put_str(col, _("のこす", " Stay "), 14, 5 + i * 16); } + if (hoge > 4) col = TERM_YELLOW; else col = TERM_WHITE; c_put_str(col, _("決定", "Sure"), 16, 38); @@ -859,7 +879,6 @@ static void display_kaeruka(int hoge, int kaeruka[]) */ static void display_cards(void) { - int i, j; char suitcolor[4] = { TERM_YELLOW, TERM_L_RED, TERM_L_BLUE, TERM_L_GREEN }; #ifdef JP concptr suit[4] = { "★", "●", "¶", "†" }; @@ -1065,14 +1084,14 @@ static void display_cards(void) " " }; #endif - for (i = 0; i < 5; i++) + for (int i = 0; i < 5; i++) { prt(_("┏━━━━━━┓", " +------------+ "), 5, i * 16); } - for (i = 0; i < 5; i++) + for (int i = 0; i < 5; i++) { - for (j = 0; j < 7; j++) + for (int j = 0; j < 7; j++) { prt(_("┃", " |"), j + 6, i * 16); if (IS_JOKER(cards[i])) @@ -1082,7 +1101,8 @@ static void display_cards(void) prt(_("┃", "| "), j + 6, i * 16 + 14); } } - for (i = 0; i < 5; i++) + + for (int i = 0; i < 5; i++) { prt(_("┗━━━━━━┛", " +------------+ "), 13, i * 16); } @@ -1095,56 +1115,90 @@ static void display_cards(void) */ static int do_poker(void) { - int i, k = 2; - char cmd; - int deck[53]; /* yamafuda : 0...52 */ - int deck_ptr = 0; - int kaeruka[5]; /* 0:kaenai 1:kaeru */ + int is_put[5]; /* 0:kaenai 1:kaeru */ bool done = FALSE; - bool kettei = TRUE; - bool kakikae = TRUE; + bool decision = TRUE; + bool draw = TRUE; + int deck[53]; reset_deck(deck); - for (i = 0; i < 5; i++) + int deck_ptr = 0; + for (int i = 0; i < 5; i++) { cards[i] = deck[deck_ptr++]; - kaeruka[i] = 0; /* default:nokosu */ + is_put[i] = 0; } - /* suteruno wo kimeru */ prt(_("残すカードを決めて下さい(方向で移動, スペースで選択)。", "Stay witch? "), 0, 0); display_cards(); yaku_check(); + int k = 2; + char cmd; while (!done) { - if (kakikae) display_kaeruka(k + kettei * 5, kaeruka); - kakikae = FALSE; + if (draw) + { + display_kaeruka(k + decision * 5, is_put); + } + + draw = FALSE; cmd = inkey(); switch (cmd) { case '6': case 'l': case 'L': case KTRL('F'): - if (!kettei) k = (k + 1) % 5; - else { k = 0; kettei = FALSE; } - kakikae = TRUE; + if (!decision) + { + k = (k + 1) % 5; + } + else + { + k = 0; + decision = FALSE; + } + + draw = TRUE; break; case '4': case 'h': case 'H': case KTRL('B'): - if (!kettei) k = (k + 4) % 5; - else { k = 4; kettei = FALSE; } - kakikae = TRUE; + if (!decision) + { + k = (k + 4) % 5; + } + else + { + k = 4; + decision = FALSE; + } + + draw = TRUE; break; case '2': case 'j': case 'J': case KTRL('N'): - if (!kettei) { kettei = TRUE; kakikae = TRUE; } + if (!decision) + { + decision = TRUE; draw = TRUE; + } + break; case '8': case 'k': case 'K': case KTRL('P'): - if (kettei) { kettei = FALSE; kakikae = TRUE; } + if (decision) + { + decision = FALSE; draw = TRUE; + } + break; case ' ': case '\r': - if (kettei) done = TRUE; - else { kaeruka[k] = !kaeruka[k]; kakikae = TRUE; } + if (decision) + { + done = TRUE; + } + else + { + is_put[k] = !is_put[k]; draw = TRUE; + } + break; default: break; @@ -1153,8 +1207,10 @@ static int do_poker(void) prt("", 0, 0); - for (i = 0; i < 5; i++) - if (kaeruka[i] == 1) cards[i] = deck[deck_ptr++]; /* soshite toru */ + for (int i = 0; i < 5; i++) + { + if (is_put[i] == 1) cards[i] = deck[deck_ptr++]; + } display_cards(); @@ -1191,292 +1247,296 @@ static bool gamble_comm(player_type *player_ptr, int cmd) { /* Peruse the gambling help file */ (void)show_file(TRUE, _("jgambling.txt", "gambling.txt"), NULL, 0, 0); + screen_load(); + return TRUE; } - else + + /* No money */ + if (player_ptr->au < 1) { - /* No money */ - if (player_ptr->au < 1) - { - msg_print(_("おい!おまえ一文なしじゃないか!こっから出ていけ!", - "Hey! You don't have gold - get out of here!")); - msg_print(NULL); - screen_load(); - return FALSE; - } + msg_print(_("おい!おまえ一文なしじゃないか!こっから出ていけ!", + "Hey! You don't have gold - get out of here!")); + msg_print(NULL); + screen_load(); + return FALSE; + } - clear_bldg(5, 23); + clear_bldg(5, 23); - maxbet = player_ptr->lev * 200; + maxbet = player_ptr->lev * 200; - /* We can't bet more than we have */ - maxbet = MIN(maxbet, player_ptr->au); + /* We can't bet more than we have */ + maxbet = MIN(maxbet, player_ptr->au); - /* Get the wager */ - strcpy(out_val, ""); - sprintf(tmp_str, _("賭け金 (1-%ld)?", "Your wager (1-%ld) ? "), (long int)maxbet); + /* Get the wager */ + strcpy(out_val, ""); + sprintf(tmp_str, _("賭け金 (1-%ld)?", "Your wager (1-%ld) ? "), (long int)maxbet); - /* - * Use get_string() because we may need more than - * the s16b value returned by get_quantity(). - */ - if (get_string(tmp_str, out_val, 32)) - { - /* Strip spaces */ - for (p = out_val; *p == ' '; p++); + /* + * Use get_string() because we may need more than + * the s16b value returned by get_quantity(). + */ + if (!get_string(tmp_str, out_val, 32)) + { + msg_print(NULL); + screen_load(); + return TRUE; + } - /* Get the wager */ - wager = atol(p); + /* Strip spaces */ + for (p = out_val; *p == ' '; p++); - if (wager > player_ptr->au) - { - msg_print(_("おい!金が足りないじゃないか!出ていけ!", "Hey! You don't have the gold - get out of here!")); - msg_print(NULL); - screen_load(); - return FALSE; - } - else if (wager > maxbet) - { - msg_format(_("%ldゴールドだけ受けよう。残りは取っときな。", - "I'll take %ld gold of that. Keep the rest."), (long int)maxbet); - wager = maxbet; - } - else if (wager < 1) - { - msg_print(_("OK、1ゴールドからはじめよう。", "Ok, we'll start with 1 gold.")); - wager = 1; - } - msg_print(NULL); - win = FALSE; - odds = 0; - oldgold = player_ptr->au; + /* Get the wager */ + wager = atol(p); - sprintf(tmp_str, _("ゲーム前の所持金: %9ld", "Gold before game: %9ld"), (long int)oldgold); - prt(tmp_str, 20, 2); - sprintf(tmp_str, _("現在の掛け金: %9ld", "Current Wager: %9ld"), (long int)wager); - prt(tmp_str, 21, 2); + if (wager > player_ptr->au) + { + msg_print(_("おい!金が足りないじゃないか!出ていけ!", "Hey! You don't have the gold - get out of here!")); + msg_print(NULL); + screen_load(); + return FALSE; + } + else if (wager > maxbet) + { + msg_format(_("%ldゴールドだけ受けよう。残りは取っときな。", + "I'll take %ld gold of that. Keep the rest."), (long int)maxbet); + wager = maxbet; + } + else if (wager < 1) + { + msg_print(_("OK、1ゴールドからはじめよう。", "Ok, we'll start with 1 gold.")); + wager = 1; + } + msg_print(NULL); + win = FALSE; + odds = 0; + oldgold = player_ptr->au; - do - { - player_ptr->au -= wager; - switch (cmd) + sprintf(tmp_str, _("ゲーム前の所持金: %9ld", "Gold before game: %9ld"), (long int)oldgold); + prt(tmp_str, 20, 2); + sprintf(tmp_str, _("現在の掛け金: %9ld", "Current Wager: %9ld"), (long int)wager); + prt(tmp_str, 21, 2); + + do + { + player_ptr->au -= wager; + switch (cmd) + { + case BACT_IN_BETWEEN: /* Game of In-Between */ + c_put_str(TERM_GREEN, _("イン・ビトイーン", "In Between"), 5, 2); + + odds = 4; + win = FALSE; + roll1 = randint1(10); + roll2 = randint1(10); + choice = randint1(10); + sprintf(tmp_str, _("黒ダイス: %d 黒ダイス: %d", "Black die: %d Black Die: %d"), roll1, roll2); + + prt(tmp_str, 8, 3); + sprintf(tmp_str, _("赤ダイス: %d", "Red die: %d"), choice); + + prt(tmp_str, 11, 14); + if (((choice > roll1) && (choice < roll2)) || + ((choice < roll1) && (choice > roll2))) + win = TRUE; + break; + case BACT_CRAPS: /* Game of Craps */ + c_put_str(TERM_GREEN, _("クラップス", "Craps"), 5, 2); + + win = 3; + odds = 2; + roll1 = randint1(6); + roll2 = randint1(6); + roll3 = roll1 + roll2; + choice = roll3; + sprintf(tmp_str, _("1振りめ: %d %d Total: %d", + "First roll: %d %d Total: %d"), roll1, roll2, roll3); + prt(tmp_str, 7, 5); + if ((roll3 == 7) || (roll3 == 11)) + win = TRUE; + else if ((roll3 == 2) || (roll3 == 3) || (roll3 == 12)) + win = FALSE; + else + do { - case BACT_IN_BETWEEN: /* Game of In-Between */ - c_put_str(TERM_GREEN, _("イン・ビトイーン", "In Between"), 5, 2); - - odds = 4; - win = FALSE; - roll1 = randint1(10); - roll2 = randint1(10); - choice = randint1(10); - sprintf(tmp_str, _("黒ダイス: %d 黒ダイス: %d", "Black die: %d Black Die: %d"), roll1, roll2); - - prt(tmp_str, 8, 3); - sprintf(tmp_str, _("赤ダイス: %d", "Red die: %d"), choice); - - prt(tmp_str, 11, 14); - if (((choice > roll1) && (choice < roll2)) || - ((choice < roll1) && (choice > roll2))) - win = TRUE; - break; - case BACT_CRAPS: /* Game of Craps */ - c_put_str(TERM_GREEN, _("クラップス", "Craps"), 5, 2); + msg_print(_("なにかキーを押すともう一回振ります。", "Hit any key to roll again")); - win = 3; - odds = 2; + msg_print(NULL); roll1 = randint1(6); roll2 = randint1(6); roll3 = roll1 + roll2; - choice = roll3; - sprintf(tmp_str, _("1振りめ: %d %d Total: %d", - "First roll: %d %d Total: %d"), roll1, roll2, roll3); - prt(tmp_str, 7, 5); - if ((roll3 == 7) || (roll3 == 11)) + sprintf(tmp_str, _("出目: %d %d 合計: %d", + "Roll result: %d %d Total: %d"), roll1, roll2, roll3); + prt(tmp_str, 8, 5); + if (roll3 == choice) win = TRUE; - else if ((roll3 == 2) || (roll3 == 3) || (roll3 == 12)) + else if (roll3 == 7) win = FALSE; - else - do - { - msg_print(_("なにかキーを押すともう一回振ります。", "Hit any key to roll again")); - - msg_print(NULL); - roll1 = randint1(6); - roll2 = randint1(6); - roll3 = roll1 + roll2; - sprintf(tmp_str, _("出目: %d %d 合計: %d", - "Roll result: %d %d Total: %d"), roll1, roll2, roll3); - prt(tmp_str, 8, 5); - if (roll3 == choice) - win = TRUE; - else if (roll3 == 7) - win = FALSE; - } while ((win != TRUE) && (win != FALSE)); - break; + } while ((win != TRUE) && (win != FALSE)); + break; - case BACT_SPIN_WHEEL: /* Spin the Wheel Game */ - win = FALSE; - odds = 9; - c_put_str(TERM_GREEN, _("ルーレット", "Wheel"), 5, 2); - - prt("0 1 2 3 4 5 6 7 8 9", 7, 5); - prt("--------------------------------", 8, 3); - strcpy(out_val, ""); - get_string(_("何番? (0-9): ", "Pick a number (0-9): "), out_val, 32); - - for (p = out_val; iswspace(*p); p++); - choice = atol(p); - if (choice < 0) - { - msg_print(_("0番にしとくぜ。", "I'll put you down for 0.")); - choice = 0; - } - else if (choice > 9) - { - msg_print(_("OK、9番にしとくぜ。", "Ok, I'll put you down for 9.")); - choice = 9; - } - msg_print(NULL); - roll1 = randint0(10); - sprintf(tmp_str, _("ルーレットは回り、止まった。勝者は %d番だ。", - "The wheel spins to a stop and the winner is %d"), roll1); - prt(tmp_str, 13, 3); - prt("", 9, 0); - prt("*", 9, (3 * roll1 + 5)); - if (roll1 == choice) - win = TRUE; - break; + case BACT_SPIN_WHEEL: /* Spin the Wheel Game */ + win = FALSE; + odds = 9; + c_put_str(TERM_GREEN, _("ルーレット", "Wheel"), 5, 2); - case BACT_DICE_SLOTS: /* The Dice Slots */ - c_put_str(TERM_GREEN, _("ダイス・スロット", "Dice Slots"), 5, 2); - c_put_str(TERM_YELLOW, _("レモン レモン 2", ""), 6, 37); - c_put_str(TERM_YELLOW, _("レモン レモン レモン 5", ""), 7, 37); - c_put_str(TERM_ORANGE, _("オレンジ オレンジ オレンジ 10", ""), 8, 37); - c_put_str(TERM_UMBER, _("剣 剣 剣 20", ""), 9, 37); - c_put_str(TERM_SLATE, _("盾 盾 盾 50", ""), 10, 37); - c_put_str(TERM_VIOLET, _("プラム プラム プラム 200", ""), 11, 37); - c_put_str(TERM_RED, _("チェリー チェリー チェリー 1000", ""), 12, 37); - - win = FALSE; - roll1 = randint1(21); - for (i = 6; i > 0; i--) - { - if ((roll1 - i) < 1) - { - roll1 = 7 - i; - break; - } - roll1 -= i; - } - roll2 = randint1(21); - for (i = 6; i > 0; i--) - { - if ((roll2 - i) < 1) - { - roll2 = 7 - i; - break; - } - roll2 -= i; - } - choice = randint1(21); - for (i = 6; i > 0; i--) - { - if ((choice - i) < 1) - { - choice = 7 - i; - break; - } - choice -= i; - } - put_str("/--------------------------\\", 7, 2); - prt("\\--------------------------/", 17, 2); - display_fruit(8, 3, roll1 - 1); - display_fruit(8, 12, roll2 - 1); - display_fruit(8, 21, choice - 1); - if ((roll1 == roll2) && (roll2 == choice)) - { - win = TRUE; - switch (roll1) - { - case 1: - odds = 5; break; - case 2: - odds = 10; break; - case 3: - odds = 20; break; - case 4: - odds = 50; break; - case 5: - odds = 200; break; - case 6: - odds = 1000; break; - } - } - else if ((roll1 == 1) && (roll2 == 1)) - { - win = TRUE; - odds = 2; - } - break; - case BACT_POKER: - win = FALSE; - odds = do_poker(); - if (odds) win = TRUE; - break; - } + prt("0 1 2 3 4 5 6 7 8 9", 7, 5); + prt("--------------------------------", 8, 3); + strcpy(out_val, ""); + get_string(_("何番? (0-9): ", "Pick a number (0-9): "), out_val, 32); - if (win) - { - prt(_("あなたの勝ち", "YOU WON"), 16, 37); + for (p = out_val; iswspace(*p); p++); + choice = atol(p); + if (choice < 0) + { + msg_print(_("0番にしとくぜ。", "I'll put you down for 0.")); + choice = 0; + } + else if (choice > 9) + { + msg_print(_("OK、9番にしとくぜ。", "Ok, I'll put you down for 9.")); + choice = 9; + } + msg_print(NULL); + roll1 = randint0(10); + sprintf(tmp_str, _("ルーレットは回り、止まった。勝者は %d番だ。", + "The wheel spins to a stop and the winner is %d"), roll1); + prt(tmp_str, 13, 3); + prt("", 9, 0); + prt("*", 9, (3 * roll1 + 5)); + if (roll1 == choice) + win = TRUE; + break; - player_ptr->au += odds * wager; - sprintf(tmp_str, _("倍率: %d", "Payoff: %d"), odds); + case BACT_DICE_SLOTS: /* The Dice Slots */ + c_put_str(TERM_GREEN, _("ダイス・スロット", "Dice Slots"), 5, 2); + c_put_str(TERM_YELLOW, _("レモン レモン 2", ""), 6, 37); + c_put_str(TERM_YELLOW, _("レモン レモン レモン 5", ""), 7, 37); + c_put_str(TERM_ORANGE, _("オレンジ オレンジ オレンジ 10", ""), 8, 37); + c_put_str(TERM_UMBER, _("剣 剣 剣 20", ""), 9, 37); + c_put_str(TERM_SLATE, _("盾 盾 盾 50", ""), 10, 37); + c_put_str(TERM_VIOLET, _("プラム プラム プラム 200", ""), 11, 37); + c_put_str(TERM_RED, _("チェリー チェリー チェリー 1000", ""), 12, 37); - prt(tmp_str, 17, 37); + win = FALSE; + roll1 = randint1(21); + for (i = 6; i > 0; i--) + { + if ((roll1 - i) < 1) + { + roll1 = 7 - i; + break; } - else + roll1 -= i; + } + roll2 = randint1(21); + for (i = 6; i > 0; i--) + { + if ((roll2 - i) < 1) { - prt(_("あなたの負け", "You Lost"), 16, 37); - prt("", 17, 37); + roll2 = 7 - i; + break; } - - sprintf(tmp_str, _("現在の所持金: %9ld", "Current Gold: %9ld"), (long int)player_ptr->au); - - prt(tmp_str, 22, 2); - prt(_("もう一度(Y/N)?", "Again(Y/N)?"), 18, 37); - - move_cursor(18, 52); - again = inkey(); - prt("", 16, 37); - prt("", 17, 37); - prt("", 18, 37); - if (wager > player_ptr->au) + roll2 -= i; + } + choice = randint1(21); + for (i = 6; i > 0; i--) + { + if ((choice - i) < 1) { - msg_print(_("おい!金が足りないじゃないか!ここから出て行け!", - "Hey! You don't have the gold - get out of here!")); - msg_print(NULL); - - /* Get out here */ + choice = 7 - i; break; } - } while ((again == 'y') || (again == 'Y')); - - prt("", 18, 37); - if (player_ptr->au >= oldgold) + choice -= i; + } + put_str("/--------------------------\\", 7, 2); + prt("\\--------------------------/", 17, 2); + display_fruit(8, 3, roll1 - 1); + display_fruit(8, 12, roll2 - 1); + display_fruit(8, 21, choice - 1); + if ((roll1 == roll2) && (roll2 == choice)) { - msg_print(_("「今回は儲けたな!でも次はこっちが勝ってやるからな、絶対に!」", - "You came out a winner! We'll win next time, I'm sure.")); - chg_virtue(player_ptr, V_CHANCE, 3); + win = TRUE; + switch (roll1) + { + case 1: + odds = 5; break; + case 2: + odds = 10; break; + case 3: + odds = 20; break; + case 4: + odds = 50; break; + case 5: + odds = 200; break; + case 6: + odds = 1000; break; + } } - else + else if ((roll1 == 1) && (roll2 == 1)) { - msg_print(_("「金をスッてしまったな、わはは!うちに帰った方がいいぜ。」", "You lost gold! Haha, better head home.")); - chg_virtue(player_ptr, V_CHANCE, -3); + win = TRUE; + odds = 2; } + break; + case BACT_POKER: + win = FALSE; + odds = do_poker(); + if (odds) win = TRUE; + break; } - msg_print(NULL); + if (win) + { + prt(_("あなたの勝ち", "YOU WON"), 16, 37); + + player_ptr->au += odds * wager; + sprintf(tmp_str, _("倍率: %d", "Payoff: %d"), odds); + + prt(tmp_str, 17, 37); + } + else + { + prt(_("あなたの負け", "You Lost"), 16, 37); + prt("", 17, 37); + } + + sprintf(tmp_str, _("現在の所持金: %9ld", "Current Gold: %9ld"), (long int)player_ptr->au); + + prt(tmp_str, 22, 2); + prt(_("もう一度(Y/N)?", "Again(Y/N)?"), 18, 37); + + move_cursor(18, 52); + again = inkey(); + prt("", 16, 37); + prt("", 17, 37); + prt("", 18, 37); + if (wager > player_ptr->au) + { + msg_print(_("おい!金が足りないじゃないか!ここから出て行け!", + "Hey! You don't have the gold - get out of here!")); + msg_print(NULL); + + /* Get out here */ + break; + } + } while ((again == 'y') || (again == 'Y')); + + prt("", 18, 37); + if (player_ptr->au >= oldgold) + { + msg_print(_("「今回は儲けたな!でも次はこっちが勝ってやるからな、絶対に!」", + "You came out a winner! We'll win next time, I'm sure.")); + chg_virtue(player_ptr, V_CHANCE, 3); } + else + { + msg_print(_("「金をスッてしまったな、わはは!うちに帰った方がいいぜ。」", "You lost gold! Haha, better head home.")); + chg_virtue(player_ptr, V_CHANCE, -3); + } + + msg_print(NULL); screen_load(); return TRUE; } @@ -1497,7 +1557,9 @@ void update_gambling_monsters(player_type *player_ptr) bool old_inside_battle = player_ptr->phase_out; for (i = 0; i < current_world_ptr->max_d_idx; i++) + { if (max_dl < max_dlv[i]) max_dl = max_dlv[i]; + } mon_level = randint1(MIN(max_dl, 122)) + 5; if (randint0(100) < 60) @@ -1505,13 +1567,14 @@ void update_gambling_monsters(player_type *player_ptr) i = randint1(MIN(max_dl, 122)) + 5; mon_level = MAX(i, mon_level); } + if (randint0(100) < 30) { i = randint1(MIN(max_dl, 122)) + 5; mon_level = MAX(i, mon_level); } - while (1) + while (TRUE) { total = 0; tekitou = FALSE; @@ -1519,7 +1582,7 @@ void update_gambling_monsters(player_type *player_ptr) { MONRACE_IDX r_idx; int j; - while (1) + while (TRUE) { get_mon_num_prep(monster_can_entry_arena, NULL); player_ptr->phase_out = TRUE; @@ -1572,6 +1635,7 @@ void update_gambling_monsters(player_type *player_ptr) if (r_ptr->arena_ratio) power[i] = power[i] * r_ptr->arena_ratio / 100; total += power[i]; } + for (i = 0; i < 4; i++) { if (power[i] <= 0) break; @@ -1581,6 +1645,7 @@ void update_gambling_monsters(player_type *player_ptr) if (power[i] < 101) power[i] = 100 + randint1(5); mon_odds[i] = power[i]; } + if (i == 4) break; } } @@ -1614,108 +1679,110 @@ static bool kakutoujou(player_type *player_ptr) screen_load(); return FALSE; } - else + + int i; + + clear_bldg(4, 10); + + prt(_("モンスター 倍率", + "Monsters Odds"), 4, 4); + for (i = 0; i < 4; i++) { - int i; + char buf[80]; + monster_race *r_ptr = &r_info[battle_mon[i]]; - clear_bldg(4, 10); + sprintf(buf, _("%d) %-58s %4ld.%02ld倍", "%d) %-58s %4ld.%02ld"), i + 1, + _(format("%s%s", r_name + r_ptr->name, (r_ptr->flags1 & RF1_UNIQUE) ? "もどき" : " "), + format("%s%s", (r_ptr->flags1 & RF1_UNIQUE) ? "Fake " : "", r_name + r_ptr->name)), + (long int)mon_odds[i] / 100, (long int)mon_odds[i] % 100); + prt(buf, 5 + i, 1); + } - prt(_("モンスター 倍率", - "Monsters Odds"), 4, 4); - for (i = 0; i < 4; i++) - { - char buf[80]; - monster_race *r_ptr = &r_info[battle_mon[i]]; + prt(_("どれに賭けますか:", "Which monster: "), 0, 0); + while (TRUE) + { + i = inkey(); - sprintf(buf, _("%d) %-58s %4ld.%02ld倍", "%d) %-58s %4ld.%02ld"), i + 1, - _(format("%s%s", r_name + r_ptr->name, (r_ptr->flags1 & RF1_UNIQUE) ? "もどき" : " "), - format("%s%s", (r_ptr->flags1 & RF1_UNIQUE) ? "Fake " : "", r_name + r_ptr->name)), - (long int)mon_odds[i] / 100, (long int)mon_odds[i] % 100); - prt(buf, 5 + i, 1); - } - prt(_("どれに賭けますか:", "Which monster: "), 0, 0); - while (1) + if (i == ESCAPE) { - i = inkey(); + screen_load(); + return FALSE; + } - if (i == ESCAPE) - { - screen_load(); - return FALSE; - } - if (i >= '1' && i <= '4') - { - sel_monster = i - '1'; - battle_odds = mon_odds[sel_monster]; - break; - } - else bell(); + if (i >= '1' && i <= '4') + { + sel_monster = i - '1'; + battle_odds = mon_odds[sel_monster]; + break; } - clear_bldg(4, 4); - for (i = 0; i < 4; i++) - if (i != sel_monster) clear_bldg(i + 5, i + 5); + else bell(); + } - maxbet = player_ptr->lev * 200; + clear_bldg(4, 4); + for (i = 0; i < 4; i++) + if (i != sel_monster) clear_bldg(i + 5, i + 5); - /* We can't bet more than we have */ - maxbet = MIN(maxbet, player_ptr->au); + maxbet = player_ptr->lev * 200; - /* Get the wager */ - strcpy(out_val, ""); - sprintf(tmp_str, _("賭け金 (1-%ld)?", "Your wager (1-%ld) ? "), (long int)maxbet); - /* - * Use get_string() because we may need more than - * the s16b value returned by get_quantity(). - */ - if (get_string(tmp_str, out_val, 32)) - { - /* Strip spaces */ - for (p = out_val; *p == ' '; p++); + /* We can't bet more than we have */ + maxbet = MIN(maxbet, player_ptr->au); - /* Get the wager */ - wager = atol(p); + /* Get the wager */ + strcpy(out_val, ""); + sprintf(tmp_str, _("賭け金 (1-%ld)?", "Your wager (1-%ld) ? "), (long int)maxbet); - if (wager > player_ptr->au) - { - msg_print(_("おい!金が足りないじゃないか!出ていけ!", "Hey! You don't have the gold - get out of here!")); + /* + * Use get_string() because we may need more than + * the s16b value returned by get_quantity(). + */ + if (!get_string(tmp_str, out_val, 32)) + { + screen_load(); + return FALSE; + } + + /* Strip spaces */ + for (p = out_val; *p == ' '; p++); - msg_print(NULL); - screen_load(); - return FALSE; - } - else if (wager > maxbet) - { - msg_format(_("%ldゴールドだけ受けよう。残りは取っときな。", "I'll take %ld gold of that. Keep the rest."), (long int)maxbet); + /* Get the wager */ + wager = atol(p); - wager = maxbet; - } - else if (wager < 1) - { - msg_print(_("OK、1ゴールドでいこう。", "Ok, we'll start with 1 gold.")); - wager = 1; - } - msg_print(NULL); - battle_odds = MAX(wager + 1, wager * battle_odds / 100); - kakekin = wager; - player_ptr->au -= wager; - reset_tim_flags(player_ptr); + if (wager > player_ptr->au) + { + msg_print(_("おい!金が足りないじゃないか!出ていけ!", "Hey! You don't have the gold - get out of here!")); - /* Save the surface floor as saved floor */ - prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS); + msg_print(NULL); + screen_load(); + return FALSE; + } + else if (wager > maxbet) + { + msg_format(_("%ldゴールドだけ受けよう。残りは取っときな。", "I'll take %ld gold of that. Keep the rest."), (long int)maxbet); - player_ptr->phase_out = TRUE; - player_ptr->leaving = TRUE; - player_ptr->leave_bldg = TRUE; + wager = maxbet; + } + else if (wager < 1) + { + msg_print(_("OK、1ゴールドでいこう。", "Ok, we'll start with 1 gold.")); + wager = 1; + } - screen_load(); + msg_print(NULL); + battle_odds = MAX(wager + 1, wager * battle_odds / 100); + kakekin = wager; + player_ptr->au -= wager; + reset_tim_flags(player_ptr); - return TRUE; - } - } - screen_load(); + /* Save the surface floor as saved floor */ + prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS); - return FALSE; + player_ptr->phase_out = TRUE; + player_ptr->leaving = TRUE; + player_ptr->leave_bldg = TRUE; + + screen_load(); + return TRUE; } @@ -1762,14 +1829,13 @@ static void tsuchinoko(void) */ static void show_bounty(void) { - int i; TERM_LEN y = 0; clear_bldg(4, 18); prt(_("死体を持ち帰れば報酬を差し上げます。", "Offer a prize when you bring a wanted monster's corpse"), 4, 10); c_put_str(TERM_YELLOW, _("現在の賞金首", "Wanted monsters"), 6, 10); - for (i = 0; i < MAX_BOUNTY; i++) + for (int i = 0; i < MAX_BOUNTY; i++) { byte color; concptr done_mark; @@ -1841,14 +1907,12 @@ static struct { */ static bool kankin(player_type *player_ptr) { - INVENTORY_IDX i; - int j; bool change = FALSE; GAME_TEXT o_name[MAX_NLEN]; object_type *o_ptr; /* Loop for inventory and right/left arm */ - for (i = 0; i <= INVEN_LARM; i++) + for (INVENTORY_IDX i = 0; i <= INVEN_LARM; i++) { o_ptr = &player_ptr->inventory_list[i]; @@ -1869,7 +1933,7 @@ static bool kankin(player_type *player_ptr) } } - for (i = 0; i < INVEN_PACK; i++) + for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) { o_ptr = &player_ptr->inventory_list[i]; @@ -1890,7 +1954,7 @@ static bool kankin(player_type *player_ptr) } } - for (i = 0; i < INVEN_PACK; i++) + for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) { o_ptr = &player_ptr->inventory_list[i]; @@ -1911,7 +1975,7 @@ static bool kankin(player_type *player_ptr) } } - for (i = 0; i < INVEN_PACK; i++) + for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) { o_ptr = &player_ptr->inventory_list[i]; if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_CORPSE) && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name))) @@ -1930,7 +1994,7 @@ static bool kankin(player_type *player_ptr) } } - for (i = 0; i < INVEN_PACK; i++) + for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) { o_ptr = &player_ptr->inventory_list[i]; @@ -1950,70 +2014,69 @@ static bool kankin(player_type *player_ptr) } } - for (j = 0; j < MAX_BOUNTY; j++) + for (int j = 0; j < MAX_BOUNTY; j++) { - /* Need reverse order --- Positions will be changed in the loop */ - for (i = INVEN_PACK - 1; i >= 0; i--) + for (INVENTORY_IDX i = INVEN_PACK - 1; i >= 0; i--) { o_ptr = &player_ptr->inventory_list[i]; - if ((o_ptr->tval == TV_CORPSE) && (o_ptr->pval == current_world_ptr->bounty_r_idx[j])) - { - char buf[MAX_NLEN + 20]; - int num, k; - INVENTORY_IDX item_new; - object_type forge; + if ((o_ptr->tval != TV_CORPSE) || (o_ptr->pval != current_world_ptr->bounty_r_idx[j])) continue; - object_desc(o_name, o_ptr, 0); - sprintf(buf, _("%sを渡しますか?", "Hand %s over? "), o_name); - if (!get_check(buf)) continue; + char buf[MAX_NLEN + 20]; + int num, k; + INVENTORY_IDX item_new; + object_type forge; + + object_desc(o_name, o_ptr, 0); + sprintf(buf, _("%sを渡しますか?", "Hand %s over? "), o_name); + if (!get_check(buf)) continue; #if 0 /* Obsoleted */ - msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (r_info[current_world_ptr->bounty_r_idx[j]].level + 1) * 300 * o_ptr->number); - player_ptr->au += (r_info[current_world_ptr->bounty_r_idx[j]].level + 1) * 300 * o_ptr->number; - player_ptr->redraw |= (PR_GOLD); - vary_item(i, -o_ptr->number); - chg_virtue(player_ptr, V_JUSTICE, 5); - current_world_ptr->bounty_r_idx[j] += 10000; + msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (r_info[current_world_ptr->bounty_r_idx[j]].level + 1) * 300 * o_ptr->number); + player_ptr->au += (r_info[current_world_ptr->bounty_r_idx[j]].level + 1) * 300 * o_ptr->number; + player_ptr->redraw |= (PR_GOLD); + vary_item(i, -o_ptr->number); + chg_virtue(player_ptr, V_JUSTICE, 5); + current_world_ptr->bounty_r_idx[j] += 10000; - change = TRUE; + change = TRUE; #endif /* Obsoleted */ - /* Hand it first */ - vary_item(player_ptr, i, -o_ptr->number); + /* Hand it first */ + vary_item(player_ptr, i, -o_ptr->number); - chg_virtue(player_ptr, V_JUSTICE, 5); - current_world_ptr->bounty_r_idx[j] += 10000; + chg_virtue(player_ptr, V_JUSTICE, 5); + current_world_ptr->bounty_r_idx[j] += 10000; - /* Count number of unique corpses already handed */ - for (num = 0, k = 0; k < MAX_BOUNTY; k++) - { - if (current_world_ptr->bounty_r_idx[k] >= 10000) num++; - } - msg_format(_("これで合計 %d ポイント獲得しました。", "You earned %d point%s total."), num, (num > 1 ? "s" : "")); + /* Count number of unique corpses already handed */ + for (num = 0, k = 0; k < MAX_BOUNTY; k++) + { + if (current_world_ptr->bounty_r_idx[k] >= 10000) num++; + } - /* Prepare to make a prize */ - object_prep(&forge, lookup_kind(prize_list[num - 1].tval, prize_list[num - 1].sval)); - apply_magic(player_ptr, &forge, player_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART); + msg_format(_("これで合計 %d ポイント獲得しました。", "You earned %d point%s total."), num, (num > 1 ? "s" : "")); - object_aware(player_ptr, &forge); - object_known(&forge); + /* Prepare to make a prize */ + object_prep(&forge, lookup_kind(prize_list[num - 1].tval, prize_list[num - 1].sval)); + apply_magic(player_ptr, &forge, player_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART); - /* - * Hand it --- Assume there is an empty slot. - * Since a corpse is handed at first, - * there is at least one empty slot. - */ - item_new = inven_carry(player_ptr, &forge); + object_aware(player_ptr, &forge); + object_known(&forge); - object_desc(o_name, &forge, 0); - msg_format(_("%s(%c)を貰った。", "You get %s (%c). "), o_name, index_to_label(item_new)); + /* + * Hand it --- Assume there is an empty slot. + * Since a corpse is handed at first, + * there is at least one empty slot. + */ + item_new = inven_carry(player_ptr, &forge); - /* Auto-inscription */ - autopick_alter_item(player_ptr, item_new, FALSE); - handle_stuff(player_ptr); + object_desc(o_name, &forge, 0); + msg_format(_("%s(%c)を貰った。", "You get %s (%c). "), o_name, index_to_label(item_new)); - change = TRUE; - } + /* Auto-inscription */ + autopick_alter_item(player_ptr, item_new, FALSE); + handle_stuff(player_ptr); + + change = TRUE; } } @@ -2047,88 +2110,88 @@ static bool inn_comm(player_type *customer_ptr, int cmd) msg_print(_("今は満腹だ。", "You are full now.")); return FALSE; } + msg_print(_("バーテンはいくらかの食べ物とビールをくれた。", "The barkeep gives you some gruel and a beer.")); (void)set_food(customer_ptr, PY_FOOD_MAX - 1); break; case BACT_REST: /* Rest for the night */ + { if ((customer_ptr->poisoned) || (customer_ptr->cut)) { msg_print(_("あなたに必要なのは部屋ではなく、治療者です。", "You need a healer, not a room.")); msg_print(NULL); msg_print(_("すみません、でもうちで誰かに死なれちゃ困りますんで。", "Sorry, but don't want anyone dying in here.")); + break; } + + s32b oldturn = current_world_ptr->game_turn; + int prev_day, prev_hour, prev_min; + + extract_day_hour_min(&prev_day, &prev_hour, &prev_min); + if ((prev_hour >= 6) && (prev_hour <= 17)) + exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over daytime at the inn.")); else + exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over night at the inn.")); + + current_world_ptr->game_turn = (current_world_ptr->game_turn / (TURNS_PER_TICK * TOWN_DAWN / 2) + 1) * (TURNS_PER_TICK * TOWN_DAWN / 2); + if (current_world_ptr->dungeon_turn < current_world_ptr->dungeon_turn_limit) { - s32b oldturn = current_world_ptr->game_turn; - int prev_day, prev_hour, prev_min; + current_world_ptr->dungeon_turn += MIN((current_world_ptr->game_turn - oldturn), TURNS_PER_TICK * 250) * INN_DUNGEON_TURN_ADJ; + if (current_world_ptr->dungeon_turn > current_world_ptr->dungeon_turn_limit) current_world_ptr->dungeon_turn = current_world_ptr->dungeon_turn_limit; + } - extract_day_hour_min(&prev_day, &prev_hour, &prev_min); - if ((prev_hour >= 6) && (prev_hour <= 17)) - exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over daytime at the inn.")); - else - exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over night at the inn.")); + prevent_turn_overflow(); + + if ((prev_hour >= 18) && (prev_hour <= 23)) exe_write_diary(customer_ptr, NIKKI_HIGAWARI, 0, NULL); + customer_ptr->chp = customer_ptr->mhp; + + if (ironman_nightmare) + { + msg_print(_("眠りに就くと恐ろしい光景が心をよぎった。", "Horrible visions flit through your mind as you sleep.")); + + /* Have some nightmares */ + while (TRUE) + { + sanity_blast(customer_ptr, NULL, FALSE); + if (!one_in_(3)) break; + } - current_world_ptr->game_turn = (current_world_ptr->game_turn / (TURNS_PER_TICK * TOWN_DAWN / 2) + 1) * (TURNS_PER_TICK * TOWN_DAWN / 2); - if (current_world_ptr->dungeon_turn < current_world_ptr->dungeon_turn_limit) + msg_print(_("あなたは絶叫して目を覚ました。", "You awake screaming.")); + exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("悪夢にうなされてよく眠れなかった。", "be troubled by a nightmare.")); + break; + } + + set_blind(customer_ptr, 0); + set_confused(customer_ptr, 0); + customer_ptr->stun = 0; + customer_ptr->chp = customer_ptr->mhp; + customer_ptr->csp = customer_ptr->msp; + if (customer_ptr->pclass == CLASS_MAGIC_EATER) + { + int i; + for (i = 0; i < 72; i++) { - current_world_ptr->dungeon_turn += MIN((current_world_ptr->game_turn - oldturn), TURNS_PER_TICK * 250) * INN_DUNGEON_TURN_ADJ; - if (current_world_ptr->dungeon_turn > current_world_ptr->dungeon_turn_limit) current_world_ptr->dungeon_turn = current_world_ptr->dungeon_turn_limit; + customer_ptr->magic_num1[i] = customer_ptr->magic_num2[i] * EATER_CHARGE; } - prevent_turn_overflow(); - - if ((prev_hour >= 18) && (prev_hour <= 23)) exe_write_diary(customer_ptr, NIKKI_HIGAWARI, 0, NULL); - customer_ptr->chp = customer_ptr->mhp; - - if (ironman_nightmare) + for (; i < 108; i++) { - msg_print(_("眠りに就くと恐ろしい光景が心をよぎった。", "Horrible visions flit through your mind as you sleep.")); - - /* Have some nightmares */ - while (1) - { - sanity_blast(customer_ptr, NULL, FALSE); - if (!one_in_(3)) break; - } - - msg_print(_("あなたは絶叫して目を覚ました。", "You awake screaming.")); - exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("悪夢にうなされてよく眠れなかった。", "be troubled by a nightmare.")); + customer_ptr->magic_num1[i] = 0; } - else - { - set_blind(customer_ptr, 0); - set_confused(customer_ptr, 0); - customer_ptr->stun = 0; - customer_ptr->chp = customer_ptr->mhp; - customer_ptr->csp = customer_ptr->msp; - if (customer_ptr->pclass == CLASS_MAGIC_EATER) - { - int i; - for (i = 0; i < 72; i++) - { - customer_ptr->magic_num1[i] = customer_ptr->magic_num2[i] * EATER_CHARGE; - } - for (; i < 108; i++) - { - customer_ptr->magic_num1[i] = 0; - } - } + } - if ((prev_hour >= 6) && (prev_hour <= 17)) - { - msg_print(_("あなたはリフレッシュして目覚め、夕方を迎えた。", "You awake refreshed for the evening.")); - exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("夕方を迎えた。", "awake refreshed.")); - } - else - { - msg_print(_("あなたはリフレッシュして目覚め、新たな日を迎えた。", "You awake refreshed for the new day.")); - exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("すがすがしい朝を迎えた。", "awake refreshed.")); - } - } + if ((prev_hour >= 6) && (prev_hour <= 17)) + { + msg_print(_("あなたはリフレッシュして目覚め、夕方を迎えた。", "You awake refreshed for the evening.")); + exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("夕方を迎えた。", "awake refreshed.")); + break; } + + msg_print(_("あなたはリフレッシュして目覚め、新たな日を迎えた。", "You awake refreshed for the new day.")); + exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("すがすがしい朝を迎えた。", "awake refreshed.")); break; - + } case BACT_RUMORS: /* Listen for rumors */ { display_rumor(TRUE); @@ -2149,12 +2212,7 @@ static bool inn_comm(player_type *customer_ptr, int cmd) */ static void get_questinfo(player_type *player_ptr, IDX questnum, bool do_init) { - int i; - QUEST_IDX old_quest; - GAME_TEXT tmp_str[80]; - - /* Clear the text */ - for (i = 0; i < 10; i++) + for (int i = 0; i < 10; i++) { quest_text[i][0] = '\0'; } @@ -2163,7 +2221,7 @@ static void get_questinfo(player_type *player_ptr, IDX questnum, bool do_init) /* Set the quest number temporary */ floor_type *floor_ptr = player_ptr->current_floor_ptr; - old_quest = floor_ptr->inside_quest; + QUEST_IDX old_quest = floor_ptr->inside_quest; floor_ptr->inside_quest = questnum; /* Get the quest text */ @@ -2176,13 +2234,14 @@ static void get_questinfo(player_type *player_ptr, IDX questnum, bool do_init) floor_ptr->inside_quest = old_quest; /* Print the quest info */ + GAME_TEXT tmp_str[80]; sprintf(tmp_str, _("クエスト情報 (危険度: %d 階相当)", "Quest Information (Danger level: %d)"), (int)quest[questnum].level); prt(tmp_str, 5, 0); prt(quest[questnum].name, 7, 0); - for (i = 0; i < 10; i++) + for (int i = 0; i < 10; i++) { c_put_str(TERM_YELLOW, quest_text[i], i + 8, 0); } @@ -2195,95 +2254,79 @@ static void get_questinfo(player_type *player_ptr, IDX questnum, bool do_init) */ static void castle_quest(player_type *player_ptr) { - QUEST_IDX q_index = 0; - monster_race *r_ptr; - quest_type *q_ptr; - concptr name; - - clear_bldg(4, 18); + QUEST_IDX q_index = player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].special; - /* Current quest of the building */ - q_index = player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].special; - - /* Is there a quest available at the building? */ if (!q_index) { put_str(_("今のところクエストはありません。", "I don't have a quest for you at the moment."), 8, 0); return; } + quest_type *q_ptr; q_ptr = &quest[q_index]; - - /* Quest is completed */ if (q_ptr->status == QUEST_STATUS_COMPLETED) { - /* Rewarded quest */ q_ptr->status = QUEST_STATUS_REWARDED; - get_questinfo(player_ptr, q_index, FALSE); - reinit_wilderness = TRUE; + return; } - /* Failed quest */ - else if (q_ptr->status == QUEST_STATUS_FAILED) + + if (q_ptr->status == QUEST_STATUS_FAILED) { get_questinfo(player_ptr, q_index, FALSE); - - /* Mark quest as done (but failed) */ q_ptr->status = QUEST_STATUS_FAILED_DONE; - reinit_wilderness = TRUE; + return; } - /* Quest is still unfinished */ - else if (q_ptr->status == QUEST_STATUS_TAKEN) + + if (q_ptr->status == QUEST_STATUS_TAKEN) { put_str(_("あなたは現在のクエストを終了させていません!", "You have not completed your current quest yet!"), 8, 0); put_str(_("CTRL-Qを使えばクエストの状態がチェックできます。", "Use CTRL-Q to check the status of your quest."), 9, 0); put_str(_("クエストを終わらせたら戻って来て下さい。", "Return when you have completed your quest."), 12, 0); + return; } - /* No quest yet */ - else if (q_ptr->status == QUEST_STATUS_UNTAKEN) - { - q_ptr->status = QUEST_STATUS_TAKEN; - - reinit_wilderness = TRUE; + + if (q_ptr->status != QUEST_STATUS_UNTAKEN) return; - /* Assign a new quest */ - if (q_ptr->type == QUEST_TYPE_KILL_ANY_LEVEL) - { - if (q_ptr->r_idx == 0) - { - /* Random monster at least 5 - 10 levels out of deep */ - q_ptr->r_idx = get_mon_num(q_ptr->level + 4 + randint1(6)); - } + q_ptr->status = QUEST_STATUS_TAKEN; + reinit_wilderness = TRUE; + if (q_ptr->type != QUEST_TYPE_KILL_ANY_LEVEL) + { + get_questinfo(player_ptr, q_index, TRUE); + return; + } - r_ptr = &r_info[q_ptr->r_idx]; + if (q_ptr->r_idx == 0) + { + /* Random monster at least 5 - 10 levels out of deep */ + q_ptr->r_idx = get_mon_num(q_ptr->level + 4 + randint1(6)); + } - while ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->rarity != 1)) - { - q_ptr->r_idx = get_mon_num(q_ptr->level) + 4 + randint1(6); - r_ptr = &r_info[q_ptr->r_idx]; - } + monster_race *r_ptr; + r_ptr = &r_info[q_ptr->r_idx]; - if (q_ptr->max_num == 0) - { - /* Random monster number */ - if (randint1(10) > 7) - q_ptr->max_num = 1; - else - q_ptr->max_num = randint1(3) + 1; - } + while ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->rarity != 1)) + { + q_ptr->r_idx = get_mon_num(q_ptr->level) + 4 + randint1(6); + r_ptr = &r_info[q_ptr->r_idx]; + } - q_ptr->cur_num = 0; - name = (r_name + r_ptr->name); - msg_format(_("クエスト: %sを %d体倒す", "Your quest: kill %d %s"), name, q_ptr->max_num); - } + if (q_ptr->max_num == 0) + { + /* Random monster number */ + if (randint1(10) > 7) + q_ptr->max_num = 1; else - { - get_questinfo(player_ptr, q_index, TRUE); - } + q_ptr->max_num = randint1(3) + 1; } + + q_ptr->cur_num = 0; + concptr name = (r_name + r_ptr->name); + msg_format(_("クエスト: %sを %d体倒す", "Your quest: kill %d %s"), name, q_ptr->max_num); + get_questinfo(player_ptr, q_index, TRUE); } @@ -2294,8 +2337,6 @@ static void castle_quest(player_type *player_ptr) static void town_history(void) { screen_save(); - - /* Peruse the building help file */ (void)show_file(TRUE, _("jbldg.txt", "bldg.txt"), NULL, 0, 0); screen_load(); } @@ -2319,14 +2360,13 @@ static HIT_POINT calc_slaydam(HIT_POINT dam, int mult, int div, bool force) tmp /= div * 2; tmp += dam * 60 * 2; tmp /= 60; + return tmp; } - else - { - tmp = dam * 60; - tmp *= mult; - tmp /= div; - tmp /= 60; - } + + tmp = dam * 60; + tmp *= mult; + tmp /= div; + tmp /= 60; return tmp; } @@ -2374,19 +2414,11 @@ static u32b calc_expect_dice(u32b dam, int mult, int div, bool force, WEIGHT wei */ static void show_weapon_dmg(int r, int c, int mindice, int maxdice, int blows, int dam_bonus, concptr attr, byte color) { - GAME_TEXT tmp_str[80]; - int mindam, maxdam; - - mindam = blows * (mindice + dam_bonus); - maxdam = blows * (maxdice + dam_bonus); - - /* Print the intro text */ c_put_str(color, attr, r, c); - - /* Calculate the min and max damage figures */ + GAME_TEXT tmp_str[80]; + int mindam = blows * (mindice + dam_bonus); + int maxdam = blows * (maxdice + dam_bonus); sprintf(tmp_str, _("1ターン: %d-%d ダメージ", "Attack: %d-%d damage"), mindam, maxdam); - - /* Print the damage */ put_str(tmp_str, r, c + 8); } @@ -2477,6 +2509,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("動物:", "Animals:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_EVIL)) { mindam = calc_expect_dice(mindice, 7, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2489,6 +2522,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 2, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("邪悪:", "Evil:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_HUMAN)) { mindam = calc_expect_dice(mindice, 4, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2501,6 +2535,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("人間:", "Human:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_UNDEAD)) { mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2513,6 +2548,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("不死:", "Undead:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_DEMON)) { mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2525,6 +2561,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("悪魔:", "Demons:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_ORC)) { mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2537,6 +2574,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("オーク:", "Orcs:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_TROLL)) { mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2549,6 +2587,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("トロル:", "Trolls:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_GIANT)) { mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2561,6 +2600,7 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("巨人:", "Giants:"), TERM_YELLOW); } + if (have_flag(flgs, TR_KILL_DRAGON)) { mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2573,30 +2613,35 @@ static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int c maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("竜:", "Dragons:"), TERM_YELLOW); } + if (have_flag(flgs, TR_BRAND_ACID)) { mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("酸属性:", "Acid:"), TERM_RED); } + if (have_flag(flgs, TR_BRAND_ELEC)) { mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("電属性:", "Elec:"), TERM_RED); } + if (have_flag(flgs, TR_BRAND_FIRE)) { mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("炎属性:", "Fire:"), TERM_RED); } + if (have_flag(flgs, TR_BRAND_COLD)) { mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("冷属性:", "Cold:"), TERM_RED); } + if (have_flag(flgs, TR_BRAND_POIS)) { mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div); @@ -2675,12 +2720,9 @@ static void list_weapon(player_type *player_ptr, object_type *o_ptr, TERM_LEN ro */ static PRICE compare_weapons(player_type *customer_ptr, PRICE bcost) { - int i, n; - OBJECT_IDX item, item2; object_type *o_ptr[2]; object_type orig_weapon; object_type *i_ptr; - concptr q, s; TERM_LEN row = 2; TERM_LEN wid = 38, mgn = 2; bool old_character_xtra = current_world_ptr->character_xtra; @@ -2698,17 +2740,18 @@ static PRICE compare_weapons(player_type *customer_ptr, PRICE bcost) item_tester_hook = item_tester_hook_orthodox_melee_weapons; /* Get the first weapon */ - q = _("第一の武器は?", "What is your first weapon? "); - s = _("比べるものがありません。", "You have nothing to compare."); + concptr q = _("第一の武器は?", "What is your first weapon? "); + concptr s = _("比べるものがありません。", "You have nothing to compare."); + OBJECT_IDX item; o_ptr[0] = choose_object(customer_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), 0); if (!o_ptr[0]) { screen_load(); - return (0); + return 0; } - n = 1; + int n = 1; total = bcost; while (TRUE) @@ -2722,7 +2765,7 @@ static PRICE compare_weapons(player_type *customer_ptr, PRICE bcost) current_world_ptr->character_xtra = TRUE; /* Diaplay selected weapon's infomation */ - for (i = 0; i < n; i++) + for (int i = 0; i < n; i++) { int col = (wid * i + mgn); @@ -2759,34 +2802,30 @@ static PRICE compare_weapons(player_type *customer_ptr, PRICE bcost) flush(); ch = inkey(); - if (ch == 's') + if (ch != 's') break; + + if (total + cost > customer_ptr->au) { - if (total + cost > customer_ptr->au) - { - msg_print(_("お金が足りません!", "You don't have enough money!")); - msg_print(NULL); - continue; - } + msg_print(_("お金が足りません!", "You don't have enough money!")); + msg_print(NULL); + continue; + } - q = _("第二の武器は?", "What is your second weapon? "); - s = _("比べるものがありません。", "You have nothing to compare."); + q = _("第二の武器は?", "What is your second weapon? "); + s = _("比べるものがありません。", "You have nothing to compare."); - /* Get the second weapon */ - o_ptr[1] = choose_object(customer_ptr, &item2, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), 0); - if (!o_ptr[1]) continue; + /* Get the second weapon */ + OBJECT_IDX item2; + o_ptr[1] = choose_object(customer_ptr, &item2, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), 0); + if (!o_ptr[1]) continue; - total += cost; - cost = bcost / 2; - n = 2; - } - else - { - break; - } + total += cost; + cost = bcost / 2; + n = 2; } screen_load(); - return (total); + return total; } @@ -2886,15 +2925,14 @@ static bool eval_ac(ARMOUR_CLASS iAC) */ static void give_one_ability_of_object(object_type *to_ptr, object_type *from_ptr) { - int i, n = 0; - int cand[TR_FLAG_MAX]; BIT_FLAGS to_flgs[TR_FLAG_SIZE]; BIT_FLAGS from_flgs[TR_FLAG_SIZE]; - object_flags(to_ptr, to_flgs); object_flags(from_ptr, from_flgs); - for (i = 0; i < TR_FLAG_MAX; i++) + int n = 0; + int cand[TR_FLAG_MAX]; + for (int i = 0; i < TR_FLAG_MAX; i++) { switch (i) { @@ -2939,26 +2977,19 @@ static void give_one_ability_of_object(object_type *to_ptr, object_type *from_pt */ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) { - PRICE cost; - OBJECT_IDX item, mater; - object_type *o_ptr, *mo_ptr; /* broken weapon and material weapon */ - object_kind *k_ptr; - int i, dd_bonus, ds_bonus; - KIND_OBJECT_IDX k_idx; - char basenm[MAX_NLEN]; - concptr q, s; - int row = 7; clear_bldg(0, 22); - + int row = 7; prt(_("修復には材料となるもう1つの武器が必要です。", "Hand one material weapon to repair a broken weapon."), row, 2); prt(_("材料に使用した武器はなくなります!", "The material weapon will disappear after repairing!!"), row + 1, 2); - q = _("どの折れた武器を修復しますか?", "Repair which broken weapon? "); - s = _("修復できる折れた武器がありません。", "You have no broken weapon to repair."); + concptr q = _("どの折れた武器を修復しますか?", "Repair which broken weapon? "); + concptr s = _("修復できる折れた武器がありません。", "You have no broken weapon to repair."); /* Only forge broken weapons */ item_tester_hook = item_tester_hook_broken_weapon; + OBJECT_IDX item; + object_type *o_ptr; o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_EQUIP), 0); if (!o_ptr) return (0); @@ -2977,6 +3008,7 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) } /* Display item name */ + char basenm[MAX_NLEN]; object_desc(basenm, o_ptr, OD_NAME_ONLY); prt(format(_("修復する武器 : %s", "Repairing: %s"), basenm), row + 3, 2); @@ -2986,6 +3018,8 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) /* Only forge broken weapons */ item_tester_hook = item_tester_hook_orthodox_melee_weapons; + OBJECT_IDX mater; + object_type *mo_ptr; mo_ptr = choose_object(player_ptr, &mater, q, s, (USE_INVEN | USE_EQUIP), 0); if (!mo_ptr) return (0); if (mater == item) @@ -2999,9 +3033,9 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) prt(format(_("材料とする武器: %s", "Material : %s"), basenm), row + 4, 2); /* Get the value of one of the items (except curses) */ - cost = bcost + object_value_real(o_ptr) * 2; + PRICE cost = bcost + object_value_real(o_ptr) * 2; - if (!get_check(format(_("$%dかかりますがよろしいですか? ", "Costs %d gold, okay? "), cost))) return (0); + if (!get_check(format(_("$%dかかりますがよろしいですか? ", "Costs %d gold, okay? "), cost))) return 0; /* Check if the player has enough money */ if (player_ptr->au < cost) @@ -3014,6 +3048,7 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) player_ptr->total_weight -= o_ptr->weight; + KIND_OBJECT_IDX k_idx; if (o_ptr->sval == SV_BROKEN_DAGGER) { KIND_OBJECT_IDX j; @@ -3044,7 +3079,7 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) /* Repair to a sword or sometimes material's type weapon */ OBJECT_TYPE_VALUE tval = (one_in_(5) ? mo_ptr->tval : TV_SWORD); - while (1) + while (TRUE) { object_kind *ck_ptr; @@ -3075,12 +3110,13 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) } /* Calculate dice bonuses */ - dd_bonus = o_ptr->dd - k_info[o_ptr->k_idx].dd; - ds_bonus = o_ptr->ds - k_info[o_ptr->k_idx].ds; + int dd_bonus = o_ptr->dd - k_info[o_ptr->k_idx].dd; + int ds_bonus = o_ptr->ds - k_info[o_ptr->k_idx].ds; dd_bonus += mo_ptr->dd - k_info[mo_ptr->k_idx].dd; ds_bonus += mo_ptr->ds - k_info[mo_ptr->k_idx].ds; /* Change base object */ + object_kind *k_ptr; k_ptr = &k_info[k_idx]; o_ptr->k_idx = k_idx; o_ptr->weight = k_ptr->weight; @@ -3090,23 +3126,23 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) o_ptr->ds = k_ptr->ds; /* Copy base object's ability */ - for (i = 0; i < TR_FLAG_SIZE; i++) o_ptr->art_flags[i] |= k_ptr->flags[i]; + for (int i = 0; i < TR_FLAG_SIZE; i++) o_ptr->art_flags[i] |= k_ptr->flags[i]; if (k_ptr->pval) o_ptr->pval = MAX(o_ptr->pval, randint1(k_ptr->pval)); if (have_flag(k_ptr->flags, TR_ACTIVATE)) o_ptr->xtra2 = (byte_hack)k_ptr->act_idx; - /* Dice up */ if (dd_bonus > 0) { o_ptr->dd++; - for (i = 1; i < dd_bonus; i++) + for (int i = 1; i < dd_bonus; i++) { if (one_in_(o_ptr->dd + i)) o_ptr->dd++; } } + if (ds_bonus > 0) { o_ptr->ds++; - for (i = 1; i < ds_bonus; i++) + for (int i = 1; i < ds_bonus; i++) { if (one_in_(o_ptr->ds + i)) o_ptr->ds++; } @@ -3174,11 +3210,8 @@ static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost) inven_item_increase(player_ptr, mater, -1); inven_item_optimize(player_ptr, mater); - /* Copyback */ player_ptr->update |= PU_BONUS; handle_stuff(player_ptr); - - /* Something happened */ return (cost); } @@ -3210,25 +3243,21 @@ static int repair_broken_weapon(player_type *player_ptr, PRICE bcost) */ static bool enchant_item(player_type *player_ptr, PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_CLASS to_ac) { - int i; - OBJECT_IDX item; - bool okay = FALSE; - object_type *o_ptr; - concptr q, s; - int maxenchant = (player_ptr->lev / 5); - char tmp_str[MAX_NLEN]; - clear_bldg(4, 18); + int maxenchant = (player_ptr->lev / 5); prt(format(_("現在のあなたの技量だと、+%d まで改良できます。", " Based on your skill, we can improve up to +%d."), maxenchant), 5, 0); prt(format(_(" 改良の料金は一個につき$%d です。", " The price for the service is %d gold per item."), cost), 7, 0); - q = _("どのアイテムを改良しますか?", "Improve which item? "); - s = _("改良できるものがありません。", "You have nothing to improve."); + concptr q = _("どのアイテムを改良しますか?", "Improve which item? "); + concptr s = _("改良できるものがありません。", "You have nothing to improve."); + OBJECT_IDX item; + object_type *o_ptr; o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_EQUIP | IGNORE_BOTHHAND_SLOT), item_tester_tval); if (!o_ptr) return FALSE; /* Check if the player has enough money */ + char tmp_str[MAX_NLEN]; if (player_ptr->au < (cost * o_ptr->number)) { object_desc(tmp_str, o_ptr, OD_NAME_ONLY); @@ -3237,41 +3266,33 @@ static bool enchant_item(player_type *player_ptr, PRICE cost, HIT_PROB to_hit, H } /* Enchant to hit */ - for (i = 0; i < to_hit; i++) + bool okay = FALSE; + for (int i = 0; i < to_hit; i++) { - if (o_ptr->to_h < maxenchant) + if ((o_ptr->to_h < maxenchant) && enchant(player_ptr, o_ptr, 1, (ENCH_TOHIT | ENCH_FORCE))) { - if (enchant(player_ptr, o_ptr, 1, (ENCH_TOHIT | ENCH_FORCE))) - { - okay = TRUE; - break; - } + okay = TRUE; + break; } } /* Enchant to damage */ - for (i = 0; i < to_dam; i++) + for (int i = 0; i < to_dam; i++) { - if (o_ptr->to_d < maxenchant) + if ((o_ptr->to_d < maxenchant) && enchant(player_ptr, o_ptr, 1, (ENCH_TODAM | ENCH_FORCE))) { - if (enchant(player_ptr, o_ptr, 1, (ENCH_TODAM | ENCH_FORCE))) - { - okay = TRUE; - break; - } + okay = TRUE; + break; } } /* Enchant to AC */ - for (i = 0; i < to_ac; i++) + for (int i = 0; i < to_ac; i++) { - if (o_ptr->to_a < maxenchant) + if ((o_ptr->to_a < maxenchant) && enchant(player_ptr, o_ptr, 1, (ENCH_TOAC | ENCH_FORCE))) { - if (enchant(player_ptr, o_ptr, 1, (ENCH_TOAC | ENCH_FORCE))) - { - okay = TRUE; - break; - } + okay = TRUE; + break; } } @@ -3282,23 +3303,17 @@ static bool enchant_item(player_type *player_ptr, PRICE cost, HIT_PROB to_hit, H msg_print(_("改良に失敗した。", "The improvement failed.")); return FALSE; } - else - { - object_desc(tmp_str, o_ptr, OD_NAME_AND_ENCHANT); + + object_desc(tmp_str, o_ptr, OD_NAME_AND_ENCHANT); #ifdef JP - msg_format("$%dで%sに改良しました。", cost * o_ptr->number, tmp_str); + msg_format("$%dで%sに改良しました。", cost * o_ptr->number, tmp_str); #else - msg_format("Improved into %s for %d gold.", tmp_str, cost * o_ptr->number); + msg_format("Improved into %s for %d gold.", tmp_str, cost * o_ptr->number); #endif - /* Charge the money */ - player_ptr->au -= (cost * o_ptr->number); - - if (item >= INVEN_RARM) calc_android_exp(player_ptr); - - /* Something happened */ - return TRUE; - } + player_ptr->au -= (cost * o_ptr->number); + if (item >= INVEN_RARM) calc_android_exp(player_ptr); + return TRUE; } @@ -3316,32 +3331,20 @@ static bool enchant_item(player_type *player_ptr, PRICE cost, HIT_PROB to_hit, H */ static void building_recharge(player_type *player_ptr) { - OBJECT_IDX item; - DEPTH lev; - object_type *o_ptr; - object_kind *k_ptr; - concptr q, s; - PRICE price; - PARAMETER_VALUE charges; - int max_charges; - char tmp_str[MAX_NLEN]; - msg_flag = FALSE; - - /* Display some info */ clear_bldg(4, 18); prt(_(" 再充填の費用はアイテムの種類によります。", " The prices of recharge depend on the type."), 6, 0); - - - /* Only accept legal items */ item_tester_hook = item_tester_hook_recharge; - q = _("どのアイテムに魔力を充填しますか? ", "Recharge which item? "); - s = _("魔力を充填すべきアイテムがない。", "You have nothing to recharge."); + concptr q = _("どのアイテムに魔力を充填しますか? ", "Recharge which item? "); + concptr s = _("魔力を充填すべきアイテムがない。", "You have nothing to recharge."); + OBJECT_IDX item; + object_type *o_ptr; o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), 0); if (!o_ptr) return; + object_kind *k_ptr; k_ptr = &k_info[o_ptr->k_idx]; /* @@ -3349,6 +3352,7 @@ static void building_recharge(player_type *player_ptr) * the level of the item or the number of charges. */ /* The item must be "known" */ + char tmp_str[MAX_NLEN]; if (!object_is_known(o_ptr)) { msg_format(_("充填する前に鑑定されている必要があります!", "The item must be identified first!")); @@ -3369,16 +3373,13 @@ static void building_recharge(player_type *player_ptr) /* Update the gold display */ building_prt_gold(player_ptr); } - else - { - return; - } + + return; } /* Extract the object "level" */ - lev = k_info[o_ptr->k_idx].level; - - /* Price for a rod */ + DEPTH lev = k_info[o_ptr->k_idx].level; + PRICE price; if (o_ptr->tval == TV_ROD) { if (o_ptr->timeout > 0) @@ -3396,18 +3397,12 @@ static void building_recharge(player_type *player_ptr) } else if (o_ptr->tval == TV_STAFF) { - /* Price per charge ( = double the price paid by shopkeepers for the charge) */ price = (k_info[o_ptr->k_idx].cost / 10) * o_ptr->number; - - /* Pay at least 10 gold per charge */ price = MAX(10, price); } else { - /* Price per charge ( = double the price paid by shopkeepers for the charge) */ price = (k_info[o_ptr->k_idx].cost / 10); - - /* Pay at least 10 gold per charge */ price = MAX(10, price); } @@ -3423,6 +3418,7 @@ static void building_recharge(player_type *player_ptr) { msg_print(_("この魔法棒はもう充分に充填されています。", "This wand is already fully charged.")); } + return; } else if (o_ptr->tval == TV_STAFF && o_ptr->pval >= k_ptr->pval) @@ -3435,6 +3431,7 @@ static void building_recharge(player_type *player_ptr) { msg_print(_("この杖はもう充分に充填されています。", "This staff is already fully charged.")); } + return; } @@ -3447,10 +3444,10 @@ static void building_recharge(player_type *player_ptr) #else msg_format("You need %d gold to recharge %s!", price, tmp_str); #endif - return; } + PARAMETER_VALUE charges; if (o_ptr->tval == TV_ROD) { #ifdef JP @@ -3471,6 +3468,7 @@ static void building_recharge(player_type *player_ptr) } else { + int max_charges; if (o_ptr->tval == TV_STAFF) max_charges = k_ptr->pval - o_ptr->pval; else @@ -3483,17 +3481,11 @@ static void building_recharge(player_type *player_ptr) /* Do nothing */ if (charges < 1) return; - /* Get the new price */ price *= charges; - - /* Recharge */ o_ptr->pval += charges; - - /* We no longer think the item is empty */ o_ptr->ident &= ~(IDENT_EMPTY); } - /* Give feedback */ object_desc(tmp_str, o_ptr, 0); #ifdef JP msg_format("%sを$%d で再充填しました。", tmp_str, price); @@ -3501,14 +3493,8 @@ static void building_recharge(player_type *player_ptr) msg_format("%^s %s recharged for %d gold.", tmp_str, ((o_ptr->number > 1) ? "were" : "was"), price); #endif player_ptr->update |= (PU_COMBINE | PU_REORDER); - player_ptr->window |= (PW_INVEN); - - /* Pay the price */ player_ptr->au -= price; - - /* Finished */ - return; } @@ -3526,21 +3512,15 @@ static void building_recharge(player_type *player_ptr) */ static void building_recharge_all(player_type *player_ptr) { - INVENTORY_IDX i; - DEPTH lev; - object_type *o_ptr; - object_kind *k_ptr; - PRICE price = 0; - PRICE total_cost = 0; - - /* Display some info */ msg_flag = FALSE; clear_bldg(4, 18); prt(_(" 再充填の費用はアイテムの種類によります。", " The prices of recharge depend on the type."), 6, 0); - /* Calculate cost */ - for (i = 0; i < INVEN_PACK; i++) + PRICE price = 0; + PRICE total_cost = 0; + for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) { + object_type *o_ptr; o_ptr = &player_ptr->inventory_list[i]; /* skip non magic device */ @@ -3550,8 +3530,8 @@ static void building_recharge_all(player_type *player_ptr) if (!object_is_known(o_ptr)) total_cost += 50; /* Extract the object "level" */ - lev = k_info[o_ptr->k_idx].level; - + DEPTH lev = k_info[o_ptr->k_idx].level; + object_kind *k_ptr; k_ptr = &k_info[o_ptr->k_idx]; switch (o_ptr->tval) @@ -3601,11 +3581,14 @@ static void building_recharge_all(player_type *player_ptr) msg_print(NULL); return; } + if (!get_check(format(_("すべてのアイテムを $%d で再充填しますか?", "Recharge all items for %d gold? "), total_cost))) return; - for (i = 0; i < INVEN_PACK; i++) + for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) { + object_type *o_ptr; o_ptr = &player_ptr->inventory_list[i]; + object_kind *k_ptr; k_ptr = &k_info[o_ptr->k_idx]; /* skip non magic device */ @@ -3639,18 +3622,11 @@ static void building_recharge_all(player_type *player_ptr) } } - /* Give feedback */ msg_format(_("$%d で再充填しました。", "You pay %d gold."), total_cost); msg_print(NULL); player_ptr->update |= (PU_COMBINE | PU_REORDER); - player_ptr->window |= (PW_INVEN); - - /* Pay the price */ player_ptr->au -= total_cost; - - /* Finished */ - return; } @@ -3662,10 +3638,6 @@ static void building_recharge_all(player_type *player_ptr) */ static bool research_mon(player_type *player_ptr) { - IDX i; - int n; - MONRACE_IDX r_idx; - char sym, query; char buf[128]; bool notpicked; bool recall = FALSE; @@ -3685,16 +3657,17 @@ static bool research_mon(player_type *player_ptr) screen_save(); /* Get a character, or abort */ + char sym; if (!get_com(_("モンスターの文字を入力して下さい(記号 or ^A全,^Uユ,^N非ユ,^M名前):", "Enter character to be identified(^A:All,^U:Uniqs,^N:Non uniqs,^M:Name): "), &sym, FALSE)) { screen_load(); - return FALSE; } /* Find that character info, and describe it */ + IDX i; for (i = 0; ident_info[i]; ++i) { if (sym == ident_info[i][0]) break; @@ -3726,6 +3699,7 @@ static bool research_mon(player_type *player_ptr) return FALSE; } + sprintf(buf, _("名前:%sにマッチ", "Monsters with a name \"%s\""), temp); } else if (ident_info[i]) @@ -3744,6 +3718,7 @@ static bool research_mon(player_type *player_ptr) C_MAKE(who, max_r_idx, MONRACE_IDX); /* Collect matching monsters */ + int n; for (n = 0, i = 1; i < max_r_idx; i++) { monster_race *r_ptr = &r_info[i]; @@ -3761,10 +3736,7 @@ static bool research_mon(player_type *player_ptr) /* 名前検索 */ if (temp[0]) { - int xx; - char temp2[80]; - - for (xx = 0; temp[xx] && xx < 80; xx++) + for (int xx = 0; temp[xx] && xx < 80; xx++) { #ifdef JP if (iskanji(temp[xx])) @@ -3776,13 +3748,16 @@ static bool research_mon(player_type *player_ptr) if (isupper(temp[xx])) temp[xx] = (char)tolower(temp[xx]); } + char temp2[80]; #ifdef JP strcpy(temp2, r_name + r_ptr->E_name); #else strcpy(temp2, r_name + r_ptr->name); #endif - for (xx = 0; temp2[xx] && xx < 80; xx++) + for (int xx = 0; temp2[xx] && xx < 80; xx++) + { if (isupper(temp2[xx])) temp2[xx] = (char)tolower(temp2[xx]); + } #ifdef JP if (my_strstr(temp2, temp) || my_strstr(r_name + r_ptr->name, temp)) @@ -3791,7 +3766,10 @@ static bool research_mon(player_type *player_ptr) #endif who[n++] = i; } - else if (all || (r_ptr->d_char == sym)) who[n++] = i; + else if (all || (r_ptr->d_char == sym)) + { + who[n++] = i; + } } /* Nothing to recall */ @@ -3806,7 +3784,7 @@ static bool research_mon(player_type *player_ptr) /* Sort by level */ why = 2; - query = 'y'; + char query = 'y'; /* Sort if needed */ if (why) @@ -3814,7 +3792,6 @@ static bool research_mon(player_type *player_ptr) ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook); } - /* Start at the end */ /* XTRA HACK REMEMBER_IDX */ if (old_sym == sym && old_i < n) i = old_i; @@ -3823,6 +3800,7 @@ static bool research_mon(player_type *player_ptr) notpicked = TRUE; /* Scan the monster memory */ + MONRACE_IDX r_idx; while (notpicked) { r_idx = who[i]; @@ -3834,7 +3812,7 @@ static bool research_mon(player_type *player_ptr) Term_addstr(-1, TERM_WHITE, _(" ['r'思い出, ' 'で続行, ESC]", " [(r)ecall, ESC, space to continue]")); /* Interact */ - while (1) + while (TRUE) { if (recall) { @@ -3875,27 +3853,20 @@ static bool research_mon(player_type *player_ptr) i = 0; if (!expand_list) break; } + + continue; } - /* Move to "next" monster */ - else + if (i-- == 0) { - if (i-- == 0) - { - i = n - 1; - if (!expand_list) break; - } + i = n - 1; + if (!expand_list) break; } } - /* Re-display the identity */ - /* prt(buf, 5, 5);*/ - - /* Free the "who" array */ C_KILL(who, max_r_idx, MONRACE_IDX); screen_load(); - - return (!notpicked); + return !notpicked; } @@ -3908,13 +3879,10 @@ static bool research_mon(player_type *player_ptr) */ static void bldg_process_command(player_type *player_ptr, building_type *bldg, int i) { - BACT_IDX bact = bldg->actions[i]; - PRICE bcost; - bool paid = FALSE; - msg_flag = FALSE; msg_erase(); + PRICE bcost; if (is_owner(player_ptr, bldg)) bcost = bldg->member_costs[i]; else @@ -3929,6 +3897,7 @@ static void bldg_process_command(player_type *player_ptr, building_type *bldg, i } /* check gold (HACK - Recharge uses variable costs) */ + BACT_IDX bact = bldg->actions[i]; if ((bact != BACT_RECHARGE) && (((bldg->member_costs[i] > player_ptr->au) && is_owner(player_ptr, bldg)) || ((bldg->other_costs[i] > player_ptr->au) && !is_owner(player_ptr, bldg)))) @@ -3937,6 +3906,7 @@ static void bldg_process_command(player_type *player_ptr, building_type *bldg, i return; } + bool paid = FALSE; switch (bact) { case BACT_NOTHING: @@ -4040,12 +4010,11 @@ static void bldg_process_command(player_type *player_ptr, building_type *bldg, i { while (!lose_mutation(player_ptr, 0)); paid = TRUE; + break; } - else - { - msg_print(_("治すべき突然変異が無い。", "You have no mutations.")); - msg_print(NULL); - } + + msg_print(_("治すべき突然変異が無い。", "You have no mutations.")); + msg_print(NULL); break; case BACT_BATTLE: @@ -4117,11 +4086,6 @@ static void bldg_process_command(player_type *player_ptr, building_type *bldg, i */ void do_cmd_bldg(player_type *player_ptr) { - int i, which; - char command; - bool validcmd; - building_type *bldg; - if (player_ptr->wild_mode) return; take_turn(player_ptr, 100); @@ -4132,8 +4096,9 @@ void do_cmd_bldg(player_type *player_ptr) return; } - which = f_info[player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].feat].subtype; + int which = f_info[player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].feat].subtype; + building_type *bldg; bldg = &building[which]; /* Don't re-init the wilderness */ @@ -4204,6 +4169,7 @@ void do_cmd_bldg(player_type *player_ptr) play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_BUILD); + bool validcmd; while (!player_ptr->leave_bldg) { validcmd = FALSE; @@ -4211,7 +4177,7 @@ void do_cmd_bldg(player_type *player_ptr) building_prt_gold(player_ptr); - command = inkey(); + char command = inkey(); if (command == ESCAPE) { @@ -4221,15 +4187,13 @@ void do_cmd_bldg(player_type *player_ptr) break; } + int i; for (i = 0; i < 8; i++) { - if (bldg->letters[i]) + if (bldg->letters[i] && (bldg->letters[i] == command)) { - if (bldg->letters[i] == command) - { - validcmd = TRUE; - break; - } + validcmd = TRUE; + break; } } @@ -4266,9 +4230,6 @@ void do_cmd_bldg(player_type *player_ptr) void determine_daily_bounty(player_type *player_ptr, bool conv_old) { int max_dl = 3, i; - bool old_inside_battle = player_ptr->phase_out; - monster_race *r_ptr; - if (!conv_old) { for (i = 0; i < current_world_ptr->max_d_idx; i++) @@ -4277,14 +4238,18 @@ void determine_daily_bounty(player_type *player_ptr, bool conv_old) if (max_dl < max_dlv[i]) max_dl = max_dlv[i]; } } - else max_dl = MAX(max_dlv[DUNGEON_ANGBAND], 3); + else + { + max_dl = MAX(max_dlv[DUNGEON_ANGBAND], 3); + } player_ptr->phase_out = TRUE; get_mon_num_prep(NULL, NULL); - while (1) + while (TRUE) { today_mon = get_mon_num(max_dl); + monster_race *r_ptr; r_ptr = &r_info[today_mon]; if (r_ptr->flags1 & RF1_UNIQUE) continue; @@ -4297,6 +4262,7 @@ void determine_daily_bounty(player_type *player_ptr, bool conv_old) } player_ptr->today_mon = 0; + bool old_inside_battle = player_ptr->phase_out; player_ptr->phase_out = old_inside_battle; } @@ -4307,38 +4273,42 @@ void determine_daily_bounty(player_type *player_ptr, bool conv_old) */ void determine_bounty_uniques(void) { - int i, j; - MONRACE_IDX tmp; - monster_race *r_ptr; - get_mon_num_prep(NULL, NULL); - for (i = 0; i < MAX_BOUNTY; i++) + for (int i = 0; i < MAX_BOUNTY; i++) { - while (1) + while (TRUE) { current_world_ptr->bounty_r_idx[i] = get_mon_num(MAX_DEPTH - 1); + monster_race *r_ptr; r_ptr = &r_info[current_world_ptr->bounty_r_idx[i]]; if (!(r_ptr->flags1 & RF1_UNIQUE)) continue; - if (!(r_ptr->flags9 & (RF9_DROP_CORPSE | RF9_DROP_SKELETON))) continue; + if (!(r_ptr->flags9 & (RF9_DROP_CORPSE | RF9_DROP_SKELETON))) + continue; if (r_ptr->rarity > 100) continue; - if (no_questor_or_bounty_uniques(current_world_ptr->bounty_r_idx[i])) continue; + if (no_questor_or_bounty_uniques(current_world_ptr->bounty_r_idx[i])) + continue; + int j; for (j = 0; j < i; j++) - if (current_world_ptr->bounty_r_idx[i] == current_world_ptr->bounty_r_idx[j]) break; + { + if (current_world_ptr->bounty_r_idx[i] == current_world_ptr->bounty_r_idx[j]) + break; + } if (j == i) break; } } /* Sort them */ - for (i = 0; i < MAX_BOUNTY - 1; i++) + for (int i = 0; i < MAX_BOUNTY - 1; i++) { - for (j = i; j < MAX_BOUNTY; j++) + for (int j = i; j < MAX_BOUNTY; j++) { + MONRACE_IDX tmp; if (r_info[current_world_ptr->bounty_r_idx[i]].level > r_info[current_world_ptr->bounty_r_idx[j]].level) { tmp = current_world_ptr->bounty_r_idx[i]; -- 2.11.0