OSDN Git Service

[Refactor] #1496 Defined is_martial_arts_pro() method in PlayerClass
authorHourier <66951241+Hourier@users.noreply.github.com>
Tue, 8 Feb 2022 12:37:05 +0000 (21:37 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Thu, 10 Feb 2022 12:48:10 +0000 (21:48 +0900)
src/player-base/player-class.cpp
src/player-base/player-class.h
src/player-info/equipment-info.cpp
src/player/player-status-flags.cpp
src/player/player-status.cpp
src/view/status-first-page.cpp

index 3e5332b..8eafa79 100644 (file)
@@ -310,6 +310,13 @@ bool PlayerClass::is_tough() const
     return is_tough;
 }
 
+bool PlayerClass::is_martial_arts_pro() const
+{
+    auto is_martial_arts_pro = this->equals(PlayerClassType::MONK);
+    is_martial_arts_pro |= this->equals(PlayerClassType::FORCETRAINER);
+    return is_martial_arts_pro;
+}
+
 bool PlayerClass::is_every_magic() const
 {
     auto is_every_magic = this->equals(PlayerClassType::SORCERER);
index 3da104f..46307a1 100644 (file)
@@ -30,6 +30,7 @@ public:
     bool can_browse() const;
     bool has_listed_magics() const;
     bool is_tough() const;
+    bool is_martial_arts_pro() const;
     bool is_every_magic() const;
     bool has_number_of_spells_learned() const;
 
index 24189a1..9585b91 100644 (file)
@@ -54,14 +54,19 @@ bool can_two_hands_wielding(PlayerType *player_ptr)
 bool heavy_armor(PlayerType *player_ptr)
 {
     PlayerClass pc(player_ptr);
-    if (!pc.equals(PlayerClassType::MONK) && !pc.equals(PlayerClassType::FORCETRAINER) && !pc.equals(PlayerClassType::NINJA))
+    if (!pc.is_martial_arts_pro() && !pc.equals(PlayerClassType::NINJA)) {
         return false;
+    }
 
     WEIGHT monk_arm_wgt = 0;
-    if (player_ptr->inventory_list[INVEN_MAIN_HAND].tval > ItemKindType::SWORD)
+    if (player_ptr->inventory_list[INVEN_MAIN_HAND].tval > ItemKindType::SWORD) {
         monk_arm_wgt += player_ptr->inventory_list[INVEN_MAIN_HAND].weight;
-    if (player_ptr->inventory_list[INVEN_SUB_HAND].tval > ItemKindType::SWORD)
+    }
+
+    if (player_ptr->inventory_list[INVEN_SUB_HAND].tval > ItemKindType::SWORD) {
         monk_arm_wgt += player_ptr->inventory_list[INVEN_SUB_HAND].weight;
+    }
+
     monk_arm_wgt += player_ptr->inventory_list[INVEN_BODY].weight;
     monk_arm_wgt += player_ptr->inventory_list[INVEN_HEAD].weight;
     monk_arm_wgt += player_ptr->inventory_list[INVEN_OUTER].weight;
index 7b3574d..d7d7136 100644 (file)
@@ -1707,7 +1707,7 @@ bool has_not_monk_weapon(PlayerType *player_ptr, int i)
     auto tval = player_ptr->inventory_list[INVEN_MAIN_HAND + i].tval;
     auto sval = player_ptr->inventory_list[INVEN_MAIN_HAND + i].sval;
     PlayerClass pc(player_ptr);
-    return (pc.equals(PlayerClassType::MONK) || pc.equals(PlayerClassType::FORCETRAINER)) && (player_ptr->weapon_exp_max[tval][sval] == PlayerSkill::weapon_exp_at(PlayerSkillRank::UNSKILLED));
+    return pc.is_martial_arts_pro() && (player_ptr->weapon_exp_max[tval][sval] == PlayerSkill::weapon_exp_at(PlayerSkillRank::UNSKILLED));
 }
 
 bool has_good_luck(PlayerType *player_ptr)
index bc96b8a..b8847ab 100644 (file)
@@ -1660,7 +1660,7 @@ static ARMOUR_CLASS calc_to_ac(PlayerType *player_ptr, bool is_real_value)
         ac += 25;
     }
 
-    if ((pc.equals(PlayerClassType::MONK) || pc.equals(PlayerClassType::FORCETRAINER)) && !heavy_armor(player_ptr)) {
+    if (pc.is_martial_arts_pro() && !heavy_armor(player_ptr)) {
         if (!(player_ptr->inventory_list[INVEN_BODY].k_idx)) {
             ac += (player_ptr->lev * 3) / 2;
         }
@@ -1905,8 +1905,7 @@ void put_equipment_warning(PlayerType *player_ptr)
     }
 
     PlayerClass pc(player_ptr);
-    if ((pc.equals(PlayerClassType::MONK) || pc.equals(PlayerClassType::FORCETRAINER) || pc.equals(PlayerClassType::NINJA))
-        && (heavy_armor(player_ptr) != player_ptr->monk_notify_aux)) {
+    if ((pc.is_martial_arts_pro() || pc.equals(PlayerClassType::NINJA)) && (heavy_armor(player_ptr) != player_ptr->monk_notify_aux)) {
         if (heavy_armor(player_ptr)) {
             msg_print(_("装備が重くてバランスを取れない。", "The weight of your armor disrupts your balance."));
             if (w_ptr->is_loading_now) {
index 2985466..5c4ceee 100644 (file)
@@ -254,7 +254,7 @@ static void calc_two_hands(PlayerType *player_ptr, int *damage, int *to_h)
         int basedam;
         damage[i] = player_ptr->dis_to_d[i] * 100;
         PlayerClass pc(player_ptr);
-        if ((pc.equals(PlayerClassType::MONK) || pc.equals(PlayerClassType::FORCETRAINER)) && (empty_hands(player_ptr, true) & EMPTY_HAND_MAIN)) {
+        if (pc.is_martial_arts_pro() && (empty_hands(player_ptr, true) & EMPTY_HAND_MAIN)) {
             if (!calc_weapon_damage_limit(player_ptr, i, damage, &basedam, o_ptr))
                 break;