scriptName TrapDweFlamePillar extends MovingTrap
;
;
;This is the script for the blade trap
;Activating the trap causes it to toggle on and off
;If activated while in the process of stopping, it should be able to handle that.
;================================================================



import debug
import utility
	
;If Loop is true, it swings until activated again.
;If Loop is false, it swings once when activated.
bool restartLooping = false
bool finishedPlaying = false
float property initialDelay = 0.25 auto
float property rotationSpeed = 1.0 auto
Bool property CounterClockwise = FALSE auto
{if true this will turn counter-clockwise
	default == false}

bool property hasPlayedAttackAnimOnce = false auto hidden


event onLoad()
;USSEP 4.2.2 Bug #28456 CV and CCV are not valid animation variables for this object. Attempting to read or set them will cause an error.
;	float CV = (rotationSpeed * getAnimationVariableFloat("CV"))
;	float CCV = (rotationSpeed * getAnimationVariableFloat("CCV"))
;	SetAnimationVariableFloat("CV", CV)
;	SetAnimationVariableFloat("CCV", CCV)
	;hitBase = (self as objectReference) as TrapDweFlamePillarHit

endEvent


;-----------------------------------

Function fireTrap()
	TrapDweFlamePillarHit myHitScript
	myHitScript = (self as objectReference) as TrapDweFlamePillarHit

	isFiring = True
	if myHitScript
		myHitScript.goToState("CanHitLocal")
	else
; 		debug.Trace(self + ": myHitScript = " + myHitScript)
	endif
	objectReference TrapSelf = self as objectReference
	
	if WindupSound
		WindupSound.play( self as ObjectReference)		;play windup sound
	endif
	;ResolveLeveledWeapon()
	hasPlayedAttackAnimOnce = False
	wait( initialDelay )		;wait for windup
	;TRACE("Initial Delay complete")
	
	if (fireOnlyOnce == True)	;If this can be fired only once then disarm
		trapDisarmed = True
	endif
	
	;TRACE("Looping =")
	;TRACE(Loop)
	
	;Trap Guts
	
	while(finishedPlaying == False && isLoaded == true)
		;TRACE("playing anim Single")
		isFiring = True
		if (hasPlayedAttackAnimOnce == FALSE)
			hasPlayedAttackAnimOnce = TRUE
			if CounterClockwise
				PlayAnimationAndWait("Trigger01","Trans01")
			else
				PlayAnimationAndWait("Trigger01","Trans01")
			endif
; 			debug.Trace(self + " has recieved event " + "Trans01")

		Else
			wait(0.5)
		endif
		
		finishedPlaying = True
		
		if (loop == TRUE)			;Reset Limiter
			resetLimiter()
		endif			
	endWhile
	
	;self.InterruptCast()
	myHitScript.goToState("CannotHit")
	
; 	debug.Trace(self + " has exited looping")
	if isLoaded
		isFiring = false
		PlayAnimationAndWait( "Reset01", "Trans02" )
		goToState("Reset")
	endif		
	
	
	
endFunction

Function ResetLimiter()
	finishedPlaying = False
EndFunction