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
|
/**
* @file
* @brief Monster death functionality.
**/
#ifndef MONDEATH_H
#define MONDEATH_H
#define FRESHEST_CORPSE 210
#define ROTTING_CORPSE 99
#define ORIG_MONSTER_KEY "orig_monster_key"
#define ELVEN_ENERGIZE_KEY "elven_twin_energize"
#if TAG_MAJOR_VERSION == 34
#define OLD_DUVESSA_ENERGIZE_KEY "duvessa_berserk"
#define OLD_DOWAN_ENERGIZE_KEY "dowan_upgrade"
#endif
#define YOU_KILL(x) ((x) == KILL_YOU || (x) == KILL_YOU_MISSILE \
|| (x) == KILL_YOU_CONF)
#define MON_KILL(x) ((x) == KILL_MON || (x) == KILL_MON_MISSILE)
#define SAME_ATTITUDE(x) (x->friendly() ? BEH_FRIENDLY : \
x->good_neutral() ? BEH_GOOD_NEUTRAL : \
x->strict_neutral() ? BEH_STRICT_NEUTRAL : \
x->neutral() ? BEH_NEUTRAL \
: BEH_HOSTILE)
struct bolt;
int monster_die(monster* mons, const actor *killer, bool silent = false,
bool wizard = false, bool fake = false);
int monster_die(monster* mons, killer_type killer,
int killer_index, bool silent = false, bool wizard = false,
bool fake = false);
int mounted_kill(monster* daddy, monster_type mc, killer_type killer,
int killer_index);
monster_type fill_out_corpse(const monster* mons,
monster_type mtype,
item_def& corpse,
bool force_corpse = false);
bool explode_corpse(item_def& corpse, const coord_def& where);
int place_monster_corpse(const monster* mons, bool silent, bool force = false);
void monster_cleanup(monster* mons);
void setup_spore_explosion(bolt & beam, const monster& origin);
void record_monster_defeat(monster* mons, killer_type killer);
int destroy_tentacles(monster* head);
void unawaken_vines(const monster* mons, bool quiet);
void fire_monster_death_event(monster* mons, killer_type killer, int i, bool polymorph);
int exp_rate(int killer);
void mons_check_pool(monster* mons, const coord_def &oldpos,
killer_type killer = KILL_NONE, int killnum = -1);
int dismiss_monsters(string pattern);
string summoned_poof_msg(const monster* mons, bool plural = false);
string summoned_poof_msg(const int midx, const item_def &item);
string summoned_poof_msg(const monster* mons, const item_def &item);
bool mons_is_pikel(monster* mons);
void pikel_band_neutralise();
bool mons_is_duvessa(const monster* mons);
bool mons_is_dowan(const monster* mons);
bool mons_is_elven_twin(const monster* mons);
void elven_twin_died(monster* twin, bool in_transit, killer_type killer, int killer_index);
void elven_twin_energize(monster* mons);
void elven_twins_pacify(monster* twin);
void elven_twins_unpacify(monster* twin);
bool mons_is_kirke(monster* mons);
void hogs_to_humans();
bool mons_is_natasha(const monster* mons);
bool mons_felid_can_revive(const monster* mons);
void mons_felid_revive(monster* mons);
#endif
|