OSDN Git Service

[Refactor] #38993 base_level を floor_type に取り込む。 / Move base_level to floor_type...
authordeskull <deskull@users.sourceforge.jp>
Tue, 26 Feb 2019 15:42:27 +0000 (00:42 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Tue, 26 Feb 2019 15:42:27 +0000 (00:42 +0900)
15 files changed:
src/chest.c
src/dungeon.c
src/externs.h
src/floor-generate.c
src/grid.c
src/init1.c
src/load.c
src/monster1.c
src/monster2.c
src/rooms-vault.c
src/rooms.c
src/save.c
src/types.h
src/variable.c
src/wild.c

index 6499774..2616d0d 100644 (file)
@@ -104,7 +104,7 @@ void chest_death(bool scatter, POSITION y, POSITION x, OBJECT_IDX o_idx)
        }
 
        /* Reset the object level */
-       object_level = base_level;
+       object_level = current_floor->base_level;
 
        /* No longer opening a chest */
        opening_chest = FALSE;
index e121614..5e2320d 100644 (file)
@@ -5269,7 +5269,7 @@ static void dungeon(bool load_game)
        int quest_num = 0;
 
        /* Set the base level */
-       base_level = dun_level;
+       current_floor->base_level = dun_level;
 
        /* Reset various flags */
        is_loading_now = FALSE;
@@ -5418,10 +5418,10 @@ static void dungeon(bool load_game)
        /*** Process this dungeon level ***/
 
        /* Reset the monster generation level */
-       monster_level = base_level;
+       monster_level = current_floor->base_level;
 
        /* Reset the object generation level */
-       object_level = base_level;
+       object_level = current_floor->base_level;
 
        is_loading_now = TRUE;
 
index d329140..11297db 100644 (file)
@@ -165,7 +165,6 @@ extern DEPTH dun_level;
 extern MONSTER_NUMBER num_repro;
 extern DEPTH object_level;
 extern DEPTH monster_level;
-extern DEPTH base_level;
 extern bool invoking_midnight_curse;
 extern GAME_TURN turn;
 extern GAME_TURN turn_limit;
index d943eba..e72e5c9 100644 (file)
@@ -937,7 +937,7 @@ static bool cave_gen(void)
        alloc_object(ALLOC_SET_BOTH, ALLOC_TYP_GOLD, randnor(DUN_AMT_GOLD, 3));
 
        /* Set back to default */
-       object_level = base_level;
+       object_level = current_floor->base_level;
 
        /* Put the Guardian */
        if (!alloc_guardian(TRUE)) return FALSE;
@@ -1195,10 +1195,10 @@ static void generate_fixed_floor(void)
        }
 
        /* Set the quest level */
-       base_level = quest[p_ptr->inside_quest].level;
-       dun_level = base_level;
-       object_level = base_level;
-       monster_level = base_level;
+       current_floor->base_level = quest[p_ptr->inside_quest].level;
+       dun_level = current_floor->base_level;
+       object_level = current_floor->base_level;
+       monster_level = current_floor->base_level;
 
        if (record_stair) do_cmd_write_nikki(NIKKI_TO_QUEST, p_ptr->inside_quest, NULL);
        get_mon_num_prep(get_monster_hook(), NULL);
@@ -1351,13 +1351,13 @@ void clear_cave(void)
        p_ptr->x = p_ptr->y = 0;
 
        /* Set the base level */
-       base_level = dun_level;
+       current_floor->base_level = dun_level;
 
        /* Reset the monster generation level */
-       monster_level = base_level;
+       monster_level = current_floor->base_level;
 
        /* Reset the object generation level */
-       object_level = base_level;
+       object_level = current_floor->base_level;
 }
 
 
index 1195252..2a62854 100644 (file)
@@ -711,9 +711,9 @@ void vault_monsters(POSITION y1, POSITION x1, int num)
                        if (!cave_empty_grid(g_ptr)) continue;
 
                        /* Place the monster (allow groups) */
-                       monster_level = base_level + 2;
+                       monster_level = current_floor->base_level + 2;
                        (void)place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                       monster_level = base_level;
+                       monster_level = current_floor->base_level;
                }
        }
 }
