restructure
This commit is contained in:
95
game/scripts/vscripts/abilities/abilityiku.lua
Executable file
95
game/scripts/vscripts/abilities/abilityiku.lua
Executable file
@@ -0,0 +1,95 @@
|
||||
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
|
||||
Reference in New Issue
Block a user