home *** CD-ROM | disk | FTP | other *** search
/ Classic Fond 52 / ClassicFond52.iso / GAMES / DROIDW.RAR / DWCD.GOB / mission_cog_03_ctrlrm.cog < prev    next >
Encoding:
Text File  |  1998-11-04  |  17.5 KB  |  477 lines

  1. # Droids Cog Script
  2. #
  3. # 03_CtrlRm.cog
  4. #
  5. # Desc:                                                                 
  6. #    This is the "Wheel & Axle" puzzle for the Moisture Farm level.  It's big, it's ugly.  really ugly...
  7. #
  8. #
  9. #          [MT]     Created
  10. # 1/16/98  [JP]     Modified for Moisture Farm Control Room. 
  11. #
  12. # (C) 1997 LucasLearningLimited. All Rights Reserved
  13.  
  14.  
  15.  
  16. symbols                     
  17. message             startup
  18. message             pulse
  19. message             activate 
  20. message             touched
  21. message             timer
  22. message             arrived
  23. message             used
  24. message             taken
  25. message             user0
  26. message             user7
  27.  
  28.                                     
  29. ##templates
  30. template            wftemplate
  31. template            grtemplate
  32. template            iwltemplate 
  33.  
  34. ##lever (wrench_long) when you first place it on
  35.  
  36. template            iwstemplate  
  37.  
  38. ##lever fake (wrench_short) when you first place it on
  39. surface             
  40. surface             reset_switch        linkid=7
  41. surface             test_surface
  42.  
  43. //cog                 ctrldrain
  44. cog                 movedown
  45.  
  46. vector             vec0        desc=thrust_direction
  47.            
  48. thing               gearZ
  49. thing               gear                linkid=4
  50. thing               gearW
  51. thing               platform            linkid=3
  52. thing               light0
  53. thing               light1
  54. thing               light2
  55. thing               light3
  56.  
  57. ##ghosts
  58. thing               wfghost
  59. thing               grghost
  60. thing               iwlghost
  61.  
  62.  
  63. cog                 ctrlswitch 
  64.  
  65. ##inventory wrench long when you first place it on
  66.  
  67. thing               iwsghost linkid=5 
  68.  
  69. #inventory wrench_short when you first place it on
  70.  
  71. thing               
  72.  
  73. #ghosts creation integers
  74. int                 wrench_long_spindle_i  linkid=5  local
  75. int                 wrench-short_spindle_i linkid=5  local
  76.  
  77. #sectors
  78. sector              control_room0
  79. sector              control_room1
  80. sector              control_room2
  81. sector              control_room3
  82. sector              drain_room0
  83. sector              drain_room0a
  84. sector              drain_room0b
  85. sector              drain_room0c
  86. sector              drain_room0d   
  87. sector              drain_room1  //octogonal one   
  88. sector              platform_sector
  89.  
  90.  
  91. float             brightness=1.00
  92. int                 speed=9    desc=thrust_speed
  93. int                 bin=31         
  94.  
  95. #bin number for the wrench piece.  
  96.  
  97. int                 wrench_long_spindle=0    local
  98. int                 wrench_short_spindle=0   local
  99. int                 part_id=0                local
  100. int                 xrotate                  local  
  101.  
  102. #TEMP  
  103.  
  104. sound               reset_switch_broke
  105. sound               wrench_gear_attach
  106. sound               wrench_gear_move
  107. sound               water_gush
  108. sound               power_on
  109.  
  110. cog                 airbubbles
  111.  
  112. sector              control_room4
  113. sector              control_room5
  114. sector              control_room6
  115. sector              control_room7
  116. sector              control_room8
  117.  
  118. sound               attach=SWT00tBigLvr.wav local
  119. sound               platmove=dort7boltslide.wav local
  120.  
  121. sector              cr09
  122. sector              cr10
  123. sector              cr11
  124. sector              cr12
  125. sector              cr13
  126. sector              cr14
  127. sector              cr15
  128. sector              cr16
  129. vector              apos           local
  130. vector              bpos           local
  131. vector              arm            local
  132. vector              ppos           local
  133. vector              bar            local
  134. vector              up             local
  135.  
  136. sound               mlever=MCHt4InclStp.wav local
  137. sound               ambient3=amb00tindust08.wav local
  138.                
  139. end
  140.  
  141. # =======================================
  142.  
  143.  
  144. ## Code Section
  145. code                                                              
  146.  
  147. startup:
  148.      print("yosh1");
  149.      clearvector=vectorset(0, 0, 0);
  150.      cv2=vectorset(0.4, 0.8, 1.0);
  151.      setsectorflags(control_room0, 2);
  152.      setsectorflags(control_room1, 2);
  153.      setsectorflags(control_room2, 2);
  154.      setsectorflags(control_room3, 2);
  155.      setsectorflags(drain_room0, 2);  
  156.      setsectorflags(drain_room0a, 2); 
  157.      setsectorflags(drain_room0b, 2); 
  158.      setsectorflags(drain_room0c, 2); 
  159.      setsectorflags(drain_room0d, 2); 
  160.      setsectorflags(drain_room1, 2);  
  161.      setsectorflags(control_room4, 2);
  162.      setsectorflags(control_room5, 2);
  163.      setsectorflags(control_room6, 2);
  164.      setsectorflags(control_room7, 2);
  165.      setsectorflags(control_room8, 2);
  166.      
  167.      setsectorflags(cr09, 2);  
  168.      setsectorflags(cr10, 2);  
  169.      setsectorflags(cr11, 2);   
  170.      setsectorflags(cr12, 2); 
  171.      setsectorflags(cr13, 2); 
  172.      setsectorflags(cr14, 2); 
  173.      setsectorflags(cr15, 2); 
  174.      setsectorflags(cr16, 2); 
  175.                     
  176.      setsectortint(control_room0, cv2);
  177.      setsectortint(control_room1, cv2);
  178.      setsectortint(control_room2, cv2);
  179.      setsectortint(control_room3, cv2);
  180.      setsectortint(drain_room0, cv2);  
  181.      setsectortint(drain_room0a, cv2); 
  182.      setsectortint(drain_room0b, cv2); 
  183.      setsectortint(drain_room0c, cv2); 
  184.      setsectortint(drain_room0d, cv2); 
  185.      setsectortint(drain_room1, cv2);  
  186.      setsectortint(control_room4, cv2);
  187.      setsectortint(control_room5, cv2);
  188.      setsectortint(control_room6, cv2);
  189.      setsectortint(control_room7, cv2);
  190.      setsectortint(control_room8, cv2);
  191.           
  192.      setsectortint(cr09, cv2);
  193.      setsectortint(cr10, cv2);
  194.      setsectortint(cr11, cv2);
  195.      setsectortint(cr12, cv2);
  196.      setsectortint(cr13, cv2);  
  197.      setsectortint(cr14, cv2); 
  198.      setsectortint(cr15, cv2); 
  199.      setsectortint(cr16, cv2); 
  200.      
  201.      //vec0=vectorset(0.0, 0.0, -8.0);
  202.     
  203.      //setpulse(0.2);
  204.      
  205.      if (light0 != 0) setthinglight(light0, 0, 0.0);
  206.     if (light1 != 0) setthinglight(light1, 0, 0.0);
  207.     if (light2 != 0) setthinglight(light2, 0, 0.0);
  208.     if (light3 != 0) setthinglight(light3, 0, 0.0);
  209.     xrotate=0;
  210.      global0=0;
  211.      
  212.      return;
  213.    
  214. # =========================================================
  215. user0:
  216.      //user gets called when player hits reset switch, see ctrlswitch co
  217.      //sendmesasge
  218. activate:
  219.      print("activate");
  220.      if (GetSenderId() == 7)      // pressing reset button underwater
  221.      {
  222.           if (global0==0)    // water is not drained yet
  223.           {
  224.          print ("reset_switch_broke!");
  225.           PlaySoundLocal(reset_switch_broke, 1, 0, 0);
  226.           }
  227.           
  228.           else if (global0==1)   // power comes on
  229.           {
  230.           print("power on");
  231.           PlaySoundLocal(power_on, 1, 0, 0);
  232.           SetWallCel(reset_switch, 1);  // reset button changes color
  233.           setthinglight(light0, brightness, 1.5);  //  turns these lights on
  234.         setthinglight(light1, brightness, 2.0);
  235.         setthinglight(light2, brightness, 1.0);
  236.         setthinglight(light3, brightness, 3.0);
  237.          }
  238.           
  239.           
  240.      }         
  241.      return;
  242.      
  243. # =============// attach the wrench from inventory to the middle gear
  244. used: 
  245.           // Section is executed when the user uses an inventory object.  
  246.           print("used");
  247.           printint (dwGetActivateBin());
  248.           printint (getsenderid());
  249.           if (xrotate == 0)
  250.                {
  251.                     if ( getinv(getlocalplayerthing(), dwGetActivatebin()) > 0)  // if the bin has more than 0 in it;
  252.                     {
  253.                     printint (getthingsector(getlocalplayerthing()));
  254.                     printint (drain_room0);
  255.                     // The gear was activated
  256.                          if (getthingsector(getlocalplayerthing()) == drain_room0)
  257.                               {
  258.                               //  Player is in drain room
  259.                               print ("activated wrench");
  260.                          //newiwl=creatething(iwltemplate, iwlghost);
  261.                          //newiws=creatething(iwstemplate, iwsghost);
  262.                          //AttachThingToThing(new_iwl, gear); 
  263.                          //AttachThingToThing(new_iws, gear);
  264.                          call handle_attach;
  265.                          }
  266.                     }     
  267.                }                             
  268.      return;
  269.  
  270.      
  271. #===========================
  272. handle_attach:
  273.      // handle attach is used to put the wrench on the lower left side of the assembly.
  274.      print("handleattach");
  275.      if (wrench_long_spindle == 0)  //if wrench spindle is empty
  276.           {          
  277.           //wrench_long_spindle = dwGetActivateBin(); //LLLLLLLL
  278.           //if (wrench_long_spindle == 31)  // if it's the "bin", for the wrench, it's bin 31          
  279.           if (dwGetActivateBin() == 31)  // if it's the "bin", for the wrench, it's bin 31
  280.                {
  281.                // If lower_left_spindle is set to 0, then there should be no gear on the spindle.  If a non-zero #, 
  282.                wrench_long_spindle = dwGetActivateBin(); //LLLLLL
  283.                print ("wrench_on!");
  284.                //creating the wrench to get attached...
  285.                wrench_long_spindle_i = creatething (iwltemplate, iwlghost);  //ok
  286.                //capturething(wrench_long_spindle_i);                          //ok
  287.                wrench_short_spindle_i = creatething (iwstemplate, iwsghost); //ok
  288.                capturething(wrench_short_spindle_i);                         //ok
  289.                ChangeInv(getlocalplayerthing(), wrench_long_spindle, -1);    //  
  290.                //newiwl=creatething(iwltemplate, iwlghost);
  291.                //newiws=creatething(iwstemplate, iwsghost);
  292.                //AttachThingToThing(iwlghost, gear);        
  293.                //AttachThingToThing(iwsghost, gear);
  294.                AttachThingToThing(wrench_short_spindle_i, gear);       
  295.                AttachThingToThing(wrench_long_spindle_i, gear);
  296.                AttachThingToThing(wrench_short_spindle_i, wrench_long_spindle_i);  //LL
  297.                playsoundlocal(attach, 1, 0, 0);
  298.                }
  299.           }
  300.      return;
  301.  
  302. #===============
  303. update_bins:
  304.      if (getinv(getlocalplayerthing(),bin) > 0) SetInvAvailable(getlocalplayerthing(), bin, 1);   //03/11/98 changed setinvavailabel to...
  305.      else SetInvAvailable(getlocalplayerthing(), bin, 0);
  306.      return;
  307.      
  308. # =============// rotate the wrench attached to the gear and platform
  309. touched:       
  310.      if (playonce==0){
  311.           //if (GetSenderId() == 5)      // pressing wrench_short
  312.           if ( getsenderref() == wrench_short_spindle_i)  //ok
  313.           {
  314.           print("c-r tou~chey!");
  315.           setpulse(0.1);
  316.           playonce=1;                                     //ok
  317.           }
  318.          }
  319.      
  320.      return;
  321.      
  322.  
  323. pulse:
  324.      player=getlocalplayerthing();
  325.      playerpos=getthingpos(player);
  326.      
  327.  
  328.      Apos=getthingpos(gear);
  329.      Bpos=getthingpos(wrench_short_spindle_i);     
  330.  
  331.      up=vectorset(0,0,1);
  332.      bar=vectornorm(vectorsub(Bpos, Apos));
  333.      bar=vectorcross(bar, up);
  334.      Ppos=vectornorm(vectorsub(playerpos, Apos));
  335.      wrench_short_spindle_ipos=getthingpos(wrench_short_spindle_i);
  336.      wrench_long_spindle_ipos=getthingpos(wrench_long_spindle_i); //LL
  337.      
  338.       
  339. //     printflex(vectorY(getthingpos(wrench_long_spindle_i)));
  340.      
  341.      
  342.      if((vectorY(getthingpos(wrench_long_spindle_i)))>-0.76) call stoptheplatform;
  343.      
  344.      if (vectordot(bar, Ppos) > 0) {
  345.           if(vectordist(playerpos,wrench_short_spindle_ipos)<.12) {
  346.                //mleveri=PlaySoundthing(mlever, wrench_short_spindle_i, 1, -1, -1, 0x1);  // wrench fake gear moving sound
  347.                playsoundlocal(mlever, 1, 0, 0);
  348.                AttachThingToThing(wrench_short_spindle_i, gear);                   //LL
  349.                AttachThingToThing(wrench_long_spindle_i, gear);                    //LL
  350.                AttachThingToThing(wrench_short_spindle_i, wrench_long_spindle_i);  //LL
  351.      
  352.                RotatePivot(gear, 1, -3);              //gear rotates to current frame (it was 12 before)
  353.           }
  354.           else {
  355.                stopthing(wrench_short_spindle_i);
  356.                stopthing(gear);
  357.                stopthing(wrench_long_spindle_i);
  358.                //stopsound(mleveri, 0.5);
  359.                print("sound stopped");
  360.           }
  361.      }
  362.      else print("we are on side TWO");       
  363.      return; 
  364.  
  365. # =============// wrench has been rotated until final frame
  366. stoptheplatform:
  367.                print("c_stop!!!");
  368.                setpulse(0);
  369.                Sleep(.5);
  370.                MoveToFrame(platform, 1, .79);      // platform moves down
  371.                destroything(wrench_short_spindle_i);
  372.                destroything(wrench_long_spindle_i);
  373.                destroything(gear);
  374.                newwf=creatething(wftemplate, wfghost);
  375.                movetoframe(newwf, 1, .8);
  376.                newgr=creatething(grtemplate, grghost);
  377.                movetoframe(newgr, 1, .8);
  378.                sendmessage(airbubbles, user4); //message sent to the airbubbler user4
  379.                playsoundlocal(platmove, 1, 0, 0);
  380.                return;
  381.  
  382.  
  383.  
  384.  
  385. arrived:
  386.      if (getsenderid() == 3);   //message that platform has arrived 
  387.      {
  388.           if (getcurframe(platform)==1)
  389.           {     
  390.                global0=1;   // control room is drained
  391.                print("c-r arrived");
  392.                sendmessage(movedown, user7);   //LL                       
  393.                sendmessage(ctrlswitch, user3); //LL
  394.                print("user3 sent");            //LL
  395.                sleep(3);                       //LL
  396.                
  397.                clearsectorflags(control_room0, 2);  //control & drain rooms no longer submerged
  398.                clearsectorflags(control_room1, 2);
  399.                clearsectorflags(control_room2, 2);
  400.                clearsectorflags(control_room3, 2);
  401.                clearsectorflags(drain_room0, 2);
  402.                clearsectorflags(drain_room0a, 2);
  403.                clearsectorflags(drain_room0b, 2);
  404.                clearsectorflags(drain_room0c, 2);
  405.                clearsectorflags(drain_room0d, 2);
  406.                clearsectorflags(drain_room1, 2);  //control & drain rooms rgb values returned to normal
  407.                
  408.                setsectortint(control_room0, clearvector);
  409.                setsectortint(control_room1, clearvector);
  410.                setsectortint(control_room2, clearvector);
  411.                setsectortint(control_room3, clearvector);
  412.                setsectortint(drain_room0, clearvector);
  413.                setsectortint(drain_room0a, clearvector);
  414.                setsectortint(drain_room0b, clearvector);                
  415.                setsectortint(drain_room0c, clearvector);
  416.                setsectortint(drain_room0d, clearvector);
  417.                
  418.                setsectortint(control_room4, clearvector); //newly added control rms sector tints.
  419.                setsectortint(control_room5, clearvector);
  420.                setsectortint(control_room6, clearvector);
  421.                setsectortint(control_room7, clearvector);
  422.                setsectortint(control_room8, clearvector);
  423.                
  424.                clearsectorflags(control_room4, 2);        //newly added control rms clear sector flags
  425.                clearsectorflags(control_room5, 2);
  426.                clearsectorflags(control_room6, 2);
  427.                clearsectorflags(control_room7, 2);
  428.                clearsectorflags(control_room8, 2);
  429.  
  430.                clearsectorflags(cr09, 2);         //new ones added belows:
  431.                clearsectorflags(cr10, 2);
  432.                clearsectorflags(cr11, 2);
  433.                clearsectorflags(cr12, 2);
  434.                clearsectorflags(cr13, 2);  
  435.                clearsectorflags(cr14, 2); 
  436.                clearsectorflags(cr15, 2); 
  437.                clearsectorflags(cr16, 2); 
  438.                
  439.                setsectortint(cr09, clearvector);      
  440.                setsectortint(cr10, clearvector); 
  441.                setsectortint(cr11, clearvector); 
  442.                setsectortint(cr12, clearvector); 
  443.                setsectortint(cr13, clearvector);   
  444.                setsectortint(cr14, clearvector);  
  445.                setsectortint(cr15, clearvector);  
  446.                setsectortint(cr16, clearvector);
  447.                
  448.                sectorsound(control_room0, ambient3, 0.6);
  449.                sectorsound(control_room1, ambient3, 0.6);
  450.                sectorsound(control_room2, ambient3, 0.6);
  451.                sectorsound(control_room3, ambient3, 0.6);
  452.                sectorsound(drain_room0, ambient3, 0.6);  
  453.                sectorsound(drain_room0a, ambient3, 0.6); 
  454.                sectorsound(drain_room0b, ambient3, 0.6); 
  455.                sectorsound(drain_room0c, ambient3, 0.6); 
  456.                sectorsound(drain_room0d, ambient3, 0.6);
  457.                sectorsound(drain_room1, ambient3, 0.6);  
  458.                sectorsound(control_room4, ambient3, 0.6);
  459.                sectorsound(control_room5, ambient3, 0.6);
  460.                sectorsound(control_room6, ambient3, 0.6);
  461.                sectorsound(control_room7, ambient3, 0.6);
  462.                sectorsound(control_room8, ambient3, 0.6);
  463.                sectorsound(cr09, ambient3, 0.6);
  464.                sectorsound(cr10, ambient3, 0.6);
  465.                sectorsound(cr11, ambient3, 0.6);
  466.                sectorsound(cr12, ambient3, 0.6);
  467.                sectorsound(cr13, ambient3, 0.6);
  468.                sectorsound(cr14, ambient3, 0.6);
  469.                sectorsound(cr15, ambient3, 0.6);
  470.                sectorsound(cr16, ambient3, 0.6);                                            
  471.                            
  472.           }                
  473.      }                     
  474.      return;               
  475.      
  476.  
  477. end