blob: 007b1a6ae7e953e67b7e22a5ef5e6a8234928062 (
plain) (
blame)
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
|
/*
* File: ghost.h
* Summary: Player ghost and random Pandemonium demon handling.
*
* Created for Dungeon Crawl Reference by dshaligram on
* Thu Mar 15 20:10:20 2007 UTC.
*/
#ifndef GHOST_H
#define GHOST_H
#include "externs.h"
#include "enum.h"
#include "itemprop.h"
#include "mon-util.h"
class ghost_demon
{
public:
std::string name;
species_type species;
job_type job;
god_type religion;
skill_type best_skill;
short best_skill_level;
short xl;
short max_hp, ev, ac, damage, speed;
bool see_invis;
brand_type brand;
mon_attack_type att_type;
mon_attack_flavour att_flav;
mon_resist_def resists;
bool spellcaster, cycle_colours;
unsigned char colour;
flight_type fly;
monster_spells spells;
public:
ghost_demon();
void reset();
void init_random_demon();
void init_player_ghost();
void init_ugly_thing(bool very_ugly, bool only_mutate = false,
unsigned char force_colour = BLACK);
void init_dancing_weapon(const item_def& weapon, int power);
void ugly_thing_to_very_ugly_thing();
public:
static std::vector<ghost_demon> find_ghosts();
private:
static int n_extra_ghosts();
static void find_extra_ghosts(std::vector<ghost_demon> &ghosts, int n);
static void find_transiting_ghosts(std::vector<ghost_demon> &gs, int n);
static void announce_ghost(const ghost_demon &g);
private:
void add_spells();
spell_type translate_spell(spell_type playerspell) const;
void ugly_thing_add_resistance(bool very_ugly,
mon_attack_flavour u_att_flav);
};
bool debug_check_ghosts();
extern std::vector<ghost_demon> ghosts;
#endif
|