12 iteratorAPI.figureIteratorInit(&iter, 0, 0, 0x3ff, 0x3ff);
23 uint16_t figure_index =
iteratorAPI.getNextFigure(&iter);
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;
88 iteratorAPI.figureIteratorInit(&iter, 0, 0, 0x3ff, 0x3ff);
96 uint16_t figure_index =
iteratorAPI.getNextFigure(&iter);
97 while (figure_index != 0)
99 if (sf_figures->
figures[figure_index].
owner != (uint16_t)(-1))
137 iteratorAPI.figureIteratorInit(&iter, 0, 0, 0x3ff, 0x3ff);
144 uint16_t figure_index =
iteratorAPI.getNextFigure(&iter);
145 while (figure_index != 0)
147 if (sf_figures->
figures[figure_index].
owner != (uint16_t)(-1))
179 SF_Coord *cast_position, uint16_t spell_line,
186 uint16_t length = ((uint32_t)enemy_list->
data -
187 (uint32_t)(enemy_list->
first)) >> 1;
189 for (uint16_t i = 0; i < length; i++)
191 uint16_t target_index = enemy_list->
first[i];
197 uint16_t distance =
getDistance(cast_position, &target_pos);
201 if (spell_data->
params[0] >= distance)
209 target_index, spell_line))
211 if (spell_data->
params[0] >= distance)
248 uint16_t length = ((uint32_t)enemy_list->
data -
249 (uint32_t)(enemy_list->
first)) >> 1;
250 uint16_t limit = (length + 2) / 3;
251 for (uint16_t i = 0; i < length; i++)
253 uint16_t target_index = enemy_list->
first[i];
259 uint16_t distance =
getDistance(cast_position, &target_pos);
260 if (spell_data->
params[2] >= distance)
285 uint16_t length = ((uint32_t)enemy_list->
data -
286 (uint32_t)(enemy_list->
first)) >> 1;
288 for (uint16_t i = 0; i < length; i++)
290 uint16_t target_index = enemy_list->
first[i];
296 uint16_t distance =
getDistance(cast_position, &target_pos);
300 if (spell_data->
params[1] >= distance)
308 target_index, spell_line))
310 if (spell_data->
params[1] >= distance)
339 uint16_t length = ((uint32_t)enemy_list->
data -
340 (uint32_t)(enemy_list->
first)) >> 1;
342 for (uint16_t i = 0; i < length; i++)
344 uint16_t target_index = enemy_list->
first[i];
350 uint16_t distance =
getDistance(cast_position, &target_pos);
354 if (spell_data->
params[3] >= distance)
362 target_index, spell_line))
364 if (spell_data->
params[3] >= distance)
392 uint16_t length = ((uint32_t)enemy_list->
data -
393 (uint32_t)(enemy_list->
first)) >> 1;
395 for (uint16_t i = 0; i < length; i++)
397 uint16_t target_index = enemy_list->
first[i];
403 uint16_t distance =
getDistance(cast_position, &target_pos);
407 if (spell_data->
params[2] >= distance)
415 target_index, spell_line))
417 if (spell_data->
params[2] >= distance)
FigureFunctions * figureAPI
ToolboxFunctions * toolboxAPI
IteratorFunctions iteratorAPI
uint32_t __thiscall 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]
High-level structure managing AI battle development.
CGdAIBattleData battleData
Represents a node in a list of unsigned short values.