OSDN Git Service

lite_area()と同時に、暗闇生成の範囲も広くなっていたので、
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 17 Jun 2002 15:39:51 +0000 (15:39 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 17 Jun 2002 15:39:51 +0000 (15:39 +0000)
1.1.0RC2までの範囲に戻した。

src/spells2.c

index cb70fea..1bdbe67 100644 (file)
@@ -6060,7 +6060,7 @@ static int next_to_walls_adj(int cy, int cx)
 /*
  * Aux function -- see below
  */
-static void cave_temp_room_aux(int y, int x)
+static void cave_temp_room_aux(int y, int x, bool only_room)
 {
        cave_type *c_ptr;
 
@@ -6073,6 +6073,8 @@ static void cave_temp_room_aux(int y, int x)
        /* Do not "leave" the current room */
        if (!(c_ptr->info & (CAVE_ROOM)))
        {
+               if (only_room) return;
+
                /* Verify */
                if (!in_bounds(y, x)) return;
 
@@ -6106,6 +6108,22 @@ static void cave_temp_room_aux(int y, int x)
        temp_n++;
 }
 
+/*
+ * Aux function -- see below
+ */
+static void cave_temp_lite_room_aux(int y, int x)
+{
+       cave_temp_room_aux(y, x, FALSE);
+}
+
+/*
+ * Aux function -- see below
+ */
+static void cave_temp_unlite_room_aux(int y, int x)
+{
+       cave_temp_room_aux(y, x, TRUE);
+}
+
 
 
 
@@ -6117,7 +6135,7 @@ void lite_room(int y1, int x1)
        int i, x, y;
 
        /* Add the initial grid */
-       cave_temp_room_aux(y1, x1);
+       cave_temp_lite_room_aux(y1, x1);
 
        /* While grids are in the queue, add their neighbors */
        for (i = 0; i < temp_n; i++)
@@ -6128,16 +6146,16 @@ void lite_room(int y1, int x1)
                if (!cave_floor_bold(y, x)) continue;
 
                /* Spread adjacent */
-               cave_temp_room_aux(y + 1, x);
-               cave_temp_room_aux(y - 1, x);
-               cave_temp_room_aux(y, x + 1);
-               cave_temp_room_aux(y, x - 1);
+               cave_temp_lite_room_aux(y + 1, x);
+               cave_temp_lite_room_aux(y - 1, x);
+               cave_temp_lite_room_aux(y, x + 1);
+               cave_temp_lite_room_aux(y, x - 1);
 
                /* Spread diagonal */
-               cave_temp_room_aux(y + 1, x + 1);
-               cave_temp_room_aux(y - 1, x - 1);
-               cave_temp_room_aux(y - 1, x + 1);
-               cave_temp_room_aux(y + 1, x - 1);
+               cave_temp_lite_room_aux(y + 1, x + 1);
+               cave_temp_lite_room_aux(y - 1, x - 1);
+               cave_temp_lite_room_aux(y - 1, x + 1);
+               cave_temp_lite_room_aux(y + 1, x - 1);
        }
 
        /* Now, lite them all up at once */
@@ -6153,7 +6171,7 @@ void unlite_room(int y1, int x1)
        int i, x, y;
 
        /* Add the initial grid */
-       cave_temp_room_aux(y1, x1);
+       cave_temp_unlite_room_aux(y1, x1);
 
        /* Spread, breadth first */
        for (i = 0; i < temp_n; i++)
@@ -6164,16 +6182,16 @@ void unlite_room(int y1, int x1)
                if (!cave_floor_bold(y, x)) continue;
 
                /* Spread adjacent */
-               cave_temp_room_aux(y + 1, x);
-               cave_temp_room_aux(y - 1, x);
-               cave_temp_room_aux(y, x + 1);
-               cave_temp_room_aux(y, x - 1);
+               cave_temp_unlite_room_aux(y + 1, x);
+               cave_temp_unlite_room_aux(y - 1, x);
+               cave_temp_unlite_room_aux(y, x + 1);
+               cave_temp_unlite_room_aux(y, x - 1);
 
                /* Spread diagonal */
-               cave_temp_room_aux(y + 1, x + 1);
-               cave_temp_room_aux(y - 1, x - 1);
-               cave_temp_room_aux(y - 1, x + 1);
-               cave_temp_room_aux(y + 1, x - 1);
+               cave_temp_unlite_room_aux(y + 1, x + 1);
+               cave_temp_unlite_room_aux(y - 1, x - 1);
+               cave_temp_unlite_room_aux(y - 1, x + 1);
+               cave_temp_unlite_room_aux(y + 1, x - 1);
        }
 
        /* Now, darken them all at once */