1 #pragma once
2 
3 #include <vector>
4 
5 #include "tag-version.h"
6 
7 using std::vector;
8 
9 enum potion_type
10 {
11     POT_CURING,
12     POT_HEAL_WOUNDS,
13     POT_HASTE,
14     POT_MIGHT,
15     POT_BRILLIANCE,
16     POT_ATTRACTION,
17 #if TAG_MAJOR_VERSION == 34
18     POT_GAIN_STRENGTH,
19     POT_GAIN_DEXTERITY,
20     POT_GAIN_INTELLIGENCE,
21 #endif
22     POT_FLIGHT,
23 #if TAG_MAJOR_VERSION == 34
24     POT_POISON,
25     POT_SLOWING,
26 #endif
27     POT_CANCELLATION,
28     POT_AMBROSIA,
29     POT_INVISIBILITY,
30 #if TAG_MAJOR_VERSION == 34
31     POT_PORRIDGE,
32 #endif
33     POT_DEGENERATION,
34 #if TAG_MAJOR_VERSION == 34
35     POT_DECAY,
36     POT_WATER,
37 #endif
38     POT_EXPERIENCE,
39     POT_MAGIC,
40 #if TAG_MAJOR_VERSION == 34
41     POT_RESTORE_ABILITIES,
42     POT_STRONG_POISON,
43 #endif
44     POT_BERSERK_RAGE,
45 #if TAG_MAJOR_VERSION == 34
46     POT_CURE_MUTATION,
47 #endif
48     POT_MUTATION,
49     POT_RESISTANCE,
50 #if TAG_MAJOR_VERSION == 34
51     POT_BLOOD,
52     POT_BLOOD_COAGULATED,
53 #endif
54     POT_LIGNIFY,
55 #if TAG_MAJOR_VERSION == 34
56     POT_BENEFICIAL_MUTATION,
57     POT_DUMMY_AGILITY,
58 #endif
59     NUM_POTIONS
60 };
61 
62 // used for objstat
63 const vector<potion_type> potion_types =
64 {
65     POT_CURING,
66     POT_HEAL_WOUNDS,
67     POT_HASTE,
68     POT_MIGHT,
69     POT_BRILLIANCE,
70     POT_ATTRACTION,
71     POT_FLIGHT,
72     POT_CANCELLATION,
73     POT_AMBROSIA,
74     POT_INVISIBILITY,
75     POT_DEGENERATION,
76     POT_EXPERIENCE,
77     POT_MAGIC,
78     POT_BERSERK_RAGE,
79     POT_MUTATION,
80     POT_RESISTANCE,
81     POT_LIGNIFY,
82 };
83 
84 #if TAG_MAJOR_VERSION == 34
85 #define CASE_REMOVED_POTIONS(pot) \
86 case POT_GAIN_STRENGTH: \
87 case POT_GAIN_DEXTERITY: \
88 case POT_GAIN_INTELLIGENCE: \
89 case POT_POISON: \
90 case POT_SLOWING: \
91 case POT_PORRIDGE: \
92 case POT_DECAY: \
93 case POT_WATER: \
94 case POT_RESTORE_ABILITIES: \
95 case POT_STRONG_POISON: \
96 case POT_CURE_MUTATION: \
97 case POT_BLOOD: \
98 case POT_BLOOD_COAGULATED: \
99 case POT_BENEFICIAL_MUTATION: \
100 case POT_DUMMY_AGILITY: \
101 { \
102     die("Removed potion type %d!", static_cast<int>(pot)); \
103 }
104 #else
105 #define CASE_REMOVED_POTIONS(pot)
106 #endif
107