OSDN Git Service

・ユ・愠「ハンツク、ホサナヘヘ、ツチ」
[hengbandforosx/hengbandosx.git] / src / dungeon.c
index a097761..7d51dac 100644 (file)
@@ -74,16 +74,16 @@ static byte value_check_aux2(object_type *o_ptr)
        if (broken_p(o_ptr)) return FEEL_BROKEN;
 
        /* Artifacts -- except cursed/broken ones */
-       if (artifact_p(o_ptr) || o_ptr->art_name) return FEEL_GOOD;
+       if (artifact_p(o_ptr) || o_ptr->art_name) return FEEL_UNCURSED;
 
        /* Ego-Items -- except cursed/broken ones */
-       if (ego_item_p(o_ptr)) return FEEL_GOOD;
+       if (ego_item_p(o_ptr)) return FEEL_UNCURSED;
 
        /* Good armor bonus */
-       if (o_ptr->to_a > 0) return FEEL_GOOD;
+       if (o_ptr->to_a > 0) return FEEL_UNCURSED;
 
        /* Good weapon bonuses */
-       if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_GOOD;
+       if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_UNCURSED;
 
        /* No feeling */
        return FEEL_NONE;
@@ -115,41 +115,47 @@ static void sense_inventory_aux(int slot, bool heavy)
        {
                switch (feel)
                {
-                case FEEL_TERRIBLE:
-                {
-                        feel = FEEL_SPECIAL;
-                        break;
-                }
-                case FEEL_WORTHLESS:
-                {
-                        feel = FEEL_EXCELLENT;
-                        break;
-                }
-                case FEEL_CURSED:
-                {
-                        feel = randint0(3) ? FEEL_GOOD : FEEL_AVERAGE;
-                        break;
-                }
-                case FEEL_AVERAGE:
-                {
-                        feel = randint0(2) ? FEEL_CURSED : FEEL_GOOD;
-                        break;
-                }
-                case FEEL_GOOD:
-                {
-                        feel = randint0(3) ? FEEL_CURSED : FEEL_AVERAGE;
-                        break;
-                }
-                case FEEL_EXCELLENT:
-                {
-                        feel = FEEL_WORTHLESS;
-                        break;
-                }
-                case FEEL_SPECIAL:
-                {
-                        feel = FEEL_TERRIBLE;
-                        break;
-                }
+                       case FEEL_TERRIBLE:
+                       {
+                               feel = FEEL_SPECIAL;
+                               break;
+                       }
+                       case FEEL_WORTHLESS:
+                       {
+                               feel = FEEL_EXCELLENT;
+                               break;
+                       }
+                       case FEEL_CURSED:
+                       {
+                               if (heavy)
+                                       feel = randint0(3) ? FEEL_GOOD : FEEL_AVERAGE;
+                               else
+                                       feel = FEEL_UNCURSED;
+                               break;
+                       }
+                       case FEEL_AVERAGE:
+                       {
+                               feel = randint0(2) ? FEEL_CURSED : FEEL_GOOD;
+                               break;
+                       }
+                       case FEEL_GOOD:
+                       {
+                               if (heavy)
+                                       feel = randint0(3) ? FEEL_CURSED : FEEL_AVERAGE;
+                               else
+                                       feel = FEEL_CURSED;
+                               break;
+                       }
+                       case FEEL_EXCELLENT:
+                       {
+                               feel = FEEL_WORTHLESS;
+                               break;
+                       }
+                       case FEEL_SPECIAL:
+                       {
+                               feel = FEEL_TERRIBLE;
+                               break;
+                       }
                }
        }
 
@@ -163,13 +169,13 @@ static void sense_inventory_aux(int slot, bool heavy)
        if (slot >= INVEN_RARM)
        {
 #ifdef JP
-                msg_format("%s%s(%c)¤Ï%s¤È¤¤¤¦´¶¤¸¤¬¤¹¤ë...",
-                           describe_use(slot),o_name, index_to_label(slot),game_inscriptions[feel]);
+msg_format("%s%s(%c)¤Ï%s¤È¤¤¤¦´¶¤¸¤¬¤¹¤ë...",
+describe_use(slot),o_name, index_to_label(slot),game_inscriptions[feel]);
 #else
                msg_format("You feel the %s (%c) you are %s %s %s...",
-                          o_name, index_to_label(slot), describe_use(slot),
-                          ((o_ptr->number == 1) ? "is" : "are"),
-                           game_inscriptions[feel]);
+                          o_name, index_to_label(slot), describe_use(slot),
+                          ((o_ptr->number == 1) ? "is" : "are"),
+                                  game_inscriptions[feel]);
 #endif
 
        }
@@ -178,13 +184,13 @@ static void sense_inventory_aux(int slot, bool heavy)
        else
        {
 #ifdef JP
-                msg_format("¥¶¥Ã¥¯¤ÎÃæ¤Î%s(%c)¤Ï%s¤È¤¤¤¦´¶¤¸¤¬¤¹¤ë...",
-                           o_name, index_to_label(slot),game_inscriptions[feel]);
+msg_format("¥¶¥Ã¥¯¤ÎÃæ¤Î%s(%c)¤Ï%s¤È¤¤¤¦´¶¤¸¤¬¤¹¤ë...",
+o_name, index_to_label(slot),game_inscriptions[feel]);
 #else
                msg_format("You feel the %s (%c) in your pack %s %s...",
-                          o_name, index_to_label(slot),
-                          ((o_ptr->number == 1) ? "is" : "are"),
-                           game_inscriptions[feel]);
+                          o_name, index_to_label(slot),
+                          ((o_ptr->number == 1) ? "is" : "are"),
+                                  game_inscriptions[feel]);
 #endif
 
        }
@@ -198,8 +204,8 @@ static void sense_inventory_aux(int slot, bool heavy)
        /* Auto-inscription/destroy */
        idx = is_autopick(o_ptr);
        auto_inscribe_item(slot, idx);
-        if (destroy_feeling)
-                auto_destroy_item(slot, idx);
+       if (destroy_feeling)
+               auto_destroy_item(slot, idx);
 
        /* Combine / Reorder the pack (later) */
        p_ptr->notice |= (PN_COMBINE | PN_REORDER);
