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

  1. # Droids Cog Script
  2. #
  3. # b0_Gear.cog
  4. #
  5. # Gear Cog controlling movement of the bridge and gears assmebly. 
  6. #
  7. # Desc:
  8. #     bin 25    Small Gears
  9. #     bin 26    Medium Gear
  10. #     bin 27     Large Gear
  11. #    This cog is responsible for keeping track of what gears are in the Gear assembly 
  12. #    and where. It's also in charge of mocing the bridge either up or down depending on 
  13. #    how the gears are in place. There are seperate cogs for the gear pieces themselves
  14. #    when found on the ground. After they've been placed in the gear assembly, they're 
  15. #    part of this script.
  16. #           
  17. #
  18. # 10/23/97 [DGS]    Created 
  19. # 01/19/97 [DGS]    Updated for new controls.    
  20. # 01/21/97 [DGS]    Rewrote majority of it; added new Used and Taken sections       
  21. # ========================================================================================
  22.  
  23. symbols
  24. message        used
  25. message        startup        
  26. message        arrived
  27. message        user0
  28. message        taken
  29. message        timer        
  30.  
  31. ## ================Parts    
  32. thing        screw0        linkid=11 
  33. thing        screw1         linkid=11
  34. thing        screw2        linkid=11
  35. thing        screw3        linkid=11
  36. thing        gear_top    linkid=11
  37. thing        gear_bot    linkid=11
  38. thing        platform    linkid=3 
  39. thing        spind        linkid=11
  40. surface        Button0        linkid=2
  41.  
  42. ## ==================Ghost objects
  43. thing        l_spindle_g        linkid=30  
  44. thing        r_spindle1_g    linkid=31  
  45. thing        r_spindle2_g    linkid=32  
  46.  
  47. ## ===================Ghost creation integers
  48. int        l_spindle_i=0      linkid=11        local
  49. int        r_spindle1_i=0                    local
  50. int        r_spindle2_i=0                    local
  51.  
  52. ## ====================Spin Directon integers
  53. flex        l_spindle_d=0.0        local
  54. flex        r_spindle1_d=0.0    local
  55. flex        r_spindle2_d=0.0    local
  56. flex        t_gear_d=0.0        local
  57.  
  58. ## =====================templates
  59. template    gear_large_t    
  60. template    gear_small_t
  61. template    gear_med_t
  62.  
  63. ## ======================Sectors
  64. sector        L_Sector    
  65. sector         R_sector
  66.  
  67. ## ======================Sounds
  68. sound        gearon_snd
  69. sound        gearongfsdfsf_snd
  70. sound        gearoff_snd
  71. sound        mstart_snd
  72. sound        mstop_snd
  73. sound        mfree_snd
  74. sound        mstress_snd
  75. sound        gearbog_snd
  76.  
  77. ## ======================Cogs
  78. cog        button_cog
  79.  
  80. thing    ghost_cam
  81. int        l_spindle_m=0        local
  82. int        r_spindle1_m=0        local
  83. int        r_spindle1_m=0        local
  84.  
  85.  
  86.  
  87. ## ======================Internal variables 
  88. float    speed=2.0            local
  89. int        on_button=0            local
  90. int        rotate                local
  91. int        l_spindle=0            local
  92. int        r_spindle1=0        local
  93. int        r_spindle2=0        local
  94. int        timermode=0            local
  95. int        part_id=0            local
  96. int        g_sound=0            local
  97. end
  98. # ========================================================================================
  99.  
  100. code
  101.                
  102. startup:
  103.     // 
  104.     //print("rotate it");
  105.     //rotate = 1;
  106.     //l_spindle_d     =     1;
  107.     //r_spindle1_d    =     -0.5;
  108.     //r_spindle2_d    =      0.5;
  109.         //call rotate_gears;
  110.     
  111.     
  112.     AttachThingToThing(screw0, gear_top);
  113.     AttachThingToThing(screw1, gear_top);
  114.     AttachThingToThing(screw2, gear_top);
  115.     AttachThingToThing(ghost_cam, platform);
  116.     //AttachThingToThing(screw3, screw0);
  117.     
  118.     MoveToFrame(platform, 1, 50);
  119.     //RotatePivot(screw0, 1, 1);
  120.  
  121.     sleep(5);
  122.     print("Gear mode:");
  123.     printint(screw0);
  124.     printint(screw1);
  125.     printint(screw2);
  126.  
  127.     return;
  128.  
  129. # ........................................................................................
  130. user0:
  131.         // User0 gets called when the player hits the motor switch. See gear_activate.cog 
  132.         print("user0");
  133.         if (rotate == 0) call start_motor;
  134.     return;
  135. used:
  136.     //    Section is executed when the user uses an inventory object. Cool. 
  137.     print("USED:");
  138.     printint(dwGetActivateBin());
  139.     printint(getsenderid());
  140.     if (rotate == 0)
  141.         {
  142.         if ( getinv(getlocalplayerthing(),dwGetActivateBin()) > 0) //if the bin has more than 0 in it; 
  143.             {
  144.             if ((GetSenderId() == 11) || (getsenderref() == r_spindle1_i) || (getsenderref() == r_spindle2_i)) // It's used on the gear_bot    
  145.                 {
  146.                 //    The Gear Assembly was activated
  147.                 if (getthingsector(getlocalplayerthing()) == l_sector) 
  148.                     {
  149.                     //=================== Player is on the Large gear side of the gear assembly
  150.                     print("Activated L sector");
  151.                     call handle_l;
  152.                     }
  153.                     
  154.                 if (getthingsector(getlocalplayerthing()) == r_sector) 
  155.                     {
  156.                     //=================== Player is on the Small gear side of the gear assembly
  157.                     print("Activated R sector");
  158.                     call handle_r;
  159.                     }
  160.                 }
  161.             }
  162.         }
  163.     return;
  164.  
  165.  
  166. taken:
  167.     print("taken");
  168.     printint(r_spindle1_i);
  169.         printint(r_spindle2_i);
  170.     printint(getsenderref());
  171.     printint ((GetSenderId() == 11) || (getsenderref() == r_spindle1_i) || (getsenderref() == r_spindle1_i));
  172.  
  173.     // Taken gets called when the user attempts to take a gear from left or right of the gear assembly.    
  174.         if (rotate == 0)
  175.         {
  176.         if ((GetSenderId() == 11)) // if it's the gear_bot that got activated    
  177.             {
  178.             print("Inside");
  179.             //    The Gear Assembly was activated
  180.             if (getthingsector(getlocalplayerthing()) == l_sector) 
  181.                 {
  182.                 //=================== Player is taking stuff from the left side of the gear assembly
  183.                 if (l_spindle != 0)
  184.                     {
  185.                     // inc the bin to add it back to the inv, destroy the environment one ans set l_spindle to 0.
  186.                     ChangeInv(getlocalplayerthing(), l_spindle, 1);
  187.                     destroything(l_spindle_i);
  188.                     l_spindle = 0;        
  189.                     //dwSetPlayerMass(dwGetPlayerMass() + l_spindle_m);
  190.                     l_spindle_m = 0;
  191.                     
  192.                     call update_bins;
  193.                     PlaySoundThing(gearoff_snd, l_spindle_g, 1, -1, -1, 0);  
  194.                     }
  195.                 else
  196.                     {
  197.                     // TELL THE PLAYER THERE'S NOTHING TO TAKE
  198.                     dwPlayCammySpeech(17305, "t9ca006.wav", 10, 0);
  199.                     timermode = 2;
  200.                     settimer(10);
  201.                     }
  202.                 }
  203.                 
  204.             if (getthingsector(getlocalplayerthing()) == r_sector) 
  205.                 {
  206.                 //=================== Player is on the Small gear side of the gear assembly
  207.                 if (r_spindle1 != 0)    //if the top spindle (1) has something on it.
  208.                     {
  209.                     // inc the bin to add it back to the inv, destroy the environment one ans set r_spindle1 to 0.
  210.                     ChangeInv(getlocalplayerthing(), r_spindle1, 1);
  211.                     //releasething(r_spindle1_i);
  212.                     destroything(r_spindle1_i);
  213.                     r_spindle1 = 0;        
  214.                     //dwSetPlayerMass(dwGetPlayerMass() + r_spindle1_m);
  215.                     r_spindle1_m - 0;
  216.                     
  217.                     call update_bins;
  218.                     PlaySoundThing(gearoff_snd, r_spindle1_g, 1, -1, -1, 0);  
  219.                     }
  220.                 else if (r_spindle2 != 0)    //if the bottom spindle (2) has something on it
  221.                     {
  222.                     // inc the bin to add it back to the inv, destroy the environment one ans set r_spindle2 to 0.
  223.                     ChangeInv(getlocalplayerthing(), r_spindle2, 1);
  224.                     //releasething(r_spindle2_i);
  225.                     destroything(r_spindle2_i);
  226.                     r_spindle2 = 0;        
  227.                     //dwSetPlayerMass(dwGetPlayerMass() + r_spindle2_m);
  228.                     r_spindle2_m - 0;
  229.                     PlaySoundThing(gearoff_snd, r_spindle1_g, 1, -1, -1, 0);  
  230.                     call update_bins;
  231.                     }
  232.                 else     //else there's nothing on this side. Both spindles are empty.
  233.                     {
  234.                     dwPlayCammySpeech(17305, "t9ca006.wav", 10, 0);  //There's nothing to take
  235.                     timermode = 2;
  236.                     settimer(10);
  237.                     }
  238.                 }
  239.             }
  240.         }
  241.     return;
  242. grind_gears:
  243.         // Controls causing the grind sound .
  244.         garbage = PlaySoundThing(gearbog_snd, gear_bot, 1, -1, -1, 0);
  245.         dwPlayCammySpeech(17313, "t9ca014.wav", 10, 0);
  246.         timermode = 3;
  247.         settimer(1);
  248.     return;
  249.  
  250. start_motor:
  251.     if ( (l_spindle == 27) && (r_spindle1 == 25) && (r_spindle2 == 25) )        // if all the grears are in place
  252.         {
  253.         r_spindle2_d    = 0;
  254.         r_spindle1_d     = 0;
  255.         l_spindle_d     = 0;
  256.         // 
  257.         call grind_gears;
  258.         }
  259.     else    // Else set up the way it's all gonna spin
  260.         { // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Set motion/direction
  261.         t_gear_d = 0; //Assume that if the top gear is going to move, the below lines will set it that way.
  262.         // These if/else statements set up the speeds and directions for the gears on the 3 spindles. 
  263.         if (l_spindle == 27)//if it's the large gear in the left spindle  
  264.             {
  265.             l_spindle_d = -1; //set the direction to -0.5
  266.             t_gear_d = -0.5; //set the top gears direction. 
  267.             }
  268.         else l_spindle_d = 0;// else set the gears speed to 0, since md. and sm. gears don't touch the upper and lower gears when th