OSDN Git Service

cave_set_feat()でもc_ptr->mimicはリセットされ, 鏡を消す処理を含むた
authornothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Fri, 28 Nov 2003 08:14:08 +0000 (08:14 +0000)
committernothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Fri, 28 Nov 2003 08:14:08 +0000 (08:14 +0000)
め, 暗闇の洞窟でCAVE_GLOWを落とす処理を追加. また, 分解属性で壊れる地
形にアーティファクトがあると地形が壊れなかったバグを修正.

src/cave.c
src/spells1.c

index bef0f8a..b1e1ccb 100644 (file)
@@ -4419,6 +4419,12 @@ void cave_set_feat(int y, int x, int feat)
        cave_type *c_ptr = &cave[y][x];
        feature_type *f_ptr = &f_info[feat];
 
+       if (is_mirror_grid(c_ptr) && (d_info[dungeon_type].flags1 & DF1_DARKNESS))
+       {
+               c_ptr->info &= ~(CAVE_GLOW);
+               if (!view_torch_grids) c_ptr->info &= ~(CAVE_MARK);
+       }
+
        /* Clear mimic type */
        c_ptr->mimic = 0;
 
index 51ebd73..d1a034c 100644 (file)
@@ -7969,16 +7969,14 @@ static bool do_disintegration(int by, int bx, int y, int x)
        /* Disintegration balls explosions are stopped by perma-walls */
        if (!in_disintegration_range(by, bx, y, x)) return FALSE;
 
-       /* Permanent walls and artifacts don't get effect */
-       /* But not protect monsters and other objects */
-       if (!cave_valid_bold(y, x)) return TRUE;
-
-       /* Destroy mirror/glyph */
-       remove_mirror(y, x);
+       /* Destroy mirror */
+       if (is_mirror_grid(&cave[y][x])) remove_mirror(y, x);
 
        f_ptr = &f_info[cave[y][x].feat];
 
-       if (have_flag(f_ptr->flags, FF_HURT_DISI))
+       /* Permanent features don't get effect */
+       /* But not protect monsters and other objects */
+       if (have_flag(f_ptr->flags, FF_HURT_DISI) && !have_flag(f_ptr->flags, FF_PERMANENT))
        {
                cave_alter_feat(y, x, FF_HURT_DISI);