OSDN Git Service

[Refactor] #38995 world_type 構造体に dungeon_turn を取り込む。 / Move dungeon_turn to world_t...
[hengband/hengband.git] / src / load.c
index 8f03575..a87acef 100644 (file)
 #include "angband.h"
 #include "generate.h"
 #include "trap.h"
+#include "mutation.h"
+#include "quest.h"
+#include "store.h"
+#include "artifact.h"
+#include "avatar.h"
+#include "spells-status.h"
+#include "object-hook.h"
 
 
 /*
@@ -144,7 +151,7 @@ static bool z_older_than(byte x, byte y, byte z)
  * @details
  * Avoid the top two lines, to avoid interference with "msg_print()".
  */
-static void note(cptr msg)
+static void note(concptr msg)
 {
        static TERM_LEN y = 2;
 
@@ -1368,12 +1375,12 @@ static errr rd_store(int town_number, int store_number)
 
        if (z_older_than(10, 3, 3) && (store_number == STORE_HOME))
        {
-               st_ptr = &town[1].store[store_number];
+               st_ptr = &town_info[1].store[store_number];
                if (st_ptr->stock_num) sort = TRUE;
        }
        else
        {
-               st_ptr = &town[town_number].store[store_number];
+               st_ptr = &town_info[town_number].store[store_number];
        }
 
        /* Read the basic info */
@@ -1947,7 +1954,7 @@ static void rd_extra(void)
        rd_s16b(&tmp16s);
        p_ptr->oldpy = (POSITION)tmp16s;
 
-       if (z_older_than(10, 3, 13) && !dun_level && !p_ptr->inside_arena) {p_ptr->oldpy = 33;p_ptr->oldpx = 131;}
+       if (z_older_than(10, 3, 13) && !current_floor_ptr->dun_level && !p_ptr->inside_arena) {p_ptr->oldpy = 33;p_ptr->oldpx = 131;}
 
        /* Was p_ptr->rewards[MAX_BACT] */
        rd_s16b(&tmp16s);
@@ -2249,10 +2256,10 @@ static void rd_extra(void)
        case RACE_SKELETON:
        case RACE_ZOMBIE:
        case RACE_SPECTRE:
-               turn_limit = TURNS_PER_TICK * TOWN_DAWN * MAX_DAYS + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
+               current_world_ptr->game_turn_limit = TURNS_PER_TICK * TOWN_DAWN * MAX_DAYS + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
                break;
        default:
-               turn_limit = TURNS_PER_TICK * TOWN_DAWN * (MAX_DAYS - 1) + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
+               current_world_ptr->game_turn_limit = TURNS_PER_TICK * TOWN_DAWN * (MAX_DAYS - 1) + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
                break;
        }
        dungeon_turn_limit = TURNS_PER_TICK * TOWN_DAWN * (MAX_DAYS - 1) + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
@@ -2270,26 +2277,26 @@ static void rd_extra(void)
                rd_s32b(&p_ptr->feeling_turn);
        }
 
-       /* Current turn */
-       rd_s32b(&turn);
+       /* Current current_world_ptr->game_turn */
+       rd_s32b(&current_world_ptr->game_turn);
 
        if (z_older_than(10, 3, 12))
        {
-               dungeon_turn = turn;
+               current_world_ptr->dungeon_turn = current_world_ptr->game_turn;
        }
-       else rd_s32b(&dungeon_turn);
+       else rd_s32b(&current_world_ptr->dungeon_turn);
 
        if (z_older_than(11, 0, 13))
        {
                old_turn /= 2;
                p_ptr->feeling_turn /= 2;
-               turn /= 2;
-               dungeon_turn /= 2;
+               current_world_ptr->game_turn /= 2;
+               current_world_ptr->dungeon_turn /= 2;
        }
 
        if (z_older_than(10, 3, 13))
        {
-               old_battle = turn;
+               old_battle = current_world_ptr->game_turn;
        }
        else rd_s32b(&old_battle);
 
