2023-12-04 15:02:58 +00:00
|
|
|
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()
|
2023-12-06 15:31:10 +00:00
|
|
|
;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)
|
2023-12-04 15:02:58 +00:00
|
|
|
;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
|
|
|
|
|
|
|
|
|
|
|
|
|