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

  1.  
  2.         float(_declare,ShootDelayCounter,0)
  3.         float(_declare,JumpIdleCounter,0);
  4.         float(_declare,JumpPressCounter,0);
  5.         float(_declare,DownwardPull,0);
  6.         float(_declare,TurnSpeed,0);
  7.         float(_declare,ColAngleCorrectNeeded,0);
  8.         float(_declare,ForceRunFrames,0);
  9.         float(_declare,AirSpeedForward,0);
  10.         float(_declare,AirSpeedSideways,0);
  11.         float(_declare,FallStartAltitude,0);
  12.         float(_declare,SmokeCount,1000);
  13.         float(_declare,FireCount,0);
  14.         float(_declare,ActionOK,1);
  15.         float(_declare,KeyPressCounter,0);
  16.         float(_declare,DropDelay,100);
  17.         float(_declare,ActorDeathType_f,0);
  18.  
  19.         if(VHealth<=0)
  20.         {
  21.             Direction(_clr,_DIRalive);
  22.         }
  23.  
  24.         if(VActiveTime==0)
  25.         {
  26.             vector(_settoactorpos,TmpVector);
  27.             vector(_copyy,TmpVector,FallStartAltitude);
  28.         }
  29.  
  30.         if(VTrigger==_DIRalive && VActorFlag==_AFLAGSqueeze)
  31.         {
  32.             state(_set,StateDead);
  33.             spawnaction(CopCrush);
  34.         }
  35.  
  36.         if(VActorFlag==_AFLAGnorotation)
  37.         {
  38.             print("Removing direction flags",TurnSpeed);
  39.             Direction(_clr,_DIRleft|_DIRright);
  40.             call(ClrAnalogValues);            //for sub_turncharacter
  41.             float(_set,TurnSpeed,0);
  42.         }
  43.  
  44.         float(_declare,PlayOnce,0);
  45.         if(VAICon==0 && vstate==statedead && PlayOnce==0)
  46.         {
  47.             message("YOU CALL YOURSELF THE MESSIAH ?",400,10);
  48.             callsub(Sub_RandomWalkieKillSFX);
  49.             float(_set,PlayOnce,1);
  50.             call(ChangeSniperMode,0,0);
  51.         }
  52.         elseif(vstate!=statedead)
  53.         {
  54.             float(_set,PlayOnce,0);
  55.         }
  56.         if(VActiveTime==0)
  57.         {
  58.             vector(_settoactorpos,TmpVector);
  59.             vector(_copyy,TmpVector,FallStartAltitude);
  60.         }
  61.  
  62.         if(VState==StateDead)
  63.         {
  64.             direction(_clr,_DIRcombatmode);
  65.             Direction(_clr,_DIRaiRemoveFlags);
  66.         }
  67.         elseif(vAICon!=0 && aitoggle==0)
  68.         {
  69. // **************************************************************************
  70. // **************************************************************************
  71. // **************************************************************************
  72.  
  73.                 //AIPickDest(100,1);
  74.  
  75.                 Direction(_clr,_DIRaiRemoveFlags)
  76.  
  77.  
  78.                 if(vtrigger==_DIRvercol && vstate!=StateJump)
  79.                 {
  80.                     Collision(0,-20,0, 0,-20,-130);
  81.                     if(vcolflag==_DIRvercol)
  82.                     {
  83.                         Collision(0,60,0, 0,60,-130);
  84.                         if(vcolflag!=_DIRvercol)
  85.                         {
  86.                             Direction(_set,_DIRjump);
  87.                         }
  88.                     }
  89.                 }
  90.                 elseif(vstate==StateJump)
  91.                 {
  92.                     Direction(_set,_DIRjump);
  93.                 }
  94.  
  95.                 if(VTrigger|=_DIRMoveBits)
  96.                 {
  97.                     Direction(_set,_DIRMove)
  98.                 }
  99.  
  100. // **************************************************************************
  101. // **************************************************************************
  102. // **************************************************************************
  103.  
  104.         }
  105.         elseif(VAIcon==0)
  106.         {
  107. //Player control
  108.             call(AIupdateAIvars);            //to update aicounters like TimeNotTarget
  109.             call(AIcheckfortarget,10);        //for LineOfSight reasons etc. this is called for player character also
  110.  
  111.             if(vtrigger==_DIRpossesion)
  112.             {
  113.                 float(_set,PlayerHeadBone,4);
  114.                 callsub(Sub_InitPossesion,SubGirlPossesed);
  115.                 //Possesion callback effect init here
  116.                 call(MatrixCallback,_SXEXPActorMatrixBulb,0.1,120);
  117.             }
  118.             elseif(vtrigger==_DIRdepossesion)
  119.             {
  120.                 callsub(Sub_InitDepossesion,SubGirlDepossesed)
  121.                 //DePossesion callback effect init here
  122.                 call(MatrixCallback,_SXEXPActorMatrixBulb,0.1,120);
  123.             }
  124.  
  125.             if(VAItimenottarget>30)
  126.             {
  127.                 call(AIreinstateactoraiclass);
  128.             }
  129.  
  130.             callsub(Sub_CombatKeyHandler,KeyPressCounter,10);
  131.         }
  132.  
  133.  
  134.  
  135.         if(vstate!=StateDead)
  136.         {
  137.             callSub(Sub_ActionKeyHandler,ActionOK);
  138.             callsub(BackGroundTriggerChecks);
  139.  
  140.             if (vtrigger!=_DIRhavegun)
  141.             {
  142.                 //callSub(Sub_CheckRemainingActions,SubGirlPressGun,22);
  143.             }
  144.  
  145.             callsub(Sub_Headtrack);                    //Track head against object
  146.  
  147.             if(VState==StateThrown)
  148.             {
  149.                 CallSub(Sub_CheckThrownFallDamage,FallStartAltitude,Prost1MaxFall);
  150.                 if(VState==StateNormal)
  151.                 {
  152.                     callsub(Sub_TurnCharacter,TurnSpeed,SubGirlMaxTurnSpeedWounded,SubGirlTurnAccWounded);
  153.                 }
  154.             }
  155.             elseif(VState!=StateElectricShock)
  156.             {
  157.                 CallSub(Sub_CheckFallDamage,SubGirlTouchDown,FallStartAltitude,SubGirlMaxFall,DamageSubGirlFall,SubGirlFallDead,0,SubGirlFallInplace);
  158.             }
  159.         }
  160.         callsub(Sub_CheckHit,SubGirlWoundLight,SubGirlWoundLight,SubGirlWoundLightNoBreak,FireCount,SubGirlPoleDead,SubGirlWoundLight,0,0,0,0);
  161.  
  162.         if(vstate==StateOnFire)    //These first if-statements are just for effects
  163.         {
  164.             if(vrnd<20)
  165.             {
  166.                 CheckActorCollision(0,emptyVector,96,0,_COLfire,DamageFlameThrower);
  167.             }
  168.  
  169.             if(FireCount==0)
  170.             {
  171.                 sample(SFXActorOnFire1,-1);
  172.                 samplestop(SFXcough7);
  173.  
  174.                 float(_rnd2,ActorFireType,70);
  175.                 float(_set,ActorDeathType_f,1);
  176.             }
  177.             callsub(Sub_ActorFireEffect,SmokeCount,FireCount,255)
  178.         }
  179.         elseif(vstate==StateBlind)
  180.         {
  181.             if(SmokeCount==0)
  182.             {
  183.                 float(_set,FireCount,0);
  184.                 samplestop(SFXActorOnFire1);
  185.                 sample(SFXcough7,-1);
  186.             }
  187.             callsub(Sub_ActorSmokeEffect,SmokeCount,255)
  188.  
  189.             if(vstate!=StateDead && ActorDeathType_f==1)
  190.             {
  191.                 //actor will die as he's been roasted
  192.                 call(SubtractHealth,0,DamageAfterFire);
  193.             }
  194.         }
  195.  
  196.  
  197.         if(VAction!=SubGirlBurningRunInCircle&&VAction!=SubGirlBurningRollOnFloor&&VAction!=SubGirlSlowGetUpFace)    //It would look bad if he died while in one of these animations
  198.         {
  199. //The last number here is used if they have to fall on their knees when energy is low
  200.             callsub(Sub_CheckDeadOrDying,SubGirlPoleDead,SubGirlCrawlDead,SubGirlStandDead,SubGirlCrawlSpread,500,SubGirlFallToCrawl,SubGirlStandDead,SubGirlStandDead);    //0=health when entering crawling-mode
  201.         }
  202.  
  203.         if(vstate==StateExecuteAnim)
  204.         {
  205.             elseif(vaction==SubGirlPossesed)
  206.             {
  207.                 callsub(Sub_TurnCharacter,TurnSpeed,SubGirlMaxTurnSpeed,SubGirlTurnAcc);
  208.             }
  209.             callsub(Sub_CheckExecuteAnimEnd)
  210.         }
  211.         elseif(vstate==StateDead||vstate==StateCrawling||vstate==StateBlind||vstate==StateOnFire||vstate==StateSteamed||vstate==StateHarpooned||vstate==StateElectricShock)
  212.         {
  213.             direction(_clr,_DIRcombatmode);
  214.  
  215.             if(VState!=StateDead)
  216.             {
  217.                 if(vstate==StateHarpooned)    //Here are the if-statements that control the actions when you are badly wounded
  218.                 {
  219.                     callsub(Sub_Harpooned,SubGirlOnPole,SubGirlOnPole,SubGirlOnPole,SubGirlOnPole,SubGirlOnPole,SubGirlOnPole,0,0);
  220.                 }
  221.                 else
  222.                 {
  223.                     callsub(Sub_TurnCharacter,TurnSpeed,SubGirlMaxTurnSpeedWounded,SubGirlTurnAccWounded);
  224.                     if(vstate==StateCrawling)
  225.                     {
  226. //    is this where he has to roll over and hug his knees, and scream if you force him to move?
  227. //
  228.                         callsub(Sub_Crawling,SubGirlCrawlSpread,SubGirlFallToCrawl)
  229.                     }
  230.                     elseif(vstate==StateOnFire||vstate==StateSteamed||vstate==StateBlind)
  231.                     {
  232.                         float(_declare,SteamScreamCounter,0);
  233.                         callsub(Sub_BurnedSteamedBlind,SubGirlBurningRollOnFloor,SubGirlBurnedIdle,SubGirlGettingBurned,SubGirlBlindForward,SubGirlBlindBackwards,SubGirlBurningRunInCircle,SubGirlSlowGetUpFace,SteamScreamCounter)
  234.                     }
  235.                     elseif(vstate==StateElectricShock)
  236.                     {
  237.                         callsub(Sub_ElectricShock,SubGirlelectricshock0,SubGirlelectricshock1);
  238.  
  239.                         if(vaction==SubGirlelectricshock0)
  240.                         {
  241.                             if(vframe==1)
  242.                             {
  243.                                 sample(SFXElectricShock1,-1);
  244.                                 call(SubtractHealth,0,DamageElectric);
  245.                             }
  246.                         }
  247.                         elseif(vaction==SubGirlelectricshock1)
  248.                         {
  249.                             if(vendofanim!=0)
  250.                             {
  251.                                 sample(SFXElectricShock2,-1);
  252.  
  253.                                 call(PlaneTriggerQuadrant,TmpFloat,1);
  254.                                 if(TmpFloat==0)
  255.                                 {
  256.                                     spawnaction(SubGirlThrownForward);
  257.                                     move(0,0,-150);
  258.                                 }
  259.                                 elseif(TmpFloat==1)
  260.                                 {
  261.                                     spawnaction(SubGirlThrownLeft);
  262.                                     move(150,0,0);
  263.                                 }
  264.                                 elseif(TmpFloat==2)
  265.                                 {
  266.                                     spawnaction(SubGirlThrownBack);
  267.                                     move(0,0,150);
  268.                                 }
  269.                                 elseif(TmpFloat==3)
  270.                                 {
  271.                                     spawnaction(SubGirlThrownRight);
  272.                                     move(-150,0,0);
  273.                                 }
  274.                                 state(_change,StateElectricShock,StateThrown);
  275.                             }
  276.                         }
  277.                     }
  278.                 }
  279.             }
  280.         }
  281.         else
  282.         {
  283.             CallSub(Sub_CheckClimbUp,SubGirlClimbUp,60,ColAngleCorrectNeeded,20,-10)
  284.  
  285.             if(vstate==StateNormal)
  286.             {
  287.                 callsub(sub_AlignToWallAndCheckRunUpStairs,SubGirlRunUpStairs,SubGirlIdle,SubGirlIdleHitWall,ColAngleCorrectNeeded,SubGirlIdleHitWallFront,SubGirlHitWallSpread,-0.95,SubGirlSpread,SubGirlSpread,ForceRunFrames)
  288.                 callsub(Sub_CheckForIdleLongTime,SubGirlIdle,SubGirlIdleLongTime);
  289.  
  290.                 if(VTrigger==_DIRGrenade&&VInventoryLeft>0)
  291.                 {
  292.                     state(_or,StateExecuteAnim)
  293.                     if(VState==StateCrouching)
  294.                     {
  295.                         spawnaction(SubGirlCrouchGrenade);
  296.                     }
  297.                     else
  298.                     {
  299.                         spawnaction(SubGirlThrowGrenade);
  300.                     }
  301.                 }
  302.  
  303.                 CallSub(Sub_CheckCrouching,SubGirlCrouchDown,SubGirlCrouchUp);
  304.  
  305.                 CallSub(Sub_CheckJumpFallDown,AIAbility,SubGirlRunUpStairs,JumpPressCounter,DownwardPull,SubGirlJumpSpeed,SubGirlJump,AirSpeedForward,AirSpeedSideways,SubGirlFall,SubGirlAirSpeed)
  306.                 callsub(Sub_TurnCharacter,TurnSpeed,SubGirlMaxTurnSpeed,SubGirlTurnAcc);
  307.             }
  308.             elseif(vstate==StateFalling||vstate==StateJump)
  309.             {
  310.                 if(vstate==StateJump)
  311.                 {
  312.                     CallSub(Sub_Jump,JumpPressCounter,DownwardPull,SubGirlMinHoldJumpAction,SubGirlJumpGravity,2,0)
  313.                 }
  314.                 callsub(Sub_TurnCharacter,TurnSpeed,SubGirlMaxTurnSpeedAir,SubGirlTurnAccAir);
  315.                 callsub(Sub_MoveInAir,AirSpeedSideways,AirSpeedForward,SubGirlAirSpeed,SubGirlAirBulb);
  316.             }
  317.         }
  318.  
  319.         //callsub(FireWeaponsAndCheckAttached,ShootDelayCounter,2,SubGirlHeavyRecoil,SubGirlLightRecoil,SubGirlCrouchHeavyRecoil,SubGirlCrouchLightRecoil);
  320.  
  321.         if(vaicon!=0 && aitoggle==0)
  322.         {
  323.             call(AIupdateAIvars);
  324.             if(VAIleader!=0)            //in charge
  325.             {
  326.                 print("Im the leader....");
  327.                 call(AIcheckfortarget);
  328.  
  329.                 if(VAIgroupstate!=_AIstateidle && VAIgroupstate!=_AIstatesearch)            //search should be widened to account for all attackstates
  330.                 {
  331.                     printi("In attack....",VAInotargettime);
  332.                     if(VAInotargettime<AINOTARGETTHRESHOLD)
  333.                     {
  334.                         print("Persuing enemy...");
  335.                         call(AIasktojoin,_AIstateAttack);            //to make sure newcomers are asked to join for battle
  336.                         if(VAItargetfound!=_AIenemy && VAInotargettime<AINOTARGETSEARCHTHRESHOLD)
  337.                         {
  338.                             call(AIorder,_AIstateSearch);
  339.                             //sample(SFXOrderSearch,-1);
  340.                         }
  341.     /*                    elseif(VAIgrouphealth<50)
  342.                         {
  343.                             call(AIorder,_AIstateretreat);
  344.                         }
  345.                         elseif(VAIpowerrating>80)        //0=no chance 50=neutral 100=superior
  346.                         {
  347.                             call(AIorder,_AIstatesurround);
  348.                         }
  349.                         elseif(VAIpowerrating<30)        //0=no chance 50=neutral 100=superior
  350.                         {
  351.                             call(AIorder,_AIstatespreadout);
  352.                         }
  353.                         elseif(VAIpowerrating<15)
  354.                         {
  355.                             call(AIorder,_AIstatehide);
  356.                         }
  357.                         elseif(VAIgroupleft<70 || VAItimeincurrentorder>AIINORDERREGROUPTHRESHOLD)            //percentage left of original group
  358.                         {
  359.                             call(AIorder,_AIstateregroup);
  360.                         }
  361.                         else
  362.                         {
  363.                             call(AIorder,_AIstateattack);
  364.                         }
  365.     */
  366.                         if(Vaistate==_AIstateattack)
  367.                         {
  368.                             print("Im leading an attack");
  369.                         }
  370.                         call(AIgrouppickdest);
  371.                     }
  372.                 }
  373.                 else
  374.                 {
  375.                     print("No enemy in sight....");
  376.                     if(VAItargetfound==_AIenemy)        //just saw enemy
  377.                     {
  378.             //            print("I saw you. Changing to attack mode");
  379.                         call(AIselecttarget,_AIenemy);
  380.                         call(AIorder,_AIstateAttack);
  381.                         sample(SFXOrderGetHim,-1);
  382.                     }
  383.                     elseif(VAIlasttargetfound|=_AIenemy)            //continue searching
  384.                     {
  385.             //            print("But there used to be....");
  386.                         if(VAInotargettime>AISTOPIFNOTARGETTHRESHOLD)        //check for release group
  387.                         {
  388.                             call(AIorder,_AIstateAtEase);
  389.                             call(AIreleasegroup);
  390.                             sample(SFXSSGirlAhBaNine,-1);
  391.                         }
  392.                         else
  393.                         {
  394.             //                print("So search for him....");
  395.                             if(vaistate!=_AIstatesearch)
  396.                             {
  397.                                 call(AIorder,_AIstateSearch);
  398.                                 //sample(SFXOrderSearch,-1);
  399.                             }
  400.                         }
  401.                     }
  402.                     else                                    //nothing in sight. no present search
  403.                     {
  404.                         //idle formations here
  405.             //            print("Leader in idle formation");
  406.                         call(AIasktojoin,_AIstateIdle);            //join the idle formation
  407.                         if(VAInringroup<5)
  408.                         {
  409.                             //special formation here
  410.                         }
  411.  
  412.                     }
  413.                 }
  414.             }
  415.             elseif(VAIingroup!=0)        //included in group
  416.             {
  417.                 print("Im assigned to a group....");
  418.  
  419.                 if(VAIstatechanged!=0)
  420.                 {
  421.                     sample(SFXOrderYesSir1,-1);
  422.                 }
  423.  
  424.                 if(VAIaskedtojoin!=0)
  425.                 {
  426.                     printi("And im asked to leave",VAIchangetonewgroup);
  427.                     if(VAIchangetonewgroup!=0)
  428.                     {
  429.                         break();
  430.                         call(AIbreakfromgroup);
  431.                         call(AIjoinnewgroup);
  432.                     }
  433.                 }
  434.                 call(AIPickdest);
  435.  
  436.  
  437.             //    if(Vaistate==_AIattack)
  438.             //    {
  439.             //        print("And in the middle of an attack........");
  440.             //    }
  441.  
  442.     /*            if(VAIrebel!=0)            //want out? (friendly fire, health, members dies, ammunition etc)
  443.                 {
  444.                     break();
  445.                     call(AIbreakfromgroup);
  446.                     if(VAItargetfound==_AIenemy)            //in the middle of battle?
  447.                     {
  448.                         if(VAIhealth<10)
  449.                         {
  450.                             call(AIorder,_AIflee);
  451.                             call(AIasktojoin,_AIRetreat);
  452.                         }
  453.                         elseif(VAIhealth>90)
  454.                         {
  455.                             call(AIorder,_AIAttack);
  456.                             call(AIasktojoin,_AIAttack);
  457.                         }
  458.                         else
  459.                         {
  460.                             call(AIorder,_AIHide);
  461.                             call(AIasktojoin,_AIRetreat);
  462.                         }
  463.                     }
  464.                     else
  465.                     {
  466.                         call(AIorder,_AIIdle);
  467.                     }
  468.                 }
  469.                 elseif(VAIaskedtojoin!=0)
  470.                 {
  471.                     if(VAIchangetonewgroup!=0)
  472.                     {
  473.                         break();
  474.                         call(AIbreakfromgroup);
  475.                         call(AIjoinnewgroup);
  476.                     }
  477.                 }
  478.                 else
  479.                 {
  480.                     call(AIpickdest,100,1);        //execute order
  481.                     if(VAIstate==_AISearch)
  482.                     {
  483.                         call(AIcheckfortarget);
  484.                         if(VAItargetfound==_AIenemy)
  485.                         {
  486.                             call(AIorder,_AIattention);
  487.                         }
  488.                     }
  489.                 }
  490.     */
  491.             }
  492.             else
  493.             {
  494.                 call(AIcheckfortarget);
  495.  
  496.                 print("Im by my self");
  497.  
  498.                 if(VAIaskedtojoin!=0)
  499.                 {
  500.                     print("I was asked to join");
  501.                     if(VAIchangetonewgroup!=0)
  502.                     {
  503.                         print("I joined");
  504.                         call(AIjoinnewgroup);
  505.                         sample(SFXOrderYesSir1,-1);
  506.                     }
  507.                     else
  508.                     {
  509.                         printi("LeaderAspiration: ",VAIleaderaspirations);
  510.                         if(VAIleaderaspirations!=0)
  511.                         {
  512.                             printi("Ask to join new group");
  513.                             call(AIasktojoin,_AIstateAttack);
  514.                             call(AIorder,_AIstateattack);
  515.                             sample(SFXOrderGetHim,-1);
  516.                         }
  517.                     }
  518.                 }
  519.                 else
  520.                 {
  521.                     print("And nobody asked me to join");
  522.                 }
  523.  
  524.                 if(vaistate==_aistateattack)
  525.                 {
  526.  
  527.                     if(VAItargetfound!=0 && VAItargetfound==_AIenemy)
  528.                     {
  529.                         print("InAttack by myself...");
  530.                         call(AIselecttarget,_AIenemy);
  531.                         call(AIPickdest);                //in no group. goes after the guy by himself
  532.                     }
  533.                     else
  534.                     {
  535.                         call(AIorder,_AIstateSearch);
  536.                         //sample(SFXOrderSearch,-1);
  537.                     }
  538.                 }
  539.                 elseif(vaistate==_AIstateSearch)
  540.                 {
  541.                     print("Im searching by myself..");
  542.                     turn(0,10,0);
  543.                     if(VAItimeincurrentorder>AINOTARGETTHRESHOLD)
  544.                     {
  545.                         call(AIorder,_AIstateidle);
  546.                     }
  547.                 }
  548.                 elseif(VAItargetfound!=0)
  549.                 {
  550.                     print("Target found");
  551.                     if(VAItargetfound==_AIenemy)
  552.                     {
  553.                         print("Enemy found...............");
  554.  
  555.                         call(AIorder,_AIstateattack);
  556.                         print("Going into attackmode...");
  557.  
  558.     /*                    if(vaistate!=_aiattention)
  559.                         {
  560.                             call(AIorder,_AIattention);
  561.                             sample(SFXOrderOverThere1,-1);
  562.                         }
  563.     */
  564.                         if(VAIleaderaspirations!=0)
  565.                         {
  566.                             call(AIasktojoin,_AIstateAttack);
  567.                             call(AIorder,_AIstateattack);
  568.                             sample(SFXOrderGetHim,-1);
  569.                         }
  570.  
  571.                     }
  572.                     elseif(VAITargetFound==_AIundetermined)
  573.                     {
  574.                         call(AIorder,_AIstateSearch);
  575.                         //sample(SFXOrderSearch,-1);
  576.                     }
  577.                     else        //friend seen
  578.                     {
  579.                         call(AIasktojoin,_AIstateIdle);
  580.                         print("Friend found.Join me.........");
  581.                     }
  582.                 }
  583.                 else
  584.                 {
  585.                     call(AIorder,_AIstateIdle);
  586.                     //patrol
  587.                     //relax
  588.                     //sleep
  589.                 }
  590.             }
  591.  
  592.             print("..........................");
  593.         }
  594.  
  595.  
  596.  
  597.         if(VAICon==0 && vtrigger==_DIRleft||vtrigger==_DIRright||vtrigger==_DIRforward||vtrigger==_DIRbackward||vtrigger==_DIRsideleft||vtrigger==_DIRsideright)
  598.         {
  599.             if(VSpecialFlag==_sFLAGTrodInGoo)
  600.             {
  601.                 if(vrnd<50)
  602.                 {
  603.                     spawnparticle(fx_footbloodspray,18,emptyvector,emptyvector,-1);
  604.                 }
  605.                 else
  606.                 {
  607.                     spawnparticle(fx_footbloodspray,22,emptyvector,emptyvector,-1);
  608.                 }
  609.                 sample(SFXBlood2,-1);
  610.             }
  611.             else
  612.             {
  613.                 callsub(Sub_CheckFootSteps,_sFLAGLeftFoot);
  614.                 callsub(Sub_CheckFootSteps,_sFLAGRightFoot);
  615.             }
  616.         }
  617.  
  618.  
  619.