From d686d4bfec0990ed612a7c81222f56026fd5d38a Mon Sep 17 00:00:00 2001 From: Habu Date: Sun, 2 Jun 2024 08:20:36 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20=E3=83=A2=E3=83=B3=E3=82=B9?= =?utf8?q?=E3=82=BF=E3=83=BC=E3=81=AE=E8=A9=B3=E7=B4=B0=E6=83=85=E5=A0=B1?= =?utf8?q?=E3=82=92=E5=BE=97=E3=82=89=E3=82=8C=E3=82=8B=E3=81=8B=E3=81=AE?= =?utf8?q?=E9=96=A2=E6=95=B0=E5=90=8D=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 関数 know_armour はその名称に反して HP、AC、スキルダメージの量 を 表示するかどうかに使用されており実態に則していないので、know_detailsに 関数名を変更する。 あわせて、スキルダメージではなく打撃攻撃のダメージダイスを表示するか どうかを判定する関数をknow_damage から know_blow_damage に変更する。 --- src/lore/lore-calculator.cpp | 25 +++++++++++-------------- src/lore/lore-calculator.h | 4 ++-- src/view/display-lore-attacks.cpp | 4 ++-- src/view/display-lore-status.cpp | 2 +- src/view/display-lore.cpp | 2 +- 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/lore/lore-calculator.cpp b/src/lore/lore-calculator.cpp index fc3be3c20..59ca8bb5c 100644 --- a/src/lore/lore-calculator.cpp +++ b/src/lore/lore-calculator.cpp @@ -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 *
  * the higher the level of the monster, the fewer the attacks you need,
  * the more damage an attack does, the more attacks you need
  * 
*/ -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; diff --git a/src/lore/lore-calculator.h b/src/lore/lore-calculator.h index 95d17b074..f0f174adf 100644 --- a/src/lore/lore-calculator.h +++ b/src/lore/lore-calculator.h @@ -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); diff --git a/src/view/display-lore-attacks.cpp b/src/view/display-lore-attacks.cpp index ad98879b2..0b4ba89f0 100644 --- a/src/view/display-lore-attacks.cpp +++ b/src/view/display-lore-attacks.cpp @@ -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)); } diff --git a/src/view/display-lore-status.cpp b/src/view/display-lore-status.cpp index aecdbf942..1eca74956 100644 --- a/src/view/display-lore-status.cpp +++ b/src/view/display-lore-status.cpp @@ -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; } diff --git a/src/view/display-lore.cpp b/src/view/display-lore.cpp index a848c0a7c..f11ea09b2 100644 --- a/src/view/display-lore.cpp +++ b/src/view/display-lore.cpp @@ -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"); -- 2.11.0