OSDN Git Service

[refactor] モンスターの種族フラグのRF4~RF6を統合する
[hengbandforosx/hengbandosx.git] / src / info-reader / race-info-tokens-table.cpp
1 #include "info-reader/race-info-tokens-table.h"
2 #include "monster-attack/monster-attack-effect.h"
3 #include "monster-attack/monster-attack-types.h"
4 #include "monster-race/race-ability-flags.h"
5
6 /*!
7   * モンスターの打撃手段トークンの定義 /
8   * Monster Blow Methods
9   */
10 concptr r_info_blow_method[NB_RBM_TYPE + 1] = {
11         "",
12         "HIT",
13         "TOUCH",
14         "PUNCH",
15         "KICK",
16         "CLAW",
17         "BITE",
18         "STING",
19         "SLASH",
20         "BUTT",
21         "CRUSH",
22         "ENGULF",
23         "CHARGE",
24         "CRAWL",
25         "DROOL",
26         "SPIT",
27         "EXPLODE",
28         "GAZE",
29         "WAIL",
30         "SPORE",
31         "XXX4",
32         "BEG",
33         "INSULT",
34         "MOAN",
35         "SHOW",
36         "SHOOT",
37         NULL
38 };
39
40 /*!
41  * モンスターの打撃属性トークンの定義 /
42  * Monster Blow Effects
43  */
44 concptr r_info_blow_effect[NB_RBE_TYPE + 1] = {
45         "",
46         "HURT",
47         "POISON",
48         "UN_BONUS",
49         "UN_POWER",
50         "EAT_GOLD",
51         "EAT_ITEM",
52         "EAT_FOOD",
53         "EAT_LITE",
54         "ACID",
55         "ELEC",
56         "FIRE",
57         "COLD",
58         "BLIND",
59         "CONFUSE",
60         "TERRIFY",
61         "PARALYZE",
62         "LOSE_STR",
63         "LOSE_INT",
64         "LOSE_WIS",
65         "LOSE_DEX",
66         "LOSE_CON",
67         "LOSE_CHR",
68         "LOSE_ALL",
69         "SHATTER",
70         "EXP_10",
71         "EXP_20",
72         "EXP_40",
73         "EXP_80",
74         "DISEASE",
75         "TIME",
76         "EXP_VAMP",
77         "DR_MANA",
78         "SUPERHURT",
79         "INERTIA",
80         "STUN",
81         "FLAVOR",
82         NULL
83 };
84
85 /*!
86  * モンスター特性トークンの定義1 /
87  * Monster race flags
88  */
89 concptr r_info_flags1[NUM_R_FLAGS_1] = {
90         "UNIQUE",
91         "QUESTOR",
92         "MALE",
93         "FEMALE",
94         "CHAR_CLEAR",
95         "SHAPECHANGER",
96         "ATTR_CLEAR",
97         "ATTR_MULTI",
98         "FORCE_DEPTH",
99         "FORCE_MAXHP",
100         "PREVENT_SUDDEN_MAGIC",
101         "FORCE_EXTRA",
102         "ATTR_SEMIRAND",
103         "FRIENDS",
104         "ESCORT",
105         "ESCORTS",
106         "NEVER_BLOW",
107         "NEVER_MOVE",
108         "RAND_25",
109         "RAND_50",
110         "ONLY_GOLD",
111         "ONLY_ITEM",
112         "DROP_60",
113         "DROP_90",
114         "DROP_1D2",
115         "DROP_2D2",
116         "DROP_3D2",
117         "DROP_4D2",
118         "DROP_GOOD",
119         "DROP_GREAT",
120         "XXX2",
121         "XXX3"
122 };
123
124 /*!
125  * モンスター特性トークンの定義2 /
126  * Monster race flags
127  */
128 concptr r_info_flags2[NUM_R_FLAGS_2] = {
129         "STUPID",
130         "SMART",
131         "CAN_SPEAK",
132         "REFLECTING",
133         "INVISIBLE",
134         "COLD_BLOOD",
135         "EMPTY_MIND",
136         "WEIRD_MIND",
137         "MULTIPLY",
138         "REGENERATE",
139         "CHAR_MULTI",
140         "ATTR_ANY",
141         "POWERFUL",
142         "ELDRITCH_HORROR",
143         "AURA_FIRE",
144         "AURA_ELEC",
145         "OPEN_DOOR",
146         "BASH_DOOR",
147         "PASS_WALL",
148         "KILL_WALL",
149         "MOVE_BODY",
150         "KILL_BODY",
151         "TAKE_ITEM",
152         "KILL_ITEM",
153         "XXX",
154         "XXX",
155         "XXX",
156         "XXX",
157         "XXX",
158         "XXX",
159         "HUMAN",
160         "QUANTUM"
161 };
162
163 /*!
164  * モンスター特性トークンの定義3 /
165  * Monster race flags
166  */
167 concptr r_info_flags3[NUM_R_FLAGS_3] = {
168         "ORC",
169         "TROLL",
170         "GIANT",
171         "DRAGON",
172         "DEMON",
173         "UNDEAD",
174         "EVIL",
175         "ANIMAL",
176         "AMBERITE",
177         "GOOD",
178         "AURA_COLD",
179         "NONLIVING",
180         "HURT_LITE",
181         "HURT_ROCK",
182         "HURT_FIRE",
183         "HURT_COLD",
184         "ANGEL",
185         "XXX",
186         "XXX",
187         "XXX",
188         "XXX",
189         "XXX",
190         "XXX",
191         "XXX",
192         "XXX",
193         "XXX",
194         "XXX",
195         "XXX",
196         "NO_FEAR",
197         "NO_STUN",
198         "NO_CONF",
199         "NO_SLEEP"
200 };
201
202 /*!
203  * モンスター特性トークン (発動型能力) /
204  * Monster race flags
205  */
206 /* clang-format off */
207 const std::unordered_map<std::string_view, RF_ABILITY> r_info_ability_flags = {
208         {"SHRIEK", RF_ABILITY::SHRIEK },
209         {"XXX1", RF_ABILITY::XXX1 },
210         {"DISPEL", RF_ABILITY::DISPEL },
211         {"ROCKET", RF_ABILITY::ROCKET },
212         {"SHOOT", RF_ABILITY::SHOOT },
213         {"XXX2", RF_ABILITY::XXX2 },
214         {"XXX3", RF_ABILITY::XXX3 },
215         {"XXX4", RF_ABILITY::XXX4 },
216         {"BR_ACID", RF_ABILITY::BR_ACID },
217         {"BR_ELEC", RF_ABILITY::BR_ELEC },
218         {"BR_FIRE", RF_ABILITY::BR_FIRE },
219         {"BR_COLD", RF_ABILITY::BR_COLD },
220         {"BR_POIS", RF_ABILITY::BR_POIS },
221         {"BR_NETH", RF_ABILITY::BR_NETH },
222         {"BR_LITE", RF_ABILITY::BR_LITE },
223         {"BR_DARK", RF_ABILITY::BR_DARK },
224         {"BR_CONF", RF_ABILITY::BR_CONF },
225         {"BR_SOUN", RF_ABILITY::BR_SOUN },
226         {"BR_CHAO", RF_ABILITY::BR_CHAO },
227         {"BR_DISE", RF_ABILITY::BR_DISE },
228         {"BR_NEXU", RF_ABILITY::BR_NEXU },
229         {"BR_TIME", RF_ABILITY::BR_TIME },
230         {"BR_INER", RF_ABILITY::BR_INER },
231         {"BR_GRAV", RF_ABILITY::BR_GRAV },
232         {"BR_SHAR", RF_ABILITY::BR_SHAR },
233         {"BR_PLAS", RF_ABILITY::BR_PLAS },
234         {"BR_WALL", RF_ABILITY::BR_WALL },
235         {"BR_MANA", RF_ABILITY::BR_MANA },
236         {"BA_NUKE", RF_ABILITY::BA_NUKE },
237         {"BR_NUKE", RF_ABILITY::BR_NUKE },
238         {"BA_CHAO", RF_ABILITY::BA_CHAO },
239         {"BR_DISI", RF_ABILITY::BR_DISI },
240
241         {"BA_ACID", RF_ABILITY::BA_ACID },
242         {"BA_ELEC", RF_ABILITY::BA_ELEC },
243         {"BA_FIRE", RF_ABILITY::BA_FIRE },
244         {"BA_COLD", RF_ABILITY::BA_COLD },
245         {"BA_POIS", RF_ABILITY::BA_POIS },
246         {"BA_NETH", RF_ABILITY::BA_NETH },
247         {"BA_WATE", RF_ABILITY::BA_WATE },
248         {"BA_MANA", RF_ABILITY::BA_MANA },
249         {"BA_DARK", RF_ABILITY::BA_DARK },
250         {"DRAIN_MANA", RF_ABILITY::DRAIN_MANA },
251         {"MIND_BLAST", RF_ABILITY::MIND_BLAST },
252         {"BRAIN_SMASH", RF_ABILITY::BRAIN_SMASH },
253         {"CAUSE_1", RF_ABILITY::CAUSE_1 },
254         {"CAUSE_2", RF_ABILITY::CAUSE_2 },
255         {"CAUSE_3", RF_ABILITY::CAUSE_3 },
256         {"CAUSE_4", RF_ABILITY::CAUSE_4 },
257         {"BO_ACID", RF_ABILITY::BO_ACID },
258         {"BO_ELEC", RF_ABILITY::BO_ELEC },
259         {"BO_FIRE", RF_ABILITY::BO_FIRE },
260         {"BO_COLD", RF_ABILITY::BO_COLD },
261         {"BA_LITE", RF_ABILITY::BA_LITE },
262         {"BO_NETH", RF_ABILITY::BO_NETH },
263         {"BO_WATE", RF_ABILITY::BO_WATE },
264         {"BO_MANA", RF_ABILITY::BO_MANA },
265         {"BO_PLAS", RF_ABILITY::BO_PLAS },
266         {"BO_ICEE", RF_ABILITY::BO_ICEE },
267         {"MISSILE", RF_ABILITY::MISSILE },
268         {"SCARE", RF_ABILITY::SCARE },
269         {"BLIND", RF_ABILITY::BLIND },
270         {"CONF", RF_ABILITY::CONF },
271         {"SLOW", RF_ABILITY::SLOW },
272         {"HOLD", RF_ABILITY::HOLD },
273
274         {"HASTE", RF_ABILITY::HASTE },
275         {"HAND_DOOM", RF_ABILITY::HAND_DOOM },
276         {"HEAL", RF_ABILITY::HEAL },
277         {"INVULNER", RF_ABILITY::INVULNER },
278         {"BLINK", RF_ABILITY::BLINK },
279         {"TPORT", RF_ABILITY::TPORT },
280         {"WORLD", RF_ABILITY::WORLD },
281         {"SPECIAL", RF_ABILITY::SPECIAL },
282         {"TELE_TO", RF_ABILITY::TELE_TO },
283         {"TELE_AWAY", RF_ABILITY::TELE_AWAY },
284         {"TELE_LEVEL", RF_ABILITY::TELE_LEVEL },
285         {"PSY_SPEAR", RF_ABILITY::PSY_SPEAR },
286         {"DARKNESS", RF_ABILITY::DARKNESS },
287         {"TRAPS", RF_ABILITY::TRAPS },
288         {"FORGET", RF_ABILITY::FORGET },
289         {"ANIM_DEAD", RF_ABILITY::RAISE_DEAD /* ToDo: Implement ANIM_DEAD */ },
290         {"S_KIN", RF_ABILITY::S_KIN },
291         {"S_CYBER", RF_ABILITY::S_CYBER },
292         {"S_MONSTER", RF_ABILITY::S_MONSTER },
293         {"S_MONSTERS", RF_ABILITY::S_MONSTERS },
294         {"S_ANT", RF_ABILITY::S_ANT },
295         {"S_SPIDER", RF_ABILITY::S_SPIDER },
296         {"S_HOUND", RF_ABILITY::S_HOUND },
297         {"S_HYDRA", RF_ABILITY::S_HYDRA },
298         {"S_ANGEL", RF_ABILITY::S_ANGEL },
299         {"S_DEMON", RF_ABILITY::S_DEMON },
300         {"S_UNDEAD", RF_ABILITY::S_UNDEAD },
301         {"S_DRAGON", RF_ABILITY::S_DRAGON },
302         {"S_HI_UNDEAD", RF_ABILITY::S_HI_UNDEAD },
303         {"S_HI_DRAGON", RF_ABILITY::S_HI_DRAGON },
304         {"S_AMBERITES", RF_ABILITY::S_AMBERITES },
305         {"S_UNIQUE", RF_ABILITY::S_UNIQUE },
306 };
307 /* clang-format on */
308
309 /*!
310  * モンスター特性トークンの定義7 /
311  * Monster race flags
312  * "GUARDIAN" ... init.c d_infoの FINAL_GUARDIAN_* にて自動指定
313  */
314 concptr r_info_flags7[NUM_R_FLAGS_7] = {
315         "AQUATIC",
316         "CAN_SWIM",
317         "CAN_FLY",
318         "FRIENDLY",
319         "NAZGUL",
320         "UNIQUE2",
321         "RIDING",
322         "KAGE",
323         "HAS_LITE_1",
324         "SELF_LITE_1",
325         "HAS_LITE_2",
326         "SELF_LITE_2",
327         "XXX7X12",
328         "CHAMELEON",
329         "XXXX4XXX",
330         "TANUKI",
331         "HAS_DARK_1",
332         "SELF_DARK_1",
333         "HAS_DARK_2",
334         "SELF_DARK_2",
335         "XXX7X20",
336         "XXX7X21",
337         "XXX7X22",
338         "XXX7X23",
339         "XXX7X24",
340         "XXX7X25",
341         "XXX7X26",
342         "XXX7X27",
343         "XXX7X28",
344         "XXX7X29",
345         "XXX7X30",
346         "XXX7X31",
347 };
348
349 /*!
350  * モンスター特性トークンの定義8 /
351  * Monster race flags
352  */
353 concptr r_info_flags8[NUM_R_FLAGS_8] = {
354         "WILD_ONLY",
355         "WILD_TOWN",
356         "XXX8X02",
357         "WILD_SHORE",
358         "WILD_OCEAN",
359         "WILD_WASTE",
360         "WILD_WOOD",
361         "WILD_VOLCANO",
362         "XXX8X08",
363         "WILD_MOUNTAIN",
364         "WILD_GRASS",
365         "XXX8X11",
366         "XXX8X12",
367         "XXX8X13",
368         "XXX8X14",
369         "XXX8X15",
370         "XXX8X16",
371         "XXX8X17",
372         "XXX8X18",
373         "XXX8X19",
374         "XXX8X20",
375         "XXX8X21",
376         "XXX8X22",
377         "XXX8X23",
378         "XXX8X24",
379         "XXX8X25",
380         "XXX8X26",
381         "XXX8X27",
382         "XXX8X28",
383         "XXX8X29",
384         "WILD_SWAMP",   /* ToDo: Implement Swamp */
385         "WILD_ALL",
386 };
387
388 /*!
389  * モンスター特性トークンの定義9 /
390  * Monster race flags
391  */
392 concptr r_info_flags9[NUM_R_FLAGS_9] = {
393         "DROP_CORPSE",
394         "DROP_SKELETON",
395         "EAT_BLIND",
396         "EAT_CONF",
397         "EAT_MANA",
398         "EAT_NEXUS",
399         "EAT_BLINK",
400         "EAT_SLEEP",
401         "EAT_BERSERKER",
402         "EAT_ACIDIC",
403         "EAT_SPEED",
404         "EAT_CURE",
405         "EAT_FIRE_RES",
406         "EAT_COLD_RES",
407         "EAT_ACID_RES",
408         "EAT_ELEC_RES",
409         "EAT_POIS_RES",
410         "EAT_INSANITY",
411         "EAT_DRAIN_EXP",
412         "EAT_POISONOUS",
413         "EAT_GIVE_STR",
414         "EAT_GIVE_INT",
415         "EAT_GIVE_WIS",
416         "EAT_GIVE_DEX",
417         "EAT_GIVE_CON",
418         "EAT_GIVE_CHR",
419         "EAT_LOSE_STR",
420         "EAT_LOSE_INT",
421         "EAT_LOSE_WIS",
422         "EAT_LOSE_DEX",
423         "EAT_LOSE_CON",
424         "EAT_LOSE_CHR",
425         "EAT_DRAIN_MANA",
426 };
427
428 /*!
429  * モンスター特性トークンの定義R(耐性) /
430  * Monster race flags
431  */
432 concptr r_info_flagsr[NUM_R_FLAGS_R] = {
433         "IM_ACID",
434         "IM_ELEC",
435         "IM_FIRE",
436         "IM_COLD",
437         "IM_POIS",
438         "RES_LITE",
439         "RES_DARK",
440         "RES_NETH",
441         "RES_WATE",
442         "RES_PLAS",
443         "RES_SHAR",
444         "RES_SOUN",
445         "RES_CHAO",
446         "RES_NEXU",
447         "RES_DISE",
448         "RES_WALL",
449         "RES_INER",
450         "RES_TIME",
451         "RES_GRAV",
452         "RES_ALL",
453         "RES_TELE",
454         "XXX",
455         "XXX",
456         "XXX",
457         "XXX",
458         "XXX",
459         "XXX",
460         "XXX",
461         "XXX",
462         "XXX",
463         "XXX",
464         "XXX",
465 };