diff -r 282c7ef1822d -r aefe46d64dd9 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Tue May 21 23:49:24 2013 +0200 +++ b/hedgewars/uGearsRender.pas Tue May 21 22:56:31 2013 -0400 @@ -979,6 +979,8 @@ aAngle: real; startX, endX, startY, endY: LongInt; begin + if Gear^.State and gstFrozen <> 0 then Tint($A0, $A0, $FF, $FF); + //if Gear^.State and gstFrozen <> 0 then Tint(IceColor or $FF); if Gear^.Target.X <> NoPointX then if Gear^.AmmoType = amBee then DrawSpriteRotatedF(sprTargetBee, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) @@ -1038,11 +1040,13 @@ gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0); gtRope: DrawRope(Gear); - gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then + gtMine: begin + if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then DrawSpriteRotated(sprMineOff, x, y, 0, Gear^.DirAngle) - else if Gear^.Health <> 0 then - DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle) - else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); + else if Gear^.Health <> 0 then + DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle) + else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); + end; gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then DrawSpriteRotated(sprSMineOff, x, y, 0, Gear^.DirAngle) @@ -1056,26 +1060,38 @@ begin if ((Gear^.Pos and posCaseAmmo) <> 0) then begin + if Gear^.State and gstFrozen <> 0 then + begin + DrawSprite(sprCase, x - 24, y - 28, 0); + exit + end; i:= (GameTicks shr 6) mod 64; - if i > 18 then - i:= 0; - DrawSprite(sprCase, x - 24, y - 24, i); + if i > 18 then i:= 0; + DrawSprite(sprCase, x - 24, y - 24, i) end else if ((Gear^.Pos and posCaseHealth) <> 0) then begin + if Gear^.State and gstFrozen <> 0 then + begin + DrawSprite(sprFAid, x - 24, y - 28, 0); + exit + end; i:= ((GameTicks shr 6) + 38) mod 64; - if i > 13 then - i:= 0; + if i > 13 then i:= 0; DrawSprite(sprFAid, x - 24, y - 24, i); end else if ((Gear^.Pos and posCaseUtility) <> 0) then begin + if Gear^.State and gstFrozen <> 0 then + begin + DrawSprite(sprUtility, x - 24, y - 28, 0); + exit + end; i:= (GameTicks shr 6) mod 70; - if i > 23 then - i:= 0; + if i > 23 then i:= 0; i:= i mod 12; DrawSprite(sprUtility, x - 24, y - 24, i); - end; + end end; if Gear^.Timer < 1833 then begin @@ -1096,7 +1112,7 @@ else if Gear^.State and gsttmpFlag = 0 then DrawSpriteRotatedF(sprExplosivesRoll, x, y + 4, 0, 0, Gear^.DirAngle) else - DrawSpriteRotatedF(sprExplosivesRoll, x, y + 4, 1, 0, Gear^.DirAngle); + 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); gtClusterBomb: DrawSpriteRotated(sprClusterBomb, x, y, 0, Gear^.DirAngle); @@ -1285,6 +1301,7 @@ end; if Gear^.RenderTimer and (Gear^.Tex <> nil) then DrawTextureCentered(x + 8, y + 8, Gear^.Tex); + if Gear^.State and gstFrozen <> 0 then Tint($FF, $FF, $FF, $FF) end; end.