Scriptname _00E_AgnodElevator01Script extends ObjectReference ; SCRIPT AUTHOR DENNIS MAY 2014 ; ==================================================================================== ; EVENTS ; ==================================================================================== Event OnActivate(ObjectReference akActionRef) if ( ElevatorStatus == 0 ) ControlDoors(false, "elevated") soundcont_Move = OBJDwemerGearsMultipleLP.Play(Self) Utility.Wait(0.2) MoveElevator( _00E_AgnodElevatorUpXMarkerREF, 100 ) ElevatorStatus = 1 elseif ( ElevatorStatus == 2 ) ControlDoors(false, "elevated") soundcont_Move = OBJDwemerGearsMultipleLP.Play(Self) Utility.Wait(0.2) MoveElevator( _00E_AgnodElevatorDownXMarkerREF, 150 ) ElevatorStatus = -1 endif EndEvent Event OnTranslationComplete() if ( ElevatorStatus == 1 ) ;Elevator reached upper level ControlDoors(true, "upper") soundcont_MoveEnd = _00E_OBJDwemerGearsStuck.Play(Self) Sound.StopInstance(soundcont_Move) ElevatorStatus = 2 elseif ( ElevatorStatus == -1 ) ;Elevator reached lower level ControlDoors(true, "lower") soundcont_MoveEnd = _00E_OBJDwemerGearsStuck.Play(Self) Sound.StopInstance(soundcont_Move) ElevatorStatus = 0 endif EndEvent ; ==================================================================================== ; FUNCTIONS ; ==================================================================================== function ControlDoors(bool open, string floor) int iSize = _00E_Agnod_LiftList.GetSize() - 1 ;Get the count of doors in formlist int doorsToProceed = 0 ;Objects ; Sets the numbers of doors in the formlist we need to process if ( floor == "elevated" ) doorsToProceed = 0 elseif ( floor == "upper" ) doorsToProceed = 1 elseif ( floor == "lower" ) doorsToProceed = 0 iSize = 0 endif While ( iSize >= doorsToProceed ) ObjectReference DoorToOpen = _00E_Agnod_LiftList.GetAt(iSize) as ObjectReference if ( open == false ) ;We want close and lock the doors if ( DoorToOpen.GetOpenState() == 1 || DoorToOpen.GetOpenState() == 2) DoorToOpen.SetOpen(False) endif DoorToOpen.SetLockLevel(255) DoorToOpen.Lock() else ;We want unlock the doors DoorToOpen.Lock(False) EndIf iSize -= 1 EndWhile Return EndFunction function MoveElevator(ObjectReference actionRef, int speed) Self.TranslateToRef( actionRef, speed ) Return EndFunction ; ==================================================================================== ; PROPERTIES ; ==================================================================================== Formlist Property _00E_Agnod_LiftList Auto int ElevatorStatus = 0 objectReference property _00E_AgnodElevatorDownXMarkerREF auto {Points to Down Marker} objectReference property _00E_AgnodElevatorUpXMarkerREF auto {Points to Up Marker} int soundcont_Move Sound property OBJDwemerGearsMultipleLP auto {Points to Elevator Move Sound} int soundcont_MoveEnd Sound property _00E_OBJDwemerGearsStuck auto {Points to Elevator Move End Sound}