From 4aa0b769ee49c5310d7c2f71119188675024fe8a Mon Sep 17 00:00:00 2001 From: deskull Date: Sun, 26 Jul 2020 16:18:20 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#40514=20have=5Fesp=5Fundead()=20?= =?utf8?q?=E3=82=92=20calc=5Fbonuses()=E3=80=80=E3=81=8B=E3=82=89=E5=88=86?= =?utf8?q?=E9=9B=A2=EF=BC=8E=20/=20Separated=20have=5Fesp=5Fundead()=20fro?= =?utf8?q?m=20calc=5Fbonuses().?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/player/player-status-flags.c | 20 ++++++++++++++++++++ src/player/player-status-flags.h | 1 + src/player/player-status.c | 4 +--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/player/player-status-flags.c b/src/player/player-status-flags.c index abbce95e6..0a4d49d17 100644 --- a/src/player/player-status-flags.c +++ b/src/player/player-status-flags.c @@ -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; + } +} + diff --git a/src/player/player-status-flags.h b/src/player/player-status-flags.h index 1537cdc6d..31cc2b546 100644 --- a/src/player/player-status-flags.h +++ b/src/player/player-status-flags.h @@ -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); diff --git a/src/player/player-status.c b/src/player/player-status.c index 303dfeb82..cb76a9ebd 100644 --- a/src/player/player-status.c +++ b/src/player/player-status.c @@ -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)) -- 2.11.0