3 #include "monster-attack/monster-attack-table.h"
4 #include "monster-race/monster-aura-types.h"
5 #include "monster-race/race-ability-flags.h"
6 #include "monster-race/race-behavior-flags.h"
7 #include "monster-race/race-brightness-flags.h"
8 #include "monster-race/race-drop-flags.h"
9 #include "monster-race/race-feature-flags.h"
10 #include "monster-race/race-flags-resistance.h"
11 #include "monster-race/race-kind-flags.h"
12 #include "monster-race/race-misc-flags.h"
13 #include "monster-race/race-special-flags.h"
14 #include "monster-race/race-visual-flags.h"
15 #include "system/angband.h"
16 #include "util/flag-group.h"
18 #include <string_view>
19 #include <unordered_map>
21 enum class MonsterRaceId : int16_t;
29 enum monster_lore_mode {
32 MONSTER_LORE_RESEARCH,
36 class MonsterRaceInfo;
38 lore_type(MonsterRaceId r_idx, monster_lore_mode mode);
44 bool reinforce = false;
45 bool know_everything = false;
53 char tmp_msg[96][96]{};
56 int drop_quantity = 0;
57 concptr drop_quality = "";
66 RaceBlowMethodType method;
69 MonsterRaceInfo *r_ptr;
71 ITEM_NUMBER drop_gold;
72 ITEM_NUMBER drop_item;
77 EnumClassFlagGroup<MonsterAbilityType> ability_flags;
78 EnumClassFlagGroup<MonsterAuraType> aura_flags;
79 EnumClassFlagGroup<MonsterBehaviorType> behavior_flags;
80 EnumClassFlagGroup<MonsterVisualType> visual_flags;
81 EnumClassFlagGroup<MonsterKindType> kind_flags;
82 EnumClassFlagGroup<MonsterResistanceType> resistance_flags;
83 EnumClassFlagGroup<MonsterDropType> drop_flags;
84 EnumClassFlagGroup<MonsterFeatureType> feature_flags;
85 EnumClassFlagGroup<MonsterBrightnessType> brightness_flags;
86 EnumClassFlagGroup<MonsterSpecialType> special_flags;
87 EnumClassFlagGroup<MonsterMiscType> misc_flags;
90 using hook_c_roff_pf = void (*)(TERM_COLOR attr, std::string_view str);
91 extern hook_c_roff_pf hook_c_roff;
93 void hooked_roff(std::string_view str);
95 enum WHO_WORD_TYPE { WHO = 0,
98 using who_word_definition = std::unordered_map<WHO_WORD_TYPE, const std::unordered_map<bool, const std::unordered_map<monster_sex, std::string>>>;
102 static const who_word_definition words;
105 * @brief 三人称主格を取得(単数のみ)
106 * @param msex モンスターの性別
109 static concptr who(monster_sex msex)
111 return who(msex, false);
116 * @param msex モンスターの性別
117 * @param multi 複数かどうか
120 static concptr who(monster_sex msex, bool multi)
122 return words.at(WHO_WORD_TYPE::WHO).at(multi).at(msex).data();
126 * @brief 三人称所有格を取得(単数のみ)
127 * @param msex モンスターの性別
130 static concptr whose(monster_sex msex)
132 return whose(msex, false);
137 * @param msex モンスターの性別
138 * @param multi 複数かどうか
141 static concptr whose(monster_sex msex, bool multi)
143 return words.at(WHO_WORD_TYPE::WHOSE).at(multi).at(msex).data();
147 * @brief 三人称目的格を取得(単数のみ)
148 * @param msex モンスターの性別
151 static concptr whom(monster_sex msex)
153 return whom(msex, false);
158 * @param msex モンスターの性別
159 * @param multi 複数かどうか
162 static concptr whom(monster_sex msex, bool multi)
164 return words.at(WHO_WORD_TYPE::WHOM).at(multi).at(msex).data();