hedgewars/uTeams.pas
branchwebgl
changeset 9160 fc46e75f6b72
parent 9127 e350500c4edb
parent 9157 2f8b60b89121
child 9236 ddd675825672
equal deleted inserted replaced
9136:78f087fd3e5b 9160:fc46e75f6b72
   108     end;
   108     end;
   109 GameOver:= true
   109 GameOver:= true
   110 end;
   110 end;
   111 
   111 
   112 procedure SwitchHedgehog;
   112 procedure SwitchHedgehog;
   113 var c, i, t, j: LongWord;
   113 var c, i, t: LongWord;
   114     PrevHH, PrevTeam : LongWord;
   114     PrevHH, PrevTeam : LongWord;
   115 begin
   115 begin
   116 TargetPoint.X:= NoPointX;
   116 TargetPoint.X:= NoPointX;
   117 TryDo(CurrentTeam <> nil, 'nil Team', true);
   117 TryDo(CurrentTeam <> nil, 'nil Team', true);
   118 with CurrentHedgehog^ do
   118 with CurrentHedgehog^ do
   188                 PrevHH:= CurrHedgehog mod HedgehogsNumber; // prevent infinite loop when CurrHedgehog = 7, but HedgehogsNumber < 8 (team is destroyed before its first turn)
   188                 PrevHH:= CurrHedgehog mod HedgehogsNumber; // prevent infinite loop when CurrHedgehog = 7, but HedgehogsNumber < 8 (team is destroyed before its first turn)
   189                 repeat
   189                 repeat
   190                     CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber;
   190                     CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber;
   191                 until ((Hedgehogs[CurrHedgehog].Gear <> nil) and (Hedgehogs[CurrHedgehog].Effects[heFrozen] < 256)) or (CurrHedgehog = PrevHH)
   191                 until ((Hedgehogs[CurrHedgehog].Gear <> nil) and (Hedgehogs[CurrHedgehog].Effects[heFrozen] < 256)) or (CurrHedgehog = PrevHH)
   192                 end
   192                 end
   193         until ((CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 50256)) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0))
   193         until ((CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 256)) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0))
   194         end;
   194         end;
   195         if (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then
   195         if (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then
   196             begin
   196             begin
   197             inc(CurrentTeam^.Clan^.TurnNumber);
       
   198             with CurrentTeam^.Clan^ do
   197             with CurrentTeam^.Clan^ do
   199                 for t:= 0 to Pred(TeamsNumber) do
   198                 for t:= 0 to Pred(TeamsNumber) do
   200                     with Teams[t]^ do
   199                     with Teams[t]^ do
   201                         for i:= 0 to Pred(HedgehogsNumber) do
   200                         for i:= 0 to Pred(HedgehogsNumber) do
   202                             with Hedgehogs[i] do
   201                             with Hedgehogs[i] do
   203                                 if Effects[heFrozen] > 255 then
   202                                 begin
   204                                     Effects[heFrozen]:= max(255,Effects[heFrozen]-50000)
   203                                 if Effects[heFrozen] > 255 then Effects[heFrozen]:= max(255,Effects[heFrozen]-50000);
       
   204                                 if (Gear <> nil) and (Effects[heFrozen] < 256) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then
       
   205                                     CurrHedgehog:= i
       
   206                                 end;
       
   207             if (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then
       
   208                 inc(CurrentTeam^.Clan^.TurnNumber);
   205             end
   209             end
   206 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 256);
   210 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 256);
   207 
   211 
   208 SwitchCurrentHedgehog(@(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]));
   212 SwitchCurrentHedgehog(@(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]));
   209 {$IFDEF USE_TOUCH_INTERFACE}
   213 {$IFDEF USE_TOUCH_INTERFACE}