From 51ba3d40f4e130964bf87486a7c70f5ae11a39a4 Mon Sep 17 00:00:00 2001 From: Habu Date: Wed, 30 Nov 2022 11:42:45 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20flavor=5Ftype::show=5Fweapon=20?= =?utf8?q?=E3=83=A1=E3=83=B3=E3=83=90=E3=82=92=E5=89=8A=E9=99=A4=E3=81=99?= =?utf8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit アイテムの殺戮修正を表示するかどうかを決定するミニグローバルなフラグとして使われており コードを追いづらいため削除し、代わりに should_show_slaying_bonus 関数により判定を 行うようにする。 --- src/flavor/flavor-describer.cpp | 36 ++++++++++++++++++++++++-------- src/flavor/flavor-util.cpp | 1 - src/flavor/flavor-util.h | 1 - src/flavor/tval-description-switcher.cpp | 5 ----- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/flavor/flavor-describer.cpp b/src/flavor/flavor-describer.cpp index 946516d75..ac677f325 100644 --- a/src/flavor/flavor-describer.cpp +++ b/src/flavor/flavor-describer.cpp @@ -118,21 +118,39 @@ static void describe_chest(flavor_type *flavor_ptr) static void decide_tval_show(flavor_type *flavor_ptr) { - if (flavor_ptr->tr_flags.has(TR_SHOW_MODS)) { - flavor_ptr->show_weapon = true; + if (flavor_ptr->o_ptr->ac) { + flavor_ptr->show_armour = true; } +} - if (flavor_ptr->o_ptr->is_smith() && (Smith::object_effect(flavor_ptr->o_ptr) == SmithEffectType::SLAY_GLOVE)) { - flavor_ptr->show_weapon = true; +static bool should_show_slaying_bonus(const ItemEntity &item) +{ + if (object_flags(&item).has(TR_SHOW_MODS)) { + return true; } - if (flavor_ptr->o_ptr->to_h && flavor_ptr->o_ptr->to_d) { - flavor_ptr->show_weapon = true; + if (item.is_smith() && (Smith::object_effect(&item) == SmithEffectType::SLAY_GLOVE)) { + return true; } - if (flavor_ptr->o_ptr->ac) { - flavor_ptr->show_armour = true; + if ((item.to_h != 0) && (item.to_d != 0)) { + return true; } + + if (item.is_weapon_ammo()) { + return true; + } + + if (item.tval == ItemKindType::RING) { + const auto &baseitem = baseitems_info[item.bi_id]; + const auto base_has_no_bonus = (baseitem.to_h == 0) && (baseitem.to_d == 0); + const auto item_has_bonus = (item.to_h != 0) || (item.to_d != 0); + if (base_has_no_bonus && item_has_bonus) { + return true; + } + } + + return false; } static void describe_weapon_dice(PlayerType *player_ptr, flavor_type *flavor_ptr) @@ -214,7 +232,7 @@ static void describe_named_item_tval(flavor_type *flavor_ptr) return; } - if (flavor_ptr->show_weapon) { + if (should_show_slaying_bonus(*flavor_ptr->o_ptr)) { flavor_ptr->t = object_desc_chr(flavor_ptr->t, ' '); flavor_ptr->t = object_desc_chr(flavor_ptr->t, flavor_ptr->p1); flavor_ptr->t = object_desc_int(flavor_ptr->t, flavor_ptr->o_ptr->to_h); diff --git a/src/flavor/flavor-util.cpp b/src/flavor/flavor-util.cpp index 28e604ae9..ef9b664f7 100644 --- a/src/flavor/flavor-util.cpp +++ b/src/flavor/flavor-util.cpp @@ -24,7 +24,6 @@ flavor_type *initialize_flavor_type(flavor_type *flavor_ptr, char *buf, ItemEnti flavor_ptr->aware = false; flavor_ptr->known = false; flavor_ptr->flavor = true; - flavor_ptr->show_weapon = false; flavor_ptr->show_armour = false; flavor_ptr->p1 = '('; flavor_ptr->p2 = ')'; diff --git a/src/flavor/flavor-util.h b/src/flavor/flavor-util.h index bd129cf5f..a17d9573c 100644 --- a/src/flavor/flavor-util.h +++ b/src/flavor/flavor-util.h @@ -19,7 +19,6 @@ struct flavor_type { bool aware; bool known; // 鑑定 or *鑑定* 済. bool flavor; - bool show_weapon; bool show_armour; concptr s; concptr s0; diff --git a/src/flavor/tval-description-switcher.cpp b/src/flavor/tval-description-switcher.cpp index 60d998df4..bae6fffad 100644 --- a/src/flavor/tval-description-switcher.cpp +++ b/src/flavor/tval-description-switcher.cpp @@ -111,10 +111,6 @@ static void describe_ring(flavor_type *flavor_ptr) } else { flavor_ptr->basenm = _("#指輪", "& # Ring~"); } - - if (!flavor_ptr->k_ptr->to_h && !flavor_ptr->k_ptr->to_d && (flavor_ptr->o_ptr->to_h || flavor_ptr->o_ptr->to_d)) { - flavor_ptr->show_weapon = true; - } } static void describe_staff(flavor_type *flavor_ptr) @@ -368,7 +364,6 @@ void switch_tval_description(flavor_type *flavor_ptr) case ItemKindType::POLEARM: case ItemKindType::SWORD: case ItemKindType::DIGGING: - flavor_ptr->show_weapon = true; break; case ItemKindType::BOOTS: case ItemKindType::GLOVES: -- 2.11.0