home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 April / Gamestar_83_2006-04_dvd.iso / Dema / keepsake_demo_en.exe / res / puzzles / mill.puzzle.tcl < prev   
Text File  |  2005-10-29  |  15KB  |  532 lines

  1. proc pzlUseLever {device setting} {
  2.     set s [ozGet pzlMillCloseUp${device}]
  3.     if {$s == ""} {set s 0}
  4.  
  5.     wizqDisableMouse
  6.     while {$s != $setting} {
  7.         oz'event {wq'widget::delete& puzzleCloseUp${device}::switch,${s}St}
  8.         set s [expr ($s + 1) % 4]
  9.         oz'event {puzzleCloseUp${device}::newSt switch,${s}St}
  10.         oz'event {puzzleCloseUp${device}::new switch,${s}}
  11.         oz'event {ozqSound::NewFX "sound/puzzles/puzzleMill/switch,${s}.ogg"}
  12.         oz'event {wq'widget::waitfor [set puzzleCloseUp${device}::switch,${s}] -animate}
  13.         oz'event {wq'widget::delete& puzzleCloseUp${device}::switch,${s}}
  14.     }
  15.     
  16.     ozSet pzlMillCloseUp${device} $s
  17.  
  18.     pzlMillLogic ${device}
  19.  
  20.     wizqEnableMouse
  21. }
  22.  
  23. event "usePuzzleLever0A" {
  24.     pzlUseLever A 0
  25. }   
  26.  
  27. event "usePuzzleLever1A" {
  28.     pzlUseLever A 1
  29. }   
  30.  
  31. event "usePuzzleLever2A" {
  32.     pzlUseLever A 2
  33. }   
  34.  
  35. event "usePuzzleLever3A" {
  36.     pzlUseLever A 3
  37. }   
  38.  
  39.  
  40. event "usePuzzleLever0B" {
  41.     pzlUseLever B 0
  42. }   
  43.  
  44. event "usePuzzleLever1B" {
  45.     pzlUseLever B 1
  46. }   
  47.  
  48. event "usePuzzleLever2B" {
  49.     pzlUseLever B 2
  50. }   
  51.  
  52. event "usePuzzleLever3B" {
  53.     pzlUseLever B 3
  54. }   
  55.  
  56.  
  57. event "usePuzzleLever0C" {
  58.     pzlUseLever C 0
  59. }   
  60.  
  61. event "usePuzzleLever1C" {
  62.     pzlUseLever C 1
  63. }   
  64.  
  65. event "usePuzzleLever2C" {
  66.     pzlUseLever C 2
  67. }   
  68.  
  69. event "usePuzzleLever3C" {
  70.     pzlUseLever C 3
  71. }   
  72.  
  73.  
  74. event "usePuzzleLever0D" {
  75.     pzlUseLever D 0
  76. }   
  77.  
  78. event "usePuzzleLever1D" {
  79.     pzlUseLever D 1
  80. }   
  81.  
  82. event "usePuzzleLever2D" {
  83.     pzlUseLever D 2
  84. }   
  85.  
  86. event "usePuzzleLever3D" {
  87.     pzlUseLever D 3
  88. }   
  89.  
  90.  
  91. event "usePuzzleLever0E" {
  92.     pzlUseLever E 0
  93. }   
  94.  
  95. event "usePuzzleLever1E" {
  96.     pzlUseLever E 1
  97. }   
  98.  
  99. event "usePuzzleLever2E" {
  100.     pzlUseLever E 2
  101. }   
  102.  
  103. event "usePuzzleLever3E" {
  104.     pzlUseLever E 3
  105. }   
  106.  
  107.  
  108. event "usePuzzleLever0F" {
  109.     pzlUseLever F 0
  110. }   
  111.  
  112. event "usePuzzleLever1F" {
  113.     pzlUseLever F 1
  114. }   
  115.  
  116. event "usePuzzleLever2F" {
  117.     pzlUseLever F 2
  118. }   
  119.  
  120. event "usePuzzleLever3F" {
  121.     pzlUseLever F 3
  122. }   
  123.  
  124.  
  125. event "usePuzzleLever0G" {
  126.     pzlUseLever G 0
  127. }   
  128.  
  129. event "usePuzzleLever1G" {
  130.     pzlUseLever G 1
  131. }   
  132.  
  133. event "usePuzzleLever2G" {
  134.     pzlUseLever G 2
  135. }   
  136.  
  137. event "usePuzzleLever3G" {
  138.     pzlUseLever G 3
  139. }   
  140.  
  141.  
  142. event "usePuzzleLever0H" {
  143.     pzlUseLever H 0
  144. }   
  145.  
  146. event "usePuzzleLever1H" {
  147.     pzlUseLever H 1
  148. }   
  149.  
  150. event "usePuzzleLever2H" {
  151.     pzlUseLever H 2
  152. }   
  153.  
  154. event "usePuzzleLever3H" {
  155.     pzlUseLever H 3
  156. }
  157.  
  158. proc pzlMillLogic {device} {
  159.     set startA 0
  160.     set startB 0
  161.     set startC 0
  162.     set startD 0
  163.     
  164.     if {[ozGet pzlMillMachineE] == 1} {
  165.         ozSet pzlMillCloseUpAPower 0
  166.         ozSet pzlMillCloseUpBPower 0
  167.         ozSet pzlMillCloseUpCPower 0
  168.         ozSet pzlMillCloseUpDPower 0
  169.         ozSet pzlMillCloseUpEPower 0
  170.         ozSet pzlMillCloseUpFPower 0
  171.         ozSet pzlMillCloseUpGPower 0
  172.         ozSet pzlMillCloseUpHPower 0
  173.         ozSet pzlMillCloseUpZPower 0
  174.         
  175.         set reset [pzlMillPower S A [expr {$device != ""}]]
  176.         if $reset return
  177.  
  178.   if {[ozGet pzlMillMachineA] == 1} {SetAmbient 3d sfx/machineA "541.508 -17.481 274.492" 30 1.5 0.6}
  179.   if {[ozGet pzlMillMachineB] == 1} {SetAmbient 3d sfx/machineB "584.563 22.187 323.312"  30 1.5 0.6}
  180.   if {[ozGet pzlMillMachineC] == 1} {SetAmbient 3d sfx/machineC "634.052 22.187 318.092"  30 1.5 0.6}
  181.   if {[ozGet pzlMillMachineD] == 1} {SetAmbient 3d sfx/machineD "589.581 -16.969 267.858" 30 1.5 0.6}
  182.   if {[ozGet pzlMillMachineE] == 1} {SetAmbient 3d sfx/machineE "605.908 -30.502 304.112" 30 1.5 0.6}
  183.  
  184.     
  185.     
  186.         if {[ozGet pzlMillCloseUpBPower] != 0} {
  187.             if {[ozGet pzlMillMachineC] == 0} {
  188.                 set startC 1
  189.             }
  190.             ozSet pzlMillMachineC 1
  191.             oz'event {SetAmbient 3d sfx/machineC "634.052 22.187 318.092"  30 1.5 0.6}
  192.         } else {
  193.             if {[ozGet pzlMillMachineC] != 0} {
  194.                 set startC 1
  195.             }
  196.             ozSet pzlMillMachineC 0
  197.             oz'event {SetAmbient 3d sfx/machineC "634.052 22.187 318.092"  30 0 0.6}
  198.         }
  199.  
  200.         if {[ozGet pzlMillCloseUpDPower] != 0} {
  201.             if {[ozGet pzlMillMachineB] == 0} {
  202.                 set startB 1
  203.             }
  204.             ozSet pzlMillMachineB 1
  205.             oz'event {SetAmbient 3d sfx/machineB "584.563 22.187 323.312"  30 1.5 0.6}
  206.         } else {
  207.             if {[ozGet pzlMillMachineB] != 0} {
  208.                 set startB 1
  209.             }
  210.             ozSet pzlMillMachineB 0
  211.             oz'event {SetAmbient 3d sfx/machineB "584.563 22.187 323.312"  30 0 0.6}
  212.         }
  213.         
  214.         if {[ozGet pzlMillCloseUpFPower] != 0} {
  215.             if {[ozGet pzlMillMachineD] == 0} {
  216.                 set startD 1
  217.             }
  218.             ozSet pzlMillMachineD 1
  219.             oz'event {SetAmbient 3d sfx/machineD "589.581 -16.969 267.858" 30 1.5 0.6}
  220.         } else {
  221.             if {[ozGet pzlMillMachineD] != 0} {
  222.                 set startD 1
  223.             }
  224.             ozSet pzlMillMachineD 0
  225.             oz'event {SetAmbient 3d sfx/machineD "589.581 -16.969 267.858" 30 0 0.6}
  226.         }
  227.  
  228.         if {[ozGet pzlMillCloseUpZPower] != 0} {
  229.             if {[ozGet pzlMillMachineA] == 0} {
  230.                 set startA 1
  231.             }
  232.             ozSet pzlMillMachineA 1
  233.             oz'event {SetAmbient 3d sfx/machineA "541.508 -17.481 274.492" 30 1.5 0.6}
  234.         } else {
  235.             if {[ozGet pzlMillMachineA] != 0} {
  236.                 set startA 1
  237.             }
  238.             ozSet pzlMillMachineA 0
  239.             oz'event {SetAmbient 3d sfx/machineA "541.508 -17.481 274.492" 30 0 0.6}
  240.         }
  241.     }
  242.  
  243.     if {$startA || $startB || $startC || $startD} {
  244.         oz'event {wizDisableMouse}
  245.         if {${device} != ""} {
  246.             oz'event {standardFadeout}
  247.             oz'event {
  248.                 wq'widget::delete& puzzleCloseUp${device}::switch,0St
  249.                 wq'widget::delete& puzzleCloseUp${device}::switch,1St
  250.                 wq'widget::delete& puzzleCloseUp${device}::switch,2St
  251.                 wq'widget::delete& puzzleCloseUp${device}::switch,3St
  252.             }
  253.         }
  254.         if {$startC || $startB} {
  255.             oz'event {callEvent mill.secondFloor}
  256.             oz'event {standardFadein}
  257.             oz'event {oz'delay 3}
  258.             oz'event {standardFadeout}
  259.         }
  260.         if $startD {
  261.             oz'event {callEvent mill.millFlourSac}
  262.             oz'event {standardFadein}
  263.             oz'event {oz'delay 3}
  264.             oz'event {standardFadeout}
  265.         }
  266.         if $startA {
  267.             oz'event {callEvent mill.barrels}
  268.             oz'event {standardFadein}
  269.             oz'event {oz'delay 3}
  270.             oz'event {standardFadeout}
  271.         }
  272.         oz'event {wizEnableMouse}
  273.         if {$device != ""} {
  274.             if {[ozGet pzlMillMachineA] && \
  275.                 [ozGet pzlMillMachineB] && \
  276.                 [ozGet pzlMillMachineC] && \
  277.                 [ozGet pzlMillMachineD] && \
  278.                 [ozGet pzlMillMachineE]} {
  279.                 oz'event {
  280.                     GoBack
  281.                 }
  282.             } else {
  283.                 oz'event {
  284.                     setCamera puzzleCloseUp${device}
  285.                     wizhCameraChange
  286.                     puzzleCloseUp${device}::newSt switch,[ozGet pzlMillCloseUp$device]St
  287.                 }
  288.                 oz'event {standardFadein}
  289.             }
  290.             if {[ozGet pzlMillMachineA] && \
  291.                 [ozGet pzlMillMachineB] && \
  292.                 [ozGet pzlMillMachineC] && \
  293.                 [ozGet pzlMillMachineD] && \
  294.                 [ozGet pzlMillMachineE]} {
  295.                 oz'event {
  296.                     callEvent "mill.millSolved"
  297.                 }
  298.             }
  299.         }
  300.     }
  301. }
  302.  
  303. proc pzlMillPower {from to back} {
  304.     set s [ozGet pzlMillCloseUp$to]
  305.     set p [ozGet pzlMillCloseUp${to}Power]
  306.  
  307.     if {$p != 0} {
  308.         pzlMillReset $back
  309.         return 1
  310.     }
  311.  
  312.     ozSet pzlMillCloseUp${to}Power 1
  313.  
  314.     switch -exact $to {
  315.         A {
  316.             switch -exact $from {
  317.                 S {
  318.                     switch -exact $s {
  319.                         1 {return [pzlMillPower A B $back]}
  320.                         2 {return [pzlMillPower A D $back]}
  321.                     }
  322.                 }
  323.             }
  324.         }
  325.         B {
  326.             switch -exact $from {
  327.                 A {
  328.                     switch -exact $s {
  329.                         1 {return [pzlMillPower B E $back]}
  330.                         2 {return [pzlMillPower B C $back]}
  331.                     }
  332.                 }
  333.                 C {
  334.                     switch -exact $s {
  335.                         2 {return [pzlMillPower B A $back]}
  336.                         3 {return [pzlMillPower B E $back]}
  337.                     }
  338.                 }
  339.                 E {
  340.                     switch -exact $s {
  341.                         1 {return [pzlMillPower B A $back]}
  342.                         3 {return [pzlMillPower B C $back]}
  343.                     }
  344.                 }
  345.             }
  346.         }
  347.         C {
  348.             switch -exact $from {
  349.                 B {
  350.                     switch -exact $s {
  351.                         1 {return [pzlMillPower C D $back]}
  352.                         2 {return [pzlMillPower C F $back]}
  353.                     }
  354.                 }
  355.                 D {
  356.                     switch -exact $s {
  357.                         1 {return [pzlMillPower C B $back]}
  358.                         3 {return [pzlMillPower C F $back]}
  359.                     }
  360.                 }
  361.                 F {
  362.                     switch -exact $s {
  363.                         2 {return [pzlMillPower C B $back]}
  364.                         3 {return [pzlMillPower C D $back]}
  365.                     }
  366.                 }
  367.             }
  368.         }
  369.         D {
  370.             switch -exact $from {
  371.                 A {
  372.                     switch -exact $s {
  373.                         1 {return [pzlMillPower D C $back]}
  374.                         2 {return [pzlMillPower D G $back]}
  375.                     }
  376.                 }
  377.                 C {
  378.                     switch -exact $s {
  379.                         1 {return [pzlMillPower D A $back]}
  380.                         3 {return [pzlMillPower D G $back]}
  381.                     }
  382.                 }
  383.                 G {
  384.                     switch -exact $s {
  385.                         2 {return [pzlMillPower D A $back]}
  386.                         3 {return [pzlMillPower D C $back]}
  387.                     }
  388.                 }
  389.             }
  390.         }
  391.         E {
  392.             switch -exact $from {
  393.                 B {
  394.                     switch -exact $s {
  395.                         1 {return [pzlMillPower E H $back]}
  396.                         2 {return [pzlMillPower E F $back]}
  397.                     }
  398.                 }
  399.                 F {
  400.                     switch -exact $s {
  401.                         2 {return [pzlMillPower E B $back]}
  402.                         3 {return [pzlMillPower E H $back]}
  403.                     }
  404.                 }
  405.                 H {
  406.                     switch -exact $s {
  407.                         1 {return [pzlMillPower E B $back]}
  408.                         3 {return [pzlMillPower E F $back]}
  409.                     }
  410.                 }
  411.             }
  412.         }
  413.         F {
  414.             switch -exact $from {
  415.                 C {
  416.                     switch -exact $s {
  417.                         1 {return [pzlMillPower F E $back]}
  418.                         2 {return [pzlMillPower F G $back]}
  419.                     }
  420.                 }
  421.                 E {
  422.                     switch -exact $s {
  423.                         1 {return [pzlMillPower F C $back]}
  424.                         3 {return [pzlMillPower F G $back]}
  425.                     }
  426.                 }
  427.                 G {
  428.                     switch -exact $s {
  429.                         2 {return [pzlMillPower F C $back]}
  430.                         3 {return [pzlMillPower F E $back]}
  431.                     }
  432.                 }
  433.             }
  434.         }
  435.         G {
  436.             switch -exact $from {
  437.                 D {
  438.                     switch -exact $s {
  439.                         1 {return [pzlMillPower G F $back]}
  440.                         2 {return [pzlMillPower G H $back]}
  441.                     }
  442.                 }
  443.                 F {
  444.                     switch -exact $s {
  445.                         1 {return [pzlMillPower G D $back]}
  446.                         3 {return [pzlMillPower G H $back]}
  447.                     }
  448.                 }
  449.                 D {
  450.                     switch -exact $s {
  451.                         2 {return [pzlMillPower G D $back]}
  452.                         3 {return [pzlMillPower G F $back]}
  453.                     }
  454.                 }
  455.             }
  456.         }
  457.         H {
  458.             switch -exact $from {
  459.                 E {
  460.                     switch -exact $s {
  461.                         1 {return [pzlMillPower H G $back]}
  462.                         2 {return [pzlMillPower H Z $back]}
  463.                     }
  464.                 }
  465.                 G {
  466.                     switch -exact $s {
  467.                         1 {return [pzlMillPower H E $back]}
  468.                         3 {return [pzlMillPower H Z $back]}
  469.                     }
  470.                 }
  471.             }
  472.         }
  473.         Z {
  474.             ozSet pzlMillCloseUp${to}Power 1
  475.         }
  476.     }
  477.     return 0
  478. }
  479.  
  480. proc pzlMillReset {{back 1}} {
  481.     oz'event {
  482.       ozSet pzlMillCloseUpA      0
  483.       ozSet pzlMillCloseUpAPower 0
  484.       ozSet pzlMillCloseUpB      0
  485.       ozSet pzlMillCloseUpBPower 0
  486.       ozSet pzlMillCloseUpC      0
  487.       ozSet pzlMillCloseUpCPower 0
  488.       ozSet pzlMillCloseUpD      0
  489.       ozSet pzlMillCloseUpDPower 0
  490.       ozSet pzlMillCloseUpE      0
  491.       ozSet pzlMillCloseUpEPower 0
  492.       ozSet pzlMillCloseUpF      0
  493.       ozSet pzlMillCloseUpFPower 0
  494.       ozSet pzlMillCloseUpG      0
  495.       ozSet pzlMillCloseUpGPower 0
  496.       ozSet pzlMillCloseUpH      0
  497.       ozSet pzlMillCloseUpHPower 0
  498.       ozSet pzlMillCloseUpZPower 0
  499.   
  500.       ozSet pzlMillMachineE      1
  501.       ozSet pzlMillMachineB      0
  502.       ozSet pzlMillMachineC      0
  503.       ozSet pzlMillMachineD      0
  504.       ozSet pzlMillMachineA      0
  505.  
  506.       oz'event {
  507.         SetAmbient 3d sfx/machineA "541.508 -17.481 274.492" 30 0 0.6
  508.         SetAmbient 3d sfx/machineB "584.563 22.187 323.312"  30 0 0.6
  509.         SetAmbient 3d sfx/machineC "634.052 22.187 318.092"  30 0 0.6
  510.         SetAmbient 3d sfx/machineD "589.581 -16.969 267.858" 30 0 0.6
  511.         oz'delay 0.5
  512.       }
  513.       
  514.       set delay [ozqSound::NewFX "sound/puzzles/puzzleMill/machineStop.ogg"]
  515.  
  516.       if $back {
  517.           oz'event {GoBack}
  518.           oz'event {wizDisableMouse}
  519.           oz'event {oz'delay \$delay}
  520.           wizqTalkOpen
  521.           wizqTalkSay Lydia $::lng::millBreakL1   "sound/vo/$::LNG/scenes/mill/millBreakL1.ogg"
  522.           wizqTalkClose
  523.           oz'event {wizEnableMouse}
  524.       } else {
  525.           oz'event {oz'delay \$delay}
  526.           set delay [ozqSound::NewFX ""sound/vo/$::LNG/scenes/mill/millBreakL1.ogg"]
  527.           oz'event {oz'delay \$delay}
  528.       }
  529.   }
  530. }
  531.  
  532.