function OnSpellStartKagerou01(keys)
	local caster = keys.caster
	local targetPoint = keys.target_points[1]
	
	local vecForward = (targetPoint - caster:GetOrigin()):Normalized()
	local angles = VectorToAngles(vecForward)  -- 该方向的角度，水平向右逆时针旋转，360度
	print(angles.y)
	local angles2 = VectorToAngles(caster:GetForwardVector()) -- 朝向的角度
	print(angles2.y)
end

function OnSpellStartKagerou02(keys)
	local caster = keys.caster
	local duraiton_time = keys.duration_time
	caster:RemoveModifierByName("modifier_kagerou_02_buff")
	keys.ability:ApplyDataDrivenModifier(caster, caster, "modifier_kagerou_02_buff", {Duration = duraiton_time})
end

function OnCreatedKagerou02Buff(keys)	
	local target = keys.target	

	local powerBonus = 0
	local pv = target:GetAbilityPowerValue(keys.ability:GetAbilityName())
	if pv ~= nil then 					
		powerBonus = pv[1]
	end	

	if target:IsPower666() then 
		powerBonus = powerBonus + 30
	end

	local power = target:THTD_GetBasePower()
	local bonus = (keys.bonus_attack + powerBonus) * power	
	target:THTD_AddBaseAttack(bonus, "thtd_kagerou_02_bonus")		
	target:THTD_AddBasePower(-power, "thtd_kagerou_02_bonus")	
	target:THTD_AddAttackSpeed(keys.attack_speed, "thtd_kagerou_02_bonus")		
end

function OnDestroyKagerou02Buff(keys)		
	local target = keys.target	
	target:THTD_AddBaseAttack("thtd_kagerou_02_bonus")		
	target:THTD_AddBasePower("thtd_kagerou_02_bonus")	
	target:THTD_AddAttackSpeed("thtd_kagerou_02_bonus")
end

function OnSpellStartKagerou03(keys)
	local caster = keys.caster	

	local powerDuration = 0
	local powerAttackup = 0
	local pv = caster:GetAbilityPowerValue(keys.ability:GetAbilityName())
	if pv ~= nil then 	
		powerAttackup = pv[1]			
		powerDuration = pv[2]	
	end	

	local attack_up = keys.attack_up + powerAttackup
	local duraiton_time = keys.duration_time + powerDuration

	local shiftTime = 0.5
	UnitStunTarget(caster,caster,shiftTime)
	caster:SetContextThink(DoUniqueString("thtd_yuuka_02_plant"), 
		function()
			if GameRules:IsGamePaused() then return 0.03 end
			caster.kagerou_03_attack_percentage = attack_up
			keys.ability:ApplyDataDrivenModifier(caster, caster, "modifier_kagerou_03_wolf", {Duration = duraiton_time})
			return nil 
		end,
	shiftTime)
end

function OnCreatedKagerou03wolf(keys)	
	local target = keys.target	
	local model = "models/heroes/lycan/lycan_wolf.vmdl"
	if target.origin_mode == nil then 
		target.origin_mode = target:GetModelName()
	end
	target:SetOriginalModel(model)
	target:SetModel(model)
	
	target:THTD_AddAttackPercentage(target.kagerou_03_attack_percentage, "thtd_kagerou_03_bonus")	
	target:THTD_AddCritChance(keys.crit_chance, "thtd_kagerou_03_bonus")	

	local bonus = keys.crit_damage
	if target:IsPower999() then 
		bonus = bonus + 500
	end
	target:THTD_AddCritDamage(bonus, "thtd_kagerou_03_bonus")
end

function OnDestroyKagerou03wolf(keys)	
	local target = keys.target		
	target:SetOriginalModel(target.origin_mode )
	target:SetModel(target.origin_mode )	

	target:THTD_AddAttackPercentage("thtd_kagerou_03_bonus")	
	target:THTD_AddCritChance("thtd_kagerou_03_bonus")
	target:THTD_AddCritDamage("thtd_kagerou_03_bonus")
end
