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
|
/*
* File: religion.h
* Summary: Misc religion related functions.
* Written by: Linley Henzell
*
* Modified for Crawl Reference by $Author$ on $Date$
*
* Change History (most recent first):
*
* <1> -/--/-- LRH Created
*/
#ifndef RELIGION_H
#define RELIGION_H
#include "enum.h"
#include "ouch.h"
#include "externs.h"
#define MAX_PIETY 200
class actor;
class monsters;
enum harm_protection_type
{
HPT_NONE = 0,
HPT_PRAYING,
HPT_ANYTIME,
HPT_PRAYING_PLUS_ANYTIME,
NUM_HPTS
};
bool is_priest_god(god_type god);
void simple_god_message( const char *event, god_type which_deity = GOD_NO_GOD );
int piety_breakpoint(int i);
std::string god_name(god_type which_god, bool long_name = false);
void dec_penance(int val);
void dec_penance(god_type god, int val);
bool did_god_conduct(conduct_type thing_done, int pgain, bool known = true,
const monsters *victim = NULL);
void excommunication(god_type new_god = GOD_NO_GOD);
void gain_piety(int pgn);
void god_speaks(god_type god, const char *mesg );
void lose_piety(int pgn);
void offer_corpse(int corpse);
std::string god_prayer_reaction();
void pray();
void handle_god_time(void);
int god_colour(god_type god);
void god_pitch(god_type which_god);
int piety_rank(int piety = -1);
void offer_items();
bool god_hates_your_god(god_type god,
god_type your_god = you.religion);
std::string god_hates_your_god_reaction(god_type god,
god_type your_god = you.religion);
bool god_likes_butchery(god_type god);
bool god_hates_butchery(god_type god);
harm_protection_type god_protects_from_harm(god_type god, bool actual = true);
void god_smites_you(god_type god, kill_method_type death_type,
const char *message = NULL);
void divine_retribution(god_type god);
bool beogh_water_walk();
void beogh_idol_revenge();
void good_god_holy_attitude_change(monsters *holy);
void beogh_convert_orc(monsters *orc, bool emergency,
bool converted_by_follower = false);
bool is_evil_item(const item_def& item);
bool ely_destroy_weapons();
bool trog_burn_books();
bool tso_stab_safe_monster(const actor *act);
bool is_good_follower(const monsters* mon);
bool is_orcish_follower(const monsters* mon);
bool is_follower(const monsters* mon);
bool bless_follower(int follower = -1,
god_type god = you.religion,
bool (*suitable)(const monsters* mon) = is_follower,
bool force = false);
bool god_hates_attacking_friend(god_type god, const actor *fr);
bool is_evil_god(god_type god);
bool is_good_god(god_type god);
bool is_chaotic_god(god_type god);
// Calls did_god_conduct when the object goes out of scope.
struct god_conduct_trigger
{
conduct_type conduct;
int pgain;
bool known;
bool enabled;
std::auto_ptr<monsters> victim;
god_conduct_trigger(conduct_type c = NUM_CONDUCTS,
int pg = 0,
bool kn = true,
const monsters *vict = NULL);
void set(conduct_type c = NUM_CONDUCTS,
int pg = 0,
bool kn = true,
const monsters *vict = NULL);
~god_conduct_trigger();
};
#endif
|