home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Messiah / data1.cab / Program_Executable_Files / messiahscripts / Enemies / bird.hxx < prev    next >
Text File  |  1999-11-29  |  3KB  |  178 lines

  1. /*
  2. Da Bird:
  3.  
  4. Gliding with legs up. Not carrying anything
  5.     DaBird\xxx\BrGldLgU.ske
  6.  
  7. Flapping with legs up. Not carrying anything
  8.     DaBird\xxx\BrFlpLgU.ske
  9.  
  10. Gliding with legs Down. Carrying Rat:
  11.     DaBird\xxx\BrGldLgD.ske
  12.  
  13. Flapping with legs Down. Carrying Rat:
  14.     DaBird\xxx\BrFlpLgD.ske
  15.  
  16. Bird swooping and grabbing Rat.  Grab at frame #46:
  17.     DaBird\xxx\BrGrbRat.ske
  18.  
  19. */
  20.  
  21.  
  22. SubRoutine(Sub_FlapSound)
  23. {
  24.     if(VFrame==10)
  25.     {
  26.         sample(SFXBobFlap,-1);
  27.     }
  28. }
  29.  
  30. action(BirdGlide)
  31. {
  32.         file("pc\actors\DaBird\xxx\BrGldLgU.ske",100,on);    //Gliding with legs up. Not carrying anything
  33.         gravity(off);
  34.         trigger(_allDIR);
  35.         AIClass(_AIClassAnimal);
  36.         break(on);
  37.         nrintframes(4);
  38.         connections(BirdFly);
  39. }
  40.  
  41. action(BirdFly)
  42. {
  43.         file("pc\actors\DaBird\xxx\BrFlpLgU.ske",100,on,100,-1,-1,Sub_FlapSound);    //Flapping with legs up. Not carrying anything
  44.         gravity(off);
  45.         trigger(_allDIR);
  46.         AIClass(_AIClassAnimal);
  47.         break(on);
  48.         nrintframes(4);
  49.         connections(BirdGlide);
  50. }
  51.  
  52.  
  53. action(BirdIdle)
  54. {
  55.         file("pc\actors\DaBird\xxx\BrSitHld.ske",100,on);
  56.  
  57.         gravity(off);
  58.  
  59.         trigger(_allDIR);
  60.         AIClass(_AIClassAnimal);
  61.         break(on);
  62.         nrintframes(4);
  63.         connections(BirdIdle);
  64. }
  65.  
  66.  
  67. //    Bird is not player controlled
  68. //
  69. Actor(Bird)
  70. {
  71.         file(BirdHeader); 
  72.  
  73.         rank(_RankSergeantM);
  74.  
  75.         startstate(statenormal);
  76.         startaction(BirdIdle);
  77.  
  78.         float(_declare,RandomBirdSound,0);
  79.  
  80.  
  81.         CallSub(BackGroundTriggerChecks);
  82.  
  83.  
  84.         if(VAIhaspath==0)
  85.         {
  86.             call(PickNewNode);
  87.         }
  88.  
  89. /*
  90.         //random birdy noises
  91.         if(RandomBirdSound<=0)
  92.         {
  93.             float(_rnd2,RandomBirdSound,100);
  94.             float(_add,RandomBirdSound,100);
  95.             if(vrnd<50)
  96.             {
  97.                 sample(SFXrat3,-1);
  98.             }
  99.             else
  100.             {
  101.                 sample(SFXrat6,-1);
  102.             }
  103.         }
  104.         else
  105.         {
  106.             float(_sub,RandomBirdSound,1);
  107.         }
  108. */
  109.  
  110.         Direction(_clr,_DIRaiRemoveFlags);
  111.  
  112.         call(AIPickdest,10);
  113.         if(vtrigger==_DIRtempflag)
  114.         {
  115.             call(PickNewNode);
  116.         }
  117.         CallSub(Sub_AI1WayAlignToPickDestAngle);
  118.  
  119.         PrintI("VAIstate: ",VAIstate);
  120.         PrintI("VPickDestAngleCorr: ",VPickDestAngleCorr);
  121.         PrintI("VPickDestOffsetY: ",VPickDestOffsetY);
  122.  
  123.  
  124.         if(VAIstate!=_AIstateIdle)
  125.         {
  126.             if(VAction!=BirdFly)
  127.             {
  128.                 SpawnAction(BirdFly);
  129.             }
  130.             if(VTrigger==_DIRleft)
  131.             {
  132.                 turn(0,-50,0);
  133.             }
  134.             elseif(VTrigger==_DIRright)
  135.             {
  136.                 turn(0,50,0);
  137.             }
  138.             if(vpickdestanglecorr>512 || vpickdestanglecorr<-512)    //might need bigger numbers
  139.             {
  140.                 move(0,0,-5);
  141.             }
  142.             else
  143.             {
  144.                 move(0,0,-20);
  145.             }
  146.  
  147.             if(VPickDestOffsetY>20)
  148.             {
  149.                 move(0,-16,0);
  150.             }
  151.             elseif(VPickDestOffsetY<-20)
  152.             {
  153.                 move(0,16,0);
  154.             }
  155.         }
  156.  
  157.         if(VAIstate==_AIstateGetWeapon)
  158.         {
  159.             call(PickupActor,10,_AIclassAnimal,_RankSergeantL);
  160.             if(VTrigger==_DIRTempFlag)
  161.             {
  162.                 sample(SFXBirdScream,-1);
  163.             }
  164.         }
  165.         elseif(VAIstate==_AIstateDetachFromPath)
  166.         {
  167.             call(ClrPath);
  168.         }
  169.         elseif(VAIstate==_AIstateDrop)
  170.         {
  171.             call(CheckAttached,_CADropActor);
  172.         }
  173.         elseif(VAIstate==_AIstateSuicide)
  174.         {
  175.             killactor();
  176.         }
  177. }
  178.