home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 April / Gamestar_83_2006-04_dvd.iso / Dema / keepsake_demo_en.exe / res / scripts / lockedDoor.tcl < prev    next >
Text File  |  2005-11-01  |  14KB  |  487 lines

  1. ################################################################################
  2. #                                                                             ##
  3. #    file   lockedDoor.tcl                                                    ##
  4. #    brief  Events for the locked door of First Stage.                        ##
  5. #                                                                             ##
  6. ################################################################################
  7.  
  8.  
  9. ## ===================================================== ##
  10. ##   Initialization                                      ##
  11. ## ===================================================== ##
  12.  
  13. event "init" {
  14. }
  15.  
  16.  
  17. ################################################################################
  18. ## ========================================================================== ##
  19. ##   DOOR BLOCKING & PUZZLE SECTION                                           ##
  20. ## ========================================================================== ##
  21. ################################################################################
  22.  
  23.  
  24. ## ===================================================== ##
  25. ##   Door Dispatcher                                     ##
  26. ## ===================================================== ##
  27. ## trigger is when a player try to open a lock door
  28.  
  29. proc doorDispatcher { location } {
  30.   if { [getVar "itemKeyRing"] == "pickedUp" } {
  31.     unlockedDoorDispatcher $location
  32.  
  33.   } else {
  34.     lockedDoorDispatcher
  35.   }
  36. }
  37.  
  38.  
  39. ## ===================================================== ##
  40. ##   Locked Door Dispatcher                              ##
  41. ## ===================================================== ##
  42.  
  43. proc lockedDoorDispatcher { } {
  44.   if { [getVar "doorTried"] == "" } {
  45.     firstLockedDoor
  46.  
  47.   } elseif { [getVar "doorTried"] == "first" } {
  48.     secondLockedDoor
  49.  
  50.   } elseif { [getVar "doorTried"] == "second" } {
  51.     thirdLockedDoor
  52.  
  53.   } elseif { [getVar "doorTried"] == "third" } {
  54.     fourthLockedDoor
  55.   }
  56. }
  57.  
  58.  
  59. ## ===================================================== ##
  60. ##   Unlocked Door Dispatcher                            ##
  61. ## ===================================================== ##
  62.  
  63. proc unlockedDoorDispatcher { location } {
  64.   set doorUnlocked [ozGet "doorUnlocked"]
  65.  
  66.   # did we already unlock this door?
  67.   if { [lsearch -exact $doorUnlocked $location] == -1 } {
  68.     # no, unlock it!
  69.     lappend doorUnlocked $location
  70.   }
  71.  
  72.   ozSet "doorUnlocked" $doorUnlocked
  73.  
  74.   # is this our 4th unlocked door?
  75.   if { [llength $doorUnlocked] == 4 && [ozGet "fourthUnlockedDoor"] == "" } {
  76.     fourthUnlockedDoor $location
  77.     eventState break
  78.  
  79.   } else {
  80.     lappend doorUnlocked $location
  81.   }
  82.  
  83.   # now we can open the door!
  84.   doorOpening $location
  85. }
  86.  
  87.  
  88. ## ===================================================== ##
  89. ##   Door Opening                                        ##
  90. ## ===================================================== ##
  91.  
  92. proc doorOpening { location } {
  93.  
  94.   #Teleport in basement
  95.   if { $location == "basement" } {
  96.     chainEvent {
  97.       freezePlayer
  98.       wizDisableMouse
  99.     }
  100.     Play3DSound "characters/lydia/smallDoorUnlocked"
  101.     wizqEntityAction Lydia standOpenDoorLeftHand
  102.     chainEvent {delay 2200}
  103.  
  104.     chainEvent { standardFadeout }
  105.     chainEvent { delay 1000 }
  106.  
  107.     chainEvent { wizEntitySetPosition Lydia "264.3 61.9 499" }
  108.     chainEvent { wizEntitySetPosition Zak "263.4 61.9 494.4" }
  109.  
  110.     chainEvent { setScene "basement" world }
  111.  
  112.     chainEvent { wizEntitySetOrientation Lydia 180 }
  113.     wizqEntitySetCycle Lydia standCycleNormal
  114.     
  115.     chainEvent { wizEntitySetOrientation Zak 180 }
  116.     wizqEntitySetCycle Zak standCycleNormal
  117.  
  118.     chainEvent { standardFadein }
  119.     
  120.     chainEvent {
  121.       unfreezePlayer
  122.       wizEnableMouse
  123.     }
  124.   }
  125.   
  126.   #Teleport in dinner hall
  127.   if { $location == "dinnerHall" } {
  128.     chainEvent {
  129.       freezePlayer
  130.       wizDisableMouse
  131.     }
  132.     Play3DSound "characters/lydia/smallDoorUnlocked"
  133.     wizqEntityAction Lydia standOpenDoorRightHand
  134.     chainEvent {delay 2200}
  135.     
  136.     chainEvent { standardFadeout }
  137.     chainEvent { delay 1000 }
  138.  
  139.     chainEvent { wizEntitySetPosition Lydia "264.3 109.7 419.7" }
  140.     chainEvent { wizEntitySetPosition Zak "259 109.7 422" }
  141.  
  142.     chainEvent { setScene "dinnerHall" world }
  143.  
  144.     chainEvent { wizEntitySetOrientation Lydia 180 }
  145.     wizqEntitySetCycle Lydia standCycleNormal
  146.  
  147.     chainEvent { wizEntitySetOrientation Zak 180 }
  148.     wizqEntitySetCycle Zak standCycleNormal
  149.  
  150.     chainEvent { standardFadein }
  151.     
  152.     chainEvent {
  153.       unfreezePlayer
  154.       wizEnableMouse
  155.     }
  156.   }
  157.  
  158.   #Teleport to aqueduct
  159.   if { $location == "aqueduct" } {
  160.     chainEvent {
  161.       freezePlayer
  162.       wizDisableMouse
  163.     }
  164.     Play3DSound "characters/lydia/smallDoorUnlocked"
  165.     wizqEntityAction Lydia standOpenDoorLeftHand
  166.     chainEvent {delay 2200}
  167.     
  168.     chainEvent { standardFadeout }
  169.     chainEvent { delay 1000 }
  170.  
  171.     chainEvent { wizEntitySetPosition Lydia "527.8 34.9 276" }
  172.     chainEvent { wizEntitySetPosition Zak "531.8 34.9 276.8" }
  173.  
  174.     chainEvent { setScene "aqueduct" world }
  175.  
  176.     chainEvent { wizEntitySetOrientation Lydia 350 }
  177.     wizqEntitySetCycle Lydia standCycleNormal
  178.  
  179.     chainEvent { wizEntitySetOrientation Zak 340 }
  180.     wizqEntitySetCycle Zak standCycleNormal
  181.  
  182.     chainEvent { standardFadein }
  183.     
  184.     chainEvent {
  185.       unfreezePlayer
  186.       wizEnableMouse
  187.     }
  188.   }
  189.   
  190.   #Teleport to facadeWalkway
  191.   if { $location == "facadeWalkway" } {
  192.     chainEvent {
  193.       freezePlayer
  194.       wizDisableMouse
  195.       wizDisableFloorevent
  196.     }
  197.     Play3DSound "characters/lydia/smallDoorUnlocked"
  198.     wizqEntityAction Lydia standOpenDoorLeftHand
  199.     chainEvent {delay 2200}
  200.     
  201.     chainEvent { standardFadeout }
  202.     chainEvent { delay 1000 }
  203.  
  204.     chainEvent { wizEntitySetPosition Lydia "595.2 143.8 304.8" }
  205.     chainEvent { wizEntitySetPosition Zak "596.6 143.8 314.6" }
  206.  
  207.     chainEvent { setScene "facadeWalkway" world }
  208.  
  209.     chainEvent { wizEntitySetOrientation Lydia 30 }
  210.     wizqEntitySetCycle Lydia standCycleNormal
  211.  
  212.     chainEvent { wizEntitySetOrientation Zak 10 }
  213.     wizqEntitySetCycle Zak standCycleNormal
  214.  
  215.     chainEvent { standardFadein }
  216.  
  217.     chainEvent {
  218.       unfreezePlayer
  219.       wizEnableMouse
  220.       wizEnableFloorevent
  221.     }
  222.   }
  223. }
  224.  
  225.  
  226. ################################################################################
  227. ## ========================================================================== ##
  228. ## ANIMATION & SPECIAL CAMERA SECTION                                         ##
  229. ## ========================================================================== ##
  230. ################################################################################
  231.  
  232.  
  233. # NONE FOR NOW
  234.  
  235.  
  236. ################################################################################
  237. ## ========================================================================== ##
  238. ##   NPC DIALOGUE SECTION                                                     ##
  239. ## ========================================================================== ##
  240. ################################################################################
  241.  
  242.  
  243. # NONE FOR NOW
  244.  
  245.  
  246. ################################################################################
  247. ## ========================================================================== ##
  248. ##   FORCED DIALOGUE SECTION                                                  ##
  249. ## ========================================================================== ##
  250. ################################################################################
  251.  
  252.  
  253. ## ===================================================== ##
  254. ##   Fourth door Unlocked                                ##
  255. ## ===================================================== ##
  256.  
  257. proc fourthUnlockedDoor { location } {
  258.   if {$location == "dinnerHall" && [ozGet "dinnerHallDoorUse"] == 1} {
  259.       # now we can open the door!
  260.       doorOpening $location
  261.       return
  262.   }
  263.   
  264.   chainEvent {
  265.     freezePlayer
  266.     wizDisableMouse
  267.   }
  268.   
  269.   wizqTalkOpen
  270.   wizqTalkSay Lydia $::lng::fourthUnlockedDoorL1   "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorL1.ogg"
  271.   
  272.   # Block 1
  273.   wizqQueue 1 {
  274.     chainEvent { delay 1000 }
  275.     chainEvent { wizEntityLookAt Zak [wizEntityGetPosition Lydia] }
  276.   }
  277.  
  278.   # Block 1-B
  279.   wizqQueue 2 {
  280.     wizqEntityAction Lydia standYes "wait"
  281.   }
  282.   
  283.   wizqTalkSay Lydia $::lng::fourthUnlockedDoorL2   "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorL2.ogg"
  284.  
  285.   # Wait for Block 1 & 1-B
  286.   wizqWaitQueue 1
  287.   wizqWaitQueue 2
  288.     
  289.   # Block 2
  290.   wizqQueue 1 {
  291.     chainEvent { delay 2000 }
  292.     wizqEntityAction Lydia standHandOnChin "wait"
  293.   }
  294.   
  295.   wizqTalkSay Zak $::lng::fourthUnlockedDoorZ1   "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorZ1.ogg"
  296.   wizqTalkSay Zak $::lng::fourthUnlockedDoorZ2   "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorZ2.ogg"
  297.   wizqTalkClose
  298.   
  299.   # Wait for Block 2
  300.   wizqWaitQueue 1
  301.     
  302.   # now we can open the door!
  303.   doorOpening $location
  304.   wizqDisableMouse
  305.  
  306.   # Block 3
  307.   wizqQueue 1 {
  308.     chainEvent { wizEntityLookAt Lydia [wizEntityGetPosition Zak] }
  309.     wizqEntityAction Lydia standWhat "wait"
  310.     wizqEntitySetCycle Lydia standCycleNormal
  311.   }
  312.   
  313.   # Block 3-B
  314.   wizqQueue 2 {
  315.     chainEvent { delay 1000 }
  316.     chainEvent { wizEntityLookAt Zak [wizEntityGetPosition Lydia] }
  317.     wizqEntitySetCycle Zak standCycleNormal
  318.   }
  319.  
  320.   wizqTalkOpen
  321.   wizqTalkSay Lydia $::lng::fourthUnlockedDoorL3   "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorL3.ogg"
  322.   wizqTalkSay Zak $::lng::fourthUnlockedDoorZ3   "sound/vo/$::LNG/scenes/lockedDoor/fourthUnlockedDoorZ3.ogg"
  323.   wizqTalkClose
  324.  
  325.   # Wait for Block 3
  326.   wizqWaitQueue 1
  327.   wizqWaitQueue 2
  328.   
  329.   ozSet "fourthUnlockedDoor" "discussed"
  330.   
  331.   chainEvent {
  332.     unfreezePlayer
  333.     wizEntityResumeFollow Zak
  334.     wizEnableMouse
  335.   }
  336. }
  337.  
  338.  
  339. ## ===================================================== ##
  340. ##   First Locked Door                                   ##
  341. ## ===================================================== ##
  342.  
  343. proc firstLockedDoor { } {
  344.   chainEvent {
  345.     freezePlayer
  346.     wizDisableMouse
  347.   }
  348.   
  349.   # Block 1
  350.   wizqQueue 1 {
  351.     Play3DSound "characters/lydia/smallDoorLocked"
  352.   }
  353.   
  354.   wizqTalkOpen
  355.   wizqTalkSay Lydia $::lng::firstLockedDoorL1   "sound/vo/$::LNG/scenes/lockedDoor/firstLockedDoorL1.ogg"
  356.   wizqTalkClose
  357.   ozSet "doorTried" "first"
  358.  
  359.   # Wait for Block 1
  360.   wizqWaitQueue 1
  361.   
  362.   chainEvent {
  363.     unfreezePlayer
  364.     wizEnableMouse
  365.   }
  366. }
  367.  
  368.  
  369. ## ===================================================== ##
  370. ##   Second Locked Door                                  ##
  371. ## ===================================================== ##
  372.  
  373. proc secondLockedDoor { } {
  374.   chainEvent {
  375.     freezePlayer
  376.     wizDisableMouse
  377.   }
  378.   
  379.   # Block 1
  380.   wizqQueue 1 {
  381.     Play3DSound "characters/lydia/smallDoorLocked"
  382.   }
  383.   
  384.   wizqTalkOpen
  385.   wizqTalkSay Lydia $::lng::secondLockedDoorL1   "sound/vo/$::LNG/scenes/lockedDoor/secondLockedDoorL1.ogg"
  386.   wizqTalkClose
  387.   ozSet "doorTried" "second"
  388.  
  389.   # Wait for Block 1
  390.   wizqWaitQueue 1
  391.   
  392.   chainEvent {
  393.     unfreezePlayer
  394.     wizEnableMouse
  395.   }
  396. }
  397.  
  398.  
  399. ## ===================================================== ##
  400. ##   Third Locked Door                                   ##
  401. ## ===================================================== ##
  402.  
  403. proc thirdLockedDoor { } {
  404.   chainEvent {
  405.     freezePlayer
  406.     wizDisableMouse
  407.   }
  408.   
  409.   # Block 1
  410.   wizqQueue 1 {
  411.     Play3DSound "characters/lydia/smallDoorLocked"
  412.   }
  413.   
  414.   wizqTalkOpen
  415.   wizqTalkSay Lydia $::lng::thirdLockedDoorL1   "sound/vo/$::LNG/scenes/lockedDoor/thirdLockedDoorL1.ogg"
  416.   wizqTalkClose
  417.   ozSet "doorTried" "third"
  418.  
  419.   # Wait for Block 1
  420.   wizqWaitQueue 1
  421.   
  422.   chainEvent {
  423.     unfreezePlayer
  424.     wizEnableMouse
  425.   }
  426. }
  427.  
  428.  
  429. ## ===================================================== ##
  430. ##   Fourth Locked Door                                  ##
  431. ## ===================================================== ##
  432.  
  433. proc fourthLockedDoor { } {
  434.   chainEvent {
  435.     freezePlayer
  436.     wizDisableMouse
  437.   }
  438.   
  439.   # Block 1
  440.   wizqQueue 1 {
  441.     Play3DSound "characters/lydia/smallDoorLocked"
  442.   }
  443.   
  444.   wizqTalkOpen
  445.   wizqTalkSay Lydia $::lng::fourthLockedDoorL1   "sound/vo/$::LNG/scenes/lockedDoor/fourthLockedDoorL1.ogg"
  446.   wizqTalkClose
  447.   ozSet "doorTried" ""
  448.  
  449.   # Wait for Block 1
  450.   wizqWaitQueue 1
  451.   
  452.   chainEvent {
  453.     unfreezePlayer
  454.     wizEnableMouse
  455.   }
  456. }
  457.  
  458.  
  459. ################################################################################
  460. ## ========================================================================== ##
  461. ##   OPTIONNAL DIALOGUE SECTION                                               ##
  462. ## ========================================================================== ##
  463. ################################################################################
  464.  
  465.  
  466. # NONE FOR NOW
  467.  
  468.  
  469. ################################################################################
  470. ## ========================================================================== ##
  471. ##   TO ADD/ CORRECTIONS NEEDED                                               ##
  472. ## ========================================================================== ##
  473. ################################################################################
  474.  
  475.  
  476. # NONE FOR NOW
  477.  
  478.  
  479. ################################################################################
  480. ## ========================================================================== ##
  481. ##   TO CHECK                                                                 ##
  482. ## ========================================================================== ##
  483. ################################################################################
  484.  
  485.  
  486. # NONE FOR NOW
  487.