blob: 4afd805974758acf3b906c499a763dca88b5498e (
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
73
74
75
|
/*
* File: branch.h
* Summary: Dungeon branch classes
* Written by: Haran Pilpel
*/
#ifndef BRANCH_H
#define BRANCH_H
#include "enum.h"
struct fog_machine_data;
enum branch_flag_type
{
BFLAG_NONE = 0,
BFLAG_NO_TELE_CONTROL = (1 << 0), // Teleport control not allowed.
BFLAG_NOT_MAPPABLE = (1 << 1), // Branch levels not mappable.
BFLAG_NO_MAGIC_MAP = (1 << 2), // Branch levels can't be magic mapped.
BFLAG_HAS_ORB = (1 << 3), // Orb is on the floor in this branch
BFLAG_ISLANDED = (1 << 4) // May have isolated zones with no stairs.
};
struct Branch
{
branch_type id;
branch_type parent_branch;
int depth;
int startdepth; // which level of the parent branch,
// 1 for first level
unsigned long branch_flags;
unsigned long default_level_flags;
dungeon_feature_type entry_stairs;
dungeon_feature_type exit_stairs;
const char* shortname; // "Slime Pits"
const char* longname; // "The Pits of Slime"
const char* abbrevname; // "Slime"
const char* entry_message;
bool has_shops;
bool has_uniques;
char floor_colour; // Zot needs special handling.
char rock_colour;
int (*mons_rarity_function)(int);
int (*mons_level_function)(int);
int (*num_traps_function)(int);
trap_type (*rand_trap_function)(int);
int (*num_fogs_function)(int);
void (*rand_fog_function)(int,fog_machine_data&);
int altar_chance; // in percent
int travel_shortcut; // Which key to press for travel.
bool any_upstair_exits; // any upstair exits the branch (Hell branches)
bool dangerous_bottom_level; // bottom level is more dangerous than normal
};
extern Branch branches[];
Branch& your_branch();
bool at_branch_bottom();
branch_type str_to_branch(const std::string &branch,
branch_type err = NUM_BRANCHES);
const char *level_area_type_name(int level_type);
level_area_type str_to_level_area_type(const std::string &s);
bool set_branch_flags(unsigned long flags, bool silent = false,
branch_type branch = NUM_BRANCHES);
bool unset_branch_flags(unsigned long flags, bool silent = false,
branch_type branch = NUM_BRANCHES);
unsigned long get_branch_flags(branch_type branch = NUM_BRANCHES);
#endif
|