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
|