50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
scriptName MaceTrap extends PhysicsTrap
|
|
;
|
|
;
|
|
;This is the script for the swinging mace trap
|
|
;It's like a regular moving trap, but activating it causes a push force to be applied to the trap.
|
|
;This breaks the havok constraint, causing it to swing.
|
|
;================================================================
|
|
|
|
import utility
|
|
import debug
|
|
|
|
int doOnce
|
|
float property initialDelay = 0.2 auto
|
|
float property hitTime = 3.0 auto
|
|
{this controls how long the trap has to hit before it sets itself to not do damage
|
|
default = 3.0
|
|
if set to a negative value, this is ignored}
|
|
|
|
Function fireTrap()
|
|
if doOnce == 0
|
|
doOnce = 1
|
|
hitBase.goToState("CanHit")
|
|
SetMotionType(1)
|
|
WindupSound.play( self as ObjectReference) ;play windup sound
|
|
ResolveLeveledDamage()
|
|
wait( initialDelay ) ;wait for windup
|
|
ApplyHavokImpulse(0.0, 0.0, -1.0, 15.0)
|
|
ApplyHavokImpulse(0.0, 0.0, -1.0, 50.0)
|
|
if hitTime > 0
|
|
wait(hitTime)
|
|
hitBase.goToState("CannotHit")
|
|
endif
|
|
endif
|
|
endFunction
|
|
|
|
Event OnLoad()
|
|
if doOnce == 0
|
|
SetMotionType(4)
|
|
hitBase = (self as objectReference) as TrapHitBase
|
|
endif
|
|
EndEvent
|
|
|
|
Event OnCellDetach()
|
|
;USLEEP 3.0.8 Bug #13598
|
|
if doOnce == 0 && Is3DLoaded()
|
|
SetMotionType(1)
|
|
endif
|
|
EndEvent
|
|
|