68 lines
2.5 KiB
Lua
Executable File
68 lines
2.5 KiB
Lua
Executable File
function OnSpellStartWriggle02(keys)
|
|
local caster = EntIndexToHScript(keys.caster_entindex)
|
|
local vecCaster = caster:GetOrigin()
|
|
local vecForward = caster:GetForwardVector()
|
|
local targetPoint = keys.target_points[1] + Vector(0, 0, 200)
|
|
local range = keys.range
|
|
local max_count = keys.max_count
|
|
|
|
local effectIndex1 = ParticleManager:CreateParticle("particles/units/heroes/hero_keeper_of_the_light/keeper_dazzling.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControl(effectIndex1, 0, targetPoint)
|
|
ParticleManager:SetParticleControl(effectIndex1, 1, Vector(range, 1, 1))
|
|
local effectIndex2 = nil
|
|
local count = 1
|
|
local startTime = GameRules:GetGameTime()
|
|
caster:SetContextThink(DoUniqueString("thtd_wriggle_02"),
|
|
function ()
|
|
if GameRules:IsGamePaused() then return 0.03 end
|
|
if count/3 > max_count or THTD_IsValid(caster) == false then
|
|
ParticleManager:DestroyParticleSystem(effectIndex1,true)
|
|
if effectIndex2 ~= nil then ParticleManager:DestroyParticleSystem(effectIndex2,true) end
|
|
-- print("---- duration time : ", GameRules:GetGameTime() - startTime)
|
|
return nil
|
|
end
|
|
if count%3 == 1 then
|
|
effectIndex2 = ParticleManager:CreateParticle("particles/units/heroes/hero_keeper_of_the_light/keeper_dazzling_on.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControl(effectIndex2, 0, targetPoint)
|
|
ParticleManager:SetParticleControl(effectIndex2, 1, Vector(range, 0, 0))
|
|
|
|
local targets = THTD_FindUnitsInRadius(caster,targetPoint,range)
|
|
for k,v in pairs(targets) do
|
|
if v.thtd_is_fearing ~= true then
|
|
v.thtd_is_fearing = true
|
|
|
|
local current_next_move_point = v.next_move_point
|
|
v.next_move_point = targetPoint
|
|
|
|
keys.ability:ApplyDataDrivenModifier(caster, v, "modifier_wriggle02_speed", {})
|
|
|
|
local fearCount = 0.5 * 2 * 10
|
|
-- local startTime = GameRules:GetGameTime()
|
|
v:SetContextThink(DoUniqueString("modifier_thtd_wriggle_02"),
|
|
function()
|
|
if GameRules:IsGamePaused() then return 0.03 end
|
|
if not IsValidAlive(target) then
|
|
return nil
|
|
end
|
|
fearCount = fearCount - 1
|
|
if fearCount <= 0 or THTD_IsValid(caster) == false then
|
|
target.next_move_point = current_next_move_point
|
|
target.thtd_is_fearing = false
|
|
return nil
|
|
end
|
|
return 0.1
|
|
end,
|
|
0)
|
|
end
|
|
end
|
|
elseif count%3 == 0 then
|
|
ParticleManager:DestroyParticleSystem(effectIndex2,true)
|
|
effectIndex2 = nil
|
|
end
|
|
count = count + 1
|
|
return 0.5
|
|
end,
|
|
0)
|
|
|
|
end
|