/* Remove a mirror */
-void remove_mirror(POSITION y, POSITION x)
+void remove_mirror(player_type *caster_ptr, POSITION y, POSITION x)
{
- grid_type *g_ptr = &p_ptr->current_floor_ptr->grid_array[y][x];
+ grid_type *g_ptr = &caster_ptr->current_floor_ptr->grid_array[y][x];
/* Remove the mirror */
g_ptr->info &= ~(CAVE_OBJECT);
g_ptr->mimic = 0;
- if (d_info[p_ptr->dungeon_idx].flags1 & DF1_DARKNESS)
+ if (d_info[caster_ptr->dungeon_idx].flags1 & DF1_DARKNESS)
{
g_ptr->info &= ~(CAVE_GLOW);
if (!view_torch_grids) g_ptr->info &= ~(CAVE_MARK);
- if (g_ptr->m_idx) update_monster(p_ptr, g_ptr->m_idx, FALSE);
+ if (g_ptr->m_idx) update_monster(caster_ptr, g_ptr->m_idx, FALSE);
- update_local_illumination(p_ptr, y, x);
+ update_local_illumination(caster_ptr, y, x);
}
note_spot(y, x);
extern void update_flow(player_type *subject_ptr);
extern FEAT_IDX feat_state(FEAT_IDX feat, int action);
extern void cave_alter_feat(POSITION y, POSITION x, int action);
-extern void remove_mirror(POSITION y, POSITION x);
+extern void remove_mirror(player_type *caster_ptr, POSITION y, POSITION x);
extern bool is_open(FEAT_IDX feat);
extern bool check_local_illumination(player_type *creature_ptr, POSITION y, POSITION x);
{
msg_print(_("鏡が割れた!", "The mirror was crashed!"));
sound(SOUND_GLASS);
- remove_mirror(y, x);
+ remove_mirror(p_ptr, y, x);
project(p_ptr, 0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
}
{
msg_print(_("鏡が割れた!", "The mirror was crashed!"));
sound(SOUND_GLASS);
- remove_mirror(y, x);
+ remove_mirror(p_ptr, y, x);
project(p_ptr, 0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
}
{
/* Destroy mirror/glyph */
if (is_mirror_grid(g_ptr) || is_glyph_grid(g_ptr) || is_explosive_rune_grid(g_ptr))
- remove_mirror(y, x);
+ remove_mirror(p_ptr, y, x);
/* Permanent features don't get effect */
/* But not protect monsters and other objects */
monster_target_y = y;
monster_target_x = x;
- remove_mirror(y, x);
+ remove_mirror(caster_ptr, y, x);
next_mirror(caster_ptr, &oy, &ox, y, x);
path_n = i + project_path(caster_ptr->current_floor_ptr, &(path_g[i + 1]), (project_length ? project_length : MAX_RANGE), y, x, oy, ox, flg);
monster_target_y = y;
monster_target_x = x;
- remove_mirror(y, x);
+ remove_mirror(caster_ptr, y, x);
for (j = 0; j <= i; j++)
{
y = GRID_Y(path_g[j]);
}
if (one_in_(7)) {
msg_print(_("鏡が結界に耐えきれず、壊れてしまった。", "The field broke a mirror"));
- remove_mirror(point_y[0], point_x[0]);
+ remove_mirror(caster_ptr, point_y[0], point_x[0]);
}
return TRUE;
{
if (!caster_ptr->current_floor_ptr->grid_array[y][x].m_idx)
{
- remove_mirror(y, x);
+ remove_mirror(caster_ptr, y, x);
}
}
}
{
if (is_mirror_grid(&caster_ptr->current_floor_ptr->grid_array[y][x]))
{
- remove_mirror(y, x);
+ remove_mirror(caster_ptr, y, x);
if (explode)
project(caster_ptr, 0, 2, y, x, caster_ptr->lev / 2 + 5, GF_SHARDS,
(PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);