OSDN Git Service

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