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
|
||
|
|