1 #include "mspell/improper-mspell-remover.h"
2 #include "game-option/birth-options.h"
3 #include "monster-race/monster-race.h"
4 #include "monster-race/race-flags2.h"
5 #include "monster/smart-learn-types.h"
6 #include "mspell/element-resistance-checker.h"
7 #include "mspell/high-resistance-checker.h"
8 #include "mspell/smart-mspell-util.h"
9 #include "system/floor-type-definition.h"
10 #include "system/monster-race-definition.h"
11 #include "system/monster-type-definition.h"
12 #include "system/player-type-definition.h"
14 static void add_cheat_remove_flags(player_type *player_ptr, msr_type *msr_ptr)
19 add_cheat_remove_flags_element(player_ptr, msr_ptr);
20 add_cheat_remove_flags_others(player_ptr, msr_ptr);
24 * @brief モンスターの魔法一覧から戦術的に適さない魔法を除外する /
25 * Remove the "bad" spells from a spell list
26 * @param m_idx モンスターの構造体参照ポインタ
27 * @param f4p モンスター魔法のフラグリスト1
28 * @param f5p モンスター魔法のフラグリスト2
29 * @param f6p モンスター魔法のフラグリスト3
31 void remove_bad_spells(MONSTER_IDX m_idx, player_type *player_ptr, EnumClassFlagGroup<MonsterAbilityType> &ability_flags)
34 msr_type *msr_ptr = initialize_msr_type(player_ptr, &tmp_msr, m_idx, ability_flags);
35 if (msr_ptr->r_ptr->flags2 & RF2_STUPID)
38 if (!smart_cheat && !smart_learn)
41 monster_type *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
44 if (randint0(100) < 1)
47 msr_ptr->smart = m_ptr->smart;
50 add_cheat_remove_flags(player_ptr, msr_ptr);
51 if (msr_ptr->smart.none())
54 check_element_resistance(msr_ptr);
55 check_high_resistances(player_ptr, msr_ptr);
56 ability_flags = msr_ptr->ability_flags;