#include "object/object-generator.h"
#include "object/object-kind-hook.h"
#include "object/object-kind.h"
-#include "spell/spells-object.h"
+#include "specific-object/bloody-moon.h"
#include "system/artifact-type-definition.h"
#include "system/floor-type-definition.h"
#include "system/system-variables.h"
#include "specific-object/bloody-moon.h"
#include "art-definition/art-weapon-types.h"
#include "core/player-update-types.h"
+#include "object-enchant/object-boost.h"
+#include "object-enchant/tr-types.h"
#include "racial/racial-android.h"
-#include "spell/spells-object.h" // get_bloody_moon_flags() \82ª\88Ë\91¶\81A\8cã\82Å\88ø\82Á\89z\82·.
+#include "system/artifact-type-definition.h"
#include "system/object-type-definition.h"
+#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
+/*!
+ * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\81w\83u\83\89\83b\83f\83B\83\80\81[\83\93\81x\82Ì\93Á\90«\82ð\95Ï\8dX\82·\82é\81B
+ * @details \83X\83\8c\83C2d2\8eí\81A\8by\82Ñone_resistance()\82É\82æ\82é\91Ï\90«1d2\8eí\81Apval2\8eí\82ð\93¾\82é\81B
+ * @param o_ptr \91Î\8fÛ\82Ì\83I\83u\83W\83F\83N\83g\8d\\91¢\91Ì (\83u\83\89\83b\83f\83B\83\80\81[\83\93)\82Ì\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void get_bloody_moon_flags(object_type *o_ptr)
+{
+ for (int i = 0; i < TR_FLAG_SIZE; i++)
+ o_ptr->art_flags[i] = a_info[ART_BLOOD].flags[i];
+
+ int dummy = randint1(2) + randint1(2);
+ for (int i = 0; i < dummy; i++) {
+ int flag = randint0(26);
+ if (flag >= 20)
+ add_flag(o_ptr->art_flags, TR_KILL_UNDEAD + flag - 20);
+ else if (flag == 19)
+ add_flag(o_ptr->art_flags, TR_KILL_ANIMAL);
+ else if (flag == 18)
+ add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
+ else
+ add_flag(o_ptr->art_flags, TR_CHAOTIC + flag);
+ }
+
+ dummy = randint1(2);
+ for (int i = 0; i < dummy; i++)
+ one_resistance(o_ptr);
+
+ for (int i = 0; i < 2; i++) {
+ int tmp = randint0(11);
+ if (tmp < A_MAX)
+ add_flag(o_ptr->art_flags, TR_STR + tmp);
+ else
+ add_flag(o_ptr->art_flags, TR_STEALTH + tmp - 6);
+ }
+}
+
+/*!
+ * @brief Let's dance a RONDO!!
+ * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param o_ptr \83u\83\89\83b\83f\83B\81E\83\80\81[\83\93\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \83I\83u\83W\83F\83N\83g\8fî\95ñ\82É\88Ù\8fí\82ª\82È\82¢\8cÀ\82èTRUE
+ */
bool activate_bloody_moon(player_type *user_ptr, object_type *o_ptr)
{
if (o_ptr->name1 != ART_BLOOD)
#include "system/angband.h"
+void get_bloody_moon_flags(object_type *o_ptr);
bool activate_bloody_moon(player_type *user_ptr, object_type *o_ptr);
#include "spell/spells-object.h"
#include "action/action-limited.h"
-#include "art-definition/art-weapon-types.h"
#include "autopick/autopick.h"
#include "core/asking-player.h"
#include "core/player-redraw-types.h"
}
/*!
- * @brief 固定アーティファクト『ブラッディムーン』の特性を変更する。
- * @details スレイ2d2種、及びone_resistance()による耐性1d2種、pval2種を得る。
- * @param o_ptr 対象のオブジェクト構造体(ブラッディムーン)のポインタ
- * @return なし
- */
-void get_bloody_moon_flags(object_type *o_ptr)
-{
- for (int i = 0; i < TR_FLAG_SIZE; i++)
- o_ptr->art_flags[i] = a_info[ART_BLOOD].flags[i];
-
- int dummy = randint1(2) + randint1(2);
- for (int i = 0; i < dummy; i++) {
- int flag = randint0(26);
- if (flag >= 20)
- add_flag(o_ptr->art_flags, TR_KILL_UNDEAD + flag - 20);
- else if (flag == 19)
- add_flag(o_ptr->art_flags, TR_KILL_ANIMAL);
- else if (flag == 18)
- add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
- else
- add_flag(o_ptr->art_flags, TR_CHAOTIC + flag);
- }
-
- dummy = randint1(2);
- for (int i = 0; i < dummy; i++)
- one_resistance(o_ptr);
-
- for (int i = 0; i < 2; i++) {
- int tmp = randint0(11);
- if (tmp < A_MAX)
- add_flag(o_ptr->art_flags, TR_STR + tmp);
- else
- add_flag(o_ptr->art_flags, TR_STEALTH + tmp - 6);
- }
-}
-
-/*!
* @brief 寿命つき光源の燃素追加処理 /
* Charge a lite (torch or latern)
* @return なし
bool rustproof(player_type *caster_ptr);
void brand_bolts(player_type *caster_ptr);
bool perilous_secrets(player_type *user_ptr);
-void get_bloody_moon_flags(object_type *o_ptr);
void phlogiston(player_type *caster_ptr);
bool bless_weapon(player_type *caster_ptr);
bool pulish_shield(player_type *caster_ptr);