@@ -2418,9 +2425,7 @@ static errr rd_inventory(void)
                /* Wield equipment */
                if (n >= INVEN_RARM)
                {
-                       /* Player touches it */
                        q_ptr->marked |= OM_TOUCHED;
-
                        object_copy(&inventory[n], q_ptr);
 
                        /* Add the weight */
@@ -2445,9 +2450,7 @@ static errr rd_inventory(void)
                        /* Get a slot */
                        n = slot++;
 
-                       /* Player touches it */
                        q_ptr->marked |= OM_TOUCHED;
-
                        object_copy(&inventory[n], q_ptr);
 
                        /* Add the weight */
@@ -2547,38 +2550,38 @@ static errr rd_dungeon_old(void)
        byte tmp8u;
        s16b tmp16s;
        u16b limit;
-       cave_type *c_ptr;
+       grid_type *g_ptr;
 
 
        /*** Basic info ***/
 
        /* Header info */
        rd_s16b(&tmp16s);
-       dun_level = (DEPTH)tmp16s;
-       if (z_older_than(10, 3, 8)) dungeon_type = DUNGEON_ANGBAND;
+       current_floor_ptr->dun_level = (DEPTH)tmp16s;
+       if (z_older_than(10, 3, 8)) p_ptr->dungeon_idx = DUNGEON_ANGBAND;
        else
        { 
                rd_byte(&tmp8u);
-               dungeon_type = (IDX)tmp8u;
+               p_ptr->dungeon_idx = (IDX)tmp8u;
        }
 
        /* Set the base level for old versions */
-       base_level = dun_level;
+       current_floor_ptr->base_level = current_floor_ptr->dun_level;
 
        rd_s16b(&tmp16s);
-       base_level = (DEPTH)tmp16s;
+       current_floor_ptr->base_level = (DEPTH)tmp16s;
 
        rd_s16b(&tmp16s);
-       num_repro = (MONSTER_NUMBER)tmp16s;
+       current_floor_ptr->num_repro = (MONSTER_NUMBER)tmp16s;
        rd_s16b(&tmp16s);
        p_ptr->y = (POSITION)tmp16s;
        rd_s16b(&tmp16s);
        p_ptr->x = (POSITION)tmp16s;
-       if (z_older_than(10, 3, 13) && !dun_level && !p_ptr->inside_arena) {p_ptr->y = 33;p_ptr->x = 131;}
+       if (z_older_than(10, 3, 13) && !current_floor_ptr->dun_level && !p_ptr->inside_arena) {p_ptr->y = 33;p_ptr->x = 131;}
        rd_s16b(&tmp16s);
-       cur_hgt = (POSITION)tmp16s;
+       current_floor_ptr->height = (POSITION)tmp16s;
        rd_s16b(&tmp16s);
-       cur_wid = (POSITION)tmp16s;
+       current_floor_ptr->width = (POSITION)tmp16s;
        rd_s16b(&tmp16s); /* max_panel_rows */
        rd_s16b(&tmp16s); /* max_panel_cols */
 
@@ -2587,8 +2590,8 @@ static errr rd_dungeon_old(void)
 #endif
 
        /* Maximal size */
-       ymax = cur_hgt;
-       xmax = cur_wid;
+       ymax = current_floor_ptr->height;
+       xmax = current_floor_ptr->width;
 
 
        /*** Run length decoding ***/
@@ -2616,11 +2619,11 @@ static errr rd_dungeon_old(void)
                /* Apply the RLE info */
                for (i = count; i > 0; i--)
                {
-                       /* Access the cave */
-                       c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       g_ptr = &current_floor_ptr->grid_array[y][x];
 
                        /* Extract "info" */
-                       c_ptr->info = info;
+                       g_ptr->info = info;
 
                        /* Advance/Wrap */
                        if (++x >= xmax)
@@ -2647,11 +2650,11 @@ static errr rd_dungeon_old(void)
                /* Apply the RLE info */
                for (i = count; i > 0; i--)
                {
-                       /* Access the cave */
-                       c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       g_ptr = &current_floor_ptr->grid_array[y][x];
 
                        /* Extract "feat" */
-                       c_ptr->feat = (s16b)tmp8u;
+                       g_ptr->feat = (s16b)tmp8u;
 
                        /* Advance/Wrap */
                        if (++x >= xmax)
@@ -2677,11 +2680,11 @@ static errr rd_dungeon_old(void)
                /* Apply the RLE info */
                for (i = count; i > 0; i--)
                {
-                       /* Access the cave */
-                       c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       g_ptr = &current_floor_ptr->grid_array[y][x];
 
                        /* Extract "mimic" */
-                       c_ptr->mimic = (s16b)tmp8u;
+                       g_ptr->mimic = (s16b)tmp8u;
 
                        /* Advance/Wrap */
                        if (++x >= xmax)
@@ -2707,11 +2710,11 @@ static errr rd_dungeon_old(void)
                /* Apply the RLE info */
                for (i = count; i > 0; i--)
                {
-                       /* Access the cave */
-                       c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       g_ptr = &current_floor_ptr->grid_array[y][x];
 
                        /* Extract "feat" */
-                       c_ptr->special = tmp16s;
+                       g_ptr->special = tmp16s;
 
                        /* Advance/Wrap */
                        if (++x >= xmax)
@@ -2725,13 +2728,13 @@ static errr rd_dungeon_old(void)
                }
        }
 
-       /* Convert cave data */
+       /* Convert current_floor_ptr->grid_array data */
        if (z_older_than(11, 0, 99))
        {
                for (y = 0; y < ymax; y++) for (x = 0; x < xmax; x++)
                {
                        /* Wipe old unused flags */
-                       cave[y][x].info &= ~(CAVE_MASK);
+                       current_floor_ptr->grid_array[y][x].info &= ~(CAVE_MASK);
                }
        }
 
@@ -2739,21 +2742,21 @@ static errr rd_dungeon_old(void)
        {
                for (y = 0; y < ymax; y++) for (x = 0; x < xmax; x++)
                {
-                       /* Access the cave */
-                       c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       g_ptr = &current_floor_ptr->grid_array[y][x];
 
                        /* Very old */
-                       if (c_ptr->feat == OLD_FEAT_INVIS)
+                       if (g_ptr->feat == OLD_FEAT_INVIS)
                        {
-                               c_ptr->feat = feat_floor;
-                               c_ptr->info |= CAVE_TRAP;
+                               g_ptr->feat = feat_floor;
+                               g_ptr->info |= CAVE_TRAP;
                        }
 
                        /* Older than 1.1.1 */
-                       if (c_ptr->feat == OLD_FEAT_MIRROR)
+                       if (g_ptr->feat == OLD_FEAT_MIRROR)
                        {
-                               c_ptr->feat = feat_floor;
-                               c_ptr->info |= CAVE_OBJECT;
+                               g_ptr->feat = feat_floor;
+                               g_ptr->info |= CAVE_OBJECT;
                        }
                }
        }
@@ -2762,37 +2765,37 @@ static errr rd_dungeon_old(void)
        {
                for (y = 0; y < ymax; y++) for (x = 0; x < xmax; x++)
                {
-                       /* Access the cave */
-                       c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       g_ptr = &current_floor_ptr->grid_array[y][x];
 
                        /* Old CAVE_IN_MIRROR flag */
-                       if (c_ptr->info & CAVE_OBJECT)
+                       if (g_ptr->info & CAVE_OBJECT)
                        {
-                               c_ptr->mimic = feat_mirror;
+                               g_ptr->mimic = feat_mirror;
                        }
 
                        /* Runes will be mimics and flags */
-                       else if ((c_ptr->feat == OLD_FEAT_MINOR_GLYPH) ||
-                                (c_ptr->feat == OLD_FEAT_GLYPH))
+                       else if ((g_ptr->feat == OLD_FEAT_MINOR_GLYPH) ||
+                                (g_ptr->feat == OLD_FEAT_GLYPH))
                        {
-                               c_ptr->info |= CAVE_OBJECT;
-                               c_ptr->mimic = c_ptr->feat;
-                               c_ptr->feat = feat_floor;
+                               g_ptr->info |= CAVE_OBJECT;
+                               g_ptr->mimic = g_ptr->feat;
+                               g_ptr->feat = feat_floor;
                        }
 
                        /* Hidden traps will be trap terrains mimicing floor */
-                       else if (c_ptr->info & CAVE_TRAP)
+                       else if (g_ptr->info & CAVE_TRAP)
                        {
-                               c_ptr->info &= ~CAVE_TRAP;
-                               c_ptr->mimic = c_ptr->feat;
-                               c_ptr->feat = choose_random_trap();
+                               g_ptr->info &= ~CAVE_TRAP;
+                               g_ptr->mimic = g_ptr->feat;
+                               g_ptr->feat = choose_random_trap();
                        }
 
                        /* Another hidden trap */
-                       else if (c_ptr->feat == OLD_FEAT_INVIS)
+                       else if (g_ptr->feat == OLD_FEAT_INVIS)
                        {
-                               c_ptr->mimic = feat_floor;
-                               c_ptr->feat = feat_trap_open;
+                               g_ptr->mimic = feat_floor;
+                               g_ptr->feat = feat_trap_open;
                        }
                }
        }
@@ -2802,26 +2805,26 @@ static errr rd_dungeon_old(void)
        {
                for (y = 0; y < ymax; y++) for (x = 0; x < xmax; x++)
                {
-                       /* Access the cave */
-                       c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       g_ptr = &current_floor_ptr->grid_array[y][x];
 
-                       if ((c_ptr->special == OLD_QUEST_WATER_CAVE) && !dun_level)
+                       if ((g_ptr->special == OLD_QUEST_WATER_CAVE) && !current_floor_ptr->dun_level)
                        {
-                               if (c_ptr->feat == OLD_FEAT_QUEST_ENTER)
+                               if (g_ptr->feat == OLD_FEAT_QUEST_ENTER)
                                {
-                                       c_ptr->feat = feat_tree;
-                                       c_ptr->special = 0;
+                                       g_ptr->feat = feat_tree;
+                                       g_ptr->special = 0;
                                }
-                               else if (c_ptr->feat == OLD_FEAT_BLDG_1)
+                               else if (g_ptr->feat == OLD_FEAT_BLDG_1)
                                {
-                                       c_ptr->special = lite_town ? QUEST_OLD_CASTLE : QUEST_ROYAL_CRYPT;
+                                       g_ptr->special = lite_town ? QUEST_OLD_CASTLE : QUEST_ROYAL_CRYPT;
                                }
                        }
-                       else if ((c_ptr->feat == OLD_FEAT_QUEST_EXIT) &&
+                       else if ((g_ptr->feat == OLD_FEAT_QUEST_EXIT) &&
                                 (p_ptr->inside_quest == OLD_QUEST_WATER_CAVE))
                        {
-                               c_ptr->feat = feat_up_stair;
-                               c_ptr->special = 0;
+                               g_ptr->feat = feat_up_stair;
+                               g_ptr->special = 0;
                        }
                }
        }
@@ -2832,7 +2835,7 @@ static errr rd_dungeon_old(void)
        rd_u16b(&limit);
 
        /* Verify maximum */
-       if (limit > max_o_idx)
+       if (limit > current_floor_ptr->max_o_idx)
        {
                note(format(_("アイテムの配列が大きすぎる(%d)!", "Too many (%d) object entries!"), limit));
                return (151);
@@ -2857,7 +2860,7 @@ static errr rd_dungeon_old(void)
 
 
                /* Acquire place */
-               o_ptr = &o_list[o_idx];
+               o_ptr = &current_floor_ptr->o_list[o_idx];
 
                /* Read the item */
                rd_item(o_ptr);
@@ -2871,7 +2874,7 @@ static errr rd_dungeon_old(void)
                        monster_type *m_ptr;
 
                        /* Monster */
-                       m_ptr = &m_list[o_ptr->held_m_idx];
+                       m_ptr = &current_floor_ptr->m_list[o_ptr->held_m_idx];
 
                        /* Build a stack */
                        o_ptr->next_o_idx = m_ptr->hold_o_idx;
@@ -2884,13 +2887,13 @@ static errr rd_dungeon_old(void)
                else
                {
                        /* Access the item location */
-                       c_ptr = &cave[o_ptr->iy][o_ptr->ix];
+                       g_ptr = &current_floor_ptr->grid_array[o_ptr->iy][o_ptr->ix];
 
                        /* Build a stack */
-                       o_ptr->next_o_idx = c_ptr->o_idx;
+                       o_ptr->next_o_idx = g_ptr->o_idx;
 
                        /* Place the object */
-                       c_ptr->o_idx = o_idx;
+                       g_ptr->o_idx = o_idx;
                }
        }
 
@@ -2901,7 +2904,7 @@ static errr rd_dungeon_old(void)
        rd_u16b(&limit);
 
        /* Hack -- verify */
-       if (limit > max_m_idx)
+       if (limit > current_floor_ptr->max_m_idx)
        {
                note(format(_("モンスターの配列が大きすぎる(%d)!", "Too many (%d) monster entries!"), limit));
                return (161);
@@ -2924,17 +2927,17 @@ static errr rd_dungeon_old(void)
 
 
                /* Acquire monster */
-               m_ptr = &m_list[m_idx];
+               m_ptr = &current_floor_ptr->m_list[m_idx];
 
                /* Read the monster */
                rd_monster(m_ptr);
 
 
                /* Access grid */
-               c_ptr = &cave[m_ptr->fy][m_ptr->fx];
+               g_ptr = &current_floor_ptr->grid_array[m_ptr->fy][m_ptr->fx];
 
                /* Mark the location */
-               c_ptr->m_idx = m_idx;
+               g_ptr->m_idx = m_idx;
 
                /* Count */
                real_r_ptr(m_ptr)->cur_num++;
@@ -2943,7 +2946,7 @@ static errr rd_dungeon_old(void)
        /*** Success ***/
 
        /* The dungeon is ready */
-       if (z_older_than(10, 3, 13) && !dun_level && !p_ptr->inside_arena)
+       if (z_older_than(10, 3, 13) && !current_floor_ptr->dun_level && !p_ptr->inside_arena)
                character_dungeon = FALSE;
        else
                character_dungeon = TRUE;
@@ -2960,7 +2963,7 @@ static errr rd_dungeon_old(void)
  * この関数は、セーブデータの互換性を保つために多くのデータ改変処理を備えている。
  * 現在確認している処理は以下の通り、
  * <ul>
- * <li>1.7.0.2で8bitだったcave_typeのfeat,mimicのID値を16bitに拡張する処理。</li>
+ * <li>1.7.0.2で8bitだったgrid_typeのfeat,mimicのID値を16bitに拡張する処理。</li>
  * <li>1.7.0.8までに廃止、IDなどを差し替えたクエスト番号を置換する処理。</li>
  * </ul>
  * The monsters/objects must be loaded in the same order
@@ -2982,7 +2985,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        cave_template_type *templates;
 
 
-       /*** Wipe all cave ***/
+       /*** Wipe all current_floor_ptr->grid_array ***/
        clear_cave();
 
 
@@ -2995,8 +2998,8 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
                /*** Not a saved floor ***/
 
                rd_s16b(&tmp16s);
-               dun_level = (DEPTH)tmp16s;
-               base_level = dun_level;
+               current_floor_ptr->dun_level = (DEPTH)tmp16s;
+               current_floor_ptr->base_level = current_floor_ptr->dun_level;
        }
        else
        {
@@ -3010,7 +3013,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
 
                rd_s16b(&tmp16s);
                if (tmp16s != sf_ptr->dun_level) return 171;
-               dun_level = sf_ptr->dun_level;
+               current_floor_ptr->dun_level = sf_ptr->dun_level;
 
                rd_s32b(&tmp32s);
                if (tmp32s != sf_ptr->last_visit) return 171;
@@ -3026,9 +3029,9 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        }
 
        rd_s16b(&tmp16s);
-       base_level = (DEPTH)tmp16s;
+       current_floor_ptr->base_level = (DEPTH)tmp16s;
        rd_s16b(&tmp16s);
-       num_repro = (MONSTER_NUMBER)tmp16s;
+       current_floor_ptr->num_repro = (MONSTER_NUMBER)tmp16s;
 
        rd_u16b(&tmp16u);
        p_ptr->y = (POSITION)tmp16u;
@@ -3037,15 +3040,15 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        p_ptr->x = (POSITION)tmp16u;
 
        rd_s16b(&tmp16s);
-       cur_hgt = (POSITION)tmp16s;
+       current_floor_ptr->height = (POSITION)tmp16s;
        rd_s16b(&tmp16s);
-       cur_wid = (POSITION)tmp16s;
+       current_floor_ptr->width = (POSITION)tmp16s;
 
        rd_byte(&p_ptr->feeling);
 
 
 
-       /*** Read template for cave_type ***/
+       /*** Read template for grid_type ***/
 
        /* Read the template count */
        rd_u16b(&limit);
@@ -3077,8 +3080,8 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        }
 
        /* Maximal size */
-       ymax = cur_hgt;
-       xmax = cur_wid;
+       ymax = current_floor_ptr->height;
+       xmax = current_floor_ptr->width;
 
 
        /*** Run length decoding ***/
@@ -3101,14 +3104,14 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
                /* Apply the RLE info */
                for (i = count; i > 0; i--)
                {
-                       /* Access the cave */
-                       cave_type *c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       grid_type *g_ptr = &current_floor_ptr->grid_array[y][x];
 
-                       /* Extract cave data */
-                       c_ptr->info = templates[id].info;
-                       c_ptr->feat = templates[id].feat;
-                       c_ptr->mimic = templates[id].mimic;
-                       c_ptr->special = templates[id].special;
+                       /* Extract current_floor_ptr->grid_array data */
+                       g_ptr->info = templates[id].info;
+                       g_ptr->feat = templates[id].feat;
+                       g_ptr->mimic = templates[id].mimic;
+                       g_ptr->special = templates[id].special;
 
                        /* Advance/Wrap */
                        if (++x >= xmax)
@@ -3127,26 +3130,26 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        {
                for (y = 0; y < ymax; y++) for (x = 0; x < xmax; x++)
                {
-                       /* Access the cave */
-                       cave_type *c_ptr = &cave[y][x];
+                       /* Access the current_floor_ptr->grid_array */
+                       grid_type *g_ptr = &current_floor_ptr->grid_array[y][x];
 
-                       if ((c_ptr->special == OLD_QUEST_WATER_CAVE) && !dun_level)
+                       if ((g_ptr->special == OLD_QUEST_WATER_CAVE) && !current_floor_ptr->dun_level)
                        {
-                               if (c_ptr->feat == OLD_FEAT_QUEST_ENTER)
+                               if (g_ptr->feat == OLD_FEAT_QUEST_ENTER)
                                {
-                                       c_ptr->feat = feat_tree;
-                                       c_ptr->special = 0;
+                                       g_ptr->feat = feat_tree;
+                                       g_ptr->special = 0;
                                }
-                               else if (c_ptr->feat == OLD_FEAT_BLDG_1)
+                               else if (g_ptr->feat == OLD_FEAT_BLDG_1)
                                {
-                                       c_ptr->special = lite_town ? QUEST_OLD_CASTLE : QUEST_ROYAL_CRYPT;
+                                       g_ptr->special = lite_town ? QUEST_OLD_CASTLE : QUEST_ROYAL_CRYPT;
                                }
                        }
-                       else if ((c_ptr->feat == OLD_FEAT_QUEST_EXIT) &&
+                       else if ((g_ptr->feat == OLD_FEAT_QUEST_EXIT) &&
                                (p_ptr->inside_quest == OLD_QUEST_WATER_CAVE))
                        {
-                               c_ptr->feat = feat_up_stair;
-                               c_ptr->special = 0;
+                               g_ptr->feat = feat_up_stair;
+                               g_ptr->special = 0;
                        }
                }
        }
@@ -3161,7 +3164,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        rd_u16b(&limit);
 
        /* Verify maximum */
-       if (limit > max_o_idx) return 151;
+       if (limit > current_floor_ptr->max_o_idx) return 151;
 
 
        /* Read the dungeon items */
@@ -3177,7 +3180,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
                if (i != o_idx) return 152;
 
                /* Acquire place */
-               o_ptr = &o_list[o_idx];
+               o_ptr = &current_floor_ptr->o_list[o_idx];
 
                /* Read the item */
                rd_item(o_ptr);
@@ -3189,7 +3192,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
                        monster_type *m_ptr;
 
                        /* Monster */
-                       m_ptr = &m_list[o_ptr->held_m_idx];
+                       m_ptr = &current_floor_ptr->m_list[o_ptr->held_m_idx];
 
                        /* Build a stack */
                        o_ptr->next_o_idx = m_ptr->hold_o_idx;
@@ -3202,13 +3205,13 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
                else
                {
                        /* Access the item location */
-                       cave_type *c_ptr = &cave[o_ptr->iy][o_ptr->ix];
+                       grid_type *g_ptr = &current_floor_ptr->grid_array[o_ptr->iy][o_ptr->ix];
 
                        /* Build a stack */
-                       o_ptr->next_o_idx = c_ptr->o_idx;
+                       o_ptr->next_o_idx = g_ptr->o_idx;
 
                        /* Place the object */
-                       c_ptr->o_idx = o_idx;
+                       g_ptr->o_idx = o_idx;
                }
        }
 
@@ -3219,12 +3222,12 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        rd_u16b(&limit);
 
        /* Hack -- verify */
-       if (limit > max_m_idx) return 161;
+       if (limit > current_floor_ptr->max_m_idx) return 161;
 
        /* Read the monsters */
        for (i = 1; i < limit; i++)
        {
-               cave_type *c_ptr;
+               grid_type *g_ptr;
                MONSTER_IDX m_idx;
                monster_type *m_ptr;
 
@@ -3235,17 +3238,17 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
 
 
                /* Acquire monster */
-               m_ptr = &m_list[m_idx];
+               m_ptr = &current_floor_ptr->m_list[m_idx];
 
                /* Read the monster */
                rd_monster(m_ptr);
 
 
                /* Access grid */
-               c_ptr = &cave[m_ptr->fy][m_ptr->fx];
+               g_ptr = &current_floor_ptr->grid_array[m_ptr->fy][m_ptr->fx];
 
                /* Mark the location */
-               c_ptr->m_idx = m_idx;
+               g_ptr->m_idx = m_idx;
 
                /* Count */
                real_r_ptr(m_ptr)->cur_num++;
@@ -3280,10 +3283,10 @@ static errr rd_dungeon(void)
                err = rd_dungeon_old();
 
                /* Prepare floor_id of current floor */
-               if (dungeon_type)
+               if (p_ptr->dungeon_idx)
                {
                        p_ptr->floor_id = get_new_floor_id();
-                       get_sf_ptr(p_ptr->floor_id)->dun_level = dun_level;
+                       get_sf_ptr(p_ptr->floor_id)->dun_level = current_floor_ptr->dun_level;
                }
 
                return err;
@@ -3297,7 +3300,7 @@ static errr rd_dungeon(void)
 
        /* Current dungeon type */
        rd_byte(&tmp8u);
-       dungeon_type = (DUNGEON_IDX)tmp8u;
+       p_ptr->dungeon_idx = (DUNGEON_IDX)tmp8u;
 
        /* Number of the saved_floors array elements */
        rd_byte(&num);
@@ -3704,7 +3707,7 @@ static errr rd_savefile_new_aux(void)
                rd_s32b(&wild_y_size);
 
                /* Incompatible save files */
-               if ((wild_x_size > max_wild_x) || (wild_y_size > max_wild_y))
+               if ((wild_x_size > current_world_ptr->max_wild_x) || (wild_y_size > current_world_ptr->max_wild_y))
                {
                        note(format(_("荒野が大きすぎる(%u/%u)!", "Wilderness is too big (%u/%u)!"), wild_x_size, wild_y_size));
                        return (23);
@@ -3757,7 +3760,7 @@ static errr rd_savefile_new_aux(void)
 
        /* Read the extra stuff */
        rd_extra();
-       if (p_ptr->energy_need < -999) world_player = TRUE;
+       if (p_ptr->energy_need < -999) p_ptr->timewalk = TRUE;
 
        if (arg_fiddle) note(_("特別情報をロードしました", "Loaded extra information"));
 
@@ -3790,22 +3793,22 @@ static errr rd_savefile_new_aux(void)
        if(z_older_than(10, 2, 2) && (p_ptr->pclass == CLASS_BEASTMASTER) && !p_ptr->is_dead)
        {
                p_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp;
-               do_cmd_rerate(FALSE);
+               roll_hitdice(p_ptr, 0L);
        }
        if(z_older_than(10, 3, 2) && (p_ptr->pclass == CLASS_ARCHER) && !p_ptr->is_dead)
        {
                p_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp;
-               do_cmd_rerate(FALSE);
+               roll_hitdice(p_ptr, 0L);
        }
        if(z_older_than(10, 2, 6) && (p_ptr->pclass == CLASS_SORCERER) && !p_ptr->is_dead)
        {
                p_ptr->hitdie = rp_ptr->r_mhp/2 + cp_ptr->c_mhp + ap_ptr->a_mhp;
-               do_cmd_rerate(FALSE);
+               roll_hitdice(p_ptr, 0L);
        }
        if(z_older_than(10, 4, 7) && (p_ptr->pclass == CLASS_BLUE_MAGE) && !p_ptr->is_dead)
        {
                p_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp;
-               do_cmd_rerate(FALSE);
+               roll_hitdice(p_ptr, 0L);
        }
 
        /* Important -- Initialize the magic */
@@ -3956,8 +3959,8 @@ static errr rd_savefile_new_aux(void)
        {
                if (p_ptr->inside_quest == OLD_QUEST_WATER_CAVE)
                {
-                       dungeon_type = lite_town ? DUNGEON_ANGBAND : DUNGEON_GALGALS;
-                       dun_level = 1;
+                       p_ptr->dungeon_idx = lite_town ? DUNGEON_ANGBAND : DUNGEON_GALGALS;
+                       current_floor_ptr->dun_level = 1;
                        p_ptr->inside_quest = 0;
                }
        }