Files
2HUCardTDGame/scripts/vscripts/abilities/abilitywriggle.lua
2021-10-24 15:36:18 -04:00

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