Аура эффект которой при использовании скила-удвоение перезарядки

  • Автор темы Автор темы oplkill
  • Дата начала Дата начала

oplkill

Пользователь
2 Янв 2016
34
3
Есть скил-аура:
Код:
"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

Заранее благодарю!
 
Последнее редактирование модератором:
Код:
local eventAbility = event.event_ability
 
Реклама: