1 /**
2  * @file
3  * @brief Monster spell casting.
4 **/
5 
6 #pragma once
7 
8 #include "enum.h"
9 #include "externs.h"
10 #include "spell-type.h"
11 
12 class actor;
13 class monster;
14 struct bolt;
15 struct dice_def;
16 
17 void init_mons_spells();
18 bool is_valid_mon_spell(spell_type spell);
19 
20 void aura_of_brilliance(monster* agent);
21 
22 bool mons_should_cloud_cone(monster* agent, int power, const coord_def pos);
23 
24 dice_def waterstrike_damage(int spell_hd);
25 dice_def resonance_strike_base_damage(const monster &caster);
26 
27 bool handle_mon_spell(monster* mons);
28 
29 static const int ENCH_POW_FACTOR = 3;
30 bool mons_spell_is_spell(spell_type spell);
31 int mons_power_for_hd(spell_type spell, int hd);
32 int mons_spellpower(const monster &mons, spell_type spell);
33 int mons_spell_range_for_hd(spell_type spell, int hd);
34 bolt mons_spell_beam(const monster* mons, spell_type spell_cast, int power,
35                      bool check_validity = false);
36 void mons_cast(monster* mons, bolt pbolt, spell_type spell_cast,
37                mon_spell_slot_flags slot_flags, bool do_noise = true);
38 void mons_cast_noise(monster* mons, const bolt &pbolt,
39                      spell_type spell_cast, mon_spell_slot_flags slot_flags);
40 bool setup_mons_cast(const monster* mons, bolt &pbolt, spell_type spell_cast,
41                      bool evoke = false,
42                      bool check_validity = false);
43 
44 void mons_cast_haunt(monster* mons);
45 bool mons_word_of_recall(monster* mons, int recall_target);
46 void mons_cast_spectral_orcs(monster* mons);
47 void setup_breath_timeout(monster* mons);
48 
49 monster* cast_phantom_mirror(monster* mons, monster* targ,
50                              int hp_perc = 35,
51                              int summ_type = SPELL_PHANTOM_MIRROR);
52