enderalse/source/scripts/blackreachdoorscript.psc

65 lines
1.5 KiB
Plaintext
Raw Normal View History

Scriptname BlackreachDoorScript extends ObjectReference Conditional
{Script to open the door to blackreach when activated by the lock.}
import game
import debug
import utility
bool property isOpen = false auto Conditional
{set to true to start open}
bool property isAnimating = false auto Hidden
{is the activator currently animating from one state to another?}
string property openAnim = "Down" auto Hidden
{animation to play when opening}
string property openEvent = "TransDown" auto Hidden
{open event name - waits for this event before considering itself "open"}
int myState = 1
; true when static or animating
; 0 == open or opening
; 1 == closed or closing
EVENT OnLoad()
if (isOpen )
myState = 0
endif
endEVENT
auto STATE waiting ; waiting to be activated
EVENT onActivate (objectReference triggerRef)
; switch open state when activated
SetOpen(!isOpen)
endEVENT
endState
STATE busy
; This is the state when I'm busy animating
EVENT onActivate (objectReference triggerRef)
2023-12-06 15:31:10 +00:00
;trace (self + " Busy")
endEVENT
endSTATE
function SetOpen(bool abOpen = true)
; if busy, wait to finish
while getState() == "busy"
wait(1)
endWhile
; open
isAnimating = true
if !isOpen
gotoState ("busy")
2023-12-06 15:31:10 +00:00
;trace(self + " Opening")
playAnimationandWait(openAnim, openEvent) ; Animate Open
endif
2023-12-06 15:31:10 +00:00
;trace(self + " Opened")
isOpen = true
gotoState("done")
isAnimating = false
endFunction
STATE done
; This is the end state, player should not be able to reactivate
endSTATE