OSDN Git Service

ソキ・ネ・鬣テ・ラ。「キルハヨ、ノイテ。」
[hengband/hengband.git] / src / bldg.c
index 9ebd150..c7b6c6f 100644 (file)
@@ -564,7 +564,7 @@ static void reset_deck(int deck[])
 
        /* shuffle cards */
        for (i = 0; i < 53; i++){
-               int tmp1 = rand_int(53 - i) + i;
+               int tmp1 = randint0(53 - i) + i;
                int tmp2 = deck[i];
                deck[i] = deck[tmp1];
                deck[tmp1] = tmp2;
@@ -1364,9 +1364,9 @@ c_put_str(TERM_GREEN, "
 
                                        odds = 4;
                                        win = FALSE;
-                                       roll1 = randint(10);
-                                       roll2 = randint(10);
-                                       choice = randint(10);
+                                       roll1 = randint1(10);
+                                       roll2 = randint1(10);
+                                       choice = randint1(10);
 #ifdef JP
 sprintf(tmp_str, "¹õ¥À¥¤¥¹: %d        ¹õ¥À¥¤¥¹: %d", roll1, roll2);
 #else
@@ -1394,8 +1394,8 @@ c_put_str(TERM_GREEN, "
 
                                        win = 3;
                                        odds = 2;
-                                       roll1 = randint(6);
-                                       roll2 = randint(6);
+                                       roll1 = randint1(6);
+                                       roll2 = randint1(6);
                                        roll3 = roll1 +  roll2;
                                        choice = roll3;
 #ifdef JP
@@ -1420,8 +1420,8 @@ msg_print("
 #endif
 
                                                        msg_print(NULL);
-                                                       roll1 = randint(6);
-                                                       roll2 = randint(6);
+                                                       roll1 = randint1(6);
+                                                       roll2 = randint1(6);
                                                        roll3 = roll1 +  roll2;
 
 #ifdef JP
@@ -1480,7 +1480,7 @@ msg_print("
                                                choice = 9;
                                        }
                                        msg_print(NULL);
-                                       roll1 = rand_int(10);
+                                       roll1 = randint0(10);
 #ifdef JP
 sprintf(tmp_str, "¥ë¡¼¥ì¥Ã¥È¤Ï²ó¤ê¡¢»ß¤Þ¤Ã¤¿¡£¾¡¼Ô¤Ï %dÈÖ¤À¡£",
 #else
@@ -1510,7 +1510,7 @@ c_put_str(TERM_GREEN, "
 #endif
 
                                        win = FALSE;
-                                       roll1 = randint(21);
+                                       roll1 = randint1(21);
                                        for (i=6;i>0;i--)
                                        {
                                                if ((roll1-i) < 1)
@@ -1520,7 +1520,7 @@ c_put_str(TERM_GREEN, "
                                                }
                                                roll1 -= i;
                                        }
-                                       roll2 = randint(21);
+                                       roll2 = randint1(21);
                                        for (i=6;i>0;i--)
                                        {
                                                if ((roll2-i) < 1)
@@ -1530,7 +1530,7 @@ c_put_str(TERM_GREEN, "
                                                }
                                                roll2 -= i;
                                        }
-                                       choice = randint(21);
+                                       choice = randint1(21);
                                        for (i=6;i>0;i--)
                                        {
                                                if ((choice-i) < 1)
@@ -1709,15 +1709,15 @@ void battle_monsters(void)
        for (i = 0; i < max_d_idx; i++)
                if (max_dl < max_dlv[i]) max_dl = max_dlv[i];
 
-       mon_level = randint(MIN(max_dl, 122))+5;
-       if (rand_int(100) < 60)
+       mon_level = randint1(MIN(max_dl, 122))+5;
+       if (randint0(100) < 60)
        {
-               i = randint(MIN(max_dl, 122))+5;
+               i = randint1(MIN(max_dl, 122))+5;
                mon_level = MAX(i, mon_level);
        }
-       if (rand_int(100) < 30)
+       if (randint0(100) < 30)
        {
-               i = randint(MIN(max_dl, 122))+5;
+               i = randint1(MIN(max_dl, 122))+5;
                mon_level = MAX(i, mon_level);
        }
 
@@ -1906,8 +1906,8 @@ void battle_monsters(void)
                {
                        power[i] = total*60/power[i];
                        if (tekitou && ((power[i] < 160) || power[i] > 1500)) break;
-                       if ((power[i] < 160) && rand_int(20)) break;
-                       if (power[i] < 101) power[i] = 100 + randint(5);
+                       if ((power[i] < 160) && randint0(20)) break;
+                       if (power[i] < 101) power[i] = 100 + randint1(5);
                        mon_odds[i] = power[i];
                }
                if (i == 4) break;
@@ -2439,12 +2439,12 @@ msg_format("%s%s
                msg_format("You behold the %s visage of %s!",
 #endif
 
-                                         funny_desc[rand_int(MAX_SAN_FUNNY)], m_name);
+                                         funny_desc[randint0(MAX_SAN_FUNNY)], m_name);
 
                if (one_in_(3))
                {
-                       msg_print(funny_comments[rand_int(MAX_SAN_COMMENT)]);
-                       p_ptr->image = p_ptr->image + randint(r_ptr->level);
+                       msg_print(funny_comments[randint0(MAX_SAN_COMMENT)]);
+                       p_ptr->image = p_ptr->image + randint1(r_ptr->level);
                }
 
                /* Never mind; we can't see it clearly enough */
@@ -2458,7 +2458,7 @@ msg_format("%s%s
        msg_format("You behold the %s visage of %s!",
 #endif
 
-                                 horror_desc[rand_int(MAX_SAN_HORROR)], desc);
+                                 horror_desc[randint0(MAX_SAN_HORROR)], desc);
 
        r_ptr->r_flags2 |= RF2_ELDRITCH_HORROR;
 
@@ -2485,11 +2485,11 @@ msg_format("%s%s
        {
                if (!p_ptr->resist_conf)
                {
-                       (void)set_confused(p_ptr->confused + rand_int(4) + 4);
+                       (void)set_confused(p_ptr->confused + randint0(4) + 4);
                }
                if (!p_ptr->resist_chaos && one_in_(3))
                {
-                       (void)set_image(p_ptr->image + rand_int(250) + 150);
+                       (void)set_image(p_ptr->image + randint0(250) + 150);
                }
                return;
        }
@@ -2507,11 +2507,11 @@ msg_format("%s%s
        {
                if (!p_ptr->resist_conf)
                {
-                       (void)set_confused(p_ptr->confused + rand_int(4) + 4);
+                       (void)set_confused(p_ptr->confused + randint0(4) + 4);
                }
                if (!p_ptr->free_act)
                {
-                       (void)set_paralyzed(p_ptr->paralyzed + rand_int(4) + 4);
+                       (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
                }
                while (!saving_throw(p_ptr->skill_sav))
                {
@@ -2523,7 +2523,7 @@ msg_format("%s%s
                }
                if (!p_ptr->resist_chaos)
                {
-                       (void)set_image(p_ptr->image + rand_int(250) + 150);
+                       (void)set_image(p_ptr->image + randint0(250) + 150);
                }
                return;
        }
@@ -2555,7 +2555,7 @@ msg_print("
 
        while (!happened)
        {
-               switch (randint(4))
+               switch (randint1(4))
                {
                        case 1:
                        {
@@ -2968,24 +2968,24 @@ put_str("
                        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 + randint(6));
+                               q_ptr->r_idx = get_mon_num(q_ptr->level + 4 + randint1(6));
                        }
 
                        r_ptr = &r_info[q_ptr->r_idx];
 
                        while ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->rarity != 1))
                        {
-                               q_ptr->r_idx = get_mon_num(q_ptr->level) + 4 + randint(6);
+                               q_ptr->r_idx = get_mon_num(q_ptr->level) + 4 + randint1(6);
                                r_ptr = &r_info[q_ptr->r_idx];
                        }
 
                        if (q_ptr->max_num == 0)
                        {
                                /* Random monster number */
-                               if (randint(10) > 7)
+                               if (randint1(10) > 7)
                                        q_ptr->max_num = 1;
                                else
-                                       q_ptr->max_num = randint(3) + 1;
+                                       q_ptr->max_num = randint1(3) + 1;
                        }
 
                        q_ptr->cur_num = 0;
@@ -3015,7 +3015,7 @@ static void town_history(void)
 
        /* Peruse the building help file */
 #ifdef JP
-(void)show_file(TRUE, "bldg_j.txt", NULL, 0, 0);
+(void)show_file(TRUE, "jbldg.txt", NULL, 0, 0);
 #else
        (void)show_file(TRUE, "bldg.txt", NULL, 0, 0);
 #endif
@@ -3076,11 +3076,11 @@ static void compare_weapon_aux1(object_type *o_ptr, int col, int r)
                if ((o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE)))
                        mult = mult * (o_ptr->dd + 2) / o_ptr->dd;
        }
-       if ((p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) mult = mult * 7 / 2;
+       if ((p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEAPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) mult = mult * 7 / 2;
 
        /* Print the relevant lines */
 #ifdef JP
-if (f1 & TR1_FORCE_WEPON)     compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 1*mult, "ÍýÎÏ:", f1, f2, f3, TERM_L_BLUE);
+if (f1 & TR1_FORCE_WEAPON)     compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 1*mult, "ÍýÎÏ:", f1, f2, f3, TERM_L_BLUE);
 if (f1 & TR1_SLAY_ANIMAL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 2*mult, "ưʪ:", f1, f2, f3, TERM_YELLOW);
 if (f1 & TR1_SLAY_EVIL)   compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 2*mult, "¼Ù°­:", f1, f2, f3, TERM_YELLOW);
 if (f1 & TR1_SLAY_UNDEAD) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "ÉÔ»à:", f1, f2, f3, TERM_YELLOW);
@@ -3096,7 +3096,7 @@ if (f1 & TR1_BRAND_FIRE)  compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, co
 if (f1 & TR1_BRAND_COLD)  compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Îä°À­:", f1, f2, f3, TERM_RED);
 if (f1 & TR1_BRAND_POIS)  compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "ÆÇ°À­:", f1, f2, f3, TERM_RED);
 #else
-       if (f1 & TR1_FORCE_WEPON)     compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 1*mult, "Force  :", f1, f2, f3, TERM_L_BLUE);
+       if (f1 & TR1_FORCE_WEAPON)     compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 1*mult, "Force  :", f1, f2, f3, TERM_L_BLUE);
        if (f1 & TR1_SLAY_ANIMAL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 2*mult, "Animals:", f1, f2, f3, TERM_YELLOW);
        if (f1 & TR1_SLAY_EVIL)   compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 2*mult, "Evil:", f1, f2, f3, TERM_YELLOW);
        if (f1 & TR1_SLAY_UNDEAD) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "Undead:", f1, f2, f3, TERM_YELLOW);
@@ -4073,299 +4073,286 @@ msg_print("
 
        if (!bcost) set_reward = TRUE;
 
-#ifdef USE_SCRIPT
-
-       if (building_command_callback(cave[py][px].feat - FEAT_BLDG_HEAD, i))
+       switch (bact)
        {
-               /* Script paid the price */
-               paid = TRUE;
-       }
-       else
-
-#endif /* USE_SCRIPT */
-
-       {
-               switch (bact)
-               {
-                       case BACT_NOTHING:
+       case BACT_NOTHING:
                                /* Do nothing */
-                               break;
-                       case BACT_RESEARCH_ITEM:
-                               paid = identify_fully(FALSE);
-                               break;
-                       case BACT_TOWN_HISTORY:
-                               town_history();
-                               break;
-                       case BACT_RACE_LEGENDS:
-                               race_legends();
-                               break;
-                       case BACT_QUEST:
-                               castle_quest();
-                               break;
-                       case BACT_KING_LEGENDS:
-                       case BACT_ARENA_LEGENDS:
-                       case BACT_LEGENDS:
-                               show_highclass(building_loc);
-                               break;
-                       case BACT_POSTER:
-                       case BACT_ARENA_RULES:
-                       case BACT_ARENA:
-                               arena_comm(bact);
-                               break;
-                       case BACT_IN_BETWEEN:
-                       case BACT_CRAPS:
-                       case BACT_SPIN_WHEEL:
-                       case BACT_DICE_SLOTS:
-                       case BACT_GAMBLE_RULES:
-                       case BACT_POKER:
-                               gamble_comm(bact);
-                               break;
-                       case BACT_REST:
-                       case BACT_RUMORS:
-                       case BACT_FOOD:
-                               paid = inn_comm(bact);
-                               break;
-                       case BACT_RESEARCH_MONSTER:
-                               paid = research_mon();
-                               break;
-                       case BACT_COMPARE_WEAPONS:
-                               paid = compare_weapons();
-                               break;
-                       case BACT_ENCHANT_WEAPON:
-                               item_tester_hook = item_tester_hook_melee_weapon;
-                               enchant_item(bcost, 1, 1, 0);
-                               break;
-                       case BACT_ENCHANT_ARMOR:
-                               item_tester_hook = item_tester_hook_armour;
-                               enchant_item(bcost, 0, 0, 1);
-                               break;
-                       case BACT_RECHARGE:
-                               building_recharge();
-                               break;
-                       case BACT_RECHARGE_ALL:
-                               building_recharge_all();
-                               break;
-                       case BACT_IDENTS: /* needs work */
+               break;
+       case BACT_RESEARCH_ITEM:
+               paid = identify_fully(FALSE);
+               break;
+       case BACT_TOWN_HISTORY:
+               town_history();
+               break;
+       case BACT_RACE_LEGENDS:
+               race_legends();
+               break;
+       case BACT_QUEST:
+               castle_quest();
+               break;
+       case BACT_KING_LEGENDS:
+       case BACT_ARENA_LEGENDS:
+       case BACT_LEGENDS:
+               show_highclass(building_loc);
+               break;
+       case BACT_POSTER:
+       case BACT_ARENA_RULES:
+       case BACT_ARENA:
+               arena_comm(bact);
+               break;
+       case BACT_IN_BETWEEN:
+       case BACT_CRAPS:
+       case BACT_SPIN_WHEEL:
+       case BACT_DICE_SLOTS:
+       case BACT_GAMBLE_RULES:
+       case BACT_POKER:
+               gamble_comm(bact);
+               break;
+       case BACT_REST:
+       case BACT_RUMORS:
+       case BACT_FOOD:
+               paid = inn_comm(bact);
+               break;
+       case BACT_RESEARCH_MONSTER:
+               paid = research_mon();
+               break;
+       case BACT_COMPARE_WEAPONS:
+               paid = compare_weapons();
+               break;
+       case BACT_ENCHANT_WEAPON:
+               item_tester_hook = item_tester_hook_melee_weapon;
+               enchant_item(bcost, 1, 1, 0);
+               break;
+       case BACT_ENCHANT_ARMOR:
+               item_tester_hook = item_tester_hook_armour;
+               enchant_item(bcost, 0, 0, 1);
+               break;
+       case BACT_RECHARGE:
+               building_recharge();
+               break;
+       case BACT_RECHARGE_ALL:
+               building_recharge_all();
+               break;
+       case BACT_IDENTS: /* needs work */
 #ifdef JP
-                               if (!get_check("»ý¤Áʪ¤òÁ´¤Æ´ÕÄꤷ¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
-                               identify_pack();
-                               msg_print(" »ý¤ÁʪÁ´¤Æ¤¬´ÕÄꤵ¤ì¤Þ¤·¤¿¡£");
+               if (!get_check("»ý¤Áʪ¤òÁ´¤Æ´ÕÄꤷ¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
+               identify_pack();
+               msg_print(" »ý¤ÁʪÁ´¤Æ¤¬´ÕÄꤵ¤ì¤Þ¤·¤¿¡£");
 #else
-                               if (!get_check("Do you pay for identify all your possession? ")) break;
-                               identify_pack();
-                               msg_print("Your possessions have been identified.");
+               if (!get_check("Do you pay for identify all your possession? ")) break;
+               identify_pack();
+               msg_print("Your possessions have been identified.");
 #endif
 
-                               paid = TRUE;
-                               break;
-                       case BACT_IDENT_ONE: /* needs work */
-                               paid = ident_spell(FALSE);
-                               break;
-                       case BACT_LEARN:
-                               do_cmd_study();
-                               break;
-                       case BACT_HEALING: /* needs work */
-                               hp_player(200);
-                               set_poisoned(0);
-                               set_blind(0);
-                               set_confused(0);
-                               set_cut(0);
-                               set_stun(0);
-                               paid = TRUE;
-                               break;
-                       case BACT_RESTORE: /* needs work */
-                               if (do_res_stat(A_STR)) paid = TRUE;
-                               if (do_res_stat(A_INT)) paid = TRUE;
-                               if (do_res_stat(A_WIS)) paid = TRUE;
-                               if (do_res_stat(A_DEX)) paid = TRUE;
-                               if (do_res_stat(A_CON)) paid = TRUE;
-                               if (do_res_stat(A_CHR)) paid = TRUE;
-                               break;
-                       case BACT_GOLD: /* set timed reward flag */
-                               if (!p_ptr->rewards[BACT_GOLD])
-                               {
-                                       share_gold();
-                                       p_ptr->rewards[BACT_GOLD] = TRUE;
-                               }
-                               else
-                               {
+               paid = TRUE;
+               break;
+       case BACT_IDENT_ONE: /* needs work */
+               paid = ident_spell(FALSE);
+               break;
+       case BACT_LEARN:
+               do_cmd_study();
+               break;
+       case BACT_HEALING: /* needs work */
+               hp_player(200);
+               set_poisoned(0);
+               set_blind(0);
+               set_confused(0);
+               set_cut(0);
+               set_stun(0);
+               paid = TRUE;
+               break;
+       case BACT_RESTORE: /* needs work */
+               if (do_res_stat(A_STR)) paid = TRUE;
+               if (do_res_stat(A_INT)) paid = TRUE;
+               if (do_res_stat(A_WIS)) paid = TRUE;
+               if (do_res_stat(A_DEX)) paid = TRUE;
+               if (do_res_stat(A_CON)) paid = TRUE;
+               if (do_res_stat(A_CHR)) paid = TRUE;
+               break;
+       case BACT_GOLD: /* set timed reward flag */
+               if (!p_ptr->rewards[BACT_GOLD])
+               {
+                       share_gold();
+                       p_ptr->rewards[BACT_GOLD] = TRUE;
+               }
+               else
+               {
 #ifdef JP
-msg_print("º£Æü¤Îʬ¤±Á°¤Ï¤¹¤Ç¤Ë»Ùʧ¤Ã¤¿¤¾¡ª");
+                       msg_print("º£Æü¤Îʬ¤±Á°¤Ï¤¹¤Ç¤Ë»Ùʧ¤Ã¤¿¤¾¡ª");
 #else
-                                       msg_print("You just had your daily allowance!");
+                       msg_print("You just had your daily allowance!");
 #endif
-                               }
-                               break;
-                       case BACT_ENCHANT_ARROWS:
-                               item_tester_hook = item_tester_hook_ammo;
-                               enchant_item(bcost, 1, 1, 0);
-                               break;
-                       case BACT_ENCHANT_BOW:
-                               item_tester_tval = TV_BOW;
-                               enchant_item(bcost, 1, 1, 0);
-                               break;
-                       case BACT_RECALL:
-                               if (recall_player(1)) paid = TRUE;
-                               break;
-                       case BACT_TELEPORT_LEVEL:
-                       {
-                               int select_dungeon;
-                               int i, num = 0;
-                               s16b *dun;
-                               int max_depth;
+               }
+               break;
+       case BACT_ENCHANT_ARROWS:
+               item_tester_hook = item_tester_hook_ammo;
+               enchant_item(bcost, 1, 1, 0);
+               break;
+       case BACT_ENCHANT_BOW:
+               item_tester_tval = TV_BOW;
+               enchant_item(bcost, 1, 1, 0);
+               break;
+       case BACT_RECALL:
+               if (recall_player(1)) paid = TRUE;
+               break;
+       case BACT_TELEPORT_LEVEL:
+       {
+               int select_dungeon;
+               int i, num = 0;
+               s16b *dun;
+               int max_depth;
 
-                               /* Allocate the "dun" array */
-                               C_MAKE(dun, max_d_idx, s16b);
+               /* Allocate the "dun" array */
+               C_MAKE(dun, max_d_idx, s16b);
 
-                               screen_save();
-                               clear_bldg(4, 20);
+               screen_save();
+               clear_bldg(4, 20);
 
-                               for(i = 1; i < max_d_idx; i++)
-                               {
-                                       char buf[80];
-                                       bool seiha = FALSE;
+               for(i = 1; i < max_d_idx; i++)
+               {
+                       char buf[80];
+                       bool seiha = FALSE;
 
-                                       if (!d_info[i].maxdepth) continue;
-                                       if (!max_dlv[i]) continue;
-                                       if (d_info[i].final_guardian)
-                                       {
-                                               if (!r_info[d_info[i].final_guardian].max_num) seiha = TRUE;
-                                       }
-                                       else if (max_dlv[i] == d_info[i].maxdepth) seiha = TRUE;
+                       if (!d_info[i].maxdepth) continue;
+                       if (!max_dlv[i]) continue;
+                       if (d_info[i].final_guardian)
+                       {
+                               if (!r_info[d_info[i].final_guardian].max_num) seiha = TRUE;
+                       }
+                       else if (max_dlv[i] == d_info[i].maxdepth) seiha = TRUE;
 
 #ifdef JP
-                                       sprintf(buf,"%c) %c%-12s : ºÇÂç %d ³¬", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
+                       sprintf(buf,"%c) %c%-12s : ºÇÂç %d ³¬", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
 #else
-                                       sprintf(buf,"%c) %c%-12s : Max level %d", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
+                       sprintf(buf,"%c) %c%-12s : Max level %d", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
 #endif
-                                       put_str(buf, 4+num, 5);
-                                       dun[num] = i;
-                                       num++;
-                               }
+                       put_str(buf, 4+num, 5);
+                       dun[num] = i;
+                       num++;
+               }
 #ifdef JP
-                               prt("¤É¤Î¥À¥ó¥¸¥ç¥ó¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«:", 0, 0);
+               prt("¤É¤Î¥À¥ó¥¸¥ç¥ó¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«:", 0, 0);
 #else
-                               prt("Which dungeon do you teleport?: ", 0, 0);
+               prt("Which dungeon do you teleport?: ", 0, 0);
 #endif
-                               while(1)
-                               {
-                                       i = inkey();
+               while(1)
+               {
+                       i = inkey();
 
-                                       if (i == ESCAPE)
-                                       {
-                                               /* Free the "dun" array */
-                                               C_KILL(dun, max_d_idx, s16b);
+                       if (i == ESCAPE)
+                       {
+                               /* Free the "dun" array */
+                               C_KILL(dun, max_d_idx, s16b);
 
-                                               screen_load();
-                                               return;
-                                       }
-                                       if (i >= 'a' && i <('a'+num))
-                                       {
-                                               select_dungeon = dun[i-'a'];
-                                               break;
-                                       }
-                                       else bell();
-                               }
                                screen_load();
+                               return;
+                       }
+                       if (i >= 'a' && i <('a'+num))
+                       {
+                               select_dungeon = dun[i-'a'];
+                               break;
+                       }
+                       else bell();
+               }
+               screen_load();
 
-                               /* Free the "dun" array */
-                               C_KILL(dun, max_d_idx, s16b);
+               /* Free the "dun" array */
+               C_KILL(dun, max_d_idx, s16b);
 
-                               max_depth = d_info[select_dungeon].maxdepth;
+               max_depth = d_info[select_dungeon].maxdepth;
 
-                               /* Limit depth in Angband */
-                               if (select_dungeon == DUNGEON_ANGBAND)
-                               {
-                                       if (quest[QUEST_OBERON].status != QUEST_STATUS_FINISHED) max_depth = 98;
-                                       else if(quest[QUEST_SERPENT].status != QUEST_STATUS_FINISHED) max_depth = 99;
-                               }
+               /* Limit depth in Angband */
+               if (select_dungeon == DUNGEON_ANGBAND)
+               {
+                       if (quest[QUEST_OBERON].status != QUEST_STATUS_FINISHED) max_depth = 98;
+                       else if(quest[QUEST_SERPENT].status != QUEST_STATUS_FINISHED) max_depth = 99;
+               }
 
 #ifdef JP
-amt = get_quantity(format("%s¤Î²¿³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©", d_name + d_info[select_dungeon].name), max_depth);
+               amt = get_quantity(format("%s¤Î²¿³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©", d_name + d_info[select_dungeon].name), max_depth);
 #else
-amt = get_quantity(format("Teleport to which level of %s? ", d_name + d_info[select_dungeon].name), max_depth);
+               amt = get_quantity(format("Teleport to which level of %s? ", d_name + d_info[select_dungeon].name), max_depth);
 #endif
 
-                               if (amt > 0)
-                               {
-                                       p_ptr->word_recall = 1;
-                                       p_ptr->recall_dungeon = select_dungeon;
-                                       max_dlv[p_ptr->recall_dungeon] = ((amt > d_info[select_dungeon].maxdepth) ? d_info[select_dungeon].maxdepth : ((amt < d_info[select_dungeon].mindepth) ? d_info[select_dungeon].mindepth : amt));
-                                       if (record_maxdeapth)
+               if (amt > 0)
+               {
+                       p_ptr->word_recall = 1;
+                       p_ptr->recall_dungeon = select_dungeon;
+                       max_dlv[p_ptr->recall_dungeon] = ((amt > d_info[select_dungeon].maxdepth) ? d_info[select_dungeon].maxdepth : ((amt < d_info[select_dungeon].mindepth) ? d_info[select_dungeon].mindepth : amt));
+                       if (record_maxdeapth)
 #ifdef JP
-                                               do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "¥È¥é¥ó¥×¥¿¥ï¡¼¤Ç");
+                               do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "¥È¥é¥ó¥×¥¿¥ï¡¼¤Ç");
 #else
-                                               do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "at Trump Tower");
+                       do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "at Trump Tower");
 #endif
 #ifdef JP
-msg_print("²ó¤ê¤ÎÂ絤¤¬Ä¥¤ê¤Ä¤á¤Æ¤­¤¿...");
+                       msg_print("²ó¤ê¤ÎÂ絤¤¬Ä¥¤ê¤Ä¤á¤Æ¤­¤¿...");
 #else
-                                       msg_print("The air about you becomes charged...");
+                       msg_print("The air about you becomes charged...");
 #endif
 
-                                       paid = TRUE;
-                                       p_ptr->redraw |= (PR_STATUS);
-                               }
-                               break;
-                       }
-                       case BACT_LOSE_MUTATION:
-                               paid = lose_mutation(0);
-                               /* ToDo: Better message text. */
-                               if (!paid)
+                       paid = TRUE;
+                       p_ptr->redraw |= (PR_STATUS);
+               }
+               break;
+       }
+       case BACT_LOSE_MUTATION:
+               paid = lose_mutation(0);
+               /* ToDo: Better message text. */
+               if (!paid)
 #ifdef JP
-msg_print("´ñ̯¤Ê¤¯¤é¤¤ÉáÄ̤ˤʤ俵¤¤¬¤¹¤ë¡£");
+                       msg_print("´ñ̯¤Ê¤¯¤é¤¤ÉáÄ̤ˤʤ俵¤¤¬¤¹¤ë¡£");
 #else
-                                       msg_print("You feel oddly normal.");
+               msg_print("You feel oddly normal.");
 #endif
 
 
-                               break;
-                       case BACT_BATTLE:
-                               kakutoujou();
-                               break;
-                       case BACT_TSUCHINOKO:
-                               tsuchinoko();
-                               break;
-                       case BACT_KUBI:
-                               shoukinkubi();
-                               break;
-                       case BACT_TARGET:
-                               today_target();
-                               break;
-                       case BACT_KANKIN:
-                               kankin();
-                               break;
-                       case BACT_HEIKOUKA:
-#ifdef JP
-msg_print("Ê¿¹Õ²½¤Îµ·¼°¤ò¹Ô¤Ê¤Ã¤¿¡£");
-#else
- msg_print("You received an equalization ritual.");
-#endif
-                               set_virtue(V_COMPASSION, 0);
-                               set_virtue(V_HONOUR, 0);
-                               set_virtue(V_JUSTICE, 0);
-                               set_virtue(V_SACRIFICE, 0);
-                               set_virtue(V_KNOWLEDGE, 0);
-                               set_virtue(V_FAITH, 0);
-                               set_virtue(V_ENLIGHTEN, 0);
-                               set_virtue(V_ENCHANT, 0);
-                               set_virtue(V_CHANCE, 0);
-                               set_virtue(V_NATURE, 0);
-                               set_virtue(V_HARMONY, 0);
-                               set_virtue(V_VITALITY, 0);
-                               set_virtue(V_UNLIFE, 0);
-                               set_virtue(V_PATIENCE, 0);
-                               set_virtue(V_TEMPERANCE, 0);
-                               set_virtue(V_DILIGENCE, 0);
-                               set_virtue(V_VALOUR, 0);
-                               set_virtue(V_INDIVIDUALISM, 0);
-                               get_virtues();
-                               paid = TRUE;
-                               break;
-                       case BACT_TELE_TOWN:
-                               paid = tele_town();
-                               break;
-               }
+               break;
+       case BACT_BATTLE:
+               kakutoujou();
+               break;
+       case BACT_TSUCHINOKO:
+               tsuchinoko();
+               break;
+       case BACT_KUBI:
+               shoukinkubi();
+               break;
+       case BACT_TARGET:
+               today_target();
+               break;
+       case BACT_KANKIN:
+               kankin();
+               break;
+       case BACT_HEIKOUKA:
+#ifdef JP
+               msg_print("Ê¿¹Õ²½¤Îµ·¼°¤ò¹Ô¤Ê¤Ã¤¿¡£");
+#else
+               msg_print("You received an equalization ritual.");
+#endif
+               set_virtue(V_COMPASSION, 0);
+               set_virtue(V_HONOUR, 0);
+               set_virtue(V_JUSTICE, 0);
+               set_virtue(V_SACRIFICE, 0);
+               set_virtue(V_KNOWLEDGE, 0);
+               set_virtue(V_FAITH, 0);
+               set_virtue(V_ENLIGHTEN, 0);
+               set_virtue(V_ENCHANT, 0);
+               set_virtue(V_CHANCE, 0);
+               set_virtue(V_NATURE, 0);
+               set_virtue(V_HARMONY, 0);
+               set_virtue(V_VITALITY, 0);
+               set_virtue(V_UNLIFE, 0);
+               set_virtue(V_PATIENCE, 0);
+               set_virtue(V_TEMPERANCE, 0);
+               set_virtue(V_DILIGENCE, 0);
+               set_virtue(V_VALOUR, 0);
+               set_virtue(V_INDIVIDUALISM, 0);
+               get_virtues();
+               paid = TRUE;
+               break;
+       case BACT_TELE_TOWN:
+               paid = tele_town();
+               break;
        }
 
        if (paid)
@@ -4408,23 +4395,7 @@ msg_print("
                p_ptr->oldpy = 0;
                p_ptr->oldpx = 0;
 
-               leaving_quest = p_ptr->inside_quest;
-
-               /* Leaving an 'only once' quest marks it as failed */
-               if (leaving_quest &&
-                       ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
-                       (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
-               {
-                       quest[leaving_quest].status = QUEST_STATUS_FAILED;
-                       quest[leaving_quest].complev = (byte)p_ptr->lev;
-                       if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
-                       {
-                               r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
-                               do_cmd_write_nikki(NIKKI_RAND_QUEST_F, leaving_quest, NULL);
-                       }
-                       else if (record_fix_quest)
-                               do_cmd_write_nikki(NIKKI_FIX_QUEST_F, leaving_quest, NULL);
-               }
+               leave_quest_check();
 
                p_ptr->inside_quest = cave[py][px].special;
                if(quest[leaving_quest].type != QUEST_TYPE_RANDOM) dun_level = 1;