diff options
Diffstat (limited to 'crawl-ref/source/spl-mis.h')
-rw-r--r-- | crawl-ref/source/spl-mis.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/crawl-ref/source/spl-mis.h b/crawl-ref/source/spl-mis.h new file mode 100644 index 0000000000..ec6c06ff7e --- /dev/null +++ b/crawl-ref/source/spl-mis.h @@ -0,0 +1,126 @@ +/* + * File: spl-mis.h + * Summary: Spell miscast class. + * Written by: Matthew Cline + * + * Modified for Crawl Reference by $Author$ on $Date: 2008-06-28 22: +16:39 -0700 (Sat, 28 Jun 2008) $ + * + * Change History (most recent first): + * + * <1> -/--/-- LRH Created + */ + +#ifndef SPL_MIS_H +#define SPL_MIS_H + +// last updated 23jul2008 {mpc} +/* *********************************************************************** + * called from: decks - effects - fight - item_use - it_use2 - it_use3 - + * item_use - monstuff - religion - spells2 - spells4 - + * spl-book - spl-cast - traps - xom + * *********************************************************************** */ + +#include "enum.h" + +#include "beam.h" +#include "mpr.h" +#include "spl-util.h" + +#define ZOT_TRAP_MISCAST (NON_MONSTER + 1) +#define WIELD_MISCAST (NON_MONSTER + 2) +#define MELEE_MISCAST (NON_MONSTER + 3) +#define MISC_KNOWN_MISCAST (NON_MONSTER + 4) +#define MISC_UNKNOWN_MISCAST (NON_MONSTER + 5) + +enum nothing_happens_when_type +{ + NH_DEFAULT, + NH_NEVER, + NH_ALWAYS +}; + +class actor; + +class MiscastEffect +{ +public: + MiscastEffect(actor* _target, int _source, spell_type _spell, int _pow, + int _fail, std::string _cause = "", + nothing_happens_when_type _nothing_happens = NH_DEFAULT); + MiscastEffect(actor *_target, int _source, spschool_flag_type _school, + int _level, std::string _cause, + nothing_happens_when_type _nothing_happens = NH_DEFAULT); + MiscastEffect(actor *_target, int _source, spschool_flag_type _school, + int _pow, int _fail, std::string _cause, + nothing_happens_when_type _nothing_happens = NH_DEFAULT); + + void do_miscast(); + +private: + actor* target; + int source; + + std::string cause; + + spell_type spell; + spschool_flag_type school; + + int pow; + int fail; + int level; + +private: + kill_category kc; + killer_type kt; + + monsters* mon_target; + monsters* mon_source; + + nothing_happens_when_type nothing_happens_when; + + int kill_source; + actor* act_source; + + bool source_known; + bool target_known; + + bolt beam; + + std::string all_msg; + std::string you_msg; + std::string mon_msg; + std::string mon_msg_seen; + std::string mon_msg_unseen; + + msg_channel_type msg_ch; + +private: + void init(); + std::string get_default_cause(); + + bool neither_end_silenced(); + + void do_msg(bool suppress_nothing_happens = false); + void _ouch(int dam, beam_type flavour = BEAM_NONE); + void _explosion(); + void _potion_effect(int pot_eff, int pow); + bool _create_monster(monster_type what, int abj_deg, bool alert = false); + void send_abyss(); + + void _conjuration(int severity); + void _enchantment(int severity); + void _translocation(int severity); + void _summoning(int severity); + void _divination_you(int severity); + void _divination_mon(int severity); + void _necromancy(int severity); + void _transmigration(int severity); + void _fire(int severity); + void _ice(int severity); + void _earth(int severity); + void _air(int severity); + void _poison(int severity); +}; + +#endif |