hedgewars/uGearsHandlersMess.pas
changeset 11550 881231c1ba46
parent 11540 1ae92bbb5a6d
child 11551 aefc770feb65
--- a/hedgewars/uGearsHandlersMess.pas	Mon Feb 15 23:37:48 2016 +0100
+++ b/hedgewars/uGearsHandlersMess.pas	Tue Feb 16 03:19:23 2016 +0100
@@ -1337,6 +1337,11 @@
 
 procedure doStepDEagleShot(Gear: PGear);
 begin
+    Gear^.Data:= nil;
+    // remember who fired this
+    if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) then
+        Gear^.Data:= Pointer(Gear^.Hedgehog^.Gear);
+
     PlaySound(sndGun);
     // add 3 initial steps to avoid problem with ammoshove related to calculation of radius + 1 radius as gear widths, and also just plain old weird angles
     Gear^.X := Gear^.X + Gear^.dX * 3;
@@ -1349,6 +1354,7 @@
     HHGear: PGear;
     shell: PVisualGear;
 begin
+
     cArtillery := true;
     HHGear := Gear^.Hedgehog^.Gear;
 
@@ -1358,6 +1364,9 @@
         exit
         end;
 
+    // remember who fired this
+    Gear^.Data:= Pointer(Gear^.Hedgehog^.Gear);
+
     HHGear^.State := HHGear^.State or gstNotKickable;
     HedgehogChAngle(HHGear);
     if not cLaserSighting then
@@ -4357,9 +4366,13 @@
                 continue;
             end;
 
-        // draw bullet trail
         if isbullet then
+            begin
+            // draw bullet trail
             spawnBulletTrail(iterator);
+            // the bullet can now hurt the hog that fired it
+            iterator^.Data:= nil;
+            end;
 
         // calc gear offset in portal vector direction
         ox := (iterator^.X - Gear^.X);