@@ -236,172 +242,172 @@ static void sense_inventory1(void)
        /* Analyze the class */
        switch (p_ptr->pclass)
        {
-        case CLASS_WARRIOR:
-        case CLASS_ARCHER:
-        case CLASS_SAMURAI:
-        case CLASS_CAVALRY:
-        {
-                /* Good sensing */
-                if (0 != randint0(9000L / (plev * plev + 40))) return;
-
-                /* Heavy sensing */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_SMITH:
-        {
-                /* Good sensing */
-                if (0 != randint0(6000L / (plev * plev + 50))) return;
-
-                /* Heavy sensing */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_MAGE:
-        case CLASS_HIGH_MAGE:
-        case CLASS_SORCERER:
-        case CLASS_MAGIC_EATER:
-        {
-                /* Very bad (light) sensing */
-                if (0 != randint0(240000L / (plev + 5))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_PRIEST:
-        case CLASS_BARD:
-        {
-                /* Good (light) sensing */
-                if (0 != randint0(10000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_ROGUE:
-        case CLASS_NINJA:
-        {
-                /* Okay sensing */
-                if (0 != randint0(20000L / (plev * plev + 40))) return;
-
-                /* Heavy sensing */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_RANGER:
-        {
-                /* Bad sensing */
-                if (0 != randint0(95000L / (plev * plev + 40))) return;
-
-                /* Changed! */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_PALADIN:
-        {
-                /* Bad sensing */
-                if (0 != randint0(77777L / (plev * plev + 40))) return;
-
-                /* Heavy sensing */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_WARRIOR_MAGE:
-        case CLASS_RED_MAGE:
-        {
-                /* Bad sensing */
-                if (0 != randint0(75000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_MINDCRAFTER:
-        case CLASS_MIRROR_MASTER:
-        {
-                /* Bad sensing */
-                if (0 != randint0(55000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_CHAOS_WARRIOR:
-        {
-                /* Bad sensing */
-                if (0 != randint0(80000L / (plev * plev + 40))) return;
-
-                /* Changed! */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_MONK:
-        case CLASS_FORCETRAINER:
-        {
-                /* Okay sensing */
-                if (0 != randint0(20000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_TOURIST:
-        {
-                /* Good sensing */
-                if (0 != randint0(20000L / ((plev+50)*(plev+50)))) return;
-
-                /* Heavy sensing */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_IMITATOR:
-        case CLASS_BLUE_MAGE:
-        {
-                /* Bad sensing */
-                if (0 != randint0(55000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_BEASTMASTER:
-        {
-                /* Bad sensing */
-                if (0 != randint0(65000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-        case CLASS_BERSERKER:
-        {
-                /* Heavy sensing */
-                heavy = TRUE;
-
-                /* Done */
-                break;
-        }
+               case CLASS_WARRIOR:
+               case CLASS_ARCHER:
+               case CLASS_SAMURAI:
+               case CLASS_CAVALRY:
+               {
+                       /* Good sensing */
+                       if (0 != randint0(9000L / (plev * plev + 40))) return;
+
+                       /* Heavy sensing */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_SMITH:
+               {
+                       /* Good sensing */
+                       if (0 != randint0(6000L / (plev * plev + 50))) return;
+
+                       /* Heavy sensing */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_MAGE:
+               case CLASS_HIGH_MAGE:
+               case CLASS_SORCERER:
+               case CLASS_MAGIC_EATER:
+               {
+                       /* Very bad (light) sensing */
+                       if (0 != randint0(240000L / (plev + 5))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_PRIEST:
+               case CLASS_BARD:
+               {
+                       /* Good (light) sensing */
+                       if (0 != randint0(10000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_ROGUE:
+               case CLASS_NINJA:
+               {
+                       /* Okay sensing */
+                       if (0 != randint0(20000L / (plev * plev + 40))) return;
+
+                       /* Heavy sensing */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_RANGER:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(95000L / (plev * plev + 40))) return;
+
+                       /* Changed! */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_PALADIN:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(77777L / (plev * plev + 40))) return;
+
+                       /* Heavy sensing */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_WARRIOR_MAGE:
+               case CLASS_RED_MAGE:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(75000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_MINDCRAFTER:
+               case CLASS_MIRROR_MASTER:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(55000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_CHAOS_WARRIOR:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(80000L / (plev * plev + 40))) return;
+
+                       /* Changed! */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_MONK:
+               case CLASS_FORCETRAINER:
+               {
+                       /* Okay sensing */
+                       if (0 != randint0(20000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_TOURIST:
+               {
+                       /* Good sensing */
+                       if (0 != randint0(20000L / ((plev+50)*(plev+50)))) return;
+
+                       /* Heavy sensing */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_IMITATOR:
+               case CLASS_BLUE_MAGE:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(55000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_BEASTMASTER:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(65000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+               case CLASS_BERSERKER:
+               {
+                       /* Heavy sensing */
+                       heavy = TRUE;
+
+                       /* Done */
+                       break;
+               }
        }
 
        if (compare_virtue(V_KNOWLEDGE, 100, VIRTUE_LARGE)) heavy = TRUE;
@@ -421,28 +427,28 @@ static void sense_inventory1(void)
                /* Valid "tval" codes */
                switch (o_ptr->tval)
                {
-                case TV_SHOT:
-                case TV_ARROW:
-                case TV_BOLT:
-                case TV_BOW:
-                case TV_DIGGING:
-                case TV_HAFTED:
-                case TV_POLEARM:
-                case TV_SWORD:
-                case TV_BOOTS:
-                case TV_GLOVES:
-                case TV_HELM:
-                case TV_CROWN:
-                case TV_SHIELD:
-                case TV_CLOAK:
-                case TV_SOFT_ARMOR:
-                case TV_HARD_ARMOR:
-                case TV_DRAG_ARMOR:
-                case TV_CARD:
-                {
-                        okay = TRUE;
-                        break;
-                }
+                       case TV_SHOT:
+                       case TV_ARROW:
+                       case TV_BOLT:
+                       case TV_BOW:
+                       case TV_DIGGING:
+                       case TV_HAFTED:
+                       case TV_POLEARM:
+                       case TV_SWORD:
+                       case TV_BOOTS:
+                       case TV_GLOVES:
+                       case TV_HELM:
+                       case TV_CROWN:
+                       case TV_SHIELD:
+                       case TV_CLOAK:
+                       case TV_SOFT_ARMOR:
+                       case TV_HARD_ARMOR:
+                       case TV_DRAG_ARMOR:
+                       case TV_CARD:
+                       {
+                               okay = TRUE;
+                               break;
+                       }
                }
 
                /* Skip non-sense machines */
@@ -477,76 +483,76 @@ static void sense_inventory2(void)
        /* Analyze the class */
        switch (p_ptr->pclass)
        {
-        case CLASS_WARRIOR:
-        case CLASS_ARCHER:
-        case CLASS_SAMURAI:
-        case CLASS_CAVALRY:
-        case CLASS_BERSERKER:
-        {
-                return;
-        }
-
-        case CLASS_SMITH:
-        case CLASS_PALADIN:
-        case CLASS_CHAOS_WARRIOR:
-        case CLASS_IMITATOR:
-        case CLASS_BEASTMASTER:
-        case CLASS_NINJA:
-        {
-                /* Very bad (light) sensing */
-                if (0 != randint0(240000L / (plev + 5))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_RANGER:
-        case CLASS_WARRIOR_MAGE:
-        case CLASS_RED_MAGE:
-        case CLASS_MONK:
-        {
-                /* Bad sensing */
-                if (0 != randint0(95000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_PRIEST:
-        case CLASS_BARD:
-        case CLASS_ROGUE:
-        case CLASS_FORCETRAINER:
-        case CLASS_MINDCRAFTER:
-        {
-                /* Good sensing */
-                if (0 != randint0(20000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_MAGE:
-        case CLASS_HIGH_MAGE:
-        case CLASS_SORCERER:
-        case CLASS_MAGIC_EATER:
-        case CLASS_MIRROR_MASTER:
-        case CLASS_BLUE_MAGE:
-        {
-                /* Good sensing */
-                if (0 != randint0(9000L / (plev * plev + 40))) return;
-
-                /* Done */
-                break;
-        }
-
-        case CLASS_TOURIST:
-        {
-                /* Good sensing */
-                if (0 != randint0(20000L / ((plev+50)*(plev+50)))) return;
-
-                /* Done */
-                break;
-        }
+               case CLASS_WARRIOR:
+               case CLASS_ARCHER:
+               case CLASS_SAMURAI:
+               case CLASS_CAVALRY:
+               case CLASS_BERSERKER:
+               {
+                       return;
+               }
+
+               case CLASS_SMITH:
+               case CLASS_PALADIN:
+               case CLASS_CHAOS_WARRIOR:
+               case CLASS_IMITATOR:
+               case CLASS_BEASTMASTER:
+               case CLASS_NINJA:
+               {
+                       /* Very bad (light) sensing */
+                       if (0 != randint0(240000L / (plev + 5))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_RANGER:
+               case CLASS_WARRIOR_MAGE:
+               case CLASS_RED_MAGE:
+               case CLASS_MONK:
+               {
+                       /* Bad sensing */
+                       if (0 != randint0(95000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_PRIEST:
+               case CLASS_BARD:
+               case CLASS_ROGUE:
+               case CLASS_FORCETRAINER:
+               case CLASS_MINDCRAFTER:
+               {
+                       /* Good sensing */
+                       if (0 != randint0(20000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_MAGE:
+               case CLASS_HIGH_MAGE:
+               case CLASS_SORCERER:
+               case CLASS_MAGIC_EATER:
+               case CLASS_MIRROR_MASTER:
+               case CLASS_BLUE_MAGE:
+               {
+                       /* Good sensing */
+                       if (0 != randint0(9000L / (plev * plev + 40))) return;
+
+                       /* Done */
+                       break;
+               }
+
+               case CLASS_TOURIST:
+               {
+                       /* Good sensing */
+                       if (0 != randint0(20000L / ((plev+50)*(plev+50)))) return;
+
+                       /* Done */
+                       break;
+               }
        }
 
        /*** Sense everything ***/
@@ -564,14 +570,14 @@ static void sense_inventory2(void)
                /* Valid "tval" codes */
                switch (o_ptr->tval)
                {
-                case TV_RING:
-                case TV_AMULET:
-                case TV_LITE:
-                case TV_FIGURINE:
-                {
-                        okay = TRUE;
-                        break;
-                }
+                       case TV_RING:
+                       case TV_AMULET:
+                       case TV_LITE:
+                       case TV_FIGURINE:
+                       {
+                               okay = TRUE;
+                               break;
+                       }
                }
 
                /* Skip non-sense machines */
@@ -596,64 +602,64 @@ static void pattern_teleport(void)
 
        /* Ask for level */
 #ifdef JP
-        if (get_check("¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©"))
+if (get_check("¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©"))
 #else
-                if (get_check("Teleport level? "))
+       if (get_check("Teleport level? "))
 #endif
 
-                {
-                        char   ppp[80];
-                        char   tmp_val[160];
+       {
+               char    ppp[80];
+               char    tmp_val[160];
 
-                        /* Only downward in ironman mode */
-                        if (ironman_downward)
-                                min_level = dun_level;
+               /* Only downward in ironman mode */
+               if (ironman_downward)
+                       min_level = dun_level;
 
-                        /* Maximum level */
-                        if (dungeon_type == DUNGEON_ANGBAND)
-                        {
-                                if (dun_level > 100)
-                                        max_level = MAX_DEPTH - 1;
-                                else if (dun_level == 100)
-                                        max_level = 100;
-                        }
-                        else
-                        {
-                                max_level = d_info[dungeon_type].maxdepth;
-                                min_level = d_info[dungeon_type].mindepth;
-                        }
+               /* Maximum level */
+               if (dungeon_type == DUNGEON_ANGBAND)
+               {
+                       if (dun_level > 100)
+                               max_level = MAX_DEPTH - 1;
+                       else if (dun_level == 100)
+                               max_level = 100;
+               }
+               else
+               {
+                       max_level = d_info[dungeon_type].maxdepth;
+                       min_level = d_info[dungeon_type].mindepth;
+               }
 
-                        /* Prompt */
+               /* Prompt */
 #ifdef JP
-                        sprintf(ppp, "¥Æ¥ì¥Ý¡¼¥ÈÀè:(%d-%d)", min_level, max_level);
+sprintf(ppp, "¥Æ¥ì¥Ý¡¼¥ÈÀè:(%d-%d)", min_level, max_level);
 #else
-                        sprintf(ppp, "Teleport to level (%d-%d): ", min_level, max_level);
+               sprintf(ppp, "Teleport to level (%d-%d): ", min_level, max_level);
 #endif
 
 
-                        /* Default */
-                        sprintf(tmp_val, "%d", dun_level);
+               /* Default */
+               sprintf(tmp_val, "%d", dun_level);
 
-                        /* Ask for a level */
-                        if (!get_string(ppp, tmp_val, 10)) return;
+               /* Ask for a level */
+               if (!get_string(ppp, tmp_val, 10)) return;
 
-                        /* Extract request */
-                        command_arg = atoi(tmp_val);
-                }
+               /* Extract request */
+               command_arg = atoi(tmp_val);
+       }
 #ifdef JP
-                else if (get_check("Ä̾ï¥Æ¥ì¥Ý¡¼¥È¡©"))
+else if (get_check("Ä̾ï¥Æ¥ì¥Ý¡¼¥È¡©"))
 #else
-                        else if (get_check("Normal teleport? "))
+       else if (get_check("Normal teleport? "))
 #endif
 
-                        {
-                                teleport_player(200);
-                                return;
-                        }
-                else
-                {
-                        return;
-                }
+       {
+               teleport_player(200);
+               return;
+       }
+       else
+       {
+               return;
+       }
 
        /* Paranoia */
        if (command_arg < min_level) command_arg = min_level;
@@ -663,7 +669,7 @@ static void pattern_teleport(void)
 
        /* Accept request */
 #ifdef JP
-        msg_format("%d ³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤·¤¿¡£", command_arg);
+msg_format("%d ³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤·¤¿¡£", command_arg);
 #else
        msg_format("You teleport to dungeon level %d.", command_arg);
 #endif
@@ -673,6 +679,7 @@ static void pattern_teleport(void)
 
        /* Change level */
        dun_level = command_arg;
+       prepare_change_floor_mode(CFM_CLEAR_ALL);
 
        leave_quest_check();
 
@@ -698,8 +705,8 @@ static void wreck_the_pattern(void)
        }
 
 #ifdef JP
-        msg_print("¥Ñ¥¿¡¼¥ó¤ò·ì¤Ç±ø¤·¤Æ¤·¤Þ¤Ã¤¿¡ª");
-        msg_print("²¿¤«¶²¤í¤·¤¤»ö¤¬µ¯¤³¤Ã¤¿¡ª");
+msg_print("¥Ñ¥¿¡¼¥ó¤ò·ì¤Ç±ø¤·¤Æ¤·¤Þ¤Ã¤¿¡ª");
+msg_print("²¿¤«¶²¤í¤·¤¤»ö¤¬µ¯¤³¤Ã¤¿¡ª");
 #else
        msg_print("You bleed on the Pattern!");
        msg_print("Something terrible happens!");
@@ -708,9 +715,9 @@ static void wreck_the_pattern(void)
 
        if (!p_ptr->invuln)
 #ifdef JP
-                take_hit(DAMAGE_NOESCAPE, damroll(10, 8), "¥Ñ¥¿¡¼¥ó»²õ", -1);
+take_hit(DAMAGE_NOESCAPE, damroll(10, 8), "¥Ñ¥¿¡¼¥ó»²õ", -1);
 #else
-        take_hit(DAMAGE_NOESCAPE, damroll(10, 8), "corrupting the Pattern", -1);
+               take_hit(DAMAGE_NOESCAPE, damroll(10, 8), "corrupting the Pattern", -1);
 #endif
 
 
@@ -762,7 +769,7 @@ static bool pattern_effect(void)
                (void)hp_player(1000);
                cave_set_feat(py, px, FEAT_PATTERN_OLD);
 #ifdef JP
-                msg_print("¡Ö¥Ñ¥¿¡¼¥ó¡×¤Î¤³¤ÎÉôʬ¤Ï¾¤ÎÉôʬ¤è¤ê¶¯ÎϤǤʤ¤¤è¤¦¤À¡£");
+msg_print("¡Ö¥Ñ¥¿¡¼¥ó¡×¤Î¤³¤ÎÉôʬ¤Ï¾¤ÎÉôʬ¤è¤ê¶¯ÎϤǤʤ¤¤è¤¦¤À¡£");
 #else
                msg_print("This section of the Pattern looks less powerful.");
 #endif
@@ -789,7 +796,7 @@ static bool pattern_effect(void)
        {
                if (!p_ptr->invuln)
 #ifdef JP
-                        take_hit(DAMAGE_NOESCAPE, 200, "²õ¤ì¤¿¡Ö¥Ñ¥¿¡¼¥ó¡×¤òÊ⤤¤¿¥À¥á¡¼¥¸", -1);
+take_hit(DAMAGE_NOESCAPE, 200, "²õ¤ì¤¿¡Ö¥Ñ¥¿¡¼¥ó¡×¤òÊ⤤¤¿¥À¥á¡¼¥¸", -1);
 #else
                take_hit(DAMAGE_NOESCAPE, 200, "walking the corrupted Pattern", -1);
 #endif
@@ -801,9 +808,9 @@ static bool pattern_effect(void)
                        return TRUE;
                else if (!p_ptr->invuln)
 #ifdef JP
-                        take_hit(DAMAGE_NOESCAPE, damroll(1,3), "¡Ö¥Ñ¥¿¡¼¥ó¡×¤òÊ⤤¤¿¥À¥á¡¼¥¸", -1);
+take_hit(DAMAGE_NOESCAPE, damroll(1,3), "¡Ö¥Ñ¥¿¡¼¥ó¡×¤òÊ⤤¤¿¥À¥á¡¼¥¸", -1);
 #else
-                take_hit(DAMAGE_NOESCAPE, damroll(1, 3), "walking the Pattern", -1);
+                       take_hit(DAMAGE_NOESCAPE, damroll(1, 3), "walking the Pattern", -1);
 #endif
 
        }
@@ -1095,7 +1102,7 @@ static void notice_lite_change(object_type *o_ptr)
        {
                disturb(0, 0);
 #ifdef JP
-                msg_print("ÌÀ¤«¤ê¤¬¾Ã¤¨¤Æ¤·¤Þ¤Ã¤¿¡ª");
+msg_print("ÌÀ¤«¤ê¤¬¾Ã¤¨¤Æ¤·¤Þ¤Ã¤¿¡ª");
 #else
                msg_print("Your light has gone out!");
 #endif
@@ -1110,7 +1117,7 @@ static void notice_lite_change(object_type *o_ptr)
                {
                        if (disturb_minor) disturb(0, 0);
 #ifdef JP
-                        msg_print("ÌÀ¤«¤ê¤¬Èù¤«¤Ë¤Ê¤Ã¤Æ¤­¤Æ¤¤¤ë¡£");
+msg_print("ÌÀ¤«¤ê¤¬Èù¤«¤Ë¤Ê¤Ã¤Æ¤­¤Æ¤¤¤ë¡£");
 #else
                        msg_print("Your light is growing faint.");
 #endif
@@ -1123,7 +1130,7 @@ static void notice_lite_change(object_type *o_ptr)
        {
                if (disturb_minor) disturb(0, 0);
 #ifdef JP
-                msg_print("ÌÀ¤«¤ê¤¬Èù¤«¤Ë¤Ê¤Ã¤Æ¤­¤Æ¤¤¤ë¡£");
+msg_print("ÌÀ¤«¤ê¤¬Èù¤«¤Ë¤Ê¤Ã¤Æ¤­¤Æ¤¤¤ë¡£");
 #else
                msg_print("Your light is growing faint.");
 #endif
@@ -1149,6 +1156,9 @@ void leave_quest_check(void)
                        r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
                        if (record_rand_quest)
                                do_cmd_write_nikki(NIKKI_RAND_QUEST_F, leaving_quest, NULL);
+
+                       /* Floor of random quest will be blocked */
+                       prepare_change_floor_mode(CFM_NO_RETURN);
                }
                else if (record_fix_quest)
                        do_cmd_write_nikki(NIKKI_FIX_QUEST_F, leaving_quest, NULL);
@@ -1175,14 +1185,14 @@ bool psychometry(void)
        char            o_name[MAX_NLEN];
        byte            feel;
        cptr            q, s;
-        bool okay = FALSE;
+       bool okay = FALSE;
        int idx;
 
        item_tester_no_ryoute = TRUE;
        /* Get an item */
 #ifdef JP
-        q = "¤É¤Î¥¢¥¤¥Æ¥à¤òÄ´¤Ù¤Þ¤¹¤«¡©";
-        s = "Ä´¤Ù¤ë¥¢¥¤¥Æ¥à¤¬¤¢¤ê¤Þ¤»¤ó¡£";
+q = "¤É¤Î¥¢¥¤¥Æ¥à¤òÄ´¤Ù¤Þ¤¹¤«¡©";
+s = "Ä´¤Ù¤ë¥¢¥¤¥Æ¥à¤¬¤¢¤ê¤Þ¤»¤ó¡£";
 #else
        q = "Meditate on which item? ";
        s = "You have nothing appropriate.";
@@ -1206,7 +1216,7 @@ bool psychometry(void)
        if (object_known_p(o_ptr))
        {
 #ifdef JP
-                msg_print("²¿¤â¿·¤·¤¤¤³¤È¤ÏȽ¤é¤Ê¤«¤Ã¤¿¡£");
+msg_print("²¿¤â¿·¤·¤¤¤³¤È¤ÏȽ¤é¤Ê¤«¤Ã¤¿¡£");
 #else
                msg_print("You cannot find out anything more about that.");
 #endif
@@ -1224,7 +1234,7 @@ bool psychometry(void)
        if (!feel)
        {
 #ifdef JP
-                msg_format("%s¤«¤é¤ÏÆäËÊѤï¤Ã¤¿»ö¤Ï´¶¤¸¤È¤ì¤Ê¤«¤Ã¤¿¡£", o_name);
+msg_format("%s¤«¤é¤ÏÆäËÊѤï¤Ã¤¿»ö¤Ï´¶¤¸¤È¤ì¤Ê¤«¤Ã¤¿¡£", o_name);
 #else
                msg_format("You do not perceive anything unusual about the %s.", o_name);
 #endif
@@ -1233,12 +1243,12 @@ bool psychometry(void)
        }
 
 #ifdef JP
-        msg_format("%s¤Ï%s¤È¤¤¤¦´¶¤¸¤¬¤¹¤ë...",
-                   o_name,  game_inscriptions[feel]);
+msg_format("%s¤Ï%s¤È¤¤¤¦´¶¤¸¤¬¤¹¤ë...",
+    o_name,  game_inscriptions[feel]);
 #else
        msg_format("You feel that the %s %s %s...",
-                   o_name, ((o_ptr->number == 1) ? "is" : "are"),
-                   game_inscriptions[feel]);
+                          o_name, ((o_ptr->number == 1) ? "is" : "are"),
+                          game_inscriptions[feel]);
 #endif
 
 
@@ -1254,40 +1264,40 @@ bool psychometry(void)
        /* Window stuff */
        p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
 
-        /* Valid "tval" codes */
-        switch (o_ptr->tval)
-        {
-        case TV_SHOT:
-        case TV_ARROW:
-        case TV_BOLT:
-        case TV_BOW:
-        case TV_DIGGING:
-        case TV_HAFTED:
-        case TV_POLEARM:
-        case TV_SWORD:
-        case TV_BOOTS:
-        case TV_GLOVES:
-        case TV_HELM:
-        case TV_CROWN:
-        case TV_SHIELD:
-        case TV_CLOAK:
-        case TV_SOFT_ARMOR:
-        case TV_HARD_ARMOR:
-        case TV_DRAG_ARMOR:
-        case TV_CARD:
-        case TV_RING:
-        case TV_AMULET:
-        case TV_LITE:
-        case TV_FIGURINE:
-                okay = TRUE;
-                break;
-        }
+       /* Valid "tval" codes */
+       switch (o_ptr->tval)
+       {
+       case TV_SHOT:
+       case TV_ARROW:
+       case TV_BOLT:
+       case TV_BOW:
+       case TV_DIGGING:
+       case TV_HAFTED:
+       case TV_POLEARM:
+       case TV_SWORD:
+       case TV_BOOTS:
+       case TV_GLOVES:
+       case TV_HELM:
+       case TV_CROWN:
+       case TV_SHIELD:
+       case TV_CLOAK:
+       case TV_SOFT_ARMOR:
+       case TV_HARD_ARMOR:
+       case TV_DRAG_ARMOR:
+       case TV_CARD:
+       case TV_RING:
+       case TV_AMULET:
+       case TV_LITE:
+       case TV_FIGURINE:
+               okay = TRUE;
+               break;
+       }
 
        /* Auto-inscription/destroy */
        idx = is_autopick(o_ptr);
        auto_inscribe_item(item, idx);
        if (okay && destroy_feeling)
-                auto_destroy_item(item, idx);
+               auto_destroy_item(item, idx);
 
        /* Something happened */
        return (TRUE);
@@ -1296,97 +1306,97 @@ bool psychometry(void)
 
 static void gere_music(s32b music)
 {
-        switch(music)
-        {
-        case MUSIC_SLOW:
-                slow_monsters();
-                break;
-        case MUSIC_STUN:
-                stun_monsters(damroll(p_ptr->lev/10,2));
-                break;
-        case MUSIC_L_LIFE:
-                hp_player(damroll(2,6));
-                break;
-        case MUSIC_FEAR:
-                project_hack(GF_TURN_ALL, p_ptr->lev);
-                break;
-        case MUSIC_PSI:
-                project_hack(GF_PSI, randint1(p_ptr->lev * 3 / 2));
-                break;
-        case MUSIC_ID:
-                project(0, 1, py, px, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
-                break;
-        case MUSIC_CONF:
-                confuse_monsters(p_ptr->lev * 2);
-                break;
-        case MUSIC_SOUND:
-                project_hack(GF_SOUND, damroll(10 + p_ptr->lev/5,7));
-                break;
-        case MUSIC_CHARM:
-                charm_monsters(damroll(10 + p_ptr->lev/15,6));
-                break;
-        case MUSIC_WALL:
-                project(0, 0, py, px,
-                        0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);
-                break;
-        case MUSIC_DISPEL:
-                dispel_monsters(randint1(p_ptr->lev * 3));
-                dispel_evil(randint1(p_ptr->lev * 3));
-                break;
-        case MUSIC_SARUMAN:
-                slow_monsters();
-                sleep_monsters();
-                break;
-        case MUSIC_QUAKE:
-                earthquake(py, px, 10);
-                break;
-        case MUSIC_STASIS:
-                stasis_monsters(p_ptr->lev * 4);
-                break;
-        case MUSIC_SHERO:
-                dispel_monsters(randint1(p_ptr->lev * 3));
-                break;
-        case MUSIC_H_LIFE:
-                hp_player(damroll(15,10));
-                set_stun(0);
-                set_cut(0);
-                break;
-        case MUSIC_DETECT+19:
-                wiz_lite(FALSE, FALSE);
-        case MUSIC_DETECT+11:
-        case MUSIC_DETECT+12:
-        case MUSIC_DETECT+13:
-        case MUSIC_DETECT+14:
-        case MUSIC_DETECT+15:
-        case MUSIC_DETECT+16:
-        case MUSIC_DETECT+17:
-        case MUSIC_DETECT+18:
-                map_area(DETECT_RAD_MAP);
-                if ((p_ptr->lev > 39) && (music < MUSIC_DETECT+19)) p_ptr->magic_num1[0] = music+1;
-        case MUSIC_DETECT+6:
-        case MUSIC_DETECT+7:
-        case MUSIC_DETECT+8:
-        case MUSIC_DETECT+9:
-        case MUSIC_DETECT+10:
-                detect_treasure(DETECT_RAD_DEFAULT);
-                detect_objects_gold(DETECT_RAD_DEFAULT);
-                detect_objects_normal(DETECT_RAD_DEFAULT);
-                if ((p_ptr->lev > 24) && (music < MUSIC_DETECT+11)) p_ptr->magic_num1[0] = music+1;
-        case MUSIC_DETECT+3:
-        case MUSIC_DETECT+4:
-        case MUSIC_DETECT+5:
-                detect_monsters_invis(DETECT_RAD_DEFAULT);
-                detect_monsters_normal(DETECT_RAD_DEFAULT);
-                if ((p_ptr->lev > 19) && (music < MUSIC_DETECT+6)) p_ptr->magic_num1[0] = music+1;
-        case MUSIC_DETECT:
-        case MUSIC_DETECT+1:
-        case MUSIC_DETECT+2:
-                detect_traps(DETECT_RAD_DEFAULT, TRUE);
-                detect_doors(DETECT_RAD_DEFAULT);
-                detect_stairs(DETECT_RAD_DEFAULT);
-                if ((p_ptr->lev > 14)  && (music  < MUSIC_DETECT+3)) p_ptr->magic_num1[0] = music+1;
-                break;
-        }
+       switch(music)
+       {
+               case MUSIC_SLOW:
+                       slow_monsters();
+                       break;
+               case MUSIC_STUN:
+                       stun_monsters(damroll(p_ptr->lev/10,2));
+                       break;
+               case MUSIC_L_LIFE:
+                       hp_player(damroll(2,6));
+                       break;
+               case MUSIC_FEAR:
+                       project_hack(GF_TURN_ALL, p_ptr->lev);
+                       break;
+               case MUSIC_PSI:
+                       project_hack(GF_PSI, randint1(p_ptr->lev * 3 / 2));
+                       break;
+               case MUSIC_ID:
+                       project(0, 1, py, px, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
+                       break;
+               case MUSIC_CONF:
+                       confuse_monsters(p_ptr->lev * 2);
+                       break;
+               case MUSIC_SOUND:
+                       project_hack(GF_SOUND, damroll(10 + p_ptr->lev/5,7));
+                       break;
+               case MUSIC_CHARM:
+                       charm_monsters(damroll(10 + p_ptr->lev/15,6));
+                       break;
+               case MUSIC_WALL:
+                       project(0, 0, py, px,
+                               0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);
+                       break;
+               case MUSIC_DISPEL:
+                       dispel_monsters(randint1(p_ptr->lev * 3));
+                       dispel_evil(randint1(p_ptr->lev * 3));
+                       break;
+               case MUSIC_SARUMAN:
+                       slow_monsters();
+                       sleep_monsters();
+                       break;
+               case MUSIC_QUAKE:
+                       earthquake(py, px, 10);
+                       break;
+               case MUSIC_STASIS:
+                       stasis_monsters(p_ptr->lev * 4);
+                       break;
+               case MUSIC_SHERO:
+                       dispel_monsters(randint1(p_ptr->lev * 3));
+                       break;
+               case MUSIC_H_LIFE:
+                       hp_player(damroll(15,10));
+                       set_stun(0);
+                       set_cut(0);
+                       break;
+               case MUSIC_DETECT+19:
+                       wiz_lite(FALSE, FALSE);
+               case MUSIC_DETECT+11:
+               case MUSIC_DETECT+12:
+               case MUSIC_DETECT+13:
+               case MUSIC_DETECT+14:
+               case MUSIC_DETECT+15:
+               case MUSIC_DETECT+16:
+               case MUSIC_DETECT+17:
+               case MUSIC_DETECT+18:
+                       map_area(DETECT_RAD_MAP);
+                       if ((p_ptr->lev > 39) && (music < MUSIC_DETECT+19)) p_ptr->magic_num1[0] = music+1;
+               case MUSIC_DETECT+6:
+               case MUSIC_DETECT+7:
+               case MUSIC_DETECT+8:
+               case MUSIC_DETECT+9:
+               case MUSIC_DETECT+10:
+                       detect_treasure(DETECT_RAD_DEFAULT);
+                       detect_objects_gold(DETECT_RAD_DEFAULT);
+                       detect_objects_normal(DETECT_RAD_DEFAULT);
+                       if ((p_ptr->lev > 24) && (music < MUSIC_DETECT+11)) p_ptr->magic_num1[0] = music+1;
+               case MUSIC_DETECT+3:
+               case MUSIC_DETECT+4:
+               case MUSIC_DETECT+5:
+                       detect_monsters_invis(DETECT_RAD_DEFAULT);
+                       detect_monsters_normal(DETECT_RAD_DEFAULT);
+                       if ((p_ptr->lev > 19) && (music < MUSIC_DETECT+6)) p_ptr->magic_num1[0] = music+1;
+               case MUSIC_DETECT:
+               case MUSIC_DETECT+1:
+               case MUSIC_DETECT+2:
+                       detect_traps(DETECT_RAD_DEFAULT, TRUE);
+                       detect_doors(DETECT_RAD_DEFAULT);
+                       detect_stairs(DETECT_RAD_DEFAULT);
+                       if ((p_ptr->lev > 14)  && (music  < MUSIC_DETECT+3)) p_ptr->magic_num1[0] = music+1;
+                       break;
+       }
 }
 
 /*
@@ -1417,10 +1427,10 @@ static void recharged_notice(object_type *o_ptr)
                        /* Notify the player */
                        if (o_ptr->number > 1)
 #ifdef JP
-                                msg_format("%s¤ÏºÆ½¼Å¶¤µ¤ì¤¿¡£", o_name);
-                        else msg_format("%s¤ÏºÆ½¼Å¶¤µ¤ì¤¿¡£", o_name);
+msg_format("%s¤ÏºÆ½¼Å¶¤µ¤ì¤¿¡£", o_name);
+else msg_format("%s¤ÏºÆ½¼Å¶¤µ¤ì¤¿¡£", o_name);
 #else
-                        msg_format("Your %s are recharged.", o_name);
+                               msg_format("Your %s are recharged.", o_name);
                        else msg_format("Your %s is recharged.", o_name);
 #endif
 
@@ -1437,14 +1447,14 @@ static void recharged_notice(object_type *o_ptr)
 
 static void check_music(void)
 {
-        magic_type *s_ptr;
+       magic_type *s_ptr;
        u32b shouhimana;
 
-        /* Music singed by player */
-        if(p_ptr->pclass != CLASS_BARD) return;
-        if(!p_ptr->magic_num1[0] && !p_ptr->magic_num1[1]) return;
+       /* Music singed by player */
+       if(p_ptr->pclass != CLASS_BARD) return;
+       if(!p_ptr->magic_num1[0] && !p_ptr->magic_num1[1]) return;
 
-        s_ptr = &technic_info[REALM_MUSIC - MIN_TECHNIC][p_ptr->magic_num2[0]];
+       s_ptr = &technic_info[REALM_MUSIC - MIN_TECHNIC][p_ptr->magic_num2[0]];
 
        shouhimana = (s_ptr->smana*(3800-p_ptr->spell_exp[p_ptr->magic_num2[0]])+2399);
        if(p_ptr->dec_mana)
@@ -1452,17 +1462,17 @@ static void check_music(void)
        else shouhimana *= 4;
        shouhimana /= 9600;
        if(shouhimana < 1) shouhimana = 1;
-        shouhimana *= 0x8000;
-        if (((u16b)(p_ptr->csp) < (shouhimana / 0x10000)) || (p_ptr->anti_magic))
-        {
-                stop_singing();
+       shouhimana *= 0x8000;
+       if (((u16b)(p_ptr->csp) < (shouhimana / 0x10000)) || (p_ptr->anti_magic))
+       {
+               stop_singing();
                return;
-        }
-        else
-        {
-                p_ptr->csp -= (u16b) (shouhimana / 0x10000);
-                shouhimana = (shouhimana & 0xffff);
-                if (p_ptr->csp_frac < shouhimana)
+       }
+       else
+       {
+                       p_ptr->csp -= (u16b) (shouhimana / 0x10000);
+                       shouhimana = (shouhimana & 0xffff);
+                       if (p_ptr->csp_frac < shouhimana)
                {
                        p_ptr->csp--;
                        p_ptr->csp_frac += (u16b)(0x10000L - shouhimana);
@@ -1472,7 +1482,7 @@ static void check_music(void)
                        p_ptr->csp_frac -= (u16b)shouhimana;
                }
 
-                p_ptr->redraw |= PR_MANA;
+               p_ptr->redraw |= PR_MANA;
                if (p_ptr->magic_num1[1])
                {
                        p_ptr->magic_num1[0] = p_ptr->magic_num1[1];
@@ -1490,17 +1500,17 @@ static void check_music(void)
                        /* Redraw status bar */
                        p_ptr->redraw |= (PR_STATUS);
                }
-        }
+       }
        if (p_ptr->spell_exp[p_ptr->magic_num2[0]] < 900)
                p_ptr->spell_exp[p_ptr->magic_num2[0]]+=5;
        else if(p_ptr->spell_exp[p_ptr->magic_num2[0]] < 1200)
-        {if (one_in_(2) && (dun_level > 4) && ((dun_level + 10) > p_ptr->lev)) p_ptr->spell_exp[p_ptr->magic_num2[0]]+=1;}
+               {if (one_in_(2) && (dun_level > 4) && ((dun_level + 10) > p_ptr->lev)) p_ptr->spell_exp[p_ptr->magic_num2[0]]+=1;}
        else if(p_ptr->spell_exp[p_ptr->magic_num2[0]] < 1400)
-        {if (one_in_(5) && ((dun_level + 5) > p_ptr->lev) && ((dun_level + 5) > s_ptr->slevel)) p_ptr->spell_exp[p_ptr->magic_num2[0]]+=1;}
+               {if (one_in_(5) && ((dun_level + 5) > p_ptr->lev) && ((dun_level + 5) > s_ptr->slevel)) p_ptr->spell_exp[p_ptr->magic_num2[0]]+=1;}
        else if(p_ptr->spell_exp[p_ptr->magic_num2[0]] < 1600)
-        {if (one_in_(5) && ((dun_level + 5) > p_ptr->lev) && (dun_level > s_ptr->slevel)) p_ptr->spell_exp[p_ptr->magic_num2[0]]+=1;}
+               {if (one_in_(5) && ((dun_level + 5) > p_ptr->lev) && (dun_level > s_ptr->slevel)) p_ptr->spell_exp[p_ptr->magic_num2[0]]+=1;}
 
-        gere_music(p_ptr->magic_num1[0]);
+       gere_music(p_ptr->magic_num1[0]);
 }
 
 /* Choose one of items that have cursed flag */
@@ -1553,7 +1563,7 @@ static void process_world(void)
        extract_day_hour_min(&day, &hour, &min);
        prev_min = (1440 * (tick - TURNS_PER_TICK) / len) % 60;
 
-        if ((turn - old_turn == (150 - dun_level) * TURNS_PER_TICK)
+       if ((turn - old_turn == (150 - dun_level) * TURNS_PER_TICK)
            && (dun_level) &&
            !(quest_number(dun_level) && ((quest_number(dun_level) < MIN_RANDOM_QUEST) && !(quest_number(dun_level) == QUEST_OBERON || quest_number(dun_level) == QUEST_SERPENT || !(quest[quest_number(dun_level)].flags & QUEST_FLAG_PRESET)))) &&
            !(p_ptr->inside_battle))
@@ -1578,7 +1588,7 @@ static void process_world(void)
                if (number_mon == 0)
                {
 #ifdef JP
-                        msg_print("ÁêÂǤÁ¤Ë½ª¤ï¤ê¤Þ¤·¤¿¡£");
+msg_print("ÁêÂǤÁ¤Ë½ª¤ï¤ê¤Þ¤·¤¿¡£");
 #else
                        msg_print("They have kill each other at the same time.");
 #endif
@@ -1595,7 +1605,7 @@ static void process_world(void)
 
                        monster_desc(m_name, wm_ptr, 0);
 #ifdef JP
-                        msg_format("%s¤¬¾¡Íø¤·¤¿¡ª", m_name);
+msg_format("%s¤¬¾¡Íø¤·¤¿¡ª", m_name);
 #else
                        msg_format("%s is winner!", m_name);
 #endif
@@ -1604,21 +1614,21 @@ static void process_world(void)
                        if (win_m_idx == (sel_monster+1))
                        {
 #ifdef JP
-                                msg_print("¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£");
+msg_print("¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£");
 #else
                                msg_print("Congratulations.");
 #endif
 #ifdef JP
-                                msg_format("%d¡ð¤ò¼õ¤±¼è¤Ã¤¿¡£", battle_odds);
+msg_format("%d¡ð¤ò¼õ¤±¼è¤Ã¤¿¡£", battle_odds);
 #else
                                msg_format("You received %d gold.", battle_odds);
 #endif
-                                p_ptr->au += battle_odds;
+                       p_ptr->au += battle_odds;
                        }
                        else
                        {
 #ifdef JP
-                                msg_print("»ÄÇ°¤Ç¤·¤¿¡£");
+msg_print("»ÄÇ°¤Ç¤·¤¿¡£");
 #else
                                msg_print("You lost gold.");
 #endif
@@ -1630,7 +1640,7 @@ static void process_world(void)
                else if(turn - old_turn == 150*TURNS_PER_TICK)
                {
 #ifdef JP
-                        msg_print("¿½¤·Ê¬¤±¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤³¤Î¾¡Éé¤Ï°ú¤­Ê¬¤±¤È¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£");
+msg_print("¿½¤·Ê¬¤±¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤³¤Î¾¡Éé¤Ï°ú¤­Ê¬¤±¤È¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£");
 #else
                        msg_format("This battle have ended in a draw.");
 #endif
@@ -1662,8 +1672,8 @@ static void process_world(void)
 
                                /* Message */
 #ifdef JP
-                                msg_print("¥¢¥ó¥°¥Ð¥ó¥É¤Ø¤ÎÌ礬ÊĤ¸¤«¤«¤Ã¤Æ¤¤¤Þ¤¹...");
-                                msg_print("¥²¡¼¥à¤ò½ªÎ»¤¹¤ë¤«¥»¡¼¥Ö¤¹¤ë¤«¤·¤Æ²¼¤µ¤¤¡£");
+msg_print("¥¢¥ó¥°¥Ð¥ó¥É¤Ø¤ÎÌ礬ÊĤ¸¤«¤«¤Ã¤Æ¤¤¤Þ¤¹...");
+msg_print("¥²¡¼¥à¤ò½ªÎ»¤¹¤ë¤«¥»¡¼¥Ö¤¹¤ë¤«¤·¤Æ²¼¤µ¤¤¡£");
 #else
                                msg_print("The gates to ANGBAND are closing...");
                                msg_print("Please finish up and/or save your game.");
@@ -1676,7 +1686,7 @@ static void process_world(void)
                        {
                                /* Message */
 #ifdef JP
-                                msg_print("º£¡¢¥¢¥ó¥°¥Ð¥ó¥É¤Ø¤ÎÌ礬ÊĤ¶¤µ¤ì¤Þ¤·¤¿¡£");
+msg_print("º£¡¢¥¢¥ó¥°¥Ð¥ó¥É¤Ø¤ÎÌ礬ÊĤ¶¤µ¤ì¤Þ¤·¤¿¡£");
 #else
                                msg_print("The gates to ANGBAND are now closed.");
 #endif
@@ -1698,14 +1708,14 @@ static void process_world(void)
                        do_cmd_save_game(TRUE);
        }
 
-        if (mon_fight)
-        {
+       if (mon_fight)
+       {
 #ifdef JP
-                msg_print("²¿¤«¤¬Ê¹¤³¤¨¤¿¡£");
+               msg_print("²¿¤«¤¬Ê¹¤³¤¨¤¿¡£");
 #else
-                msg_print("You hear noise.");
+               msg_print("You hear noise.");
 #endif
-        }
+       }
 
        /*** Handle the wilderness/town (sunshine) ***/
 
@@ -1725,7 +1735,7 @@ static void process_world(void)
                        {
                                /* Message */
 #ifdef JP
-                                msg_print("Ì뤬ÌÀ¤±¤¿¡£");
+msg_print("Ì뤬ÌÀ¤±¤¿¡£");
 #else
                                msg_print("The sun has risen.");
 #endif
@@ -1756,7 +1766,7 @@ static void process_world(void)
                        {
                                /* Message */
 #ifdef JP
-                                msg_print("Æü¤¬ÄÀ¤ó¤À¡£");
+msg_print("Æü¤¬ÄÀ¤ó¤À¡£");
 #else
                                msg_print("The sun has fallen.");
 #endif
@@ -1773,7 +1783,7 @@ static void process_world(void)
                                                /* Darken "boring" features */
                                                if ((c_ptr->feat <= FEAT_INVIS) ||
                                                    ((c_ptr->feat >= FEAT_DEEP_WATER) &&
-                                                     (c_ptr->feat <= FEAT_MOUNTAIN) &&
+                                                       (c_ptr->feat <= FEAT_MOUNTAIN) &&
                                                     (c_ptr->feat != FEAT_MUSEUM)) ||
                                                    (x == 0) || (x == cur_wid-1) ||
                                                    (y == 0) || (y == cur_hgt-1))
@@ -1812,7 +1822,7 @@ static void process_world(void)
 
                /* Message */
 #ifdef JP
-                if (cheat_xtra) msg_print("Êó½·¤ò¥ê¥»¥Ã¥È");
+if (cheat_xtra) msg_print("Êó½·¤ò¥ê¥»¥Ã¥È");
 #else
                if (cheat_xtra) msg_print("Rewards reset.");
 #endif
@@ -1827,7 +1837,7 @@ static void process_world(void)
            !p_ptr->inside_arena && !p_ptr->inside_quest && !p_ptr->inside_battle)
        {
                /* Make a new monster */
-               (void)alloc_monster(MAX_SIGHT + 5, FALSE);
+               (void)alloc_monster(MAX_SIGHT + 5, 0);
        }
 
        /* Hack -- Check for creature regeneration */
@@ -1842,7 +1852,7 @@ static void process_world(void)
        {
                /* Take damage */
 #ifdef JP
-                take_hit(DAMAGE_NOESCAPE, 1, "ÆÇ", -1);
+take_hit(DAMAGE_NOESCAPE, 1, "ÆÇ", -1);
 #else
                take_hit(DAMAGE_NOESCAPE, 1, "poison", -1);
 #endif
@@ -1859,8 +1869,8 @@ static void process_world(void)
                        {
                                /* Take damage */
 #ifdef JP
-                                msg_print("Æü¸÷¤¬¤¢¤Ê¤¿¤Î¥¢¥ó¥Ç¥Ã¥É¤ÎÆùÂΤò¾Æ¤­¾Ç¤¬¤·¤¿¡ª");
-                                take_hit(DAMAGE_NOESCAPE, 1, "Æü¸÷", -1);
+msg_print("Æü¸÷¤¬¤¢¤Ê¤¿¤Î¥¢¥ó¥Ç¥Ã¥É¤ÎÆùÂΤò¾Æ¤­¾Ç¤¬¤·¤¿¡ª");
+take_hit(DAMAGE_NOESCAPE, 1, "Æü¸÷", -1);
 #else
                                msg_print("The sun's rays scorch your undead flesh!");
                                take_hit(DAMAGE_NOESCAPE, 1, "sunlight", -1);
@@ -1881,7 +1891,7 @@ static void process_world(void)
                        object_desc(o_name, o_ptr, FALSE, 0);
 
 #ifdef JP
-                        msg_format("%s¤¬¤¢¤Ê¤¿¤Î¥¢¥ó¥Ç¥Ã¥É¤ÎÆùÂΤò¾Æ¤­¾Ç¤¬¤·¤¿¡ª", o_name);
+msg_format("%s¤¬¤¢¤Ê¤¿¤Î¥¢¥ó¥Ç¥Ã¥É¤ÎÆùÂΤò¾Æ¤­¾Ç¤¬¤·¤¿¡ª", o_name);
 #else
                        msg_format("The %s scorches your undead flesh!", o_name);
 #endif
@@ -1893,7 +1903,7 @@ static void process_world(void)
                        object_desc(o_name, o_ptr, TRUE, 0);
 
 #ifdef JP
-                        sprintf(ouch, "%s¤òÁõÈ÷¤·¤¿¥À¥á¡¼¥¸", o_name);
+sprintf(ouch, "%s¤òÁõÈ÷¤·¤¿¥À¥á¡¼¥¸", o_name);
 #else
                        sprintf(ouch, "wielding %s", o_name);
 #endif
@@ -1903,7 +1913,7 @@ static void process_world(void)
        }
 
        if ((cave[py][px].feat == FEAT_SHAL_LAVA) &&
-            !p_ptr->invuln && !p_ptr->immune_fire && !p_ptr->ffall)
+               !p_ptr->invuln && !p_ptr->immune_fire && !p_ptr->ffall)
        {
                int damage = 3000 + randint0(2000);
 
@@ -1917,8 +1927,8 @@ static void process_world(void)
                {
                        /* Take damage */
 #ifdef JP
-                        msg_print("ÍÏ´ä¤Ç²Ð½ý¤·¤¿¡ª");
-                        take_hit(DAMAGE_NOESCAPE, damage, "Àõ¤¤ÍÏ´äή", -1);
+msg_print("ÍÏ´ä¤Ç²Ð½ý¤·¤¿¡ª");
+take_hit(DAMAGE_NOESCAPE, damage, "Àõ¤¤ÍÏ´äή", -1);
 #else
                        msg_print("The lava burns you!");
                        take_hit(DAMAGE_NOESCAPE, damage, "shallow lava", -1);
@@ -1929,7 +1939,7 @@ static void process_world(void)
        }
 
        else if ((cave[py][px].feat == FEAT_DEEP_LAVA) &&
-                 !p_ptr->invuln && !p_ptr->immune_fire)
+               !p_ptr->invuln && !p_ptr->immune_fire)
        {
                int damage = 6000 + randint0(4000);
 
@@ -1944,8 +1954,8 @@ static void process_world(void)
                        damage = damage / 5;
 
 #ifdef JP
-                        message = "Ç®¤Ç²Ð½ý¤·¤¿¡ª";
-                        hit_from = "¿¼¤¤ÍÏ´äή¤Î¾å¤ËÉâÍ·¤·¤¿¥À¥á¡¼¥¸";
+message = "Ç®¤Ç²Ð½ý¤·¤¿¡ª";
+hit_from = "¿¼¤¤ÍÏ´äή¤Î¾å¤ËÉâÍ·¤·¤¿¥À¥á¡¼¥¸";
 #else
                        message = "The heat burns you!";
                        hit_from = "flying over deep lava";
@@ -1955,8 +1965,8 @@ static void process_world(void)
                else
                {
 #ifdef JP
-                        message = "ÍÏ´ä¤Ç²Ð½ý¤·¤¿¡ª";
-                        hit_from = "¿¼¤¤ÍÏ´äή";
+message = "ÍÏ´ä¤Ç²Ð½ý¤·¤¿¡ª";
+hit_from = "¿¼¤¤ÍÏ´äή";
 #else
                        message = "The lava burns you!";
                        hit_from = "deep lava";
@@ -1981,8 +1991,8 @@ static void process_world(void)
                {
                        /* Take damage */
 #ifdef JP
-                        msg_print("Å®¤ì¤Æ¤¤¤ë¡ª");
-                        take_hit(DAMAGE_NOESCAPE, randint1(p_ptr->lev), "Å®¤ì", -1);
+msg_print("Å®¤ì¤Æ¤¤¤ë¡ª");
+take_hit(DAMAGE_NOESCAPE, randint1(p_ptr->lev), "Å®¤ì", -1);
 #else
                        msg_print("You are drowning!");
                        take_hit(DAMAGE_NOESCAPE, randint1(p_ptr->lev), "drowning", -1);
@@ -2002,8 +2012,8 @@ static void process_world(void)
                        if (p_ptr->resist_fire) damage = damage / 3;
                        if (p_ptr->oppose_fire) damage = damage / 3;
 #ifdef JP
-                        msg_print("Ç®¤¤¡ª");
-                        take_hit(DAMAGE_NOESCAPE, damage, "±ê¤Î¥ª¡¼¥é", -1);
+msg_print("Ç®¤¤¡ª");
+take_hit(DAMAGE_NOESCAPE, damage, "±ê¤Î¥ª¡¼¥é", -1);
 #else
                        msg_print("It's hot!");
                        take_hit(DAMAGE_NOESCAPE, damage, "Fire aura", -1);
@@ -2015,8 +2025,8 @@ static void process_world(void)
                        if (p_ptr->resist_elec) damage = damage / 3;
                        if (p_ptr->oppose_elec) damage = damage / 3;
 #ifdef JP
-                        msg_print("Äˤ¤¡ª");
-                        take_hit(DAMAGE_NOESCAPE, damage, "Åŵ¤¤Î¥ª¡¼¥é", -1);
+msg_print("Äˤ¤¡ª");
+take_hit(DAMAGE_NOESCAPE, damage, "Åŵ¤¤Î¥ª¡¼¥é", -1);
 #else
                        msg_print("It hurts!");
                        take_hit(DAMAGE_NOESCAPE, damage, "Elec aura", -1);
@@ -2028,8 +2038,8 @@ static void process_world(void)
                        if (p_ptr->resist_cold) damage = damage / 3;
                        if (p_ptr->oppose_cold) damage = damage / 3;
 #ifdef JP
-                        msg_print("Î䤿¤¤¡ª");
-                        take_hit(DAMAGE_NOESCAPE, damage, "Î䵤¤Î¥ª¡¼¥é", -1);
+msg_print("Î䤿¤¤¡ª");
+take_hit(DAMAGE_NOESCAPE, damage, "Î䵤¤Î¥ª¡¼¥é", -1);
 #else
                        msg_print("It's cold!");
                        take_hit(DAMAGE_NOESCAPE, damage, "Cold aura", -1);
@@ -2052,7 +2062,7 @@ static void process_world(void)
                        /* Do nothing */
                }
                else if (!p_ptr->invuln && !p_ptr->wraith_form && !p_ptr->kabenuke &&
-                         ((p_ptr->chp > (p_ptr->lev / 5)) || !p_ptr->pass_wall))
+                   ((p_ptr->chp > (p_ptr->lev / 5)) || !p_ptr->pass_wall))
                {
                        cptr dam_desc;
 
@@ -2061,8 +2071,8 @@ static void process_world(void)
                        if (p_ptr->pass_wall)
                        {
 #ifdef JP
-                                msg_print("ÂΤÎʬ»Ò¤¬Ê¬²ò¤·¤¿µ¤¤¬¤¹¤ë¡ª");
-                                dam_desc = "Ì©ÅÙ";
+msg_print("ÂΤÎʬ»Ò¤¬Ê¬²ò¤·¤¿µ¤¤¬¤¹¤ë¡ª");
+dam_desc = "Ì©ÅÙ";
 #else
                                msg_print("Your molecules feel disrupted!");
                                dam_desc = "density";
@@ -2072,8 +2082,8 @@ static void process_world(void)
                        else
                        {
 #ifdef JP
-                                msg_print("Êø¤ì¤¿´ä¤Ë²¡¤·ÄÙ¤µ¤ì¤¿¡ª");
-                                dam_desc = "¹Å¤¤´ä";
+msg_print("Êø¤ì¤¿´ä¤Ë²¡¤·ÄÙ¤µ¤ì¤¿¡ª");
+dam_desc = "¹Å¤¤´ä";
 #else
                                msg_print("You are being crushed!");
                                dam_desc = "solid rock";
@@ -2137,46 +2147,46 @@ static void process_world(void)
 
                                switch (min / 15)
                                {
-                                case 0:
-                                {
+                                       case 0:
+                                       {
 #ifdef JP
-                                        msg_print("±ó¤¯¤ÇÉÔµ¤Ì£¤Ê¾â¤Î²»¤¬ÌĤä¿¡£");
+msg_print("±ó¤¯¤ÇÉÔµ¤Ì£¤Ê¾â¤Î²»¤¬ÌĤä¿¡£");
 #else
-                                        msg_print("You hear a distant bell toll ominously.");
+                                               msg_print("You hear a distant bell toll ominously.");
 #endif
 
-                                        break;
-                                }
-                                case 1:
-                                {
+                                               break;
+                                       }
+                                       case 1:
+                                       {
 #ifdef JP
-                                        msg_print("±ó¤¯¤Ç¾â¤¬Æó²óÌĤä¿¡£");
+msg_print("±ó¤¯¤Ç¾â¤¬Æó²óÌĤä¿¡£");
 #else
-                                        msg_print("A distant bell sounds twice.");
+                                               msg_print("A distant bell sounds twice.");
 #endif
 
-                                        break;
-                                }
-                                case 2:
-                                {
+                                               break;
+                                       }
+                                       case 2:
+       {
 #ifdef JP
-                                        msg_print("±ó¤¯¤Ç¾â¤¬»°²óÌĤä¿¡£");
+msg_print("±ó¤¯¤Ç¾â¤¬»°²óÌĤä¿¡£");
 #else
-                                        msg_print("A distant bell sounds three times.");
+                                               msg_print("A distant bell sounds three times.");
 #endif
 
-                                        break;
-                                }
-                                case 3:
-                                {
+                                               break;
+                                       }
+                                       case 3:
+                                       {
 #ifdef JP
-                                        msg_print("±ó¤¯¤Ç¾â¤¬»Í²óÌĤä¿¡£");
+msg_print("±ó¤¯¤Ç¾â¤¬»Í²óÌĤä¿¡£");
 #else
-                                        msg_print("A distant bell tolls four times.");
+                                               msg_print("A distant bell tolls four times.");
 #endif
 
-                                        break;
-                                }
+                                               break;
+                                       }
                                }
                        }
 
@@ -2187,13 +2197,13 @@ static void process_world(void)
 
                                disturb(1, 0);
 #ifdef JP
-                                msg_print("±ó¤¯¤Ç¾â¤¬²¿²ó¤âÌĤꡢ»à¤ó¤À¤è¤¦¤ÊÀŤ±¤µ¤ÎÃæ¤Ø¾Ã¤¨¤Æ¤¤¤Ã¤¿¡£");
+msg_print("±ó¤¯¤Ç¾â¤¬²¿²ó¤âÌĤꡢ»à¤ó¤À¤è¤¦¤ÊÀŤ±¤µ¤ÎÃæ¤Ø¾Ã¤¨¤Æ¤¤¤Ã¤¿¡£");
 #else
                                msg_print("A distant bell tolls many times, fading into an deathly silence.");
 #endif
 
-                                activate_ty_curse(FALSE, &count);
-                        }
+               activate_ty_curse(FALSE, &count);
+       }
                }
        }
 
@@ -2240,7 +2250,7 @@ static void process_world(void)
 
                /* Take damage */
 #ifdef JP
-                take_hit(DAMAGE_NOESCAPE, i, "Ã×Ì¿½ý", -1);
+take_hit(DAMAGE_NOESCAPE, i, "Ã×Ì¿½ý", -1);
 #else
                take_hit(DAMAGE_NOESCAPE, i, "a fatal wound", -1);
 #endif
@@ -2260,8 +2270,8 @@ static void process_world(void)
                        {
                                /* Basic digestion rate based on speed */
                                i = /* extract_energy[p_ptr->pspeed] * 2;*/
-                                        ((p_ptr->pspeed > 199) ? 49 : ((p_ptr->pspeed < 0) ?
-                                                                       1 : extract_energy[p_ptr->pspeed]));
+                               ((p_ptr->pspeed > 199) ? 49 : ((p_ptr->pspeed < 0) ?
+                               1 : extract_energy[p_ptr->pspeed]));
 
                                /* Regeneration takes more food */
                                if (p_ptr->regenerate) i += 20;
@@ -2297,7 +2307,7 @@ static void process_world(void)
 
                /* Take damage */
 #ifdef JP
-                if (!p_ptr->invuln) take_hit(DAMAGE_LOSELIFE, i, "¶õÊ¢", -1);
+if (!p_ptr->invuln) take_hit(DAMAGE_LOSELIFE, i, "¶õÊ¢", -1);
 #else
                if (!p_ptr->invuln) take_hit(DAMAGE_LOSELIFE, i, "starvation", -1);
 #endif
@@ -2332,7 +2342,7 @@ static void process_world(void)
                        {
                                /* Message */
 #ifdef JP
-                                msg_print("¤¢¤Þ¤ê¤Ë¤â¶õÊ¢¤Çµ¤À䤷¤Æ¤·¤Þ¤Ã¤¿¡£");
+msg_print("¤¢¤Þ¤ê¤Ë¤â¶õÊ¢¤Çµ¤À䤷¤Æ¤·¤Þ¤Ã¤¿¡£");
 #else
                                msg_print("You faint from the lack of food.");
 #endif
@@ -2390,7 +2400,7 @@ static void process_world(void)
                        if (p_ptr->wizard)
                        {
 #ifdef JP
-                                msg_format("£Í£Ð²óÉü: %d/%d", upkeep_regen, regen_amount);
+msg_format("£Í£Ð²óÉü: %d/%d", upkeep_regen, regen_amount);
 #else
                                msg_format("Regen: %d/%d", upkeep_regen, regen_amount);
 #endif
@@ -2414,7 +2424,7 @@ static void process_world(void)
                while (upkeep_factor > 100)
                {
 #ifdef JP
-                        msg_print("¤³¤ó¤Ê¤Ë¿¤¯¤Î¥Ú¥Ã¥È¤òÀ©¸æ¤Ç¤­¤Ê¤¤¡ª");
+msg_print("¤³¤ó¤Ê¤Ë¿¤¯¤Î¥Ú¥Ã¥È¤òÀ©¸æ¤Ç¤­¤Ê¤¤¡ª");
 #else
                        msg_print("Such much pets cannot be controled at once!");
 #endif
@@ -3750,7 +3760,7 @@ take_hit(DAMAGE_LOSELIFE, MIN(p_ptr->lev, 50), "
                if (!p_ptr->word_recall)
                {
                        /* Disturbing! */
-                       disturb(0, 0);
+                       disturb(0, 0);
 
                        /* Determine the level */
                        if (dun_level || p_ptr->inside_quest)
@@ -3761,12 +3771,13 @@ msg_print("
                                msg_print("You feel yourself yanked upwards!");
 #endif
 
-                                p_ptr->recall_dungeon = dungeon_type;
+                               p_ptr->recall_dungeon = dungeon_type;
                                if (record_stair)
                                        do_cmd_write_nikki(NIKKI_RECALL, dun_level, NULL);
 
                                dun_level = 0;
                                dungeon_type = 0;
+                               prepare_change_floor_mode(CFM_CLEAR_ALL);
 
                                leave_quest_check();
 
@@ -3781,7 +3792,7 @@ msg_print("
                                msg_print("You feel yourself yanked downwards!");
 #endif
 
-                                dungeon_type = p_ptr->recall_dungeon;
+                               dungeon_type = p_ptr->recall_dungeon;
 
                                if (record_stair)
                                        do_cmd_write_nikki(NIKKI_RECALL, dun_level, NULL);
@@ -3820,6 +3831,8 @@ msg_print("
                                }
                                p_ptr->wild_mode = FALSE;
 
+                               prepare_change_floor_mode(CFM_CLEAR_ALL);
+
                                /* Leaving */
                                p_ptr->leaving = TRUE;
 
@@ -3843,6 +3856,52 @@ msg_print("
                        sound(SOUND_TPLEVEL);
                }
        }
+
+
+       /* Delayed Alter reality */
+       if (p_ptr->alter_reality)
+       {
+               if (autosave_l && (p_ptr->alter_reality == 1) && !p_ptr->inside_battle)
+                       do_cmd_save_game(TRUE);
+
+               /* Count down towards alter */
+               p_ptr->alter_reality--;
+
+               p_ptr->redraw |= (PR_STATUS);
+
+               /* Activate the alter reality */
+               if (!p_ptr->alter_reality)
+               {
+                       /* Disturbing! */
+                       disturb(0, 0);
+
+                       /* Determine the level */
+                       if (!quest_number(dun_level) && dun_level)
+                       {
+#ifdef JP
+                               msg_print("À¤³¦¤¬ÊѤï¤Ã¤¿¡ª");
+#else
+                               msg_print("The world changes!");
+#endif
+
+                               prepare_change_floor_mode(CFM_CLEAR_ALL);
+
+                               /* Leaving */
+                               p_ptr->leaving = TRUE;
+                       }
+                       else
+                       {
+#ifdef JP
+                               msg_print("À¤³¦¤¬¾¯¤·¤Î´ÖÊѲ½¤·¤¿¤è¤¦¤À¡£");
+#else
+                               msg_print("The world seems to change for a moment!");
+#endif
+                       }
+
+                       /* Sound */
+                       sound(SOUND_TPLEVEL);
+               }
+       }
 }
 
 
@@ -3855,6 +3914,17 @@ static bool enter_wizard_mode(void)
        /* Ask first time */
        if (!p_ptr->noscore)
        {
+               /* Wizard mode is not permitted */
+               if (!allow_debug_opts)
+               {
+#ifdef JP
+                       msg_print("¥¦¥£¥¶¡¼¥É¥â¡¼¥É¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ ");
+#else
+                       msg_print("Wizard mode is not permitted.");
+#endif
+                       return FALSE;
+               }
+
                /* Mention effects */
 #ifdef JP
 msg_print("¥¦¥£¥¶¡¼¥É¥â¡¼¥É¤Ï¥Ç¥Ð¥°¤È¼Â¸³¤Î¤¿¤á¤Î¥â¡¼¥É¤Ç¤¹¡£ ");
@@ -3896,6 +3966,17 @@ static bool enter_debug_mode(void)
        /* Ask first time */
        if (!p_ptr->noscore)
        {
+               /* Debug mode is not permitted */
+               if (!allow_debug_opts)
+               {
+#ifdef JP
+                       msg_print("¥Ç¥Ð¥Ã¥°¥³¥Þ¥ó¥É¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ ");
+#else
+                       msg_print("Use of debug command is not permitted.");
+#endif
+                       return FALSE;
+               }
+
                /* Mention effects */
 #ifdef JP
 msg_print("¥Ç¥Ð¥°¡¦¥³¥Þ¥ó¥É¤Ï¥Ç¥Ð¥°¤È¼Â¸³¤Î¤¿¤á¤Î¥³¥Þ¥ó¥É¤Ç¤¹¡£ ");
@@ -4277,37 +4358,37 @@ msg_print("
                /* Go up staircase */
                case '<':
                {
-                        if(!p_ptr->wild_mode && !dun_level && !p_ptr->inside_arena && !p_ptr->inside_quest)
-                        {
-                                if (!vanilla_town)
-                                {
-                                        if(ambush_flag)
+                       if(!p_ptr->wild_mode && !dun_level && !p_ptr->inside_arena && !p_ptr->inside_quest)
+                       {
+                               if (!vanilla_town)
+                               {
+                                       if(ambush_flag)
                                        {
 #ifdef JP
-                                                msg_print("½±·â¤«¤éƨ¤²¤ë¤Ë¤Ï¥Þ¥Ã¥×¤Îü¤Þ¤Ç°ÜÆ°¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£");
+                                               msg_print("½±·â¤«¤éƨ¤²¤ë¤Ë¤Ï¥Þ¥Ã¥×¤Îü¤Þ¤Ç°ÜÆ°¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£");
 #else
-                                                msg_print("To flee the ambush you have to reach the edge of the map.");
+                                               msg_print("To flee the ambush you have to reach the edge of the map.");
 #endif
                                        }
                                        else if (p_ptr->food < PY_FOOD_WEAK)
                                        {
 #ifdef JP
-                                                msg_print("¤½¤ÎÁ°¤Ë¿©»ö¤ò¤È¤é¤Ê¤¤¤È¡£");
+                                               msg_print("¤½¤ÎÁ°¤Ë¿©»ö¤ò¤È¤é¤Ê¤¤¤È¡£");
 #else
-                                                msg_print("You must eat something here.");
+                                               msg_print("You must eat something here.");
 #endif
                                        }
-                                        else
-                                        {
+                                       else
+                                       {
                                                if (change_wild_mode())
                                                {
                                                        p_ptr->oldpx = px;
                                                        p_ptr->oldpy = py;
                                                }
-                                        }
-                                }
-                        }
-                        else
+                                       }
+                               }
+                       }
+                       else
                                do_cmd_go_up();
                        break;
                }
@@ -4315,14 +4396,14 @@ msg_print("
                /* Go down staircase */
                case '>':
                {
-                        if(!p_ptr->wild_mode) do_cmd_go_down();
-                        else
-                        {
+                       if(!p_ptr->wild_mode) do_cmd_go_down();
+                       else
+                       {
                                p_ptr->wilderness_x = px;
                                p_ptr->wilderness_y = py;
                                change_wild_mode();
-                        }
-                        break;
+                       }
+                       break;
                }
 
                /* Open a door or chest */
@@ -4946,7 +5027,7 @@ msg_print("
                                char error_m[1024];
                                sound(SOUND_ILLEGAL);
 #ifdef JP
-                                if (!get_rnd_line("error_j.txt", 0, error_m))
+                               if (!get_rnd_line("error_j.txt", 0, error_m))
 #else
                                if (!get_rnd_line("error.txt", 0, error_m))
 #endif
@@ -5059,7 +5140,8 @@ msg_print("
                            !p_ptr->poisoned && !p_ptr->afraid &&
                            !p_ptr->stun && !p_ptr->cut &&
                            !p_ptr->slow && !p_ptr->paralyzed &&
-                           !p_ptr->image && !p_ptr->word_recall)
+                           !p_ptr->image && !p_ptr->word_recall &&
+                           !p_ptr->alter_reality)
                        {
                                set_action(ACTION_NONE);
                        }
@@ -5696,7 +5778,7 @@ msg_format("%s(%c)
  */
 static void dungeon(bool load_game)
 {
-       int quest_num = 0, i, num;
+       int quest_num = 0, i;
 
        /* Set the base level */
        base_level = dun_level;
@@ -5758,47 +5840,6 @@ static void dungeon(bool load_game)
                if (record_maxdeapth) do_cmd_write_nikki(NIKKI_MAXDEAPTH, dun_level, NULL);
        }
 
-       /* No stairs down from Quest */
-       if (quest_number(dun_level))
-       {
-               create_down_stair = 0;
-       }
-
-       /* Paranoia -- no stairs from town or wilderness */
-       if (!dun_level) create_down_stair = create_up_stair = 0;
-
-       /* Option -- no connected stairs */
-       if (!dungeon_stair) create_down_stair = create_up_stair = 0;
-
-       /* Option -- no up stairs */
-       if (ironman_downward) create_down_stair = create_up_stair = 0;
-
-       /* Make a stairway. */
-       if (create_up_stair || create_down_stair)
-       {
-               /* Place a stairway */
-               if (cave_valid_bold(py, px))
-               {
-                       /* XXX XXX XXX */
-                       delete_object(py, px);
-
-                       /* Make stairs */
-                       if (create_down_stair)
-                       {
-                               if (create_down_stair == 2) cave_set_feat(py, px, FEAT_MORE_MORE);
-                               else cave_set_feat(py, px, FEAT_MORE);
-                       }
-                       else
-                       {
-                               if (create_up_stair == 2) cave_set_feat(py, px, FEAT_LESS_LESS);
-                               else cave_set_feat(py, px, FEAT_LESS);
-                       }
-               }
-
-               /* Cancel the stair request */
-               create_down_stair = create_up_stair = 0;
-       }
-
        /* Validate the panel */
        panel_bounds_center();
 
@@ -6039,79 +6080,17 @@ msg_print("
        /* Not save-and-quit and not dead? */
        if (p_ptr->playing && !p_ptr->is_dead)
        {
-                /* Clear at fist */
-               for(num = 0; num < 21; num++)
-               {
-                       party_mon[num].r_idx = 0;
-               }
-
-               if (p_ptr->riding)
-               {
-                       COPY(&party_mon[0], &m_list[p_ptr->riding], monster_type);
-               }
+               /*
+                * Maintain Unique monsters and artifact, save current
+                * floor, then prepare next floor
+                */
+               leave_floor();
 
-               for(i = m_max - 1, num = 1; (i >= 1 && num < 21); i--)
-               {
-                       monster_type *m_ptr = &m_list[i];
-                       
-                       if (!m_ptr->r_idx) continue;
-                       if (!is_pet(m_ptr)) continue;
-                       if (i == p_ptr->riding) continue;
-
-                        if (reinit_wilderness)
-                        {
-                                /* Don't lose sight of pets when getting a Quest */
-                        }
-                        else
-                        {
-                                int dis = distance(py, px, m_ptr->fy, m_ptr->fx);
-
-                                /*
-                                 * Pets with nickname will follow even from 3 blocks away
-                                 * when you or the pet can see the other.
-                                 */
-                                if (m_ptr->nickname && 
-                                    (player_has_los_bold(m_ptr->fy, m_ptr->fx) ||
-                                     los(m_ptr->fy, m_ptr->fx, py, px)))
-                                {
-                                        if (dis > 3) continue;
-                                }
-                                else
-                                {
-                                        if (dis > 1) continue;
-                                }
-                                if (m_ptr->confused || m_ptr->stunned || m_ptr->csleep) continue;
-                        }
-
-                       COPY(&party_mon[num], &m_list[i], monster_type);
-                       num++;
-
-                        /* Mark as followed */
-                       delete_monster_idx(i);
-               }
-
-                /* Forget the flag */
-                reinit_wilderness = FALSE;
-
-               if (record_named_pet)
-               {
-                       for (i = m_max - 1; i >=1; i--)
-                       {
-                               monster_type *m_ptr = &m_list[i];
-                               char m_name[80];
-                               
-                               if (!m_ptr->r_idx) continue;
-                               if (!is_pet(m_ptr)) continue;
-                               if (!m_ptr->nickname) continue;
-                               if (p_ptr->riding == i) continue;
-                               
-                                /* Lost sight of a pet */
-                               monster_desc(m_name, m_ptr, 0x88);
-                               do_cmd_write_nikki(NIKKI_NAMED_PET, 4, m_name);
-                       }
-               }
+               /* Forget the flag */
+               reinit_wilderness = FALSE;
        }
 
+       /* Write about current level on the play record once per level */
        write_level = TRUE;
 }
 
@@ -6161,9 +6140,9 @@ static void load_all_pref_files(void)
        init_autopicker();
 
 #ifdef JP
-        sprintf(buf, "picktype-%s.prf", player_base);
+       sprintf(buf, "picktype-%s.prf", player_base);
 #else
-        sprintf(buf, "pickpref-%s.prf", player_base);
+       sprintf(buf, "pickpref-%s.prf", player_base);
 #endif
 
        err = process_pickpref_file(buf);
@@ -6364,6 +6343,16 @@ quit("
 
                /* Prepare to init the RNG */
                Rand_quick = TRUE;
+
+               /* Initialize the saved floors data */
+               init_saved_floors();
+       }
+
+       /* Old game is loaded.  But new game is requested. */
+       else if (new_game)
+       {
+               /* Delete expanded temporal files */
+               clear_saved_floor_files();
        }
 
        /* Process old character */
@@ -6526,14 +6515,14 @@ quit("
        if(p_ptr->pseikaku == SEIKAKU_SEXY)
                s_info[p_ptr->pclass].w_max[TV_HAFTED-TV_BOW][SV_WHIP] = 8000;
 
-        /* Fill the arrays of floors and walls in the good proportions */
-        for (i = 0; i < 100; i++)
-        {
-                int lim1, lim2, lim3;
+       /* Fill the arrays of floors and walls in the good proportions */
+       for (i = 0; i < 100; i++)
+       {
+               int lim1, lim2, lim3;
 
-                lim1 = d_info[dungeon_type].floor_percent1;
-                lim2 = lim1 + d_info[dungeon_type].floor_percent2;
-                lim3 = lim2 + d_info[dungeon_type].floor_percent3;
+               lim1 = d_info[dungeon_type].floor_percent1;
+               lim2 = lim1 + d_info[dungeon_type].floor_percent2;
+               lim3 = lim2 + d_info[dungeon_type].floor_percent3;
 
                if (i < lim1)
                        floor_type[i] = d_info[dungeon_type].floor1;
@@ -6551,7 +6540,7 @@ quit("
                        fill_type[i] = d_info[dungeon_type].fill_type2;
                else if (i < lim3)
                        fill_type[i] = d_info[dungeon_type].fill_type3;
-        }
+       }
 
        /* Flavor the objects */
        flavor_init();
@@ -6575,22 +6564,22 @@ prt("
 
        /* Hack -- Enter wizard mode */
        if (arg_wizard)
-        {
-                if (enter_wizard_mode()) p_ptr->wizard = TRUE;
-                else if (p_ptr->is_dead) quit("Already dead.");
-        }
+       {
+               if (enter_wizard_mode()) p_ptr->wizard = TRUE;
+               else if (p_ptr->is_dead) quit("Already dead.");
+       }
 
        /* Initialize the town-buildings if necessary */
        if (!dun_level && !p_ptr->inside_quest)
        {
                /* Init the wilderness */
 
-process_dungeon_file("w_info_j.txt", 0, 0, max_wild_y, max_wild_x);
+               process_dungeon_file("w_info.txt", 0, 0, max_wild_y, max_wild_x);
 
                /* Init the town */
                init_flags = INIT_ONLY_BUILDINGS;
 
-process_dungeon_file("t_info_j.txt", 0, 0, MAX_HGT, MAX_WID);
+               process_dungeon_file("t_info.txt", 0, 0, MAX_HGT, MAX_WID);
 
        }
 
@@ -6603,7 +6592,7 @@ if (init_v_info()) quit("
 #endif
 
        /* Generate a dungeon level if needed */
-       if (!character_dungeon) generate_cave();
+       if (!character_dungeon) change_floor();
 
 
        /* Character is now "complete" */
@@ -6802,6 +6791,14 @@ msg_print("ĥ
                                                p_ptr->redraw |= (PR_STATUS);
                                        }
 
+                                       /* Hack -- cancel alter */
+                                       if (p_ptr->alter_reality)
+                                       {
+                                               /* Hack -- Prevent alter */
+                                               p_ptr->alter_reality = 0;
+                                               p_ptr->redraw |= (PR_STATUS);
+                                       }
+
                                        /* Note cause of death XXX XXX XXX */
 #ifdef JP
 (void)strcpy(p_ptr->died_from, "»à¤Îµ½¤­");
@@ -6860,7 +6857,7 @@ msg_print("ĥ
                if (p_ptr->is_dead) break;
 
                /* Make a new level */
-               generate_cave();
+               change_floor();
        }
 
        /* Close stuff */