Files
2HUCardTDGame/game/scripts/vscripts/abilities/abilityiku.lua
2021-11-10 08:48:00 -05:00

95 lines
3.6 KiB
Lua
Executable File

function OnIku01AttackLanded(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
local targetPoint = target:GetOrigin()
if caster.thtd_iku_01_attack_count == nil then
caster.thtd_iku_01_attack_count = 0
end
caster.thtd_iku_01_attack_count = caster.thtd_iku_01_attack_count + 1
if caster.thtd_iku_01_attack_count >= keys.max_count then
caster.thtd_iku_01_attack_count = 0
caster:EmitSound("Sound_THTD.thtd_iku_01")
local damage = caster:THTD_GetAbilityPowerDamage(keys.ability)
local targets = THTD_FindUnitsInRadius(caster,targetPoint,keys.radius)
for k,v in pairs(targets) do
if v:HasModifier("modifier_iku_01_debuff_lock") == false then
keys.ability:ApplyDataDrivenModifier(caster, v, "modifier_iku_01_debuff", {Duration = keys.stun_time})
keys.ability:ApplyDataDrivenModifier(caster, v, "modifier_iku_01_debuff_lock", nil)
end
local DamageTable = {
ability = keys.ability,
victim = v,
attacker = caster,
damage = damage,
damage_type = keys.ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable)
end
local effectIndex = ParticleManager:CreateParticle("particles/heroes/iku/ability_iku_01_explosion.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex, 0, targetPoint)
ParticleManager:DestroyParticleSystem(effectIndex,false)
end
end
function OnIku02SpellStart(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local targetPoint = keys.target_points[1]
local time = keys.duration_time
local tick = keys.tick_time
Iku02CreateEffect(keys)
caster:EmitSound("Sound_THTD.thtd_iku_02")
caster:SetContextThink(DoUniqueString("thtd_iku02_lightning"),
function()
if GameRules:IsGamePaused() then return 0.03 end
if time <= 0 then return nil end
local targets = THTD_FindUnitsInRadius(caster,targetPoint,keys.radius)
local damage = caster:THTD_GetAbilityPowerDamage(keys.ability) * tick
for k,v in pairs(targets) do
local DamageTable = {
ability = keys.ability,
victim = v,
attacker = caster,
damage = damage,
damage_type = keys.ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable)
end
time = time - tick
return tick
end,
0)
end
function Iku02CreateEffect(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local targetPoint = keys.target_points[1]
local vec = caster:GetOrigin() + 700*caster:GetForwardVector() + Vector(0,0,128)
local particle = ParticleManager:CreateParticle("particles/thd2/heroes/iku/ability_iku_04_light_b.vpcf",PATTACH_CUSTOMORIGIN,caster)
ParticleManager:SetParticleControl(particle,0,vec)
ParticleManager:SetParticleControlForward(particle,0,caster:GetForwardVector())
ParticleManager:SetParticleControl(particle,2,vec)
ParticleManager:SetParticleControl(particle,3,vec)
ParticleManager:SetParticleControl(particle,4,-caster:GetForwardVector())
ParticleManager:SetParticleControl(particle,5,-caster:GetForwardVector())
ParticleManager:DestroyParticleSystemTime(particle,keys.duration_time)
particle = ParticleManager:CreateParticle("particles/thd2/heroes/iku/ability_iku_04_model.vpcf",PATTACH_CUSTOMORIGIN,caster)
ParticleManager:SetParticleControl(particle,0,caster:GetOrigin()+caster:GetForwardVector()*350 + Vector(0,0,128))
ParticleManager:SetParticleControlForward(particle,0,caster:GetForwardVector())
ParticleManager:DestroyParticleSystemTime(particle,keys.duration_time)
end