1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/*
* File: spl-cast.h
* Summary: Spell casting functions.
* Written by: Linley Henzell
*/
#ifndef SPL_CAST_H
#define SPL_CAST_H
#include "enum.h"
enum spflag_type
{
SPFLAG_NONE = 0x000000,
SPFLAG_DIR_OR_TARGET = 0x000001, // use DIR_NONE targetting
SPFLAG_TARGET = 0x000002, // use DIR_TARGET targetting
SPFLAG_GRID = 0x000004, // use DIR_GRID targetting
SPFLAG_DIR = 0x000008, // use DIR_DIR targetting
SPFLAG_TARG_OBJ = 0x000010, // use DIR_TARGET_OBJECT targ.
SPFLAG_TARGETTING_MASK = 0x00001f, // used to test for targetting
SPFLAG_HELPFUL = 0x000020, // TARG_FRIENDS used
SPFLAG_NEUTRAL = 0x000040, // TARG_ANY used
SPFLAG_NOT_SELF = 0x000080, // aborts on isMe
SPFLAG_UNHOLY = 0x000100, // counts as "unholy"
SPFLAG_UNCLEAN = 0x000200, // counts as "unclean"
SPFLAG_CHAOTIC = 0x000400, // counts as "chaotic"
SPFLAG_HASTY = 0x000800, // counts as "hasty"
SPFLAG_MAPPING = 0x001000, // a mapping spell of some kind
SPFLAG_ESCAPE = 0x002000, // useful for running away
SPFLAG_RECOVERY = 0x004000, // healing or recovery spell
SPFLAG_AREA = 0x008000, // area affect
SPFLAG_BATTLE = 0x010000, // a non-Conjuration spell that
// is still a battle spell
SPFLAG_CARD = 0x020000, // a card effect spell
SPFLAG_MONSTER = 0x040000, // monster-only spell
SPFLAG_INNATE = 0x080000, // an innate spell, even if
// use by a priest/wizard
SPFLAG_NOISY = 0x100000, // makes noise, even if innate
SPFLAG_TESTING = 0x200000 // a testing/debugging spell
};
enum spret_type
{
SPRET_ABORT = 0, // should be left as 0
SPRET_FAIL,
SPRET_SUCCESS
};
typedef bool (*spell_selector)(spell_type spell, bool &grey);
int list_spells(bool toggle_with_I = true, bool viewing = false,
int minRange = -1, spell_selector selector = NULL);
int spell_fail( spell_type spell );
int calc_spell_power(spell_type spell, bool apply_intel,
bool fail_rate_chk = false, bool cap_power = true);
int calc_spell_range(spell_type spell, int power = 0,
bool real_cast = false);
int spell_enhancement( unsigned int typeflags );
void exercise_spell(spell_type spell_ex, bool spc, bool divide);
bool cast_a_spell( bool check_range, spell_type spell = SPELL_NO_SPELL );
bool maybe_identify_staff( item_def &item, spell_type spell = SPELL_NO_SPELL );
void inspect_spells();
spret_type your_spells(spell_type spell, int powc = 0, bool allow_fail = true);
const char* failure_rate_to_string( int fail );
int spell_power_colour(spell_type spell);
int spell_power_bars(spell_type spell);
std::string spell_power_string(spell_type spell);
std::string spell_range_string(spell_type spell);
std::string spell_schools_string(spell_type spell);
const char* spell_hunger_string(spell_type spell);
#endif
|