if AIUtils then return end
AIUtils = {}
local J = require( GetScriptDirectory()..'/FunLib/jmz_func' )
local Minion = dofile( GetScriptDirectory()..'/FunLib/aba_minion' )

TARGET_TYPE_TARGET = (1<<0) --是对单位施放的技能
TARGET_TYPE_LOCATION = (1<<1) --是对地板施放的技能
TARGET_TYPE_NOTARGET = (1<<2) --是按了就会施放的技能

CONSIDER_LANING = (1<<0) --是可以在对线期使用的技能
CONSIDER_TEAM_BATTLE = (1<<2) --是可以在团战使用的技能
CONSIDER_RETREAT = (1<<3) --是可以在团战使用的技能
CONSIDER_FARM = (1<<3) --是可以在打钱时使用的技能
CONSIDER_PUSH = (1<<4) --是可以在推进时使用的清兵技能
CONSIDER_ROSHAN = (1<<5) --是可以对肉山使用的技能

ALLOW_TO_ENEMY_CREEP = (1<<1) --是可以对敌方小兵使用的技能
ALLOW_TO_ALLY_HERO = (1<<2) --是可以对友方英雄使用的技能
ALLOW_TO_ENEMY_HERO = (1<<3) --是可以对敌方英雄使用的技能
ALLOW_TO_ROSHAN = (1<<4) --是应当对肉山使用的技能

ABILITY_EFFECT_AOE = (1<<0) --是带有AOE的技能
ABILITY_EFFECT_STUN = (1<<1) --是带有晕眩的技能
ABILITY_EFFECT_SLOW = (1<<2) --是带有减速的技能
ABILITY_EFFECT_DOT = (1<<3) --是会导致持续掉血的技能
ABILITY_EFFECT_HEAL = (1<<4) --是会导致恢复的技能
ABILITY_EFFECT_PURGE = (1<<5) --是带有弱驱散的技能
ABILITY_EFFECT_HARD_PURGE = (1<<6) --是带有强驱散的技能


function AIUtils.ThinkToEnemyHero(ability,data)
    data = data or {}
    if not (data.considerType and data.targetType) then return 0 end
    local consider = data.considerType
    local targetType = data.targetType
    local castPoint = data.castPoint or ability:GetCastPoint()
    local damage = data.damage or ability:GetAbilityDamage()
    local damageType = damage.damageType or DAMAGE_TYPE_MAGICAL
	local castRange = damage.castRange or ability:GetCastRange()
    local lv = ability:GetLevel()

    local useLv = 2 or data.useLv
    local aoeNum = 2 or data.aoeNum
    
    



end

function AIUtils.ThinkToEnemyCreep(ability, data)
end