310 maxTurnSkipsName : shortstring; |
310 maxTurnSkipsName : shortstring; |
311 maxTeamDamage : Longword; |
311 maxTeamDamage : Longword; |
312 maxTeamDamageName : shortstring; |
312 maxTeamDamageName : shortstring; |
313 winnersClan : PClan; |
313 winnersClan : PClan; |
314 deathEntry : PClanDeathLogEntry; |
314 deathEntry : PClanDeathLogEntry; |
|
315 currentRank: Longword; |
315 begin |
316 begin |
316 if SendHealthStatsOn then |
317 if SendHealthStatsOn then |
317 msd:= 0; msdhh:= nil; |
318 msd:= 0; msdhh:= nil; |
318 msk:= 0; mskhh:= nil; |
319 msk:= 0; mskhh:= nil; |
319 mskcnt:= 0; |
320 mskcnt:= 0; |
320 maxTeamKills := 0; |
321 maxTeamKills := 0; |
321 maxTurnSkips := 0; |
322 maxTurnSkips := 0; |
322 maxTeamDamage := 0; |
323 maxTeamDamage := 0; |
323 winnersClan:= nil; |
324 winnersClan:= nil; |
|
325 currentRank:= 0; |
324 |
326 |
325 for t:= 0 to Pred(TeamsCount) do |
327 for t:= 0 to Pred(TeamsCount) do |
326 with TeamsArray[t]^ do |
328 with TeamsArray[t]^ do |
327 begin |
329 begin |
328 if (not ExtDriven) and SendRankingStatsOn then |
330 if (not ExtDriven) and SendRankingStatsOn then |
349 The clan that survived is ranked 1st. } |
351 The clan that survived is ranked 1st. } |
350 if Clan^.ClanHealth > 0 then |
352 if Clan^.ClanHealth > 0 then |
351 begin |
353 begin |
352 winnersClan:= Clan; |
354 winnersClan:= Clan; |
353 if SendRankingStatsOn then |
355 if SendRankingStatsOn then |
|
356 begin |
|
357 currentRank:= 1; |
|
358 SendStat(siTeamRank, '1'); |
354 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + |
359 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + |
355 IntToStr(stats.Kills) + ' ' + TeamName); |
360 IntToStr(stats.Kills) + ' ' + TeamName); |
|
361 end; |
356 end; |
362 end; |
357 |
363 |
358 { determine maximum values of TeamKills, TurnSkips, TeamDamage } |
364 { determine maximum values of TeamKills, TurnSkips, TeamDamage } |
359 if stats.TeamKills > maxTeamKills then |
365 if stats.TeamKills > maxTeamKills then |
360 begin |
366 begin |
371 maxTeamDamage := stats.TeamDamage; |
377 maxTeamDamage := stats.TeamDamage; |
372 maxTeamDamageName := TeamName; |
378 maxTeamDamageName := TeamName; |
373 end; |
379 end; |
374 |
380 |
375 end; |
381 end; |
|
382 |
|
383 inc(currentRank); |
376 |
384 |
377 { Now send player stats for loser teams/clans. |
385 { Now send player stats for loser teams/clans. |
378 The losing clans are ranked in the reverse order they died. |
386 The losing clans are ranked in the reverse order they died. |
379 The clan that died last is ranked 2nd, |
387 The clan that died last is ranked 2nd, |
380 the clan that died second to last is ranked 3rd, |
388 the clan that died second to last is ranked 3rd, |
381 and so on. } |
389 and so on. } |
382 deathEntry := ClanDeathLog; |
390 deathEntry := ClanDeathLog; |
|
391 i:= 0; |
383 if SendRankingStatsOn then |
392 if SendRankingStatsOn then |
384 while (deathEntry <> nil) do |
393 while (deathEntry <> nil) do |
385 begin |
394 begin |
386 for c:= 0 to Pred(deathEntry^.KilledClansCount) do |
395 for c:= 0 to Pred(deathEntry^.KilledClansCount) do |
387 if ((deathEntry^.KilledClans[c]^.ClanHealth) = 0) and (not deathEntry^.KilledClans[c]^.StatsHandled) then |
396 if ((deathEntry^.KilledClans[c]^.ClanHealth) = 0) and (not deathEntry^.KilledClans[c]^.StatsHandled) then |
388 begin |
397 begin |
389 for t:= 0 to Pred(TeamsCount) do |
398 for t:= 0 to Pred(TeamsCount) do |
390 if TeamsArray[t]^.Clan^.ClanIndex = deathEntry^.KilledClans[c]^.ClanIndex then |
399 if TeamsArray[t]^.Clan^.ClanIndex = deathEntry^.KilledClans[c]^.ClanIndex then |
391 begin |
400 begin |
|
401 inc(i); |
|
402 SendStat(siTeamRank, IntToStr(currentRank)); |
392 SendStat(siPlayerKills, IntToStr(deathEntry^.killedClans[c]^.Color) + ' ' + |
403 SendStat(siPlayerKills, IntToStr(deathEntry^.killedClans[c]^.Color) + ' ' + |
393 IntToStr(TeamsArray[t]^.stats.Kills) + ' ' + TeamsArray[t]^.TeamName); |
404 IntToStr(TeamsArray[t]^.stats.Kills) + ' ' + TeamsArray[t]^.TeamName); |
394 end; |
405 end; |
395 deathEntry^.KilledClans[c]^.StatsHandled:= true; |
406 deathEntry^.KilledClans[c]^.StatsHandled:= true; |
396 end; |
407 end; |
|
408 if i > 0 then |
|
409 inc(currentRank, i); |
|
410 i:= 0; |
397 deathEntry:= deathEntry^.NextEntry; |
411 deathEntry:= deathEntry^.NextEntry; |
398 end; |
412 end; |
399 |
413 |
400 // “Achievements” / Details part of stats screen |
414 // “Achievements” / Details part of stats screen |
401 if SendAchievementsStatsOn then |
415 if SendAchievementsStatsOn then |