33 if ((_this->
type != 0) && (_this->
type < 10000))
42 uint32_t index = position->
X + position->
Y * 0x400;
47 int inner_radius,
int outer_radius)
51 iVar1 = (y1 - y2) * (y1 - y2) + (x1 - x2) * (x1 - x2);
52 if (iVar1 < (inner_radius * inner_radius - 1))
54 return inner_radius * inner_radius - iVar1;
56 if ((outer_radius * outer_radius + 1) < iVar1)
58 return iVar1 - outer_radius * outer_radius;
65 return (param_1 ^ (
int)param_1 >> 0x1f) - ((int)param_1 >> 0x1f);
72 uint16_t target_index,
83 uint32_t rank = handler(_this, target_index, spell_line, spell_data);
85 target_index, spell_line)) && (!isStackable))
93 uint16_t target_index,
108 uint32_t rank = handler(_this, target_index, spell_line, spell_data);
110 target_index, spell_line)) && (!isStackable))
118 uint16_t figure_index)
120 uint16_t spell_node =
123 uint32_t result = 100;
124 while (spell_node != 0)
126 uint16_t spell_index =
132 uint32_t current_result = handler(&_this->
battleData, figure_index,
134 if (current_result >= result)
136 result = current_result;
147 SF_Coord cast_pos, uint16_t spell_line,
151 return handler(_this, &cast_pos, spell_line, spell_data);
SpellFunctions * spellAPI
FigureFunctions * figureAPI
ToolboxFunctions * toolboxAPI
uint32_t __thiscall rank_support_spell_hook(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
Injects into the ranking system for a single target AI spell.
uint32_t __thiscall avoidance_penalty_hook(SF_CGdBattleDevelopment *_this, uint16_t figure_index)
void clearAction(SF_SGtFigureAction *_this)
uint32_t signum(uint32_t param_1)
uint32_t __thiscall rank_offensive_spell_hook(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t GetEuclideanDistanceFromRing(int x1, int y1, int x2, int y2, int inner_radius, int outer_radius)
uint32_t __thiscall ai_AOE_hook(SF_CGdBattleDevelopment *_this, SF_Coord cast_pos, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
bool isSpellAction(SF_SGtFigureAction *_this)
uint16_t __thiscall getSector(SF_CGdWorld *_this, SF_Coord *position)
bool __thiscall hasSpellTag(uint16_t spell_id, SpellTag tag)
ai_aoe_handler_ptr get_ai_aoe_handler(uint16_t spell_line)
ai_avoidance_handler_ptr get_ai_avoidance_handler(uint16_t spell_line)
ai_single_handler_ptr get_single_ai_handler(uint16_t spell_line)
uint32_t __thiscall default_support_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t __thiscall default_offensive_ai_handler(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t(__thiscall * ai_single_handler_ptr)(SF_CGdBattleDevelopment *_this, uint16_t target_index, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t(__thiscall * ai_aoe_handler_ptr)(SF_CGdBattleDevelopment *_this, SF_Coord *position, uint16_t spell_line, SF_CGdResourceSpell *spell_data)
uint32_t(__thiscall * ai_avoidance_handler_ptr)(CGdAIBattleData *_this, uint16_t figure_index, uint16_t spell_line)
SF_CGdFigureToolbox * CGdFigureToolBox
High-level structure managing AI battle development.
CGdAIBattleData battleData
SF_world_unkn_2 cells[1048576]
getSpellLine_ptr getSpellLine
Retrieves the spell type ID of a given spell.