From 5bbf36174f6b92a4496eea803fd8138ec50e5d12 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 21:42:20 +0900 Subject: [PATCH 1/9] [Refactor] #2403 Defined SwordEnchanter class --- .../Bakabakaband/Bakabakaband.vcxproj | 2 ++ .../Bakabakaband/Bakabakaband.vcxproj.filters | 8 +++++-- src/Makefile.am | 1 + .../weapon/apply-magic-sword.cpp | 20 ++++++++++++++++++ src/object-enchant/weapon/apply-magic-sword.h | 21 +++++++++++++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/object-enchant/weapon/apply-magic-sword.cpp create mode 100644 src/object-enchant/weapon/apply-magic-sword.h diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj index ed7f17621e..3727322d3d 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj @@ -284,6 +284,7 @@ + @@ -969,6 +970,7 @@ + diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters index 81b17a0897..9afbc8328d 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters @@ -2430,7 +2430,9 @@ object-enchant\protector - + + object-enchant\weapon + @@ -5284,7 +5286,9 @@ object-enchant\protector - + + object-enchant\weapon + diff --git a/src/Makefile.am b/src/Makefile.am index 8b8d72b689..0b376824dc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -622,6 +622,7 @@ hengband_SOURCES = \ object-enchant/protector/apply-magic-soft-armor.cpp object-enchant/protector/apply-magic-soft-armor.h \ \ object-enchant/weapon/abstract-weapon-enchanter.cpp object-enchant/weapon/abstract-weapon-enchanter.h \ + object-enchant/weapon/apply-magic-sword.cpp object-enchant/weapon/apply-magic-sword.h \ object-enchant/weapon/apply-magic-weapon.cpp object-enchant/weapon/apply-magic-weapon.h \ \ object-hook/hook-armor.cpp object-hook/hook-armor.h \ diff --git a/src/object-enchant/weapon/apply-magic-sword.cpp b/src/object-enchant/weapon/apply-magic-sword.cpp new file mode 100644 index 0000000000..2c525bc8a6 --- /dev/null +++ b/src/object-enchant/weapon/apply-magic-sword.cpp @@ -0,0 +1,20 @@ +/*! + * @brief 剣・鈍器・戦斧に耐性等の追加効果を付与する処理 + * @date 2022/03/11 + * @author Hourier + */ + +#include "object-enchant/weapon/apply-magic-sword.h" + +/*! + * @brief 剣・鈍器・戦斧強化クラスのコンストラクタ + * @param player_ptr プレイヤーへの参照ポインタ + * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ + * @param level 生成基準階 + * @param power 生成ランク + */ +SwordEnchanter::SwordEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power) + : AbstractWeaponEnchanter(o_ptr, level, power) + , player_ptr(player_ptr) +{ +} diff --git a/src/object-enchant/weapon/apply-magic-sword.h b/src/object-enchant/weapon/apply-magic-sword.h new file mode 100644 index 0000000000..4191623476 --- /dev/null +++ b/src/object-enchant/weapon/apply-magic-sword.h @@ -0,0 +1,21 @@ +#pragma once + +#include "object-enchant/weapon/abstract-weapon-enchanter.h" +#include "system/angband.h" + +class ObjectType; +class PlayerType; +class SwordEnchanter : AbstractWeaponEnchanter { +public: + SwordEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power); + void apply_magic() override{}; + +protected: + void sval_enchant() override{}; + void give_ego_index() override{}; + void give_high_ego_index() override{}; + void give_cursed() override{}; + +private: + PlayerType *player_ptr; +}; From 979ba4800529344b2652a52f2a22f7ee42b661ab Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 21:50:49 +0900 Subject: [PATCH 2/9] =?UTF-8?q?[Refactor]=20#2403=20WeaponEnchanter::apply?= =?UTF-8?q?=5Fmagic()=20=E3=81=AB=E3=81=82=E3=81=A3=E3=81=9F=E5=89=A3?= =?UTF-8?q?=E3=83=BB=E9=88=8D=E5=99=A8=E3=83=BB=E6=88=A6=E6=96=A7=E7=94=A8?= =?UTF-8?q?=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92SwordEnchanter::apply=5Fmag?= =?UTF-8?q?ic()=20=E3=81=AB=E7=A7=BB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/object-enchant/apply-magic.cpp | 8 +- .../weapon/apply-magic-sword.cpp | 88 +++++++++++++++++++ src/object-enchant/weapon/apply-magic-sword.h | 2 +- .../weapon/apply-magic-weapon.cpp | 77 ---------------- 4 files changed, 92 insertions(+), 83 deletions(-) diff --git a/src/object-enchant/apply-magic.cpp b/src/object-enchant/apply-magic.cpp index c288101edf..4196a6fcb2 100644 --- a/src/object-enchant/apply-magic.cpp +++ b/src/object-enchant/apply-magic.cpp @@ -31,6 +31,7 @@ #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" +#include "object-enchant/weapon/apply-magic-sword.h" #include "object-enchant/weapon/apply-magic-weapon.h" #include "object/object-kind.h" #include "player/player-status-flags.h" @@ -138,19 +139,16 @@ void apply_magic_to_object(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH lev, // @todo ファクトリパターンで抽象化する. switch (o_ptr->tval) { case ItemKindType::DIGGING: - case ItemKindType::HAFTED: case ItemKindType::BOW: case ItemKindType::SHOT: case ItemKindType::ARROW: case ItemKindType::BOLT: WeaponEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); break; + case ItemKindType::HAFTED: case ItemKindType::POLEARM: - WeaponEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); - break; case ItemKindType::SWORD: - // @todo いずれSwordEnchanter等作って分離する. - WeaponEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); + SwordEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); break; case ItemKindType::SHIELD: ShieldEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); diff --git a/src/object-enchant/weapon/apply-magic-sword.cpp b/src/object-enchant/weapon/apply-magic-sword.cpp index 2c525bc8a6..2f2134d3bf 100644 --- a/src/object-enchant/weapon/apply-magic-sword.cpp +++ b/src/object-enchant/weapon/apply-magic-sword.cpp @@ -5,6 +5,15 @@ */ #include "object-enchant/weapon/apply-magic-sword.h" +#include "artifact/random-art-generator.h" +#include "floor/floor-base-definitions.h" +#include "inventory/inventory-slot-types.h" +#include "object-enchant/object-boost.h" +#include "object/tval-types.h" +#include "sv-definition/sv-weapon-types.h" +#include "system/object-type-definition.h" +#include "system/player-type-definition.h" +#include "view/display-messages.h" /*! * @brief 剣・鈍器・戦斧強化クラスのコンストラクタ @@ -18,3 +27,82 @@ SwordEnchanter::SwordEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH , player_ptr(player_ptr) { } + +void SwordEnchanter::apply_magic() +{ + if (this->should_skip) { + return; + } + + if (this->power > 1) { + if ((this->power > 2) || one_in_(40)) { + become_random_artifact(this->player_ptr, this->o_ptr, false); + return; + } + + while (true) { + this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, true); + if (this->o_ptr->ego_idx == EgoType::SHARPNESS && this->o_ptr->tval != ItemKindType::SWORD) { + continue; + } + + if (this->o_ptr->ego_idx == EgoType::EARTHQUAKES && this->o_ptr->tval != ItemKindType::HAFTED) { + continue; + } + + break; + } + + switch (this->o_ptr->ego_idx) { + case EgoType::SHARPNESS: + this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(5, this->level) + 1; + break; + case EgoType::EARTHQUAKES: + if (one_in_(3) && (this->level > 60)) { + this->o_ptr->art_flags.set(TR_BLOWS); + } else { + this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(3, this->level); + } + + break; + default: + break; + } + + if (!this->o_ptr->art_name) { + while (one_in_(10L * this->o_ptr->dd * this->o_ptr->ds)) { + this->o_ptr->dd++; + } + + if (this->o_ptr->dd > 9) { + this->o_ptr->dd = 9; + } + } + + return; + } + + if (this->power < -1) { + if (randint0(MAX_DEPTH) < this->level) { + auto n = 0; + while (true) { + this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, false); + if (this->o_ptr->ego_idx == EgoType::WEIRD && this->o_ptr->tval != ItemKindType::SWORD) { + continue; + } + + auto *e_ptr = &e_info[this->o_ptr->ego_idx]; + if (this->o_ptr->tval == ItemKindType::SWORD && this->o_ptr->sval == SV_HAYABUSA && e_ptr->max_pval < 0) { + if (++n > 1000) { + msg_print(_("エラー:隼の剣に割り当てるエゴ無し", "Error: Cannot find for Hayabusa.")); + return; + } + + continue; + } + + break; + } + } + } +} diff --git a/src/object-enchant/weapon/apply-magic-sword.h b/src/object-enchant/weapon/apply-magic-sword.h index 4191623476..26eea806c2 100644 --- a/src/object-enchant/weapon/apply-magic-sword.h +++ b/src/object-enchant/weapon/apply-magic-sword.h @@ -8,7 +8,7 @@ class PlayerType; class SwordEnchanter : AbstractWeaponEnchanter { public: SwordEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power); - void apply_magic() override{}; + void apply_magic() override; protected: void sval_enchant() override{}; diff --git a/src/object-enchant/weapon/apply-magic-weapon.cpp b/src/object-enchant/weapon/apply-magic-weapon.cpp index 820ea05060..add4f746d3 100644 --- a/src/object-enchant/weapon/apply-magic-weapon.cpp +++ b/src/object-enchant/weapon/apply-magic-weapon.cpp @@ -58,83 +58,6 @@ void WeaponEnchanter::apply_magic() break; } - case ItemKindType::HAFTED: - case ItemKindType::POLEARM: - case ItemKindType::SWORD: { - if (this->power > 1) { - if ((this->power > 2) || one_in_(40)) { - become_random_artifact(this->player_ptr, this->o_ptr, false); - break; - } - - while (true) { - this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, true); - if (this->o_ptr->ego_idx == EgoType::SHARPNESS && this->o_ptr->tval != ItemKindType::SWORD) { - continue; - } - - if (this->o_ptr->ego_idx == EgoType::EARTHQUAKES && this->o_ptr->tval != ItemKindType::HAFTED) { - continue; - } - - break; - } - - switch (this->o_ptr->ego_idx) { - case EgoType::SHARPNESS: - this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(5, this->level) + 1; - break; - case EgoType::EARTHQUAKES: - if (one_in_(3) && (this->level > 60)) { - this->o_ptr->art_flags.set(TR_BLOWS); - } else { - this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(3, this->level); - } - - break; - default: - break; - } - - if (!this->o_ptr->art_name) { - while (one_in_(10L * this->o_ptr->dd * this->o_ptr->ds)) { - this->o_ptr->dd++; - } - - if (this->o_ptr->dd > 9) { - this->o_ptr->dd = 9; - } - } - - break; - } - - if (this->power < -1) { - if (randint0(MAX_DEPTH) < this->level) { - auto n = 0; - while (true) { - this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, false); - if (this->o_ptr->ego_idx == EgoType::WEIRD && this->o_ptr->tval != ItemKindType::SWORD) { - continue; - } - - auto *e_ptr = &e_info[this->o_ptr->ego_idx]; - if (this->o_ptr->tval == ItemKindType::SWORD && this->o_ptr->sval == SV_HAYABUSA && e_ptr->max_pval < 0) { - if (++n > 1000) { - msg_print(_("エラー:隼の剣に割り当てるエゴ無し", "Error: Cannot find for Hayabusa.")); - return; - } - - continue; - } - - break; - } - } - } - - break; - } case ItemKindType::BOW: { if (this->power > 1) { if ((this->power > 2) || one_in_(20)) { From d3820200090fa871b2c19555fc83e5d07759a2dc Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 21:58:41 +0900 Subject: [PATCH 3/9] [Refactor] #2403 Separated give_ego_index() from apply_magic() --- .../weapon/apply-magic-sword.cpp | 62 ++++++++++--------- src/object-enchant/weapon/apply-magic-sword.h | 2 +- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/object-enchant/weapon/apply-magic-sword.cpp b/src/object-enchant/weapon/apply-magic-sword.cpp index 2f2134d3bf..0c64ee6670 100644 --- a/src/object-enchant/weapon/apply-magic-sword.cpp +++ b/src/object-enchant/weapon/apply-magic-sword.cpp @@ -40,35 +40,7 @@ void SwordEnchanter::apply_magic() return; } - while (true) { - this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, true); - if (this->o_ptr->ego_idx == EgoType::SHARPNESS && this->o_ptr->tval != ItemKindType::SWORD) { - continue; - } - - if (this->o_ptr->ego_idx == EgoType::EARTHQUAKES && this->o_ptr->tval != ItemKindType::HAFTED) { - continue; - } - - break; - } - - switch (this->o_ptr->ego_idx) { - case EgoType::SHARPNESS: - this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(5, this->level) + 1; - break; - case EgoType::EARTHQUAKES: - if (one_in_(3) && (this->level > 60)) { - this->o_ptr->art_flags.set(TR_BLOWS); - } else { - this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(3, this->level); - } - - break; - default: - break; - } - + this->give_ego_index(); if (!this->o_ptr->art_name) { while (one_in_(10L * this->o_ptr->dd * this->o_ptr->ds)) { this->o_ptr->dd++; @@ -106,3 +78,35 @@ void SwordEnchanter::apply_magic() } } } + +void SwordEnchanter::give_ego_index() +{ + while (true) { + this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, true); + if (this->o_ptr->ego_idx == EgoType::SHARPNESS && this->o_ptr->tval != ItemKindType::SWORD) { + continue; + } + + if (this->o_ptr->ego_idx == EgoType::EARTHQUAKES && this->o_ptr->tval != ItemKindType::HAFTED) { + continue; + } + + break; + } + + switch (this->o_ptr->ego_idx) { + case EgoType::SHARPNESS: + this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(5, this->level) + 1; + break; + case EgoType::EARTHQUAKES: + if (one_in_(3) && (this->level > 60)) { + this->o_ptr->art_flags.set(TR_BLOWS); + } else { + this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(3, this->level); + } + + break; + default: + break; + } +} diff --git a/src/object-enchant/weapon/apply-magic-sword.h b/src/object-enchant/weapon/apply-magic-sword.h index 26eea806c2..f7abcf049b 100644 --- a/src/object-enchant/weapon/apply-magic-sword.h +++ b/src/object-enchant/weapon/apply-magic-sword.h @@ -12,7 +12,7 @@ class SwordEnchanter : AbstractWeaponEnchanter { protected: void sval_enchant() override{}; - void give_ego_index() override{}; + void give_ego_index() override; void give_high_ego_index() override{}; void give_cursed() override{}; From 118cb6fca336cf0701bf1a9ada081cef353e26dd Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 22:01:28 +0900 Subject: [PATCH 4/9] [Refactor] #2403 Separated give_cursed() from apply_magic() --- .../weapon/apply-magic-sword.cpp | 49 +++++++++++-------- src/object-enchant/weapon/apply-magic-sword.h | 2 +- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/object-enchant/weapon/apply-magic-sword.cpp b/src/object-enchant/weapon/apply-magic-sword.cpp index 0c64ee6670..27cad048ae 100644 --- a/src/object-enchant/weapon/apply-magic-sword.cpp +++ b/src/object-enchant/weapon/apply-magic-sword.cpp @@ -55,27 +55,7 @@ void SwordEnchanter::apply_magic() } if (this->power < -1) { - if (randint0(MAX_DEPTH) < this->level) { - auto n = 0; - while (true) { - this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, false); - if (this->o_ptr->ego_idx == EgoType::WEIRD && this->o_ptr->tval != ItemKindType::SWORD) { - continue; - } - - auto *e_ptr = &e_info[this->o_ptr->ego_idx]; - if (this->o_ptr->tval == ItemKindType::SWORD && this->o_ptr->sval == SV_HAYABUSA && e_ptr->max_pval < 0) { - if (++n > 1000) { - msg_print(_("エラー:隼の剣に割り当てるエゴ無し", "Error: Cannot find for Hayabusa.")); - return; - } - - continue; - } - - break; - } - } + this->give_cursed(); } } @@ -110,3 +90,30 @@ void SwordEnchanter::give_ego_index() break; } } + +void SwordEnchanter::give_cursed() +{ + if (randint0(MAX_DEPTH) >= this->level) { + return; + } + + auto n = 0; + while (true) { + this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, false); + if ((this->o_ptr->ego_idx == EgoType::WEIRD) && (this->o_ptr->tval != ItemKindType::SWORD)) { + continue; + } + + auto *e_ptr = &e_info[this->o_ptr->ego_idx]; + if ((this->o_ptr->tval == ItemKindType::SWORD) && (this->o_ptr->sval == SV_HAYABUSA) && (e_ptr->max_pval < 0)) { + if (++n > 1000) { + msg_print(_("エラー:隼の剣に割り当てるエゴ無し", "Error: Cannot find for Hayabusa.")); + return; + } + + continue; + } + + break; + } +} diff --git a/src/object-enchant/weapon/apply-magic-sword.h b/src/object-enchant/weapon/apply-magic-sword.h index f7abcf049b..3e0b0a78e6 100644 --- a/src/object-enchant/weapon/apply-magic-sword.h +++ b/src/object-enchant/weapon/apply-magic-sword.h @@ -14,7 +14,7 @@ class SwordEnchanter : AbstractWeaponEnchanter { void sval_enchant() override{}; void give_ego_index() override; void give_high_ego_index() override{}; - void give_cursed() override{}; + void give_cursed() override; private: PlayerType *player_ptr; From 07e2d3393505a0c496dc7a050e129de78a958b0c Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 22:04:21 +0900 Subject: [PATCH 5/9] [Refactor] #2403 Reshaped SwordEnchanter --- .../weapon/apply-magic-sword.cpp | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/object-enchant/weapon/apply-magic-sword.cpp b/src/object-enchant/weapon/apply-magic-sword.cpp index 27cad048ae..4e61e052fc 100644 --- a/src/object-enchant/weapon/apply-magic-sword.cpp +++ b/src/object-enchant/weapon/apply-magic-sword.cpp @@ -2,6 +2,7 @@ * @brief 剣・鈍器・戦斧に耐性等の追加効果を付与する処理 * @date 2022/03/11 * @author Hourier + * @details give_ego_index() を中心に、剣と鈍器はまだ分ける余地はあるが、これ以上分割しても煩雑なだけになりそうなので保留. */ #include "object-enchant/weapon/apply-magic-sword.h" @@ -28,6 +29,10 @@ SwordEnchanter::SwordEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH { } +/*! + * @brief 剣・鈍器・戦斧系オブジェクトに生成ランクごとの強化を与えるサブルーチン + * @details power > 2はデバッグ専用. + */ void SwordEnchanter::apply_magic() { if (this->should_skip) { @@ -41,14 +46,16 @@ void SwordEnchanter::apply_magic() } this->give_ego_index(); - if (!this->o_ptr->art_name) { - while (one_in_(10L * this->o_ptr->dd * this->o_ptr->ds)) { - this->o_ptr->dd++; - } - - if (this->o_ptr->dd > 9) { - this->o_ptr->dd = 9; - } + if (this->o_ptr->art_name > 0) { + return; + } + + while (one_in_(10 * this->o_ptr->dd * this->o_ptr->ds)) { + this->o_ptr->dd++; + } + + if (this->o_ptr->dd > 9) { + this->o_ptr->dd = 9; } return; @@ -76,13 +83,13 @@ void SwordEnchanter::give_ego_index() switch (this->o_ptr->ego_idx) { case EgoType::SHARPNESS: - this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(5, this->level) + 1; + this->o_ptr->pval = static_cast(m_bonus(5, this->level) + 1); break; case EgoType::EARTHQUAKES: if (one_in_(3) && (this->level > 60)) { this->o_ptr->art_flags.set(TR_BLOWS); } else { - this->o_ptr->pval = (PARAMETER_VALUE)m_bonus(3, this->level); + this->o_ptr->pval = static_cast(m_bonus(3, this->level)); } break; @@ -104,16 +111,16 @@ void SwordEnchanter::give_cursed() continue; } - auto *e_ptr = &e_info[this->o_ptr->ego_idx]; - if ((this->o_ptr->tval == ItemKindType::SWORD) && (this->o_ptr->sval == SV_HAYABUSA) && (e_ptr->max_pval < 0)) { - if (++n > 1000) { - msg_print(_("エラー:隼の剣に割り当てるエゴ無し", "Error: Cannot find for Hayabusa.")); - return; - } + const auto *e_ptr = &e_info[this->o_ptr->ego_idx]; + if ((this->o_ptr->tval != ItemKindType::SWORD) || (this->o_ptr->sval != SV_HAYABUSA) || (e_ptr->max_pval >= 0)) { + return; + } - continue; + if (++n > 1000) { + msg_print(_("エラー:隼の剣に割り当てるエゴ無し", "Error: Cannot find for Hayabusa.")); + return; } - break; + continue; } } From 9fa65471959879f2502d3351288977d45f84e3e8 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 22:07:22 +0900 Subject: [PATCH 6/9] [Refactor] #2403 Separated strengthen() from apply_magic() --- .../weapon/apply-magic-sword.cpp | 40 ++++++++++--------- src/object-enchant/weapon/apply-magic-sword.h | 2 + 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/object-enchant/weapon/apply-magic-sword.cpp b/src/object-enchant/weapon/apply-magic-sword.cpp index 4e61e052fc..14115e0b81 100644 --- a/src/object-enchant/weapon/apply-magic-sword.cpp +++ b/src/object-enchant/weapon/apply-magic-sword.cpp @@ -40,24 +40,7 @@ void SwordEnchanter::apply_magic() } if (this->power > 1) { - if ((this->power > 2) || one_in_(40)) { - become_random_artifact(this->player_ptr, this->o_ptr, false); - return; - } - - this->give_ego_index(); - if (this->o_ptr->art_name > 0) { - return; - } - - while (one_in_(10 * this->o_ptr->dd * this->o_ptr->ds)) { - this->o_ptr->dd++; - } - - if (this->o_ptr->dd > 9) { - this->o_ptr->dd = 9; - } - + this->strengthen(); return; } @@ -124,3 +107,24 @@ void SwordEnchanter::give_cursed() continue; } } + +void SwordEnchanter::strengthen() +{ + if ((this->power > 2) || one_in_(40)) { + become_random_artifact(this->player_ptr, this->o_ptr, false); + return; + } + + this->give_ego_index(); + if (this->o_ptr->art_name > 0) { + return; + } + + while (one_in_(10 * this->o_ptr->dd * this->o_ptr->ds)) { + this->o_ptr->dd++; + } + + if (this->o_ptr->dd > 9) { + this->o_ptr->dd = 9; + } +} diff --git a/src/object-enchant/weapon/apply-magic-sword.h b/src/object-enchant/weapon/apply-magic-sword.h index 3e0b0a78e6..5d77fd2a12 100644 --- a/src/object-enchant/weapon/apply-magic-sword.h +++ b/src/object-enchant/weapon/apply-magic-sword.h @@ -18,4 +18,6 @@ class SwordEnchanter : AbstractWeaponEnchanter { private: PlayerType *player_ptr; + + void strengthen(); }; From 4cc6b7db8a7533ed48b4d8c40cb0365f68f89c90 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 22:45:36 +0900 Subject: [PATCH 7/9] [Refactor] #2403 Separated apply-magic-digging.cpp/h from apply-magic.cpp --- .../Bakabakaband/Bakabakaband.vcxproj | 2 + .../Bakabakaband/Bakabakaband.vcxproj.filters | 6 +++ src/Makefile.am | 1 + src/object-enchant/apply-magic.cpp | 3 ++ .../weapon/apply-magic-digging.cpp | 54 +++++++++++++++++++ .../weapon/apply-magic-digging.h | 21 ++++++++ .../weapon/apply-magic-weapon.cpp | 15 ------ 7 files changed, 87 insertions(+), 15 deletions(-) create mode 100644 src/object-enchant/weapon/apply-magic-digging.cpp create mode 100644 src/object-enchant/weapon/apply-magic-digging.h diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj index 3727322d3d..cf4b27e6ab 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj @@ -284,6 +284,7 @@ + @@ -970,6 +971,7 @@ + diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters index 9afbc8328d..6159d76bc6 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters @@ -2433,6 +2433,9 @@ object-enchant\weapon + + object-enchant\weapon + @@ -5289,6 +5292,9 @@ object-enchant\weapon + + object-enchant\weapon + diff --git a/src/Makefile.am b/src/Makefile.am index 0b376824dc..890119fcfd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -622,6 +622,7 @@ hengband_SOURCES = \ object-enchant/protector/apply-magic-soft-armor.cpp object-enchant/protector/apply-magic-soft-armor.h \ \ object-enchant/weapon/abstract-weapon-enchanter.cpp object-enchant/weapon/abstract-weapon-enchanter.h \ + object-enchant/weapon/apply-magic-digging.cpp object-enchant/weapon/apply-magic-digging.h \ object-enchant/weapon/apply-magic-sword.cpp object-enchant/weapon/apply-magic-sword.h \ object-enchant/weapon/apply-magic-weapon.cpp object-enchant/weapon/apply-magic-weapon.h \ \ diff --git a/src/object-enchant/apply-magic.cpp b/src/object-enchant/apply-magic.cpp index 4196a6fcb2..eeef97128f 100644 --- a/src/object-enchant/apply-magic.cpp +++ b/src/object-enchant/apply-magic.cpp @@ -31,6 +31,7 @@ #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" +#include "object-enchant/weapon/apply-magic-digging.h" #include "object-enchant/weapon/apply-magic-sword.h" #include "object-enchant/weapon/apply-magic-weapon.h" #include "object/object-kind.h" @@ -139,6 +140,8 @@ void apply_magic_to_object(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH lev, // @todo ファクトリパターンで抽象化する. switch (o_ptr->tval) { case ItemKindType::DIGGING: + DiggingEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); + break; case ItemKindType::BOW: case ItemKindType::SHOT: case ItemKindType::ARROW: diff --git a/src/object-enchant/weapon/apply-magic-digging.cpp b/src/object-enchant/weapon/apply-magic-digging.cpp new file mode 100644 index 0000000000..663efa83f1 --- /dev/null +++ b/src/object-enchant/weapon/apply-magic-digging.cpp @@ -0,0 +1,54 @@ +/*! + * @brief 掘削武器に耐性等の追加効果を付与する処理 + * @date 2022/03/11 + * @author Hourier + */ + +#include "object-enchant/weapon/apply-magic-digging.h" +#include "artifact/random-art-generator.h" +#include "system/object-type-definition.h" +#include "system/player-type-definition.h" + +/*! + * @brief 掘削武器強化クラスのコンストラクタ + * @param player_ptr プレイヤーへの参照ポインタ + * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ + * @param level 生成基準階 + * @param power 生成ランク + */ +DiggingEnchanter::DiggingEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power) + : AbstractWeaponEnchanter(o_ptr, level, power) + , player_ptr(player_ptr) +{ +} + +/*! + * @brief 掘削武器に生成ランクごとの強化を与えるサブルーチン + * @details power > 2はデバッグ専用. + */ +void DiggingEnchanter::apply_magic() +{ + if (this->should_skip) { + return; + } + + if (this->power > 1) { + if ((this->power > 2) || one_in_(30)) { + become_random_artifact(this->player_ptr, this->o_ptr, false); + } else { + this->o_ptr->ego_idx = EgoType::DIGGING; + } + + return; + } + + if (this->power < -1) { + this->o_ptr->pval = 0 - (5 + randint1(5)); + return; + } + + if (this->power < 0) { + this->o_ptr->pval = 0 - (this->o_ptr->pval); + return; + } +} diff --git a/src/object-enchant/weapon/apply-magic-digging.h b/src/object-enchant/weapon/apply-magic-digging.h new file mode 100644 index 0000000000..72d93a223e --- /dev/null +++ b/src/object-enchant/weapon/apply-magic-digging.h @@ -0,0 +1,21 @@ +#pragma once + +#include "object-enchant/weapon/abstract-weapon-enchanter.h" +#include "system/angband.h" + +class ObjectType; +class PlayerType; +class DiggingEnchanter : AbstractWeaponEnchanter { +public: + DiggingEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power); + void apply_magic() override; + +protected: + void sval_enchant() override{}; + void give_ego_index() override{}; + void give_high_ego_index() override{}; + void give_cursed() override{}; + +private: + PlayerType *player_ptr; +}; diff --git a/src/object-enchant/weapon/apply-magic-weapon.cpp b/src/object-enchant/weapon/apply-magic-weapon.cpp index add4f746d3..7323862df5 100644 --- a/src/object-enchant/weapon/apply-magic-weapon.cpp +++ b/src/object-enchant/weapon/apply-magic-weapon.cpp @@ -43,21 +43,6 @@ void WeaponEnchanter::apply_magic() } switch (this->o_ptr->tval) { - case ItemKindType::DIGGING: { - if (this->power > 1) { - if ((this->power > 2) || one_in_(30)) { - become_random_artifact(this->player_ptr, this->o_ptr, false); - } else { - this->o_ptr->ego_idx = EgoType::DIGGING; - } - } else if (this->power < -1) { - this->o_ptr->pval = 0 - (5 + randint1(5)); - } else if (this->power < 0) { - this->o_ptr->pval = 0 - (this->o_ptr->pval); - } - - break; - } case ItemKindType::BOW: { if (this->power > 1) { if ((this->power > 2) || one_in_(20)) { From ce1e15d99ff957c3dff82ec9fca8cbf5cce6a620 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 22:51:57 +0900 Subject: [PATCH 8/9] [Refactor] #2403 Separated apply-magic-arrow.cpp/h from apply-magic.cpp --- .../Bakabakaband/Bakabakaband.vcxproj | 2 + .../Bakabakaband/Bakabakaband.vcxproj.filters | 6 ++ src/Makefile.am | 1 + src/object-enchant/apply-magic.cpp | 5 +- .../weapon/apply-magic-arrow.cpp | 60 +++++++++++++++++++ src/object-enchant/weapon/apply-magic-arrow.h | 21 +++++++ .../weapon/apply-magic-weapon.cpp | 47 ++------------- 7 files changed, 99 insertions(+), 43 deletions(-) create mode 100644 src/object-enchant/weapon/apply-magic-arrow.cpp create mode 100644 src/object-enchant/weapon/apply-magic-arrow.h diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj index cf4b27e6ab..378087a6d1 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj @@ -284,6 +284,7 @@ + @@ -971,6 +972,7 @@ + diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters index 6159d76bc6..d399892c5e 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters @@ -2436,6 +2436,9 @@ object-enchant\weapon + + object-enchant\weapon + @@ -5295,6 +5298,9 @@ object-enchant\weapon + + object-enchant\weapon + diff --git a/src/Makefile.am b/src/Makefile.am index 890119fcfd..3f08942589 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -622,6 +622,7 @@ hengband_SOURCES = \ object-enchant/protector/apply-magic-soft-armor.cpp object-enchant/protector/apply-magic-soft-armor.h \ \ object-enchant/weapon/abstract-weapon-enchanter.cpp object-enchant/weapon/abstract-weapon-enchanter.h \ + object-enchant/weapon/apply-magic-arrow.cpp object-enchant/weapon/apply-magic-arrow.h \ object-enchant/weapon/apply-magic-digging.cpp object-enchant/weapon/apply-magic-digging.h \ object-enchant/weapon/apply-magic-sword.cpp object-enchant/weapon/apply-magic-sword.h \ object-enchant/weapon/apply-magic-weapon.cpp object-enchant/weapon/apply-magic-weapon.h \ diff --git a/src/object-enchant/apply-magic.cpp b/src/object-enchant/apply-magic.cpp index eeef97128f..de6a899dd7 100644 --- a/src/object-enchant/apply-magic.cpp +++ b/src/object-enchant/apply-magic.cpp @@ -31,6 +31,7 @@ #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" +#include "object-enchant/weapon/apply-magic-arrow.h" #include "object-enchant/weapon/apply-magic-digging.h" #include "object-enchant/weapon/apply-magic-sword.h" #include "object-enchant/weapon/apply-magic-weapon.h" @@ -143,10 +144,12 @@ void apply_magic_to_object(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH lev, DiggingEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); break; case ItemKindType::BOW: + WeaponEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); + break; case ItemKindType::SHOT: case ItemKindType::ARROW: case ItemKindType::BOLT: - WeaponEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); + ArrowEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); break; case ItemKindType::HAFTED: case ItemKindType::POLEARM: diff --git a/src/object-enchant/weapon/apply-magic-arrow.cpp b/src/object-enchant/weapon/apply-magic-arrow.cpp new file mode 100644 index 0000000000..cd1bed499f --- /dev/null +++ b/src/object-enchant/weapon/apply-magic-arrow.cpp @@ -0,0 +1,60 @@ +/*! + * @brief 矢類のアイテムを強化する処理 + * @date 2022/03/11 + * @author Hourier + */ + +#include "object-enchant/weapon/apply-magic-arrow.h" +#include "artifact/random-art-generator.h" +#include "floor/floor-base-definitions.h" +#include "inventory/inventory-slot-types.h" +#include "system/object-type-definition.h" +#include "system/player-type-definition.h" + +/*! + * @brief 矢類強化クラスのコンストラクタ + * @param player_ptr プレイヤーへの参照ポインタ + * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ + * @param level 生成基準階 + * @param power 生成ランク + */ +ArrowEnchanter::ArrowEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power) + : AbstractWeaponEnchanter(o_ptr, level, power) + , player_ptr(player_ptr) +{ +} + +/*! + * @brief 矢類に生成ランクごとの強化を与えるサブルーチン + * @details power > 2はデバッグ専用. + */ +void ArrowEnchanter::apply_magic() +{ + if (this->should_skip) { + return; + } + + if (this->power > 1) { + if (this->power > 2) { + become_random_artifact(this->player_ptr, this->o_ptr, false); + return; + } + + this->o_ptr->ego_idx = get_random_ego(INVEN_AMMO, true); + while (one_in_(10 * this->o_ptr->dd * this->o_ptr->ds)) { + this->o_ptr->dd++; + } + + if (this->o_ptr->dd > 9) { + this->o_ptr->dd = 9; + } + + return; + } + + if (this->power < -1) { + if (randint0(MAX_DEPTH) < this->level) { + this->o_ptr->ego_idx = get_random_ego(INVEN_AMMO, false); + } + } +} diff --git a/src/object-enchant/weapon/apply-magic-arrow.h b/src/object-enchant/weapon/apply-magic-arrow.h new file mode 100644 index 0000000000..fabeaf53a0 --- /dev/null +++ b/src/object-enchant/weapon/apply-magic-arrow.h @@ -0,0 +1,21 @@ +#pragma once + +#include "object-enchant/weapon/abstract-weapon-enchanter.h" +#include "system/angband.h" + +class ObjectType; +class PlayerType; +class ArrowEnchanter : AbstractWeaponEnchanter { +public: + ArrowEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power); + void apply_magic() override; + +protected: + void sval_enchant() override{}; + void give_ego_index() override{}; + void give_high_ego_index() override{}; + void give_cursed() override{}; + +private: + PlayerType *player_ptr; +}; diff --git a/src/object-enchant/weapon/apply-magic-weapon.cpp b/src/object-enchant/weapon/apply-magic-weapon.cpp index 7323862df5..ac4c8fb841 100644 --- a/src/object-enchant/weapon/apply-magic-weapon.cpp +++ b/src/object-enchant/weapon/apply-magic-weapon.cpp @@ -42,49 +42,12 @@ void WeaponEnchanter::apply_magic() return; } - switch (this->o_ptr->tval) { - case ItemKindType::BOW: { - if (this->power > 1) { - if ((this->power > 2) || one_in_(20)) { - become_random_artifact(this->player_ptr, this->o_ptr, false); - break; - } - - this->o_ptr->ego_idx = get_random_ego(INVEN_BOW, true); - } - - break; - } - case ItemKindType::BOLT: - case ItemKindType::ARROW: - case ItemKindType::SHOT: { - if (this->power > 1) { - if (this->power > 2) { - become_random_artifact(this->player_ptr, this->o_ptr, false); - break; - } - - this->o_ptr->ego_idx = get_random_ego(INVEN_AMMO, true); - while (one_in_(10L * this->o_ptr->dd * this->o_ptr->ds)) { - this->o_ptr->dd++; - } - - if (this->o_ptr->dd > 9) { - this->o_ptr->dd = 9; - } - - break; + if (this->power > 1) { + if ((this->power > 2) || one_in_(20)) { + become_random_artifact(this->player_ptr, this->o_ptr, false); + return; } - if (this->power < -1) { - if (randint0(MAX_DEPTH) < this->level) { - this->o_ptr->ego_idx = get_random_ego(INVEN_AMMO, false); - } - } - - break; - } - default: - break; + this->o_ptr->ego_idx = get_random_ego(INVEN_BOW, true); } } From 0d55cd9839c6e874e38969e2afbde1905f19b616 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 11 Mar 2022 22:55:46 +0900 Subject: [PATCH 9/9] [Refactor] #2403 Renamed WeaponEnchanter to BowEnchanter --- .../Bakabakaband/Bakabakaband.vcxproj | 4 ++-- .../Bakabakaband/Bakabakaband.vcxproj.filters | 4 ++-- src/Makefile.am | 2 +- src/object-enchant/apply-magic.cpp | 4 ++-- ...y-magic-weapon.cpp => apply-magic-bow.cpp} | 23 ++++++------------- ...apply-magic-weapon.h => apply-magic-bow.h} | 4 ++-- 6 files changed, 16 insertions(+), 25 deletions(-) rename src/object-enchant/weapon/{apply-magic-weapon.cpp => apply-magic-bow.cpp} (53%) rename src/object-enchant/weapon/{apply-magic-weapon.h => apply-magic-bow.h} (73%) diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj index 378087a6d1..e561dfd08a 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj @@ -688,7 +688,7 @@ - + @@ -1490,7 +1490,7 @@ - + diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters index d399892c5e..7f917d77a0 100644 --- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters +++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters @@ -2352,7 +2352,7 @@ object-enchant\weapon - + object-enchant\weapon @@ -5193,7 +5193,7 @@ object-enchant\weapon - + object-enchant\weapon diff --git a/src/Makefile.am b/src/Makefile.am index 3f08942589..bad1d1e74c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -623,9 +623,9 @@ hengband_SOURCES = \ \ object-enchant/weapon/abstract-weapon-enchanter.cpp object-enchant/weapon/abstract-weapon-enchanter.h \ object-enchant/weapon/apply-magic-arrow.cpp object-enchant/weapon/apply-magic-arrow.h \ + object-enchant/weapon/apply-magic-bow.cpp object-enchant/weapon/apply-magic-bow.h \ object-enchant/weapon/apply-magic-digging.cpp object-enchant/weapon/apply-magic-digging.h \ object-enchant/weapon/apply-magic-sword.cpp object-enchant/weapon/apply-magic-sword.h \ - object-enchant/weapon/apply-magic-weapon.cpp object-enchant/weapon/apply-magic-weapon.h \ \ object-hook/hook-armor.cpp object-hook/hook-armor.h \ object-hook/hook-expendable.cpp object-hook/hook-expendable.h \ diff --git a/src/object-enchant/apply-magic.cpp b/src/object-enchant/apply-magic.cpp index de6a899dd7..86a29cf89c 100644 --- a/src/object-enchant/apply-magic.cpp +++ b/src/object-enchant/apply-magic.cpp @@ -32,9 +32,9 @@ #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" #include "object-enchant/weapon/apply-magic-arrow.h" +#include "object-enchant/weapon/apply-magic-bow.h" #include "object-enchant/weapon/apply-magic-digging.h" #include "object-enchant/weapon/apply-magic-sword.h" -#include "object-enchant/weapon/apply-magic-weapon.h" #include "object/object-kind.h" #include "player/player-status-flags.h" #include "sv-definition/sv-armor-types.h" @@ -144,7 +144,7 @@ void apply_magic_to_object(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH lev, DiggingEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); break; case ItemKindType::BOW: - WeaponEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); + BowEnchanter(player_ptr, o_ptr, lev, power).apply_magic(); break; case ItemKindType::SHOT: case ItemKindType::ARROW: diff --git a/src/object-enchant/weapon/apply-magic-weapon.cpp b/src/object-enchant/weapon/apply-magic-bow.cpp similarity index 53% rename from src/object-enchant/weapon/apply-magic-weapon.cpp rename to src/object-enchant/weapon/apply-magic-bow.cpp index ac4c8fb841..530327fe22 100644 --- a/src/object-enchant/weapon/apply-magic-weapon.cpp +++ b/src/object-enchant/weapon/apply-magic-bow.cpp @@ -1,42 +1,33 @@ /*! - * @brief 武器系のアイテムを強化する処理 - * @date 2022/01/30 + * @brief 弓系のアイテムを強化する処理 + * @date 2022/03/11 * @author Hourier */ -#include "object-enchant/weapon/apply-magic-weapon.h" +#include "object-enchant/weapon/apply-magic-bow.h" #include "artifact/random-art-generator.h" #include "inventory/inventory-slot-types.h" -#include "object-enchant/object-boost.h" -#include "object-enchant/object-ego.h" -#include "object-enchant/tr-types.h" -#include "object-enchant/trc-types.h" -#include "object/tval-types.h" -#include "sv-definition/sv-weapon-types.h" -#include "system/floor-type-definition.h" #include "system/object-type-definition.h" -#include "util/bit-flags-calculator.h" -#include "view/display-messages.h" /*! - * @brief 武器強化クラスのコンストラクタ + * @brief 弓強化クラスのコンストラクタ * @param player_ptr プレイヤーへの参照ポインタ * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ * @param level 生成基準階 * @param power 生成ランク */ -WeaponEnchanter::WeaponEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power) +BowEnchanter::BowEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power) : AbstractWeaponEnchanter(o_ptr, level, power) , player_ptr(player_ptr) { } /*! - * @brief 武器系オブジェクトに生成ランクごとの強化を与えるサブルーチン + * @brief 弓系オブジェクトに生成ランクごとの強化を与えるサブルーチン * Apply magic to an item known to be a "weapon" * @details power > 2はデバッグ専用. */ -void WeaponEnchanter::apply_magic() +void BowEnchanter::apply_magic() { if (this->should_skip) { return; diff --git a/src/object-enchant/weapon/apply-magic-weapon.h b/src/object-enchant/weapon/apply-magic-bow.h similarity index 73% rename from src/object-enchant/weapon/apply-magic-weapon.h rename to src/object-enchant/weapon/apply-magic-bow.h index a2d9356f3f..4fd340e3c1 100644 --- a/src/object-enchant/weapon/apply-magic-weapon.h +++ b/src/object-enchant/weapon/apply-magic-bow.h @@ -5,9 +5,9 @@ class ObjectType; class PlayerType; -class WeaponEnchanter : AbstractWeaponEnchanter { +class BowEnchanter : AbstractWeaponEnchanter { public: - WeaponEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power); + BowEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power); void apply_magic() override; protected: