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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/*
* 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) $
*/
#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,
std::string _hand_str = "", bool _can_plural_hand = true);
MiscastEffect(actor* _target, int _source, spschool_flag_type _school,
int _level, std::string _cause,
nothing_happens_when_type _nothing_happens = NH_DEFAULT,
std::string _hand_str = "", bool _can_plural_hand = true);
MiscastEffect(actor* _target, int _source, spschool_flag_type _school,
int _pow, int _fail, std::string _cause,
nothing_happens_when_type _nothing_happens = NH_DEFAULT,
std::string _hand_str = "", bool _can_plural_hand = true);
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;
std::string hand_str;
bool can_plural_hand;
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
|