Spellforce-Spell-framework
Loading...
Searching...
No Matches
sf_spellend_handlers.cpp
Go to the documentation of this file.
2#include "../core/sf_hooks.h"
4
5// default case
6void __thiscall default_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
7{
8 spellAPI.removeDLLNode(_this, spell_index);
9 spellAPI.setEffectDone(_this, spell_index, 0);
10}
11
12// Stat changing handlers
13void __thiscall slowness_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
14{
15 SF_CGdResourceSpell spell_data;
17 _this->active_spell_list[spell_index].spell_id);
18 uint16_t target_index =
19 _this->active_spell_list[spell_index].target.entity_index;
20
21 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
22 spell_data.spell_line_id))
23 {
25 target_index, spell_data.params[0]);
26 }
27 // just don't wanna to repeat it every time
28 default_end_handler(_this, spell_index);
29}
30void __thiscall decay1_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
31{
32 SF_CGdResourceSpell spell_data;
34 _this->active_spell_list[spell_index].spell_id);
35 uint16_t target_index =
36 _this->active_spell_list[spell_index].target.entity_index;
37
38 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
39 spell_data.spell_line_id))
40 {
42 target_index, spell_data.params[2]);
43 }
44 default_end_handler(_this, spell_index);
45}
46
48 uint16_t spell_index)
49{
50 SF_CGdResourceSpell spell_data;
52 _this->active_spell_list[spell_index].spell_id);
53 uint16_t target_index =
54 _this->active_spell_list[spell_index].target.entity_index;
55
56 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
57 spell_data.spell_line_id))
58 {
60 target_index, spell_data.params[0]);
61 }
62 default_end_handler(_this, spell_index);
63}
64
65void __thiscall weaken_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
66{
67 SF_CGdResourceSpell spell_data;
69 _this->active_spell_list[spell_index].spell_id);
70 uint16_t target_index =
71 _this->active_spell_list[spell_index].target.entity_index;
72
73 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
74 spell_data.spell_line_id))
75 {
77 target_index, spell_data.params[0]);
78 }
79 default_end_handler(_this, spell_index);
80}
81
82void __thiscall quickness_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
83{
84 SF_CGdResourceSpell spell_data;
86 _this->active_spell_list[spell_index].spell_id);
87 uint16_t target_index =
88 _this->active_spell_list[spell_index].target.entity_index;
89 int8_t bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
91
92 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
93 spell_data.spell_line_id))
94 {
96 target_index, bonus);
97 }
98 default_end_handler(_this, spell_index);
99}
100
102 uint16_t spell_index)
103{
104 SF_CGdResourceSpell spell_data;
105 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
106 _this->active_spell_list[spell_index].spell_id);
107 uint16_t target_index =
108 _this->active_spell_list[spell_index].target.entity_index;
109 int8_t bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
111
112 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
113 spell_data.spell_line_id))
114 {
116 target_index, bonus);
117 }
118 default_end_handler(_this, spell_index);
119}
120
121void __thiscall strength_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
122{
123 SF_CGdResourceSpell spell_data;
124 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
125 _this->active_spell_list[spell_index].spell_id);
126 uint16_t target_index =
127 _this->active_spell_list[spell_index].target.entity_index;
128 int8_t bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
130
131 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
132 spell_data.spell_line_id))
133 {
135 target_index, bonus);
136 }
137 default_end_handler(_this, spell_index);
138}
139
140// same handler for both brilliance and retention
141void __thiscall brilliance_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
142{
143 SF_CGdResourceSpell spell_data;
144 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
145 _this->active_spell_list[spell_index].spell_id);
146 uint16_t target_index =
147 _this->active_spell_list[spell_index].target.entity_index;
148 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
149 spell_data.spell_line_id))
150 {
151 uint16_t max_mana = figureAPI.getCurrentMaxMana(_this->SF_CGdFigure,
152 target_index);
154 target_index, -spell_data.params[0]);
156 figureAPI.rescaleMana(_this->SF_CGdFigure, target_index, max_mana);
157 }
158 default_end_handler(_this, spell_index);
159}
160
162 uint16_t spell_index)
163{
164 SF_CGdResourceSpell spell_data;
165 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
166 _this->active_spell_list[spell_index].spell_id);
167 uint16_t target_index =
168 _this->active_spell_list[spell_index].target.entity_index;
169 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
170 spell_data.spell_line_id))
171 {
172 uint16_t max_health = figureAPI.getCurrentMaxHealth(_this->SF_CGdFigure,
173 target_index);
175 target_index, spell_data.params[0]);
177 figureAPI.rescaleHealth(_this->SF_CGdFigure, target_index, max_health);
178 }
179 default_end_handler(_this, spell_index);
180}
181
182void __thiscall inablility_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
183{
184 SF_CGdResourceSpell spell_data;
185 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
186 _this->active_spell_list[spell_index].spell_id);
187 uint16_t target_index =
188 _this->active_spell_list[spell_index].target.entity_index;
189 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
190 spell_data.spell_line_id))
191 {
193 target_index, spell_data.params[0]);
194 }
195 default_end_handler(_this, spell_index);
196}
197
199 uint16_t spell_index)
200{
201 SF_CGdResourceSpell spell_data;
202 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
203 _this->active_spell_list[spell_index].spell_id);
204 uint16_t target_index =
205 _this->active_spell_list[spell_index].target.entity_index;
206 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
207 spell_data.spell_line_id))
208 {
210 target_index, spell_data.params[0]);
211 }
212 default_end_handler(_this, spell_index);
213}
214
215void __thiscall dexterity_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
216{
217 SF_CGdResourceSpell spell_data;
218 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
219 _this->active_spell_list[spell_index].spell_id);
220 uint16_t target_index =
221 _this->active_spell_list[spell_index].target.entity_index;
222 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
223 spell_data.spell_line_id))
224 {
225 int8_t bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
228 target_index, bonus);
229 }
230 default_end_handler(_this, spell_index);
231}
232
233void __thiscall edurance_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
234{
235 SF_CGdResourceSpell spell_data;
236 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
237 _this->active_spell_list[spell_index].spell_id);
238 uint16_t target_index =
239 _this->active_spell_list[spell_index].target.entity_index;
240 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
241 spell_data.spell_line_id))
242 {
243 uint16_t max_health = figureAPI.getCurrentMaxHealth(_this->SF_CGdFigure,
244 target_index);
245 int8_t bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
248 target_index, bonus);
250 figureAPI.rescaleHealth(_this->SF_CGdFigure, target_index, max_health);
251 }
252 default_end_handler(_this, spell_index);
253}
254
256 uint16_t spell_index)
257{
258 SF_CGdResourceSpell spell_data;
259 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
260 _this->active_spell_list[spell_index].spell_id);
261 uint16_t target_index =
262 _this->active_spell_list[spell_index].target.entity_index;
263 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
264 spell_data.spell_line_id))
265 {
267 target_index, -spell_data.params[0]);
268 }
269 default_end_handler(_this, spell_index);
270}
271
272void __thiscall charisma_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
273{
274 SF_CGdResourceSpell spell_data;
275 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
276 _this->active_spell_list[spell_index].spell_id);
277 uint16_t target_index =
278 _this->active_spell_list[spell_index].target.entity_index;
279 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
280 spell_data.spell_line_id))
281 {
283 target_index, -spell_data.params[0]);
284 }
285 default_end_handler(_this, spell_index);
286}
287
289 uint16_t spell_index)
290{
291 SF_CGdResourceSpell spell_data;
292 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
293 _this->active_spell_list[spell_index].spell_id);
294 uint16_t target_index =
295 _this->active_spell_list[spell_index].target.entity_index;
296 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
297 spell_data.spell_line_id))
298 {
299 uint16_t max_mana = figureAPI.getCurrentMaxMana(_this->SF_CGdFigure,
300 target_index);
301 int8_t bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
304 target_index, bonus);
305 bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
308 target_index, bonus);
310 figureAPI.rescaleMana(_this->SF_CGdFigure, target_index, max_mana);
311 }
312 default_end_handler(_this, spell_index);
313}
315 uint16_t spell_index)
316{
317 SF_CGdResourceSpell spell_data;
318 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
319 _this->active_spell_list[spell_index].spell_id);
320 uint16_t target_index =
321 _this->active_spell_list[spell_index].target.entity_index;
322 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
323 spell_data.spell_line_id))
324 {
326 target_index, spell_data.params[0]);
327 }
328 default_end_handler(_this, spell_index);
329}
330
332 uint16_t spell_index)
333{
334 SF_CGdResourceSpell spell_data;
335 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
336 _this->active_spell_list[spell_index].spell_id);
337 uint16_t target_index =
338 _this->active_spell_list[spell_index].target.entity_index;
339 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
340 spell_data.spell_line_id))
341 {
343 target_index, spell_data.params[0]);
344 }
345 default_end_handler(_this, spell_index);
346}
347
349 uint16_t spell_index)
350{
351 SF_CGdResourceSpell spell_data;
352 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
353 _this->active_spell_list[spell_index].spell_id);
354 uint16_t target_index =
355 _this->active_spell_list[spell_index].target.entity_index;
356 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
357 spell_data.spell_line_id))
358 {
360 target_index, spell_data.params[3]);
362 target_index, spell_data.params[2]);
363 }
364 default_end_handler(_this, spell_index);
365}
366
368 uint16_t spell_index)
369{
370 SF_CGdResourceSpell spell_data;
371 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
372 _this->active_spell_list[spell_index].spell_id);
373 uint16_t target_index =
374 _this->active_spell_list[spell_index].target.entity_index;
375 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
376 spell_data.spell_line_id))
377 {
379 target_index, -spell_data.params[3]);
381 target_index, -spell_data.params[2]);
382 }
383 default_end_handler(_this, spell_index);
384}
385
386void __thiscall mutation_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
387{
388 SF_CGdResourceSpell spell_data;
389 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
390 _this->active_spell_list[spell_index].spell_id);
391 uint16_t target_index =
392 _this->active_spell_list[spell_index].target.entity_index;
393 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
394 spell_data.spell_line_id))
395 {
396 int8_t bonus = spellAPI.getXData(_this, spell_index,
398 uint16_t stat_value =
399 _this->SF_CGdFigure->figures[target_index].resistance_fire.base_val;
400 int8_t recalc_value = stat_value - ((bonus * stat_value) / 100);
402 target_index, recalc_value);
403
404 stat_value =
405 _this->SF_CGdFigure->figures[target_index].fight_speed.base_val;
406 recalc_value = stat_value - ((bonus * stat_value) / 100);
408 target_index, recalc_value);
409
410 stat_value =
411 _this->SF_CGdFigure->figures[target_index].intelligence.base_val;
412 recalc_value = stat_value - ((bonus * stat_value) / 100);
414 target_index, recalc_value);
415
416 stat_value =
417 _this->SF_CGdFigure->figures[target_index].stamina.base_val;
418 recalc_value = stat_value - ((bonus * stat_value) / 100);
420 target_index, recalc_value);
421
422 bonus = spellAPI.getXData(_this, spell_index, SPELL_STAT_MUL_MODIFIER2);
423 stat_value =
424 _this->SF_CGdFigure->figures[target_index].resistance_ice.base_val;
425 recalc_value = stat_value - ((bonus * stat_value) / 100);
427 target_index, recalc_value);
428
429 stat_value =
430 _this->SF_CGdFigure->figures[target_index].cast_speed.base_val;
431 recalc_value = stat_value - ((bonus * stat_value) / 100);
433 target_index, recalc_value);
434
435 stat_value = _this->SF_CGdFigure->figures[target_index].wisdom.base_val;
436 recalc_value = stat_value - ((bonus * stat_value) / 100);
438 target_index, recalc_value);
439
440 bonus = spellAPI.getXData(_this, spell_index, SPELL_STAT_MUL_MODIFIER3);
441 stat_value =
442 _this->SF_CGdFigure->figures[target_index].resistance_black.base_val;
443 recalc_value = stat_value - ((bonus * stat_value) / 100);
445 target_index, recalc_value);
446
447 stat_value =
448 _this->SF_CGdFigure->figures[target_index].walk_speed.base_val;
449 recalc_value = stat_value - ((bonus * stat_value) / 100);
451 target_index, recalc_value);
452
453 stat_value =
454 _this->SF_CGdFigure->figures[target_index].charisma.base_val;
455 recalc_value = stat_value - ((bonus * stat_value) / 100);
457 target_index, recalc_value);
458
459 stat_value =
460 _this->SF_CGdFigure->figures[target_index].dexterity.base_val;
461 recalc_value = stat_value - ((bonus * stat_value) / 100);
463 target_index, recalc_value);
464
465 bonus = spellAPI.getXData(_this, spell_index, SPELL_STAT_MUL_MODIFIER4);
466 stat_value =
467 _this->SF_CGdFigure->figures[target_index].resistance_mental.
468 base_val;
469 recalc_value = stat_value - ((bonus * stat_value) / 100);
471 RESISTANCE_MENTAL, target_index,
472 recalc_value);
473
474 stat_value =
475 _this->SF_CGdFigure->figures[target_index].strength.base_val;
476 recalc_value = stat_value - ((bonus * stat_value) / 100);
478 target_index, recalc_value);
479
480 stat_value =
481 _this->SF_CGdFigure->figures[target_index].agility.base_val;
482 recalc_value = stat_value - ((bonus * stat_value) / 100);
484 target_index, recalc_value);
485 }
486 default_end_handler(_this, spell_index);
487}
488
489void __thiscall eternity_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
490{
491 SF_CGdResourceSpell spell_data;
492 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
493 _this->active_spell_list[spell_index].spell_id);
494 uint16_t target_index =
495 _this->active_spell_list[spell_index].target.entity_index;
496 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
497 spell_data.spell_line_id))
498 {
499 int8_t bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
502 target_index, bonus);
503 bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
506 target_index, bonus);
507 bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
510 target_index, bonus);
511 bonus = (int8_t)(-spellAPI.getXData(_this, spell_index,
514 target_index, bonus);
515 }
516 default_end_handler(_this, spell_index);
517}
518
519// Muddykat Section:
520
521// FIRST BLOCK (has a goto, to FigureClearCheckSpellsBeforeCheckBattle; -> break;)
523 uint16_t spell_index)
524{
526 default_end_handler(_this, spell_index);
527}
528
530 uint16_t spell_index)
531{
532 spellClearFigureFlag(_this, spell_index, UNFREEZE);
533 default_end_handler(_this, spell_index);
534}
535
537 uint16_t spell_index)
538{
540 spellClearFigureFlag(_this, spell_index, UNFREEZE);
541 default_end_handler(_this, spell_index);
542}
543
545 uint16_t spell_index)
546{
547 spellClearFigureFlag(_this, spell_index, UNFREEZE);
549 default_end_handler(_this, spell_index);
550}
551
552// THIRD BLOCK FigureClearCheckSpellsBeforeCheckBattle -> Done -> Return;
553void __thiscall fog_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
554{
556 spellAPI.setEffectDone(_this, spell_index, 0);
557};
558
559// FOURTH BLOCK FigureTryClearCheckSpellsBeforeJob2 -> goto -> FigureClearCheckSpellsBeforeCheckBattle -> break;
561 uint16_t spell_index)
562{
565 default_end_handler(_this, spell_index);
566}
567
568void __thiscall common_handler_done(SF_CGdSpell *_this, uint16_t spell_index)
569{
570 spellAPI.setEffectDone(_this, spell_index, 1);
571}
572
573// Not 100% sure if this is neccessary, however the order of operations may be important
575 uint16_t spell_index)
576{
579 default_end_handler(_this, spell_index);
580}
581
582void __thiscall clay_feet_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
583{
584 SF_CGdResourceSpell spell_data;
585 spellAPI.getResourceSpellData(_this->SF_CGdResource, &spell_data,
586 _this->active_spell_list[spell_index].spell_id);
587 uint16_t target_index =
588 _this->active_spell_list[spell_index].target.entity_index;
589 if (toolboxAPI.hasSpellOnIt(_this->SF_CGdFigureToolBox, target_index,
590 spell_data.spell_line_id))
591 {
593 target_index, spell_data.params[1]);
595 target_index, spell_data.params[1]);
596 }
599 spellAPI.setEffectDone(_this, spell_index, 0);
600}
601
602void __thiscall aura_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
603{
604 SF_CGdFigure *sf_figures = _this->SF_CGdFigure;
605 uint16_t source_index =
606 _this->active_spell_list[spell_index].source.entity_index;
607 if ((sf_figures->figures[source_index].owner != (uint16_t)(-1)) &&
608 ((sf_figures->figures[source_index].flags & GdFigureFlags::REDO) == 0))
609 {
610 sf_figures->figures[source_index].flags =
611 static_cast<GdFigureFlags>(sf_figures->figures[source_index].flags &
612 (~static_cast<unsigned int>(GdFigureFlags
613 ::
614 AURA_RUNNING)));
615 }
616 uint16_t effect_index = spellAPI.getXData(_this, spell_index,
618 if (effect_index != 0)
619 {
620 effectAPI.tryEndEffect(_this->SF_CGdEffect, effect_index);
621 }
622 default_end_handler(_this, spell_index);
623}
SpellFunctions * spellAPI
Definition TestMod.cpp:11
FigureFunctions * figureAPI
Definition TestMod.cpp:13
ToolboxFunctions * toolboxAPI
Definition TestMod.cpp:12
EffectFunctions effectAPI
Definition sf_hooks.c:37
void __thiscall spellClearFigureFlag(SF_CGdSpell *_this, uint16_t spell_id, SpellFlagKey key)
@ DEXTERITY
@ AGILITY
@ RESISTANCE_ICE
@ CAST_SPEED
@ INTELLIGENCE
@ RESISTANCE_FIRE
@ RESISTANCE_MENTAL
@ RESISTANCE_BLACK
@ FIGHT_SPEED
@ WALK_SPEED
@ SPELL_STAT_MUL_MODIFIER2
@ SPELL_STAT_MUL_MODIFIER4
@ SPELL_STAT_MUL_MODIFIER3
@ SPELL_STAT_MUL_MODIFIER
@ EFFECT_EFFECT_INDEX
@ CHECK_SPELLS_BEFORE_JOB2
@ UNFREEZE
@ CHECK_SPELLS_BEFORE_CHECK_BATTLE
void __thiscall inablility_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall common_handler_done(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall aura_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall chill_resistance_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall melt_resistance_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall black_almightness_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall edurance_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fast_fighting_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall eternity_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall dexterity_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall mutation_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall white_almightness_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall default_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall common_handler_check_battle(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall common_handler_check_unfreeze2(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall common_handler_job_battle_check2(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall common_handler_unfreeze(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall strength_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall weaken_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall enlightenment_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall fog_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall inflexibility_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall decay1_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall charisma_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall suffocation_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall brilliance_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall quickness_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall common_handler_check_unfreeze(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall slow_fighting_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall slowness_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall clay_feet_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall flexibility_end_handler(SF_CGdSpell *_this, uint16_t spell_index)
void __thiscall common_handler_job_battle_check(SF_CGdSpell *_this, uint16_t spell_index)
tryEndEffect_ptr tryEndEffect
rescaleHealth_ptr rescaleHealth
getCurrentMaxMana_ptr getCurrentMaxMana
getCurrentMaxHealth_ptr getCurrentMaxHealth
rescaleMana_ptr rescaleMana
addBonusMultToStatistic_ptr addBonusMultToStatistic
FigureStatisticExt stamina
FigureStatistic strength
FigureStatistic dexterity
FigureStatistic resistance_mental
FigureStatistic charisma
FigureStatistic resistance_fire
FigureStatistic cast_speed
FigureStatistic wisdom
GdFigureFlags flags
FigureStatistic fight_speed
FigureStatistic resistance_ice
FigureStatistic agility
FigureStatistic resistance_black
FigureStatistic walk_speed
FigureStatistic intelligence
A structure for the global list of figures and related statistics for them.
GdFigure figures[2000]
SF_CGDEffect * SF_CGdEffect
SF_CGdFigure * SF_CGdFigure
SF_CGdFigureToolbox * SF_CGdFigureToolBox
SF_GdSpell active_spell_list[800]
SF_CGdTargetData source
SF_CGdTargetData target
getResourceSpellData_ptr getResourceSpellData
setEffectDone_ptr setEffectDone
Stops a spell effect handler for a given spell.
getXData_ptr getXData
Retrieves the XData value for a specific spell.
removeDLLNode_ptr removeDLLNode
Used to remove a spell from the list of active spells over the target.
hasSpellOnIt_ptr hasSpellOnIt
rescaleLevelStats_ptr rescaleLevelStats