Skip to content

Commit 0272389

Browse files
committed
make suggest_switch handle even and uneven high elo players better
1 parent ed4f1b7 commit 0272389

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

balance.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -580,18 +580,27 @@ def suggest_switch(self, teams, gametype):
580580
]
581581
elos_red_high = sorted([p for p in elos_red if p[1] >= AD_ELO_THRESHOLD], key=lambda x: x[1])
582582
elos_red_low = sorted([p for p in elos_red if p[1] < AD_ELO_THRESHOLD], key=lambda x: x[1])
583+
nr_elos_red_high = len(elos_red_high)
583584
elos_blue = [
584585
(p, self.ratings[p.steam_id][gametype]["elo"]) for p in teams["blue"]
585586
]
586587
elos_blue_high = sorted([p for p in elos_blue if p[1] >= AD_ELO_THRESHOLD], key=lambda x: x[1])
587588
elos_blue_low = sorted([p for p in elos_blue if p[1] < AD_ELO_THRESHOLD], key=lambda x: x[1])
588-
total_high_elos = len(elos_red_high) + len(elos_blue_high)
589-
590-
if total_high_elos > 1 and len(elos_red_high) != len(elos_blue_high):
591-
if len(elos_red_high) > len(elos_blue_high):
592-
return ((elos_red_high[-1], elos_blue_low[-1]), 0)
589+
nr_elos_blue_high = len(elos_blue_high)
590+
total_high_elos = nr_elos_red_high + nr_elos_blue_high
591+
diff_high_elos = nr_elos_red_high - nr_elos_blue_high
592+
593+
if total_high_elos > 1:
594+
if total_high_elos % 2:
595+
if diff_high_elos >= 2:
596+
return ((elos_red_high[-1], elos_blue_low[-1]), 0)
597+
elif diff_high_elos <= -2:
598+
return ((elos_red_low[-1], elos_blue_high[-1]), 0)
593599
else:
594-
return ((elos_red_low[-1], elos_blue_high[-1]), 0)
600+
if diff_high_elos >= 1:
601+
return ((elos_red_high[-1], elos_blue_low[-1]), 0)
602+
elif diff_high_elos <= -1:
603+
return ((elos_red_low[-1], elos_blue_high[-1]), 0)
595604

596605

597606
avg_red = self.team_average(teams["red"], gametype)

0 commit comments

Comments
 (0)