local CONST = require 'config.const'
local Suspicion = require 'systems.suspicion'
local Base = require 'profession.base'
Base.register('hound', function(unit, ability)
local scan = clicli.area.create_circle_area(unit:get_point(), 8)
local all = scan:get_all_unit_in_area()
scan:remove()
local target = nil
for _, u in ipairs(all) do
if u ~= unit and u:is_alive() then
target = u
break
end
end
if not target then return end
target:add_buff({ key = CONST.BUFF_TRACKED, source = unit, time = 20.0 })
clicli.timer.loop(1.0, function(timer, count)
if count > 20 then
timer:remove()
return
end
if not target:is_alive() then
timer:remove()
return
end
if target:has_tag('npc') then
target:remove_buffs_by_key(CONST.BUFF_TRACKED)
timer:remove()
local abi = unit:find_ability('英雄', CONST.ABI_BLOOD_TRACK)
if abi then
local remaining = abi:get_cd()
abi:set_cd(remaining * 0.5)
end
return
end
-- 玩家目标:通过本地特效显示脚印(仅施法者可见)
clicli.player.with_local(function(local_player)
if local_player == unit:get_owner() then
local tpos = target:get_point()
clicli.particle.create({
type = CONST.SFX_FOOTPRINT,
target = tpos,
time = 2.0,
scale = 1.0,
angle = 0,
})
end
end)
end, '血迹追踪')
Suspicion.add(unit, 8)
end)
return Base