また, update_local_illumination()でプレイヤー自身のマスは更新する必要
がなかったので修正.
}
else /* Player's grid */
{
}
else /* Player's grid */
{
- for (i = 0; i < 9; i++)
+ for (i = 0; i < 8; i++)
- yy = y + ddy_ddd[i];
- xx = x + ddx_ddd[i];
+ yy = y + ddy_cdd[i];
+ xx = x + ddx_cdd[i];
if (!player_has_los_bold(yy, xx)) continue;
/* Update the monster */
if (!player_has_los_bold(yy, xx)) continue;
/* Update the monster */
case GF_DARK_WEAK:
case GF_DARK:
{
case GF_DARK_WEAK:
case GF_DARK:
{
- if (!p_ptr->inside_battle)
+ bool do_dark = !p_ptr->inside_battle && !is_mirror_grid(c_ptr);
+ int j;
+
+ /* Turn off the light. */
+ if (do_dark)
- /* Turn off the light. */
- if (!is_mirror_grid(c_ptr))
+ for (j = 0; j < 9; j++)
- c_ptr->info &= ~(CAVE_GLOW);
-
- /* Hack -- Forget "boring" grids */
- if (!have_flag(f_ptr->flags, FF_REMEMBER))
+ if (have_flag(f_flags_bold(y + ddy_ddd[j], x + ddx_ddd[j]), FF_GLOW))
- /* Forget */
- c_ptr->info &= ~(CAVE_MARK);
-
- /* Notice */
- note_spot(y, x);
+ do_dark = FALSE;
+ break;
- /* Redraw */
- lite_spot(y, x);
- update_local_illumination(y, x);
+ c_ptr->info &= ~(CAVE_GLOW);
- /* Notice */
- if (player_can_see_bold(y, x)) obvious = TRUE;
+ /* Hack -- Forget "boring" grids */
+ if (!have_flag(f_ptr->flags, FF_REMEMBER))
+ {
+ /* Forget */
+ c_ptr->info &= ~(CAVE_MARK);
- /* Mega-Hack -- Update the monster in the affected grid */
- /* This allows "spear of light" (etc) to work "correctly" */
- if (c_ptr->m_idx) update_mon(c_ptr->m_idx, FALSE);
+ /* Notice */
+ note_spot(y, x);
+
+ /* Redraw */
+ lite_spot(y, x);
+
+ update_local_illumination(y, x);
+
+ /* Notice */
+ if (player_can_see_bold(y, x)) obvious = TRUE;
+
+ /* Mega-Hack -- Update the monster in the affected grid */
+ /* This allows "spear of light" (etc) to work "correctly" */
+ if (c_ptr->m_idx) update_mon(c_ptr->m_idx, FALSE);
{
int y = temp_y[i];
int x = temp_x[i];
{
int y = temp_y[i];
int x = temp_x[i];
cave_type *c_ptr = &cave[y][x];
cave_type *c_ptr = &cave[y][x];
+ bool do_dark = !is_mirror_grid(c_ptr);
/* No longer in the array */
c_ptr->info &= ~(CAVE_TEMP);
/* Darken the grid */
/* No longer in the array */
c_ptr->info &= ~(CAVE_TEMP);
/* Darken the grid */
- if (!is_mirror_grid(c_ptr))
+ for (j = 0; j < 9; j++)
+ {
+ if (have_flag(f_flags_bold(y + ddy_ddd[j], x + ddx_ddd[j]), FF_GLOW))
+ {
+ do_dark = FALSE;
+ break;
+ }
+ }
+
+ if (!do_dark) continue;
+
c_ptr->info &= ~(CAVE_GLOW);
/* Hack -- Forget "boring" grids */
c_ptr->info &= ~(CAVE_GLOW);
/* Hack -- Forget "boring" grids */