1 #include "monster-race/race-ability-mask.h"
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,
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,
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,
28 * "bolt" spells that may hurt fellow monsters
29 * Currently "bolt" spells are included in "attack"
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,
39 * "beam" spells that may hurt fellow monsters
40 * Currently "beam" spells are included in "attack"
42 const EnumClassFlagGroup<MonsterAbilityType> RF_ABILITY_BEAM_MASK = {
43 MonsterAbilityType::PSY_SPEAR,
47 * "ball" spells with radius 4 that may hurt friends
48 * Currently "radius 4 ball" spells are included in "ball"
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,
56 * "breath" spells that may hurt friends
57 * Currently "breath" spells are included in "ball" and "non-magic"
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,
69 * "ball" spells that may hurt friends
70 * Including "radius 4 ball" and "breath" spells
71 * Currently "ball" spells are included in "attack"
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,
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,
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,
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,