--- a/hedgewars/uGears.pas Mon Feb 25 11:37:48 2013 +0400
+++ b/hedgewars/uGears.pas Tue Feb 26 20:39:18 2013 -0500
@@ -46,7 +46,8 @@
procedure ProcessGears;
procedure EndTurnCleanup;
procedure SetAllToActive;
-procedure SetAllHHToActive;
+procedure SetAllHHToActive; inline;
+procedure SetAllHHToActive(Ice: boolean);
procedure DrawGears;
procedure FreeGearsList;
procedure AddMiscGears;
@@ -562,7 +563,12 @@
end
end;
-procedure SetAllHHToActive;
+procedure SetAllHHToActive; inline;
+begin
+SetAllHHToActive(true)
+end;
+
+procedure SetAllHHToActive(Ice: boolean);
var t: PGear;
begin
AllInactive:= false;
@@ -570,12 +576,14 @@
while t <> nil do
begin
if (t^.Kind = gtHedgehog) or (t^.Kind = gtExplosives) then
- t^.Active:= true;
+ begin
+ if (t^.Kind = gtHedgehog) and Ice then CheckIce(t);
+ t^.Active:= true
+ end;
t:= t^.NextGear
end
end;
-
procedure DrawGears;
var Gear: PGear;
x, y: LongInt;
@@ -766,6 +774,8 @@
begin
dec(i);
Gear:= t^.ar[i];
+ if (Ammo^.Kind = gtFlame) and (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.Effects[heFrozen] > 255) then
+ Gear^.Hedgehog^.Effects[heFrozen]:= max(255,Gear^.Hedgehog^.Effects[heFrozen]-10000);
tmpDmg:= ModifyDamage(Damage, Gear);
if (Gear^.State and gstNoDamage) = 0 then
begin
@@ -780,6 +790,7 @@
if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then
Gear^.FlightTime:= 1;
+
case Gear^.Kind of
gtHedgehog,
gtMine,