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, j: LongWord; |
113 var c, i, t, j: 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 |
171 inc(c); |
171 inc(c); |
172 |
172 |
173 if c = ClansCount then |
173 if c = ClansCount then |
174 begin |
174 begin |
175 if not PlacingHogs then |
175 if not PlacingHogs then |
176 begin |
|
177 inc(TotalRounds); |
176 inc(TotalRounds); |
178 for i:= 0 to Pred(TeamsCount) do |
|
179 with TeamsArray[i]^ do |
|
180 for j:= 0 to Pred(HedgehogsNumber) do |
|
181 with Hedgehogs[j] do |
|
182 if Effects[heFrozen] > 255 then |
|
183 Effects[heFrozen]:= max(255,Effects[heFrozen]-50000) |
|
184 end; |
|
185 c:= 0 |
177 c:= 0 |
186 end; |
178 end; |
187 |
179 |
188 with ClansArray[c]^ do |
180 with ClansArray[c]^ do |
189 begin |
181 begin |
196 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) |
197 repeat |
189 repeat |
198 CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber; |
190 CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber; |
199 until ((Hedgehogs[CurrHedgehog].Gear <> nil) and (Hedgehogs[CurrHedgehog].Effects[heFrozen] = 0)) or (CurrHedgehog = PrevHH) |
191 until ((Hedgehogs[CurrHedgehog].Gear <> nil) and (Hedgehogs[CurrHedgehog].Effects[heFrozen] = 0)) or (CurrHedgehog = PrevHH) |
200 end |
192 end |
201 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) 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)) |
202 end |
194 end; |
203 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] = 0); |
195 if (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then |
|
196 begin |
|
197 inc(CurrentTeam^.Clan^.TurnNumber); |
|
198 with CurrentTeam^.Clan^ do |
|
199 for t:= 0 to Pred(TeamsNumber) do |
|
200 with Teams[t]^ do |
|
201 for i:= 0 to Pred(HedgehogsNumber) do |
|
202 with Hedgehogs[i] do |
|
203 if Effects[heFrozen] > 255 then |
|
204 Effects[heFrozen]:= max(255,Effects[heFrozen]-50000); |
|
205 end; |
|
206 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 256); |
204 |
207 |
205 SwitchCurrentHedgehog(@(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog])); |
208 SwitchCurrentHedgehog(@(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog])); |
206 {$IFDEF USE_TOUCH_INTERFACE} |
209 {$IFDEF USE_TOUCH_INTERFACE} |
207 if (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NoCrosshair) = 0 then |
210 if (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NoCrosshair) = 0 then |
208 begin |
211 begin |