1 #pragma once
2 
3 #include "tag-version.h"
4 
5 enum class area_centre_type
6 {
7     none,
8     sanctuary,
9     silence,
10     halo,
11     liquid,
12     orb,
13     umbra,
14     quad,
15     disjunction,
16 #if TAG_MAJOR_VERSION == 34
17     hot,
18 #endif
19 };
20 
21 void invalidate_agrid(bool recheck_new = false);
22 
23 class actor;
24 void areas_actor_moved(const actor* act, const coord_def& oldpos);
25 
26 void create_sanctuary(const coord_def& center, int time);
27 bool remove_sanctuary(bool did_attack = false);
28 void decrease_sanctuary_radius();
29 bool sanctuary_exists();
30 
31 coord_def find_centre_for(const coord_def& f,
32                           area_centre_type at = area_centre_type::none);
33 
34 bool silenced(const coord_def& p);
35 
36 // Does the given point lie within a halo?
37 bool haloed(const coord_def& p);
38 
39 // or is the ground there liquefied?
40 bool liquefied(const coord_def& p, bool check_actual = true);
41 
42 // Is it enlightened by the orb?
43 bool orb_haloed(const coord_def& p);
44 
45 // ...or by a quad damage?
46 bool quad_haloed(const coord_def& p);
47 
48 // ...or by disjunction?
49 bool disjunction_haloed(const coord_def& p);
50 
51 // ...or endarkened by an umbra?
52 bool umbraed(const coord_def& p);
53 
54 #if TAG_MAJOR_VERSION == 34
55 // ...or is the area hot?
56 bool heated(const coord_def& p);
57 #endif
58