// функция получения списка приоритета стеков
int __stdcall GetStackPriority()
{
int a = 0; // переменная которая будет хранить кол-во стеков с HP больше нуля
for (j = 0; j <= 41; j++) // для этого создаем цикл и проходим по всем стекам 0 ... 41
{
// проверка на кол-во монстров в стеке в цикле, и если больше нуля, то записывам номер стека в массив
if (GetBattleStackParam1(j, 76) > 0)
{
// потом тут будут также проверки на ослепление, окаменение и паралич
StackPriority[a] = j; // создаем массив [a] со списком монстров, у которых текущее кол-во больше нуля
a++;
}
}
// теперь создаем список приоритетов из имеющегося массива живых стеков через пузырьковую сортировку
for (i = 0; i <= a - 1; i++)
{
// вызываем функцию приоритетов
// v1 = CALL_3(int, __thiscall, 0x464B30, o_BattleMgr_, &(o_BattleMgr_->stack[side][stack]), &(o_BattleMgr_->stack[side][stack]) );
// если второй стек приоритетнее первого
if (CALL_3(int, __thiscall, 0x464B30, o_BattleMgr_, &(o_BattleMgr_->stack(StackPriority[i])), &(o_BattleMgr_->stack(StackPriority[i + 1])) ) != 1)
// тут будут меняться местами стеки [i] и [i + 1] внути массива StackPriority[a]
}
return 1;
}