hedgewars/uGearsHandlersMess.pas
changeset 13381 caed04706564
parent 13357 030b085b182f
child 13399 3d6aae2ae698
equal deleted inserted replaced
13380:cd55c7f25e04 13381:caed04706564
  1320         dec(Gear^.Health, Gear^.Damage);
  1320         dec(Gear^.Health, Gear^.Damage);
  1321         Gear^.Damage := 0
  1321         Gear^.Damage := 0
  1322     end;
  1322     end;
  1323 end;
  1323 end;
  1324 
  1324 
       
  1325 procedure CheckBulletDrowningHelp(Bullet: PGear);
       
  1326 var dX, dY: hwFloat;
       
  1327 begin
       
  1328     dX := Bullet^.dX;
       
  1329     dY := Bullet^.dY;
       
  1330     CheckGearDrowning(Bullet);
       
  1331     if (dX <> Bullet^.dX) or (dY <> Bullet^.dY) then
       
  1332     begin
       
  1333         SpawnBulletTrail(Bullet, Bullet^.X, Bullet^.Y, Bullet^.FlightTime = 0);
       
  1334         Bullet^.Elasticity := Bullet^.X;
       
  1335         Bullet^.Friction := Bullet^.Y;
       
  1336         Inc(Bullet^.PortalCounter);
       
  1337         Bullet^.FlightTime:= 1;
       
  1338     end;
       
  1339 end;
       
  1340 
  1325 procedure doStepBulletWork(Gear: PGear);
  1341 procedure doStepBulletWork(Gear: PGear);
  1326 var
  1342 var
  1327     i, x, y, iInit: LongWord;
  1343     i, x, y, iInit: LongWord;
  1328     oX, oY, tX, tY, tDx, tDy: hwFloat;
  1344     oX, oY, tX, tY, tDx, tDy: hwFloat;
  1329     VGear: PVisualGear;
  1345     VGear: PVisualGear;
  1376             begin
  1392             begin
  1377             Gear^.Tag := 1;
  1393             Gear^.Tag := 1;
  1378             dec(Gear^.Damage);
  1394             dec(Gear^.Damage);
  1379             Gear^.X := Gear^.X - Gear^.dX;
  1395             Gear^.X := Gear^.X - Gear^.dX;
  1380             Gear^.Y := Gear^.Y - Gear^.dY;
  1396             Gear^.Y := Gear^.Y - Gear^.dY;
  1381             CheckGearDrowning(Gear);
  1397             CheckBulletDrowningHelp(Gear);
  1382             break;
  1398             break;
  1383             end
  1399             end
  1384         else if (not isDigging) then
  1400         else if (not isDigging) then
  1385             Gear^.Tag := 0;
  1401             Gear^.Tag := 0;
  1386 
  1402 
  1393             iInit:= i;
  1409             iInit:= i;
  1394             oX:= Gear^.X;
  1410             oX:= Gear^.X;
  1395             oY:= Gear^.Y;
  1411             oY:= Gear^.Y;
  1396             end;
  1412             end;
  1397 
  1413 
  1398         CheckGearDrowning(Gear);
  1414         CheckBulletDrowningHelp(Gear);
  1399         case Gear^.Kind of
  1415         case Gear^.Kind of
  1400             gtMinigunBullet: isDead:= isDigging or ((Gear^.State and gstDrowning) <> 0);
  1416             gtMinigunBullet: isDead:= isDigging or ((Gear^.State and gstDrowning) <> 0);
  1401             gtDEagleShot, gtSniperRifleShot: isDead:= (Gear^.Damage >= Gear^.Health) or ((Gear^.State and gstDrowning) <> 0)
  1417             gtDEagleShot, gtSniperRifleShot: isDead:= (Gear^.Damage >= Gear^.Health) or ((Gear^.State and gstDrowning) <> 0)
  1402         end;
  1418         end;
  1403         dec(i)
  1419         dec(i)