Make hogs thaw only on enemy turns, make timebox counter decrement only on your turn, adjust knock for frozen hogs, increase damage on frozen hogs, make freezer fuel only reduce when not adjusting angle.
authornemo
Sun, 03 Mar 2013 19:43:01 -0500
changeset 8632 b5ed76d2a1f9
parent 8631 796ed875aa95
child 8633 b9f5adfa81cc
Make hogs thaw only on enemy turns, make timebox counter decrement only on your turn, adjust knock for frozen hogs, increase damage on frozen hogs, make freezer fuel only reduce when not adjusting angle.
hedgewars/GSHandlers.inc
hedgewars/uGears.pas
hedgewars/uGearsHedgehog.pas
hedgewars/uGearsUtils.pas
--- a/hedgewars/GSHandlers.inc	Sun Mar 03 14:58:58 2013 -0500
+++ b/hedgewars/GSHandlers.inc	Sun Mar 03 19:43:01 2013 -0500
@@ -92,7 +92,7 @@
                     
                 else
                     begin
-                    if (gi^.State and gstMoving) = 0 then
+                    if ((gi^.State and gstMoving) = 0) and (gi^.Hedgehog^.Effects[heFrozen] = 0) then
                         begin
                         gi^.dX.isNegative:= X<gi^.X;
                         gi^.State := gi^.State or gstLoser;
@@ -4956,7 +4956,7 @@
         end;
     Gear^.Pos:= 4;
     // This condition might need tweaking
-    Gear^.Timer:= GetRandom(cHedgehogTurnTime*TeamsCount*2)+cHedgehogTurnTime*2
+    Gear^.Timer:= GetRandom(cHedgehogTurnTime*TeamsCount)+cHedgehogTurnTime
     end;
 
 if (Gear^.Pos = 4) then
@@ -4992,7 +4992,7 @@
             Gear^.Power:= 0;
             end
         end
-    else dec(Gear^.Timer);
+    else if (CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan) then dec(Gear^.Timer)
     end;
 
 end;
@@ -5124,10 +5124,7 @@
         AfterAttack;
         exit
         end
-    else
-        begin
-        updateFuel(Gear);
-        end;
+    else if Gear^.Message and (gmUp or gmDown) = 0 then updateFuel(Gear);
 
     with Gear^ do
         begin
@@ -5203,7 +5200,7 @@
                                 if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] < 256 then
                                     hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] := hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] + 1
                                 else if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] = 256 then
-                                    hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= 100000
+                                    hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= cHedgehogTurnTime + cReadyDelay
                                 end;
                 inc(Pos)
             end
--- a/hedgewars/uGears.pas	Sun Mar 03 14:58:58 2013 -0500
+++ b/hedgewars/uGears.pas	Sun Mar 03 19:43:01 2013 -0500
@@ -838,7 +838,7 @@
                 ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch
                 end;
 
-            if (Gear^.Kind = gtHedgehog) and Gear^.Hedgehog^.King then
+            if (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.King or (Gear^.Hedgehog^.Effects[heFrozen] > 0)) then
                 begin
                 Gear^.dX:= Ammo^.dX * Power * _0_005;
                 Gear^.dY:= Ammo^.dY * Power * _0_005
--- a/hedgewars/uGearsHedgehog.pas	Sun Mar 03 14:58:58 2013 -0500
+++ b/hedgewars/uGearsHedgehog.pas	Sun Mar 03 19:43:01 2013 -0500
@@ -1261,7 +1261,7 @@
 if GameTicks mod 100 = 0 then CheckIce(Gear);
 if Gear^.Hedgehog^.Effects[heFrozen] > 0 then 
     begin
-    if Gear^.Hedgehog^.Effects[heFrozen] > 256 then
+    if (Gear^.Hedgehog^.Effects[heFrozen] > 256) and (CurrentHedgehog^.Team^.Clan <> Gear^.Hedgehog^.Team^.Clan) then
         dec(Gear^.Hedgehog^.Effects[heFrozen])
     else if GameTicks mod 10 = 0 then
         dec(Gear^.Hedgehog^.Effects[heFrozen])
--- a/hedgewars/uGearsUtils.pas	Sun Mar 03 14:58:58 2013 -0500
+++ b/hedgewars/uGearsUtils.pas	Sun Mar 03 19:43:01 2013 -0500
@@ -182,8 +182,7 @@
 i:= _1;
 if (CurrentHedgehog <> nil) and CurrentHedgehog^.King then
     i:= _1_5;
-if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Effects[heFrozen] > 0) then i:=i*_0_2;
-if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.King) then
+if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.King or (Gear^.Hedgehog^.Effects[heFrozen] > 0)) then
     ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent * _0_5)
 else
     ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent)