diff -r 5f7480c2a08d -r 553680d78546 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Sun Nov 06 13:53:25 2011 -0500 +++ b/hedgewars/uVisualGears.pas Sun Nov 06 14:15:43 2011 -0500 @@ -340,8 +340,8 @@ vgtFlake: if cFlattenFlakes then gear^.Layer:= 0 else if random(3) = 0 then gear^.Layer:= 0 // 33% - far back else if random(3) = 0 then gear^.Layer:= 4 // 22% - mid-distance - else if random(2) = 0 then gear^.Layer:= 5 // 22% - just behind land - else if random(4) = 0 then gear^.Layer:= 6 // 15% - just in front of land + else if random(3) <> 0 then gear^.Layer:= 5 // 30% - just behind land + else if random(2) = 0 then gear^.Layer:= 6 // 7% - just in front of land else gear^.Layer:= 2; // 7% - close up vgtCloud: if cFlattenClouds then gear^.Layer:= 5 @@ -437,47 +437,29 @@ dmg, i: LongInt; begin if (vobCount = 0) or (vobCount > 200) then exit; -t:= VisualGearLayers[1]; -while t <> nil do - begin - Gear:= t; - if Gear^.Kind = vgtFlake then - begin - // Damage calc from doMakeExplosion - dmg:= Min(101, Radius + cHHRadius div 2 - LongInt(abs(round(Gear^.X) - X) + abs(round(Gear^.Y) - Y)) div 5); - if dmg > 1 then +for i:= 2 to 6 do + if i <> 3 then + begin + t:= VisualGearLayers[i]; + while t <> nil do begin - Gear^.tdX:= 0.02 * dmg + 0.01; - if Gear^.X - X < 0 then Gear^.tdX := -Gear^.tdX; - Gear^.tdY:= 0.02 * dmg + 0.01; - if Gear^.Y - Y < 0 then Gear^.tdY := -Gear^.tdY; - Gear^.Timer:= 200 + Gear:= t; + if Gear^.Kind = vgtFlake then + begin + // Damage calc from doMakeExplosion + dmg:= Min(101, Radius + cHHRadius div 2 - LongInt(abs(round(Gear^.X) - X) + abs(round(Gear^.Y) - Y)) div 5); + if dmg > 1 then + begin + Gear^.tdX:= 0.02 * dmg + 0.01; + if Gear^.X - X < 0 then Gear^.tdX := -Gear^.tdX; + Gear^.tdY:= 0.02 * dmg + 0.01; + if Gear^.Y - Y < 0 then Gear^.tdY := -Gear^.tdY; + Gear^.Timer:= 200 + end + end; + t:= Gear^.NextGear end - end; - t:= Gear^.NextGear - end; -for i:= 3 to 6 do - begin - t:= VisualGearLayers[i]; - while t <> nil do - begin - Gear:= t; - if Gear^.Kind = vgtFlake then - begin - // Damage calc from doMakeExplosion - dmg:= Min(101, Radius + cHHRadius div 2 - LongInt(abs(round(Gear^.X) - X) + abs(round(Gear^.Y) - Y)) div 5); - if dmg > 1 then - begin - Gear^.tdX:= 0.02 * dmg + 0.01; - if Gear^.X - X < 0 then Gear^.tdX := -Gear^.tdX; - Gear^.tdY:= 0.02 * dmg + 0.01; - if Gear^.Y - Y < 0 then Gear^.tdY := -Gear^.tdY; - Gear^.Timer:= 200 - end - end; - t:= Gear^.NextGear - end - end + end end; procedure DrawVisualGears(Layer: LongWord);