enderalse/source/scripts/dunfolgunthurcataleverpuzzle.psc

87 lines
2.2 KiB
Plaintext

scriptName dunFolgunthurCataLeverPuzzle extends ObjectReference Conditional
{Synchronized lever-and-portcullis puzzle in Folgunthur. Used to keep all the levers and gates in sync and more explicitly manage the puzzle.}
import debug
import utility
Action property animAction auto
Bool Property SingleUse auto
Bool Property HasBeenUsed auto Conditional
Bool Property InPushedPosition auto
int Property PuzzleLeverNumber auto
ObjectReference Property Lever1 auto
ObjectReference Property Lever2 auto
ObjectReference Property Lever3 auto
ObjectReference Property Lever4 auto
ObjectReference Property Gate1 auto
ObjectReference Property Gate2 auto
ObjectReference Property Gate3 auto
ObjectReference Property Gate4 auto
Bool Lever1Up = False
Bool Lever2Up = False
Bool Lever3Up = False
Bool Lever4Up = False
Auto STATE WaitingForPlayer
EVENT onActivate (objectReference triggerRef)
GoToState("WaitingForLever")
if (triggerRef == Lever1)
Gate1.Activate(Self)
Gate3.Activate(Self)
Gate4.Activate(Self)
if (Lever1Up)
Lever1Up = False
Lever1.playAnimationandWait("FullPull","FullPulledDown")
Else
Lever1Up = True
Lever1.playAnimationandWait("FullPush","FullPushedUp")
EndIf
GotoState("WaitingForPlayer")
ElseIf (triggerRef == Lever2)
Gate2.Activate(Self)
Gate3.Activate(Self)
if (Lever2Up)
Lever2Up = False
Lever2.playAnimationandWait("FullPull","FullPulledDown")
Else
Lever2Up = True
Lever2.playAnimationandWait("FullPush","FullPushedUp")
EndIf
GotoState("WaitingForPlayer")
ElseIf (triggerRef == Lever3)
Gate3.Activate(Self)
if (Lever3Up)
Lever3Up = False
Lever3.playAnimationandWait("FullPull","FullPulledDown")
Else
Lever3Up = True
Lever3.playAnimationandWait("FullPush","FullPushedUp")
EndIf
GotoState("WaitingForPlayer")
ElseIf (triggerRef == Lever4)
Gate1.Activate(Self)
Gate4.Activate(Self)
if (Lever4Up)
Lever4Up = False
Lever4.playAnimationandWait("FullPull","FullPulledDown")
Else
Lever4Up = True
Lever4.playAnimationandWait("FullPush","FullPushedUp")
EndIf
GotoState("WaitingForPlayer")
EndIf
EndEvent
EndState
STATE WaitingForLever
Event onActivate(objectReference triggerRef)
;Do Nothing
EndEvent
EndState