<ClCompile Include="..\..\src\load\item\item-loader-factory.cpp" />\r
<ClCompile Include="..\..\src\load\monster\monster-loader-factory.cpp" />\r
<ClCompile Include="..\..\src\load\player-class-specific-data-loader.cpp" />\r
+ <ClCompile Include="..\..\src\object-enchant\protector\apply-magic-soft-armor.cpp" />\r
<ClCompile Include="..\..\src\object-enchant\others\apply-magic-lite.cpp" />\r
<ClCompile Include="..\..\src\monster-race\monster-kind-mask.cpp" />\r
<ClCompile Include="..\..\src\monster-race\race-resistance-mask.cpp" />\r
<ClInclude Include="..\..\src\monster-race\race-resistance-mask.h" />\r
<ClInclude Include="..\..\src\monster-race\race-visual-flags.h" />\r
<ClInclude Include="..\..\src\mspell\mspell-result.h" />\r
+ <ClInclude Include="..\..\src\object-enchant\protector\apply-magic-soft-armor.h" />\r
<ClInclude Include="..\..\src\object-enchant\others\apply-magic-lite.h" />\r
<ClInclude Include="..\..\src\object-enchant\protector\apply-magic-dragon-armor.h" />\r
<ClInclude Include="..\..\src\object-enchant\protector\apply-magic-hard-armor.h" />\r
<ClCompile Include="..\..\src\object-enchant\protector\apply-magic-hard-armor.cpp">\r
<Filter>object-enchant\protector</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\src\object-enchant\protector\apply-magic-soft-armor.cpp">\r
+ <Filter>object-enchant\protector</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="..\..\src\combat\shoot.h">\r
<ClInclude Include="..\..\src\object-enchant\protector\apply-magic-hard-armor.h">\r
<Filter>object-enchant\protector</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\src\object-enchant\protector\apply-magic-soft-armor.h">\r
+ <Filter>object-enchant\protector</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
<ItemGroup>\r
<None Include="..\..\src\wall.bmp" />\r
object-enchant/protector/apply-magic-hard-armor.cpp object-enchant/protector/apply-magic-hard-armor.h \
object-enchant/protector/apply-magic-helm.cpp object-enchant/protector/apply-magic-helm.h \
object-enchant/protector/apply-magic-shield.cpp object-enchant/protector/apply-magic-shield.h \
+ 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-weapon.cpp object-enchant/weapon/apply-magic-weapon.h \
#include "object-enchant/protector/apply-magic-hard-armor.h"
#include "object-enchant/protector/apply-magic-helm.h"
#include "object-enchant/protector/apply-magic-shield.h"
+#include "object-enchant/protector/apply-magic-soft-armor.h"
#include "object-enchant/special-object-flags.h"
#include "object-enchant/tr-types.h"
#include "object-enchant/trc-types.h"
HardArmorEnchanter(player_ptr, o_ptr, lev, power).apply_magic();
break;
case ItemKindType::SOFT_ARMOR:
- // @todo いずれSoftArmorEnchanter等作って分離する.
- ArmorEnchanter(player_ptr, o_ptr, lev, power).apply_magic();
+ SoftArmorEnchanter(player_ptr, o_ptr, lev, power).apply_magic();
break;
case ItemKindType::GLOVES:
GlovesEnchanter(player_ptr, o_ptr, lev, power).apply_magic();
{
}
-/*!
- * @brief power > 2 はデバッグ専用.
- */
-void ArmorEnchanter::apply_magic()
-{
- if (this->power == 0) {
- return;
- }
-
- switch (this->o_ptr->tval) {
- case ItemKindType::SOFT_ARMOR:
- // @todo 後ほどSoftArmorEnchanterへ分離した時、このswitch文はsval_enchant() へ移動させる.
- switch (this->o_ptr->sval) {
- case SV_KUROSHOUZOKU:
- this->o_ptr->pval = randint1(4);
- break;
- case SV_ABUNAI_MIZUGI:
- if (this->player_ptr->ppersonality != PERSONALITY_SEXY) {
- break;
- }
-
- this->o_ptr->pval = 3;
- this->o_ptr->art_flags.set(TR_STR);
- this->o_ptr->art_flags.set(TR_INT);
- this->o_ptr->art_flags.set(TR_WIS);
- this->o_ptr->art_flags.set(TR_DEX);
- this->o_ptr->art_flags.set(TR_CON);
- this->o_ptr->art_flags.set(TR_CHR);
- break;
- default:
- break;
- }
-
- if (this->power > 1) {
- this->give_high_ego_index();
- if (this->is_high_ego_generated) {
- return;
- }
-
- this->give_ego_index();
- return;
- }
-
- if (this->power < -1) {
- this->give_cursed();
- }
-
- return;
- default:
- return;
- }
-}
-
/*
* @details power > 2はデバッグ専用.
*/
class PlayerType;
class ArmorEnchanter : public AbstractProtectorEnchanter {
public:
- ArmorEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power);
virtual ~ArmorEnchanter() = default;
- void apply_magic() override;
protected:
+ ArmorEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power);
+
+ PlayerType *player_ptr;
+ bool is_high_ego_generated = false;
+
void sval_enchant() override{};
void give_ego_index() override;
void give_high_ego_index() override;
void give_cursed() override;
-
-private:
- PlayerType *player_ptr;
- bool is_high_ego_generated = false;
};
--- /dev/null
+/*
+ * @brief 軽鎧に耐性等の追加効果を付与する処理
+ * @date 2022/03/12
+ * @author Hourier
+ */
+
+#include "object-enchant/protector/apply-magic-soft-armor.h"
+#include "system/object-type-definition.h"
+#include "system/player-type-definition.h"
+#include "sv-definition/sv-armor-types.h"
+
+/*
+ * @brief コンストラクタ
+ * @param player_ptr プレイヤーへの参照ポインタ
+ * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
+ * @param level 生成基準階
+ * @param power 生成ランク
+ */
+SoftArmorEnchanter::SoftArmorEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power)
+ : ArmorEnchanter{ player_ptr, o_ptr, level, power }
+{
+}
+
+/*!
+ * @brief power > 2 はデバッグ専用.
+ */
+void SoftArmorEnchanter::apply_magic()
+{
+ switch (this->o_ptr->sval) {
+ case SV_KUROSHOUZOKU:
+ this->o_ptr->pval = randint1(4);
+ break;
+ case SV_ABUNAI_MIZUGI:
+ if (this->player_ptr->ppersonality != PERSONALITY_SEXY) {
+ break;
+ }
+
+ this->o_ptr->pval = 3;
+ this->o_ptr->art_flags.set(TR_STR);
+ this->o_ptr->art_flags.set(TR_INT);
+ this->o_ptr->art_flags.set(TR_WIS);
+ this->o_ptr->art_flags.set(TR_DEX);
+ this->o_ptr->art_flags.set(TR_CON);
+ this->o_ptr->art_flags.set(TR_CHR);
+ break;
+ default:
+ break;
+ }
+
+ if (this->power > 1) {
+ this->give_high_ego_index();
+ if (this->is_high_ego_generated) {
+ return;
+ }
+
+ this->give_ego_index();
+ return;
+ }
+
+ if (this->power < -1) {
+ this->give_cursed();
+ }
+}
--- /dev/null
+#pragma once
+
+#include "object-enchant/protector/apply-magic-armor.h"
+#include "system/angband.h"
+
+class ObjectType;
+class PlayerType;
+class SoftArmorEnchanter : ArmorEnchanter {
+public:
+ SoftArmorEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power);
+ void apply_magic() override;
+};