Scriptname WerewolfTransformVisual extends ActiveMagicEffect  

Armor Property WolfSkinFXArmor auto
Race Property WerewolfRace auto

VisualEffect property FeedBloodVFX auto
Idle Property IdleWerewolfTransformation auto
Sound Property NPCWerewolfTransformation auto
Sound Property NPCWerewolfTransformationB2D auto
Sound Property NPCWerewolfTransformationB3D auto

Event OnEffectStart(Actor Target, Actor Caster)
;     Debug.Trace("WEREWOLF: Starting change anim...")

    if (Target.GetActorBase().GetRace() != WerewolfRace)
		; Add the tranformation wolf skin Armor effect 
		Target.equipitem(WolfSkinFXArmor,False,True)
		
        RegisterForAnimationEvent(Target, "SetRace")
        Target.PlayIdle(IdleWerewolfTransformation)
        Utility.Wait(10)
        TransformIfNecessary(Target)
    endif
EndEvent

Event OnAnimationEvent(ObjectReference akSource, string asEventName)
;     Debug.Trace("WEREWOLF: Getting anim event -- " + akSource + " " + asEventName)
    if (asEventName == "SetRace")
        TransformIfNecessary(akSource as Actor)
    endif
EndEvent

Function TransformIfNecessary(Actor Target)
	if (Target == None)
; 		Debug.Trace("WEREWOLF: Trying to transform something that's not an actor; bailing out.", 2)
		return
	endif

	UnRegisterForAnimationEvent(Target, "SetRace")

	Race currRace = Target.GetRace()
	if (currRace != WerewolfRace)
; 		Debug.Trace("WEREWOLF: VISUAL: Setting race " + WerewolfRace + " on " + Target)
		Target.SetRace(WerewolfRace) ;TEEN WOLF
		
		; Remove the transformation effect armor if he/she has it on.
		if (Target.GetItemCount(WolfSkinFXArmor) > 0) 
			(Target.Removeitem(WolfSkinFXArmor, 1, True, none))
		endif
		
    endif
EndFunction