home *** CD-ROM | disk | FTP | other *** search
/ Classic Fond 52 / ClassicFond52.iso / GAMES / DROIDW.RAR / DWCD.GOB / mission_cog_00_t_inventory2.cog < prev    next >
Text File  |  1998-11-04  |  12KB  |  380 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 27     Large Gear
  10. #    This cog is responsible for keeping track of what gears are in the Gear assembly 
  11. #    and where. It's also in charge of mocing the bridge either up or down depending on 
  12. #    how the gears are in place. There are seperate cogs for the gear pieces themselves
  13. #    when found on the ground. After they've been placed in the gear assembly, they're 
  14. #    part of this script.
  15. #           
  16. #
  17. # 10/23/97 [DGS]    Created 
  18. # 01/19/97 [DGS]    Updated for new controls.    
  19. # 01/21/97 [DGS]    Rewrote majority of it; added new Used and Taken sections
  20. # 03/12/98 [JP]     Modified to fit the training ground       
  21. # ========================================================================================
  22.  
  23. symbols
  24. message        used
  25. message        startup        
  26. message        arrived
  27. message        user0
  28. message        taken
  29. message        timer        
  30.  
  31.  
  32. thing        gear_bot            
  33. surface        Button0        linkid=2
  34. surface        gearlarge      linkid=3
  35. surface        gearsmall      linkid=4
  36.  
  37. ## Ghost objects
  38. thing        l_spindle_g    linkid=30  
  39. thing        r_spindle1_g    linkid=31  
  40.  
  41. ## Ghost creation integers
  42. int        l_spindle_i=0    linkid=30 local
  43. int        r_spindle1_i=0    local
  44.  
  45. ## Spin Directon integers
  46. flex        l_spindle_d=0.0    local
  47. flex        r_spindle1_d=0.0    local
  48.  
  49. ## templates
  50. template    gear_large_t    
  51. template    gear_small_t
  52.  
  53. ## Sectors
  54. sector        L_Sector    
  55. sector         R_sector
  56.  
  57. ## Cogs
  58. cog        button_cog
  59.  
  60. ## Interal variables 
  61.  
  62. float        speed=2.0    local
  63. int        on_button=0    local
  64. int        rotate        local
  65. int        l_spindle=0    local
  66. int        r_spindle1=0    local
  67. int        timermode=0    local
  68. int        part_id=0    local
  69.  
  70. sound     gearon=swtt9gearon.wav local
  71. sound     gearoff=swtt9gearoff.wav local
  72. sound     turnfree=mcht9motfree.wav local
  73. sound     turngears=mcht9motstrss.wav local
  74.  
  75. int       show_once=1 local
  76.  
  77. sound     gearstart=MCHt9MotStrt.wav local
  78. sound     gearstop=MCHt9MotStp.wav local
  79.  
  80. end
  81.  
  82. # ========================================================================================
  83.  
  84. code
  85.                
  86. startup:
  87.     
  88.     return;
  89.  
  90. # ........................................................................................
  91. user0:
  92.         // User0 gets called when the player hits the motor switch. See gear_activate.cog 
  93.         print("user0");
  94.         //if (rotate == 0) 
  95.         call start_motor;
  96.     return;
  97. used:
  98.     //    Section is executed when the user uses an inventory object. Cool. 
  99.     print("USED:");
  100.     printint(dwGetActivateBin());
  101.     printint(getsenderid());
  102.     if (rotate == 0)
  103.         {
  104.         if ( getinv(getlocalplayerthing(),dwGetActivateBin()) > 0) //if the bin has more than 0 in it; 
  105.             {
  106.             if (GetSenderId() == 3) // It's used on the gearlarge surface    
  107.                 {
  108.                 call handle_l;
  109.                     }
  110.                     //printint(getthingsector(getlocalplayerthing()));
  111.                 //printint(L_sector);
  112.                 //    The Gear Assembly was activated
  113.                 //if (getthingsector(getlocalplayerthing()) == L_sector) 
  114.                 //    {
  115.                 //=================== Player is on the Large gear side of the gear assembly
  116.                 //    print("Activated L sector");
  117.                 //    call handle_l;
  118.                 //    }
  119.                     
  120.                 //if (getthingsector(getlocalplayerthing()) == r_sector) 
  121.                 //    {
  122.                 //    //=================== Player is on the Small gear side of the gear assembly
  123.                 //    print("Activated R sector");
  124.                 //     call handle_r;
  125.                 //    }
  126.                 //}
  127.             if (GetSenderId() == 4) // It's used on the gearsmall surface
  128.                     {
  129.                     call handle_r;
  130.                     }
  131.                     //printint(getthingsector(getlocalplayerthing()));
  132.                     //printint(R_sector);
  133.                     //if (getthingsector(getlocalplayerthing()) == R_sector)
  134.                     //     {
  135.                     //     print("Activated R sector");
  136.                     //     call handle_r;
  137.                     //     }    
  138.                }
  139.           }
  140.      
  141.     return;
  142.  
  143.  
  144. taken:
  145.     print("taken");
  146.     printint(r_spindle1);
  147.     printint(getsenderid());
  148.  
  149.     // Taken gets called when the user attempts to take a gear from left or right of the gear assembly.    
  150.         if (rotate == 0)
  151.         {
  152.         if (GetSenderId() == 3)
  153.             {
  154.             //    The Gear Assembly was activated
  155.                 if (l_spindle != 0)
  156.                     {
  157.                     // inc the bin to add it back to the inv, destroy the environment one ans set l_spindle to 0.
  158.                     ChangeInv(getlocalplayerthing(), l_spindle, 1);
  159.                     destroything(l_spindle_i);
  160.                     l_spindle = 0;        
  161.                     call update_bins;
  162.                     }
  163.                 else
  164.                     {
  165.                     // TELL THE PLAYER THERE'S NOTHING TO TAKE
  166.                                        //  //There's nothing to take
  167.                     timermode = 2;
  168.                     settimer(10);
  169.                     }
  170.             }
  171.           if (GetSenderId() == 4) 
  172.                 {
  173.                 //=================== Player is on the Small gear side of the gear assembly
  174.                 if (r_spindle1 != 0)    //if the top spindle (1) has something on it.
  175.                     {
  176.                     ChangeInv(getlocalplayerthing(), r_spindle1, 1);
  177.                     destroything(r_spindle1_i);
  178.                     r_spindle1 = 0;        
  179.                     call update_bins;
  180.                     }
  181.  
  182.                 
  183.                 else     //else there's nothing on this side. Both spindles are empty.
  184.                     {
  185.                                        //  //There's nothing to take
  186.                     timermode = 2;
  187.                     settimer(10);
  188.                     }
  189.                 }
  190.         }
  191.     return;
  192. start_motor:
  193.      if ((l_spindle != 27) && (r_spindle != 25))
  194.           {   //nothing's on
  195.           l_spindle_d = 0;
  196.           r_spindle1_d = 0;
  197.           call rotate_gears;
  198.           timermode =1;
  199.           settimer(7);
  200.           }     
  201.  
  202.     else if ((l_spindle == 27) && (r_spindle1 == 25))
  203.           {    // large in left, small in right
  204.           l_spindle_d = -7; 
  205.           r_spindle1_d = 7;
  206.           call rotate_gears;
  207.           timermode =1;
  208.           settimer(7);
  209.           }
  210.           
  211.      else if ((l_spindle == 25) && (r_spindle1 != 25))
  212.           {    // only small in left
  213.           l_spindle_d = 0;
  214.           r_spindle1_d = 0;
  215.           call rotate_gears;
  216.           timermode =1;
  217.           settimer(7);
  218.           }
  219.           
  220.      else if ((l_spindle == 27) && (r_spindle1 != 25))
  221.           {    // only large in left
  222.           l_spindle_d = -7;
  223.           r_spindle1_d = 0;
  224.           call rotate_gears;
  225.           timermode =1;
  226.           settimer(7);
  227.           }          
  228.  
  229.      else if ((l_spindle !=27) && (r_spindle1 == 25))
  230.           {    // only small in right
  231.           l_spindle_d = 0;
  232.           r_spindle1_d = 0;
  233.           call rotate_gears;
  234.           timermode =1;
  235.           settimer(7);
  236.           }
  237.           
  238.      return;
  239. rotate_gears:
  240.     //This routine starts the gears a spinnin'. After they're goin', continue_gears is used to keep the thing spinning.
  241.     rotate = 1;
  242.     //RotatePivot(screw0, 1, 1);
  243.     RotatePivot(gear_bot, 1, 7);
  244.     print("Rotates!");
  245.     printint(l_spindle_d);
  246.     if (!(l_spindle_d == 0.0))     RotatePivot(l_spindle_i,     1,     l_spindle_d);
  247.     if (!(r_spindle1_d == 0.0))    RotatePivot(r_spindle1_i,     1,     r_spindle1_d);
  248.      playsoundlocal(gearstart, 1, 0, 0);
  249.      turngearsi=playsoundthing(turngears, gear_bot, 1, -1, -1, 0x1);
  250.     return;
  251.     
  252. //continue_gears:
  253. //    printint(getsenderid());
  254. //     if (!(l_spindle_d == 0.0))     RotatePivot(l_spindle_i,     1,     l_spindle_d);
  255. //    if (!(r_spindle1_d == 0.0))    RotatePivot(r_spindle1_i,     1,     r_spindle1_d);
  256. //    if (getsenderid() == 11)         RotatePivot(gear_bot,         1,     3);
  257. //    return;
  258.  
  259. stop_gears:
  260.     //this routine stops all motion of the gears when it's called.       Hopefully. Otherwise, well. Otherwise.     
  261.     stopsound(turngearsi, 0.2);
  262.      playsoundlocal(gearstop, 1, 0, 0);
  263.      stopthing(r_spindle1_i);
  264.      stopthing(l_spindle_i);  
  265.     stopthing(gear_bot);
  266.     rotate = 0;
  267.      return;
  268.  
  269. handle_l:
  270.         // handle_l is used to put gears on the left side of the assembly. handle_r is for the right. Taken handles removing gears.
  271.     //playsoundlocal(gearon, 1, 0, 0);
  272.      print("handle_l:");
  273.     if (l_spindle == 0)        //if the spindle is empty
  274.         {
  275.         //============ Add whatever you gots to the spindle
  276.         if ((dwGetActivateBin() > 24) && (dwGetActivateBin() < 28))    // if it's one of the gears that's being used
  277.             {
  278.             l_spindle = dw