diff -r 893722a2a1f9 -r 881231c1ba46 hedgewars/uGearsHandlersMess.pas --- 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);