1 /**
2  * @file
3  * @brief Collects information for output of status effects.
4 **/
5 
6 #pragma once
7 
8 #include "duration-type.h"
9 #include "mpr.h"
10 
11 enum status_type
12 {
13     STATUS_AIRBORNE = NUM_DURATIONS + 1,
14     STATUS_BEHELD,
15     STATUS_CONTAMINATION,
16     STATUS_NET,
17     STATUS_ALIVE_STATE,
18     STATUS_REGENERATION,
19     STATUS_DIG,
20     STATUS_SICK,
21     STATUS_SPEED,
22     STATUS_STR_ZERO,
23     STATUS_INT_ZERO,
24     STATUS_DEX_ZERO,
25     STATUS_BACKLIT,
26     STATUS_UMBRA,
27     STATUS_CONSTRICTED,
28     STATUS_MANUAL,
29     STATUS_AUGMENTED,
30     STATUS_TERRAIN,
31     STATUS_SILENCE,
32     STATUS_BEOGH,
33     STATUS_RECALL,
34     STATUS_LIQUEFIED,
35     STATUS_DRAINED,
36     STATUS_RAY,
37     STATUS_INVISIBLE,
38     STATUS_MAGIC_SAPPED,
39     STATUS_BRIBE,
40     STATUS_CLOUD,
41     STATUS_ORB,
42     STATUS_STILL_WINDS,
43     STATUS_MISSILES,
44     STATUS_SERPENTS_LASH,
45     STATUS_HEAVENLY_STORM,
46     STATUS_ZOT,
47     STATUS_CURL,
48     STATUS_MAXWELLS,
49     STATUS_LAST_STATUS = STATUS_MAXWELLS
50 };
51 
52 struct status_info
53 {
status_infostatus_info54     status_info() : light_colour(0)
55     {
56     };
57 
58     int light_colour;
59     string light_text; // status light
60     string short_text; // @: line
61     string long_text;  // @ message
62 };
63 
64 // status should be a duration or status_type
65 // *info will be filled in as appropriate for current
66 // character state
67 // returns true if the status has a description
68 bool fill_status_info(int status, status_info& info);
69 
70 const char *duration_name(duration_type dur);
71 bool duration_dispellable(duration_type dur);
72 void init_duration_index();
73 
74 bool duration_decrements_normally(duration_type dur);
75 const char *duration_end_message(duration_type dur);
76 void duration_end_effect(duration_type dur);
77 const char *duration_mid_message(duration_type dur);
78 int duration_mid_offset(duration_type dur);
79 int duration_expire_point(duration_type dur);
80 msg_channel_type duration_mid_chan(duration_type dur);
81