210 lines
7.8 KiB
Lua
Executable File
210 lines
7.8 KiB
Lua
Executable File
function OnKoishi01Attack(keys)
|
|
local caster = EntIndexToHScript(keys.caster_entindex)
|
|
local target = keys.target
|
|
|
|
if caster.__koishi_lock ~= true then
|
|
caster.__koishi_lock = true
|
|
local targets = THTD_FindUnitsInRadius(caster,caster:GetOrigin(),keys.range)
|
|
|
|
for i=1,#targets do
|
|
local unit = targets[i]
|
|
if unit~=nil and unit:IsNull()==false and unit~=target and unit:IsAlive() then
|
|
caster:PerformAttack(unit,true,false,true,false,true,false,true)
|
|
if RollPercentage(keys.chance) then
|
|
local DamageTable = {
|
|
ability = keys.ability,
|
|
victim = unit,
|
|
attacker = caster,
|
|
damage = caster:THTD_GetAbilityPowerDamage(keys.ability),
|
|
damage_type = keys.ability:GetAbilityDamageType(),
|
|
damage_flags = DOTA_DAMAGE_FLAG_NONE
|
|
}
|
|
UnitDamageTarget(DamageTable)
|
|
|
|
local effectIndex = ParticleManager:CreateParticle("particles/units/heroes/hero_dark_willow/dark_willow_bramble.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControlEnt(effectIndex , 0, unit, 5, "follow_origin", Vector(0,0,0), true)
|
|
ParticleManager:DestroyParticleSystemTimeFalse(effectIndex,1.0)
|
|
end
|
|
end
|
|
end
|
|
caster.__koishi_lock = false
|
|
end
|
|
end
|
|
|
|
function OnKoishi02AttackLanded(keys)
|
|
local caster = EntIndexToHScript(keys.caster_entindex)
|
|
local target = keys.target
|
|
|
|
local modifer = caster:FindModifierByName("modifier_koishi_02_attack_speed") or keys.ability:ApplyDataDrivenModifier(caster, caster, "modifier_koishi_02_attack_speed", nil)
|
|
|
|
local max_count = keys.max_count
|
|
if caster:HasModifier("passive_koishi_04_attack") then
|
|
max_count = keys.count_bonus
|
|
end
|
|
|
|
if modifer:GetStackCount() < max_count then
|
|
modifer:IncrementStackCount()
|
|
end
|
|
modifer:SetDuration(keys.duration_time, false)
|
|
end
|
|
|
|
function OnKoishi03SpellStart(keys)
|
|
local caster = EntIndexToHScript(keys.caster_entindex)
|
|
local target = keys.target
|
|
|
|
if target:THTD_IsTower() and target:HasModifier("modifier_koishi_03_buff") == false then
|
|
caster.thtd_last_cast_unit = target
|
|
|
|
local time = keys.duration_time
|
|
if caster:FindAbilityByName("thtd_koishi_01"):GetLevel() > 1 then
|
|
time = keys.combo_time
|
|
end
|
|
|
|
local bonus = keys.power_bonus
|
|
if target:GetUnitName() == "satori" then
|
|
if target:IsPower999() then
|
|
bonus = bonus * (keys.self_crit + 10)
|
|
else
|
|
bonus = bonus * keys.self_crit
|
|
end
|
|
elseif target:GetUnitName() == "koishi" then
|
|
bonus = bonus * keys.self_crit
|
|
end
|
|
target.koishi_03_power_bonus = bonus
|
|
|
|
keys.ability:ApplyDataDrivenModifier(caster,target,"modifier_koishi_03_buff", {Duration = time})
|
|
target:EmitSound("Hero_OgreMagi.Bloodlust.Target")
|
|
else
|
|
keys.ability:EndCooldown()
|
|
end
|
|
end
|
|
|
|
function OnCreatedKoishi03Buff(keys)
|
|
local target = keys.target
|
|
local bonus = target.koishi_03_power_bonus
|
|
target:THTD_AddBasePower(bonus, "thtd_koishi_03_bonus")
|
|
target:THTD_AddBaseAttack(bonus, "thtd_koishi_03_bonus")
|
|
end
|
|
|
|
function OnDestroyKoishi03Buff(keys)
|
|
local target = keys.target
|
|
target:THTD_AddBasePower("thtd_koishi_03_bonus")
|
|
target:THTD_AddBaseAttack("thtd_koishi_03_bonus")
|
|
end
|
|
|
|
function OnKoishi04SpellStart(keys)
|
|
local caster = EntIndexToHScript(keys.caster_entindex)
|
|
local target = keys.target
|
|
|
|
if caster:HasModifier("passive_koishi_04_attack") then
|
|
keys.ability:EndCooldown()
|
|
keys.ability:StartCooldown(1.0)
|
|
caster:GiveMana(caster:GetRealManaCost(keys.ability))
|
|
return
|
|
end
|
|
|
|
local time = keys.duration_time
|
|
|
|
caster:StartGesture(ACT_DOTA_CAST_ABILITY_4)
|
|
caster:SetAttackCapability(DOTA_UNIT_CAP_MELEE_ATTACK)
|
|
|
|
keys.ability:ApplyDataDrivenModifier(caster, caster, "passive_koishi_04_attack",nil)
|
|
caster:EmitSound("Voice_Thdots_Koishi.AbilityKoishi041")
|
|
caster:EmitSound("Hero_VengefulSpirit.WaveOfTerror")
|
|
|
|
local effectIndex = ParticleManager:CreateParticle("particles/econ/events/fall_major_2015/teleport_end_fallmjr_2015_lvl2_black.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
|
|
ParticleManager:DestroyParticleSystemTimeFalse(effectIndex,0.8)
|
|
|
|
caster:SetContextThink(DoUniqueString("thtd_koishi04_buff_remove"),
|
|
function()
|
|
if GameRules:IsGamePaused() then return 0.03 end
|
|
caster:RemoveGesture(ACT_DOTA_CAST_ABILITY_4)
|
|
|
|
caster:SetContextThink(DoUniqueString("thtd_koishi04_buff_remove"),
|
|
function()
|
|
if GameRules:IsGamePaused() then return 0.1 end
|
|
caster:StartGesture(ACT_DOTA_CAST_ABILITY_4_END)
|
|
local effectIndex = ParticleManager:CreateParticle("particles/econ/events/fall_major_2015/teleport_end_fallmjr_2015_lvl2_black.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
|
|
ParticleManager:DestroyParticleSystemTimeFalse(effectIndex,0.25)
|
|
caster:EmitSound("Voice_Thdots_Koishi.AbilityKoishi042")
|
|
caster:EmitSound("Hero_VengefulSpirit.WaveOfTerror")
|
|
|
|
caster:SetContextThink(DoUniqueString("thtd_koishi04_buff_remove"),
|
|
function()
|
|
if GameRules:IsGamePaused() then return 0.1 end
|
|
caster:RemoveGesture(ACT_DOTA_CAST_ABILITY_4_END)
|
|
|
|
caster:SetAttackCapability(DOTA_UNIT_CAP_RANGED_ATTACK)
|
|
caster:RemoveModifierByName("passive_koishi_04_attack")
|
|
return nil
|
|
end,
|
|
0.25)
|
|
|
|
return nil
|
|
end,
|
|
time)
|
|
|
|
return nil
|
|
end,
|
|
0.8)
|
|
end
|
|
|
|
function OnKoishi04AttackStart(keys)
|
|
local caster = EntIndexToHScript(keys.caster_entindex)
|
|
local target = keys.target
|
|
|
|
local count = 3
|
|
caster:SetContextThink(DoUniqueString("thtd_koishi03_buff_remove"),
|
|
function()
|
|
if GameRules:IsGamePaused() then return 0.03 end
|
|
local num = RandomInt(1,6)
|
|
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_koishi/ability_koishi_04_attack_0"..num..".vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControl(effectIndex , 0, caster:GetOrigin() - Vector(0,0,20))
|
|
ParticleManager:SetParticleControlForward(effectIndex , 0, caster:GetForwardVector()+Vector(0,0,num/12))
|
|
ParticleManager:SetParticleControlForward(effectIndex , 1, caster:GetForwardVector())
|
|
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
|
|
|
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_koishi/ability_koishi_04_attack_landed.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControl(effectIndex , 0, target:GetOrigin() + Vector(0,0,-260))
|
|
ParticleManager:SetParticleControl(effectIndex , 1, target:GetOrigin() + Vector(0,0,0))
|
|
ParticleManager:SetParticleControl(effectIndex , 2, target:GetOrigin() + Vector(0,0,0))
|
|
ParticleManager:SetParticleControl(effectIndex , 3, target:GetOrigin() + Vector(0,0,0))
|
|
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
|
|
|
if count > 0 then
|
|
count = count - 1
|
|
return 0.1
|
|
else
|
|
return nil
|
|
end
|
|
end,
|
|
0.1)
|
|
end
|
|
|
|
function OnKoishi04Kill(keys)
|
|
local caster = EntIndexToHScript(keys.caster_entindex)
|
|
local target = keys.unit
|
|
|
|
local effectIndex = ParticleManager:CreateParticle("particles/heroes/moluo/ability_moluo03_explosion.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
|
ParticleManager:SetParticleControl(effectIndex , 0, target:GetOrigin())
|
|
ParticleManager:SetParticleControl(effectIndex , 3, target:GetOrigin())
|
|
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
|
end
|
|
|
|
function OnCreatedKoishi04Buff(keys)
|
|
local target = keys.target
|
|
target:THTD_AddBasePower(keys.power_base, "thtd_koishi_04_bonus")
|
|
target:THTD_AddBaseAttack(keys.power_base, "thtd_koishi_04_bonus")
|
|
target:THTD_AddPowerPercentage(keys.power_up, "thtd_koishi_04_bonus")
|
|
target:THTD_AddAttackPercentage(keys.power_up, "thtd_koishi_04_bonus")
|
|
end
|
|
|
|
function OnDestroyKoishi04Buff(keys)
|
|
local target = keys.target
|
|
target:THTD_AddBasePower("thtd_koishi_04_bonus")
|
|
target:THTD_AddBaseAttack("thtd_koishi_04_bonus")
|
|
target:THTD_AddPowerPercentage("thtd_koishi_04_bonus")
|
|
target:THTD_AddAttackPercentage("thtd_koishi_04_bonus")
|
|
end |