hedgewars/uGearsHedgehog.pas
changeset 10354 56bd029245fc
parent 10178 949b51ca18c6
child 10435 4c8fc3aa9432
equal deleted inserted replaced
10352:2af2309207b0 10354:56bd029245fc
   421                begin
   421                begin
   422                newGear^.dX:= newDx / newGear^.Density;
   422                newGear^.dX:= newDx / newGear^.Density;
   423                newGear^.dY:= newDY / newGear^.Density
   423                newGear^.dY:= newDY / newGear^.Density
   424                end;
   424                end;
   425             if (CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amJetpack) and
   425             if (CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amJetpack) and
   426                (Gear^.Message and gmPrecise <> 0) and (hwRound(Y) > cWaterLine) then
   426                (Gear^.Message and gmPrecise <> 0) and CheckCoordInWater(hwRound(X), hwRound(Y)) then
   427                 newGear^.State:= newGear^.State or gstSubmersible;
   427                 newGear^.State:= newGear^.State or gstSubmersible;
   428 
   428 
   429             case CurAmmoType of
   429             case CurAmmoType of
   430                      amGrenade, amMolotov,
   430                      amGrenade, amMolotov,
   431                  amClusterBomb, amGasBomb,
   431                  amClusterBomb, amGasBomb,
   546             OnUsedAmmo(CurrentHedgehog^);
   546             OnUsedAmmo(CurrentHedgehog^);
   547             if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (((GameFlags and gfInfAttack) = 0) or PlacingHogs) then
   547             if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (((GameFlags and gfInfAttack) = 0) or PlacingHogs) then
   548                 begin
   548                 begin
   549                 if TagTurnTimeLeft = 0 then
   549                 if TagTurnTimeLeft = 0 then
   550                     TagTurnTimeLeft:= TurnTimeLeft;
   550                     TagTurnTimeLeft:= TurnTimeLeft;
   551                 if (CurAmmoGear <> nil) and (CurAmmoGear^.State and gstSubmersible <> 0) and (hwRound(CurAmmoGear^.Y) > cWaterLine) then
   551                 if (CurAmmoGear <> nil) and (CurAmmoGear^.State and gstSubmersible <> 0) and CheckCoordInWater(hwRound(CurAmmoGear^.X), hwRound(CurAmmoGear^.Y)) then
   552                      TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 25
   552                      TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 25
   553                 else TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100;
   553                 else TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100;
   554                 end;
   554                 end;
   555             if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (HHGear <> nil) then
   555             if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (HHGear <> nil) then
   556                 HHGear^.State:= HHGear^.State or gstAttacked;
   556                 HHGear^.State:= HHGear^.State or gstAttacked;
   862 procedure doStepHedgehogMoving(Gear: PGear);
   862 procedure doStepHedgehogMoving(Gear: PGear);
   863 var isFalling, isUnderwater: boolean;
   863 var isFalling, isUnderwater: boolean;
   864     land: Word;
   864     land: Word;
   865 begin
   865 begin
   866 land:= 0;
   866 land:= 0;
   867 isUnderwater:= cWaterLine < hwRound(Gear^.Y) + Gear^.Radius;
   867 isUnderwater:= CheckCoordInWater(hwRound(Gear^.X), hwRound(Gear^.Y) + Gear^.Radius);
   868 if Gear^.dX.QWordValue > 8160437862 then
   868 if Gear^.dX.QWordValue > 8160437862 then
   869     Gear^.dX.QWordValue:= 8160437862;
   869     Gear^.dX.QWordValue:= 8160437862;
   870 if Gear^.dY.QWordValue > 8160437862 then
   870 if Gear^.dY.QWordValue > 8160437862 then
   871     Gear^.dY.QWordValue:= 8160437862;
   871     Gear^.dY.QWordValue:= 8160437862;
   872 
   872