Code:
int __stdcall ERM_Fix_EA_E(HiHook* hook, _BattleStack_* stack )
{
int ret = 0;
_int32_ spell_duration[81]; // для сохранения длительности заклинаний
_int32_ spells_power[81]; // для сохранения силы действия заклинания
if (stack) {
for (int i=0; i<80; i++) {
spell_duration[i] = stack->active_spell_duration[i];
spells_power[i] = stack->active_spells_power[i];
if (spell_duration[i] > 0 ) // если заклинание наложено на стек, то сбрасываем его эффект
CALL_2(int, __thiscall, 0x444230, stack, i); // ResetSpellFromStack 0x444230
}
}
ret = CALL_1(int, __cdecl, hook->GetDefaultFunc(), stack);
for (int i=0; i<80; i++) {
if (spell_duration[i] > 0) { // если заклинание ранее было наложено, то восстанавливаем его
CALL_5(int, __thiscall, 0x444610, stack, i, spell_duration[i], spells_power[i], 0); // ApplySpell 0x444610
}
}
return ret;
}