enderalse/source/scripts/trapdweflamepillar.psc

112 lines
2.6 KiB
Plaintext

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