OSDN Git Service

忍者は暗闇の洞窟で地形やアイテムが丸見えだったが, モンスターがこれに
[hengband/hengband.git] / src / streams.c
index 7153aaa..f00ab01 100644 (file)
@@ -6,11 +6,11 @@
  */
 
 /*
- * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
+ * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
  *
- * This software may be copied and distributed for educational, research, and
- * not for profit purposes provided that this copyright and statement are
- * included in all such copies.
+ * This software may be copied and distributed for educational, research,
+ * and not for profit purposes provided that this copyright and statement
+ * are included in all such copies.  Other copyrights may also apply.
  */
 
 #include "angband.h"
@@ -95,7 +95,7 @@ static void recursive_river(int x1, int y1, int x2, int y2, int feat1, int feat2
                                {
                                        for (tx = x - width - 1; tx <= x + width + 1; tx++)
                                        {
-                                               if (!in_bounds(ty, tx)) continue;
+                                               if (!in_bounds2(ty, tx)) continue;
 
                                                c_ptr = &cave[ty][tx];
 
@@ -122,7 +122,7 @@ static void recursive_river(int x1, int y1, int x2, int y2, int feat1, int feat2
                                                /* Lava terrain glows */
                                                if ((feat1 == FEAT_DEEP_LAVA) ||  (feat1 == FEAT_SHAL_LAVA))
                                                {
-                                                       c_ptr->info |= CAVE_GLOW;
+                                                       if (!(d_info[dungeon_type].flags1 & DF1_DARKNESS)) c_ptr->info |= CAVE_GLOW;
                                                }
 
                                                /* Hack -- don't teleport here */
@@ -236,7 +236,7 @@ void build_streamer(int feat, int chance)
                        {
                                ty = rand_spread(y, d);
                                tx = rand_spread(x, d);
-                               if (!in_bounds(ty, tx)) continue;
+                               if (!in_bounds2(ty, tx)) continue;
                                break;
                        }
 
@@ -339,7 +339,7 @@ void place_trees(int x, int y)
                                c_ptr->mimic = 0;
 
                                /* Light area since is open above */
-                               cave[j][i].info |= (CAVE_GLOW | CAVE_ROOM);
+                               if (!(d_info[dungeon_type].flags1 & DF1_DARKNESS)) cave[j][i].info |= (CAVE_GLOW | CAVE_ROOM);
                        }
                }
        }
@@ -358,18 +358,15 @@ void place_trees(int x, int y)
  */
 void destroy_level(void)
 {
-       int y1, x1, y, x, k, t, n;
-
-       cave_type *c_ptr;
+       int y1, x1, n;
 
        /* Note destroyed levels */
 #ifdef JP
-if (cheat_room) msg_print("Ç˲õ¤µ¤ì¤¿³¬");
+       if (cheat_room) msg_print("Ç˲õ¤µ¤ì¤¿³¬");
 #else
        if (cheat_room) msg_print("Destroyed Level");
 #endif
 
-
        /* Drop a few epi-centers (usually about two) */
        for (n = 0; n < randint1(5); n++)
        {
@@ -377,73 +374,6 @@ if (cheat_room) msg_print("
                x1 = rand_range(5, cur_wid - 1 - 5);
                y1 = rand_range(5, cur_hgt - 1 - 5);
 
-               /* Big area of affect */
-               for (y = (y1 - 15); y <= (y1 + 15); y++)
-               {
-                       for (x = (x1 - 15); x <= (x1 + 15); x++)
-                       {
-                               /* Skip illegal grids */
-                               if (!in_bounds(y, x)) continue;
-
-                               /* Extract the distance */
-                               k = distance(y1, x1, y, x);
-
-                               /* Stay in the circle of death */
-                               if (k >= 16) continue;
-
-                               /* Delete the monster (if any) */
-                               delete_monster(y, x);
-
-                               /* Access the grid */
-                               c_ptr = &cave[y][x];
-
-                               /* Destroy valid grids */
-                               if (cave_valid_grid(c_ptr))
-                               {
-                                       /* Delete objects */
-                                       delete_object(y, x);
-
-                                       /* Wall (or floor) type */
-                                       t = randint0(200);
-
-                                       /* Granite */
-                                       if (t < 20)
-                                       {
-                                               /* Create granite wall */
-                                               place_extra_grid(c_ptr);
-                                       }
-
-                                       /* Quartz */
-                                       else if (t < 70)
-                                       {
-                                               /* Create quartz vein */
-                                               c_ptr->feat = FEAT_QUARTZ;
-                                       }
-
-                                       /* Magma */
-                                       else if (t < 100)
-                                       {
-                                               /* Create magma vein */
-                                               c_ptr->feat = FEAT_MAGMA;
-                                       }
-
-                                       /* Floor */
-                                       else
-                                       {
-                                               /* Create floor */
-                                               place_floor_grid(c_ptr);
-                                       }
-
-                                       /* Clear garbage of hidden trap or door */
-                                       c_ptr->mimic = 0;
-
-                                       /* No longer part of a room or vault */
-                                       c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY);
-
-                                       /* No longer illuminated or known */
-                                       c_ptr->info &= ~(CAVE_MARK | CAVE_GLOW);
-                               }
-                       }
-               }
+               (void)destroy_area(y1, x1, 15, TRUE);
        }
 }