int attempts = 500;
int dis = 2;
bool look = TRUE;
- cave_type *c_ptr;
monster_type *m_ptr = &m_list[m_idx];
/* Try several locations */
for (i = 0; i < 500; i++)
{
+ cave_type *c_ptr;
+
/* Pick a (possibly illegal) location */
while (1)
{
sound(SOUND_TPOTHER);
/* Update the new location */
- c_ptr->m_idx = m_idx;
+ cave[ny][nx].m_idx = m_idx;
/* Update the old location */
cave[oy][ox].m_idx = 0;
void teleport_level(int m_idx)
{
bool go_up;
- monster_type *m_ptr;
char m_name[160];
bool see_m = TRUE;
}
else /* To monster */
{
- m_ptr = &m_list[m_idx];
+ monster_type *m_ptr = &m_list[m_idx];
/* Get the monster name (or "it") */
monster_desc(m_name, m_ptr, 0);
/* Monster level teleportation is simple deleting now */
if (m_idx > 0)
{
+ monster_type *m_ptr = &m_list[m_idx];
+
/* Check for quest completion */
check_quest_completion(m_ptr);
/* Reset sleep counter */
m_ptr->csleep = 0;
+ if (r_info[m_ptr->r_idx].flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+
/* Notice the "waking up" */
if (m_ptr->ml)
{
c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY);
/* Set boundary mimic if needed */
- if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = floor_type[randint0(100)];
+ if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = f_info[floor_type[randint0(100)]].mimic;
c_ptr = &cave[cur_hgt - 1][x];
c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY);
/* Set boundary mimic if needed */
- if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = floor_type[randint0(100)];
+ if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = f_info[floor_type[randint0(100)]].mimic;
}
/* Special boundary walls -- Left and right */
c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY);
/* Set boundary mimic if needed */
- if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = floor_type[randint0(100)];
+ if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = f_info[floor_type[randint0(100)]].mimic;
c_ptr = &cave[y][cur_wid - 1];
c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY);
/* Set boundary mimic if needed */
- if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = floor_type[randint0(100)];
+ if (c_ptr->mimic && vanishable_feat(c_ptr->mimic)) c_ptr->mimic = f_info[floor_type[randint0(100)]].mimic;
}
/* Mega-Hack -- Forget the view and lite */
/* Create a glyph */
cave[py][px].info |= CAVE_OBJECT;
- cave[py][px].mimic = FEAT_GLYPH;
+ cave[py][px].mimic = f_info[FEAT_GLYPH].mimic;
/* Notice */
note_spot(py, px);
/* Create a mirror */
cave[py][px].info |= CAVE_OBJECT;
- cave[py][px].mimic = FEAT_MIRROR;
+ cave[py][px].mimic = f_info[FEAT_MIRROR].mimic;
/* Turn on the light */
cave[py][px].info |= CAVE_GLOW;
/* Create a glyph */
cave[py][px].info |= CAVE_OBJECT;
- cave[py][px].mimic = FEAT_MINOR_GLYPH;
+ cave[py][px].mimic = f_info[FEAT_MINOR_GLYPH].mimic;
/* Notice */
note_spot(py, px);
p_ptr->csp = p_ptr->msp;
}
+ /* Redraw mana and hp */
+ p_ptr->redraw |= (PR_MANA);
+
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
p_ptr->window |= (PW_INVEN);