local CONST = require 'config.const'
local Suspicion = require 'systems.suspicion'
local Assassin = require 'systems.assassination'
local Base = require 'profession.base'
Base.register('shadow_blade', function(unit, ability)
local facing = unit:get_facing()
local pos = unit:get_point()
local rad = math.rad(facing)
local dx, dy = math.cos(rad) * 5, math.sin(rad) * 5
local target_point = clicli.point.create(pos:get_x() + dx, pos:get_y() + dy)
unit:blink(target_point)
unit:add_state(CONST.STATE_INVISIBLE)
unit:set_transparent_when_invisible(true)
clicli.timer.wait(0.8, function()
unit:remove_state(CONST.STATE_INVISIBLE)
end)
local dash_area = clicli.area.create_circle_area(target_point, 2.0)
local units = dash_area:get_all_unit_in_area()
dash_area:remove()
for _, u in ipairs(units) do
if u ~= unit and u:is_alive() then
unit:damage({
target = u,
damage = 105,
type = CONST.DAMAGE_TYPE_ASSASSINATE,
no_miss = true,
})
if not u:is_alive() then
Assassin.on_kill(unit, u)
end
break
end
end
Suspicion.add(unit, 15)
end)
return Base