hedgewars/GSHandlers.inc
changeset 3593 ae50f63e4fa9
parent 3591 c447d5218f6f
child 3594 aeca3d8f1b29
equal deleted inserted replaced
3592:0bcad5c38c9e 3593:ae50f63e4fa9
   146             for i:= max(maxDrops div 3, min(32, Random(maxDrops))) downto 0 do
   146             for i:= max(maxDrops div 3, min(32, Random(maxDrops))) downto 0 do
   147             begin
   147             begin
   148                 particle := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), cWaterLine, vgtDroplet);
   148                 particle := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), cWaterLine, vgtDroplet);
   149                 if particle <> nil then
   149                 if particle <> nil then
   150                 begin
   150                 begin
   151                     particle^.dX := particle^.dX - (Gear^.dX / 10);
   151                     particle^.dX := particle^.dX - (Gear^.dX.QWordValue / 42949672960);
   152                     particle^.dY := particle^.dY - (Gear^.dY / 5)
   152                     particle^.dY := particle^.dY - (Gear^.dY.QWordValue / 21474836480)
   153                 end
   153                 end
   154             end
   154             end
   155         end;
   155         end;
   156     end
   156     end
   157     else
   157     else
   179 
   179 
   180         for i:= min(12, (3 + dmg div 10)) downto 0 do
   180         for i:= min(12, (3 + dmg div 10)) downto 0 do
   181         begin
   181         begin
   182             particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12,
   182             particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12,
   183                         vgtDust);
   183                         vgtDust);
   184             if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5);
   184             if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480);
   185         end;
   185         end;
   186 
   186 
   187         if (Gear^.Invulnerable) then exit;
   187         if (Gear^.Invulnerable) then exit;
   188 
   188 
   189         if _0_6 < Gear^.dY then
   189         if _0_6 < Gear^.dY then
   634         begin
   634         begin
   635             PlaySound(sndShotgunFire);
   635             PlaySound(sndShotgunFire);
   636             shell := AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
   636             shell := AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
   637             if shell <> nil then
   637             if shell <> nil then
   638             begin
   638             begin
   639                 shell^.dX := gear^.dX / -4;
   639                 shell^.dX := gear^.dX.QWordValue / -17179869184;
   640                 shell^.dY := gear^.dY / -4;
   640                 shell^.dY := gear^.dY.QWordValue / -17179869184;
   641                 shell^.Frame := 0
   641                 shell^.Frame := 0
   642             end;
   642             end;
   643             Gear^.State := Gear^.State or gstAnimation
   643             Gear^.State := Gear^.State or gstAnimation
   644         end;
   644         end;
   645         exit
   645         exit
   754     if (HHGear^.Message and gm_Attack) <> 0 then
   754     if (HHGear^.Message and gm_Attack) <> 0 then
   755     begin
   755     begin
   756         shell := AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
   756         shell := AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
   757         if shell <> nil then
   757         if shell <> nil then
   758         begin
   758         begin
   759             shell^.dX := gear^.dX / -2;
   759             shell^.dX := gear^.dX.QWordValue / -8589934592;
   760             shell^.dY := gear^.dY / -2;
   760             shell^.dY := gear^.dY.QWordValue / -8589934592;
   761             shell^.Frame := 1
   761             shell^.Frame := 1
   762         end;
   762         end;
   763         Gear^.State := Gear^.State or gstAnimation;
   763         Gear^.State := Gear^.State or gstAnimation;
   764         Gear^.dX := SignAs(AngleSin(HHGear^.Angle), HHGear^.dX) * _0_5;
   764         Gear^.dX := SignAs(AngleSin(HHGear^.Angle), HHGear^.dX) * _0_5;
   765         Gear^.dY := -AngleCos(HHGear^.Angle) * _0_5;
   765         Gear^.dY := -AngleCos(HHGear^.Angle) * _0_5;
  1479             inc(Gear^.Damage, hwRound(Gear^.dY * _70));
  1479             inc(Gear^.Damage, hwRound(Gear^.dY * _70));
  1480             for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do
  1480             for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do
  1481             begin
  1481             begin
  1482                 particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12,
  1482                 particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12,
  1483                             vgtDust);
  1483                             vgtDust);
  1484                 if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5)
  1484                 if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480)
  1485             end
  1485             end
  1486         end
  1486         end
  1487         else if not Gear^.dX.isNegative and (Gear^.dX > _0_2) and TestCollisionXwithGear(Gear, 1)
  1487         else if not Gear^.dX.isNegative and (Gear^.dX > _0_2) and TestCollisionXwithGear(Gear, 1)
  1488                  then
  1488                  then
  1489                  inc(Gear^.Damage, hwRound(Gear^.dX * _70))
  1489                  inc(Gear^.Damage, hwRound(Gear^.dX * _70))
  3183 
  3183 
  3184         for i:= 10 downto 0 do
  3184         for i:= 10 downto 0 do
  3185         begin
  3185         begin
  3186             vg := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), hwRound(Gear^.Y) - 3 + Random(6),
  3186             vg := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), hwRound(Gear^.Y) - 3 + Random(6),
  3187                   vgtDust);
  3187                   vgtDust);
  3188             if vg <> nil then vg^.dX := vg^.dX + (Gear^.dX / 5);
  3188             if vg <> nil then vg^.dX := vg^.dX + (Gear^.dX.QWordValue / 21474836480);
  3189         end;
  3189         end;
  3190 
  3190 
  3191         DeleteGear(Gear);
  3191         DeleteGear(Gear);
  3192         exit
  3192         exit
  3193     end;
  3193     end;