#ifndef SPL_CAST_H
#define SPL_CAST_H
#include "enum.h"
enum spflag_type
{
SPFLAG_NONE = 0x00000,
SPFLAG_DIR_OR_TARGET = 0x00001, SPFLAG_TARGET = 0x00002, SPFLAG_GRID = 0x00004, SPFLAG_DIR = 0x00008, SPFLAG_TARGETTING_MASK = 0x0000f, SPFLAG_HELPFUL = 0x00010, SPFLAG_NEUTRAL = 0x00020, SPFLAG_NOT_SELF = 0x00040, SPFLAG_UNHOLY = 0x00080, SPFLAG_MAPPING = 0x00100, SPFLAG_ESCAPE = 0x00200, SPFLAG_RECOVERY = 0x00400, SPFLAG_AREA = 0x00800, SPFLAG_BATTLE = 0x01000, SPFLAG_CARD = 0x02000, SPFLAG_MONSTER = 0x04000, SPFLAG_INNATE = 0x08000, SPFLAG_NOISY = 0x10000, SPFLAG_TESTING = 0x20000, SPFLAG_DEVEL = 0x40000 };
enum spret_type
{
SPRET_ABORT = 0, SPRET_FAIL,
SPRET_SUCCESS
};
int list_spells(bool toggle_with_I = true, bool viewing = false,
int minRange = -1);
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 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