Separate curse item functions to object-curse.c/h.
<ClCompile Include="..\..\src\monster-hook.c" />\r
<ClCompile Include="..\..\src\monster-process.c" />\r
<ClCompile Include="..\..\src\monster-status.c" />\r
+ <ClCompile Include="..\..\src\object-curse.c" />\r
<ClCompile Include="..\..\src\object-hook.c" />\r
<ClCompile Include="..\..\src\realm-craft.c" />\r
<ClCompile Include="..\..\src\realm-crusade.c" />\r
<ClInclude Include="..\..\src\mindtips.h" />\r
<ClInclude Include="..\..\src\monster-hook.h" />\r
<ClInclude Include="..\..\src\monster-status.h" />\r
+ <ClInclude Include="..\..\src\object-curse.h" />\r
<ClInclude Include="..\..\src\object-hook.h" />\r
<ClInclude Include="..\..\src\readdib.h" />\r
<ClInclude Include="..\..\src\realm-arcane.h" />\r
<ClCompile Include="..\..\src\floor-events.c">\r
<Filter>Source</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\src\object-curse.c">\r
+ <Filter>Source</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="..\..\src\angband.h">\r
<ClInclude Include="..\..\src\floor-events.h">\r
<Filter>Header</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\src\object-curse.h">\r
+ <Filter>Header</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
<ItemGroup>\r
<ResourceCompile Include="..\..\src\angband.rc" />\r
monster-hook.c monster-hook.h monster-process.c \
monster-process.h monster-status.c monster-status.h monster1.c \
monster2.c mspells1.c mspells2.c mspells3.c mspells4.c mutation.c \
+ object-curse.c object-curse.h \
object-hook.c object-hook.h object1.c object2.c obj_kind.c racial.c \
realm-arcane.c \
realm-arcane.h realm-chaos.c realm-chaos.h realm-craft.c realm-craft.h \
#include "angband.h"
#include "cmd-activate.h"
+#include "object-curse.h"
static int suppression_evil_dam(object_type *o_ptr);
static int weakening_artifact(object_type *o_ptr);
#include "cmd-zapwand.h"
#include "cmd-pet.h"
#include "floor-events.h"
+#include "object-curse.h"
static bool load = TRUE; /*!<ロード処理中の分岐フラグ*/
static int wild_regen = 20; /*!<広域マップ移動時の自然回復処理カウンタ(広域マップ1マス毎に20回処理を基本とする)*/
extern bool set_monster_invulner(MONSTER_IDX m_idx, int v, bool energy_need);
extern void process_monsters_mtimed(int mtimed_idx);
extern void dispel_monster_status(MONSTER_IDX m_idx);
-extern BIT_FLAGS get_curse(int power, object_type *o_ptr);
-extern void curse_equipment(PERCENTAGE chance, PERCENTAGE heavy_chance);
extern void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, cptr note, IDX who);
extern bool process_the_world(int num, MONSTER_IDX who, bool vs_player);
extern void monster_gain_exp(MONSTER_IDX m_idx, IDX s_idx);
*/
#include "angband.h"
+#include "object-curse.h"
/*!
(void)project(m_idx, rad, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
}
-/*!
- * @brief アイテムに付加される可能性のある呪いを指定する。
- * @param power 呪いの段階
- * @param o_ptr 呪いをかけられる装備オブジェクトの構造体参照ポインタ
- * @return 与える呪いのID
- */
-BIT_FLAGS get_curse(int power, object_type *o_ptr)
-{
- BIT_FLAGS new_curse;
-
- while(1)
- {
- new_curse = (1 << (randint0(MAX_CURSE)+4));
- if (power == 2)
- {
- if (!(new_curse & TRC_HEAVY_MASK)) continue;
- }
- else if (power == 1)
- {
- if (new_curse & TRC_SPECIAL_MASK) continue;
- }
- else if (power == 0)
- {
- if (new_curse & TRC_HEAVY_MASK) continue;
- }
- if (new_curse == TRC_LOW_MELEE && !object_is_weapon(o_ptr)) continue;
- if (new_curse == TRC_LOW_AC && !object_is_armour(o_ptr)) continue;
- break;
- }
- return new_curse;
-}
-
-/*!
- * @brief 装備への呪い付加判定と付加処理
- * @param chance 呪いの基本確率
- * @param heavy_chance さらに重い呪いとなる確率
- * @return なし
- */
-void curse_equipment(PERCENTAGE chance, PERCENTAGE heavy_chance)
-{
- bool changed = FALSE;
- int curse_power = 0;
- u32b new_curse;
- u32b oflgs[TR_FLAG_SIZE];
- object_type *o_ptr = &inventory[INVEN_RARM + randint0(12)];
- char o_name[MAX_NLEN];
-
- if (randint1(100) > chance) return;
- if (!o_ptr->k_idx) return;
-
- object_flags(o_ptr, oflgs);
-
- object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
-
- /* Extra, biased saving throw for blessed items */
- if (have_flag(oflgs, TR_BLESSED))
- {
-#ifdef JP
- msg_format("祝福された%sは呪いを跳ね返した!", o_name,
-#else
- msg_format("Your blessed %s resist%s cursing!", o_name,
-#endif
-
- ((o_ptr->number > 1) ? "" : "s"));
- /* Hmmm -- can we wear multiple items? If not, this is unnecessary */
- return;
- }
-
- if ((randint1(100) <= heavy_chance) &&
- (object_is_artifact(o_ptr) || object_is_ego(o_ptr)))
- {
- if (!(o_ptr->curse_flags & TRC_HEAVY_CURSE))
- changed = TRUE;
- o_ptr->curse_flags |= TRC_HEAVY_CURSE;
- o_ptr->curse_flags |= TRC_CURSED;
- curse_power++;
- }
- else
- {
- if (!object_is_cursed(o_ptr))
- changed = TRUE;
- o_ptr->curse_flags |= TRC_CURSED;
- }
- if (heavy_chance >= 50) curse_power++;
-
- new_curse = get_curse(curse_power, o_ptr);
- if (!(o_ptr->curse_flags & new_curse))
- {
- changed = TRUE;
- o_ptr->curse_flags |= new_curse;
- }
-
- if (changed)
- {
- msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding %s..."), o_name);
- o_ptr->feeling = FEEL_NONE;
- }
- p_ptr->update |= (PU_BONUS);
-}
/*!
--- /dev/null
+#include "angband.h"\r
+\r
+/*!\r
+ * @brief アイテムに付加される可能性のある呪いを指定する。\r
+ * @param power 呪いの段階\r
+ * @param o_ptr 呪いをかけられる装備オブジェクトの構造体参照ポインタ\r
+ * @return 与える呪いのID\r
+ */\r
+BIT_FLAGS get_curse(int power, object_type *o_ptr)\r
+{\r
+ BIT_FLAGS new_curse;\r
+\r
+ while(1)\r
+ {\r
+ new_curse = (1 << (randint0(MAX_CURSE)+4));\r
+ if (power == 2)\r
+ {\r
+ if (!(new_curse & TRC_HEAVY_MASK)) continue;\r
+ }\r
+ else if (power == 1)\r
+ {\r
+ if (new_curse & TRC_SPECIAL_MASK) continue;\r
+ }\r
+ else if (power == 0)\r
+ {\r
+ if (new_curse & TRC_HEAVY_MASK) continue;\r
+ }\r
+ if (new_curse == TRC_LOW_MELEE && !object_is_weapon(o_ptr)) continue;\r
+ if (new_curse == TRC_LOW_AC && !object_is_armour(o_ptr)) continue;\r
+ break;\r
+ }\r
+ return new_curse;\r
+}\r
+\r
+/*!\r
+ * @brief 装備への呪い付加判定と付加処理\r
+ * @param chance 呪いの基本確率\r
+ * @param heavy_chance さらに重い呪いとなる確率\r
+ * @return なし\r
+ */\r
+void curse_equipment(PERCENTAGE chance, PERCENTAGE heavy_chance)\r
+{\r
+ bool changed = FALSE;\r
+ int curse_power = 0;\r
+ BIT_FLAGS new_curse;\r
+ BIT_FLAGS oflgs[TR_FLAG_SIZE];\r
+ object_type *o_ptr = &inventory[INVEN_RARM + randint0(12)];\r
+ char o_name[MAX_NLEN];\r
+\r
+ if (randint1(100) > chance) return;\r
+\r
+ if (!o_ptr->k_idx) return;\r
+\r
+ object_flags(o_ptr, oflgs);\r
+\r
+ object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));\r
+\r
+ /* Extra, biased saving throw for blessed items */\r
+ if (have_flag(oflgs, TR_BLESSED))\r
+ {\r
+#ifdef JP\r
+ msg_format("祝福された%sは呪いを跳ね返した!", o_name,\r
+#else\r
+ msg_format("Your blessed %s resist%s cursing!", o_name,\r
+#endif\r
+\r
+ ((o_ptr->number > 1) ? "" : "s"));\r
+ /* Hmmm -- can we wear multiple items? If not, this is unnecessary */\r
+ return;\r
+ }\r
+\r
+ if ((randint1(100) <= heavy_chance) &&\r
+ (object_is_artifact(o_ptr) || object_is_ego(o_ptr)))\r
+ {\r
+ if (!(o_ptr->curse_flags & TRC_HEAVY_CURSE))\r
+ changed = TRUE;\r
+ o_ptr->curse_flags |= TRC_HEAVY_CURSE;\r
+ o_ptr->curse_flags |= TRC_CURSED;\r
+ curse_power++;\r
+ }\r
+ else\r
+ {\r
+ if (!object_is_cursed(o_ptr))\r
+ changed = TRUE;\r
+ o_ptr->curse_flags |= TRC_CURSED;\r
+ }\r
+ if (heavy_chance >= 50) curse_power++;\r
+\r
+ new_curse = get_curse(curse_power, o_ptr);\r
+ if (!(o_ptr->curse_flags & new_curse))\r
+ {\r
+ changed = TRUE;\r
+ o_ptr->curse_flags |= new_curse;\r
+ }\r
+\r
+ if (changed)\r
+ {\r
+ msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding %s..."), o_name);\r
+ o_ptr->feeling = FEEL_NONE;\r
+ }\r
+ p_ptr->update |= (PU_BONUS);\r
+}\r
+\r
--- /dev/null
+extern BIT_FLAGS get_curse(int power, object_type *o_ptr);\r
+extern void curse_equipment(PERCENTAGE chance, PERCENTAGE heavy_chance);\r
#include "angband.h"
#include "object-hook.h"
+#include "object-curse.h"
static void one_sustain(object_type *o_ptr);
#include "cmd-spell.h"
#include "cmd-quaff.h"
#include "object-hook.h"
+#include "object-curse.h"
#define MAX_KEEP 4 /*!<呪術の最大詠唱数 */
#include "angband.h"
#include "cmd-pet.h"
#include "trap.h"
+#include "object-curse.h"
static int rakubadam_m; /*!< 振り落とされた際のダメージ量 */
#include "angband.h"
#include "cmd-pet.h"
+#include "object-curse.h"
#define REWARD_CHANCE 10