OSDN Git Service

[Refactor] モンスターの詳細情報を得られるかの関数名変更
authorHabu <habu1010+github@gmail.com>
Sat, 1 Jun 2024 23:20:36 +0000 (08:20 +0900)
committerHabu <habu1010+github@gmail.com>
Sun, 2 Jun 2024 01:25:56 +0000 (10:25 +0900)
関数 know_armour はその名称に反して HP、AC、スキルダメージの量 を
表示するかどうかに使用されており実態に則していないので、know_detailsに
関数名を変更する。
あわせて、スキルダメージではなく打撃攻撃のダメージダイスを表示するか
どうかを判定する関数をknow_damage から know_blow_damage に変更する。

src/lore/lore-calculator.cpp
src/lore/lore-calculator.h
src/view/display-lore-attacks.cpp
src/view/display-lore-status.cpp
src/view/display-lore.cpp

index fc3be3c..59ca8bb 100644 (file)
@@ -47,28 +47,25 @@ std::string dice_to_string(int base_damage, int dice_num, int dice_side, int dic
 }
 
 /*!
- * @brief モンスターのAC情報を得ることができるかを返す / Determine if the "armor" is known
+ * @brief モンスターの詳細情報(HP,AC,スキルダメージの量)を得ることができるかを返す
  * @param r_idx モンスターの種族ID
- * @param know_everything 全知フラグ。TRUEを渡すとTRUEが返る。
- * @return 敵のACを知る条件が満たされているならTRUEを返す
+ * @return モンスターの詳細情報を得る条件が満たされているならtrue、そうでないならfalse
  * @details
  * The higher the level, the fewer kills needed.
  */
-bool know_armour(MonsterRaceId r_idx, const bool know_everything)
+bool know_details(MonsterRaceId r_idx)
 {
-    auto *r_ptr = &monraces_info[r_idx];
-    DEPTH level = r_ptr->level;
-    MONSTER_NUMBER kills = r_ptr->r_tkills;
-
-    bool known = r_ptr->r_cast_spell == MAX_UCHAR;
+    const auto &monrace = monraces_info[r_idx];
+    const auto level = monrace.level;
+    const auto kills = monrace.r_tkills;
 
-    if (know_everything || known) {
+    if (monrace.r_cast_spell == MAX_UCHAR) {
         return true;
     }
     if (kills > 304 / (4 + level)) {
         return true;
     }
-    if (r_ptr->kind_flags.has_not(MonsterKindType::UNIQUE)) {
+    if (monrace.kind_flags.has_not(MonsterKindType::UNIQUE)) {
         return false;
     }
     if (kills > 304 / (38 + (5 * level) / 4)) {
@@ -82,14 +79,14 @@ bool know_armour(MonsterRaceId r_idx, const bool know_everything)
  * Determine if the "damage" of the given attack is known
  * @param r_idx モンスターの種族ID
  * @param i 確認したい攻撃手番
- * @return 敵のダメージダイスを知る条件が満たされているならTRUEを返す
+ * @return 敵のダメージダイスを知る条件が満たされているならtrue、そうでないならfalse
  * @details
  * <pre>
  * the higher the level of the monster, the fewer the attacks you need,
  * the more damage an attack does, the more attacks you need
  * </pre>
  */
-bool know_damage(MonsterRaceId r_idx, int i)
+bool know_blow_damage(MonsterRaceId r_idx, int i)
 {
     const auto &monrace = monraces_info[r_idx];
     auto level = monrace.level;
@@ -128,7 +125,7 @@ void add_lore_of_damage_skill(PlayerType *player_ptr, lore_type *lore_ptr, Monst
 {
     MonsterRaceId r_idx = lore_ptr->r_idx;
 
-    if (!know_armour(r_idx, lore_ptr->know_everything)) {
+    if (!know_details(r_idx) && !lore_ptr->know_everything) {
         // ダメージ量の情報なし
         lore_ptr->lore_msgs.emplace_back(format(msg, ""), color);
         return;
index 95d17b0..f0f174a 100644 (file)
@@ -9,7 +9,7 @@ enum class MonsterRaceId : int16_t;
 struct lore_type;
 class PlayerType;
 std::string dice_to_string(int base_damage, int dice_num, int dice_side, int dice_mult, int dice_div);
-bool know_armour(MonsterRaceId r_idx, const bool know_everything);
-bool know_damage(MonsterRaceId r_idx, int i);
+bool know_details(MonsterRaceId r_idx);
+bool know_blow_damage(MonsterRaceId r_idx, int i);
 void add_lore_of_damage_skill(PlayerType *player_ptr, lore_type *lore_ptr, MonsterAbilityType ms_type, concptr msg, byte color);
 void set_flags_for_full_knowledge(lore_type *lore_ptr);
index ad98879..0b4ba89 100644 (file)
@@ -22,7 +22,7 @@ static void display_monster_blow_jp(lore_type *lore_ptr, int attack_numbers, int
         hooked_roff(format("%s^は", Who::who(lore_ptr->msex)));
     }
 
-    if (d1 && d2 && (lore_ptr->know_everything || know_damage(lore_ptr->r_idx, m))) {
+    if (d1 && d2 && (lore_ptr->know_everything || know_blow_damage(lore_ptr->r_idx, m))) {
         hook_c_roff(TERM_L_WHITE, format(" %dd%d ", d1, d2));
         hooked_roff("のダメージで");
     }
@@ -84,7 +84,7 @@ static void display_monster_blow_en(lore_type *lore_ptr, int attack_numbers, int
     if (lore_ptr->q != nullptr) {
         hooked_roff(" to ");
         hook_c_roff(lore_ptr->qc, lore_ptr->q);
-        if (d1 && d2 && (lore_ptr->know_everything || know_damage(lore_ptr->r_idx, m))) {
+        if (d1 && d2 && (lore_ptr->know_everything || know_blow_damage(lore_ptr->r_idx, m))) {
             hooked_roff(" with damage");
             hook_c_roff(TERM_L_WHITE, format(" %dd%d", d1, d2));
         }
index aecdbf9..1eca749 100644 (file)
@@ -11,7 +11,7 @@
 
 void display_monster_hp_ac(lore_type *lore_ptr)
 {
-    if (!know_armour(lore_ptr->r_idx, lore_ptr->know_everything)) {
+    if (!know_details(lore_ptr->r_idx) && !lore_ptr->know_everything) {
         return;
     }
 
index a848c0a..f11ea09 100644 (file)
@@ -595,7 +595,7 @@ void display_monster_launching(PlayerType *player_ptr, lore_type *lore_ptr)
     }
 
     std::string msg;
-    if (know_armour(lore_ptr->r_idx, lore_ptr->know_everything)) {
+    if (know_details(lore_ptr->r_idx) || lore_ptr->know_everything) {
         msg = format(_("威力 %dd%d の射撃をする", "fire an arrow (Power:%dd%d)"), lore_ptr->r_ptr->shoot_dam_dice, lore_ptr->r_ptr->shoot_dam_side);
     } else {
         msg = _("射撃をする", "fire an arrow");