Scriptname _00E_ActorCarryScript extends Actor

Idle Property StopCarryingIdle Auto

Int nCarryStateCounter = 0

; Called from OnBegin in packages
Function StartCarrying()
	; Debug.Trace(self + ", StartCarrying")
	If nCarryStateCounter < 0 ; Just in case...
		nCarryStateCounter = 1
	Else
		nCarryStateCounter += 1
	EndIf
EndFunction

; Called from OnChange in packages
Function StopCarrying()
	; Debug.Trace(self + ", StopCarrying")
	nCarryStateCounter -= 1
	_ResetCarrying()
EndFunction

Event OnCombatStateChanged(Actor akTarget, int aeCombatState)
	If nCarryStateCounter > 0 && aeCombatState > 0
		_ResetCarrying()
	EndIf
EndEvent

Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
	If nCarryStateCounter > 0
		_ResetCarrying()
	EndIf
EndEvent

Function _ResetCarrying()
	PlayIdle(StopCarryingIdle)
EndFunction