}
/* Reset the object level */
- object_level = base_level;
+ object_level = current_floor->base_level;
/* No longer opening a chest */
opening_chest = FALSE;
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;
/*** 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;
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;
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;
}
/* 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);
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;
}
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;
}
}
}
/* 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)
{
/* 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
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)
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)
}
/* 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);
}
}
/* 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;
rd_s16b(&tmp16s);
dun_level = (DEPTH)tmp16s;
- base_level = dun_level;
+ current_floor->base_level = dun_level;
}
else
{
}
rd_s16b(&tmp16s);
- base_level = (DEPTH)tmp16s;
+ current_floor->base_level = (DEPTH)tmp16s;
rd_s16b(&tmp16s);
num_repro = (MONSTER_NUMBER)tmp16s;
}
/* Reset the object level */
- object_level = base_level;
+ object_level = current_floor->base_level;
/* Reset "coin" type */
coin_type = 0;
{
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))
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;
}
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 '~':
/* 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;
}
{
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;
}
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)
{
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)
/* 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)
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);
typedef struct {
grid_type *grid_array[MAX_HGT];
+ DEPTH base_level;
} floor_type;
\ No newline at end of file
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 */
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 */