OSDN Git Service

[feature] *_info の std::vector 化
[hengbandforosx/hengbandosx.git] / src / monster-race / race-ability-mask.cpp
1 #include "monster-race/race-ability-mask.h"
2
3 // clang-format off
4 /* "summon" spells currently "summon" spells are included in "intelligent" and "indirect" */
5 const FlagGroup<RF_ABILITY> RF_ABILITY_SUMMON_MASK = {
6     RF_ABILITY::S_KIN, RF_ABILITY::S_CYBER, RF_ABILITY::S_MONSTER, RF_ABILITY::S_MONSTERS,
7     RF_ABILITY::S_ANT, RF_ABILITY::S_SPIDER, RF_ABILITY::S_HOUND, RF_ABILITY::S_HYDRA,
8     RF_ABILITY::S_ANGEL, RF_ABILITY::S_DEMON, RF_ABILITY::S_UNDEAD, RF_ABILITY::S_DRAGON,
9     RF_ABILITY::S_HI_UNDEAD, RF_ABILITY::S_HI_DRAGON, RF_ABILITY::S_AMBERITES, RF_ABILITY::S_UNIQUE,
10 };
11
12 /* Choose "intelligent" spells when desperate Including "summon" spells */
13 const FlagGroup<RF_ABILITY> RF_ABILITY_INT_MASK =
14     FlagGroup<RF_ABILITY>(RF_ABILITY_SUMMON_MASK).set({
15     RF_ABILITY::DISPEL, RF_ABILITY::HOLD, RF_ABILITY::SLOW, RF_ABILITY::CONF,
16     RF_ABILITY::BLIND, RF_ABILITY::SCARE, RF_ABILITY::BLINK, RF_ABILITY::TPORT,
17     RF_ABILITY::TELE_LEVEL, RF_ABILITY::TELE_AWAY, RF_ABILITY::HEAL, RF_ABILITY::INVULNER,
18     RF_ABILITY::HASTE, RF_ABILITY::TRAPS,
19 });
20
21 /* Spells that cannot be used while player riding on the monster */
22 const FlagGroup<RF_ABILITY> RF_ABILITY_RIDING_MASK = {
23     RF_ABILITY::SHRIEK, RF_ABILITY::BLINK, RF_ABILITY::TPORT, RF_ABILITY::TRAPS,
24     RF_ABILITY::DARKNESS, RF_ABILITY::SPECIAL,
25 };
26
27 /*
28  * "bolt" spells that may hurt fellow monsters
29  * Currently "bolt" spells are included in "attack"
30  */
31 const FlagGroup<RF_ABILITY> RF_ABILITY_BOLT_MASK = {
32     RF_ABILITY::ROCKET, RF_ABILITY::SHOOT, RF_ABILITY::BO_ACID, RF_ABILITY::BO_ELEC,
33     RF_ABILITY::BO_FIRE, RF_ABILITY::BO_COLD, RF_ABILITY::BO_NETH, RF_ABILITY::BO_WATE,
34     RF_ABILITY::BO_MANA, RF_ABILITY::BO_PLAS, RF_ABILITY::BO_ICEE, RF_ABILITY::MISSILE,
35 };
36
37 /*
38  * "beam" spells that may hurt fellow monsters
39  * Currently "beam" spells are included in "attack"
40  */
41 const FlagGroup<RF_ABILITY> RF_ABILITY_BEAM_MASK = {
42     RF_ABILITY::PSY_SPEAR,
43 };
44
45 /*
46  * "ball" spells with radius 4 that may hurt friends
47  * Currently "radius 4 ball" spells are included in "ball"
48  */
49 const FlagGroup<RF_ABILITY> RF_ABILITY_BIG_BALL_MASK = {
50     RF_ABILITY::BA_CHAO, RF_ABILITY::BA_LITE, RF_ABILITY::BA_DARK, RF_ABILITY::BA_WATE,
51     RF_ABILITY::BA_MANA,
52 };
53
54 /*
55  * "breath" spells that may hurt friends
56  * Currently "breath" spells are included in "ball" and "non-magic"
57  */
58 const FlagGroup<RF_ABILITY> RF_ABILITY_BREATH_MASK = {
59     RF_ABILITY::BR_ACID, RF_ABILITY::BR_ELEC, RF_ABILITY::BR_FIRE, RF_ABILITY::BR_COLD,
60     RF_ABILITY::BR_POIS, RF_ABILITY::BR_NETH, RF_ABILITY::BR_LITE, RF_ABILITY::BR_DARK,
61     RF_ABILITY::BR_CONF, RF_ABILITY::BR_SOUN, RF_ABILITY::BR_CHAO, RF_ABILITY::BR_DISE,
62     RF_ABILITY::BR_NEXU, RF_ABILITY::BR_SHAR, RF_ABILITY::BR_TIME, RF_ABILITY::BR_INER,
63     RF_ABILITY::BR_GRAV, RF_ABILITY::BR_PLAS, RF_ABILITY::BR_WALL, RF_ABILITY::BR_MANA,
64     RF_ABILITY::BR_NUKE, RF_ABILITY::BR_DISI,
65 };
66
67 /*
68  * "ball" spells that may hurt friends
69  * Including "radius 4 ball" and "breath" spells
70  * Currently "ball" spells are included in "attack"
71  */
72 const FlagGroup<RF_ABILITY> RF_ABILITY_BALL_MASK =
73     (RF_ABILITY_BIG_BALL_MASK | RF_ABILITY_BREATH_MASK).set({
74     RF_ABILITY::ROCKET, RF_ABILITY::BA_NUKE, RF_ABILITY::BA_ACID, RF_ABILITY::BA_ELEC,
75     RF_ABILITY::BA_FIRE, RF_ABILITY::BA_COLD, RF_ABILITY::BA_POIS, RF_ABILITY::BA_NETH,
76 });
77
78 /* "attack" spells including "bolt", "beam" and "ball" spells */
79 const FlagGroup<RF_ABILITY> RF_ABILITY_ATTACK_MASK =
80     (RF_ABILITY_BOLT_MASK | RF_ABILITY_BEAM_MASK | RF_ABILITY_BALL_MASK).set({
81     RF_ABILITY::DISPEL, RF_ABILITY::DRAIN_MANA, RF_ABILITY::MIND_BLAST, RF_ABILITY::BRAIN_SMASH,
82     RF_ABILITY::CAUSE_1, RF_ABILITY::CAUSE_2, RF_ABILITY::CAUSE_3, RF_ABILITY::CAUSE_4,
83     RF_ABILITY::SCARE, RF_ABILITY::BLIND, RF_ABILITY::CONF, RF_ABILITY::SLOW, RF_ABILITY::HOLD,
84     RF_ABILITY::HAND_DOOM, RF_ABILITY::TELE_TO, RF_ABILITY::TELE_AWAY, RF_ABILITY::TELE_LEVEL,
85     RF_ABILITY::DARKNESS, RF_ABILITY::TRAPS, RF_ABILITY::FORGET,
86 });
87
88 /* "indirect" spells Including "summon" spells */
89 const FlagGroup<RF_ABILITY> RF_ABILITY_INDIRECT_MASK =
90     FlagGroup<RF_ABILITY>(RF_ABILITY_SUMMON_MASK).set({
91     RF_ABILITY::SHRIEK, RF_ABILITY::HASTE, RF_ABILITY::HEAL, RF_ABILITY::INVULNER,
92     RF_ABILITY::BLINK, RF_ABILITY::WORLD, RF_ABILITY::TPORT, RF_ABILITY::RAISE_DEAD,
93 });
94
95 /* "non-magic" spells including "breath" spells */
96 const FlagGroup<RF_ABILITY> RF_ABILITY_NOMAGIC_MASK =
97     FlagGroup<RF_ABILITY>(RF_ABILITY_BREATH_MASK).set({
98     RF_ABILITY::SHRIEK, RF_ABILITY::ROCKET, RF_ABILITY::SHOOT, RF_ABILITY::SPECIAL,
99 });