home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2006 April / SGP.iso / dema / Keepsake-Demo-en-li-v1.0.exe / res / puzzles / crescentCoastWaterway.puzzle.tcl < prev    next >
Text File  |  2005-10-29  |  13KB  |  306 lines

  1. event "useWheelPuzzleLeverLeftA"  {zq'drop     left}
  2. event "useWheelPuzzleWheelLeft"   {zq'charge   left}
  3. event "useWheelPuzzleLeverLeftB"  {zq'transfer left}
  4. event "useWheelPuzzleLeverRightA" {zq'transfer right}
  5. event "useWheelPuzzleWheelRight"  {zq'charge   right}
  6. event "useWheelPuzzleLeverRightB" {zq'drop     right}
  7. event "useWheelPuzzleFinish"      {zq'activate}
  8. event "useWheelPuzzleReset"       {zq'reset}
  9.  
  10. proc zq'charge {side} {
  11.     set power [ozGet pzlMillWheel,power$side]
  12.     if {$power == ""} {set power 0}
  13.  
  14.     set maxpower 0
  15.     if {$side == "left"} {
  16.         set maxpower 3
  17.     } else {
  18.         set maxpower 5
  19.     }
  20.  
  21.     if {$power == $maxpower} {
  22.         oz'event {
  23.             puzzleMillWeightCloseUp::new ${side}WheelLevertFailTo$power
  24.             PlayMovieSound puzzleMillWeightCloseUp ${side}WeightFailTo$power puzzles/puzzleMillWheel/wheelStop
  25.             wq'widget::delete& puzzleMillWeightCloseUp::${side}WheelLevertFailTo$power
  26.         }
  27.         return
  28.     }
  29.     
  30.     if {$power > 0} {wq'widget::delete& puzzleMillWeightCloseUp::${side}WeightUpTo${power}St}
  31.     if {$power > 0} {wq'widget::delete& puzzleMillWeightCloseUp::${side}WheelLevertUpTo${power}St}
  32.     while {$power < $maxpower} {
  33.         incr power
  34.         oz'event {
  35.             puzzleMillWeightCloseUp::new ${side}WheelLevertUpTo${power}
  36.             PlayMovieSound puzzleMillWeightCloseUp ${side}WeightUpTo${power} puzzles/puzzleMillWheel/wheelSpinUp
  37.             wq'widget::delete& puzzleMillWeightCloseUp::${side}WheelLevertUpTo${power}
  38.         }
  39.     }
  40.     if {$power > 0} {puzzleMillWeightCloseUp::newSt ${side}WeightUpTo${power}St}
  41.     if {$power > 0} {puzzleMillWeightCloseUp::newSt ${side}WheelLevertUpTo${power}St}
  42.  
  43.     ozSet pzlMillWheel,power$side $power
  44.  
  45.     zq'logic
  46. }
  47.  
  48. proc zq'drop {side} {
  49.     set power [ozGet pzlMillWheel,power$side]
  50.     if {$power == ""} {set power 0}
  51.  
  52.     set maxpower 0
  53.     
  54.     set result ""
  55.     if {$power != $maxpower} {
  56.         set result "Success"
  57.     } else {
  58.         set result "Fail"
  59.     }
  60.  
  61.     PlayMovieSound puzzleMillWeightCloseUp ${side}Lever1${result} puzzles/puzzleMillWheel/lever${result}
  62.     
  63.     if {$power > 0} {wq'widget::delete& puzzleMillWeightCloseUp::${side}WeightUpTo${power}St}
  64.     if {$power > 0} {wq'widget::delete& puzzleMillWeightCloseUp::${side}WheelLevertUpTo${power}St}
  65.     while {$power > $maxpower} {
  66.         oz'event {
  67.             puzzleMillWeightCloseUp::new ${side}WheelLevertDownTo${power}
  68.             PlayMovieSound puzzleMillWeightCloseUp ${side}WeightDownTo${power} puzzles/puzzleMillWheel/wheelSpinDown
  69.             wq'widget::delete& puzzleMillWeightCloseUp::${side}WheelLevertDownTo${power}
  70.         }
  71.         incr power -1
  72.     }
  73.     if {$power > 0} {puzzleMillWeightCloseUp::newSt ${side}WeightUpTo${power}St}
  74.     if {$power > 0} {puzzleMillWeightCloseUp::newSt ${side}WheelLevertUpTo${power}St}
  75.  
  76.     ozSet pzlMillWheel,power$side $power
  77.  
  78.     zq'logic
  79. }
  80.  
  81. proc zq'transfer {side} {
  82.     set leftpower  [ozGet pzlMillWheel,powerleft]
  83.     set rightpower [ozGet pzlMillWheel,powerright]
  84.     if {$leftpower  == ""} {set leftpower  0}
  85.     if {$rightpower == ""} {set rightpower 0}
  86.  
  87.     set other ""
  88.     set max 0
  89.     if {$side == "left"} {
  90.         set other "right"
  91.         set max 5
  92.     } else {
  93.         set other "left"
  94.         set max 3
  95.     }
  96.  
  97.     set transfer [set ${side}power]
  98.     if {[set ${side}power] + [set ${other}power] > $max} {
  99.         set transfer [expr $max - [set ${other}power]]
  100.     }
  101.     
  102.     set ${side}maxpower  [expr [set ${side}power]  - $transfer]
  103.     set ${other}maxpower [expr [set ${other}power] + $transfer]
  104.  
  105.     set result ""
  106.     if {$transfer != 0} {
  107.         set result "Success"
  108.     } else {
  109.         set result "Fail"
  110.     }
  111.  
  112.     PlayMovieSound puzzleMillWeightCloseUp ${side}Lever2${result} puzzles/puzzleMillWheel/lever${result}
  113.  
  114.     if {$leftpower  > 0} {wq'widget::delete& puzzleMillWeightCloseUp::leftWeightUpTo${leftpower}St}
  115.     if {$leftpower  > 0} {wq'widget::delete& puzzleMillWeightCloseUp::leftWheelLevertUpTo${leftpower}St}
  116.     if {$rightpower > 0} {wq'widget::delete& puzzleMillWeightCloseUp::rightWeightUpTo${rightpower}St}
  117.     if {$rightpower > 0} {wq'widget::delete& puzzleMillWeightCloseUp::rightWheelLevertUpTo${rightpower}St}
  118.     
  119.     for {set i 0} {$i < $transfer} {incr i} {
  120.         incr ${other}power
  121.  
  122.         oz'event -all {
  123.             puzzleMillWeightCloseUp::new ${side}WheelLevertDownTo[set ${side}power]
  124.             puzzleMillWeightCloseUp::new ${other}WheelLevertUpTo[set ${other}power]
  125.         }
  126.         
  127.         oz'event -all {
  128.             puzzleMillWeightCloseUp::new ${side}WeightDownTo[set ${side}power]
  129.             
  130.             ozqSound::NewFX "/sound/puzzles/puzzleMillWheel/wheelSpinDown.ogg"
  131.             PlayMovieSound puzzleMillWeightCloseUp ${other}WeightUpTo[set ${other}power] puzzles/puzzleMillWheel/wheelSpinUp
  132.             wq'widget::delete& puzzleMillWeightCloseUp::${side}WeightDownTo[set ${side}power]
  133.  
  134.             wq'widget::delete& puzzleMillWeightCloseUp::${side}WheelLevertDownTo[set ${side}power]
  135.             wq'widget::delete& puzzleMillWeightCloseUp::${other}WheelLevertUpTo[set ${other}power]
  136.         }
  137.  
  138.         incr ${side}power -1
  139.     }
  140.     
  141.     if {$leftpower  > 0} {puzzleMillWeightCloseUp::newSt leftWeightUpTo${leftpower}St}
  142.     if {$leftpower  > 0} {puzzleMillWeightCloseUp::newSt leftWheelLevertUpTo${leftpower}St}
  143.     if {$rightpower > 0} {puzzleMillWeightCloseUp::newSt rightWeightUpTo${rightpower}St}
  144.     if {$rightpower > 0} {puzzleMillWeightCloseUp::newSt rightWheelLevertUpTo${rightpower}St}
  145.  
  146.     ozSet pzlMillWheel,powerleft  $leftpower
  147.     ozSet pzlMillWheel,powerright $rightpower
  148.  
  149.     zq'logic
  150. }
  151.  
  152. proc zq'logic {} {
  153.     set leftpower  [ozGet pzlMillWheel,powerleft]
  154.     set rightpower [ozGet pzlMillWheel,powerright]
  155.     if {$leftpower  == ""} {set leftpower  0}
  156.     if {$rightpower == ""} {set rightpower 0}
  157.     
  158.     if {!$puzzleMillWeightCloseUp::pinLeft1GlowLoop && $leftpower == 3} {
  159.         oz'event {puzzleMillWeightCloseUp::new pinLeft1GlowOn}
  160.         PlayMovieSound puzzleMillWeightCloseUp pinLeft2GlowOn puzzles/puzzleMillWheel/smallGlow
  161.         wq'widget::delete& puzzleMillWeightCloseUp::pinLeft1GlowOn
  162.         oz'event {
  163.             puzzleMillWeightCloseUp::new pinLeft1GlowLoop -repeat
  164.             puzzleMillWeightCloseUp::new pinLeft2GlowLoop -repeat
  165.         }
  166.     } elseif {$puzzleMillWeightCloseUp::pinLeft1GlowLoop && $leftpower != 3} {
  167.         wq'widget::delete& puzzleMillWeightCloseUp::pinLeft1GlowLoop
  168.         wq'widget::delete& puzzleMillWeightCloseUp::pinLeft2GlowLoop
  169.         oz'event {puzzleMillWeightCloseUp::new pinLeft1GlowOff}
  170.         PlayMovieSound puzzleMillWeightCloseUp pinLeft2GlowOff puzzles/puzzleMillWheel/smallGlow
  171.         wq'widget::delete& puzzleMillWeightCloseUp::pinLeft1GlowOff
  172.     }
  173.  
  174.     if {!$puzzleMillWeightCloseUp::pinRight1GlowLoop && $rightpower == 4} {
  175.         puzzleMillWeightCloseUp::new pinRight1GlowOn
  176.         PlayMovieSound puzzleMillWeightCloseUp pinRight2GlowOn puzzles/puzzleMillWheel/smallGlow
  177.         wq'widget::delete& puzzleMillWeightCloseUp::pinRight1GlowOn
  178.         oz'event {
  179.             puzzleMillWeightCloseUp::new pinRight1GlowLoop -repeat
  180.             puzzleMillWeightCloseUp::new pinRight2GlowLoop -repeat
  181.         }
  182.     } elseif {$puzzleMillWeightCloseUp::pinRight1GlowLoop  && $rightpower != 4} {
  183.         wq'widget::delete& puzzleMillWeightCloseUp::pinRight1GlowLoop
  184.         wq'widget::delete& puzzleMillWeightCloseUp::pinRight2GlowLoop
  185.         oz'event {puzzleMillWeightCloseUp::new pinRight1GlowOff}
  186.         PlayMovieSound puzzleMillWeightCloseUp pinRight2GlowOff puzzles/puzzleMillWheel/smallGlow
  187.         wq'widget::delete& puzzleMillWeightCloseUp::pinRight1GlowOff
  188.     }
  189. }
  190.  
  191. camera "machineStart" {
  192.     pos 622.866 18.3666 277.3341
  193.     aim 0 -38.2166 21.7045
  194.     up 0 0.4938 0.8695
  195.     fov 48.4555
  196.     layer background "machineStart/machineStart" 0 0 0 0 0 0 0 0
  197.     cursor "machineStart/machineStartCursor.tga"
  198. }
  199.  
  200. proc zq'activate {} {
  201.     set leftpower  [ozGet pzlMillWheel,powerleft]
  202.     set rightpower [ozGet pzlMillWheel,powerright]
  203.     if {$leftpower  == ""} {set leftpower  0}
  204.     if {$rightpower == ""} {set rightpower 0}
  205.  
  206.     if {($leftpower == 3 && $rightpower == 4)} {
  207.         ozSet "pzlMillMachineA" "0"
  208.         ozSet "pzlMillMachineB" "0"
  209.         ozSet "pzlMillMachineC" "0"
  210.         ozSet "pzlMillMachineD" "0"
  211.         ozSet "pzlMillMachineE" "1"
  212.         chainEvent {wizDisableMouse}
  213.         PlayMovieSound puzzleMillWeightCloseUp activateSuccess puzzles/puzzleMillWheel/activateSuccess
  214.         zq'reset 0
  215.         chainEvent {wizDisableMouse}
  216.         oz'event {standardFadeout}
  217.         oz'event {setPlayerPos 575 14.098 305}
  218.         oz'event {ozSet "tempMillRoom" [ozGet "millRoom"]}
  219.         oz'event {setScene "mill" "world"}
  220.         oz'event {callEvent mill.machineStart}
  221.         oz'event {standardFadein}
  222.         oz'event {oz'delay 3}
  223.         oz'event {standardFadeout}
  224.         oz'event {pzlMillLogic ""}
  225.         oz'event {wizEntitySetPosition Lydia "588 -16.9194 437"}
  226.         oz'event {wizEntitySetPosition Zak   "598 -16.9194 426"}
  227.         oz'event {setScene "crescentCoastWaterway" "world"}
  228.         oz'event {ozSet "millRoom" [ozGet "tempMillRoom"]}
  229.         oz'event {GoBack}
  230.         chainEvent {wizDisableMouse}; 
  231.         oz'event {
  232.             if {([ozGet pzlMillMachineA] != 0) && \
  233.                 ([ozGet pzlMillMachineB] != 0) && \
  234.                 ([ozGet pzlMillMachineC] != 0) && \
  235.                 ([ozGet pzlMillMachineD] != 0) && \
  236.                 ([ozGet pzlMillMachineE] != 0)} {
  237.                 callEvent mill.millSolved
  238.             } else {
  239.                 callEvent crescentCoastWaterway.millWheelSolvedMovie
  240.             }
  241.         }
  242.         chainEvent {wizEnableMouse}
  243.     } else {
  244.         PlayMovieSound puzzleMillWeightCloseUp activateFail puzzles/puzzleMillWheel/activateFail
  245.     }
  246. }
  247.     
  248. proc zq'reset {{anim 1}} {
  249.     set leftpower  [ozGet pzlMillWheel,powerleft]
  250.     set rightpower [ozGet pzlMillWheel,powerright]
  251.     if {$leftpower  == ""} {set leftpower  0}
  252.     if {$rightpower == ""} {set rightpower 0}
  253.  
  254.     set leftmaxpower  0
  255.     set rightmaxpower 0
  256.  
  257.    if $anim {
  258.         PlayMovieSound puzzleMillWeightCloseUp reset puzzles/common/reset
  259.     }
  260.  
  261.     if {$leftpower  > 0} {wq'widget::delete& puzzleMillWeightCloseUp::leftWeightUpTo${leftpower}St}
  262.     if {$leftpower  > 0} {wq'widget::delete& puzzleMillWeightCloseUp::leftWheelLevertUpTo${leftpower}St}
  263.     if {$rightpower > 0} {wq'widget::delete& puzzleMillWeightCloseUp::rightWeightUpTo${rightpower}St}
  264.     if {$rightpower > 0} {wq'widget::delete& puzzleMillWeightCloseUp::rightWheelLevertUpTo${rightpower}St}
  265.     
  266.     chainEvent { wizDisableMouse }
  267.     while {$leftpower > $leftmaxpower || $rightpower > $rightmaxpower} {
  268.         oz'event {
  269.         if {$leftpower > $leftmaxpower} {
  270.                 puzzleMillWeightCloseUp::new leftWheelLevertDownTo${leftpower}
  271.                 puzzleMillWeightCloseUp::new leftWeightDownTo${leftpower}
  272.                 ozqSound::NewFX "/sound/puzzles/puzzleMillWheel/wheelSpinDown.ogg"
  273.             }
  274.             if {$rightpower > $rightmaxpower} {
  275.                 puzzleMillWeightCloseUp::new rightWheelLevertDownTo${rightpower}
  276.                 puzzleMillWeightCloseUp::new rightWeightDownTo${rightpower}
  277.                 ozqSound::NewFX "/sound/puzzles/puzzleMillWheel/wheelSpinDown.ogg"
  278.             }
  279.         
  280.             if {$leftpower > $leftmaxpower} {
  281.                 wq'widget::waitfor [set puzzleMillWeightCloseUp::leftWheelLevertDownTo${leftpower}] -animate
  282.             } else {
  283.                 wq'widget::waitfor [set puzzleMillWeightCloseUp::rightWheelLevertDownTo${rightpower}] -animate
  284.             }
  285.         }
  286.  
  287.         if {$leftpower > $leftmaxpower} {
  288.             wq'widget::delete& puzzleMillWeightCloseUp::leftWheelLevertDownTo${leftpower}
  289.             wq'widget::delete& puzzleMillWeightCloseUp::leftWeightDownTo${leftpower}
  290.             incr leftpower -1
  291.         }
  292.         if {$rightpower > $rightmaxpower} {
  293.             wq'widget::delete& puzzleMillWeightCloseUp::rightWheelLevertDownTo${rightpower}
  294.             wq'widget::delete& puzzleMillWeightCloseUp::rightWeightDownTo${rightpower}
  295.             incr rightpower -1
  296.         }
  297.     }
  298.     chainEvent { wizEnableMouse }
  299.  
  300.     ozSet pzlMillWheel,powerleft  $leftpower
  301.     ozSet pzlMillWheel,powerright $rightpower
  302.  
  303.     zq'logic
  304. }
  305.  
  306.