OSDN Git Service

モンスターの光源バグ再修正。バグの原因確定。update_monsters(TRUE);で
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Wed, 14 Aug 2002 11:58:49 +0000 (11:58 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Wed, 14 Aug 2002 11:58:49 +0000 (11:58 +0000)
m_ptr->cdisを初期化するが、その初期化の前に update_mon_lite(); で使っていた
のがバグの原因だった。
また、モンスターの光源で壁やアイテムが照らされなかったバグも修正。

src/cave.c
src/dungeon.c
src/xtra1.c

index 44c5f68..ef00ecf 100644 (file)
@@ -1942,7 +1942,7 @@ void note_spot(int y, int x)
                if ((c_ptr->feat <= FEAT_INVIS) || (c_ptr->feat == FEAT_DIRT) || (c_ptr->feat == FEAT_GRASS))
                {
                        /* Option -- memorize all torch-lit floors */
-                       if (view_torch_grids && (c_ptr->info & (CAVE_LITE)))
+                       if (view_torch_grids && (c_ptr->info & (CAVE_LITE | CAVE_MNLT)))
                        {
                                /* Memorize */
                                c_ptr->info |= (CAVE_MARK);
@@ -1964,7 +1964,7 @@ void note_spot(int y, int x)
                }
 
                /* Memorize torch-lit walls */
-               else if (c_ptr->info & (CAVE_LITE))
+               else if (c_ptr->info & (CAVE_LITE | CAVE_MNLT))
                {
                        /* Memorize */
                        c_ptr->info |= (CAVE_MARK);
index 8ec9666..2137045 100644 (file)
@@ -5790,10 +5790,7 @@ static void dungeon(bool load_game)
        p_ptr->update |= (PU_VIEW | PU_LITE | PU_MON_LITE | PU_TORCH);
 
        /* Update monsters */
-       p_ptr->update |= (PU_MONSTERS);
-
-       /* Update stuff */
-       p_ptr->update |= (PU_FLOW | PU_DISTANCE);
+       p_ptr->update |= (PU_MONSTERS | PU_DISTANCE | PU_FLOW);
 
        /* Update stuff */
        update_stuff();
index 050ae36..f9dac2d 100644 (file)
@@ -5629,19 +5629,22 @@ void update_stuff(void)
                update_flow();
        }
 
-       if (p_ptr->update & (PU_MON_LITE))
-       {
-               p_ptr->update &= ~(PU_MON_LITE);
-               update_mon_lite();
-       }
-
        if (p_ptr->update & (PU_DISTANCE))
        {
                p_ptr->update &= ~(PU_DISTANCE);
-               p_ptr->update &= ~(PU_MONSTERS);
+
+                /* Still need to call update_monsters(FALSE) after update_mon_lite() */ 
+               /* p_ptr->update &= ~(PU_MONSTERS); */
+
                update_monsters(TRUE);
        }
 
+       if (p_ptr->update & (PU_MON_LITE))
+       {
+               p_ptr->update &= ~(PU_MON_LITE);
+               update_mon_lite();
+       }
+
        if (p_ptr->update & (PU_MONSTERS))
        {
                p_ptr->update &= ~(PU_MONSTERS);