OSDN Git Service

[Refactor] #40514 have_esp_undead() を calc_bonuses() から分離. / Separated have_esp_undea...
authordeskull <deskull@users.sourceforge.jp>
Sun, 26 Jul 2020 07:18:20 +0000 (16:18 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sun, 26 Jul 2020 07:18:20 +0000 (16:18 +0900)
src/player/player-status-flags.c
src/player/player-status-flags.h
src/player/player-status.c

index abbce95..0a4d49d 100644 (file)
@@ -118,3 +118,23 @@ void have_esp_animal(player_type *creature_ptr)
             creature_ptr->esp_animal = TRUE;
     }
 }
+
+void have_esp_undead(player_type *creature_ptr)
+{
+    object_type *o_ptr;
+    BIT_FLAGS flgs[TR_FLAG_SIZE];
+
+    creature_ptr->esp_undead = FALSE;
+
+    for (int i = INVEN_RARM; i < INVEN_TOTAL; i++) {
+        o_ptr = &creature_ptr->inventory_list[i];
+        if (!o_ptr->k_idx)
+            continue;
+
+        object_flags(creature_ptr, o_ptr, flgs);
+
+        if (have_flag(flgs, TR_ESP_UNDEAD))
+            creature_ptr->esp_undead = TRUE;
+    }
+}
+
index 1537cdc..31cc2b5 100644 (file)
@@ -5,5 +5,6 @@ void have_kill_wall(player_type *creature_ptr);
 void have_xtra_might(player_type *creature_ptr);
 void have_esp_evil(player_type *creature_ptr);
 void have_esp_animal(player_type *creature_ptr);
+void have_esp_undead(player_type *creature_ptr);
 
 
index 303dfeb..cb76a9e 100644 (file)
@@ -578,7 +578,6 @@ static void clear_creature_bonuses(player_type *creature_ptr)
     creature_ptr->levitation = FALSE;
     creature_ptr->hold_exp = FALSE;
     creature_ptr->telepathy = FALSE;
-    creature_ptr->esp_undead = FALSE;
     creature_ptr->esp_demon = FALSE;
     creature_ptr->esp_orc = FALSE;
     creature_ptr->esp_troll = FALSE;
@@ -711,6 +710,7 @@ void calc_bonuses(player_type *creature_ptr)
     have_xtra_might(creature_ptr);
     have_esp_evil(creature_ptr);
     have_esp_animal(creature_ptr);
+    have_esp_undead(creature_ptr);
 
     calc_race_status(creature_ptr);
 
@@ -4704,8 +4704,6 @@ void calc_equipment_status(player_type *creature_ptr)
             creature_ptr->regenerate = TRUE;
         if (have_flag(flgs, TR_TELEPATHY))
             creature_ptr->telepathy = TRUE;
-        if (have_flag(flgs, TR_ESP_UNDEAD))
-            creature_ptr->esp_undead = TRUE;
         if (have_flag(flgs, TR_ESP_DEMON))
             creature_ptr->esp_demon = TRUE;
         if (have_flag(flgs, TR_ESP_ORC))