Files
nethack/include/mcastu.h
Pasi Kallinen 3917f5493d More mcastu code reorg
Instead of using two separate functions with switch-cases for
wizard and clerical spell lists, define the spell lists
as arrays and use a single function to pick a spell
from the lists.

Adds levels to the monster spells, using the switch-case values,
with some minor fudging.
2026-04-01 13:17:09 +03:00

36 lines
1.4 KiB
C

#define MCF_NONE 0x0000
#define MCF_INDIRECT 0x0001 /* untargeted/indirect spell */
#define MCF_SIGHT 0x0002 /* monster needs to see hero */
#define MCF_HOSTILE 0x0004 /* cast by hostile monsters only */
#if defined(MCASTU_ENUM)
#define MONSPELL(def, lvl, flags) MCAST_##def
#elif defined(MCASTU_INIT)
#define MONSPELL(def, lvl, flags) { lvl, flags }
#endif
MONSPELL(PSI_BOLT, 0, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(OPEN_WOUNDS, 0, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(CURE_SELF, 1, MCF_INDIRECT),
MONSPELL(HASTE_SELF, 2, MCF_INDIRECT),
MONSPELL(CONFUSE_YOU, 2, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(STUN_YOU, 3, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(DISAPPEAR, 4, MCF_INDIRECT),
MONSPELL(PARALYZE, 4, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(BLIND_YOU, 6, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(WEAKEN_YOU, 6, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(DESTRY_ARMR, 8, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(INSECTS, 8, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
MONSPELL(CURSE_ITEMS, 10, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(LIGHTNING, 11, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(FIRE_PILLAR, 12, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(GEYSER, 13, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(AGGRAVATION, 13, MCF_INDIRECT|MCF_HOSTILE|MCF_SIGHT),
MONSPELL(SUMMON_MONS, 15, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
MONSPELL(CLONE_WIZ, 18, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
MONSPELL(DEATH_TOUCH, 20, MCF_HOSTILE|MCF_SIGHT),
#undef MONSPELL