enderalse/source/scripts/soundtrap.psc

77 lines
2.1 KiB
Plaintext

scriptName SoundTrap extends TrapTriggerBase
;
;
;
;================================================================
weapon property triggerEffect auto
ammo property triggerEffectAmmo auto
explosion property havokNudge auto
ObjectReference Property ParentMarker Auto ;USKP 2.1.2 Bug #19283
import game
State Active
Event onBeginState()
goToState("DoNothing")
; ;debug.Trace("Sound trap has fired")
SetMotionType(1)
objectReference selfRef = self
;goToState( "DoNothing" )
if triggerEffect
triggerEffect.fire(selfRef, triggerEffectAmmo)
endIf
activate(self as objectReference)
if triggerSound
TriggerSound.play( self as ObjectReference)
endIf
if havokNudge
self.placeAtMe(havokNudge)
endIf
; USKP 2.0.1 - Detection events can't be done for ObjectReference types. Curse you Patch 1.9!
if( (lastTriggerRef as Actor) != None )
CreateDetectionEvent(lastTriggerRef as actor, soundLevel) ; creates a detection event, 3 = generic event
EndIf
ApplyHavokImpulse(0.0, 0.0, -1.0, 15.0)
playAnimation( "trigger01" )
endEvent
event OnTriggerEnter( objectReference triggerRef )
endEvent
event OnTriggerLeave( objectReference triggerRef )
endEvent
endState
State DoNothing ;Dummy state, don't do anything if animating
event OnTriggerEnter( objectReference triggerRef )
endEvent
event OnTriggerLeave( objectReference triggerRef )
; USKP 2.0.1 - Returns traps to be used again once the player moves away if they should be allowed to.
if( FiniteUse == false || ( FiniteUse == True && CountUsed < TriggerCount ) ) ; Defined on TrapTriggerBase
goToState("Active")
EndIf
endEvent
event OnLoad()
endEvent
EndState
; USKP 1.2.3 changed these two blocks to OnLoad and OnUnload because the original *CellAttach events were not the correct types.
Event OnLoad()
SetMotionType(4)
EndEvent
Event OnUnload()
EndEvent
event onReset()
self.reset()
;USKP 2.1.2 Bug #19283 - Several refs this is used on have enable parents that cause this to spam errors.
if( ParentMarker == None )
self.Disable()
self.Enable()
EndIf
goToState("Inactive")
endEvent