1 #pragma once
2 
3 #include "tag-version.h"
4 
5 enum ability_type
6 {
7     ABIL_NON_ABILITY = -1,
8     // Innate abilities and (Demonspawn) mutations.
9     ABIL_SPIT_POISON = 1,
10     ABIL_BREATHE_FIRE,
11     ABIL_BREATHE_FROST,
12     ABIL_BREATHE_POISON,
13     ABIL_BREATHE_LIGHTNING,
14     ABIL_BREATHE_POWER,
15 #if TAG_MAJOR_VERSION == 34
16     ABIL_BREATHE_STICKY_FLAME,
17 #endif
18     ABIL_BREATHE_STEAM,
19     ABIL_BREATHE_MEPHITIC,
20     ABIL_BREATHE_ACID,
21     // Others
22 #if TAG_MAJOR_VERSION == 34
23     ABIL_BLINK,
24     ABIL_DELAYED_FIREBALL,
25 #endif
26     // Abort duration-based spells
27     ABIL_END_TRANSFORMATION,
28 #if TAG_MAJOR_VERSION == 34
29     ABIL_STOP_SINGING, // From song of slaying
30     ABIL_CANCEL_PPROJ,
31 #endif
32 
33     // Species-specific abilities.
34     // Demonspawn-only
35     ABIL_DAMNATION,
36     ABIL_WORD_OF_CHAOS,
37 #if TAG_MAJOR_VERSION == 34
38     ABIL_FLY,
39     ABIL_WISP_BLINK,
40     ABIL_STOP_FLYING,
41     ABIL_MUMMY_RESTORATION,
42 #endif
43     // Vampires
44     ABIL_TRAN_BAT,
45     ABIL_EXSANGUINATE,
46     ABIL_REVIVIFY,
47 #if TAG_MAJOR_VERSION == 34
48     ABIL_BOTTLE_BLOOD,
49 #endif
50     // Deep Dwarves
51     ABIL_HEAL_WOUNDS,
52     // Formicids
53     ABIL_DIG,
54     ABIL_SHAFT_SELF,
55     // Barachim
56     ABIL_HOP,
57     // Palentongas
58     ABIL_ROLLING_CHARGE,
59     // Air Walk
60     ABIL_BLINKBOLT,
61     ABIL_MAX_INTRINSIC = ABIL_BLINKBOLT,
62 
63     // Evoking items.
64     ABIL_EVOKE_BERSERK = 40,
65     ABIL_MIN_EVOKE = ABIL_EVOKE_BERSERK,
66 #if TAG_MAJOR_VERSION == 34
67     ABIL_EVOKE_TELEPORTATION,
68 #endif
69     ABIL_EVOKE_BLINK,
70     ABIL_EVOKE_TURN_INVISIBLE,
71 #if TAG_MAJOR_VERSION == 34
72     ABIL_EVOKE_TURN_VISIBLE,
73     ABIL_EVOKE_FLIGHT,
74     ABIL_EVOKE_STOP_LEVITATING,
75     ABIL_EVOKE_FOG,
76     ABIL_EVOKE_TELEPORT_CONTROL,
77     ABIL_EVOKE_TWISTER,
78     ABIL_EVOKE_RATSKIN,
79 #endif
80     ABIL_EVOKE_THUNDER,
81     ABIL_MAX_EVOKE = ABIL_EVOKE_THUNDER,
82 
83     // Divine abilities
84     // Zin
85     ABIL_ZIN_SUSTENANCE = 1000,
86     ABIL_FIRST_RELIGIOUS_ABILITY = ABIL_ZIN_SUSTENANCE,
87     ABIL_ZIN_RECITE,
88     ABIL_ZIN_VITALISATION,
89     ABIL_ZIN_IMPRISON,
90     ABIL_ZIN_SANCTUARY,
91 #if TAG_MAJOR_VERSION == 34
92     ABIL_ZIN_CURE_ALL_MUTATIONS,
93 #endif
94     ABIL_ZIN_DONATE_GOLD,
95     // TSO
96     ABIL_TSO_DIVINE_SHIELD = 1010,
97     ABIL_TSO_CLEANSING_FLAME,
98     ABIL_TSO_SUMMON_DIVINE_WARRIOR,
99     ABIL_TSO_BLESS_WEAPON,
100     // Kiku
101     ABIL_KIKU_RECEIVE_CORPSES = 1020,
102     ABIL_KIKU_TORMENT,
103     ABIL_KIKU_BLESS_WEAPON,
104     ABIL_KIKU_GIFT_CAPSTONE_SPELLS,
105     // Yredelemnul
106     ABIL_YRED_INJURY_MIRROR = 1030,
107     ABIL_YRED_ANIMATE_REMAINS,
108     ABIL_YRED_RECALL_UNDEAD_SLAVES,
109     ABIL_YRED_ANIMATE_DEAD,
110     ABIL_YRED_DRAIN_LIFE,
111     ABIL_YRED_ENSLAVE_SOUL,
112     // Vehumet
113     // = 1040
114     // Okawaru
115     ABIL_OKAWARU_HEROISM = 1050,
116     ABIL_OKAWARU_FINESSE,
117     // Makhleb
118     ABIL_MAKHLEB_MINOR_DESTRUCTION = 1060,
119     ABIL_MAKHLEB_LESSER_SERVANT_OF_MAKHLEB,
120     ABIL_MAKHLEB_MAJOR_DESTRUCTION,
121     ABIL_MAKHLEB_GREATER_SERVANT_OF_MAKHLEB,
122     // Sif Muna
123     ABIL_SIF_MUNA_CHANNEL_ENERGY = 1070,
124     ABIL_SIF_MUNA_FORGET_SPELL,
125 #if TAG_MAJOR_VERSION == 34
126     ABIL_SIF_MUNA_DIVINE_ENERGY,
127     ABIL_SIF_MUNA_STOP_DIVINE_ENERGY,
128 #endif
129     ABIL_SIF_MUNA_DIVINE_EXEGESIS,
130     // Trog
131     ABIL_TROG_BERSERK = 1080,
132     ABIL_TROG_HAND,
133     ABIL_TROG_BROTHERS_IN_ARMS,
134     // Elyvilon
135     ABIL_ELYVILON_LIFESAVING = 1090,
136     ABIL_ELYVILON_LESSER_HEALING,
137 #if TAG_MAJOR_VERSION == 34
138     ABIL_ELYVILON_LESSER_HEALING_OTHERS,
139 #endif
140     ABIL_ELYVILON_PURIFICATION,
141     ABIL_ELYVILON_GREATER_HEALING,
142     ABIL_ELYVILON_HEAL_OTHER,
143     ABIL_ELYVILON_DIVINE_VIGOUR,
144     // Lugonu
145     ABIL_LUGONU_ABYSS_EXIT = 1100,
146     ABIL_LUGONU_BEND_SPACE,
147     ABIL_LUGONU_BANISH,
148     ABIL_LUGONU_CORRUPT,
149     ABIL_LUGONU_ABYSS_ENTER,
150     ABIL_LUGONU_BLESS_WEAPON,
151     // Nemelex
152 #if TAG_MAJOR_VERSION == 34
153     ABIL_NEMELEX_DRAW_ONE = 1110,
154     ABIL_NEMELEX_PEEK_TWO,
155 #endif
156     ABIL_NEMELEX_TRIPLE_DRAW = 1112,
157     ABIL_NEMELEX_DEAL_FOUR,
158     ABIL_NEMELEX_STACK_FIVE,
159 
160     ABIL_NEMELEX_DRAW_STACK,
161     ABIL_NEMELEX_DRAW_ESCAPE,
162         ABIL_NEMELEX_FIRST_DECK = ABIL_NEMELEX_DRAW_ESCAPE,
163     ABIL_NEMELEX_DRAW_DESTRUCTION,
164     ABIL_NEMELEX_DRAW_SUMMONING,
165         ABIL_NEMELEX_LAST_DECK = ABIL_NEMELEX_DRAW_SUMMONING,
166     // Beogh
167     ABIL_BEOGH_SMITING = 1120,
168     ABIL_BEOGH_RECALL_ORCISH_FOLLOWERS,
169     ABIL_BEOGH_GIFT_ITEM,
170     ABIL_BEOGH_RESURRECTION,
171     // Jiyva
172     ABIL_JIYVA_CALL_JELLY = 1130,
173 #if TAG_MAJOR_VERSION == 34
174     ABIL_JIYVA_JELLY_PARALYSE,
175 #endif
176     ABIL_JIYVA_SLIMIFY,
177     ABIL_JIYVA_CURE_BAD_MUTATION,
178     // Fedhas
179     ABIL_FEDHAS_WALL_OF_BRIARS = 1140,
180     ABIL_FEDHAS_GROW_BALLISTOMYCETE,
181     ABIL_FEDHAS_OVERGROW,
182     ABIL_FEDHAS_GROW_OKLOB,
183     // Cheibriados
184     ABIL_CHEIBRIADOS_TIME_STEP = 1151,
185     ABIL_CHEIBRIADOS_TIME_BEND,
186     ABIL_CHEIBRIADOS_SLOUCH,
187     ABIL_CHEIBRIADOS_DISTORTION,
188     // Ashenzari
189 #if TAG_MAJOR_VERSION == 34
190     ABIL_ASHENZARI_SCRYING = 1160,
191     ABIL_ASHENZARI_TRANSFER_KNOWLEDGE,
192     ABIL_ASHENZARI_END_TRANSFER,
193     ABIL_ASHENZARI_CURSE,
194 #else
195     ABIL_ASHENZARI_CURSE = 1160,
196 #endif
197     ABIL_ASHENZARI_UNCURSE,
198     // Dithmenos
199     ABIL_DITHMENOS_SHADOW_STEP = 1170,
200     ABIL_DITHMENOS_SHADOW_FORM,
201     // Gozag
202     ABIL_GOZAG_POTION_PETITION = 1180,
203     ABIL_GOZAG_CALL_MERCHANT,
204     ABIL_GOZAG_BRIBE_BRANCH,
205     // Qazlal
206     ABIL_QAZLAL_UPHEAVAL = 1190,
207     ABIL_QAZLAL_ELEMENTAL_FORCE,
208     ABIL_QAZLAL_DISASTER_AREA,
209     // Ru
210     ABIL_RU_DRAW_OUT_POWER = 1200,
211     ABIL_RU_POWER_LEAP,
212     ABIL_RU_APOCALYPSE,
213 
214     ABIL_RU_SACRIFICE_PURITY,
215         ABIL_FIRST_SACRIFICE = ABIL_RU_SACRIFICE_PURITY,
216     ABIL_RU_SACRIFICE_WORDS,
217     ABIL_RU_SACRIFICE_DRINK,
218     ABIL_RU_SACRIFICE_ESSENCE,
219     ABIL_RU_SACRIFICE_HEALTH,
220     ABIL_RU_SACRIFICE_STEALTH,
221     ABIL_RU_SACRIFICE_ARTIFICE,
222     ABIL_RU_SACRIFICE_LOVE,
223     ABIL_RU_SACRIFICE_COURAGE,
224     ABIL_RU_SACRIFICE_ARCANA,
225     ABIL_RU_SACRIFICE_NIMBLENESS,
226     ABIL_RU_SACRIFICE_DURABILITY,
227     ABIL_RU_SACRIFICE_HAND,
228     ABIL_RU_SACRIFICE_EXPERIENCE,
229     ABIL_RU_SACRIFICE_SKILL,
230     ABIL_RU_SACRIFICE_EYE,
231     ABIL_RU_SACRIFICE_RESISTANCE,
232         ABIL_FINAL_SACRIFICE = ABIL_RU_SACRIFICE_RESISTANCE,
233     ABIL_RU_REJECT_SACRIFICES,
234 
235 #if TAG_MAJOR_VERSION == 34
236     // Pakellas
237     ABIL_PAKELLAS_DEVICE_SURGE = 1230,
238     ABIL_PAKELLAS_QUICK_CHARGE,
239     ABIL_PAKELLAS_SUPERCHARGE,
240 #endif
241 
242     // Uskayaw
243     ABIL_USKAYAW_STOMP = 1240,
244     ABIL_USKAYAW_LINE_PASS,
245     ABIL_USKAYAW_GRAND_FINALE,
246 
247     // Hepliaklqana
248     ABIL_HEPLIAKLQANA_RECALL = 1250,
249     ABIL_HEPLIAKLQANA_IDEALISE,
250     ABIL_HEPLIAKLQANA_TRANSFERENCE,
251 
252     ABIL_HEPLIAKLQANA_TYPE_KNIGHT,
253         ABIL_HEPLIAKLQANA_FIRST_TYPE = ABIL_HEPLIAKLQANA_TYPE_KNIGHT,
254     ABIL_HEPLIAKLQANA_TYPE_BATTLEMAGE,
255     ABIL_HEPLIAKLQANA_TYPE_HEXER,
256         ABIL_HEPLIAKLQANA_LAST_TYPE = ABIL_HEPLIAKLQANA_TYPE_HEXER,
257 
258     ABIL_HEPLIAKLQANA_IDENTITY,
259 
260 #if TAG_MAJOR_VERSION == 34
261     ABIL_HEPLIAKLQANA_KNIGHT_REACHING,
262     ABIL_HEPLIAKLQANA_KNIGHT_CLEAVING,
263     ABIL_HEPLIAKLQANA_BATTLEMAGE_FORCE_LANCE,
264     ABIL_HEPLIAKLQANA_BATTLEMAGE_MAGMA,
265     ABIL_HEPLIAKLQANA_HEXER_MASS_CONFUSION,
266     ABIL_HEPLIAKLQANA_HEXER_ENGLACIATION,
267 #endif
268 
269     // Wu Jian
270     ABIL_WU_JIAN_SERPENTS_LASH = 1280,
271     ABIL_WU_JIAN_HEAVENLY_STORM,
272     ABIL_WU_JIAN_LUNGE,
273     ABIL_WU_JIAN_WHIRLWIND,
274     ABIL_WU_JIAN_WALLJUMP,
275 
276     // For both Yred and Beogh
277     ABIL_STOP_RECALL = 1500,
278     ABIL_LAST_RELIGIOUS_ABILITY = ABIL_STOP_RECALL,
279 
280     // General divine (pseudo) abilities.
281     ABIL_RENOUNCE_RELIGION,
282     ABIL_CONVERT_TO_BEOGH,
283     NUM_ABILITIES
284 };
285