At multiple requests, change ice to be turn based. This is a more modest adjustment of existing code, that can be fairly easily flagged or reverted if desired. It also allows scripts to extend freezing, and preserves fire melting.
authornemo
Tue, 05 Mar 2013 16:04:22 -0500
changeset 8655 9fa380a18a65
parent 8654 f523e5e84772
child 8656 a8282143a8df
child 8657 3a957233f459
At multiple requests, change ice to be turn based. This is a more modest adjustment of existing code, that can be fairly easily flagged or reverted if desired. It also allows scripts to extend freezing, and preserves fire melting.
QTfrontend/weapons.h
hedgewars/GSHandlers.inc
hedgewars/uGearsHedgehog.pas
hedgewars/uTeams.pas
--- a/QTfrontend/weapons.h	Tue Mar 05 09:11:28 2013 +0100
+++ b/QTfrontend/weapons.h	Tue Mar 05 16:04:22 2013 -0500
@@ -28,7 +28,7 @@
 
 #define AMMOLINE_CRAZY_QT       "9999999999999999992999999999999999299999999909999992999"
 #define AMMOLINE_CRAZY_PROB     "1111110111111111111111111111111111111111111101111111111"
-#define AMMOLINE_CRAZY_DELAY    "0000000000000000000000000000000000000000000000000000020"
+#define AMMOLINE_CRAZY_DELAY    "0000000000000000000000000000000000000000000000000000000"
 #define AMMOLINE_CRAZY_CRATE    "1311110312111111123114111111111111111211110101111111121"
 
 #define AMMOLINE_PROMODE_QT     "9090009000000000000009000000000000000000000000000000000"
@@ -38,7 +38,7 @@
 
 #define AMMOLINE_SHOPPA_QT      "0000009900000000000000000000000000000000000000000000000"
 #define AMMOLINE_SHOPPA_PROB    "4444410044244402210112121222422000000002000400010011001"
-#define AMMOLINE_SHOPPA_DELAY   "0000000000000000000000000000000000000000000000000000020"
+#define AMMOLINE_SHOPPA_DELAY   "0000000000000000000000000000000000000000000000000000000"
 #define AMMOLINE_SHOPPA_CRATE   "1111110111111111111111111111111111111111101101111111121"
 
 #define AMMOLINE_CLEAN_QT       "1010009000010000011000000000000000000000000000001000000"
--- a/hedgewars/GSHandlers.inc	Tue Mar 05 09:11:28 2013 +0100
+++ b/hedgewars/GSHandlers.inc	Tue Mar 05 16:04:22 2013 -0500
@@ -5201,7 +5201,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]:= cHedgehogTurnTime + cReadyDelay
+                                    hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= 150000;//cHedgehogTurnTime + cReadyDelay
                                 end;
                 inc(Pos)
             end
--- a/hedgewars/uGearsHedgehog.pas	Tue Mar 05 09:11:28 2013 +0100
+++ b/hedgewars/uGearsHedgehog.pas	Tue Mar 05 16:04:22 2013 -0500
@@ -1260,6 +1260,7 @@
     exit
     end;
 if GameTicks mod 100 = 0 then CheckIce(Gear);
+(*
 if Gear^.Hedgehog^.Effects[heFrozen] > 0 then 
     begin
     if (Gear^.Hedgehog^.Effects[heFrozen] > 256) and (CurrentHedgehog^.Team^.Clan <> Gear^.Hedgehog^.Team^.Clan) then
@@ -1267,6 +1268,9 @@
     else if GameTicks mod 10 = 0 then
         dec(Gear^.Hedgehog^.Effects[heFrozen])
     end;
+*)
+if (GameTicks mod 10 = 0) and (Gear^.Hedgehog^.Effects[heFrozen] > 0) and (Gear^.Hedgehog^.Effects[heFrozen] < 256) then 
+    dec(Gear^.Hedgehog^.Effects[heFrozen]);
 if (Gear^.State and gstHHDriven) = 0 then
     doStepHedgehogFree(Gear)
 else
--- a/hedgewars/uTeams.pas	Tue Mar 05 09:11:28 2013 +0100
+++ b/hedgewars/uTeams.pas	Tue Mar 05 16:04:22 2013 -0500
@@ -110,7 +110,7 @@
 end;
 
 procedure SwitchHedgehog;
-var c: LongWord;
+var c, i, j: LongWord;
     PrevHH, PrevTeam : LongWord;
 begin
 TargetPoint.X:= NoPointX;
@@ -173,7 +173,15 @@
     if c = ClansCount then
         begin
         if not PlacingHogs then
+            begin
             inc(TotalRounds);
+            for i:= 0 to Pred(TeamsCount) do
+                with TeamsArray[i]^ do
+                    for j:= 0 to Pred(HedgehogsNumber) do
+                        with Hedgehogs[j] do
+                            if Effects[heFrozen] > 255 then
+                                Effects[heFrozen]:= max(255,Effects[heFrozen]-50000)
+            end;
         c:= 0
         end;