hedgewars/HHHandlers.inc
changeset 5316 191cd6c06203
parent 5313 5e18eaef65d0
child 5319 51d8e4747876
equal deleted inserted replaced
5313:5e18eaef65d0 5316:191cd6c06203
   123 if s then ApplyAmmoChanges(HHGear^.Hedgehog^)
   123 if s then ApplyAmmoChanges(HHGear^.Hedgehog^)
   124 end;
   124 end;
   125 
   125 
   126 procedure HHSetTimer(Gear: PGear);
   126 procedure HHSetTimer(Gear: PGear);
   127 var CurWeapon: PAmmo;
   127 var CurWeapon: PAmmo;
       
   128     color: LongWord;
   128 begin
   129 begin
   129 Gear^.Message:= Gear^.Message and not gmTimer;
   130 Gear^.Message:= Gear^.Message and not gmTimer;
   130 CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
   131 CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
   131 with Gear^.Hedgehog^ do
   132 with Gear^.Hedgehog^ do
   132     if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then
   133     if ((Gear^.Message and gmPrecise) <> 0) and ((CurWeapon^.Propz and ammoprop_SetBounce) <> 0) then
       
   134         begin
       
   135         color:= Gear^.Hedgehog^.Team^.Clan^.Color;
       
   136         case Gear^.MsgParam of
       
   137             1: begin
       
   138                AddCaption(format(trmsg[sidBounce], trmsg[sidBounce1]), color, capgrpAmmostate);
       
   139                Gear^.Hedgehog^.Bounce:= _0_3
       
   140                end;
       
   141             2: begin
       
   142                AddCaption(format(trmsg[sidBounce], trmsg[sidBounce2]), color, capgrpAmmostate);
       
   143                Gear^.Hedgehog^.Bounce:= _0_7
       
   144                end;
       
   145             3: begin
       
   146                AddCaption(format(trmsg[sidBounce], trmsg[sidBounce3]), color, capgrpAmmostate);
       
   147                Gear^.Hedgehog^.Bounce:= _1
       
   148                end;
       
   149             4: begin
       
   150                AddCaption(format(trmsg[sidBounce], trmsg[sidBounce4]), color, capgrpAmmostate);
       
   151                Gear^.Hedgehog^.Bounce:= _2
       
   152                end;
       
   153             5: begin
       
   154                AddCaption(format(trmsg[sidBounce], trmsg[sidBounce5]), color, capgrpAmmostate);
       
   155                Gear^.Hedgehog^.Bounce:= _4
       
   156                end
       
   157             end
       
   158         end
       
   159     else if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then
   133         begin
   160         begin
   134         CurWeapon^.Timer:= 1000 * Gear^.MsgParam;
   161         CurWeapon^.Timer:= 1000 * Gear^.MsgParam;
   135         with CurrentTeam^ do
   162         with CurrentTeam^ do
   136             ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
   163             ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
   137         end;
   164         end;
   138 end;
   165 end;
   139 
   166 
   140 
   167 
   141 procedure Attack(Gear: PGear);
   168 procedure Attack(Gear: PGear);
   142 var xx, yy, newDx, newDy, lx, ly: hwFloat;
   169 var xx, yy, newDx, newDy, lx, ly: hwFloat;
   143     tmpGear: PVisualGear;
   170     speech: PVisualGear;
       
   171     newGear:  PGear;
   144     CurWeapon: PAmmo;
   172     CurWeapon: PAmmo;
   145     altUse: boolean;
   173     altUse: boolean;
   146 begin
   174 begin
   147 bShowFinger:= false;
   175 bShowFinger:= false;
   148 CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
   176 CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
   202             newDy:= yy*Power/cPowerDivisor;
   230             newDy:= yy*Power/cPowerDivisor;
   203             altUse:= false
   231             altUse:= false
   204             end;
   232             end;
   205 
   233 
   206              case CurAmmoType of
   234              case CurAmmoType of
   207                       amGrenade: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGrenade,         0, newDx, newDy, CurWeapon^.Timer);
   235                       amGrenade: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGrenade,         0, newDx, newDy, CurWeapon^.Timer);
   208                       amMolotov: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov,      0, newDx, newDy, 0);
   236                       amMolotov: newGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov,      0, newDx, newDy, 0);
   209                   amClusterBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb,  0, newDx, newDy, CurWeapon^.Timer);
   237                   amClusterBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb,  0, newDx, newDy, CurWeapon^.Timer);
   210                       amGasBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb,      0, newDx, newDy, CurWeapon^.Timer);
   238                       amGasBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb,      0, newDx, newDy, CurWeapon^.Timer);
   211                       amBazooka: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtShell,        0, newDx, newDy, 0);
   239                       amBazooka: newGear:= AddGear(hwRound(lx), hwRound(ly), gtShell,        0, newDx, newDy, 0);
   212                      amSnowball: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball,     0, newDx, newDy, 0);
   240                      amSnowball: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball,     0, newDx, newDy, 0);
   213                           amBee: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBee,          0, newDx, newDy, 0);
   241                           amBee: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBee,          0, newDx, newDy, 0);
   214                       amShotgun: begin
   242                       amShotgun: begin
   215                                  PlaySound(sndShotgunReload);
   243                                  PlaySound(sndShotgunReload);
   216                                  CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtShotgunShot,  0, xx * _0_5, yy * _0_5, 0);
   244                                  newGear:= AddGear(hwRound(lx), hwRound(ly), gtShotgunShot,  0, xx * _0_5, yy * _0_5, 0);
   217                                  end;
   245                                  end;
   218                    amPickHammer: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0);
   246                    amPickHammer: newGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0);
   219                          amSkip: ParseCommand('/skip', true);
   247                          amSkip: ParseCommand('/skip', true);
   220                          amRope: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0);
   248                          amRope: newGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0);
   221                          amMine: if altUse then
   249                          amMine: if altUse then
   222                                     AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000)
   250                                     newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000)
   223                                  else
   251                                  else
   224                                     AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000);
   252                                     newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000);
   225                         amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine,    0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
   253                         amSMine: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine,    0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
   226                        amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
   254                        amDEagle: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
   227                       amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0);
   255                       amSineGun: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0);
   228                     amPortalGun: begin
   256                     amPortalGun: begin
   229                                  AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 
   257                                  newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 
   230                                  // set selected color
   258                                  // set selected color
   231                                  CurWeapon^.Pos);
   259                                  CurWeapon^.Pos);
   232                                  end;
   260                                  end;
   233                   amSniperRifle: begin
   261                   amSniperRifle: begin
   234                                  PlaySound(sndSniperReload);
   262                                  PlaySound(sndSniperReload);
   235                                  CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
   263                                  newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
   236                                  end;
   264                                  end;
   237                      amDynamite: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000);
   265                      amDynamite: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000);
   238                     amFirePunch: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0);
   266                     amFirePunch: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0);
   239                          amWhip: begin
   267                          amWhip: begin
   240                                  CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0);
   268                                  newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0);
   241                                  PlaySound(sndWhipCrack)
   269                                  PlaySound(sndWhipCrack)
   242                                  end;
   270                                  end;
   243                        amHammer: begin
   271                        amHammer: begin
   244                                  CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0);
   272                                  newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0);
   245                                  PlaySound(sndWhack)
   273                                  PlaySound(sndWhack)
   246                                  end;
   274                                  end;
   247                   amBaseballBat: begin
   275                   amBaseballBat: begin
   248                                  CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
   276                                  newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
   249                                  PlaySound(sndBaseballBat) // TODO: Only play if something is hit?
   277                                  PlaySound(sndBaseballBat) // TODO: Only play if something is hit?
   250                                  end;
   278                                  end;
   251                     amParachute: begin
   279                     amParachute: begin
   252                                  CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0);
   280                                  newGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0);
   253                                  PlaySound(sndParachute)
   281                                  PlaySound(sndParachute)
   254                                  end;
   282                                  end;
   255                     // we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear.
   283                     // we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear.
   256                     amAirAttack: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0);
   284                     amAirAttack: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0);
   257                    amMineStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0);
   285                    amMineStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0);
   258                     amBlowTorch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
   286                     amBlowTorch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
   259                        amGirder: CurAmmoGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
   287                        amGirder: newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
   260                      amTeleport: CurAmmoGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0);
   288                      amTeleport: newGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0);
   261                        amSwitch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0);
   289                        amSwitch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0);
   262                        amMortar: begin
   290                        amMortar: begin
   263                                  playSound(sndMortar);
   291                                  playSound(sndMortar);
   264                                  FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
   292                                  newGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
   265                                  end;
   293                                  end;
   266                       amRCPlane: begin
   294                       amRCPlane: begin
   267                                  CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
   295                                  newGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
   268                                  CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil)
   296                                  newGear^.SoundChannel:= LoopSound(sndRCPlane, nil)
   269                                  end;
   297                                  end;
   270                        amKamikaze: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0);
   298                        amKamikaze: newGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0);
   271                          amCake: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0);
   299                          amCake: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0);
   272                     amSeduction: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius * 2), hwRound(ly + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0);
   300                     amSeduction: newGear:= AddGear(hwRound(lx + xx * cHHRadius * 2), hwRound(ly + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0);
   273                    amWatermelon: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon,  0, newDx, newDy, CurWeapon^.Timer);
   301                    amWatermelon: newGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon,  0, newDx, newDy, CurWeapon^.Timer);
   274                   amHellishBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb,    0, newDx, newDy, 0);
   302                   amHellishBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb,    0, newDx, newDy, 0);
   275                        amNapalm: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0);
   303                        amNapalm: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0);
   276                         amDrill: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0);
   304                         amDrill: newGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0);
   277                       amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
   305                       amBallgun: newGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
   278                     amJetpack: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0);
   306                     amJetpack: newGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0);
   279                     amBirdy: begin
   307                     amBirdy: begin
   280                              PlaySound(sndWhistle);
   308                              PlaySound(sndWhistle);
   281                              CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0);
   309                              newGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0);
   282                              end;
   310                              end;
   283                       amLowGravity: begin
   311                       amLowGravity: begin
   284                                     PlaySound(sndLowGravity);
   312                                     PlaySound(sndLowGravity);
   285                                     cGravity:= cMaxWindSpeed;
   313                                     cGravity:= cMaxWindSpeed;
   286                                     cGravityf:= 0.00025
   314                                     cGravityf:= 0.00025
   302                       amPiano: begin
   330                       amPiano: begin
   303                                // Tuck the hedgehog away until the piano attack is completed
   331                                // Tuck the hedgehog away until the piano attack is completed
   304                                Unplaced:= true;
   332                                Unplaced:= true;
   305                                X:= _0;
   333                                X:= _0;
   306                                Y:= _0;
   334                                Y:= _0;
   307                                FollowGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0);
   335                                newGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0);
   308                                PauseMusic
   336                                PauseMusic
   309                                end;
   337                                end;
   310                       amFlamethrower: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower,  0, xx * _0_5, yy * _0_5, 0);
   338                       amFlamethrower: newGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower,  0, xx * _0_5, yy * _0_5, 0);
   311                       amLandGun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtLandGun,  0, xx * _0_5, yy * _0_5, 0);
   339                       amLandGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtLandGun,  0, xx * _0_5, yy * _0_5, 0);
   312                     amResurrector: begin
   340                     amResurrector: begin
   313                         CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly),
   341                         newGear:= AddGear(hwRound(lx), hwRound(ly),
   314                                 gtResurrector, 0, _0, _0, 0);
   342                                 gtResurrector, 0, _0, _0, 0);
   315                         CurAmmoGear^.SoundChannel := LoopSound(sndResurrector);
   343                         newGear^.SoundChannel := LoopSound(sndResurrector);
   316                     end;
   344                     end;
   317                    amDrillStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer);
   345                    amDrillStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer);
   318                    //amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0);
   346                    //amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0);
   319                      amStructure: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, gstWait, SignAs(_0_02, dX), _0, 3000);
   347                      amStructure: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, gstWait, SignAs(_0_02, dX), _0, 3000);
   320                         amTardis: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000);
   348                         amTardis: newGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000);
       
   349                   end;
       
   350              case CurAmmoType of
       
   351                       amGrenade, amMolotov, 
       
   352                   amClusterBomb, amGasBomb, 
       
   353                       amBazooka, amSnowball, 
       
   354                           amBee, amSMine,
       
   355                        amMortar, amWatermelon,
       
   356                   amHellishBomb, amDrill,
       
   357                         amPiano: FollowGear:= newGear;
       
   358 
       
   359                       amShotgun, amPickHammer,
       
   360                          amRope, amDEagle,
       
   361                       amSineGun, amSniperRifle,
       
   362                     amFirePunch, amWhip,
       
   363                        amHammer, amBaseballBat,
       
   364                     amParachute, amBlowTorch,
       
   365                        amGirder, amTeleport,
       
   366                        amSwitch, amRCPlane,
       
   367                      amKamikaze, amCake,
       
   368                     amSeduction, amBallgun,
       
   369                       amJetpack, amBirdy,
       
   370                  amFlamethrower, amLandGun,
       
   371                   amResurrector, amStructure,
       
   372                        amTardis: CurAmmoGear:= newGear;
   321                   end;
   373                   end;
   322 
   374 
   323         // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement
   375         // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement
   324         if altUse then FollowGear:= nil;
   376         if altUse then FollowGear:= nil;
   325 
   377 
   326         uStats.AmmoUsed(CurAmmoType);
   378         uStats.AmmoUsed(CurAmmoType);
   327 
   379 
   328         if not (SpeechText = '') then
   380         if not (SpeechText = '') then
   329             begin
   381             begin
   330             tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble);
   382             speech:= AddVisualGear(0, 0, vgtSpeechBubble);
   331             if tmpGear <> nil then
   383             if speech <> nil then
   332                begin
   384                begin
   333                tmpGear^.Text:= SpeechText;
   385                speech^.Text:= SpeechText;
   334                tmpGear^.Hedgehog:= Gear^.Hedgehog;
   386                speech^.Hedgehog:= Gear^.Hedgehog;
   335                tmpGear^.FrameTicks:= SpeechType;
   387                speech^.FrameTicks:= SpeechType;
   336                end;
   388                end;
   337             SpeechText:= ''
   389             SpeechText:= ''
   338             end;
   390             end;
   339 
   391 
   340         Power:= 0;
   392         Power:= 0;
   341         if (CurAmmoGear <> nil)
   393         if (CurAmmoGear <> nil)
   342            and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
   394            and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
   343            begin
   395            begin
   344            CurAmmoGear^.AmmoType:= CurAmmoType;
       
   345            Message:= Message or gmAttack;
   396            Message:= Message or gmAttack;
   346            CurAmmoGear^.Message:= Message
   397            CurAmmoGear^.Message:= Message
   347            end else begin
   398            end else begin
   348            if not CurrentTeam^.ExtDriven and
   399            if not CurrentTeam^.ExtDriven and
   349              ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a');
   400              ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a');