scriptName TrapDweThresher 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. ;================================================================ bool property startSpinning = false auto hidden string property startSpinningAnim = "End" auto {anim event to start already swung} 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 int property MovementType = 0 auto {This sets if the blade moves while spinning 0 = Static 1 = Short 2 = Long 3 = Start Up} bool property loadedOnce = false auto hidden ;----------------------------------- Function fireTrap() ;Basic wind up and fire once checking ;TRACE("fireTrap called") isFiring = True ResolveLeveledDamage() hitBase.goToState("CanHit") WindupSound.play( self as ObjectReference) ;play windup sound 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 If MovementType != 3 PlayAnimationAndWait("TriggerUp01","BeginAnim") endif while(finishedPlaying == False && isLoaded == true) ;USKP 1.3.1 - 3D loaded check added to break a potential infinite loop if( Is3DLoaded() == false ) isLoaded = False Else ;TRACE("playing anim Single") if MovementType == 0 PlayAnimation("LoopStatic") ; debug.Trace(self + " has recieved event " + "EndLoop") ElseIf MovementType == 1 PlayAnimation("Loop") ; debug.Trace(self + " has recieved event " + "EndLoop") ElseIf MovementType == 2 PlayAnimation("LoopLong") ; debug.Trace(self + " has recieved event " + "EndLoop") ElseIf MovementType == 3 PlayAnimation("TriggerUpLoop") endif waitForAnimationEvent("EndLoop") finishedPlaying = True if (loop == TRUE) ;Reset Limiter resetLimiter() endif endif endWhile hitBase.goToState("CannotHit") if isLoaded isFiring = false if movementType < 3 && movementType >=0 PlayAnimationAndWait( "TriggerDown01", "reset" ) elseif movementType == 3 PlayAnimationAndWait( "TriggerEndUp", "TransStartUp" ) Else ; debug.Trace(self + " has invalid movementType value = " + movementType) endif goToState("Reset") endif ;TRACE("fireTrap has finished") endFunction Function ResetLimiter() finishedPlaying = False EndFunction event onCellLoad() if !loadedOnce if movementType == 3 playAnimation("StartUp") endif EndIf endevent