index 4f502bb..68e24ae 100644 (file)
@@ -4006,11 +4006,11 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in
                        /* Create a monster */
                        if (random & RANDOM_MONSTER)
                        {
-                               monster_level = base_level + monster_index;
+                               monster_level = current_floor->base_level + monster_index;
 
                                place_monster(*y, *x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
 
-                               monster_level = base_level;
+                               monster_level = current_floor->base_level;
                        }
                        else if (monster_index)
                        {
@@ -4058,7 +4058,7 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in
                        /* Object (and possible trap) */
                        if ((random & RANDOM_OBJECT) && (random & RANDOM_TRAP))
                        {
-                               object_level = base_level + object_index;
+                               object_level = current_floor->base_level + object_index;
 
                                /*
                                 * Random trap and random treasure defined
@@ -4073,11 +4073,11 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in
                                        place_trap(*y, *x);
                                }
 
-                               object_level = base_level;
+                               object_level = current_floor->base_level;
                        }
                        else if (random & RANDOM_OBJECT)
                        {
-                               object_level = base_level + object_index;
+                               object_level = current_floor->base_level + object_index;
 
                                /* Create an out of deep object */
                                if (randint0(100) < 75)
@@ -4087,7 +4087,7 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in
                                else
                                        place_object(*y, *x, AM_GOOD | AM_GREAT);
 
-                               object_level = base_level;
+                               object_level = current_floor->base_level;
                        }
                        /* Random trap */
                        else if (random & RANDOM_TRAP)
@@ -4113,7 +4113,7 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in
                                }
 
                                /* Apply magic (no messages, no artifacts) */
-                               apply_magic(o_ptr, base_level, AM_NO_FIXED_ART | AM_GOOD);
+                               apply_magic(o_ptr, current_floor->base_level, AM_NO_FIXED_ART | AM_GOOD);
 
                                drop_here(o_ptr, *y, *x);
                        }
index b24fbd8..caff11e 100644 (file)
@@ -2566,10 +2566,10 @@ static errr rd_dungeon_old(void)
        }
 
        /* Set the base level for old versions */
-       base_level = dun_level;
+       current_floor->base_level = dun_level;
 
        rd_s16b(&tmp16s);
-       base_level = (DEPTH)tmp16s;
+       current_floor->base_level = (DEPTH)tmp16s;
 
        rd_s16b(&tmp16s);
        num_repro = (MONSTER_NUMBER)tmp16s;
@@ -2999,7 +2999,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
 
                rd_s16b(&tmp16s);
                dun_level = (DEPTH)tmp16s;
-               base_level = dun_level;
+               current_floor->base_level = dun_level;
        }
        else
        {
@@ -3029,7 +3029,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        }
 
        rd_s16b(&tmp16s);
-       base_level = (DEPTH)tmp16s;
+       current_floor->base_level = (DEPTH)tmp16s;
        rd_s16b(&tmp16s);
        num_repro = (MONSTER_NUMBER)tmp16s;
 
index 0342dbd..c3bff74 100644 (file)
@@ -3092,7 +3092,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        }
 
        /* Reset the object level */
-       object_level = base_level;
+       object_level = current_floor->base_level;
 
        /* Reset "coin" type */
        coin_type = 0;
