function OnKogasa01SpellStart(keys) local caster = keys.caster local targetPoint = keys.target_points[1] local powerRange = 0 local powerDamage = 0 local powerSpecial = 0 local pv = caster:GetAbilityPowerValue(keys.ability:GetAbilityName()) if pv ~= nil then powerRange = pv[1] powerDamage = pv[2] powerSpecial = pv[3] end caster:EmitSound("Sound_THTD.thtd_kogasa_01") local special = 0 if caster:HasModifier("modifier_byakuren_03_buff") then special = caster.thtd_byakuren_buff_kogasa + powerSpecial end local damage = caster:THTD_GetAbilityPowerDamage(keys.ability) * (1 + powerDamage) local targets = THTD_FindUnitsInRadius(caster,targetPoint,keys.radius + powerRange) for k,v in pairs(targets) do if not v:HasModifier("modifier_kogasa_debuff") then keys.ability:ApplyDataDrivenModifier(caster,v,"modifier_kogasa_debuff", {Duration = keys.duration_time}) end 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 = FirstPointList[v.thtd_player_index] local time = keys.duration_time v:SetContextThink(DoUniqueString("modifier_kogasa_debuff"), function() if GameRules:IsGamePaused() then return 0.03 end if not IsValidAlive(v) then return nil end if time <= 0 or THTD_IsValid(caster) == false then v.next_move_point = current_next_move_point v.thtd_is_fearing = false return nil end time = time - 0.1 return 0.1 end, 0) end local realDamage = damage if special > 0 then if v.thtd_kogasa_01_special ~= true then v.thtd_kogasa_01_special = true UnitDamageHpRemove(caster, v, special) else realDamage = realDamage * special end end local DamageTable = { ability = keys.ability, victim = v, attacker = caster, damage = realDamage, damage_type = keys.ability:GetAbilityDamageType(), damage_flags = DOTA_DAMAGE_FLAG_NONE } UnitDamageTarget(DamageTable) end local effectIndex = ParticleManager:CreateParticle("particles/heroes/kogasa/ability_kogasa_01.vpcf", PATTACH_CUSTOMORIGIN, caster) ParticleManager:SetParticleControl(effectIndex, 0, targetPoint) ParticleManager:DestroyParticleSystem(effectIndex,false) end function OnCreatedKogasa02Debuff(keys) local target = keys.target target:AddPhysicalArmor(-keys.armor) end function OnDestroyKogasa02Debuff(keys) local target = keys.target target:AddPhysicalArmor(keys.armor) end