*/
#include "angband.h"
+#include "floor.h"
#include "generate.h"
#include "grid.h"
+#include "monster.h"
+#include "quest.h"
-static s16b new_floor_id; /*!<次のフロアのID / floor_id of the destination */
+static FLOOR_IDX new_floor_id; /*!<次のフロアのID / floor_id of the destination */
static u32b change_floor_mode; /*!<フロア移行処理に関するフラグ / Mode flags for changing floor */
static u32b latest_visit_mark; /*!<フロアを渡った回数?(確認中) / Max number of visit_mark */
* @details
* If number of saved floors are already MAX_SAVED_FLOORS, kill the oldest one.
*/
-s16b get_new_floor_id(void)
+FLOOR_IDX get_new_floor_id(void)
{
saved_floor_type *sf_ptr = NULL;
- s16b i;
+ FLOOR_IDX i;
/* Look for empty space */
for (i = 0; i < MAX_SAVED_FLOORS; i++)
for (i = m_max - 1; i >=1; i--)
{
monster_type *m_ptr = &m_list[i];
- GAME_TEXT m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
if (!m_ptr->r_idx) continue;
if (!is_pet(m_ptr)) continue;
if (is_seen(m_ptr))
{
- GAME_TEXT m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, 0);
msg_format(_("%sは消え去った!", "%^s disappears!"), m_name);
}
int j;
POSITION d;
- for (d = 1; d < 6; d++)
+ for (d = 1; d < A_MAX; d++)
{
for (j = 1000; j > 0; j--)
{
{
monster_type *m_ptr = &party_mon[i];
monster_race *r_ptr = real_r_ptr(m_ptr);
- GAME_TEXT m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, 0);
msg_format(_("%sとはぐれてしまった。", "You have lost sight of %s."), m_name);
p_ptr->floor_id = get_new_floor_id();
}
-
/* Search the quest monster index */
for (i = 0; i < max_q_idx; i++)
{
((quest[i].type == QUEST_TYPE_KILL_LEVEL) ||
(quest[i].type == QUEST_TYPE_RANDOM)) &&
(quest[i].level == dun_level) &&
- (dungeon_type == quest[i].dungeon) &&
+ (p_ptr->dungeon_idx == quest[i].dungeon) &&
!(quest[i].flags & QUEST_FLAG_PRESET))
{
quest_r_idx = quest[i].r_idx;
if (change_floor_mode & CFM_DOWN)
{
if (!dun_level)
- move_num = d_info[dungeon_type].mindepth;
+ move_num = d_info[p_ptr->dungeon_idx].mindepth;
}
else if (change_floor_mode & CFM_UP)
{
- if (dun_level + move_num < d_info[dungeon_type].mindepth)
+ if (dun_level + move_num < d_info[p_ptr->dungeon_idx].mindepth)
move_num = -dun_level;
}
}
/* Leaving the dungeon to town */
- if (!dun_level && dungeon_type)
+ if (!dun_level && p_ptr->dungeon_idx)
{
p_ptr->leaving_dungeon = TRUE;
if (!vanilla_town && !lite_town)
{
- p_ptr->wilderness_y = d_info[dungeon_type].dy;
- p_ptr->wilderness_x = d_info[dungeon_type].dx;
+ p_ptr->wilderness_y = d_info[p_ptr->dungeon_idx].dy;
+ p_ptr->wilderness_x = d_info[p_ptr->dungeon_idx].dx;
}
- p_ptr->recall_dungeon = dungeon_type;
- dungeon_type = 0;
+ p_ptr->recall_dungeon = p_ptr->dungeon_idx;
+ p_ptr->dungeon_idx = 0;
/* Reach to the surface -- Clear all saved floors */
change_floor_mode &= ~CFM_SAVE_FLOORS;
/* Record the last visit turn of current floor */
sf_ptr->last_visit = turn;
- /* Forget the lite */
forget_lite();
-
- /* Forget the view */
forget_view();
-
- /* Forget the view */
clear_mon_lite();
/* Save current floor */
if (change_floor_mode & (CFM_DOWN | CFM_UP))
{
/* Reset to floor */
- c_ptr->feat = floor_type[randint0(100)];
+ c_ptr->feat = feat_ground_type[randint0(100)];
}
c_ptr->special = 0;
/* Maintain monsters and artifacts */
if (loaded)
{
- IDX i;
- s32b tmp_last_visit = sf_ptr->last_visit;
- s32b absence_ticks;
- int alloc_chance = d_info[dungeon_type].max_m_alloc_chance;
- int alloc_times;
+ MONSTER_IDX i;
+ GAME_TURN tmp_last_visit = sf_ptr->last_visit;
+ GAME_TURN absence_ticks;
+ int alloc_chance = d_info[p_ptr->dungeon_idx].max_m_alloc_chance;
+ GAME_TURN alloc_times;
while (tmp_last_visit > turn) tmp_last_visit -= TURNS_PER_TICK * TOWN_DAWN;
absence_ticks = (turn - tmp_last_visit) / TURNS_PER_TICK;
}
/* You see stairs blocked */
- else if ((change_floor_mode & CFM_NO_RETURN) &&
- (change_floor_mode & (CFM_DOWN | CFM_UP)))
+ else if ((change_floor_mode & CFM_NO_RETURN) && (change_floor_mode & (CFM_DOWN | CFM_UP)))
{
if (!p_ptr->blind)
{
bool up = TRUE;
bool down = TRUE;
- s16b dest_floor_id = 0;
+ FLOOR_IDX dest_floor_id = 0;
/* Forbid up staircases on Ironman mode */
if (ironman_downward) up = FALSE;
/* Forbid down staircases on quest level */
- if (quest_number(dun_level) || (dun_level >= d_info[dungeon_type].maxdepth)) down = FALSE;
+ if (quest_number(dun_level) || (dun_level >= d_info[p_ptr->dungeon_idx].maxdepth)) down = FALSE;
/* No effect out of standard dungeon floor */
if (!dun_level || (!up && !down) ||
/* Remove old stairs */
c_ptr->special = 0;
- cave_set_feat(y, x, floor_type[randint0(100)]);
+ cave_set_feat(y, x, feat_ground_type[randint0(100)]);
}
}
}