114 lines
2.7 KiB
Plaintext
114 lines
2.7 KiB
Plaintext
|
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
|
||
|
|