home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today - The Disc! 9 / cdrt09.iso / pc / putnam / pnmba / shared.dir / 00771_Script_771 < prev    next >
Text File  |  1995-01-13  |  27KB  |  793 lines

  1. --"B" Task 8/26
  2.  
  3. --**********    TASK & HINT MACROS **********
  4.  
  5. on startTask pTaskNum 
  6.   global gThisTaskNum, gHintLevel, gTaskTicks, gTaskClickOns
  7.   set gThisTaskNum     = pTaskNum
  8.   set gTaskTicks       = the ticks   -- reset starting time ticks
  9.   set gTaskClickOns    = 0           -- clicks since task started
  10.   set gHintLevel       = 0           -- reset hints for solving the task
  11.   set gHintsGiven      = 0            -- used to delay limit  
  12.   if      pTaskNum = 10        then
  13.     initLetter
  14.   else if pTaskNum = 20        then
  15.     initMessUp    -- local in NK/Chap2
  16.   else if pTaskNum = 30        then
  17.     initGrove     
  18.   else if pTaskNum = 40        then
  19.     initHairDo    -- local in Chap4
  20.   else if pTaskNum = 50        then
  21.     nothing   --initTown    
  22.   else if pTaskNum = 60        then
  23.     initSAChores   
  24.   else if pTaskNum = 70        then
  25.     initClients  --71,72,73 done locally
  26.     
  27.   end if
  28.   
  29. end startTask
  30.  
  31.  
  32. on checkTask 
  33.   global gThisTaskNum, gTCOnLimit,gTaskClickOns, gTaskTicksLimit,gTaskTicks, gHintsGiven,gThisLoc
  34.   if gThisTaskNum >=  10 or gThisLoc = "Banners" then      -- if BA is on task.
  35.     if gHintsGiven > 3 then 
  36.       set clickOnLimit = gTCOnLimit * 3
  37.       set ticksLimit = gTaskTicksLimit * 3
  38.     else
  39.       set clickOnLimit = gTCOnLimit
  40.       set ticksLimit = gTaskTicksLimit
  41.     end if
  42.     if gTaskClickOns > clickOnLimit then -- check hint limit
  43.       set gTaskClickOns = 0
  44.       set gTaskTicks = the ticks
  45.       BAHint                           -- 3rd hint
  46.       return 1
  47.     else if (the ticks - gTaskTicks) > ticksLimit then 
  48.       set gTaskClickOns = 0
  49.       set gTaskTicks = the ticks
  50.       BAHint
  51.       return 1
  52.     else
  53.       return 0     -- not timeout or clickout                              
  54.     end if 
  55.   else
  56.     return 0          -- not on task                                     
  57.   end if 
  58.   -- end checkTask
  59.   
  60. on initLetter
  61.   global gLetterPlace,gThisTaskNum,gFoundLetters
  62.   put char 1 of gFoundLetters into letterNum
  63.   repeat while (gFoundLetters contains letterNum)
  64.     put string(random(9)) into letterNum
  65.   end repeat
  66.   if the number of chars in gFoundLetters = 8 then delete char 1 to 7 of gFoundLetters
  67.   set gFoundLetters = (gFoundLetters & letterNum) 
  68.   set placeList = "NK/5.Flask,NK/12.Rabbit,NK/2.Mop,NB/4.Pillow,NB/5.Mouse,NB/9.Chest" &¼
  69. ",NS/3.Goat,NS/5.Haystack,NS/11.Cricket"
  70.   set gLetterPlace = item value(letterNum) of placeList 
  71.   putMsge "initLetter / gLetterPlace" && gLetterPlace
  72.   --end initLetter
  73.   
  74. on checkLetter cName
  75.   global gLetterPlace
  76.   if cName = gLetterPlace or (the controlDown) then  -- debug remove controldown
  77.     startTask 19
  78.     stopLoop
  79.     goMNameAdd cName,2
  80.   else
  81.     goMNameAdd cName,1
  82.   end if
  83.   -- end checkLetter
  84.   
  85. on initGrove 
  86.   global gGroveLocNum,gGroveVersion,gIngredientsVO
  87.   global gIngredientNameList,gIngredientsToFind
  88.   if gGroveLocNum = empty then
  89.     set gGroveLocNum   = ((random(2))  + 11 )
  90.   else
  91.     if gGroveLocNum = 12 then
  92.       set gGroveLocNum = 13
  93.     else
  94.       set gGroveLocNum = 12
  95.     end if
  96.   end if    
  97.   set gGroveVersion  = random(27)
  98.   set gIngredientsVO = "3AV" & (60 + gGroveVersion)
  99.   set gIngredientNameList     = "feather,egg,broccoli,daisy,honeyComb,mushroom,stone," & ¼
  100.                                      "snailShell,seaShell"            
  101.   set comboList = "147,157,167,148,158,168,149,159,169," &¼
  102.                     "247,257,267,248,258,268,249,259,269," &¼
  103.                     "347,357,367,348,358,368,349,359,369," 
  104.   set thisCombo = item gGroveVersion of comboList
  105.   set gIngredientsToFind = "x,x,x"
  106.   repeat with i = 1 to 3
  107.     put item value(char i of thisCombo) of gIngredientNameList into item i of gIngredientsToFind
  108.   end repeat
  109.   putMsge "GroveVersion/List" && gGroveVersion && gIngredientsToFind
  110.   --end initGrove
  111.   
  112. on initSAChores
  113.   global gChoreList
  114.   set gChoreList = "o" 
  115.   --end initSAChores
  116.   
  117. on doneSAChore locName
  118.   global gChoreList
  119.   set gChoreList = gCHoreList & "," & locName
  120.   --end doneSAChore
  121.   
  122. on initClients
  123.   global gThisTaskNum,gClientList
  124.   set gClientList = "71,72,73" 
  125.   --end initClients
  126.   
  127. on doveTaskHelp
  128.   global gThisTaskNum,gThisLoc,gChoreList,gVMatchList
  129.   if gThisTaskNum = 10 then
  130.     startAudio "1BV07","C1"
  131.   else if gThisTaskNum = 20 then
  132.     startAudio "2AV35","C2A"
  133.   else if gThisTaskNum = 30 then
  134.     if gThisLoc = "GA" or gThisLoc = "GB" then
  135.       startAudio "3CV33","C3"
  136.     else 
  137.       startAudio "3CV34","C3"
  138.     end if
  139.   else if gThisTaskNum = 40 then
  140.     startAudio "4AV91","C4"
  141.   else if gThisTaskNum = 50 then
  142.     if gThisLoc = "Chap5A" then
  143.       startAudio "CWV51","L01"
  144.     else
  145.       startAudio "CWV50","L01"
  146.     end if
  147.   else if gThisTaskNum = 61 then  -- on way to SA before song
  148.     startAudio "CWV65","L01"
  149.   else if gThisTaskNum = 62 then  -- after song before chores
  150.     if gThisLoc = "AY" then
  151.       startAudio "CWV64","L01"   -- go in
  152.     else
  153.       startAudio "CWV65","L01"   -- go to SA
  154.     end if
  155.   else if gThisTaskNum = 60 then
  156.     if gChoreList contains "HR" then
  157.       if gChoreList contains "WR" then
  158.         startAudio "CWV63","L01"  -- done/ go out to AY
  159.       else
  160.         startAudio "CWV61","L01"  -- go to WR
  161.       end if
  162.     else
  163.       if gChoreList contains "WR" then
  164.         startAudio "CWV62","L01"   -- go to HR
  165.       else
  166.         startAudio "CWV60","L01"  -- go to HR or WR
  167.       end if
  168.     end if
  169.   else if gThisTaskNum = 70 then
  170.     startAudio "CWV70","L01"
  171.   else if gThisTaskNum = 71 then  --HR
  172.     startAudio "7BV15","c7B"
  173.   else if gThisTaskNum = 72 then  --WR
  174.     startAudio "7CV46","c7C"
  175.   else if gThisTaskNum = 73 then  --VC
  176.     if item 1 of gVMatchList = 1 then
  177.       if item 2 of gVMatchList = 2 then
  178.         putMsge "already won"
  179.       else
  180.         startAudio "CWV72","L01"  -- need to find dog
  181.       end if
  182.     else
  183.       if item 2 of gVMatchList = 2 then
  184.         startAudio "CWV73","L01"  --need to find VC
  185.       else
  186.         startAudio "CWV74","L01"  --need to find both 
  187.       end if
  188.     end if
  189.   else
  190.     doveExploreHelp
  191.   end if
  192.   if audioFinish() = "mouseDown" then nothing
  193.   --end doveTaskHelp
  194.   
  195. on BATaskHint
  196.   global gThisTaskNum,gThisLoc,gChoreList,gHeadJobs,gNoseJobs,gVMatchList
  197.   putMsge "BATaskHint" && gThisTaskNum
  198.   if      gThisTaskNum = 10     then hintLetter
  199.   else if gThisTaskNum = 20     then hintMessUp    -- local to NK/Chap2
  200.   else if gThisTaskNum = 30     then hintGrove   
  201.   else if gThisTaskNum = 31     then   -- saw clients but before grove task
  202.     if  gThisLoc contains "Chap3" or gThisLoc = "NS" then
  203.       BAHintAnim "3AV25","c3"  
  204.     else
  205.       BAHintAnim "3AV88","c3"  
  206.     end if
  207.   else if gThisTaskNum = 40     then 
  208.     BAHintAnim"4AV90","c4"
  209.   else if gThisTaskNum = 50     then 
  210.     if  gThisLoc = "Chap5A" then         
  211.       BAHintAnim "5AV36","c5"
  212.     else
  213.       BAHintAnim "CWV07h","L01"
  214.     end if
  215.     returnLoop 
  216.   else if gThisTaskNum = 60     then   -- clean WR & HR
  217.     if gChoreList contains "HR" then
  218.       if gChoreList contains "WR" then
  219.         BAHintAnim "6CV90","c6"  -- visited both/go to AY
  220.       else
  221.         BAHintAnim "6AV15","c6"  -- just HR/better visit WR
  222.       end if
  223.     else
  224.       if gChoreList contains "WR" then
  225.         BAHintAnim "6AV81","c6"  -- just WR/ better visit HR
  226.       else
  227.         BAHintAnim "6AV81","c6"  -- neither/ better visit HR
  228.       end if
  229.     end if
  230.   else if gThisTaskNum = 61     then  -- on way to SA before song
  231.     BAHintAnim "CWV09h","L01"
  232.   else if gThisTaskNum = 62     then   -- heard song
  233.     if gThisLoc = "AY" then
  234.       BAHintAnim "CWV10h","L01"
  235.     else
  236.       BAHintAnim "6CV91","c6"
  237.     end if
  238.   else if gThisTaskNum = 70     then  -- before 1st client
  239.     if gThisLoc = "Chap7B" or gThisLoc = "AY" then
  240.       BAHintAnim "7AV92","c7B"
  241.     else
  242.       BAHintAnim "CWV12h","L01"
  243.     end if
  244.   else if gThisTaskNum = 71     then
  245.     if gHeadJobs = empty then       -- HR no HeadJobs yet
  246.       BAHintAnim "7BV10","c7b"
  247.     else
  248.       BAHintAnim "7BV90","c7b"
  249.     end if
  250.   else if gThisTaskNum = 72     then
  251.     if gNoseJobs = empty then      -- WR no nose jobs yet
  252.       BAHintAnim "7CV90","c7c"
  253.     else
  254.       BAHintAnim "7CV91","c7c"
  255.     end if
  256.   else if gThisTaskNum = 73     then
  257.     if item 1 of gVMatchList = 1 then
  258.       if item 2 of gVMatchList = 2 then
  259.         putMsge "already won"
  260.       else
  261.         BAHintAnim "7DV91","c7d"  -- need to find dog
  262.       end if
  263.     else
  264.       if item 2 of gVMatchList = 2 then
  265.         BAHintAnim "7DV90","c7d"  --need to find VC
  266.       else
  267.         BAHintAnim "7DV90","c7d"  --need to find both 
  268.       end if
  269.     end if
  270.   else
  271.     BAExploreHint
  272.   end if
  273.   --end BATaskHint
  274.   
  275. on BAHintAnim pSoundName,pSndPathChar,pAltCastName
  276.   global gBAChannel,gBAHeadChannel,gHideOffset
  277.   global gAnimPause, gReturnMarker, gTaskClickOns, gTaskTicks, gHintsGiven
  278.   startAudio pSoundName,pSndPathChar
  279.   if soundBusy(1) then
  280.     if gBAHeadChannel <> 0 then
  281.       set HeadStorage = the castNum of sprite gBAHeadChannel
  282.       puppetSprite gBAHeadChannel, 1 
  283.       set the castNum of sprite gBAHeadChannel = the number of cast "BA/Head.1"
  284.     end if
  285.     set BAcastStorage = the castNum of sprite gBAChannel
  286.     if stringP(pAltCastName) then
  287.       set bodyName = pAltCastName
  288.     else 
  289.       set bodyName = "BA/HINT.1"
  290.     end if
  291.     puppetSprite gBAChannel, 1 -- need to puppet in BAs betweens
  292.     set the castNum of sprite gBAChannel = the number of cast bodyName
  293.     updateStage
  294.     set gTaskClickOns = 0          
  295.     set gTaskTicks = the ticks                     
  296.     set gHintsGiven = gHintsGiven + 1  -- to trigger delay of hints after a while
  297.     repeat while the soundBusy of 1 = TRUE -- animate face
  298.       --if the mouseDown then exit repeat
  299.     end repeat
  300.     dontpassevent
  301.     set the castNum of sprite gBAChannel = BACastStorage -- put BA Back.
  302.     puppetSprite gBAChannel, 0 -- turn it off when finished 
  303.     if gBAHeadChannel <> 0 then
  304.       set the castNum of sprite gBAHeadChannel = HeadStorage
  305.       puppetSprite gBAHeadChannel, 0  
  306.     end if
  307.   end if
  308.   puppetSound 0
  309.   if gReturnMarker <> empty then 
  310.     returnLoop
  311.   else
  312.     continue
  313.   end if
  314.   -- end BAHintAnim
  315.   
  316. on hintLetter         -- task 10
  317.   global gLetterPlace, gThisLoc, gHintLevel
  318.   set pHintType = gHintLevel + 1
  319.   put char 1 to 2 of gLetterPlace into letterBg
  320.   put char 4 to 5 of gLetterPlace into placeChars
  321.   if pHintType > 2 then
  322.     if letterBg <> gThisLoc then     -- hint 3 only for right loc
  323.       set pHintType  = 2              
  324.     end if
  325.   end if
  326.   if pHintType = 1 then
  327.     if "NK,NB,NS" contains gThisLoc then
  328.       BAHintAnim "1CV10","C1"   -- I better find that letter
  329.     else  if gThisLoc = "NY" then
  330.       BAHintAnim "1EV07","C1"  --local I better get back to SN
  331.     else
  332.       BAHintAnim "3BV11","C3"  --offsite I better get back to SN
  333.     end if
  334.   else if pHintType = 2 then
  335.     if not ("NK,NB,NS,NY" contains gThisLoc) then
  336.       BAHintAnim "3BV11","C3"  --offsite I better get back to SN
  337.     else  if gThisLoc = "NY" then   
  338.       BAHintAnim "1EV07","C1"  --local I better get back to SN
  339.     else
  340.       if letterBg = gThisLoc then
  341.         BAHintAnim "1BV29","C1"  -- Letter is in here.
  342.       else if letterBg = "NK" then
  343.         BAHintAnim "1BV32","c1"  -- Its in the kitchen!
  344.       else if letterBg = "NB" then
  345.         BAHintAnim "1BV31","c1"  -- Its in the bedroom!
  346.       else if letterBg = "NS" then
  347.         BAHintAnim "1BV30","c1"  -- Its in the shed!
  348.       end if
  349.     end if
  350.   else if pHintType >=  3 then  -- this is the highest level hint
  351.     if letterBg = "NK" then
  352.       if placeChars = "2." then 
  353.         BAHintAnim "1BV16","c1"     -- Broom
  354.       else if placeChars = "5." then 
  355.         BAHintAnim "1BV17","c1"     -- Flask
  356.       else if placeChars = "12" then 
  357.         BAHintAnim "1BV18","c1"     -- Rabbit
  358.       end if
  359.     else if letterBg = "NB" then
  360.       if placeChars = "9." then 
  361.         BAHintAnim "1CV12","c1"     -- Trunk
  362.       else if placeChars = "4." then 
  363.         BAHintAnim "1CV13","c1"     -- Pillow
  364.       else if placeChars = "5." then 
  365.         BAHintAnim "1CV14","c1"     -- Bed
  366.       end if
  367.     else if letterBg = "NS" then
  368.       if placeChars = "11" then 
  369.         BAHintAnim "1EV09","c1"     -- Coat/Cricket
  370.       else if placeChars = "5." then 
  371.         BAHintAnim "1EV10","c1"     -- Haystack
  372.       else if placeChars = "3." then 
  373.         BAHintAnim "1EV12","c1"     -- Goat
  374.       end if
  375.     end if
  376.   end if
  377.   set gHintLevel = pHintType
  378.   --end hintLetter
  379.   
  380. on hintGrove               
  381.   global gHintLevel,gThisLoc
  382.   if gThisLoc = "GE" then
  383.     BAHintAnim "3AV89","c3"  
  384.   else if gThisLoc <> "GA" and gThisLoc <> "GB" then
  385.     BAHintAnim "3AV26","c3"
  386.   else if gHintLevel < 4 then 
  387.     set gHintLevel = gHintLevel + 1
  388.     hintGroveBubble
  389.   else 
  390.     hintGroveReveal
  391.   end if
  392.   -- end hintGrove
  393.   
  394.   
  395.   --** Dove Macros ** 
  396.   
  397. on doveOpen pSide,simulateClick
  398.   global gThisLoc,gDovePuppetNum,gDoveVStart, gDoveHStart, gAnimPause
  399.   global gClickSnd, gDoveRestNum, gDoveFinal, gDoveBubbleChannel
  400.   if gDoveRestNum = EMPTY and (the lastClick < 90 or integerP(simulateClick))then -- if the dove is closed
  401.     pause
  402.     puppetSound gClickSnd
  403.     updateStage    
  404.     if gThisLoc = "FB" then stopPaint
  405.     wandToggle 0
  406.     set gDoveRestNum = the castNum of sprite gDovePuppetNum
  407.     set gDoveVStart = the locV of sprite gDovePuppetNum
  408.     set gDoveHStart = the locH of sprite gDovePuppetNum
  409.     set the locV of sprite gDoveBubbleChannel = gDoveVStart
  410.     set the locH of sprite gDoveBubbleChannel = gDoveHStart
  411.     set the ink  of sprite gDoveBubbleChannel = 36
  412.     
  413.     repeat with counter = 2 to 3 -- now do the dove animation
  414.       set tempTimer = the ticks
  415.       set newCastNum = the number of cast (pside & "dove." & counter)
  416.       set the castNum of sprite gDovePuppetNum = newCastNum
  417.       -- put "newCastNum = " & the name of cast newCastNum -- debug
  418.       animPause (tempTimer + gAnimPause)
  419.       updateStage
  420.     end repeat
  421.     
  422.     repeat with counter = 4 to 5 -- now do the dove animation
  423.       set tempTimer = the ticks
  424.       set newCastNum = the number of cast (pside & "dove." & counter)
  425.       set the castNum of sprite gDoveBubbleChannel = newCastNum
  426.       -- put "newCastNum = " & the name of cast newCastNum -- debug
  427.       animPause (tempTimer + gAnimPause)
  428.       updateStage
  429.     end repeat
  430.     
  431.     set tempTimer = the ticks
  432.     set newCastNum = the number of cast gDoveFinal
  433.     set the castNum of sprite gDoveBubbleChannel = newCastNum
  434.     animPause (tempTimer + gAnimPause)
  435.     updateStage
  436.   else
  437.     doveAway PSide
  438.   end if
  439.   --end doveOpen
  440.   
  441. on doveButtons pSide, pBubbleType
  442.   global gDovePuppetNum, gThisLoc, gClickSnd,gDoveRestNum, gDoveBubbleChannel,gDoveFinal
  443.   putMsge "doveButtons" && pside && pBubbleType
  444.   puppetSound gClickSnd
  445.   updateStage
  446.   
  447.   sound playfile 1, "@\voices\ba10.aif"
  448.   repeat while soundBusy(1)
  449.     nothing
  450.   end repeat
  451.   doveAway pSide
  452.   exit
  453.   
  454.   putMsge "doveButtons" && pside
  455.   set tempH   = the mouseH
  456.   set tempV   = the mouseV
  457.   set cLeft   = the left   of sprite gDoveBubbleChannel
  458.   set cRight  = the right  of sprite gDoveBubbleChannel
  459.   set cTop    = the top    of sprite gDoveBubbleChannel
  460.   set cBottom = the bottom of sprite gDoveBubbleChannel
  461.   
  462.   set btnVLoc = tempV -  cTop  -- works if dove moves
  463.   if pSide = "L" then -- grab the horizontal offset correctly regardless of side.
  464.     set hiLiteOffSet = 80
  465.     set btnHLoc = tempH - cLeft  -- works if dove moves
  466.   else -- could add error checking here.
  467.     set hiLiteOffSet = 120
  468.     set btnHLoc = cRight - tempH -- works if dove moves
  469.   end if
  470.   if (btnHLoc > 30) and (btnHLoc < 150) then -- clicked on the button column balloon
  471.     if (btnVLoc > 20) and (btnVLoc < 135) then -- actually clicked on a button.
  472.       if btnVLoc < 45 then           -- Continue Top Button
  473.         doveHiLite 1, (cLeft + hiLiteOffSet), (cTop + 32)
  474.         doveAway pSide -- put the dove away.
  475.       else                            --Help/Jump Ahead 2nd Button
  476.         if btnVLoc < 75 then -- Help
  477.           if pBubbleType = "JA" then
  478.             set hNum = 3
  479.           else
  480.             set hNum = 1
  481.           end if
  482.           doveHiLite hNum, (cLeft + hiLiteOffSet), (cTop + 61)
  483.           if pBubbleType = "JA" then
  484.             jumpAhead pBubbleType   -- needs to be in local movie
  485.           else
  486.             doveHelp
  487.           end if
  488.         else   -- ShortCuts/NK/NB/Banners/ 3rd Button
  489.           if btnVLoc < 105 then       
  490.             doveHiLite 1, (cLeft + hiLiteOffSet), (cTop + 90)
  491.             if pBubbleType = "BN" then -- banners goes to banners
  492.               goChap "Begin"
  493.             else if pBubbleType = "BD" then -- Bedroom
  494.               goLoc "NB",4
  495.             else if pBubbleType = "KT" then -- Kitchen
  496.               goLoc "NK",3
  497.             else -- all the rest have shortcuts
  498.               goChap "ShortCuts"
  499.             end if
  500.             set gDoveRestNum = empty
  501.           else         --EXIT / Bottom Button
  502.             if btnVLoc < 135 then  -- Exit
  503.               doveHiLite 1, (cLeft + hiLiteOffSet), (cTop + 122)
  504.               doveExit pSide
  505.             else
  506.               doveAway pSide
  507.             end if -- Coming Attractions
  508.           end if -- Credits
  509.         end if -- Continue
  510.       end if 
  511.     else  
  512.       doveAway pSide
  513.     end if
  514.   else 
  515.     doveAway pSide
  516.   end if 
  517.   --end doveButtons
  518.   
  519. on doveBegin pSide
  520.   global    gThisLoc, gDemoFlag,gThisTaskNum
  521.   wandToggle 0
  522.   putMsge "doveBegin"
  523.   doveAway pSide -- put the dove away.
  524.   if "CM,AM,FB,MT,RB"contains gThisLoc then
  525.     if gThisTaskNum = 2 then    -- shortcuts mode
  526.       goChap "ShortCuts"
  527.     else if gThisLoc = "CM" then
  528.       goLoc "NK",3
  529.     else if gThisLoc = "RB" then
  530.       goChap "Begin"
  531.     else 
  532.       goLoc "NB",4
  533.     end if
  534.   else  -- need to check for quit screen
  535.     goChap "Begin"
  536.   end if 
  537.   --end doveBegin
  538.   
  539. on doveAway pSide-- JCW, 5/23/93
  540.   global gDovePuppetNum, gDoveVStart, gDoveHStart, gAnimPause, gThisLoc
  541.   global gDoveRestNum, gReturnMarker, gClickSnd, gStartTicks, gDoveBubbleChannel
  542.   global gHideOffset
  543.   if gDoveRestNum <> empty then
  544.     if not stringP(pSide) then set pSide = char 1 of the name of cast gDoveRestNum
  545.     --putMsge "doveAway" && pside -- debug
  546.     puppetSprite gDovePuppetNum, 1  -- turn on the dove puppet
  547.     puppetSprite gDoveBubbleChannel, 1 -- turn on the dove bubble channel
  548.     
  549.     repeat with counter = 1 to 2 -- put away the bubble
  550.       set tempTimer = the ticks
  551.       set newCastNum = the number of cast (pSide & "dove." & (6 - counter))
  552.       putMsge "doveAway " && (pSide & "dove." & (6 - counter)) -- debug
  553.       set the castNum of sprite gDoveBubbleChannel = newCastNum
  554.       animPause (tempTimer + gAnimPause + gAnimPause )
  555.       updateStage
  556.     end repeat
  557.     
  558.     set tempTimer = the ticks
  559.     set the locV of sprite gDoveBubbleChannel = gHideOffset
  560.     animPause (tempTimer + gAnimPause + gAnimPause )
  561.     updateStage
  562.     
  563.     repeat with counter = 1 to 3 -- put away the dove
  564.       set tempTimer = the ticks
  565.       set newCastNum = the number of cast (pSide & "dove." & (4 - counter))
  566.       --putMsge "doveAawy" && (cPreFix & "dove." & (4 - counter)) -- debug
  567.       set the castNum of sprite gDovePuppetNum = newCastNum
  568.       animPause (tempTimer + gAnimPause + gAnimPause )
  569.       updateStage
  570.     end repeat    
  571.     set gDoveRestNum = EMPTY -- used in check regions to make sure dove is closed.
  572.     puppetSound 0   -- to return sound control to the score
  573.     puppetSprite gDovePuppetNum, 0
  574.     puppetSprite gDoveBubbleChannel, 0
  575.     updateStage
  576.     if gReturnMarker <> empty then
  577.       if not ("MT,RB" contains gThisLoc) then 
  578.         puppetTransition 52,0,24
  579.       end if
  580.       returnLoop
  581.     else
  582.       if not ("MT,RB" contains gThisLoc) then
  583.         putMsge "doveaway with diss." 
  584.         puppetTransition 52,0,24
  585.       end if
  586.       go marker(0) + 1 -- returns to frame after last marker with startAudio cmd
  587.       --updateStage
  588.       --puppetTransition 0
  589.     end if
  590.   end if
  591.   -- end doveAway
  592.   
  593.   
  594. on doveAwayNoContinue pSide-- JCW, 5/23/93
  595.   global gDovePuppetNum, gDoveVStart, gDoveHStart, gAnimPause, gThisLoc
  596.   global gDoveRestNum, gReturnMarker, gClickSnd, gStartTicks
  597.   set gDoveRestNum = EMPTY -- used in check regions to make sure dove is closed.
  598.   puppetSound 0   -- to return sound control to the score
  599.   puppetSprite gDovePuppetNum, 0
  600.   -- end doveAway
  601.   
  602. on doveExit pSide -- JCW, 7/23/93
  603.   global gDemoFlag, gClickSnd, gDoveRestNum, gDoveFinal,gDoveBubbleChannel
  604.   global gThisLoc, gDovePuppetNum, gDoveVStart, gDoveHStart, gAnimPause
  605.   
  606.   set newCastNum = the number of cast (pside & "Dove.X")
  607.   set the castNum of sprite gDoveBubbleChannel = newCastNum
  608.   updateStage
  609.   pause
  610.   --end doveBegin
  611.   
  612. on doveHiLite pButton, pLocH, pLocV -- JCW, 7/22/93
  613.   global gHideOffset,gDoveFinal
  614.   
  615.   put "HiLite, locH = " & pLocH & " locV = " & pLocV -- debug
  616.   set hiLiteChannel = 24
  617.   
  618.   set tempCast = the castNum of sprite hiLiteChannel
  619.   set tempInk  = the ink  of sprite hiLiteChannel
  620.   --set tempForeColor = the forecolor of sprite hiLiteChannel
  621.   --set tempbackColor = the backcolor of sprite hiLiteChannel
  622.   
  623.   set tempName = "doveHiLite." & pButton
  624.   set the castNum of sprite hiLiteChannel = the number of cast tempName
  625.   set the ink     of sprite hiLiteChannel = 39 -- darkest.
  626.   set the stretch of sprite hiLiteChannel = 0  -- turn off stretch just in case.
  627.   
  628.   set the locH of sprite hiLiteChannel = pLocH
  629.   set the locV of sprite hiLiteChannel = pLocV
  630.   --set the foreColor of sprite hiLiteChannel = 5
  631.   
  632.   set tempTime = the ticks
  633.   updateStage
  634.   animPause (tempTime + 15)
  635.   
  636.   set the castNum of sprite hiLiteChannel = tempCast -- put more or less back as found.
  637.   set the ink     of sprite hiLiteChannel = tempInk
  638.   set the locH    of sprite hiLiteChannel = gHideOffset
  639.   --set the foreColor of sprite hiLiteChannel = tempForeColor
  640.   --set the backcolor of sprite hiLiteChannel = tempbackColor
  641.   -- doveHiLite
  642. end doveLite
  643.  
  644. on doveHelpBedroomKitchenJumpAhead pBubbleType -- JCW, 7/25
  645.   -- note, this is only valid when called with pBubbleType, from the regular dovebuttons macro
  646.   
  647.   if (pBubbleType = "BN") or (pBubbleType = "SC") then -- Help
  648.     put "DoveHelp is on the way" -- debug
  649.     doveHelp
  650.   else
  651.     if pBubbleType = "BD" then -- Bedroom
  652.       goLoc "NB",4
  653.     else
  654.       if pBubbleType = "KT" then -- Kitchen
  655.         goLoc "NK",3
  656.       else    
  657.         if pBubbleType = "JA" then -- JumpAhead
  658.           -- doveJumpAhead
  659.           put "This will eventually be a jumpAhead call."
  660.         else
  661.           put "doveHelpBedroomKitchenJumpAhead called with invalid pBubbleType!"
  662.         end if -- JumpAhead
  663.       end if -- Kitchen    
  664.     end if -- Bedroom
  665.   end if -- Help
  666.   
  667.   -- end doveHelpBedroomKitchenJumpAhead
  668.   
  669. on doveQuitButtons pSide -- JCW, 5/22/93
  670.   global gDovePuppetNum, gThisLoc, gClickSnd, gDoveFinal,gDoveBubbleChannel,gEMediaPath,gDoveRestNum
  671.   
  672.   puppetSound gClickSnd
  673.   updateStage
  674.   
  675.   set tempH   = the mouseH
  676.   set tempV   = the mouseV
  677.   set cLeft   = the left   of sprite gDoveBubbleChannel
  678.   set cRight  = the right  of sprite gDoveBubbleChannel
  679.   set cTop    = the top    of sprite gDoveBubbleChannel
  680.   set cBottom = the bottom of sprite gDoveBubbleChannel
  681.   
  682.   set btnVLoc = tempV - cTop  -- works if dove moves
  683.   if pSide = "L" then -- grab the horizontal offset correctly regardless of side.
  684.     set btnHLoc = tempH - cLeft  -- works if dove moves
  685.     set column1R = 166
  686.     set column1L = 30
  687.     set column2R = 290
  688.     set column2L = 165
  689.     set hiLiteOffSet = 0
  690.   else -- could add error checking here.
  691.     set btnHLoc = cRight - tempH -- works if dove moves
  692.     set column1R = 290
  693.     set column1L = 165
  694.     set column2R = 166
  695.     set column2L = 30
  696.     set hiLiteOffSet = 33
  697.   end if
  698.   
  699.   play done
  700.   
  701.   if (btnHLoc > column1L) and (btnHLoc < column1R) then -- clicked on the left button column balloon
  702.     put "leftbutton column" -- debug  
  703.     if (btnVLoc > 70) and (btnVLoc < 140) then -- actually clicked on a button.
  704.       if btnVLoc < 110 then -- Continue
  705.         doveHiLite 2, (cLeft + 98 + hiLiteOffSet), (cTop + 88)
  706.         put "Continue" -- debug
  707.         doveAway pSide -- put the dove away.
  708.       else
  709.         if btnVLoc < 140 then -- Other Titles
  710.           doveHiLite 2, (cLeft + 98 + hiLiteOffSet), (cTop + 122)
  711.           --put "Other Titles" -- debug 
  712.           startAudio "CWM09","L01"
  713.           go to movie (gEMediaPath & "AnnoDemo.MMM")
  714.         else -- missed the button in this column
  715.           doveAway pSide
  716.         end if -- Other Titles
  717.       end if -- Continue
  718.     else -- didn't get in valid range for this column.
  719.       doveAway pSide
  720.     end if  -- actually clicked on a button.
  721.   else -- clicked on the left button column balloon
  722.     if (btnHLoc > column2L) and (btnHLoc < column2R) then -- clicked on the right button column balloon
  723.       put "rightbutton column" -- debug  
  724.       if (btnVLoc > 70) and (btnVLoc < 140) then -- actually clicked on a button.
  725.         if btnVLoc < 110 then -- Credits
  726.           doveHiLite 2, (cLeft + 228 + hiLiteOffSet), (cTop + 88)
  727.           set gDoveRestNum = empty
  728.           goChap "8c"
  729.         else
  730.           if btnVLoc < 140 then -- Quit
  731.             doveHiLite 2, (cLeft + 228 + hiLiteOffSet), (cTop + 122)
  732.             --put "Quit" -- debug 
  733.             --quit      -- quit the whole game.
  734.             play done
  735.           else -- missed the button in this column
  736.             doveAway pSide
  737.           end if -- Other Titles
  738.         end if -- Continue
  739.       else -- didn't get in valid range for this column.
  740.         doveAway pSide
  741.       end if  -- actually clicked on a button.
  742.     else -- clicked on the right button column balloon
  743.       set newCastNum = the number of cast gDoveFinal
  744.       set the castNum of sprite gDovePuppetNum = newCastNum
  745.     end if -- actually clicked on a button
  746.   end if -- end check for a button
  747.   --end doveQuitButtons
  748.   
  749.   -- ******* GENERAL PURPOSE MACROS *******
  750.   
  751. on soundFinish pChannel -- JCW, 5/22/93
  752.   repeat while soundBusy (pChannel)
  753.     sharedIdle
  754.   end repeat
  755.   -- end soundFinish
  756.   
  757. on animPause end -- JCW, 5/23/93
  758.   repeat while end > the ticks
  759.     idle
  760.   end repeat
  761.   -- end animPause
  762.   
  763. Factory arrayMaker2 
  764.   
  765. method mNew elementCount
  766.   instance elementTotal
  767.   set elementTotal = elementCount
  768.   set counter = 1
  769.   repeat while counter <= elementTotal
  770.     me (mPut, counter, 0)
  771.     set counter = counter + 1
  772.   end repeat
  773. end mNew
  774.  
  775. method mDump
  776.   instance elementTotal
  777.   set counter = 1
  778.   put RETURN
  779.   repeat while counter <= elementTotal
  780.     put counter && "=" && me (mGet, counter)
  781.     set counter = counter + 1
  782.   end repeat
  783.   put RETURN
  784. end mDump
  785.  
  786. --end arrayMaker2
  787.  
  788. on cleanUpRegionArray
  789.   global gRegionArray
  790.   if objectP(gRegionArray) then gRegionArray (mDispose)
  791.   --end cleanUpRegionArray
  792.   
  793.