Spellforce-Spell-framework
Loading...
Searching...
No Matches
sf_vanilla_registry.cpp
Go to the documentation of this file.
2#include "../core/sf_hooks.h"
11
12
13
15{
16 uint8_t default_handler_list[96] = { 0x12, 0x13, 0x19, 0x1e, 0x28, 0x2d, 0x38, 0x39, 0x48,
17 0x51, 0x62, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
18 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x79, 0x7a, 0x7d, 0x7e, 0x7f, 0x80,
19 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e,
20 0x8f, 0x90, 0x91, 0x94, 0x96, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
21 0xa2, 0xab, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
22 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5,
23 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0};
24
25 uint8_t hq_list[18] = {0x01, 0x02, 0x03, 0x14, 0x15, 0x16, 0x29, 0x2a, 0x2b, 0x3a, 0x3b, 0x3c, 0x49, 0x4a, 0x4c,
26 0x55, 0x56, 0x57};
27
28 uint8_t hunter_list[5] = {0x09, 0x1d, 0x1f, 0x40, 0x50};
29
30 uint8_t miner_list[6] = {0x0e, 0x31, 0x33, 0x43, 0x59, 0x5f};
31
32 for (int i = 0; i < 5; i++)
33 {
34 SFBuilding *building = registrationAPI.registerBuilding(hunter_list[i]);
35 registrationAPI.linkBuildingDoneHandler(building, &default_done_handler);
36 registrationAPI.linkBuildingEntryHandler(building, &hunter_entry_handler);
37 registrationAPI.applyBuildingTag(building, BuildingTag::HUNTER_BUILDING);
38 registrationAPI.applyBuildingTag(building, BuildingTag::HABITABLE_BUILDING);
39 if (hunter_list[i] == 0x1f)
40 {
41 registrationAPI.applyBuildingTag(building, BuildingTag::MASTER_BUILDING);
42
43 }
44 }
45
46 for (int i = 0; i < 6; i++)
47 {
48 SFBuilding *building = registrationAPI.registerBuilding(miner_list[i]);
49 registrationAPI.linkBuildingDoneHandler(building, &default_done_handler);
50 registrationAPI.linkBuildingEntryHandler(building, &miner_entry_handler);
51 registrationAPI.applyBuildingTag(building, BuildingTag::MINER_BUILDING);
52 registrationAPI.applyBuildingTag(building, BuildingTag::HABITABLE_BUILDING);
53 if ((miner_list[i] == 0x33) || (miner_list[i] == 0x59))
54 {
55 registrationAPI.applyBuildingTag(building, BuildingTag::MOONSILVER_BUILDING);
56 }
57 }
58
59 for (int i = 0; i < 18; i++)
60 {
61 SFBuilding *building = registrationAPI.registerBuilding(hq_list[i]);
62 registrationAPI.linkBuildingDoneHandler(building, &default_done_handler);
63 registrationAPI.linkBuildingEntryHandler(building, &hq_entry_handler);
64 registrationAPI.applyBuildingTag(building, BuildingTag::HQ_BUILDING);
65 if ( i / 3 == 0)
66 {
67 building->race = 1;
68 }
69 if (i / 3 == 1)
70 {
71 building->race = 3;
72 }
73 if (i / 3 == 2)
74 {
75 building->race = 2;
76 }
77 if (i / 3 == 3)
78 {
79 building->race = 5;
80 }
81 if (i / 3 == 4)
82 {
83 building->race = 4;
84 }
85 if (i / 3 == 5)
86 {
87 building->race = 6;
88 }
89 }
90
91 for (int i = 0; i < 96; i++)
92 {
93 SFBuilding *building = registrationAPI.registerBuilding(default_handler_list[i]);
94 registrationAPI.linkBuildingDoneHandler(building, &default_done_handler);
95 }
96
97 SFBuilding *human_fisher = registrationAPI.registerBuilding(0x0a);
98 registrationAPI.linkBuildingDoneHandler(human_fisher, &default_done_handler);
99 registrationAPI.linkBuildingEntryHandler(human_fisher, &fisher_entry_handler);
100 registrationAPI.applyBuildingTag(human_fisher, BuildingTag::FISHER_BUILDING);
101 registrationAPI.applyBuildingTag(human_fisher, BuildingTag::HABITABLE_BUILDING);
102 human_fisher->race = 1;
103
104 SFBuilding *human_master_fisher = registrationAPI.registerBuilding(0x0b);
105 registrationAPI.linkBuildingDoneHandler(human_master_fisher, &default_done_handler);
106 registrationAPI.linkBuildingEntryHandler(human_master_fisher, &fisher_entry_handler);
107 registrationAPI.applyBuildingTag(human_master_fisher, BuildingTag::FISHER_BUILDING);
108 registrationAPI.applyBuildingTag(human_master_fisher, BuildingTag::MASTER_BUILDING);
109 registrationAPI.applyBuildingTag(human_master_fisher, BuildingTag::HABITABLE_BUILDING);
110 human_master_fisher->race = 1;
111
112 SFBuilding *orc_fisher = registrationAPI.registerBuilding(0x41);
113 registrationAPI.linkBuildingDoneHandler(orc_fisher, &default_done_handler);
114 registrationAPI.linkBuildingEntryHandler(orc_fisher, &fisher_entry_handler);
115 registrationAPI.applyBuildingTag(orc_fisher, BuildingTag::FISHER_BUILDING);
116 registrationAPI.applyBuildingTag(orc_fisher, BuildingTag::HABITABLE_BUILDING);
117 orc_fisher->race = 5;
118
119 SFBuilding *human_shrine = registrationAPI.registerBuilding(0x10);
120 registrationAPI.linkBuildingDoneHandler(human_shrine, &default_done_handler);
121 registrationAPI.linkBuildingEntryHandler(human_shrine, &shrine_entry_handler);
122 registrationAPI.applyBuildingTag(human_shrine, BuildingTag::SHRINE_BUILDING);
123 registrationAPI.applyBuildingTag(human_shrine, BuildingTag::HABITABLE_BUILDING);
124 human_shrine->race = 1;
125
126 SFBuilding *elf_shrine = registrationAPI.registerBuilding(0x1b);
127 registrationAPI.linkBuildingDoneHandler(elf_shrine, &default_done_handler);
128 registrationAPI.linkBuildingEntryHandler(elf_shrine, &shrine_entry_handler);
129 registrationAPI.applyBuildingTag(elf_shrine, BuildingTag::SHRINE_BUILDING);
130 registrationAPI.applyBuildingTag(elf_shrine, BuildingTag::HABITABLE_BUILDING);
131 elf_shrine->race = 3;
132
133 SFBuilding *orc_shrine = registrationAPI.registerBuilding(0x45);
134 registrationAPI.linkBuildingDoneHandler(orc_shrine, &default_done_handler);
135 registrationAPI.linkBuildingEntryHandler(orc_shrine, &shrine_entry_handler);
136 registrationAPI.applyBuildingTag(orc_shrine, BuildingTag::SHRINE_BUILDING);
137 registrationAPI.applyBuildingTag(orc_shrine, BuildingTag::HABITABLE_BUILDING);
138 orc_shrine->race = 5;
139
140 SFBuilding *norcaine_shrine = registrationAPI.registerBuilding(0x63);
141 registrationAPI.linkBuildingDoneHandler(norcaine_shrine, &default_done_handler);
142 registrationAPI.linkBuildingEntryHandler(norcaine_shrine, &shrine_entry_handler);
143 registrationAPI.applyBuildingTag(norcaine_shrine, BuildingTag::SHRINE_BUILDING);
144 registrationAPI.applyBuildingTag(norcaine_shrine, BuildingTag::HABITABLE_BUILDING);
145 norcaine_shrine->race = 6;
146
147 SFBuilding *elf_gatherer = registrationAPI.registerBuilding(0x21);
148 registrationAPI.linkBuildingDoneHandler(elf_gatherer, &default_done_handler);
149 registrationAPI.linkBuildingEntryHandler(elf_gatherer, &gatherer_entry_handler);
150 registrationAPI.applyBuildingTag(elf_gatherer, BuildingTag::GATHERER_BUILDING);
151 registrationAPI.applyBuildingTag(elf_gatherer, BuildingTag::HABITABLE_BUILDING);
152 elf_gatherer->race = 3;
153
154 SFBuilding *troll_scavenger = registrationAPI.registerBuilding(0x52);
155 registrationAPI.linkBuildingDoneHandler(troll_scavenger, &default_done_handler);
156 registrationAPI.linkBuildingEntryHandler(troll_scavenger, &scavenger_entry_handler);
157 registrationAPI.applyBuildingTag(troll_scavenger, BuildingTag::SCAVENGER_BUILDING);
158 registrationAPI.applyBuildingTag(troll_scavenger, BuildingTag::HABITABLE_BUILDING);
159 troll_scavenger->race = 4;
160
161 SFBuilding *human_woodcutter = registrationAPI.registerBuilding(0x04);
162 registrationAPI.linkBuildingDoneHandler(human_woodcutter, &multiworker_done_handler);
163 registrationAPI.linkBuildingEntryHandler(human_woodcutter, &woodcutter_entry_handler);
164 registrationAPI.applyBuildingTag(human_woodcutter, BuildingTag::WOODCUTTER_BUILDING);
165 registrationAPI.applyBuildingTag(human_woodcutter, BuildingTag::HABITABLE_BUILDING);
166 human_woodcutter->race = 1;
167
168 SFBuilding *human_quarry = registrationAPI.registerBuilding(0x07);
169 registrationAPI.linkBuildingDoneHandler(human_quarry, &multiworker_done_handler);
170 registrationAPI.linkBuildingEntryHandler(human_quarry, &quarry_entry_handler);
171 registrationAPI.applyBuildingTag(human_quarry, BuildingTag::QUARRY_BUILDING);
172 registrationAPI.applyBuildingTag(human_quarry, BuildingTag::HABITABLE_BUILDING);
173 human_quarry->race = 1;
174
175 SFBuilding *human_farm = registrationAPI.registerBuilding(0x0c);
176 registrationAPI.linkBuildingDoneHandler(human_farm, &multiworker_done_handler);
177 registrationAPI.linkBuildingEntryHandler(human_farm, &farmer_entry_handler);
178 registrationAPI.applyBuildingTag(human_farm, BuildingTag::FARM_BUILDING);
179 registrationAPI.applyBuildingTag(human_farm, BuildingTag::HABITABLE_BUILDING);
180 human_farm->race = 1;
181
182 SFBuilding *elf_forester = registrationAPI.registerBuilding(0x17);
183 registrationAPI.linkBuildingDoneHandler(elf_forester, &multiworker_done_handler);
184 registrationAPI.linkBuildingEntryHandler(elf_forester, &forester_entry_handler);
185 registrationAPI.applyBuildingTag(elf_forester, BuildingTag::FORESTER_BUILDING);
186 registrationAPI.applyBuildingTag(elf_forester, BuildingTag::HABITABLE_BUILDING);
187 elf_forester->race = 3;
188
189 SFBuilding *elf_woodcutter_master = registrationAPI.registerBuilding(0x18);
190 registrationAPI.linkBuildingDoneHandler(elf_woodcutter_master, &multiworker_done_handler);
191 registrationAPI.linkBuildingEntryHandler(elf_woodcutter_master, &woodcutter_entry_handler);
192 registrationAPI.applyBuildingTag(elf_woodcutter_master, BuildingTag::WOODCUTTER_BUILDING);
193 registrationAPI.applyBuildingTag(elf_woodcutter_master, BuildingTag::MASTER_BUILDING);
194 registrationAPI.applyBuildingTag(elf_woodcutter_master, BuildingTag::HABITABLE_BUILDING);
195 elf_woodcutter_master->race = 3;
196
197 SFBuilding *elf_woodcutter = registrationAPI.registerBuilding(0x1c);
198 registrationAPI.linkBuildingDoneHandler(elf_woodcutter, &multiworker_done_handler);
199 registrationAPI.linkBuildingEntryHandler(elf_woodcutter, &woodcutter_entry_handler);
200 registrationAPI.applyBuildingTag(elf_woodcutter, BuildingTag::WOODCUTTER_BUILDING);
201 registrationAPI.applyBuildingTag(elf_woodcutter, BuildingTag::HABITABLE_BUILDING);
202 elf_woodcutter->race = 3;
203
204 SFBuilding *dwarf_quarry = registrationAPI.registerBuilding(0x2c);
205 registrationAPI.linkBuildingDoneHandler(dwarf_quarry, &multiworker_done_handler);
206 registrationAPI.linkBuildingEntryHandler(dwarf_quarry, &quarry_entry_handler);
207 registrationAPI.applyBuildingTag(dwarf_quarry, BuildingTag::QUARRY_BUILDING);
208 registrationAPI.applyBuildingTag(dwarf_quarry, BuildingTag::HABITABLE_BUILDING);
209 dwarf_quarry->race = 2;
210
211 SFBuilding *orc_woodcutter = registrationAPI.registerBuilding(0x3d);
212 registrationAPI.linkBuildingDoneHandler(orc_woodcutter, &multiworker_done_handler);
213 registrationAPI.linkBuildingEntryHandler(orc_woodcutter, &woodcutter_entry_handler);
214 registrationAPI.applyBuildingTag(orc_woodcutter, BuildingTag::WOODCUTTER_BUILDING);
215 registrationAPI.applyBuildingTag(orc_woodcutter, BuildingTag::HABITABLE_BUILDING);
216 orc_woodcutter->race = 5;
217
218 SFBuilding *troll_woodcutter = registrationAPI.registerBuilding(0x4d);
219 registrationAPI.linkBuildingDoneHandler(troll_woodcutter, &multiworker_done_handler);
220 registrationAPI.linkBuildingEntryHandler(troll_woodcutter, &woodcutter_entry_handler);
221 registrationAPI.applyBuildingTag(troll_woodcutter, BuildingTag::WOODCUTTER_BUILDING);
222 registrationAPI.applyBuildingTag(troll_woodcutter, BuildingTag::HABITABLE_BUILDING);
223 troll_woodcutter->race = 4;
224
225 SFBuilding *troll_quarry = registrationAPI.registerBuilding(0x4e);
226 registrationAPI.linkBuildingDoneHandler(troll_quarry, &multiworker_done_handler);
227 registrationAPI.linkBuildingEntryHandler(troll_quarry, &quarry_entry_handler);
228 registrationAPI.applyBuildingTag(troll_quarry, BuildingTag::QUARRY_BUILDING);
229 registrationAPI.applyBuildingTag(troll_quarry, BuildingTag::HABITABLE_BUILDING);
230 troll_quarry->race = 4;
231
232 SFBuilding *norcaine_quarry = registrationAPI.registerBuilding(0x58);
233 registrationAPI.linkBuildingDoneHandler(norcaine_quarry, &multiworker_done_handler);
234 registrationAPI.linkBuildingEntryHandler(norcaine_quarry, &quarry_entry_handler);
235 registrationAPI.applyBuildingTag(norcaine_quarry, BuildingTag::QUARRY_BUILDING);
236 registrationAPI.applyBuildingTag(norcaine_quarry, BuildingTag::HABITABLE_BUILDING);
237 norcaine_quarry->race = 6;
238
239 SFBuilding *norcaine_farm = registrationAPI.registerBuilding(0x5c);
240 registrationAPI.linkBuildingDoneHandler(norcaine_farm, &multiworker_done_handler);
241 registrationAPI.linkBuildingEntryHandler(norcaine_farm, &farmer_entry_handler);
242 registrationAPI.applyBuildingTag(norcaine_farm, BuildingTag::FARM_BUILDING);
243 registrationAPI.applyBuildingTag(norcaine_farm, BuildingTag::HABITABLE_BUILDING);
244 norcaine_farm->race = 6;
245
246
247 SFBuilding *human_sawmill = registrationAPI.registerBuilding(0x05);
248 registrationAPI.linkBuildingDoneHandler(human_sawmill, &singleworker_done_handler);
249 registrationAPI.linkBuildingEntryHandler(human_sawmill, &sawmill_entry_handler);
250 registrationAPI.applyBuildingTag(human_sawmill, BuildingTag::SAWMILL_BUILDING);
251 registrationAPI.applyBuildingTag(human_sawmill, BuildingTag::HABITABLE_BUILDING);
252 registrationAPI.applyBuildingTag(human_sawmill, BuildingTag::HABITABLE_SINGLE_BUILDING);
253 human_sawmill->race = 1;
254
255 SFBuilding *human_foodstore = registrationAPI.registerBuilding(0x08);
256 registrationAPI.linkBuildingDoneHandler(human_foodstore, &singleworker_done_handler);
257 registrationAPI.linkBuildingEntryHandler(human_foodstore, &foodstore_entry_handler);
258 registrationAPI.applyBuildingTag(human_foodstore, BuildingTag::FOODSTORE_BUILDING);
259 registrationAPI.applyBuildingTag(human_foodstore, BuildingTag::HABITABLE_BUILDING);
260 registrationAPI.applyBuildingTag(human_foodstore, BuildingTag::HABITABLE_SINGLE_BUILDING);
261 human_foodstore->race = 1;
262
263 SFBuilding *human_smelter = registrationAPI.registerBuilding(0x0f);
264 registrationAPI.linkBuildingDoneHandler(human_smelter, &singleworker_done_handler);
265 registrationAPI.linkBuildingEntryHandler(human_smelter, &smelter_entry_handler);
266 registrationAPI.applyBuildingTag(human_smelter, BuildingTag::SMELTER_BUILDING);
267 registrationAPI.applyBuildingTag(human_smelter, BuildingTag::HABITABLE_BUILDING);
268 registrationAPI.applyBuildingTag(human_smelter, BuildingTag::HABITABLE_SINGLE_BUILDING);
269 human_smelter->race = 1;
270
271 SFBuilding *elf_food_store = registrationAPI.registerBuilding(0x1a);
272 registrationAPI.linkBuildingDoneHandler(elf_food_store, &singleworker_done_handler);
273 registrationAPI.linkBuildingEntryHandler(elf_food_store, &foodstore_entry_handler);
274 registrationAPI.applyBuildingTag(elf_food_store, BuildingTag::FOODSTORE_BUILDING);
275 registrationAPI.applyBuildingTag(elf_food_store, BuildingTag::HABITABLE_BUILDING);
276 registrationAPI.applyBuildingTag(elf_food_store, BuildingTag::HABITABLE_SINGLE_BUILDING);
277 elf_food_store->race = 3;
278
279 SFBuilding *dwarf_stonecutter = registrationAPI.registerBuilding(0x2e);
280 registrationAPI.linkBuildingDoneHandler(dwarf_stonecutter, &singleworker_done_handler);
281 registrationAPI.linkBuildingEntryHandler(dwarf_stonecutter, &sawmill_entry_handler);
282 registrationAPI.applyBuildingTag(dwarf_stonecutter, BuildingTag::STONEMASON_BUILDING);
283 registrationAPI.applyBuildingTag(dwarf_stonecutter, BuildingTag::HABITABLE_BUILDING);
284 registrationAPI.applyBuildingTag(dwarf_stonecutter, BuildingTag::HABITABLE_SINGLE_BUILDING);
285 dwarf_stonecutter->race = 2;
286
287 SFBuilding *dwarf_food_store = registrationAPI.registerBuilding(0x2f);
288 registrationAPI.linkBuildingDoneHandler(dwarf_food_store, &singleworker_done_handler);
289 registrationAPI.linkBuildingEntryHandler(dwarf_food_store, &foodstore_entry_handler);
290 registrationAPI.applyBuildingTag(dwarf_food_store, BuildingTag::FOODSTORE_BUILDING);
291 registrationAPI.applyBuildingTag(dwarf_food_store, BuildingTag::HABITABLE_BUILDING);
292 registrationAPI.applyBuildingTag(dwarf_food_store, BuildingTag::HABITABLE_SINGLE_BUILDING);
293 dwarf_food_store->race = 2;
294
295 SFBuilding *dwarf_smelter = registrationAPI.registerBuilding(0x34);
296 registrationAPI.linkBuildingDoneHandler(dwarf_smelter, &singleworker_done_handler);
297 registrationAPI.linkBuildingEntryHandler(dwarf_smelter, &smelter_entry_handler);
298 registrationAPI.applyBuildingTag(dwarf_smelter, BuildingTag::SMELTER_BUILDING);
299 registrationAPI.applyBuildingTag(dwarf_smelter, BuildingTag::HABITABLE_BUILDING);
300 registrationAPI.applyBuildingTag(dwarf_smelter, BuildingTag::HABITABLE_SINGLE_BUILDING);
301 dwarf_smelter->race = 2;
302
303 SFBuilding *elf_sawmill = registrationAPI.registerBuilding(0x37);
304 registrationAPI.linkBuildingDoneHandler(elf_sawmill, &singleworker_done_handler);
305 registrationAPI.linkBuildingEntryHandler(elf_sawmill, &sawmill_entry_handler);
306 registrationAPI.applyBuildingTag(elf_sawmill, BuildingTag::SAWMILL_BUILDING);
307 registrationAPI.applyBuildingTag(elf_sawmill, BuildingTag::HABITABLE_BUILDING);
308 registrationAPI.applyBuildingTag(elf_sawmill, BuildingTag::HABITABLE_SINGLE_BUILDING);
309 elf_sawmill->race = 3;
310
311 SFBuilding *orc_smelter = registrationAPI.registerBuilding(0x3e);
312 registrationAPI.linkBuildingDoneHandler(orc_smelter, &singleworker_done_handler);
313 registrationAPI.linkBuildingEntryHandler(orc_smelter, &smelter_entry_handler);
314 registrationAPI.applyBuildingTag(orc_smelter, BuildingTag::SMELTER_BUILDING);
315 registrationAPI.applyBuildingTag(orc_smelter, BuildingTag::HABITABLE_BUILDING);
316 registrationAPI.applyBuildingTag(orc_smelter, BuildingTag::HABITABLE_SINGLE_BUILDING);
317 orc_smelter->race = 5;
318
319 SFBuilding *orc_food_store = registrationAPI.registerBuilding(0x3f);
320 registrationAPI.linkBuildingDoneHandler(orc_food_store, &singleworker_done_handler);
321 registrationAPI.linkBuildingEntryHandler(orc_food_store, &foodstore_entry_handler);
322 registrationAPI.applyBuildingTag(orc_food_store, BuildingTag::FOODSTORE_BUILDING);
323 registrationAPI.applyBuildingTag(orc_food_store, BuildingTag::HABITABLE_BUILDING);
324 registrationAPI.applyBuildingTag(orc_food_store, BuildingTag::HABITABLE_SINGLE_BUILDING);
325 orc_food_store->race = 5;
326
327 SFBuilding *troll_food_store = registrationAPI.registerBuilding(0x4f);
328 registrationAPI.linkBuildingDoneHandler(troll_food_store, &singleworker_done_handler);
329 registrationAPI.linkBuildingEntryHandler(troll_food_store, &foodstore_entry_handler);
330 registrationAPI.applyBuildingTag(troll_food_store, BuildingTag::FOODSTORE_BUILDING);
331 registrationAPI.applyBuildingTag(troll_food_store, BuildingTag::HABITABLE_BUILDING);
332 registrationAPI.applyBuildingTag(troll_food_store, BuildingTag::HABITABLE_SINGLE_BUILDING);
333 troll_food_store->race = 4;
334
335 SFBuilding *norcaine_stonecutter = registrationAPI.registerBuilding(0x5a);
336 registrationAPI.linkBuildingDoneHandler(norcaine_stonecutter, &singleworker_done_handler);
337 registrationAPI.linkBuildingEntryHandler(norcaine_stonecutter, &sawmill_entry_handler);
338 registrationAPI.applyBuildingTag(norcaine_stonecutter, BuildingTag::STONEMASON_BUILDING);
339 registrationAPI.applyBuildingTag(norcaine_stonecutter, BuildingTag::HABITABLE_BUILDING);
340 registrationAPI.applyBuildingTag(norcaine_stonecutter, BuildingTag::HABITABLE_SINGLE_BUILDING);
341 norcaine_stonecutter->race = 6;
342
343 SFBuilding *norcaine_food_store = registrationAPI.registerBuilding(0x5b);
344 registrationAPI.linkBuildingDoneHandler(norcaine_food_store, &singleworker_done_handler);
345 registrationAPI.linkBuildingEntryHandler(norcaine_food_store, &foodstore_entry_handler);
346 registrationAPI.applyBuildingTag(norcaine_food_store, BuildingTag::FOODSTORE_BUILDING);
347 registrationAPI.applyBuildingTag(norcaine_food_store, BuildingTag::HABITABLE_BUILDING);
348 registrationAPI.applyBuildingTag(norcaine_food_store, BuildingTag::HABITABLE_SINGLE_BUILDING);
349 norcaine_food_store->race = 6;
350
351 SFBuilding *norcaine_smelter = registrationAPI.registerBuilding(0x5e);
352 registrationAPI.linkBuildingDoneHandler(norcaine_smelter, &singleworker_done_handler);
353 registrationAPI.linkBuildingEntryHandler(norcaine_smelter, &smelter_entry_handler);
354 registrationAPI.applyBuildingTag(norcaine_smelter, BuildingTag::SMELTER_BUILDING);
355 registrationAPI.applyBuildingTag(norcaine_smelter, BuildingTag::HABITABLE_BUILDING);
356 registrationAPI.applyBuildingTag(norcaine_smelter, BuildingTag::HABITABLE_SINGLE_BUILDING);
357 norcaine_smelter->race = 6;
358
359
360 SFBuilding *human_breeder = registrationAPI.registerBuilding(0x06);
361 registrationAPI.linkBuildingDoneHandler(human_breeder, &breeder_done_handler);
362 registrationAPI.linkBuildingEntryHandler(human_breeder, &cattle_breeder_entry_handler);
363 registrationAPI.applyBuildingTag(human_breeder, BuildingTag::BREEDER_BUILDING);
364 registrationAPI.applyBuildingTag(human_breeder, BuildingTag::HABITABLE_BUILDING);
365 registrationAPI.applyBuildingTag(human_breeder, BuildingTag::HABITABLE_SINGLE_BUILDING);
366 human_breeder->race = 1;
367
368 SFBuilding *dwarf_breeder = registrationAPI.registerBuilding(0x30);
369 registrationAPI.linkBuildingDoneHandler(dwarf_breeder, &breeder_done_handler);
370 registrationAPI.linkBuildingEntryHandler(dwarf_breeder, &cattle_breeder_entry_handler);
371 registrationAPI.applyBuildingTag(dwarf_breeder, BuildingTag::BREEDER_BUILDING);
372 registrationAPI.applyBuildingTag(dwarf_breeder, BuildingTag::HABITABLE_BUILDING);
373 registrationAPI.applyBuildingTag(dwarf_breeder, BuildingTag::HABITABLE_SINGLE_BUILDING);
374 dwarf_breeder->race = 2;
375
376 SFBuilding *orc_breeder = registrationAPI.registerBuilding(0x42);
377 registrationAPI.linkBuildingDoneHandler(orc_breeder, &breeder_done_handler);
378 registrationAPI.linkBuildingEntryHandler(orc_breeder, &cattle_breeder_entry_handler);
379 registrationAPI.applyBuildingTag(orc_breeder, BuildingTag::BREEDER_BUILDING);
380 registrationAPI.applyBuildingTag(orc_breeder, BuildingTag::HABITABLE_BUILDING);
381 registrationAPI.applyBuildingTag(orc_breeder, BuildingTag::HABITABLE_SINGLE_BUILDING);
382 orc_breeder->race = 5;
383
384 SFBuilding *norcaine_breeder = registrationAPI.registerBuilding(0x5d);
385 registrationAPI.linkBuildingDoneHandler(norcaine_breeder, &breeder_done_handler);
386 registrationAPI.linkBuildingEntryHandler(norcaine_breeder, &cattle_breeder_entry_handler);
387 registrationAPI.applyBuildingTag(norcaine_breeder, BuildingTag::BREEDER_BUILDING);
388 registrationAPI.applyBuildingTag(norcaine_breeder, BuildingTag::HABITABLE_BUILDING);
389 registrationAPI.applyBuildingTag(norcaine_breeder, BuildingTag::HABITABLE_SINGLE_BUILDING);
390 norcaine_breeder->race = 6;
391
392
393 SFBuilding *human_temple = registrationAPI.registerBuilding(0x11);
394 registrationAPI.linkBuildingDoneHandler(human_temple, &army_worker_done_handler);
395 registrationAPI.linkBuildingEntryHandler(human_temple, &temple_entry_handler);
396 registrationAPI.applyBuildingTag(human_temple, BuildingTag::TEMPLE_BUILDING);
397 registrationAPI.applyBuildingTag(human_temple, BuildingTag::HABITABLE_BUILDING);
398 registrationAPI.applyBuildingTag(human_temple, BuildingTag::HABITABLE_SINGLE_BUILDING);
399 human_temple->race = 1;
400
401 SFBuilding *elf_armory = registrationAPI.registerBuilding(0x22);
402 registrationAPI.linkBuildingDoneHandler(elf_armory, &army_worker_done_handler);
403 registrationAPI.linkBuildingEntryHandler(elf_armory, &forge_entry_handler);
404 registrationAPI.applyBuildingTag(elf_armory, BuildingTag::FORGE_BUILDING);
405 registrationAPI.applyBuildingTag(elf_armory, BuildingTag::HABITABLE_BUILDING);
406 registrationAPI.applyBuildingTag(elf_armory, BuildingTag::HABITABLE_SINGLE_BUILDING);
407 elf_armory->race = 3;
408
409 SFBuilding *elf_temple = registrationAPI.registerBuilding(0x24);
410 registrationAPI.linkBuildingDoneHandler(elf_temple, &army_worker_done_handler);
411 registrationAPI.linkBuildingEntryHandler(elf_temple, &temple_entry_handler);
412 registrationAPI.applyBuildingTag(elf_temple, BuildingTag::TEMPLE_BUILDING);
413 registrationAPI.applyBuildingTag(elf_temple, BuildingTag::HABITABLE_BUILDING);
414 registrationAPI.applyBuildingTag(elf_temple, BuildingTag::HABITABLE_SINGLE_BUILDING);
415 elf_temple->race = 3;
416
417 SFBuilding *dwarf_forge = registrationAPI.registerBuilding(0x35);
418 registrationAPI.linkBuildingDoneHandler(dwarf_forge, &army_worker_done_handler);
419 registrationAPI.linkBuildingEntryHandler(dwarf_forge, &forge_entry_handler);
420 registrationAPI.applyBuildingTag(dwarf_forge, BuildingTag::FORGE_BUILDING);
421 registrationAPI.applyBuildingTag(dwarf_forge, BuildingTag::HABITABLE_BUILDING);
422 registrationAPI.applyBuildingTag(dwarf_forge, BuildingTag::HABITABLE_SINGLE_BUILDING);
423 dwarf_forge->race = 2;
424
425 SFBuilding *orc_forge = registrationAPI.registerBuilding(0x44);
426 registrationAPI.linkBuildingDoneHandler(orc_forge, &army_worker_done_handler);
427 registrationAPI.linkBuildingEntryHandler(orc_forge, &forge_entry_handler);
428 registrationAPI.applyBuildingTag(orc_forge, BuildingTag::FORGE_BUILDING);
429 registrationAPI.applyBuildingTag(orc_forge, BuildingTag::HABITABLE_BUILDING);
430 registrationAPI.applyBuildingTag(orc_forge, BuildingTag::HABITABLE_SINGLE_BUILDING);
431 orc_forge->race = 5;
432
433 SFBuilding *orc_temple = registrationAPI.registerBuilding(0x46);
434 registrationAPI.linkBuildingDoneHandler(orc_temple, &army_worker_done_handler);
435 registrationAPI.linkBuildingEntryHandler(orc_temple, &temple_entry_handler);
436 registrationAPI.applyBuildingTag(orc_temple, BuildingTag::TEMPLE_BUILDING);
437 registrationAPI.applyBuildingTag(orc_temple, BuildingTag::HABITABLE_BUILDING);
438 registrationAPI.applyBuildingTag(orc_temple, BuildingTag::HABITABLE_SINGLE_BUILDING);
439 orc_temple->race = 5;
440
441 SFBuilding *human_forge = registrationAPI.registerBuilding(0x4b);
442 registrationAPI.linkBuildingDoneHandler(human_forge, &army_worker_done_handler);
443 registrationAPI.linkBuildingEntryHandler(human_forge, &forge_entry_handler);
444 registrationAPI.applyBuildingTag(human_forge, BuildingTag::FORGE_BUILDING);
445 registrationAPI.applyBuildingTag(human_forge, BuildingTag::HABITABLE_BUILDING);
446 registrationAPI.applyBuildingTag(human_forge, BuildingTag::HABITABLE_SINGLE_BUILDING);
447 human_forge->race = 1;
448
449 SFBuilding *troll_armory = registrationAPI.registerBuilding(0x53);
450 registrationAPI.linkBuildingDoneHandler(troll_armory, &army_worker_done_handler);
451 registrationAPI.linkBuildingEntryHandler(troll_armory, &forge_entry_handler);
452 registrationAPI.applyBuildingTag(troll_armory, BuildingTag::FORGE_BUILDING);
453 registrationAPI.applyBuildingTag(troll_armory, BuildingTag::HABITABLE_BUILDING);
454 registrationAPI.applyBuildingTag(troll_armory, BuildingTag::HABITABLE_SINGLE_BUILDING);
455 troll_armory->race = 4;
456
457 SFBuilding *norcaine_forge = registrationAPI.registerBuilding(0x60);
458 registrationAPI.linkBuildingDoneHandler(norcaine_forge, &army_worker_done_handler);
459 registrationAPI.linkBuildingEntryHandler(norcaine_forge, &forge_entry_handler);
460 registrationAPI.applyBuildingTag(norcaine_forge, BuildingTag::FORGE_BUILDING);
461 registrationAPI.applyBuildingTag(norcaine_forge, BuildingTag::HABITABLE_BUILDING);
462 registrationAPI.applyBuildingTag(norcaine_forge, BuildingTag::HABITABLE_SINGLE_BUILDING);
463 norcaine_forge->race = 6;
464
465 SFBuilding *norcaine_temple = registrationAPI.registerBuilding(0x64);
466 registrationAPI.linkBuildingDoneHandler(norcaine_temple, &army_worker_done_handler);
467 registrationAPI.linkBuildingEntryHandler(norcaine_temple, &temple_entry_handler);
468 registrationAPI.applyBuildingTag(norcaine_temple, BuildingTag::TEMPLE_BUILDING);
469 registrationAPI.applyBuildingTag(norcaine_temple, BuildingTag::HABITABLE_BUILDING);
470 registrationAPI.applyBuildingTag(norcaine_temple, BuildingTag::HABITABLE_SINGLE_BUILDING);
471 norcaine_temple->race = 6;
472
473 SFBuilding *orc_armory = registrationAPI.registerBuilding(0x89);
474 registrationAPI.linkBuildingDoneHandler(orc_armory, &army_worker_done_handler);
475 registrationAPI.linkBuildingEntryHandler(orc_armory, &mace_carver_entry_handler);
476 registrationAPI.applyBuildingTag(orc_armory, BuildingTag::MACE_CARVER_BUILDING);
477 registrationAPI.applyBuildingTag(orc_armory, BuildingTag::HABITABLE_BUILDING);
478 registrationAPI.applyBuildingTag(orc_armory, BuildingTag::HABITABLE_SINGLE_BUILDING);
479 orc_armory->race = 5;
480
481
482 SFBuilding *human_crossbow_tower = registrationAPI.registerBuilding(0x0d);
483 registrationAPI.linkBuildingDoneHandler(human_crossbow_tower, &human_crossbow_tower_done_handler);
484 registrationAPI.applyBuildingTag(human_crossbow_tower, BuildingTag::TOWER_BUILDING);
485 human_crossbow_tower->race = 1;
486
487 SFBuilding *human_white_hand = registrationAPI.registerBuilding(0x20);
488 registrationAPI.linkBuildingDoneHandler(human_white_hand, &human_white_hand_done_handler);
489 registrationAPI.applyBuildingTag(human_white_hand, BuildingTag::TOWER_BUILDING);
490 human_white_hand->race = 1;
491
492 SFBuilding *elf_archer_tower = registrationAPI.registerBuilding(0x26);
493 registrationAPI.linkBuildingDoneHandler(elf_archer_tower, &elf_archer_tower_done_handler);
494 registrationAPI.applyBuildingTag(elf_archer_tower, BuildingTag::TOWER_BUILDING);
495 elf_archer_tower->race = 3;
496
497 SFBuilding *elf_frostbringer = registrationAPI.registerBuilding(0x27);
498 registrationAPI.linkBuildingDoneHandler(elf_frostbringer, &elf_frostbringer_done_handler);
499 registrationAPI.applyBuildingTag(elf_frostbringer, BuildingTag::TOWER_BUILDING);
500 elf_frostbringer->race = 3;
501
502 SFBuilding *orc_firestarter = registrationAPI.registerBuilding(0x47);
503 registrationAPI.linkBuildingDoneHandler(orc_firestarter, &orc_firestarter_done_handler);
504 registrationAPI.applyBuildingTag(orc_firestarter, BuildingTag::TOWER_BUILDING);
505 orc_firestarter->race = 5;
506
507 SFBuilding *troll_stonethrower = registrationAPI.registerBuilding(0x54);
508 registrationAPI.linkBuildingDoneHandler(troll_stonethrower, &troll_stonethrower_done_handler);
509 registrationAPI.applyBuildingTag(troll_stonethrower, BuildingTag::TOWER_BUILDING);
510 troll_stonethrower->race = 4;
511
512 SFBuilding *norcaine_sorcery_tower = registrationAPI.registerBuilding(0x66);
513 registrationAPI.linkBuildingDoneHandler(norcaine_sorcery_tower, &norcaine_sorcery_tower_done_handler);
514 registrationAPI.applyBuildingTag(norcaine_sorcery_tower, BuildingTag::TOWER_BUILDING);
515 norcaine_sorcery_tower->race = 6;
516
517 SFBuilding *norcaine_mindbreaker = registrationAPI.registerBuilding(0x67);
518 registrationAPI.linkBuildingDoneHandler(norcaine_mindbreaker, &norcaine_mindbreaker_done_handler);
519 registrationAPI.applyBuildingTag(norcaine_mindbreaker, BuildingTag::TOWER_BUILDING);
520 norcaine_mindbreaker->race = 6;
521
522 SFBuilding *npc_stonethrower = registrationAPI.registerBuilding(0x78);
523 registrationAPI.linkBuildingDoneHandler(npc_stonethrower, &npc_stonethrower_done_handler);
524 registrationAPI.applyBuildingTag(npc_stonethrower, BuildingTag::TOWER_BUILDING);
525
526 SFBuilding *npc_crossbow_tower = registrationAPI.registerBuilding(0x7b);
527 registrationAPI.linkBuildingDoneHandler(npc_crossbow_tower, &npc_crossbow_tower_done_handler);
528 registrationAPI.applyBuildingTag(npc_crossbow_tower, BuildingTag::TOWER_BUILDING);
529
530 SFBuilding *wulfgar_crossbow_tower = registrationAPI.registerBuilding(0x7c);
531 registrationAPI.linkBuildingDoneHandler(wulfgar_crossbow_tower, &wulfgar_crossbow_tower_done_handler);
532 registrationAPI.applyBuildingTag(wulfgar_crossbow_tower, BuildingTag::TOWER_BUILDING);
533
534 SFBuilding *wulfgar_crossbow_tower2 = registrationAPI.registerBuilding(0x92);
535 registrationAPI.linkBuildingDoneHandler(wulfgar_crossbow_tower2, &wulfgar_crossbow_tower_done_handler2);
536 registrationAPI.applyBuildingTag(wulfgar_crossbow_tower2, BuildingTag::TOWER_BUILDING);
537
538 SFBuilding *npc_firestarter = registrationAPI.registerBuilding(0x93);
539 registrationAPI.linkBuildingDoneHandler(npc_firestarter, &npc_firestarter_done_handler);
540 registrationAPI.applyBuildingTag(npc_firestarter, BuildingTag::TOWER_BUILDING);
541
542 SFBuilding *undead_bone_tower = registrationAPI.registerBuilding(0x95);
543 registrationAPI.linkBuildingDoneHandler(undead_bone_tower, &undead_bone_tower_done_handler);
544 registrationAPI.applyBuildingTag(undead_bone_tower, BuildingTag::TOWER_BUILDING);
545
546 SFBuilding *npc_white_hand = registrationAPI.registerBuilding(0x97);
547 registrationAPI.linkBuildingDoneHandler(npc_white_hand, &npc_white_hand_done_handler);
548 registrationAPI.applyBuildingTag(npc_white_hand, BuildingTag::TOWER_BUILDING);
549
550 SFBuilding *blade_black_tower = registrationAPI.registerBuilding(0xa0);
551 registrationAPI.linkBuildingDoneHandler(blade_black_tower, &blade_black_tower_done_handler);
552 registrationAPI.applyBuildingTag(blade_black_tower, BuildingTag::TOWER_BUILDING);
553
554 SFBuilding *npc_spitflower = registrationAPI.registerBuilding(0xa1);
555 registrationAPI.linkBuildingDoneHandler(npc_spitflower, &npc_spitflower_done_handler);
556 registrationAPI.applyBuildingTag(npc_spitflower, BuildingTag::TOWER_BUILDING);
557
558 SFBuilding *npc_frostbringer = registrationAPI.registerBuilding(0xa3);
559 registrationAPI.linkBuildingDoneHandler(npc_frostbringer, &npc_frostbringer_done_handler);
560 registrationAPI.applyBuildingTag(npc_frostbringer, BuildingTag::TOWER_BUILDING);
561
562 SFBuilding *blade_black_tower2 = registrationAPI.registerBuilding(0xa4);
563 registrationAPI.linkBuildingDoneHandler(blade_black_tower2, &blade_black_tower_done_handler2);
564 registrationAPI.applyBuildingTag(blade_black_tower2, BuildingTag::TOWER_BUILDING);
565
566 SFBuilding *blade_dark_crystal = registrationAPI.registerBuilding(0xa5);
567 registrationAPI.linkBuildingDoneHandler(blade_dark_crystal, &blade_dark_crystal_done_handler);
568 registrationAPI.applyBuildingTag(blade_dark_crystal, BuildingTag::TOWER_BUILDING);
569
570 SFBuilding *blade_dark_mananode = registrationAPI.registerBuilding(0xa6);
571 registrationAPI.linkBuildingDoneHandler(blade_dark_mananode, &blade_dark_mananode_done_handler);
572 registrationAPI.applyBuildingTag(blade_dark_mananode, BuildingTag::TOWER_BUILDING);
573
574 SFBuilding *npc_mindbreaker = registrationAPI.registerBuilding(0xa7);
575 registrationAPI.linkBuildingDoneHandler(npc_mindbreaker, &npc_mindbreaker_done_handler);
576 registrationAPI.applyBuildingTag(npc_mindbreaker, BuildingTag::TOWER_BUILDING);
577
578 SFBuilding *npc_holy_statue = registrationAPI.registerBuilding(0xa8);
579 registrationAPI.linkBuildingDoneHandler(npc_holy_statue, &npc_holy_statue_done_handler);
580 registrationAPI.applyBuildingTag(npc_holy_statue, BuildingTag::TOWER_BUILDING);
581
582 SFBuilding *npc_sun_tower = registrationAPI.registerBuilding(0xa9);
583 registrationAPI.linkBuildingDoneHandler(npc_sun_tower, &npc_sun_tower_done_handler);
584 registrationAPI.applyBuildingTag(npc_sun_tower, BuildingTag::TOWER_BUILDING);
585
586 SFBuilding *npc_moon_tower = registrationAPI.registerBuilding(0xaa);
587 registrationAPI.linkBuildingDoneHandler(npc_moon_tower, &npc_moon_tower_done_handler);
588 registrationAPI.applyBuildingTag(npc_moon_tower, BuildingTag::TOWER_BUILDING);
589
590 SFBuilding *npc_spitflower2 = registrationAPI.registerBuilding(0xac);
591 registrationAPI.linkBuildingDoneHandler(npc_spitflower2, &npc_spitflower_done_handler2);
592 registrationAPI.applyBuildingTag(npc_spitflower2, BuildingTag::TOWER_BUILDING);
593
594 SFBuilding *npc_sorcery_tower = registrationAPI.registerBuilding(0xb2);
595 registrationAPI.linkBuildingDoneHandler(npc_sorcery_tower, &npc_sorcery_tower_done_handler);
596 registrationAPI.applyBuildingTag(npc_sorcery_tower, BuildingTag::TOWER_BUILDING);
597
598 SFBuilding *npc_sorcery_tower2 = registrationAPI.registerBuilding(0xd1);
599 registrationAPI.linkBuildingDoneHandler(npc_sorcery_tower2, &npc_sorcery_tower_done_handler2);
600 registrationAPI.applyBuildingTag(npc_sorcery_tower2, BuildingTag::TOWER_BUILDING);
601
602 SFBuilding *undead_bone_tower2 = registrationAPI.registerBuilding(0xd2);
603 registrationAPI.linkBuildingDoneHandler(undead_bone_tower2, &undead_bone_tower_done_handler2);
604 registrationAPI.applyBuildingTag(undead_bone_tower2, BuildingTag::TOWER_BUILDING);
605
606 SFBuilding *undead_bone_tower3 = registrationAPI.registerBuilding(0xd3);
607 registrationAPI.linkBuildingDoneHandler(undead_bone_tower3, &undead_bone_tower_done_handler3);
608 registrationAPI.applyBuildingTag(undead_bone_tower3, BuildingTag::TOWER_BUILDING);
609
610 SFBuilding *npc_firestarter2 = registrationAPI.registerBuilding(0xd4);
611 registrationAPI.linkBuildingDoneHandler(npc_firestarter2, &npc_firestarter_done_handler2);
612 registrationAPI.applyBuildingTag(npc_firestarter2, BuildingTag::TOWER_BUILDING);
613
614 SFBuilding *blade_black_tower3 = registrationAPI.registerBuilding(0xd5);
615 registrationAPI.linkBuildingDoneHandler(blade_black_tower3, &blade_black_tower_done_handler3);
616 registrationAPI.applyBuildingTag(blade_black_tower3, BuildingTag::TOWER_BUILDING);
617
618
619}
620
622{
624
625 // TODO Remove me after testing is done
626 //SFBuilding *test_building = registrationAPI.registerBuilding("test_building");
627
628 SFSpell *fireburst = registrationAPI.registerSpell(kGdSpellLineFireBurst);
629 registrationAPI.linkTypeHandler(fireburst, &fireburst_handler);
630 registrationAPI.linkSingleTargetAIHandler(fireburst, &fireburst_ai_handler);
631 registrationAPI.applySpellTag(fireburst, SpellTag::STACKABLE_SPELL);
632
633 SFSpell *healing = registrationAPI.registerSpell(kGdSpellLineHealing);
634 registrationAPI.linkTypeHandler(healing, &healing_handler);
635 registrationAPI.applySpellTag(healing, STACKABLE_SPELL);
636 registrationAPI.linkSingleTargetAIHandler(healing, &healing_ai_handler);
637
638 SFSpell *death = registrationAPI.registerSpell(kGdSpellLineDeath);
639 registrationAPI.linkTypeHandler(death, &death_handler);
640 registrationAPI.linkSingleTargetAIHandler(death, &death_ai_handler);
641
642 SFSpell *slowness = registrationAPI.registerSpell(kGdSpellLineSlowness);
643 registrationAPI.linkTypeHandler(slowness, &slowness_handler);
644
645 SFSpell *poison = registrationAPI.registerSpell(kGdSpellLinePoison);
646 registrationAPI.linkTypeHandler(poison, &poison_handler);
647 registrationAPI.linkSingleTargetAIHandler(poison, &fireburst_ai_handler);
648
649 SFSpell *invulnerability = registrationAPI.registerSpell(kGdSpellLineInvulnerability);
650 registrationAPI.linkTypeHandler(invulnerability, &invulnerability_handler);
651 registrationAPI.linkAvoidanceAIHandler(invulnerability, &sf_ai_avoidance_invulnerability_handler);
652
653 SFSpell *cure_poison = registrationAPI.registerSpell(kGdSpellLineCurePoison);
654 registrationAPI.linkTypeHandler(cure_poison, &cure_poison_handler);
655 registrationAPI.linkSingleTargetAIHandler(cure_poison, &cure_poison_ai_handler);
656
657 // Empty Spell Type here
658
659 SFSpell *freeze = registrationAPI.registerSpell(kGdSpellLineFreeze);
660 registrationAPI.linkTypeHandler(freeze, &freeze_handler);
661 registrationAPI.linkSingleTargetAIHandler(freeze, &freeze_ai_handler);
662 registrationAPI.linkAvoidanceAIHandler(freeze, &sf_ai_avoidance_freeze_handler);
663
664 SFSpell *fog = registrationAPI.registerSpell(kGdSpellLineFog);
665 registrationAPI.linkTypeHandler(fog, &fog_handler);
666 registrationAPI.linkAOEAIHandler(fog, &fog_ai_handler);
667 registrationAPI.applySpellTag(fog, SpellTag::AOE_SPELL);
668
669 SFSpell *illuminate = registrationAPI.registerSpell(kGdSpellLineIlluminate);
670 registrationAPI.linkTypeHandler(illuminate, &illuminate_handler);
671 registrationAPI.applySpellTag(illuminate, SpellTag::AOE_SPELL);
672
673 SFSpell *fireshield = registrationAPI.registerSpell(kGdSpellLineFireShield);
674 registrationAPI.linkTypeHandler(fireshield, &fireshield_handler);
675 registrationAPI.linkSingleTargetAIHandler(fireshield, &shields_ai_handler);
676 registrationAPI.linkAvoidanceAIHandler(fireshield, &sf_ai_avoidance_shield_handler);
677
678 SFSpell *fireball = registrationAPI.registerSpell(kGdSpellLineFireBall);
679 registrationAPI.linkTypeHandler(fireball, &fireball_handler);
680 registrationAPI.linkSingleTargetAIHandler(fireball, &fireburst_ai_handler);
681 registrationAPI.applySpellTag(fireball, SpellTag::STACKABLE_SPELL);
682
683 SFSpell *icestrike = registrationAPI.registerSpell(kGdSpellLineIceBurst);
684 registrationAPI.linkTypeHandler(icestrike, &icestrike_handler);
685 registrationAPI.linkSingleTargetAIHandler(icestrike, &fireburst_ai_handler);
686 registrationAPI.applySpellTag(icestrike, SpellTag::STACKABLE_SPELL);
687
688 SFSpell *iceshield = registrationAPI.registerSpell(kGdSpellLineIceShield);
689 registrationAPI.linkTypeHandler(iceshield, &iceshield_handler);
690 registrationAPI.linkSingleTargetAIHandler(iceshield, &shields_ai_handler);
691 registrationAPI.linkAvoidanceAIHandler(iceshield, &sf_ai_avoidance_shield_handler);
692
693 // next block
694
695 SFSpell *decay_1 = registrationAPI.registerSpell(kGdSpellLineDecay);
696 registrationAPI.linkTypeHandler(decay_1, &decay1_handler);
697
698 SFSpell *decay_2 = registrationAPI.registerSpell(kGdSpellLineDecayArea);
699 registrationAPI.linkTypeHandler(decay_2, &decay2_handler);
700
701 SFSpell *pain = registrationAPI.registerSpell(kGdSpellLinePain);
702 registrationAPI.linkTypeHandler(pain, &pain_handler);
703 registrationAPI.linkSingleTargetAIHandler(pain, &death_ai_handler);
704
705 SFSpell *lifetap = registrationAPI.registerSpell(kGdSpellLineLifeTap);
706 registrationAPI.linkTypeHandler(lifetap, &lifetap_handler);
707 registrationAPI.linkSingleTargetAIHandler(lifetap, &lifetap_ai_handler);
708
709 SFSpell *summon_1 = registrationAPI.registerSpell(kGdSpellLineSummonGoblin);
710 registrationAPI.linkTypeHandler(summon_1, &summons_handler);
711 registrationAPI.applySpellTag(summon_1, SpellTag::SUMMON_SPELL);
712 registrationAPI.applySpellTag(summon_1, SpellTag::STACKABLE_SPELL);
713 registrationAPI.linkSingleTargetAIHandler(summon_1, &summon_ai_handler);
714
715 SFSpell *hypnotize = registrationAPI.registerSpell(kGdSpellLineHypnotize);
716 registrationAPI.linkTypeHandler(hypnotize, &hypnotize_handler);
717 registrationAPI.linkSingleTargetAIHandler(hypnotize, &hypnotize_ai_handler);
718 registrationAPI.linkAvoidanceAIHandler(hypnotize, &sf_ai_avoidance_hypnotize_handler);
719
720 SFSpell *iceshield2 = registrationAPI.registerSpell(kGdSpellLineIceShieldStun);
721 registrationAPI.linkTypeHandler(iceshield2, &iceshield2_handler);
722
723 SFSpell *pestilence = registrationAPI.registerSpell(kGdSpellLinePestilence);
724 registrationAPI.linkTypeHandler(pestilence, &pestilence_handler);
725 registrationAPI.linkSingleTargetAIHandler(pestilence, &fireburst_ai_handler);
726
727 SFSpell *cure_disease = registrationAPI.registerSpell(kGdSpellLineCureDisease);
728 registrationAPI.linkTypeHandler(cure_disease, &cure_disease_handler);
729 registrationAPI.linkSingleTargetAIHandler(cure_disease, &cure_disease_ai_handler);
730
731 SFSpell *petrify = registrationAPI.registerSpell(kGdSpellLinePetrify);
732 registrationAPI.linkTypeHandler(petrify, &petrify_handler);
733 registrationAPI.linkSingleTargetAIHandler(petrify, &petrify_ai_handler);
734 registrationAPI.linkAvoidanceAIHandler(petrify, &sf_ai_avoidance_freeze_handler);
735
736 // Two unused spells here
737
738 SFSpell *area_pain = registrationAPI.registerSpell(kGdSpellLinePainArea);
739 registrationAPI.linkTypeHandler(area_pain, &area_pain_handler);
740 registrationAPI.linkAOEAIHandler(area_pain, &area_pain_ai_handler);
741 registrationAPI.applySpellTag(area_pain, SpellTag::AOE_SPELL);
742
743 SFSpell *summon_2 = registrationAPI.registerSpell(kGdSpellLineSummonSkeleton);
744 registrationAPI.linkTypeHandler(summon_2, &summons_handler);
745 registrationAPI.applySpellTag(summon_2, SpellTag::SUMMON_SPELL);
746 registrationAPI.applySpellTag(summon_2, SpellTag::STACKABLE_SPELL);
747 registrationAPI.linkSingleTargetAIHandler(summon_2, &summon_ai_handler);
748
749 SFSpell *raise_dead = registrationAPI.registerSpell(kGdSpellLineRaiseDead);
750 registrationAPI.linkTypeHandler(raise_dead, &raise_dead_handler);
751 registrationAPI.linkAOEAIHandler(raise_dead, &raise_dead_ai_handler);
752 registrationAPI.applySpellTag(raise_dead, SpellTag::AOE_SPELL);
753
754 SFSpell *summon_3 = registrationAPI.registerSpell(kGdSpellLineSummonDemon);
755 registrationAPI.linkTypeHandler(summon_3, &summons_handler);
756 registrationAPI.applySpellTag(summon_3, SpellTag::SUMMON_SPELL);
757 registrationAPI.applySpellTag(summon_3, SpellTag::STACKABLE_SPELL);
758 registrationAPI.linkSingleTargetAIHandler(summon_3, &summon_ai_handler);
759
760 SFSpell *death_grasp = registrationAPI.registerSpell(kGdSpellLineDeathGrasp);
761 registrationAPI.linkTypeHandler(death_grasp, &death_grasp_handler);
762 registrationAPI.linkSingleTargetAIHandler(death_grasp, &death_grasp_ai_handler);
763
764 SFSpell *summon_4 = registrationAPI.registerSpell(kGdSpellLineSummonChanneler);
765 registrationAPI.linkTypeHandler(summon_4, &summons_handler);
766 registrationAPI.applySpellTag(summon_4, SpellTag::SUMMON_SPELL);
767 registrationAPI.applySpellTag(summon_4, SpellTag::STACKABLE_SPELL);
768 registrationAPI.linkSingleTargetAIHandler(summon_4, &summon_ai_handler);
769
770 SFSpell *inflexibility = registrationAPI.registerSpell(kGdSpellLineInflexibility);
771 registrationAPI.linkTypeHandler(inflexibility, &inflexibility_handler);
772
773 SFSpell *weaken = registrationAPI.registerSpell(kGdSpellLineWeaken);
774 registrationAPI.linkTypeHandler(weaken, &weaken_handler);
775
776 SFSpell *dark_banishing = registrationAPI.registerSpell(kGdSpellLineDarkBanishing);
777 registrationAPI.linkTypeHandler(dark_banishing, &dark_banishing_handler);
778
779 SFSpell *area_slowness = registrationAPI.registerSpell(kGdSpellLineSlownessArea);
780 registrationAPI.linkTypeHandler(area_slowness, &area_slowness_handler);
781
782 SFSpell *area_inflexibility = registrationAPI.registerSpell(kGdSpellLineInflexibilityArea);
783 registrationAPI.linkTypeHandler(area_inflexibility, &area_inflexibility_handler);
784
785 SFSpell *area_weaken = registrationAPI.registerSpell(kGdSpellLineWeakenArea);
786 registrationAPI.linkTypeHandler(area_weaken, &area_weaken_handler);
787
788 SFSpell *area_plauge = registrationAPI.registerSpell(kGdSpellLinePlagueArea);
789 registrationAPI.linkTypeHandler(area_plauge, &area_plague_handler);
790
791 SFSpell *remediless = registrationAPI.registerSpell(kGdSpellLineRemediless);
792 registrationAPI.linkTypeHandler(remediless, &remediless_handler);
793
794 // Unused Spell here
795
796 SFSpell *area_healing = registrationAPI.registerSpell(kGdSpellLineHealingArea);
797 registrationAPI.linkTypeHandler(area_healing, &area_healing_handler);
798 registrationAPI.linkAOEAIHandler(area_healing, &area_heal_ai_handler);
799 registrationAPI.applySpellTag(area_healing, SpellTag::AOE_SPELL);
800
801 SFSpell *sentinel_healing = registrationAPI.registerSpell(kGdSpellLineSentinelHealing);
802 registrationAPI.linkTypeHandler(sentinel_healing, &sentinel_healing_handler);
803 registrationAPI.applySpellTag(sentinel_healing, SpellTag::AOE_SPELL);
804
805 SFSpell *healing2 = registrationAPI.registerSpell(kGdSpellLineGreaterHealing);
806 registrationAPI.linkTypeHandler(healing2, &healing_handler);
807 registrationAPI.applySpellTag(healing2, STACKABLE_SPELL);
808 registrationAPI.linkSingleTargetAIHandler(healing2, &healing_ai_handler);
809
810 SFSpell *charm_animal = registrationAPI.registerSpell(kGdSpellLineCharmAnimal);
811 registrationAPI.linkTypeHandler(charm_animal, &charm_animal_handler);
812 registrationAPI.applySpellTag(charm_animal, SpellTag::DOMINATION_SPELL);
813 registrationAPI.linkSingleTargetAIHandler(charm_animal, &charm_ai_handler);
814
815 SFSpell *thorn_shield = registrationAPI.registerSpell(kGdSpellLineThornShield);
816 registrationAPI.linkTypeHandler(thorn_shield, &thorn_shield_handler);
817 registrationAPI.linkAvoidanceAIHandler(thorn_shield, &sf_ai_avoidance_shield_handler);
818 registrationAPI.linkSingleTargetAIHandler(thorn_shield, &shields_ai_handler);
819
820 SFSpell *quickness = registrationAPI.registerSpell(kGdSpellLineQuickness);
821 registrationAPI.linkTypeHandler(quickness, &quickness_handler);
822
823 SFSpell *area_quickness = registrationAPI.registerSpell(kGdSpellLineQuicknessArea);
824 registrationAPI.linkTypeHandler(area_quickness, &area_quickness_handler);
825
826 SFSpell *flexibility = registrationAPI.registerSpell(kGdSpellLineFlexibility);
827 registrationAPI.linkTypeHandler(flexibility, &flexibility_handler);
828
829 SFSpell *area_flexibility = registrationAPI.registerSpell(kGdSpellLineFlexibilityArea);
830 registrationAPI.linkTypeHandler(area_flexibility, &area_flexibility_handler);
831
832 SFSpell *strength = registrationAPI.registerSpell(kGdSpellLineStrengthen);
833 registrationAPI.linkTypeHandler(strength, &strength_handler);
834
835 SFSpell *area_strength = registrationAPI.registerSpell(kGdSpellLineStrengthenArea);
836 registrationAPI.linkTypeHandler(area_strength, &area_strength_handler);
837
838 SFSpell *guard = registrationAPI.registerSpell(kGdSpellLineGuard);
839 registrationAPI.linkTypeHandler(guard, &guard_handler);
840
841 SFSpell *remove_curse = registrationAPI.registerSpell(kGdSpellLineRemoveCurse);
842 registrationAPI.linkTypeHandler(remove_curse, &remove_curse_handler);
843
844 SFSpell *regenerate = registrationAPI.registerSpell(kGdSpellLineRegenerate);
845 registrationAPI.linkTypeHandler(regenerate, &regenerate_handler);
846
847 SFSpell *holy_might = registrationAPI.registerSpell(kGdSpellLineHolyMight);
848 registrationAPI.linkTypeHandler(holy_might, &default_handler);
849
850 SFSpell *hallow = registrationAPI.registerSpell(kGdSpellLineHallow);
851 registrationAPI.linkTypeHandler(hallow, &hallow_handler);
852 registrationAPI.linkSingleTargetAIHandler(hallow, &hallow_ai_handler);
853 registrationAPI.applySpellTag(hallow, SpellTag::STACKABLE_SPELL);
854
855 // Unused spell here
856
857 SFSpell *fireshield2 = registrationAPI.registerSpell(kGdSpellLineFireShieldDamage);
858 registrationAPI.linkTypeHandler(fireshield2, &fireshield2_handler);
859
860 SFSpell *thorn_shield2 = registrationAPI.registerSpell(kGdSpellLineThornShieldDamage);
861 registrationAPI.linkTypeHandler(thorn_shield2, &thorn_shield2_handler);
862
863 SFSpell *forget = registrationAPI.registerSpell(kGdSpellLineForget);
864 registrationAPI.linkTypeHandler(forget, &forget_handler);
865
866 SFSpell *self_illusion = registrationAPI.registerSpell(kGdSpellLineSelfIllusion);
867 registrationAPI.linkTypeHandler(self_illusion, &self_illusion_handler);
868 registrationAPI.linkSingleTargetAIHandler(self_illusion, &illusion_ai_handler);
869
870 // Next Block
871
872 SFSpell *retention = registrationAPI.registerSpell(kGdSpellLineRetention);
873 registrationAPI.linkTypeHandler(retention, &retention_handler);
874
875 SFSpell *brilliance = registrationAPI.registerSpell(kGdSpellLineBrilliance);
876 registrationAPI.linkTypeHandler(brilliance, &brilliance_handler);
877
878 SFSpell *sacrifice_mana = registrationAPI.registerSpell(kGdSpellLineSacrificeMana);
879 registrationAPI.linkTypeHandler(sacrifice_mana, &sacrifice_mana_handler);
880 registrationAPI.linkSingleTargetAIHandler(sacrifice_mana, &sacrifice_mana_ai_handler);
881
882 SFSpell *manatap = registrationAPI.registerSpell(kGdSpellLineManaTap);
883 registrationAPI.linkTypeHandler(manatap, &manatap_handler);
884 registrationAPI.linkSingleTargetAIHandler(manatap, &manatap_ai_handler);
885
886 SFSpell *mana_drain = registrationAPI.registerSpell(kGdSpellLineManaDrain);
887 registrationAPI.linkTypeHandler(mana_drain, &manadrain_handler);
888
889 SFSpell *shock = registrationAPI.registerSpell(kGdSpellLineShock);
890 registrationAPI.linkTypeHandler(shock, &shock_handler);
891
892 SFSpell *disrupt = registrationAPI.registerSpell(kGdSpellLineDisrupt);
893 registrationAPI.linkTypeHandler(disrupt, &disrupt_handler);
894
895 // Unused Spell Here
896
897 SFSpell *confuse = registrationAPI.registerSpell(kGdSpellLineConfuse);
898 registrationAPI.linkTypeHandler(confuse, &confuse_handler);
899 registrationAPI.linkSingleTargetAIHandler(confuse, &confuse_ai_handler);
900
901 SFSpell *rain_of_fire = registrationAPI.registerSpell(kGdSpellLineRainOfFire);
902 registrationAPI.linkTypeHandler(rain_of_fire, &rain_of_fire_handler);
903 registrationAPI.linkAOEAIHandler(rain_of_fire, &rain_ai_handler);
904 registrationAPI.applySpellTag(rain_of_fire, SpellTag::AOE_SPELL);
905
906 SFSpell *blizzard = registrationAPI.registerSpell(kGdSpellLineBlizzard);
907 registrationAPI.linkTypeHandler(blizzard, &blizzard_handler);
908 registrationAPI.linkAOEAIHandler(blizzard, &rain_ai_handler);
909 registrationAPI.applySpellTag(blizzard, SpellTag::AOE_SPELL);
910
911 SFSpell *acid_cloud = registrationAPI.registerSpell(kGdSpellLineAcidCloud);
912 registrationAPI.linkTypeHandler(acid_cloud, &acid_cloud_handler);
913 registrationAPI.applySpellTag(acid_cloud, SpellTag::AOE_SPELL);
914
915 SFSpell *stone_rain = registrationAPI.registerSpell(kGdSpellLineStoneRain);
916 registrationAPI.linkTypeHandler(stone_rain, &stone_rain_handler);
917 registrationAPI.linkAOEAIHandler(stone_rain, &rain_ai_handler);
918 registrationAPI.applySpellTag(stone_rain, SpellTag::AOE_SPELL);
919 registrationAPI.linkPhysRainHandler(stone_rain, &stone_rain_phys_handler);
920
921 // Unused Spell Here
922 // Unused Spell Here
923
924 SFSpell *amok = registrationAPI.registerSpell(kGdSpellLineAmok);
925 registrationAPI.linkTypeHandler(amok, &amok_handler);
926 registrationAPI.linkSingleTargetAIHandler(amok, &amok_ai_handler);
927
928 // Next Block
929
930 // Unused Spell Here
931
932 SFSpell *extinct = registrationAPI.registerSpell(kGdSpellLineExtinct);
933 registrationAPI.linkTypeHandler(extinct, &extinct_handler);
934 registrationAPI.linkSingleTargetAIHandler(extinct, &extinct_ai_handler);
935
936 SFSpell *detect_metal = registrationAPI.registerSpell(kGdSpellLineDetectMetal);
937 registrationAPI.linkTypeHandler(detect_metal, &detect_metal_handler);
938
939 SFSpell *detect_magic = registrationAPI.registerSpell(kGdSpellLineDetectMagic);
940 registrationAPI.linkTypeHandler(detect_magic, &detect_magic_handler);
941
942 // Unused Spell Here
943 // Unused Spell Here
944
945 SFSpell *invisibility = registrationAPI.registerSpell(kGdSpellLineInvisibility);
946 registrationAPI.linkTypeHandler(invisibility, &invisibility_handler);
947
948 SFSpell *stone = registrationAPI.registerSpell(kGdSpellLineStone);
949 registrationAPI.linkTypeHandler(stone, &stone_handler);
950
951 SFSpell *aura1 = registrationAPI.registerSpell(kGdSpellLineAuraWeakness);
952 registrationAPI.linkTypeHandler(aura1, &aura_handler);
953 registrationAPI.linkEndHandler(aura1, &aura_end_handler);
954 registrationAPI.linkSingleTargetAIHandler(aura1, &offensive_aura_ai_handler);
955 registrationAPI.applySpellTag(aura1, SpellTag::AURA_SPELL);
956 registrationAPI.applySpellTag(aura1, SpellTag::BLACK_AURA_SPELL);
957
959 registrationAPI.linkTypeHandler(aura2, &aura_handler);
960 registrationAPI.linkEndHandler(aura2, &aura_end_handler);
961 registrationAPI.linkSingleTargetAIHandler(aura2, &offensive_aura_ai_handler);
962 registrationAPI.applySpellTag(aura2, SpellTag::AURA_SPELL);
963 registrationAPI.applySpellTag(aura2, SpellTag::BLACK_AURA_SPELL);
964
965 SFSpell *suicide_death = registrationAPI.registerSpell(kGdSpellLineSuicideDeath);
966 registrationAPI.linkTypeHandler(suicide_death, &suicide_death_handler);
967
968 SFSpell *aura3 = registrationAPI.registerSpell(kGdSpellLineAuraLifeTap);
969 registrationAPI.linkTypeHandler(aura3, &aura_handler);
970 registrationAPI.linkSingleTargetAIHandler(aura3, &offensive_aura_ai_handler);
971 registrationAPI.linkEndHandler(aura3, &aura_end_handler);
972 registrationAPI.applySpellTag(aura3, SpellTag::AURA_SPELL);
973 registrationAPI.applySpellTag(aura3, SpellTag::BLACK_AURA_SPELL);
974
975 SFSpell *summon_5 = registrationAPI.registerSpell(kGdSpellLineSummonSpectre);
976 registrationAPI.linkTypeHandler(summon_5, &summons_handler);
977 registrationAPI.applySpellTag(summon_5, SpellTag::SUMMON_SPELL);
978 registrationAPI.applySpellTag(summon_5, SpellTag::STACKABLE_SPELL);
979 registrationAPI.linkSingleTargetAIHandler(summon_5, &summon_ai_handler);
980
981 SFSpell *feign_death = registrationAPI.registerSpell(kGdSpellLineFeignDeath);
982 registrationAPI.linkTypeHandler(feign_death, &feign_death_handler);
983
985 registrationAPI.linkTypeHandler(aura4, &aura_handler);
986 registrationAPI.linkSingleTargetAIHandler(aura4, &offensive_aura_ai_handler);
987 registrationAPI.linkEndHandler(aura4, &aura_end_handler);
988 registrationAPI.applySpellTag(aura4, SpellTag::AURA_SPELL);
989 registrationAPI.applySpellTag(aura4, SpellTag::BLACK_AURA_SPELL);
990
992 registrationAPI.linkTypeHandler(aura5, &aura_handler);
993 registrationAPI.linkSingleTargetAIHandler(aura5, &offensive_aura_ai_handler);
994 registrationAPI.linkEndHandler(aura5, &aura_end_handler);
995 registrationAPI.applySpellTag(aura5, SpellTag::AURA_SPELL);
996 registrationAPI.applySpellTag(aura5, SpellTag::BLACK_AURA_SPELL);
997 // Next Block
998
999 SFSpell *dispel_white_aura = registrationAPI.registerSpell(kGdSpellLineDispelWhiteAura);
1000 registrationAPI.linkTypeHandler(dispel_white_aura, &dispel_white_aura_handler);
1001 registrationAPI.linkSingleTargetAIHandler(dispel_white_aura, &dispel_white_aura_ai_handler);
1002
1003 SFSpell *aura6 = registrationAPI.registerSpell(kGdSpellLineAuraSlowWalking);
1004 registrationAPI.linkTypeHandler(aura6, &aura_handler);
1005 registrationAPI.linkSingleTargetAIHandler(aura6, &offensive_aura_ai_handler);
1006 registrationAPI.linkEndHandler(aura6, &aura_end_handler);
1007 registrationAPI.applySpellTag(aura6, SpellTag::AURA_SPELL);
1008 registrationAPI.applySpellTag(aura6, SpellTag::BLACK_AURA_SPELL);
1009
1010 SFSpell *aura7 = registrationAPI.registerSpell(kGdSpellLineAuraInability);
1011 registrationAPI.linkTypeHandler(aura7, &aura_handler);
1012 registrationAPI.linkEndHandler(aura7, &aura_end_handler);
1013 registrationAPI.linkSingleTargetAIHandler(aura7, &offensive_aura_ai_handler);
1014 registrationAPI.applySpellTag(aura7, SpellTag::AURA_SPELL);
1015 registrationAPI.applySpellTag(aura7, SpellTag::BLACK_AURA_SPELL);
1016
1017 SFSpell *suffocation = registrationAPI.registerSpell(kGdSpellLineSuffocation);
1018 registrationAPI.linkTypeHandler(suffocation, &suffocation_handler);
1019
1020 SFSpell *inablility = registrationAPI.registerSpell(kGdSpellLineInability);
1021 registrationAPI.linkTypeHandler(inablility, &inablility_handler);
1022
1023 SFSpell *slow_fighting = registrationAPI.registerSpell(kGdSpellLineSlowFighting);
1024 registrationAPI.linkTypeHandler(slow_fighting, &slow_fighting_handler);
1025
1026 SFSpell *aura8 = registrationAPI.registerSpell(kGdSpellLineAuraStrength);
1027 registrationAPI.linkTypeHandler(aura8, &aura_handler);
1028 registrationAPI.linkEndHandler(aura8, &aura_end_handler);
1029 registrationAPI.linkSingleTargetAIHandler(aura8, &defensive_aura_ai_handler);
1030 registrationAPI.applySpellTag(aura8, SpellTag::AURA_SPELL);
1031 registrationAPI.applySpellTag(aura8, SpellTag::WHITE_AURA_SPELL);
1032
1033 SFSpell *aura9 = registrationAPI.registerSpell(kGdSpellLineAuraHealing);
1034 registrationAPI.linkTypeHandler(aura9, &aura_handler);
1035 registrationAPI.linkSingleTargetAIHandler(aura9, &healing_aura_ai_handler);
1036 registrationAPI.linkEndHandler(aura9, &aura_end_handler);
1037 registrationAPI.applySpellTag(aura9, SpellTag::AURA_SPELL);
1038 registrationAPI.applySpellTag(aura9, SpellTag::WHITE_AURA_SPELL);
1039
1040 SFSpell *aura10 = registrationAPI.registerSpell(kGdSpellLineAuraEndurance);
1041 registrationAPI.linkTypeHandler(aura10, &aura_handler);
1042 registrationAPI.linkSingleTargetAIHandler(aura10, &defensive_aura_ai_handler);
1043 registrationAPI.linkEndHandler(aura10, &aura_end_handler);
1044 registrationAPI.applySpellTag(aura10, SpellTag::AURA_SPELL);
1045 registrationAPI.applySpellTag(aura10, SpellTag::WHITE_AURA_SPELL);
1046
1047 SFSpell *suicide_heal = registrationAPI.registerSpell(kGdSpellLineSuicideHeal);
1048 registrationAPI.linkTypeHandler(suicide_heal, &suicide_heal_handler);
1049
1050 SFSpell *summon_6 = registrationAPI.registerSpell(kGdSpellLineSummonWolf);
1051 registrationAPI.linkTypeHandler(summon_6, &summons_handler);
1052 registrationAPI.applySpellTag(summon_6, SpellTag::SUMMON_SPELL);
1053 registrationAPI.applySpellTag(summon_6, SpellTag::STACKABLE_SPELL);
1054 registrationAPI.linkSingleTargetAIHandler(summon_6, &summon_ai_handler);
1055
1056 SFSpell *aura11 = registrationAPI.registerSpell(kGdSpellLineAuraRegeneration);
1057 registrationAPI.linkTypeHandler(aura11, &aura_handler);
1058 registrationAPI.linkSingleTargetAIHandler(aura11, &healing_aura_ai_handler);
1059 registrationAPI.linkEndHandler(aura11, &aura_end_handler);
1060 registrationAPI.applySpellTag(aura11, SpellTag::AURA_SPELL);
1061 registrationAPI.applySpellTag(aura11, SpellTag::WHITE_AURA_SPELL);
1062
1063 SFSpell *dominate_animal = registrationAPI.registerSpell(kGdSpellLineDominateAnimal);
1064 registrationAPI.linkTypeHandler(dominate_animal, &dominate_animal_handler);
1065 registrationAPI.applySpellTag(dominate_animal, SpellTag::DOMINATION_SPELL);
1066 registrationAPI.linkSingleTargetAIHandler(dominate_animal, &dominate_ai_handler);
1067
1068 // Would this defeat Jack Slash?
1069 SFSpell *summon_7 = registrationAPI.registerSpell(kGdSpellLineSummonBear);
1070 registrationAPI.linkTypeHandler(summon_7, &summons_handler);
1071 registrationAPI.applySpellTag(summon_7, SpellTag::SUMMON_SPELL);
1072 registrationAPI.applySpellTag(summon_7, SpellTag::STACKABLE_SPELL);
1073 registrationAPI.linkSingleTargetAIHandler(summon_7, &summon_ai_handler);
1074
1075 SFSpell *aura12 = registrationAPI.registerSpell(kGdSpellLineAuraFastFighting);
1076 registrationAPI.linkTypeHandler(aura12, &aura_handler);
1077 registrationAPI.linkSingleTargetAIHandler(aura12, &defensive_aura_ai_handler);
1078 registrationAPI.linkEndHandler(aura12, &aura_end_handler);
1079 registrationAPI.applySpellTag(aura12, SpellTag::AURA_SPELL);
1080 registrationAPI.applySpellTag(aura12, SpellTag::WHITE_AURA_SPELL);
1081
1082 SFSpell *aura13 = registrationAPI.registerSpell(kGdSpellLineAuraFlexibility);
1083 registrationAPI.linkTypeHandler(aura13, &aura_handler);
1084 registrationAPI.linkSingleTargetAIHandler(aura13, &defensive_aura_ai_handler);
1085 registrationAPI.linkEndHandler(aura13, &aura_end_handler);
1086 registrationAPI.applySpellTag(aura13, SpellTag::AURA_SPELL);
1087 registrationAPI.applySpellTag(aura13, SpellTag::WHITE_AURA_SPELL);
1088
1089 SFSpell *dispel_black_aura = registrationAPI.registerSpell(kGdSpellLineDispelBlackAura);
1090 registrationAPI.linkTypeHandler(dispel_black_aura, &dispel_black_aura_handler);
1091
1092 SFSpell *aura14 = registrationAPI.registerSpell(kGdSpellLineAuraFastWalking);
1093 registrationAPI.linkTypeHandler(aura14, &aura_handler);
1094 registrationAPI.linkSingleTargetAIHandler(aura14, &defensive_aura_ai_handler);
1095 registrationAPI.linkEndHandler(aura14, &aura_end_handler);
1096 registrationAPI.applySpellTag(aura14, SpellTag::AURA_SPELL);
1097 registrationAPI.applySpellTag(aura14, SpellTag::WHITE_AURA_SPELL);
1098
1099 SFSpell *aura15 = registrationAPI.registerSpell(kGdSpellLineAuraLight);
1100 registrationAPI.linkTypeHandler(aura15, &aura_handler);
1101 registrationAPI.linkSingleTargetAIHandler(aura15, &aura_light_ai_handler);
1102 registrationAPI.linkEndHandler(aura15, &aura_end_handler);
1103 registrationAPI.applySpellTag(aura15, SpellTag::AURA_SPELL);
1104 registrationAPI.applySpellTag(aura15, SpellTag::WHITE_AURA_SPELL);
1105
1106 SFSpell *aura16 = registrationAPI.registerSpell(kGdSpellLineAuraDexterity);
1107 registrationAPI.linkTypeHandler(aura16, &aura_handler);
1108 registrationAPI.linkSingleTargetAIHandler(aura16, &defensive_aura_ai_handler);
1109 registrationAPI.linkEndHandler(aura16, &aura_end_handler);
1110 registrationAPI.applySpellTag(aura16, SpellTag::AURA_SPELL);
1111 registrationAPI.applySpellTag(aura16, SpellTag::WHITE_AURA_SPELL);
1112
1113 SFSpell *dexterity = registrationAPI.registerSpell(kGdSpellLineDexterity);
1114 registrationAPI.linkTypeHandler(dexterity, &dexterity_handler);
1115 registrationAPI.linkSingleTargetAIHandler(dexterity, &shields_ai_handler);
1116
1117 SFSpell *endurance = registrationAPI.registerSpell(kGdSpellLineEndurance);
1118 registrationAPI.linkTypeHandler(endurance, &endurance_handler);
1119
1120 SFSpell *fast_fighting = registrationAPI.registerSpell(kGdSpellLineFastFighting);
1121 registrationAPI.linkTypeHandler(fast_fighting, &fast_fighting_handler);
1122
1123 SFSpell *distract = registrationAPI.registerSpell(kGdSpellLineDistract);
1124 registrationAPI.linkTypeHandler(distract, &distract_handler);
1125 registrationAPI.linkSingleTargetAIHandler(distract, &wave_ai_handler);
1126
1127 SFSpell *dominate = registrationAPI.registerSpell(kGdSpellLineDominate);
1128 registrationAPI.linkTypeHandler(dominate, &dominate_handler);
1129 registrationAPI.applySpellTag(dominate, SpellTag::DOMINATION_SPELL);
1130 registrationAPI.linkSingleTargetAIHandler(dominate, &dominate_ai_handler);
1131
1132 // Unused Spell Here
1133
1134 SFSpell *charm = registrationAPI.registerSpell(kGdSpellLineCharm);
1135 registrationAPI.linkTypeHandler(charm, &charm_handler);
1136 registrationAPI.applySpellTag(charm, SpellTag::DOMINATION_SPELL);
1137 registrationAPI.linkSingleTargetAIHandler(charm, &charm_ai_handler);
1138
1139 SFSpell *befriend = registrationAPI.registerSpell(kGdSpellLineBefriend);
1140 registrationAPI.linkTypeHandler(befriend, &befriend_handler);
1141 registrationAPI.linkSingleTargetAIHandler(befriend, &befriend_ai_handler);
1142
1143 SFSpell *disenchant = registrationAPI.registerSpell(kGdSpellLineDisenchant);
1144 registrationAPI.linkTypeHandler(disenchant, &disenchant_handler);
1145 registrationAPI.linkSingleTargetAIHandler(disenchant, &disenchant_ai_handler);
1146
1147 SFSpell *charisma = registrationAPI.registerSpell(kGdSpellLineCharisma);
1148 registrationAPI.linkTypeHandler(charisma, &charisma_handler);
1149
1150 SFSpell *shockwave = registrationAPI.registerSpell(kGdSpellLineShockwave);
1151 registrationAPI.linkTypeHandler(shockwave, &shockwave_handler);
1152 registrationAPI.linkSingleTargetAIHandler(shockwave, &wave_ai_handler);
1153
1154 SFSpell *aura17 = registrationAPI.registerSpell(kGdSpellLineAuraHypnotization);
1155 registrationAPI.linkTypeHandler(aura17, &aura_handler);
1156 registrationAPI.linkSingleTargetAIHandler(aura17, &offensive_aura_ai_handler);
1157 registrationAPI.linkEndHandler(aura17, &aura_end_handler);
1158 registrationAPI.applySpellTag(aura17, SpellTag::AURA_SPELL);
1159
1160 // Next Spell Block
1161
1162 SFSpell *demoralization = registrationAPI.registerSpell(kGdSpellLineDemoralization);
1163 registrationAPI.linkTypeHandler(demoralization, &demoralization_handler);
1164 registrationAPI.linkSingleTargetAIHandler(demoralization, &demoralization_ai_handler);
1165
1166 SFSpell *aura18 = registrationAPI.registerSpell(kGdSpellLineAuraBrilliance);
1167 registrationAPI.linkTypeHandler(aura18, &aura_handler);
1168 registrationAPI.linkSingleTargetAIHandler(aura18, &defensive_aura_ai_handler);
1169 registrationAPI.linkEndHandler(aura18, &aura_end_handler);
1170 registrationAPI.applySpellTag(aura18, SpellTag::AURA_SPELL);
1171
1172 SFSpell *enlightenment = registrationAPI.registerSpell(kGdSpellLineEnlightenment);
1173 registrationAPI.linkTypeHandler(enlightenment, &enlightenment_handler);
1174
1175 SFSpell *aura19 = registrationAPI.registerSpell(kGdSpellLineAuraManaTap);
1176 registrationAPI.linkTypeHandler(aura19, &aura_handler);
1177 registrationAPI.linkSingleTargetAIHandler(aura19, &offensive_aura_ai_handler);
1178 registrationAPI.linkEndHandler(aura19, &aura_end_handler);
1179 registrationAPI.applySpellTag(aura19, SpellTag::AURA_SPELL);
1180
1181 SFSpell *meditation = registrationAPI.registerSpell(kGdSpellLineMeditation);
1182 registrationAPI.linkTypeHandler(meditation, &meditation_handler);
1183
1184 SFSpell *summon_8 = registrationAPI.registerSpell(kGdSpellLineFireElemental);
1185 registrationAPI.linkTypeHandler(summon_8, &summons_handler);
1186 registrationAPI.applySpellTag(summon_8, SpellTag::SUMMON_SPELL);
1187 registrationAPI.applySpellTag(summon_8, SpellTag::STACKABLE_SPELL);
1188 registrationAPI.linkSingleTargetAIHandler(summon_8, &summon_ai_handler);
1189
1190 SFSpell *wave = registrationAPI.registerSpell(kGdSpellLineWaveOfFire);
1191 registrationAPI.linkTypeHandler(wave, &wave_handler);
1192 registrationAPI.linkSingleTargetAIHandler(wave, &wave_ai_handler);
1193
1194 SFSpell *melt_resistance = registrationAPI.registerSpell(kGdSpellLineMeltResistance);
1195 registrationAPI.linkTypeHandler(melt_resistance, &melt_resistance_handler);
1196
1197 SFSpell *summon_9 = registrationAPI.registerSpell(kGdSpellLineIceElemental);
1198 registrationAPI.linkTypeHandler(summon_9, &summons_handler);
1199 registrationAPI.applySpellTag(summon_9, SpellTag::SUMMON_SPELL);
1200 registrationAPI.applySpellTag(summon_9, SpellTag::STACKABLE_SPELL);
1201 registrationAPI.linkSingleTargetAIHandler(summon_9, &summon_ai_handler);
1202
1203 SFSpell *wave2 = registrationAPI.registerSpell(kGdSpellLineWaveOfIce);
1204 registrationAPI.linkTypeHandler(wave2, &wave_handler);
1205 registrationAPI.linkSingleTargetAIHandler(wave2, &wave_ai_handler);
1206
1207 SFSpell *chill_resistance = registrationAPI.registerSpell(kGdSpellLineChillResistance);
1208 registrationAPI.linkTypeHandler(chill_resistance, &chill_resistance_handler);
1209
1210 SFSpell *rock_bullet = registrationAPI.registerSpell(kGdSpellLineRockBullet);
1211 registrationAPI.linkTypeHandler(rock_bullet, &rock_bullet_handler);
1212
1213 SFSpell *conservation = registrationAPI.registerSpell(kGdSpellLineConservation);
1214 registrationAPI.linkTypeHandler(conservation, &conservation_handler);
1215 registrationAPI.linkSingleTargetAIHandler(conservation, &shields_ai_handler);
1216 registrationAPI.linkAvoidanceAIHandler(conservation, &sf_ai_avoidance_shield_handler);
1217
1218 SFSpell *summon_10 = registrationAPI.registerSpell(kGdSpellLineEarthElemental);
1219 registrationAPI.linkTypeHandler(summon_10, &summons_handler);
1220 registrationAPI.applySpellTag(summon_10, SpellTag::SUMMON_SPELL);
1221 registrationAPI.applySpellTag(summon_10, SpellTag::STACKABLE_SPELL);
1222 registrationAPI.linkSingleTargetAIHandler(summon_10, &summon_ai_handler);
1223
1224 SFSpell *wave3 = registrationAPI.registerSpell(kGdSpellLineWaveOfRocks);
1225 registrationAPI.linkTypeHandler(wave3, &wave_handler);
1226 registrationAPI.linkSingleTargetAIHandler(wave3, &wave_ai_handler);
1227
1228 SFSpell *tower_arrow = registrationAPI.registerSpell(kGdSpellLineArrowTower);
1229 registrationAPI.linkTypeHandler(tower_arrow, &tower_arrow_handler);
1230
1231 // Next Spell Block
1232
1233 SFSpell *tower_healing = registrationAPI.registerSpell(kGdSpellLineHealingTower);
1234 registrationAPI.linkTypeHandler(tower_healing, &tower_healing_handler);
1235 registrationAPI.applySpellTag(tower_healing, STACKABLE_SPELL);
1236 registrationAPI.linkSingleTargetAIHandler(tower_healing, &healing_ai_handler);
1237
1238 SFSpell *tower_icestrike = registrationAPI.registerSpell(kGdSpellLineIceburstTower);
1239 registrationAPI.linkTypeHandler(tower_icestrike, &tower_icestrike_handler);
1240 registrationAPI.applySpellTag(tower_icestrike, SpellTag::STACKABLE_SPELL);
1241 registrationAPI.linkSingleTargetAIHandler(tower_icestrike, &fireburst_ai_handler);
1242
1243 SFSpell *lifetap_aura = registrationAPI.registerSpell(kGdSpellLineLifeTapAura);
1244 registrationAPI.linkTypeHandler(lifetap_aura, &lifetap_aura_handler);
1245
1246 SFSpell *fireball2 = registrationAPI.registerSpell(kGdSpellLineFireBallEffect);
1247 registrationAPI.linkTypeHandler(fireball2, &fireball2_handler);
1248
1249 SFSpell *ability_warcry = registrationAPI.registerSpell(kGdSpellLineAbilityWarCry);
1250 registrationAPI.linkOnHitHandler(ability_warcry, &warcry_onhit_handler, PHASE_0);
1251 registrationAPI.linkTypeHandler(ability_warcry, &ability_warcry_handler);
1252 registrationAPI.applySpellTag(ability_warcry, SpellTag::STACKABLE_SPELL);
1253 registrationAPI.linkSingleTargetAIHandler(ability_warcry, &HCA_ability_ai_handler);
1254 registrationAPI.applySpellTag(ability_warcry, SpellTag::COMBAT_ABILITY_SPELL);
1255 registrationAPI.applySpellTag(ability_warcry, SpellTag::AOE_SPELL);
1256
1257 SFSpell *ability_benefactions = registrationAPI.registerSpell(kGdSpellLineAbilityBenefactions);
1258 registrationAPI.linkTypeHandler(ability_benefactions, &ability_benefactions_handler);
1259 registrationAPI.applySpellTag(ability_benefactions, SpellTag::STACKABLE_SPELL);
1260 registrationAPI.linkSingleTargetAIHandler(ability_benefactions, &benefactions_ai_handler);
1261 registrationAPI.applySpellTag(ability_benefactions, SpellTag::COMBAT_ABILITY_SPELL);
1262 registrationAPI.applySpellTag(ability_benefactions, SpellTag::AOE_SPELL);
1263
1264 SFSpell *ability_patronize = registrationAPI.registerSpell(kGdSpellLineAbilityPatronize);
1265 registrationAPI.linkTypeHandler(ability_patronize,
1267 registrationAPI.applySpellTag(ability_patronize, STACKABLE_SPELL);
1268 registrationAPI.linkSingleTargetAIHandler(ability_patronize, &HCA_ability_ai_handler);
1269 registrationAPI.applySpellTag(ability_patronize, SpellTag::COMBAT_ABILITY_SPELL);
1270 registrationAPI.applySpellTag(ability_patronize, SpellTag::AOE_SPELL);
1271
1272 SFSpell *ability_endurance = registrationAPI.registerSpell(kGdSpellLineAbilityEndurance);
1273 registrationAPI.linkTypeHandler(ability_endurance, &ability_endurance_handler);
1274 registrationAPI.linkOnHitHandler(ability_endurance, &endurance_onhit_handler, PHASE_0);
1275 registrationAPI.applySpellTag(ability_endurance, STACKABLE_SPELL);
1276 registrationAPI.linkSingleTargetAIHandler(ability_endurance, &HCA_ability_ai_handler);
1277 registrationAPI.applySpellTag(ability_endurance, SpellTag::COMBAT_ABILITY_SPELL);
1278 registrationAPI.applySpellTag(ability_endurance, SpellTag::AOE_SPELL);
1279
1280 SFSpell *ability_berserk = registrationAPI.registerSpell(kGdSpellLineAbilityBerserk);
1281 registrationAPI.linkOnHitHandler(ability_berserk, &berserk_onhit_handler, PHASE_0);
1282 registrationAPI.linkTypeHandler(ability_berserk, &ability_berserk_handler);
1283 registrationAPI.linkSingleTargetAIHandler(ability_berserk, &berserk_ai_handler);
1284 registrationAPI.applySpellTag(ability_berserk, SpellTag::COMBAT_ABILITY_SPELL);
1285
1286 SFSpell *ability_boons = registrationAPI.registerSpell(kGdSpellLineAbilityBlessing);
1287 registrationAPI.linkTypeHandler(ability_boons, &ability_boons_handler);
1288 registrationAPI.linkSingleTargetAIHandler(ability_boons, &blessing_ai_handler);
1289 registrationAPI.applySpellTag(ability_boons, SpellTag::COMBAT_ABILITY_SPELL);
1290
1291 SFSpell *ability_shelter = registrationAPI.registerSpell(kGdSpellLineAbilityShelter);
1292 registrationAPI.linkTypeHandler(ability_shelter, &ability_shelter_handler);
1293 registrationAPI.linkSingleTargetAIHandler(ability_shelter, &RCA_ability_ai_handler);
1294 registrationAPI.applySpellTag(ability_shelter, SpellTag::COMBAT_ABILITY_SPELL);
1295
1296 SFSpell *ability_durability = registrationAPI.registerSpell(kGdSpellLineAbilityDurability);
1297 registrationAPI.linkTypeHandler(ability_durability, &ability_durability_handler);
1298 registrationAPI.linkOnHitHandler(ability_durability, &durability_onhit_handler, PHASE_0);
1299 registrationAPI.linkSingleTargetAIHandler(ability_durability, &riposte_ability_ai_handler);
1300 registrationAPI.applySpellTag(ability_durability, SpellTag::COMBAT_ABILITY_SPELL);
1301
1302 SFSpell *ability_trueshot = registrationAPI.registerSpell(kGdSpellLineAbilityTrueShot);
1303 registrationAPI.linkTypeHandler(ability_trueshot, &ability_trueshot_handler);
1304 registrationAPI.linkOnHitHandler(ability_trueshot, &trueshot_onhit_handler, PHASE_0);
1305 registrationAPI.linkSingleTargetAIHandler(ability_trueshot, &RCA_ability_ai_handler);
1306 registrationAPI.applySpellTag(ability_trueshot, SpellTag::COMBAT_ABILITY_SPELL);
1307
1308 SFSpell *ability_steelskin = registrationAPI.registerSpell(kGdSpellLineAbilitySteelSkin);
1309 registrationAPI.linkTypeHandler(ability_steelskin, &ability_steelskin_handler);
1310 registrationAPI.linkSingleTargetAIHandler(ability_steelskin, &RCA_ability_ai_handler);
1311 registrationAPI.applySpellTag(ability_steelskin, SpellTag::COMBAT_ABILITY_SPELL);
1312
1313 SFSpell *ability_salvo = registrationAPI.registerSpell(kGdSpellLineAbilitySalvo);
1314 registrationAPI.linkTypeHandler(ability_salvo, &ability_salvo_handler);
1315 registrationAPI.linkSingleTargetAIHandler(ability_salvo, &RCA_ability_ai_handler);
1316 registrationAPI.applySpellTag(ability_salvo, SpellTag::COMBAT_ABILITY_SPELL);
1317
1318 SFSpell *fireburst2 = registrationAPI.registerSpell(kGdSpellLineFireBurstTower);
1319 registrationAPI.linkTypeHandler(fireburst2, &fireburst_handler);
1320 registrationAPI.applySpellTag(fireburst2, SpellTag::STACKABLE_SPELL);
1321 registrationAPI.linkSingleTargetAIHandler(fireburst2, &fireburst_ai_handler);
1322
1323 // Next Spell Block
1324
1325 SFSpell *spark = registrationAPI.registerSpell(kGdSpellLineSpark);
1326 registrationAPI.linkTypeHandler(spark, &spark_handler);
1327 registrationAPI.linkPhysEffectHandler(spark, &spark_phys_handler);
1328
1329 SFSpell *tower_hypnotize = registrationAPI.registerSpell(kGdSpellLineHypnotizeTower);
1330 registrationAPI.linkTypeHandler(tower_hypnotize, &tower_hypnotize_handler);
1331 registrationAPI.linkSingleTargetAIHandler(tower_hypnotize, &hypnotize_ai_handler);
1332 registrationAPI.linkAvoidanceAIHandler(tower_hypnotize, &sf_ai_avoidance_hypnotize_handler);
1333
1334 SFSpell *tower_pain = registrationAPI.registerSpell(kGdSpellLinePainTower);
1335 registrationAPI.linkTypeHandler(tower_pain, &tower_pain_handler);
1336
1337 SFSpell *tower_stone = registrationAPI.registerSpell(kGdSpellLineStoneTower);
1338 registrationAPI.linkTypeHandler(tower_stone, &tower_stone_handler);
1339
1340 SFSpell *cloak_of_nor = registrationAPI.registerSpell(kGdSpellLineProtectionBlack);
1341 registrationAPI.linkTypeHandler(cloak_of_nor, &cloak_of_nor_handler);
1342 registrationAPI.linkSingleTargetAIHandler(cloak_of_nor, &do_not_cast_ai_handler);
1343
1344 SFSpell *unkn_spell2 = registrationAPI.registerSpell(kGdSpellLineDoNotTouchMe);
1345 registrationAPI.linkTypeHandler(unkn_spell2, &unkn_spell2_handler);
1346
1347 SFSpell *healing3 = registrationAPI.registerSpell(kGdSpellLineHealingAura);
1348 registrationAPI.linkTypeHandler(healing3, &healing_handler);
1349
1350 SFSpell *hypnotize2 = registrationAPI.registerSpell(kGdSpellLineHypnotizeTwo);
1351 registrationAPI.linkTypeHandler(hypnotize2, &hypnotize_handler);
1352 registrationAPI.linkSingleTargetAIHandler(hypnotize2, &hypnotize_ai_handler);
1353 registrationAPI.linkAvoidanceAIHandler(hypnotize2, &sf_ai_avoidance_hypnotize_handler);
1354
1355 SFSpell *freeze2 = registrationAPI.registerSpell(kGdSpellLineIceArrowEffect);
1356 registrationAPI.linkTypeHandler(freeze2, &freeze2_handler);
1357
1358 SFSpell *freeze3 = registrationAPI.registerSpell(kGdSpellLineIceBlockEffect);
1359 registrationAPI.linkTypeHandler(freeze3, &freeze3_handler);
1360
1361 SFSpell *lava_bullet = registrationAPI.registerSpell(kGdSpellLineFireBlockEffect);
1362 registrationAPI.linkTypeHandler(lava_bullet, &lava_bullet_handler);
1363
1364 SFSpell *tower_extinct = registrationAPI.registerSpell(kGdSpellLineExtinctTower);
1365 registrationAPI.linkTypeHandler(tower_extinct, &tower_extinct_handler);
1366 registrationAPI.linkSingleTargetAIHandler(tower_extinct, &tower_extinct_ai_handler);
1367
1368 SFSpell *manatap_aura = registrationAPI.registerSpell(kGdSpellLineManaTapAura);
1369 registrationAPI.linkTypeHandler(manatap_aura, &manatap_aura_handler);
1370
1371 SFSpell *firebane = registrationAPI.registerSpell(kGdSpellLineFireResistance);
1372 registrationAPI.linkTypeHandler(firebane, &firebane_handler);
1373
1374 SFSpell *black_essence = registrationAPI.registerSpell(kGdSpellLineEssenceBlack);
1375 registrationAPI.linkTypeHandler(black_essence, &black_essence_handler);
1376
1377 SFSpell *white_essence = registrationAPI.registerSpell(kGdSpellLineEssenceWhite);
1378 registrationAPI.linkTypeHandler(white_essence, &white_essence_handler);
1379
1380 // Next Spell Block
1381
1382 SFSpell *elemental_essence = registrationAPI.registerSpell(kGdSpellLineEssenceElemental);
1383 registrationAPI.linkTypeHandler(elemental_essence, &elemental_essence_handler);
1384
1385 SFSpell *mental_essence = registrationAPI.registerSpell(kGdSpellLineEssenceMental);
1386 registrationAPI.linkTypeHandler(mental_essence, &mental_essence_handler);
1387
1388 SFSpell *black_almightness = registrationAPI.registerSpell(kGdSpellLineAlmightinessBlack);
1389 registrationAPI.linkTypeHandler(black_almightness, &black_almightness_handler);
1390
1391 SFSpell *white_almightness = registrationAPI.registerSpell(kGdSpellLineAlmightinessWhite);
1392 registrationAPI.linkTypeHandler(white_almightness, &white_almightness_handler);
1393
1394 SFSpell *elemental_almightness = registrationAPI.registerSpell(kGdSpellLineAlmightinessElemental);
1395 registrationAPI.linkTypeHandler(elemental_almightness, &elemental_almightness_handler);
1396
1397 SFSpell *mental_almightness = registrationAPI.registerSpell(kGdSpellLineAlmightinessMental);
1398 registrationAPI.linkTypeHandler(mental_almightness, &mental_almightness_handler);
1399
1400 SFSpell *elemental_almightness2 = registrationAPI.registerSpell(kGdSpellLineAlmightinessElementalEffect);
1401 registrationAPI.linkTypeHandler(elemental_almightness2, &elemental_almightness2_handler);
1402
1403 SFSpell *elemental_essence2 = registrationAPI.registerSpell(kGdSpellLineEssenceElementalEffect);
1404 registrationAPI.linkTypeHandler(elemental_essence2, &elemental_essence2_handler);
1405
1406 SFSpell *assistance = registrationAPI.registerSpell(kGdSpellLineAssistance);
1407 registrationAPI.linkOnHitHandler(assistance, &assistance_onhit_handler, PHASE_2);
1408 registrationAPI.applySpellTag(assistance, TARGET_ONHIT_SPELL);
1409 registrationAPI.linkTypeHandler(assistance, &assistance_handler);
1410
1411 SFSpell *holy_touch = registrationAPI.registerSpell(kGdSpellLineHolyTouch);
1412 registrationAPI.linkTypeHandler(holy_touch, &holy_touch_handler);
1413
1414 SFSpell *revenge = registrationAPI.registerSpell(kGdSpellLineRevenge);
1415 registrationAPI.linkTypeHandler(revenge, &revenge_handler);
1416 registrationAPI.linkAOEAIHandler(revenge, &revenge_ai_handler);
1417 registrationAPI.applySpellTag(revenge, SpellTag::AOE_SPELL);
1418
1419 SFSpell *area_roots = registrationAPI.registerSpell(kGdSpellLineRootsArea);
1420 registrationAPI.linkTypeHandler(area_roots, &area_roots_handler);
1421 registrationAPI.linkAOEAIHandler(area_roots, &default_aoe_offensive_ai_handler);
1422 registrationAPI.applySpellTag(area_roots, SpellTag::AOE_SPELL);
1423
1424 SFSpell *summon_11 = registrationAPI.registerSpell(kGdSpellLineSummonTreeWraith);
1425 registrationAPI.linkTypeHandler(summon_11, &summons_handler);
1426 registrationAPI.applySpellTag(summon_11, SpellTag::SUMMON_SPELL);
1427 registrationAPI.applySpellTag(summon_11, SpellTag::STACKABLE_SPELL);
1428 registrationAPI.linkSingleTargetAIHandler(summon_11, &summon_ai_handler);
1429
1430 SFSpell *roots = registrationAPI.registerSpell(kGdSpellLineRoots);
1431 registrationAPI.linkTypeHandler(roots, &roots_handler);
1432
1433 SFSpell *chain = registrationAPI.registerSpell(kGdSpellLineChainHallow);
1434 registrationAPI.linkTypeHandler(chain, &chain_handler);
1435
1436 SFSpell *reinforcement = registrationAPI.registerSpell(kGdSpellLineReinforcement);
1437 registrationAPI.linkTypeHandler(reinforcement, &reinforcement_handler);
1438 registrationAPI.applySpellTag(reinforcement, SpellTag::AOE_SPELL);
1439
1440 // Next Spell Block
1441
1442 SFSpell *aura20 = registrationAPI.registerSpell(kGdSpellLineAuraEternity);
1443 registrationAPI.linkTypeHandler(aura20, &aura_handler);
1444 registrationAPI.linkSingleTargetAIHandler(aura20, &defensive_aura_ai_handler);
1445 registrationAPI.linkEndHandler(aura20, &aura_end_handler);
1446 registrationAPI.applySpellTag(aura20, SpellTag::AURA_SPELL);
1447 registrationAPI.applySpellTag(aura20, SpellTag::WHITE_AURA_SPELL);
1448
1449 SFSpell *chain2 = registrationAPI.registerSpell(kGdSpellLineChainPain);
1450 registrationAPI.linkTypeHandler(chain2, &chain_handler);
1451
1452 SFSpell *cannibalize = registrationAPI.registerSpell(kGdSpellLineCannibalize);
1453 registrationAPI.linkTypeHandler(cannibalize, &cannibalize_handler);
1454
1455 SFSpell *torture = registrationAPI.registerSpell(kGdSpellLineTorture);
1456 registrationAPI.linkTypeHandler(torture, &torture_handler);
1457 registrationAPI.linkAOEAIHandler(torture, &torture_ai_handler);
1458 registrationAPI.applySpellTag(torture, SpellTag::AOE_SPELL);
1459
1460 SFSpell *chain3 = registrationAPI.registerSpell(kGdSpellLineChainLifetap);
1461 registrationAPI.linkTypeHandler(chain3, &chain_handler);
1462
1463 SFSpell *dominate_undead = registrationAPI.registerSpell(kGdSpellLineDominateUndead);
1464 registrationAPI.linkTypeHandler(dominate_undead, &dominate_undead_handler);
1465 registrationAPI.linkSingleTargetAIHandler(dominate_undead, &dominate_undead_ai_handler);
1466 registrationAPI.applySpellTag(dominate_undead, SpellTag::DOMINATION_SPELL);
1467
1468 SFSpell *summon_12 = registrationAPI.registerSpell(kGdSpellLineSummonBlade);
1469 registrationAPI.linkTypeHandler(summon_12, &summons_handler);
1470 registrationAPI.applySpellTag(summon_12, SpellTag::SUMMON_SPELL);
1471 registrationAPI.applySpellTag(summon_12, SpellTag::STACKABLE_SPELL);
1472 registrationAPI.linkSingleTargetAIHandler(summon_12, &summon_ai_handler);
1473
1474 SFSpell *mutation = registrationAPI.registerSpell(kGdSpellLineMutation);
1475 registrationAPI.linkTypeHandler(mutation, &mutation_handler);
1476
1477 SFSpell *area_darkness = registrationAPI.registerSpell(kGdSpellLineDarknessArea);
1478 registrationAPI.linkTypeHandler(area_darkness, &area_darkness_handler);
1479 registrationAPI.applySpellTag(area_darkness, SpellTag::AOE_SPELL);
1480
1481 SFSpell *chain4 = registrationAPI.registerSpell(kGdSpellLineChainMutation);
1482 registrationAPI.linkTypeHandler(chain4, &chain_handler);
1483
1484 SFSpell *chain5 = registrationAPI.registerSpell(kGdSpellLineChainFireburst);
1485 registrationAPI.linkTypeHandler(chain5, &chain_handler);
1486
1487 SFSpell *summon_13 = registrationAPI.registerSpell(kGdSpellLineSummonFireGolem);
1488 registrationAPI.linkTypeHandler(summon_13, &summons_handler);
1489 registrationAPI.applySpellTag(summon_13, SpellTag::SUMMON_SPELL);
1490 registrationAPI.applySpellTag(summon_13, SpellTag::STACKABLE_SPELL);
1491 registrationAPI.linkSingleTargetAIHandler(summon_13, &summon_ai_handler);
1492
1493 SFSpell *chain6 = registrationAPI.registerSpell(kGdSpellLineChainFireball);
1494 registrationAPI.linkTypeHandler(chain6, &chain_handler);
1495
1496 SFSpell *chain7 = registrationAPI.registerSpell(kGdSpellLineChainIceburst);
1497 registrationAPI.linkTypeHandler(chain7, &chain_handler);
1498
1499 SFSpell *summon_14 = registrationAPI.registerSpell(kGdSpellLineSummonIceGolem);
1500 registrationAPI.linkTypeHandler(summon_14, &summons_handler);
1501 registrationAPI.applySpellTag(summon_14, SpellTag::SUMMON_SPELL);
1502 registrationAPI.applySpellTag(summon_14, SpellTag::STACKABLE_SPELL);
1503 registrationAPI.linkSingleTargetAIHandler(summon_14, &summon_ai_handler);
1504
1505 SFSpell *area_freeze = registrationAPI.registerSpell(kGdSpellLineFreezeArea);
1506 registrationAPI.linkTypeHandler(area_freeze, &area_freeze_handler);
1507 registrationAPI.applySpellTag(area_freeze, SpellTag::AOE_SPELL);
1508 registrationAPI.linkAOEAIHandler(area_freeze, &area_freeze_ai_handler);
1509
1510 // Next Spell Block
1511
1512 SFSpell *chain8 = registrationAPI.registerSpell(kGdSpellLineChainRockBullet);
1513 registrationAPI.linkTypeHandler(chain8, &chain_handler);
1514
1515 SFSpell *summon_15 = registrationAPI.registerSpell(kGdSpellLineSummonEarthGolem);
1516 registrationAPI.linkTypeHandler(summon_15, &summons_handler);
1517 registrationAPI.applySpellTag(summon_15, SpellTag::SUMMON_SPELL);
1518 registrationAPI.applySpellTag(summon_15, SpellTag::STACKABLE_SPELL);
1519 registrationAPI.linkSingleTargetAIHandler(summon_15, &summon_ai_handler);
1520
1521 SFSpell *clay_feet = registrationAPI.registerSpell(kGdSpellLineFeetClay);
1522 registrationAPI.linkTypeHandler(clay_feet, &clay_feet_handler);
1523 registrationAPI.applySpellTag(clay_feet, SpellTag::AOE_SPELL);
1524
1525 SFSpell *mirage = registrationAPI.registerSpell(kGdSpellLineMirrorImage);
1526 registrationAPI.linkTypeHandler(mirage, &mirage_handler);
1527
1528 SFSpell *chain9 = registrationAPI.registerSpell(kGdSpellLineChainCharm);
1529 registrationAPI.linkTypeHandler(chain9, &chain_handler);
1530
1531 SFSpell *feedback = registrationAPI.registerSpell(kGdSpellLineVoodoo);
1532 registrationAPI.linkTypeHandler(feedback, &feedback_handler);
1533
1534 SFSpell *chain10 = registrationAPI.registerSpell(kGdSpellLineChainShock);
1535 registrationAPI.linkTypeHandler(chain10, &chain_handler);
1536
1537 SFSpell *area_hypnotize = registrationAPI.registerSpell(kGdSpellLineHypnotizeArea);
1538 registrationAPI.linkTypeHandler(area_hypnotize, &area_hypnotize_handler);
1539 registrationAPI.linkAOEAIHandler(area_hypnotize, &hypnotize_area_ai_handler);
1540 registrationAPI.linkAvoidanceAIHandler(area_hypnotize, &sf_ai_avoidance_hypnotize_handler);
1541 registrationAPI.applySpellTag(area_hypnotize, SpellTag::AOE_SPELL);
1542
1543 SFSpell *area_confuse = registrationAPI.registerSpell(kGdSpellLineConfuseArea);
1544 registrationAPI.linkTypeHandler(area_confuse, &area_confuse_handler);
1545 registrationAPI.linkAOEAIHandler(area_confuse, &default_aoe_offensive_ai_handler);
1546 registrationAPI.applySpellTag(area_confuse, SpellTag::AOE_SPELL);
1547
1548 SFSpell *chain11 = registrationAPI.registerSpell(kGdSpellLineChainManatap);
1549 registrationAPI.linkTypeHandler(chain11, &chain_handler);
1550
1551 SFSpell *manashield = registrationAPI.registerSpell(kGdSpellLineManaShield);
1552 registrationAPI.linkTypeHandler(manashield, &manashield_handler);
1553
1554 SFSpell *shift_mana = registrationAPI.registerSpell(kGdSpellLineShiftMana);
1555 registrationAPI.linkTypeHandler(shift_mana, &shift_mana_handler);
1556
1557 SFSpell *ability_shift_life = registrationAPI.registerSpell(kGdSpellLineAbilityShiftLife);
1558 registrationAPI.linkTypeHandler(ability_shift_life, &ability_shift_life_handler);
1559 registrationAPI.linkSingleTargetAIHandler(ability_shift_life, &shift_life_ai_handler);
1560 registrationAPI.applySpellTag(ability_shift_life, SpellTag::COMBAT_ABILITY_SPELL);
1561
1562 SFSpell *ability_riposte = registrationAPI.registerSpell(kGdSpellLineAbilityRiposte);
1563 registrationAPI.applySpellTag(ability_riposte, SpellTag::TARGET_ONHIT_SPELL);
1564 registrationAPI.linkTypeHandler(ability_riposte, &ability_riposte_handler);
1565 registrationAPI.linkOnHitHandler(ability_riposte, &riposte_onhit_handler, PHASE_3);
1566 registrationAPI.linkSingleTargetAIHandler(ability_riposte, &riposte_ability_ai_handler);
1567 registrationAPI.applySpellTag(ability_riposte, SpellTag::COMBAT_ABILITY_SPELL);
1568
1569 SFSpell *ability_critical_hits = registrationAPI.registerSpell(kGdSpellLineAbilityCriticalHits);
1570 registrationAPI.linkTypeHandler(ability_critical_hits, &ability_critical_hits_handler);
1571 registrationAPI.linkOnHitHandler(ability_critical_hits, &critical_hits_onhit_handler, PHASE_1);
1572 registrationAPI.linkSingleTargetAIHandler(ability_critical_hits, &critical_hits_ai_handler);
1573 registrationAPI.applySpellTag(ability_critical_hits, SpellTag::COMBAT_ABILITY_SPELL);
1574
1575 SFSpell *aura21 = registrationAPI.registerSpell(kGdSpellLineAuraSiegeHuman);
1576 registrationAPI.linkTypeHandler(aura21, &siege_aura_handler);
1577 registrationAPI.applySpellTag(aura21, SpellTag::SIEGE_AURA_SPELL);
1578 registrationAPI.linkEndHandler(aura21, &aura_end_handler);
1579 // Next Spell Block
1580
1581 // Unused Spell Here
1582
1583 SFSpell *aura22 = registrationAPI.registerSpell(kGdSpellLineAuraSiegeElf); // TODO Find Spell Name
1584 registrationAPI.linkTypeHandler(aura22, &siege_aura_handler);
1585 registrationAPI.applySpellTag(aura22, SpellTag::SIEGE_AURA_SPELL);
1586 registrationAPI.linkEndHandler(aura22, &aura_end_handler);
1587
1588 SFSpell *aura23 = registrationAPI.registerSpell(kGdSpellLineAuraSiegeOrc); // TODO Find Spell Name
1589 registrationAPI.linkTypeHandler(aura23, &siege_aura_handler);
1590 registrationAPI.applySpellTag(aura23, SpellTag::SIEGE_AURA_SPELL);
1591 registrationAPI.linkEndHandler(aura23, &aura_end_handler);
1592
1593 SFSpell *aura24 = registrationAPI.registerSpell(kGdSpellLineAuraSiegeTroll); // TODO Find Spell Name
1594 registrationAPI.linkTypeHandler(aura24, &siege_aura_handler);
1595 registrationAPI.applySpellTag(aura24, SpellTag::SIEGE_AURA_SPELL);
1596 registrationAPI.linkEndHandler(aura24, &aura_end_handler);
1597
1598 SFSpell *aura25 = registrationAPI.registerSpell(kGdSpellLineAuraSiegeDarkElf); // TODO Find Spell Name
1599 registrationAPI.linkTypeHandler(aura25, &siege_aura_handler);
1600 registrationAPI.applySpellTag(aura25, SpellTag::SIEGE_AURA_SPELL);
1601 registrationAPI.linkEndHandler(aura25, &aura_end_handler);
1602
1603 SFSpell *eternity_aura = registrationAPI.registerSpell(kGdSpellLineEternity);
1604 registrationAPI.linkTypeHandler(eternity_aura, &eternity_aura_handler);
1605
1606 SFSpell *hallow2 = registrationAPI.registerSpell(kGdSpellLineHallowChained);
1607 registrationAPI.linkTypeHandler(hallow2, &hallow_handler);
1608
1609 SFSpell *lifetap2 = registrationAPI.registerSpell(kGdSpellLineLifeTapChained);
1610 registrationAPI.linkTypeHandler(lifetap2, &lifetap_handler);
1611
1612 SFSpell *manatap2 = registrationAPI.registerSpell(kGdSpellLineManaTapChained);
1613 registrationAPI.linkTypeHandler(manatap2, &manatap_handler);
1614
1615 SFSpell *mutation2 = registrationAPI.registerSpell(kGdSpellLineMutationChained);
1616 registrationAPI.linkTypeHandler(mutation2, &mutation_handler);
1617
1618 SFSpell *fireburst3 = registrationAPI.registerSpell(kGdSpellLineFireBurstChained);
1619 registrationAPI.linkTypeHandler(fireburst3, &fireburst_handler);
1620
1621 SFSpell *icestrike2 = registrationAPI.registerSpell(kGdSpellLineIceBurstChained);
1622 registrationAPI.linkTypeHandler(icestrike2, &icestrike_handler);
1623
1624 SFSpell *rock_bullet2 = registrationAPI.registerSpell(kGdSpellLineRockBulletChained);
1625 registrationAPI.linkTypeHandler(rock_bullet2, &rock_bullet_handler);
1626
1627 SFSpell *charm2 = registrationAPI.registerSpell(kGdSpellLineCharmChained);
1628 registrationAPI.linkTypeHandler(charm2, &charm_handler);
1629 registrationAPI.applySpellTag(charm2, SpellTag::DOMINATION_SPELL);
1630
1631 SFSpell *shock2 = registrationAPI.registerSpell(kGdSpellLineShockChained);
1632 registrationAPI.linkTypeHandler(shock2, &shock_handler);
1633
1634 SFSpell *fireball3 = registrationAPI.registerSpell(kGdSpellLineFireBallChained);
1635 registrationAPI.linkTypeHandler(fireball3, &fireball_handler);
1636
1637 // Next Spell Block
1638
1639 SFSpell *pain2 = registrationAPI.registerSpell(kGdSpellLinePainChained);
1640 registrationAPI.linkTypeHandler(pain2, &pain_handler);
1641
1642 SFSpell *belial_effect = registrationAPI.registerSpell(kGdSpellLineFakeSpellOneFigure);
1643 registrationAPI.linkTypeHandler(belial_effect, &belial_effect_handler);
1644 registrationAPI.linkSingleTargetAIHandler(belial_effect, &do_not_cast_ai_handler);
1645}
RegistrationFunctions * registrationAPI
Definition TestMod.cpp:14
uint32_t __thiscall revenge_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall raise_dead_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall area_heal_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall rain_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall default_aoe_offensive_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall area_pain_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall hypnotize_area_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall torture_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall fog_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall area_freeze_ai_handler(SF_CGdBattleDevelopment *_this, SF_Coord *cast_position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall sf_ai_avoidance_freeze_handler(CGdAIBattleData *_this, uint16_t figure_index, uint16_t spell_index)
uint32_t __thiscall sf_ai_avoidance_hypnotize_handler(CGdAIBattleData *_this, uint16_t figure_index, uint16_t spell_index)
uint32_t __thiscall sf_ai_avoidance_invulnerability_handler(CGdAIBattleData *_this, uint16_t figure_index, uint16_t spell_index)
uint32_t __thiscall sf_ai_avoidance_shield_handler(CGdAIBattleData *_this, uint16_t figure_index, uint16_t spell_index)
uint32_t __thiscall cure_disease_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall hallow_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall berserk_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall shields_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall death_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall fireburst_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall disenchant_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall manatap_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall RCA_ability_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall amok_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall hypnotize_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall lifetap_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall do_not_cast_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall dispel_white_aura_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall befriend_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall healing_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall tower_extinct_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall shift_life_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall death_grasp_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall demoralization_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall charm_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall freeze_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall summon_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall riposte_ability_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall dominate_undead_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall cure_poison_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall sacrifice_mana_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall offensive_aura_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall HCA_ability_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall illusion_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall critical_hits_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall wave_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall dominate_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall petrify_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall defensive_aura_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall blessing_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall healing_aura_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall extinct_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall benefactions_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall confuse_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall aura_light_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
void __thiscall npc_moon_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall elf_frostbringer_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_sorcery_tower_done_handler2(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall norcaine_sorcery_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_sun_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_frostbringer_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall human_white_hand_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall multiworker_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_spitflower_done_handler2(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall undead_bone_tower_done_handler2(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall army_worker_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_white_hand_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall orc_firestarter_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_mindbreaker_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall default_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall breeder_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_holy_statue_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_firestarter_done_handler2(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_sorcery_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_crossbow_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_spitflower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall blade_black_tower_done_handler3(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall norcaine_mindbreaker_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall troll_stonethrower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall human_crossbow_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall elf_archer_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall blade_dark_mananode_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall wulfgar_crossbow_tower_done_handler2(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall wulfgar_crossbow_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall blade_black_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall undead_bone_tower_done_handler3(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall undead_bone_tower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_stonethrower_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall blade_dark_crystal_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall singleworker_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall npc_firestarter_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
void __thiscall blade_black_tower_done_handler2(SF_CGdBuildingToolbox *_this, uint16_t building_index)
@ SMELTER_BUILDING
@ MOONSILVER_BUILDING
@ HUNTER_BUILDING
@ MACE_CARVER_BUILDING
@ HABITABLE_SINGLE_BUILDING
@ WOODCUTTER_BUILDING
@ SHRINE_BUILDING
@ SCAVENGER_BUILDING
@ FOODSTORE_BUILDING
@ MASTER_BUILDING
@ GATHERER_BUILDING
@ QUARRY_BUILDING
@ HABITABLE_BUILDING
@ BREEDER_BUILDING
@ FORESTER_BUILDING
@ TEMPLE_BUILDING
@ STONEMASON_BUILDING
@ FISHER_BUILDING
@ SAWMILL_BUILDING
@ WHITE_AURA_SPELL
@ STACKABLE_SPELL
@ SIEGE_AURA_SPELL
@ BLACK_AURA_SPELL
@ TARGET_ONHIT_SPELL
@ DOMINATION_SPELL
@ COMBAT_ABILITY_SPELL
@ kGdSpellLineInflexibility
@ kGdSpellLineShockChained
@ kGdSpellLineAuraSiegeElf
@ kGdSpellLineAmok
@ kGdSpellLineRegenerate
@ kGdSpellLineRoots
@ kGdSpellLineDetectMagic
@ kGdSpellLineAbilityTrueShot
@ kGdSpellLineAbilitySteelSkin
@ kGdSpellLineGreaterHealing
@ kGdSpellLineAbilityDurability
@ kGdSpellLineAuraHypnotization
@ kGdSpellLineManaTap
@ kGdSpellLineWaveOfIce
@ kGdSpellLineSummonDemon
@ kGdSpellLineAuraManaTap
@ kGdSpellLineAbilityPatronize
@ kGdSpellLineDarknessArea
@ kGdSpellLineShock
@ kGdSpellLineManaTapChained
@ kGdSpellLineCharm
@ kGdSpellLineAuraRegeneration
@ kGdSpellLineWeaken
@ kGdSpellLinePainArea
@ kGdSpellLineCharmAnimal
@ kGdSpellLineEnlightenment
@ kGdSpellLineDispelWhiteAura
@ kGdSpellLinePoison
@ kGdSpellLineChainFireburst
@ kGdSpellLineInvisibility
@ kGdSpellLineSummonGoblin
@ kGdSpellLineSlowness
@ kGdSpellLineStoneTower
@ kGdSpellLineForget
@ kGdSpellLineAuraSlowFighting
@ kGdSpellLineDisenchant
@ kGdSpellLineExtinct
@ kGdSpellLineChillResistance
@ kGdSpellLineFireBallEffect
@ kGdSpellLineSummonBear
@ kGdSpellLinePain
@ kGdSpellLineAuraSiegeOrc
@ kGdSpellLineLifeTap
@ kGdSpellLineDeath
@ kGdSpellLineSuffocation
@ kGdSpellLineRockBullet
@ kGdSpellLineMeditation
@ kGdSpellLineAcidCloud
@ kGdSpellLineIceShieldStun
@ kGdSpellLineSlowFighting
@ kGdSpellLinePestilence
@ kGdSpellLineIlluminate
@ kGdSpellLinePainTower
@ kGdSpellLineAuraDexterity
@ kGdSpellLineBrilliance
@ kGdSpellLineAuraInflexibility
@ kGdSpellLineIceBurst
@ kGdSpellLineInability
@ kGdSpellLineFeignDeath
@ kGdSpellLineEternity
@ kGdSpellLineAuraSiegeHuman
@ kGdSpellLineQuickness
@ kGdSpellLineDetectMetal
@ kGdSpellLineSummonChanneler
@ kGdSpellLineAbilityShelter
@ kGdSpellLineHypnotizeArea
@ kGdSpellLineAlmightinessMental
@ kGdSpellLineRevenge
@ kGdSpellLineCannibalize
@ kGdSpellLineCharmChained
@ kGdSpellLineChainHallow
@ kGdSpellLineFireBlockEffect
@ kGdSpellLineIceBurstChained
@ kGdSpellLineArrowTower
@ kGdSpellLineFireShield
@ kGdSpellLineMirrorImage
@ kGdSpellLineIceArrowEffect
@ kGdSpellLineRemoveCurse
@ kGdSpellLineIceburstTower
@ kGdSpellLineStoneRain
@ kGdSpellLineDominateAnimal
@ kGdSpellLineAuraEternity
@ kGdSpellLineHypnotizeTower
@ kGdSpellLineHallow
@ kGdSpellLineSpark
@ kGdSpellLineAuraHealing
@ kGdSpellLineRetention
@ kGdSpellLineHypnotize
@ kGdSpellLineDoNotTouchMe
@ kGdSpellLineManaTapAura
@ kGdSpellLineSentinelHealing
@ kGdSpellLineAlmightinessElementalEffect
@ kGdSpellLineChainShock
@ kGdSpellLinePetrify
@ kGdSpellLineRemediless
@ kGdSpellLinePlagueArea
@ kGdSpellLineSummonSpectre
@ kGdSpellLineChainRockBullet
@ kGdSpellLineAbilityCriticalHits
@ kGdSpellLineConfuseArea
@ kGdSpellLineFireBallChained
@ kGdSpellLineThornShieldDamage
@ kGdSpellLineSacrificeMana
@ kGdSpellLineAuraWeakness
@ kGdSpellLineInvulnerability
@ kGdSpellLineSuicideHeal
@ kGdSpellLineAbilityWarCry
@ kGdSpellLineRockBulletChained
@ kGdSpellLineLifeTapAura
@ kGdSpellLineStone
@ kGdSpellLineFireBurstChained
@ kGdSpellLineGuard
@ kGdSpellLineFireShieldDamage
@ kGdSpellLineDecayArea
@ kGdSpellLineEssenceWhite
@ kGdSpellLineSummonEarthGolem
@ kGdSpellLineSummonSkeleton
@ kGdSpellLineAbilityBenefactions
@ kGdSpellLineReinforcement
@ kGdSpellLineDexterity
@ kGdSpellLineFlexibilityArea
@ kGdSpellLineChainPain
@ kGdSpellLineIceBlockEffect
@ kGdSpellLineFakeSpellOneFigure
@ kGdSpellLineChainMutation
@ kGdSpellLineAuraSiegeDarkElf
@ kGdSpellLineAbilitySalvo
@ kGdSpellLineAbilityBlessing
@ kGdSpellLineSummonFireGolem
@ kGdSpellLineEarthElemental
@ kGdSpellLineMutation
@ kGdSpellLineStrengthen
@ kGdSpellLineLifeTapChained
@ kGdSpellLineChainIceburst
@ kGdSpellLineHypnotizeTwo
@ kGdSpellLineAuraSuffocation
@ kGdSpellLineAssistance
@ kGdSpellLineAuraSiegeTroll
@ kGdSpellLineEssenceMental
@ kGdSpellLineFeetClay
@ kGdSpellLineFireElemental
@ kGdSpellLineDecay
@ kGdSpellLineVoodoo
@ kGdSpellLineMutationChained
@ kGdSpellLineSummonTreeWraith
@ kGdSpellLineHealingTower
@ kGdSpellLineTorture
@ kGdSpellLineShockwave
@ kGdSpellLineHolyMight
@ kGdSpellLineHealing
@ kGdSpellLineFog
@ kGdSpellLineRainOfFire
@ kGdSpellLineExtinctTower
@ kGdSpellLineProtectionBlack
@ kGdSpellLineCharisma
@ kGdSpellLineEssenceBlack
@ kGdSpellLineAuraSlowWalking
@ kGdSpellLineFireBurst
@ kGdSpellLinePainChained
@ kGdSpellLineHealingArea
@ kGdSpellLineSuicideDeath
@ kGdSpellLineRaiseDead
@ kGdSpellLineFireBall
@ kGdSpellLineFlexibility
@ kGdSpellLineHealingAura
@ kGdSpellLineRootsArea
@ kGdSpellLineAlmightinessElemental
@ kGdSpellLineAuraLifeTap
@ kGdSpellLineDisrupt
@ kGdSpellLineBlizzard
@ kGdSpellLineCureDisease
@ kGdSpellLineShiftMana
@ kGdSpellLineAbilityRiposte
@ kGdSpellLineDarkBanishing
@ kGdSpellLineManaShield
@ kGdSpellLineDispelBlackAura
@ kGdSpellLineMeltResistance
@ kGdSpellLineInflexibilityArea
@ kGdSpellLineEndurance
@ kGdSpellLineAuraFlexibility
@ kGdSpellLineSummonIceGolem
@ kGdSpellLineSelfIllusion
@ kGdSpellLineQuicknessArea
@ kGdSpellLineEssenceElementalEffect
@ kGdSpellLineFreezeArea
@ kGdSpellLineSlownessArea
@ kGdSpellLineBefriend
@ kGdSpellLineDeathGrasp
@ kGdSpellLineFastFighting
@ kGdSpellLineFireResistance
@ kGdSpellLineAuraBrilliance
@ kGdSpellLineThornShield
@ kGdSpellLineSummonBlade
@ kGdSpellLineConservation
@ kGdSpellLineAlmightinessWhite
@ kGdSpellLineAbilityBerserk
@ kGdSpellLineAuraFastFighting
@ kGdSpellLineManaDrain
@ kGdSpellLineHolyTouch
@ kGdSpellLineDominate
@ kGdSpellLineAuraStrength
@ kGdSpellLineWaveOfRocks
@ kGdSpellLineDemoralization
@ kGdSpellLineAuraLight
@ kGdSpellLineAbilityShiftLife
@ kGdSpellLineConfuse
@ kGdSpellLineIceElemental
@ kGdSpellLineSummonWolf
@ kGdSpellLineFireBurstTower
@ kGdSpellLineChainLifetap
@ kGdSpellLineChainFireball
@ kGdSpellLineAlmightinessBlack
@ kGdSpellLineAuraInability
@ kGdSpellLineDistract
@ kGdSpellLineIceShield
@ kGdSpellLineAuraEndurance
@ kGdSpellLineHallowChained
@ kGdSpellLineEssenceElemental
@ kGdSpellLineFreeze
@ kGdSpellLineDominateUndead
@ kGdSpellLineAbilityEndurance
@ kGdSpellLineWaveOfFire
@ kGdSpellLineChainManatap
@ kGdSpellLineWeakenArea
@ kGdSpellLineAuraFastWalking
@ kGdSpellLineChainCharm
@ kGdSpellLineCurePoison
@ kGdSpellLineStrengthenArea
uint16_t __thiscall critical_hits_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall endurance_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall warcry_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall assistance_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall berserk_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall riposte_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall durability_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall trueshot_onhit_handler(SF_CGdFigureJobs *_this, uint16_t source_index, uint16_t target_index, uint16_t damage)
uint16_t __thiscall spark_phys_handler(SF_CGdEffect *_this, uint16_t source, uint16_t target, bool *isSpellDamage, uint16_t damage)
void __thiscall stone_rain_phys_handler(SF_CGdEffect *_this, uint16_t effect_id)
void initialize_vanilla_effect_handler_hooks()
void __thiscall aura_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall shock_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall petrify_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall manatap_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall inflexibility_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fog_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall raise_dead_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall charm_animal_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall freeze_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall icestrike_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall suicide_death_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall retention_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fireburst_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall healing_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall extinct_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall acid_cloud_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall tower_icestrike_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall belial_effect_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall elemental_almightness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fireball_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall holy_touch_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall manadrain_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall manatap_aura_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_critical_hits_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_pain_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_salvo_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall charisma_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall mental_essence_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall cannibalize_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall suicide_heal_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall pestilence_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall poison_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall spark_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dominate_undead_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall detect_magic_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall cloak_of_nor_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall death_grasp_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall decay2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall self_illusion_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall black_essence_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall thorn_shield_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_roots_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall mutation_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fireshield_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall befriend_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall feign_death_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall white_essence_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_hypnotize_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall black_almightness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall hypnotize_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_durability_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall endurance_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall meditation_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall hallow_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall sentinel_healing_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall shockwave_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall cure_disease_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall suffocation_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall roots_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall aura_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_trueshot_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_quickness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall revenge_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall torture_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall slowness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall iceshield2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall brilliance_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall mirage_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_steelskin_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_slowness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall quickness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall sacrifice_mana_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall tower_arrow_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall manashield_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dominate_animal_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall amok_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall slow_fighting_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall default_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall chill_resistance_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall illuminate_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall lava_bullet_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall tower_extinct_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall mental_almightness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall iceshield_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall strength_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall siege_aura_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall death_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_freeze_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall eternity_aura_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_strength_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dispel_white_aura_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall rain_of_fire_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dexterity_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall freeze3_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dominate_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_darkness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dark_banishing_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fireshield2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_endurance_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall disenchant_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall guard_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall clay_feet_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_confuse_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall invisibility_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_boons_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall decay1_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall enlightenment_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall elemental_essence2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_plague_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_weaken_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall wave_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall elemental_essence_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_inflexibility_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall flexibility_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall melt_resistance_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall remediless_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall chain_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall feedback_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall conservation_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall confuse_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall pain_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_shift_life_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall inablility_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall summons_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall remove_curse_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall invulnerability_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_healing_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall demoralization_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall lifetap_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_warcry_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall stone_rain_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall stone_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_patronize_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall white_almightness_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall charm_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall forget_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall lifetap_aura_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall rock_bullet_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall tower_healing_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall tower_pain_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dispel_black_aura_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall elemental_almightness2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall regenerate_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall thorn_shield2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall firebane_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall area_flexibility_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall reinforcement_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fast_fighting_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall tower_hypnotize_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall blizzard_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall detect_metal_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_riposte_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall tower_stone_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall freeze2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall unkn_spell2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall cure_poison_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_benefactions_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall weaken_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall shift_mana_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_berserk_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall ability_shelter_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall assistance_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall distract_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fireball2_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall disrupt_handler(SF_CGdSpell *_this, uint16_t spell_index)
void initialize_vanilla_buildings()
void initialize_vanilla_spells()
void __thiscall foodstore_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall fisher_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall hq_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall scavenger_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall forge_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall gatherer_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall mace_carver_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall forester_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall temple_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall miner_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall quarry_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall farmer_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall shrine_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall sawmill_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall hunter_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall smelter_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall woodcutter_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)
void __thiscall cattle_breeder_entry_handler(SF_CGdFigureJobs *_this, uint16_t figure_id, uint16_t building_id)