Есть скил-аура:
У любой скастованно способности юнита, который имеет эффект этой ауры, будет увеличено время перезарядки этой способности.
Проблема в том, что работает только событие: "OnAbilityExecuted", в котором и кастер и цель и способность не того кто юзал способность, а того кто распространяет ауру. Как сделать правильно?
Заранее благодарю!
Код:
"tiredness_aura"
{
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH"
"AbilityTextureName" "huskar_life_break"
"MaxLevel" "1"
"RequiredLevel" "0"
"LevelsBetweenUpgrades" "0"
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_FLOAT"
"cooldown_multip_dur" "1.8"
}
"02"
{
"var_type" "FIELD_INTEGER"
"radius" "3000"
}
}
"OnRespawn"
{
"ApplyModifier" "modifier_tiredness_aura"
}
"Modifiers"
{
"modifier_tiredness_aura"
{
"Passive" "1" //Apply as soon as the spell is learned
"IsHidden" "1" //Don't show the aura applier
//"IsBuff" "1"
"Aura" "tiredness_aura_effect"
"Aura_Radius" "%radius"
"Aura_Teams" "DOTA_UNIT_TARGET_TEAM_BOTH"
"Aura_Types" "DOTA_UNIT_TARGET_CREEP"
"Aura_Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
"Aura_ApplyToCaster" "0" // Not Apply to Self, default is 1
}
"tiredness_aura_effect"
{
"OnAbilityExecuted"
{
"RunScript"
{
"ScriptFile" "abilities/tiredness.lua"
"Function" "tiredness_used_ability"
"multip_cooldown" "%cooldown_multip_dur"
"target" "TARGET"
"caster" "CASTER"
}
}
"OnAbilityStart"
{
"RunScript"
{
"ScriptFile" "abilities/tiredness.lua"
"Function" "tiredness_used_ability_b"
"multip_cooldown" "%cooldown_multip_dur"
"target" "TARGET"
"caster" "CASTER"
}
}
}
}
}
У любой скастованно способности юнита, который имеет эффект этой ауры, будет увеличено время перезарядки этой способности.
Проблема в том, что работает только событие: "OnAbilityExecuted", в котором и кастер и цель и способность не того кто юзал способность, а того кто распространяет ауру. Как сделать правильно?
Код:
function tiredness_used_ability( event )
local target = event.caster
local caster = event.target
local ability = event.ability
local multip_cooldown = event.multip_cooldown
print("Ability - "..ability:GetAbilityName())
print("Cooldown - "..ability:GetCooldown(ability:GetLevel()-1))
print("Cooldown2 - "..ability:GetCooldown(ability:GetLevel()))
print("Caster - "..caster:GetUnitName())
print("Caster2 - "..target:GetUnitName())
ability:StartCooldown(ability:GetCooldown(ability:GetLevel())*multip_cooldown)
print("new set = "..ability:GetCooldown(ability:GetLevel())*multip_cooldown)
end
function tiredness_used_ability_b( event )
print("2")
local target = event.caster
local caster = event.target
local ability = event.ability
local multip_cooldown = event.multip_cooldown
print("Ability - "..ability:GetAbilityName())
print("Cooldown - "..ability:GetCooldown(ability:GetLevel()-1))
print("Cooldown2 - "..ability:GetCooldown(ability:GetLevel()))
print("Caster - "..caster:GetUnitName())
print("Caster2 - "..target:GetUnitName())
ability:StartCooldown(ability:GetCooldown(ability:GetLevel())*multip_cooldown)
print("new set = "..ability:GetCooldown(ability:GetLevel())*multip_cooldown)
end
Заранее благодарю!
Последнее редактирование модератором: