209 maxTeamDamage : Longword; |
209 maxTeamDamage : Longword; |
210 maxTeamDamageName : shortstring; |
210 maxTeamDamageName : shortstring; |
211 winnersClan : PClan; |
211 winnersClan : PClan; |
212 begin |
212 begin |
213 if SendHealthStatsOn then |
213 if SendHealthStatsOn then |
214 msd:= 0; msdhh:= nil; |
214 msd:= 0; msdhh:= nil; |
215 msk:= 0; mskhh:= nil; |
215 msk:= 0; mskhh:= nil; |
216 mskcnt:= 0; |
216 mskcnt:= 0; |
217 maxTeamKills := 0; |
217 maxTeamKills := 0; |
218 maxTurnSkips := 0; |
218 maxTurnSkips := 0; |
219 maxTeamDamage := 0; |
219 maxTeamDamage := 0; |
220 winnersClan:= nil; |
220 winnersClan:= nil; |
221 |
221 |
222 for t:= 0 to Pred(TeamsCount) do |
222 for t:= 0 to Pred(TeamsCount) do |
223 with TeamsArray[t]^ do |
223 with TeamsArray[t]^ do |
224 begin |
224 begin |
225 if not ExtDriven then |
225 if not ExtDriven then |
226 SendStat(siTeamStats, GetTeamStatString(TeamsArray[t])); |
226 SendStat(siTeamStats, GetTeamStatString(TeamsArray[t])); |
227 for i:= 0 to cMaxHHIndex do |
227 for i:= 0 to cMaxHHIndex do |
228 begin |
228 begin |
229 if Hedgehogs[i].stats.MaxStepDamageGiven > msd then |
229 if Hedgehogs[i].stats.MaxStepDamageGiven > msd then |
230 begin |
230 begin |
231 msdhh:= @Hedgehogs[i]; |
231 msdhh:= @Hedgehogs[i]; |
232 msd:= Hedgehogs[i].stats.MaxStepDamageGiven |
232 msd:= Hedgehogs[i].stats.MaxStepDamageGiven |
233 end; |
233 end; |
234 if Hedgehogs[i].stats.MaxStepKills >= msk then |
234 if Hedgehogs[i].stats.MaxStepKills >= msk then |
235 if Hedgehogs[i].stats.MaxStepKills = msk then |
235 if Hedgehogs[i].stats.MaxStepKills = msk then |
236 inc(mskcnt) |
236 inc(mskcnt) |
237 else |
237 else |
238 begin |
238 begin |
239 mskcnt:= 1; |
239 mskcnt:= 1; |
240 mskhh:= @Hedgehogs[i]; |
240 mskhh:= @Hedgehogs[i]; |
241 msk:= Hedgehogs[i].stats.MaxStepKills |
241 msk:= Hedgehogs[i].stats.MaxStepKills |
242 end; |
242 end; |
243 end; |
243 end; |
244 |
244 |
245 { send player stats for winner teams } |
245 { send player stats for winner teams } |
246 if Clan^.ClanHealth > 0 then |
246 if Clan^.ClanHealth > 0 then |
247 begin |
247 begin |
248 winnersClan:= Clan; |
248 winnersClan:= Clan; |
249 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + |
249 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + |
250 IntToStr(stats.Kills) + ' ' + TeamName); |
250 IntToStr(stats.Kills) + ' ' + TeamName); |
251 end; |
251 end; |
252 |
252 |
253 { determine maximum values of TeamKills, TurnSkips, TeamDamage } |
253 { determine maximum values of TeamKills, TurnSkips, TeamDamage } |
254 if stats.TeamKills > maxTeamKills then |
254 if stats.TeamKills > maxTeamKills then |
255 begin |
255 begin |
256 maxTeamKills := stats.TeamKills; |
256 maxTeamKills := stats.TeamKills; |
257 maxTeamKillsName := TeamName; |
257 maxTeamKillsName := TeamName; |
258 end; |
258 end; |
259 if stats.TurnSkips > maxTurnSkips then |
259 if stats.TurnSkips > maxTurnSkips then |
260 begin |
260 begin |
261 maxTurnSkips := stats.TurnSkips; |
261 maxTurnSkips := stats.TurnSkips; |
262 maxTurnSkipsName := TeamName; |
262 maxTurnSkipsName := TeamName; |
263 end; |
263 end; |
264 if stats.TeamDamage > maxTeamDamage then |
264 if stats.TeamDamage > maxTeamDamage then |
265 begin |
265 begin |
266 maxTeamDamage := stats.TeamDamage; |
266 maxTeamDamage := stats.TeamDamage; |
267 maxTeamDamageName := TeamName; |
267 maxTeamDamageName := TeamName; |
268 end; |
268 end; |
269 |
269 |
270 end; |
270 end; |
271 |
271 |
272 { now send player stats for loser teams } |
272 { now send player stats for loser teams } |
273 for t:= 0 to Pred(TeamsCount) do |
273 for t:= 0 to Pred(TeamsCount) do |
274 begin |
274 begin |
275 with TeamsArray[t]^ do |
275 with TeamsArray[t]^ do |
276 begin |
276 begin |
277 if Clan^.ClanHealth = 0 then |
277 if Clan^.ClanHealth = 0 then |
278 begin |
278 begin |
279 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + |
279 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + |
280 IntToStr(stats.Kills) + ' ' + TeamName); |
280 IntToStr(stats.Kills) + ' ' + TeamName); |
281 end; |
281 end; |
282 end; |
282 end; |
283 end; |
283 end; |
284 |
284 |
285 if msdhh <> nil then |
285 if msdhh <> nil then |
286 SendStat(siMaxStepDamage, IntToStr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); |
286 SendStat(siMaxStepDamage, IntToStr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); |
287 if mskcnt = 1 then |
287 if mskcnt = 1 then |
288 SendStat(siMaxStepKills, IntToStr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')'); |
288 SendStat(siMaxStepKills, IntToStr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')'); |
289 |
289 |
290 if maxTeamKills > 1 then |
290 if maxTeamKills > 1 then |
291 SendStat(siMaxTeamKills, IntToStr(maxTeamKills) + ' ' + maxTeamKillsName); |
291 SendStat(siMaxTeamKills, IntToStr(maxTeamKills) + ' ' + maxTeamKillsName); |
292 if maxTurnSkips > 2 then |
292 if maxTurnSkips > 2 then |
293 SendStat(siMaxTurnSkips, IntToStr(maxTurnSkips) + ' ' + maxTurnSkipsName); |
293 SendStat(siMaxTurnSkips, IntToStr(maxTurnSkips) + ' ' + maxTurnSkipsName); |
294 if maxTeamDamage > 30 then |
294 if maxTeamDamage > 30 then |
295 SendStat(siMaxTeamDamage, IntToStr(maxTeamDamage) + ' ' + maxTeamDamageName); |
295 SendStat(siMaxTeamDamage, IntToStr(maxTeamDamage) + ' ' + maxTeamDamageName); |
296 |
296 |
297 if KilledHHs > 0 then |
297 if KilledHHs > 0 then |
298 SendStat(siKilledHHs, IntToStr(KilledHHs)); |
298 SendStat(siKilledHHs, IntToStr(KilledHHs)); |
299 |
299 |
300 // now to console |
300 // now to console |
301 if winnersClan <> nil then |
301 if winnersClan <> nil then |
302 begin |
302 begin |
303 WriteLnToConsole('WINNERS'); |
303 WriteLnToConsole('WINNERS'); |
304 WriteLnToConsole(inttostr(winnersClan^.TeamsNumber)); |
304 WriteLnToConsole(inttostr(winnersClan^.TeamsNumber)); |
305 for t:= 0 to winnersClan^.TeamsNumber - 1 do |
305 for t:= 0 to winnersClan^.TeamsNumber - 1 do |
306 WriteLnToConsole(winnersClan^.Teams[t]^.TeamName); |
306 WriteLnToConsole(winnersClan^.Teams[t]^.TeamName); |
307 end |
307 end |
308 else |
308 else |
309 WriteLnToConsole('DRAW'); |
309 WriteLnToConsole('DRAW'); |
310 |
310 |
311 ScriptCall('onAchievementsDeclaration'); |
311 ScriptCall('onAchievementsDeclaration'); |
312 end; |
312 end; |
313 |
313 |
314 procedure declareAchievement(id, teamname: shortstring; value: LongInt); |
314 procedure declareAchievement(id, teamname: shortstring; value: LongInt); |
315 begin |
315 begin |