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: