24 while (figure_index != 0)
26 if (sf_figures->
figures[figure_index].
owner != (uint16_t)(-1))
53 x_sum = x_sum / count;
54 y_sum = y_sum / count;
55 cast_position->
X = x_sum;
56 cast_position->
Y = y_sum;
97 while (figure_index != 0)
99 if (sf_figures->
figures[figure_index].
owner != (uint16_t)(-1))
146 while (figure_index != 0)
148 if (sf_figures->
figures[figure_index].
owner != (uint16_t)(-1))
180 SF_Coord *cast_position, uint16_t spell_line,
187 uint16_t length = ((uint32_t)enemy_list->
data -
188 (uint32_t)(enemy_list->
first)) >> 1;
190 for (uint16_t i = 0; i < length; i++)
192 uint16_t target_index = enemy_list->
first[i];
198 uint16_t distance =
getDistance(cast_position, &target_pos);
202 if (spell_data->
params[0] >= distance)
210 target_index, spell_line))
212 if (spell_data->
params[0] >= distance)
249 uint16_t length = ((uint32_t)enemy_list->
data -
250 (uint32_t)(enemy_list->
first)) >> 1;
251 uint16_t limit = (length + 2) / 3;
252 for (uint16_t i = 0; i < length; i++)
254 uint16_t target_index = enemy_list->
first[i];
260 uint16_t distance =
getDistance(cast_position, &target_pos);
261 if (spell_data->
params[2] >= distance)
286 uint16_t length = ((uint32_t)enemy_list->
data -
287 (uint32_t)(enemy_list->
first)) >> 1;
289 for (uint16_t i = 0; i < length; i++)
291 uint16_t target_index = enemy_list->
first[i];
297 uint16_t distance =
getDistance(cast_position, &target_pos);
301 if (spell_data->
params[1] >= distance)
309 target_index, spell_line))
311 if (spell_data->
params[1] >= distance)
340 uint16_t length = ((uint32_t)enemy_list->
data -
341 (uint32_t)(enemy_list->
first)) >> 1;
343 for (uint16_t i = 0; i < length; i++)
345 uint16_t target_index = enemy_list->
first[i];
351 uint16_t distance =
getDistance(cast_position, &target_pos);
355 if (spell_data->
params[3] >= distance)
363 target_index, spell_line))
365 if (spell_data->
params[3] >= distance)
393 uint16_t length = ((uint32_t)enemy_list->
data -
394 (uint32_t)(enemy_list->
first)) >> 1;
396 for (uint16_t i = 0; i < length; i++)
398 uint16_t target_index = enemy_list->
first[i];
404 uint16_t distance =
getDistance(cast_position, &target_pos);
408 if (spell_data->
params[2] >= distance)
416 target_index, spell_line))
418 if (spell_data->
params[2] >= distance)
FigureFunctions * figureAPI
ToolboxFunctions * toolboxAPI
IteratorFunctions iteratorAPI
uint32_t getDistance(SF_Coord *pointA, SF_Coord *pointB)
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 figures_missing_hp
SF_CGdFigureToolbox * CGdFigureToolBox
ushort_list_node another_figure_list[2000]
disposeFigureIterator_ptr disposeFigureIterator
getNextFigure_ptr getNextFigure
figureIteratorSetPointers_ptr figureIteratorSetPointers
iteratorSetArea_ptr iteratorSetArea
figureIteratorInit_ptr figureIteratorInit
High-level structure managing AI battle development.
CGdAIBattleData battleData
Represents a node in a list of unsigned short values.