/* NetHack 3.7 spell.h $NHDT-Date: 1646838388 2022/03/09 15:06:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.14 $ */ /* Copyright 1986, M. Stephenson */ /* NetHack may be freely redistributed. See license for details. */ #ifndef SPELL_H #define SPELL_H #define NO_SPELL 0 #define UNKNOWN_SPELL (-1) /* spellbook re-use control; used when reading and when polymorphing */ #define MAX_SPELL_STUDY 3 struct spell { short sp_id; /* spell id (== object.otyp) */ xint16 sp_lev; /* power level */ int sp_know; /* knowledge of spell */ }; enum spellknowledge { spe_Forgotten = -1, /* known but no longer castable */ spe_Unknown = 0, /* not yet known */ spe_Fresh = 1, /* castable if various casting criteria are met */ spe_GoingStale = 2 /* still castable but nearly forgotten */ }; /* levels of memory destruction with a scroll of amnesia */ #define ALL_MAP 0x1 #define ALL_SPELLS 0x2 #define decrnknow(spell) gs.spl_book[spell].sp_know-- #define spellid(spell) gs.spl_book[spell].sp_id #define spellknow(spell) gs.spl_book[spell].sp_know /* how much Pw a spell of level lvl costs to cast? */ #define SPELL_LEV_PW(lvl) ((lvl) * 5) #endif /* SPELL_H */