scriptName defaultPillarPuzzleLever extends ObjectReference
{
- This script lives on the lever that controls each of the pillars
- Each pillar should have its linkedRef point to the lever that this script is on
}


import debug
import utility

bool property puzzleSolved auto hidden
bool property doorOpened auto hidden
int property numPillarsSolved auto hidden

objectReference property puzzleDoorActivator auto
{The Parent Activator Dummy Ref for Door} 

int property pillarCount auto
{Number of Puzzle Pillars}

objectReference property refActOnSuccess01 auto
{This ref is activated when puzzle is solved and lever is pulled}

objectReference property refActOnFailure01 auto
{This ref is activated when puzzle is not solved and lever is pulled}

objectReference property refActOnFailure02 auto
{This ref is activated when puzzle is not solved and lever is pulled}

objectReference property refActOnFailure03 auto
{This ref is activated when puzzle is not solved and lever is pulled}

objectReference property refActOnFailure04 auto
{This ref is activated when puzzle is not solved and lever is pulled}

;*****************************************

Function doorOrDarts()
	;if the puzzle is solved, activate the refActonSuccess01
	;else if the puzzle is not solved, activate the refActOnFailures (the dart traps
	;in the case of BleakFallsBarrow01)
	;wait(6)
	if (numPillarsSolved == PillarCount)
		puzzleSolved = true
		refActOnSuccess01.activate(puzzleDoorActivator)
		int openState = refActOnSuccess01.getOpenState()
		if (openState == 1 || openState == 2)
			doorOpened = true
		else
			doorOpened = false
		endif
	else
		puzzleSolved = false
		;USKP 2.0.1 - Sanity checks. Not all of these are used in each instance of this script.
		if( refActOnFailure01 != None )
			refActOnFailure01.activate (self as objectReference)
		EndIf
		if( refActOnFailure02 != None )
			refActOnFailure02.activate (self as objectReference)
		EndIf
		if( refActOnFailure03 != None )
			refActOnFailure03.activate (self as objectReference)
		EndIf
		if( refActOnFailure04 != None )
			refActOnFailure04.activate (self as objectReference)
		EndIf
	endif
endFunction

;*****************************************

Auto STATE Waiting
	EVENT onActivate (objectReference triggerRef)
		Actor actorRef = triggerRef as Actor
		gotoState("busy")
		if(actorRef==game.GetPlayer())
			;notification("just activated lever")
			doorOrDarts()
		else
			;wait(3)
			doorOrDarts()
		endif
		gotoState("Waiting")
	endEVENT
endState


;*****************************************

STATE busy
	; This is the state when I'm busy animating
		EVENT onActivate (objectReference triggerRef)
			;do nothing
		endEVENT
endState

;*****************************************