- 20 Сен 2014
- 440
- 1
- Проект
- Survival in Taiga XE
Помогите оптимизировать спелл. На данный момент скил наносит урон своему владельцу при нажатии один раз клавиши, после этого образуется цикл урона даже когда герой умирает спелл продолжает работать при респавне начинает опять работать как сделать так чтобы скил работал без цикла
и сам скрипт скила
Код:
"po_degen_aura"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY"
"AbilityUnitDamageType" "DAMAGE_TYPE_MENTHAL"
"AbilityCooldown" "1 1 1 1"
"SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES"
"AbilityTextureName" "po_pass"
// Casting
//-------------------------------------------------------------------------------------------------------------
"AbilityCastRange" "3500"
// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"chance" "100 100 100 100"
}
"02"
{
"var_type" "FIELD_INTEGER"
"hp_remove" "5 5 5 5"
}
"03"
{
"var_type" "FIELD_INTEGER"
"cooldown" "1 1 1 1"
}
}
"OnSpellStart"
{
"ApplyModifier"
{
"ModifierName" "modifier_degen_aura_po"
"Target" "CASTER"
}
}
"Modifiers"
{
"modifier_degen_aura_po"
{
"IsHidden" "1"
"IsBuff" "1"
"Aura" "modifier_po_degen_aura_effect"
"Aura_Radius" "3500"
"Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY"
"Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL"
}
"modifier_po_degen_aura_effect"
{
"IsDebuff" "1"
"IsHidden" "1"
"EffectName" "particles/units/heroes/hero_omniknight/omniknight_degen_aura_debuff.vpcf"
"EffectAttachType" "follow_origin"
"ThinkInterval" "%cooldown"
"OnIntervalThink"
{
"RunScript"
{
"ScriptFile" "batman.lua"
"Function" "Po"
}
}
}
}
}
Код:
function Po(keys)
local caster = keys.caster
local ability = keys.ability
local chance = ability:GetLevelSpecialValueFor( "chance" , ability:GetLevel() - 1 )
local hp_remove = ability:GetLevelSpecialValueFor( "hp_remove" , ability:GetLevel() - 1 )*0.01
local cooldown = ability:GetLevelSpecialValueFor( "cooldown" , ability:GetLevel() - 1 )
local passives = FindUnitsInRadius(caster:GetTeamNumber(), caster:GetAbsOrigin(), nil, 3500, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false)
for i = 1, #passives do
local vic = passives[i]
local side_rand = RandomInt(0, 100)
if side_rand <= chance then
ApplyDamage({victim = vic, attacker = caster, damage = vic:GetHealth()*hp_remove, damage_type = DAMAGE_TYPE_PURE})
ability:StartCooldown(cooldown)
end
end
end
Последнее редактирование модератором: