home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CyberMycha 2006 April
/
SGP.iso
/
dema
/
Keepsake-Demo-en-li-v1.0.exe
/
res
/
scripts
/
lockedDoor.tcl
< prev
next >
Wrap
Text File
|
2005-11-01
|
14KB
|
487 lines
################################################################################
# ##
# file lockedDoor.tcl ##
# brief Events for the locked door of First Stage. ##
# ##
################################################################################
## ===================================================== ##
## Initialization ##
## ===================================================== ##
event "init" {
}
################################################################################
## ========================================================================== ##
## DOOR BLOCKING & PUZZLE SECTION ##
## ========================================================================== ##
################################################################################
## ===================================================== ##
## Door Dispatcher ##
## ===================================================== ##
## trigger is when a player try to open a lock door
proc doorDispatcher { location } {
if { [getVar "itemKeyRing"] == "pickedUp" } {
unlockedDoorDispatcher $location
} else {
lockedDoorDispatcher
}
}
## ===================================================== ##
## Locked Door Dispatcher ##
## ===================================================== ##
proc lockedDoorDispatcher { } {
if { [getVar "doorTried"] == "" } {
firstLockedDoor
} elseif { [getVar "doorTried"] == "first" } {
secondLockedDoor
} elseif { [getVar "doorTried"] == "second" } {
thirdLockedDoor
} elseif { [getVar "doorTried"] == "third" } {
fourthLockedDoor
}
}
## ===================================================== ##
## Unlocked Door Dispatcher ##
## ===================================================== ##
proc unlockedDoorDispatcher { location } {
set doorUnlocked [ozGet "doorUnlocked"]
# did we already unlock this door?
if { [lsearch -exact $doorUnlocked $location] == -1 } {
# no, unlock it!
lappend doorUnlocked $location
}
ozSet "doorUnlocked" $doorUnlocked
# is this our 4th unlocked door?
if { [llength $doorUnlocked] == 4 && [ozGet "fourthUnlockedDoor"] == "" } {
fourthUnlockedDoor $location
eventState break
} else {
lappend doorUnlocked $location
}
# now we can open the door!
doorOpening $location
}
## ===================================================== ##
## Door Opening ##
## ===================================================== ##
proc doorOpening { location } {
#Teleport in basement
if { $location == "basement" } {
chainEvent {
freezePlayer
wizDisableMouse
}
Play3DSound "characters/lydia/smallDoorUnlocked"
wizqEntityAction Lydia standOpenDoorLeftHand
chainEvent {delay 2200}
chainEvent { standardFadeout }
chainEvent { delay 1000 }
chainEvent { wizEntitySetPosition Lydia "264.3 61.9 499" }
chainEvent { wizEntitySetPosition Zak "263.4 61.9 494.4" }
chainEvent { setScene "basement" world }
chainEvent { wizEntitySetOrientation Lydia 180 }
wizqEntitySetCycle Lydia standCycleNormal
chainEvent { wizEntitySetOrientation Zak 180 }
wizqEntitySetCycle Zak standCycleNormal
chainEvent { standardFadein }
chainEvent {
unfreezePlayer
wizEnableMouse
}
}
#Teleport in dinner hall
if { $location == "dinnerHall" } {
chainEvent {
freezePlayer
wizDisableMouse
}
Play3DSound "characters/lydia/smallDoorUnlocked"
wizqEntityAction Lydia standOpenDoorRightHand
chainEvent {delay 2200}
chainEvent { standardFadeout }
chainEvent { delay 1000 }
chainEvent { wizEntitySetPosition Lydia "264.3 109.7 419.7" }
chainEvent { wizEntitySetPosition Zak "259 109.7 422" }
chainEvent { setScene "dinnerHall" world }
chainEvent { wizEntitySetOrientation Lydia 180 }
wizqEntitySetCycle Lydia standCycleNormal
chainEvent { wizEntitySetOrientation Zak 180 }
wizqEntitySetCycle Zak standCycleNormal
chainEvent { standardFadein }
chainEvent {
unfreezePlayer
wizEnableMouse
}
}
#Teleport to aqueduct
if { $location == "aqueduct" } {
chainEvent {
freezePlayer
wizDisableMouse
}
Play3DSound "characters/lydia/smallDoorUnlocked"
wizqEntityAction Lydia standOpenDoorLeftHand
chainEvent {delay 2200}
chainEvent { standardFadeout }
chainEvent { delay 1000 }
chainEvent { wizEntitySetPosition Lydia "527.8 34.9 276" }
chainEvent { wizEntitySetPosition Zak "531.8 34.9 276.8" }
chainEvent { setScene "aqueduct" world }
chainEvent { wizEntitySetOrientation Lydia 350 }
wizqEntitySetCycle Lydia standCycleNormal
chainEvent { wizEntitySetOrientation Zak 340 }
wizqEntitySetCycle Zak standCycleNormal
chainEvent { standardFadein }
chainEvent {
unfreezePlayer
wizEnableMouse
}
}
#Teleport to facadeWalkway
if { $location == "facadeWalkway" } {
chainEvent {
freezePlayer
wizDisableMouse
wizDisableFloorevent
}
Play3DSound "characters/lydia/smallDoorUnlocked"
wizqEntityAction Lydia standOpenDoorLeftHand
chainEvent {delay 2200}
chainEvent { standardFadeout }
chainEvent { delay 1000 }
chainEvent { wizEntitySetPosition Lydia "595.2 143.8 304.8" }
chainEvent { wizEntitySetPosition Zak "596.6 143.8 314.6" }
chainEvent { setScene "facadeWalkway" world }
chainEvent { wizEntitySetOrientation Lydia 30 }
wizqEntitySetCycle Lydia standCycleNormal
chainEvent { wizEntitySetOrientation Zak 10 }
wizqEntitySetCycle Zak standCycleNormal
chainEvent { standardFadein }
chainEvent {
unfreezePlayer
wizEnableMouse
wizEnableFloorevent
}
}
}
################################################################################
## ========================================================================== ##
## ANIMATION & SPECIAL CAMERA SECTION ##
## ========================================================================== ##
################################################################################
# NONE FOR NOW
################################################################################
## ========================================================================== ##
## NPC DIALOGUE SECTION ##
## ========================================================================== ##
################################################################################
# NONE FOR NOW
################################################################################
## ========================================================================== ##
## FORCED DIALOGUE SECTION ##
## ========================================================================== ##
################################################################################
## ===================================================== ##
## Fourth door Unlocked ##
## ===================================================== ##
proc fourthUnlockedDoor { location } {
if {$location == "dinnerHall" && [ozGet "dinnerHallDoorUse"] == 1} {
# now we can open the door!
doorOpening $location
return
}
chainEvent {
freezePlayer
wizDisableMouse
}
wizqTalkOpen
wizqTalkSay Lydia $::lng::fourthUnlockedDoorL1 "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorL1.ogg"
# Block 1
wizqQueue 1 {
chainEvent { delay 1000 }
chainEvent { wizEntityLookAt Zak [wizEntityGetPosition Lydia] }
}
# Block 1-B
wizqQueue 2 {
wizqEntityAction Lydia standYes "wait"
}
wizqTalkSay Lydia $::lng::fourthUnlockedDoorL2 "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorL2.ogg"
# Wait for Block 1 & 1-B
wizqWaitQueue 1
wizqWaitQueue 2
# Block 2
wizqQueue 1 {
chainEvent { delay 2000 }
wizqEntityAction Lydia standHandOnChin "wait"
}
wizqTalkSay Zak $::lng::fourthUnlockedDoorZ1 "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorZ1.ogg"
wizqTalkSay Zak $::lng::fourthUnlockedDoorZ2 "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorZ2.ogg"
wizqTalkClose
# Wait for Block 2
wizqWaitQueue 1
# now we can open the door!
doorOpening $location
wizqDisableMouse
# Block 3
wizqQueue 1 {
chainEvent { wizEntityLookAt Lydia [wizEntityGetPosition Zak] }
wizqEntityAction Lydia standWhat "wait"
wizqEntitySetCycle Lydia standCycleNormal
}
# Block 3-B
wizqQueue 2 {
chainEvent { delay 1000 }
chainEvent { wizEntityLookAt Zak [wizEntityGetPosition Lydia] }
wizqEntitySetCycle Zak standCycleNormal
}
wizqTalkOpen
wizqTalkSay Lydia $::lng::fourthUnlockedDoorL3 "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorL3.ogg"
wizqTalkSay Zak $::lng::fourthUnlockedDoorZ3 "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorZ3.ogg"
wizqTalkClose
# Wait for Block 3
wizqWaitQueue 1
wizqWaitQueue 2
ozSet "fourthUnlockedDoor" "discussed"
chainEvent {
unfreezePlayer
wizEntityResumeFollow Zak
wizEnableMouse
}
}
## ===================================================== ##
## First Locked Door ##
## ===================================================== ##
proc firstLockedDoor { } {
chainEvent {
freezePlayer
wizDisableMouse
}
# Block 1
wizqQueue 1 {
Play3DSound "characters/lydia/smallDoorLocked"
}
wizqTalkOpen
wizqTalkSay Lydia $::lng::firstLockedDoorL1 "sound/vo/$::LNG/scenes/lockedDoor/firstLockedDoorL1.ogg"
wizqTalkClose
ozSet "doorTried" "first"
# Wait for Block 1
wizqWaitQueue 1
chainEvent {
unfreezePlayer
wizEnableMouse
}
}
## ===================================================== ##
## Second Locked Door ##
## ===================================================== ##
proc secondLockedDoor { } {
chainEvent {
freezePlayer
wizDisableMouse
}
# Block 1
wizqQueue 1 {
Play3DSound "characters/lydia/smallDoorLocked"
}
wizqTalkOpen
wizqTalkSay Lydia $::lng::secondLockedDoorL1 "sound/vo/$::LNG/scenes/lockedDoor/secondLockedDoorL1.ogg"
wizqTalkClose
ozSet "doorTried" "second"
# Wait for Block 1
wizqWaitQueue 1
chainEvent {
unfreezePlayer
wizEnableMouse
}
}
## ===================================================== ##
## Third Locked Door ##
## ===================================================== ##
proc thirdLockedDoor { } {
chainEvent {
freezePlayer
wizDisableMouse
}
# Block 1
wizqQueue 1 {
Play3DSound "characters/lydia/smallDoorLocked"
}
wizqTalkOpen
wizqTalkSay Lydia $::lng::thirdLockedDoorL1 "sound/vo/$::LNG/scenes/lockedDoor/thirdLockedDoorL1.ogg"
wizqTalkClose
ozSet "doorTried" "third"
# Wait for Block 1
wizqWaitQueue 1
chainEvent {
unfreezePlayer
wizEnableMouse
}
}
## ===================================================== ##
## Fourth Locked Door ##
## ===================================================== ##
proc fourthLockedDoor { } {
chainEvent {
freezePlayer
wizDisableMouse
}
# Block 1
wizqQueue 1 {
Play3DSound "characters/lydia/smallDoorLocked"
}
wizqTalkOpen
wizqTalkSay Lydia $::lng::fourthLockedDoorL1 "sound/vo/$::LNG/scenes/lockedDoor/fourthLockedDoorL1.ogg"
wizqTalkClose
ozSet "doorTried" ""
# Wait for Block 1
wizqWaitQueue 1
chainEvent {
unfreezePlayer
wizEnableMouse
}
}
################################################################################
## ========================================================================== ##
## OPTIONNAL DIALOGUE SECTION ##
## ========================================================================== ##
################################################################################
# NONE FOR NOW
################################################################################
## ========================================================================== ##
## TO ADD/ CORRECTIONS NEEDED ##
## ========================================================================== ##
################################################################################
# NONE FOR NOW
################################################################################
## ========================================================================== ##
## TO CHECK ##
## ========================================================================== ##
################################################################################
# NONE FOR NOW