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} |