index 5d4403f..6eb57d0 100644 (file)
@@ -2857,11 +2857,11 @@ static IDX initial_r_appearance(MONRACE_IDX r_idx)
 {
        int attempts = 1000;
        IDX ap_r_idx;
-       DEPTH min = MIN(base_level-5, 50);
+       DEPTH min = MIN(current_floor->base_level-5, 50);
 
        if (p_ptr->pseikaku == SEIKAKU_CHARGEMAN)
        {
-               if (base_level == 0 || one_in_(5)) return MON_ALIEN_JURAL;
+               if (current_floor->base_level == 0 || one_in_(5)) return MON_ALIEN_JURAL;
        }
 
        if (!(r_info[r_idx].flags7 & RF7_TANUKI))
@@ -2871,7 +2871,7 @@ static IDX initial_r_appearance(MONRACE_IDX r_idx)
 
        while (--attempts)
        {
-               ap_r_idx = get_mon_num(base_level + 10);
+               ap_r_idx = get_mon_num(current_floor->base_level + 10);
                if (r_info[ap_r_idx].level >= min) return ap_r_idx;
        }
 
index e50ad36..c6f88ec 100644 (file)
@@ -461,9 +461,9 @@ static void build_vault(POSITION yval, POSITION xval, POSITION ymax, POSITION xm
 
                        case 'A':
                                /* Reward for Pattern walk */
-                               object_level = base_level + 12;
+                               object_level = current_floor->base_level + 12;
                                place_object(y, x, AM_GOOD | AM_GREAT);
-                               object_level = base_level;
+                               object_level = current_floor->base_level;
                                break;
 
                        case '~':
@@ -554,42 +554,42 @@ static void build_vault(POSITION yval, POSITION xval, POSITION ymax, POSITION xm
                                /* Monster */
                        case '&':
                        {
-                               monster_level = base_level + 5;
+                               monster_level = current_floor->base_level + 5;
                                place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                               monster_level = base_level;
+                               monster_level = current_floor->base_level;
                                break;
                        }
 
                        /* Meaner monster */
                        case '@':
                        {
-                               monster_level = base_level + 11;
+                               monster_level = current_floor->base_level + 11;
                                place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                               monster_level = base_level;
+                               monster_level = current_floor->base_level;
                                break;
                        }
 
                        /* Meaner monster, plus treasure */
                        case '9':
                        {
-                               monster_level = base_level + 9;
+                               monster_level = current_floor->base_level + 9;
                                place_monster(y, x, PM_ALLOW_SLEEP);
-                               monster_level = base_level;
-                               object_level = base_level + 7;
+                               monster_level = current_floor->base_level;
+                               object_level = current_floor->base_level + 7;
                                place_object(y, x, AM_GOOD);
-                               object_level = base_level;
+                               object_level = current_floor->base_level;
                                break;
                        }
 
                        /* Nasty monster and treasure */
                        case '8':
                        {
-                               monster_level = base_level + 40;
+                               monster_level = current_floor->base_level + 40;
                                place_monster(y, x, PM_ALLOW_SLEEP);
-                               monster_level = base_level;
-                               object_level = base_level + 20;
+                               monster_level = current_floor->base_level;
+                               object_level = current_floor->base_level + 20;
                                place_object(y, x, AM_GOOD | AM_GREAT);
-                               object_level = base_level;
+                               object_level = current_floor->base_level;
                                break;
                        }
 
@@ -598,15 +598,15 @@ static void build_vault(POSITION yval, POSITION xval, POSITION ymax, POSITION xm
                        {
                                if (randint0(100) < 50)
                                {
-                                       monster_level = base_level + 3;
+                                       monster_level = current_floor->base_level + 3;
                                        place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                       monster_level = base_level;
+                                       monster_level = current_floor->base_level;
                                }
                                if (randint0(100) < 50)
                                {
-                                       object_level = base_level + 7;
+                                       object_level = current_floor->base_level + 7;
                                        place_object(y, x, 0L);
-                                       object_level = base_level;
+                                       object_level = current_floor->base_level;
                                }
                                break;
                        }
index 54bcc75..136a181 100644 (file)
@@ -1407,29 +1407,29 @@ void fill_treasure(POSITION x1, POSITION x2, POSITION y1, POSITION y2, int diffi
                                if (value < 0)
                                {
                                        /* Meanest monster + treasure */
-                                       monster_level = base_level + 40;
+                                       monster_level = current_floor->base_level + 40;
                                        place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                       monster_level = base_level;
-                                       object_level = base_level + 20;
+                                       monster_level = current_floor->base_level;
+                                       object_level = current_floor->base_level + 20;
                                        place_object(y, x, AM_GOOD);
-                                       object_level = base_level;
+                                       object_level = current_floor->base_level;
                                }
                                else if (value < 5)
                                {
                                        /* Mean monster +treasure */
-                                       monster_level = base_level + 20;
+                                       monster_level = current_floor->base_level + 20;
                                        place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                       monster_level = base_level;
-                                       object_level = base_level + 10;
+                                       monster_level = current_floor->base_level;
+                                       object_level = current_floor->base_level + 10;
                                        place_object(y, x, AM_GOOD);
-                                       object_level = base_level;
+                                       object_level = current_floor->base_level;
                                }
                                else if (value < 10)
                                {
                                        /* Monster */
-                                       monster_level = base_level + 9;
+                                       monster_level = current_floor->base_level + 9;
                                        place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                       monster_level = base_level;
+                                       monster_level = current_floor->base_level;
                                }
                                else if (value < 17)
                                {
@@ -1457,9 +1457,9 @@ void fill_treasure(POSITION x1, POSITION x2, POSITION y1, POSITION y2, int diffi
                                else if (value < 30)
                                {
                                        /* Monster and trap */
-                                       monster_level = base_level + 5;
+                                       monster_level = current_floor->base_level + 5;
                                        place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                       monster_level = base_level;
+                                       monster_level = current_floor->base_level;
                                        place_trap(y, x);
                                }
                                else if (value < 40)
@@ -1467,15 +1467,15 @@ void fill_treasure(POSITION x1, POSITION x2, POSITION y1, POSITION y2, int diffi
                                        /* Monster or object */
                                        if (randint0(100) < 50)
                                        {
-                                               monster_level = base_level + 3;
+                                               monster_level = current_floor->base_level + 3;
                                                place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                               monster_level = base_level;
+                                               monster_level = current_floor->base_level;
                                        }
                                        if (randint0(100) < 50)
                                        {
-                                               object_level = base_level + 7;
+                                               object_level = current_floor->base_level + 7;
                                                place_object(y, x, 0L);
-                                               object_level = base_level;
+                                               object_level = current_floor->base_level;
                                        }
                                }
                                else if (value < 50)
index f961c58..36db872 100644 (file)
@@ -939,7 +939,7 @@ static void wr_saved_floor(saved_floor_type *sf_ptr)
                wr_s16b(sf_ptr->lower_floor_id);
        }
 
-       wr_u16b((u16b)base_level);
+       wr_u16b((u16b)current_floor->base_level);
        wr_u16b((s16b)num_repro);
        wr_u16b((u16b)p_ptr->y);
        wr_u16b((u16b)p_ptr->x);
index d8abbdf..73c9566 100644 (file)
@@ -1876,4 +1876,5 @@ typedef struct {
 
 typedef struct {
        grid_type *grid_array[MAX_HGT];
+       DEPTH base_level;
 } floor_type;
\ No newline at end of file
index 8755b47..5958804 100644 (file)
@@ -113,11 +113,10 @@ GAME_TURN resting;                        /* Current counter for resting, if any */
 
 POSITION cur_hgt;              /* Current dungeon height */
 POSITION cur_wid;              /* Current dungeon width */
-DEPTH dun_level;               /*!< 現在の実ダンジョン階層、base_levelの参照元となる / Current dungeon level */
+DEPTH dun_level;               /*!< 現在の実ダンジョン階層、current_floor->base_levelの参照元となる / Current dungeon level */
 MONSTER_NUMBER num_repro; /*!< Current reproducer count */
-DEPTH base_level;              /*!< 基本生成レベル、後述のobject_level, monster_levelの参照元となる / Base dungeon level */
-DEPTH object_level;            /*!< アイテムの生成レベル、base_levelを起点に一時変更する時に参照 / Current object creation level */
-DEPTH monster_level;   /*!< モンスターの生成レベル、base_levelを起点に一時変更する時に参照 / Current monster creation level */
+DEPTH object_level;            /*!< アイテムの生成レベル、current_floor->base_levelを起点に一時変更する時に参照 / Current object creation level */
+DEPTH monster_level;   /*!< モンスターの生成レベル、current_floor->base_levelを起点に一時変更する時に参照 / Current monster creation level */
 bool invoking_midnight_curse; /*!< 悪夢モード時の真夜中太古の呪い発生処理フラグ */
 
 GAME_TURN turn;                                /*!< 画面表示上のゲーム時間基準となるターン / Current game turn */
index 2bab299..12bf0bb 100644 (file)
@@ -325,16 +325,16 @@ static void generate_area(POSITION y, POSITION x, bool border, bool corner)
        p_ptr->town_num = wilderness[y][x].town;
 
        /* Set the base level */
-       base_level = wilderness[y][x].level;
+       current_floor->base_level = wilderness[y][x].level;
 
        /* Set the dungeon level */
        dun_level = 0;
 
        /* Set the monster generation level */
-       monster_level = base_level;
+       monster_level = current_floor->base_level;
 
        /* Set the object generation level */
-       object_level = base_level;
+       object_level = current_floor->base_level;
 
 
        /* Create the town */