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.
This commit is contained in:
Pasi Kallinen
2026-04-01 13:17:05 +03:00
parent c8e97527f1
commit 3917f5493d
2 changed files with 82 additions and 125 deletions

View File

@@ -6,30 +6,30 @@
#define MCF_HOSTILE 0x0004 /* cast by hostile monsters only */
#if defined(MCASTU_ENUM)
#define MONSPELL(def, flags) MCAST_##def
#define MONSPELL(def, lvl, flags) MCAST_##def
#elif defined(MCASTU_INIT)
#define MONSPELL(def, flags) flags
#define MONSPELL(def, lvl, flags) { lvl, flags }
#endif
MONSPELL(PSI_BOLT, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(OPEN_WOUNDS, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(LIGHTNING, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(FIRE_PILLAR, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(GEYSER, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(DEATH_TOUCH, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(CURE_SELF, MCF_INDIRECT),
MONSPELL(HASTE_SELF, MCF_INDIRECT),
MONSPELL(DISAPPEAR, MCF_INDIRECT),
MONSPELL(AGGRAVATION, MCF_INDIRECT|MCF_HOSTILE|MCF_SIGHT),
MONSPELL(STUN_YOU, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(WEAKEN_YOU, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(CONFUSE_YOU, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(PARALYZE, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(BLIND_YOU, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(DESTRY_ARMR, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(CURSE_ITEMS, MCF_HOSTILE|MCF_SIGHT),
MONSPELL(INSECTS, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
MONSPELL(SUMMON_MONS, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
MONSPELL(CLONE_WIZ, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
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