As an animation effect this should be in uGearsRender. Plus it'll still spark when paused then, which is kinda fun.
--- a/hedgewars/uGearsHandlersMess.pas Sat Jan 23 23:02:03 2016 +0100
+++ b/hedgewars/uGearsHandlersMess.pas Sat Jan 23 17:29:44 2016 -0500
@@ -2008,27 +2008,6 @@
doStepFallingGear(Gear);
AllInactive := false;
- if (GameTicks and $F = 0) and (random(3) = 0) then
- begin
- VGear:= AddVisualGear(hwRound(Gear^.X)+12-(Gear^.Tag shr 1), hwRound(Gear^.Y)-16, vgtStraightShot);
- if VGear <> nil then
- with VGear^ do
- begin
- Tint:= $FFCC00FF;
- Angle:= random(360);
- dx:= 0.0005 * (random(200));
- dy:= 0.0005 * (random(200));
- if random(2) = 0 then
- dx := -dx;
- if random(2) = 0 then
- dy := -dy;
- FrameTicks:= 100+random(300);
- Scale:= 0.1+1/(random(3)+3);
- State:= ord(sprStar)
- end
- end;
-
-
if Gear^.Timer mod 166 = 0 then
inc(Gear^.Tag);
if Gear^.Timer = 1000 then // might need better timing
--- a/hedgewars/uGearsRender.pas Sat Jan 23 23:02:03 2016 +0100
+++ b/hedgewars/uGearsRender.pas Sat Jan 23 17:29:44 2016 -0500
@@ -1268,7 +1268,29 @@
else
DrawSpriteRotatedF(sprExplosivesRoll, x, y + 4, 1, 0, Gear^.DirAngle)
end;
- gtDynamite: DrawSprite(sprDynamite, x - 16, y - 25, Gear^.Tag and 1, Gear^.Tag shr 1);
+ gtDynamite: begin
+ DrawSprite(sprDynamite, x - 16, y - 25, Gear^.Tag and 1, Gear^.Tag shr 1);
+ if (random(3) = 0) then
+ begin
+ vg:= AddVisualGear(hwRound(Gear^.X)+12-(Gear^.Tag shr 1), hwRound(Gear^.Y)-16, vgtStraightShot);
+ if vg <> nil then
+ with vg^ do
+ begin
+ Tint:= $FFCC00FF;
+ Angle:= random(360);
+ dx:= 0.0005 * (random(200));
+ dy:= 0.0005 * (random(200));
+ if random(2) = 0 then
+ dx := -dx;
+ if random(2) = 0 then
+ dy := -dy;
+ FrameTicks:= 100+random(300);
+ Scale:= 0.1+1/(random(3)+3);
+ State:= ord(sprStar)
+ end
+ end;
+
+ end;
gtClusterBomb: DrawSpriteRotated(sprClusterBomb, x, y, 0, Gear^.DirAngle);
gtCluster: DrawSprite(sprClusterParticle, x - 8, y - 8, 0);
gtFlame: if Gear^.Tag and 1 = 0 then