OSDN Git Service

[Refactor] #2604 Reshaped change_monster_stat()
authorHourier <66951241+Hourier@users.noreply.github.com>
Mon, 23 Jan 2023 11:14:29 +0000 (20:14 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 23 Apr 2023 13:00:39 +0000 (22:00 +0900)
src/player-attack/attack-chaos-effect.cpp

index 298e8a9..b720264 100644 (file)
@@ -279,10 +279,11 @@ static void attack_golden_hammer(PlayerType *player_ptr, player_attack_type *pa_
  */
 void change_monster_stat(PlayerType *player_ptr, player_attack_type *pa_ptr, const POSITION y, const POSITION x, int *num)
 {
-    auto *r_ptr = &monraces_info[pa_ptr->m_ptr->r_idx];
-    auto *o_ptr = &player_ptr->inventory_list[INVEN_MAIN_HAND + pa_ptr->hand];
-
-    if (any_bits(player_ptr->special_attack, ATTACK_CONFUSE) || pa_ptr->chaos_effect == CE_CONFUSION || pa_ptr->mode == HISSATSU_CONF || SpellHex(player_ptr).is_spelling_specific(HEX_CONFUSION)) {
+    auto should_confuse = any_bits(player_ptr->special_attack, ATTACK_CONFUSE);
+    should_confuse |= pa_ptr->chaos_effect == CE_CONFUSION;
+    should_confuse |= pa_ptr->mode == HISSATSU_CONF;
+    should_confuse |= SpellHex(player_ptr).is_spelling_specific(HEX_CONFUSION);
+    if (should_confuse) {
         attack_confuse(player_ptr, pa_ptr);
     }
 
@@ -306,11 +307,12 @@ void change_monster_stat(PlayerType *player_ptr, player_attack_type *pa_ptr, con
         attack_teleport_away(player_ptr, pa_ptr, num);
     }
 
-    if (pa_ptr->chaos_effect == CE_POLYMORPH && randint1(90) > r_ptr->level) {
+    if (pa_ptr->chaos_effect == CE_POLYMORPH && (randint1(90) > monraces_info[pa_ptr->m_ptr->r_idx].level)) {
         attack_polymorph(player_ptr, pa_ptr, y, x);
     }
 
-    if (o_ptr->is_specific_artifact(FixedArtifactId::G_HAMMER)) {
+    const auto &item = player_ptr->inventory_list[enum2i(INVEN_MAIN_HAND) + pa_ptr->hand];
+    if (item.is_specific_artifact(FixedArtifactId::G_HAMMER)) {
         attack_golden_hammer(player_ptr, pa_ptr);
     }
 }