* @param r_idx モンスターID
* @return 討伐対象にできるならTRUEを返す。
*/
-bool mon_hook_quest(MONRACE_IDX r_idx)
+bool mon_hook_quest(player_type *player_ptr, MONRACE_IDX r_idx)
{
+ /* Unused */
+ (void)player_ptr;
+
monster_race *r_ptr = &r_info[r_idx];
if (r_ptr->flags8 & RF8_WILD_ONLY)
return FALSE;
}
/*!
- * todo ここにplayer_typeを追加すると関数ポインタ周りの収拾がつかなくなるので保留
* @brief モンスターがダンジョンに出現するかどうかを返す
* @param r_idx 判定するモンスターの種族ID
* @return ダンジョンに出現するならばTRUEを返す
*/
-bool mon_hook_dungeon(MONRACE_IDX r_idx)
+bool mon_hook_dungeon(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
if (!(r_ptr->flags8 & RF8_WILD_ONLY))
return TRUE;
- dungeon_type *d_ptr = &d_info[p_ptr->dungeon_idx];
+ dungeon_type *d_ptr = &d_info[player_ptr->dungeon_idx];
return ((d_ptr->mflags8 & RF8_WILD_MOUNTAIN) != 0) && ((r_ptr->flags8 & RF8_WILD_MOUNTAIN) != 0);
}
* @param r_idx 判定するモンスターの種族ID
* @return 荒地に出現するならばTRUEを返す
*/
-bool mon_hook_waste(MONRACE_IDX r_idx)
+bool mon_hook_waste(player_type *player_ptr, MONRACE_IDX r_idx)
{
+ /* Unused */
+ (void)player_ptr;
+
monster_race *r_ptr = &r_info[r_idx];
return (r_ptr->flags8 & (RF8_WILD_WASTE | RF8_WILD_ALL)) != 0;
}
* @param r_idx 判定するモンスターの種族ID
* @return 深い水地形に出現するならばTRUEを返す
*/
-bool mon_hook_deep_water(MONRACE_IDX r_idx)
+bool mon_hook_deep_water(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!mon_hook_dungeon(r_idx))
+ if (!mon_hook_dungeon(player_ptr, r_idx))
return FALSE;
return (r_ptr->flags7 & RF7_AQUATIC) != 0;
* @param r_idx 判定するモンスターの種族ID
* @return 浅い水地形に出現するならばTRUEを返す
*/
-bool mon_hook_shallow_water(MONRACE_IDX r_idx)
+bool mon_hook_shallow_water(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!mon_hook_dungeon(r_idx))
+ if (!mon_hook_dungeon(player_ptr, r_idx))
return FALSE;
return (r_ptr->flags2 & RF2_AURA_FIRE) != 0;
* @param r_idx 判定するモンスターの種族ID
* @return 溶岩地形に出現するならばTRUEを返す
*/
-bool mon_hook_lava(MONRACE_IDX r_idx)
+bool mon_hook_lava(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!mon_hook_dungeon(r_idx))
+ if (!mon_hook_dungeon(player_ptr, r_idx))
return FALSE;
if (((r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK) || (r_ptr->flags7 & RF7_CAN_FLY)) && !(r_ptr->flags3 & RF3_AURA_COLD))
/*
* Helper function for "glass room"
*/
-bool vault_aux_lite(MONRACE_IDX r_idx)
+bool vault_aux_lite(player_type *player_ptr, MONRACE_IDX r_idx)
{
+ /* Unused */
+ (void)player_ptr;
+
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags4 & RF4_BR_LITE) && !(r_ptr->a_ability_flags1 & RF5_BA_LITE))
/*
* Helper function for "glass room"
*/
-bool vault_aux_shards(MONRACE_IDX r_idx)
+bool vault_aux_shards(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags4 & RF4_BR_SHAR))
* @param r_idx 確認したいモンスター種族ID
* @return Vault生成の最低必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_simple(MONRACE_IDX r_idx) { return (vault_monster_okay(r_idx)); }
+bool vault_aux_simple(player_type *player_ptr, MONRACE_IDX r_idx)
+{
+ /* Unused */
+ (void)player_ptr;
+
+ return (vault_monster_okay(player_ptr, r_idx));
+}
/*!
* @brief モンスターがゼリーnestの生成必要条件を満たしているかを返す /
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_jelly(MONRACE_IDX r_idx)
+bool vault_aux_jelly(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_animal(MONRACE_IDX r_idx)
+bool vault_aux_animal(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags3 & (RF3_ANIMAL)))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_undead(MONRACE_IDX r_idx)
+bool vault_aux_undead(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags3 & (RF3_UNDEAD)))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_chapel_g(MONRACE_IDX r_idx)
+bool vault_aux_chapel_g(player_type *player_ptr, MONRACE_IDX r_idx)
{
static int chapel_list[] = { MON_NOV_PRIEST, MON_NOV_PALADIN, MON_NOV_PRIEST_G, MON_NOV_PALADIN_G, MON_PRIEST, MON_JADE_MONK, MON_IVORY_MONK,
MON_ULTRA_PALADIN, MON_EBONY_MONK, MON_W_KNIGHT, MON_KNI_TEMPLAR, MON_PALADIN, MON_TOPAZ_MONK, 0 };
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (r_ptr->flags3 & (RF3_EVIL))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_kennel(MONRACE_IDX r_idx)
+bool vault_aux_kennel(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!angband_strchr("CZ", r_ptr->d_char))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_mimic(MONRACE_IDX r_idx)
+bool vault_aux_mimic(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!angband_strchr("!$&(/=?[\\|", r_ptr->d_char))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_clone(MONRACE_IDX r_idx)
+bool vault_aux_clone(player_type *player_ptr, MONRACE_IDX r_idx)
{
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
return (r_idx == vault_aux_race);
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_symbol_e(MONRACE_IDX r_idx)
+bool vault_aux_symbol_e(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_symbol_g(MONRACE_IDX r_idx)
+bool vault_aux_symbol_g(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_orc(MONRACE_IDX r_idx)
+bool vault_aux_orc(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags3 & RF3_ORC))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_troll(MONRACE_IDX r_idx)
+bool vault_aux_troll(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags3 & RF3_TROLL))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_giant(MONRACE_IDX r_idx)
+bool vault_aux_giant(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags3 & RF3_GIANT))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_dragon(MONRACE_IDX r_idx)
+bool vault_aux_dragon(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if (!(r_ptr->flags3 & RF3_DRAGON))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_demon(MONRACE_IDX r_idx)
+bool vault_aux_demon(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_cthulhu(MONRACE_IDX r_idx)
+bool vault_aux_cthulhu(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW))
* @param r_idx 確認したいモンスター種族ID
* @return 生成必要条件を満たしているならTRUEを返す。
*/
-bool vault_aux_dark_elf(MONRACE_IDX r_idx)
+bool vault_aux_dark_elf(player_type *player_ptr, MONRACE_IDX r_idx)
{
static int dark_elf_list[] = {
MON_D_ELF,
0,
};
- if (!vault_monster_okay(r_idx))
+ if (!vault_monster_okay(player_ptr, r_idx))
return FALSE;
for (int i = 0; dark_elf_list[i]; i++)
* @param r_idx モンスターID
* @return 死体を食べられるならTRUEを返す。
*/
-bool monster_hook_human(MONRACE_IDX r_idx)
+bool monster_hook_human(player_type *player_ptr, MONRACE_IDX r_idx)
{
+ /* Unused */
+ (void)player_ptr;
+
monster_race *r_ptr = &r_info[r_idx];
if (r_ptr->flags1 & (RF1_UNIQUE))
return FALSE;
}
/*!
- * todo ここにplayer_tyepを追加すると関数ポインタの収拾がつかなくなるので保留
* @brief 悪夢の元凶となるモンスターかどうかを返す。
* @param r_idx 判定対象となるモンスターのID
* @return 悪夢の元凶となり得るか否か。
*/
-bool get_nightmare(MONRACE_IDX r_idx)
+bool get_nightmare(player_type *player_ptr, MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
if (!(r_ptr->flags2 & (RF2_ELDRITCH_HORROR)))
return FALSE;
- if (r_ptr->level <= p_ptr->lev)
+ if (r_ptr->level <= player_ptr->lev)
return FALSE;
return TRUE;
* @param r_idx 判定したいモンスター種族のID
* @return 釣れる対象ならばTRUEを返す
*/
-bool monster_is_fishing_target(MONRACE_IDX r_idx)
+bool monster_is_fishing_target(player_type *player_ptr, MONRACE_IDX r_idx)
{
+ /* Unused */
+ (void)player_ptr;
+
monster_race *r_ptr = &r_info[r_idx];
if ((r_ptr->flags7 & RF7_AQUATIC) && !(r_ptr->flags1 & RF1_UNIQUE) && angband_strchr("Jjlw", r_ptr->d_char))
return TRUE;
* 自爆以外のなんらかのHP攻撃手段を持っていること。
* @return 参加できるか否か
*/
-bool monster_can_entry_arena(MONRACE_IDX r_idx)
+bool monster_can_entry_arena(player_type *player_ptr, MONRACE_IDX r_idx)
{
+ /* Unused */
+ (void)player_ptr;
+
HIT_POINT dam = 0;
monster_race *r_ptr = &r_info[r_idx];
if (r_ptr->flags1 & (RF1_NEVER_MOVE))
* @param r_idx チェックしたいモンスター種族のID
* @return 人形にできるならTRUEを返す
*/
-bool item_monster_okay(MONRACE_IDX r_idx)
+bool item_monster_okay(player_type *player_ptr, MONRACE_IDX r_idx)
{
+ /* Unused */
+ (void)player_ptr;
+
monster_race *r_ptr = &r_info[r_idx];
if (r_ptr->flags1 & RF1_UNIQUE)
return FALSE;
}
/*!
- * vaultに配置可能なモンスターの条件を指定するマクロ / Monster validation macro
+ * vaultに配置可能なモンスターの条件を指定する / Monster validation
* @param r_idx モンスター種別ID
* @param Vaultに配置可能であればTRUE
* @details
* Line 2 -- forbid uniques
* Line 3 -- forbid aquatic monsters
*/
-bool vault_monster_okay(MONRACE_IDX r_idx)
+bool vault_monster_okay(player_type *player_ptr, MONRACE_IDX r_idx)
{
- return (mon_hook_dungeon(r_idx) && !(r_info[r_idx].flags1 & RF1_UNIQUE) && !(r_info[r_idx].flags7 & RF7_UNIQUE2) && !(r_info[r_idx].flagsr & RFR_RES_ALL)
+ return (mon_hook_dungeon(player_ptr, r_idx) && !(r_info[r_idx].flags1 & RF1_UNIQUE) && !(r_info[r_idx].flags7 & RF7_UNIQUE2)
+ && !(r_info[r_idx].flagsr & RFR_RES_ALL)
&& !(r_info[r_idx].flags7 & RF7_AQUATIC));
}