modified: app.py
This commit is contained in:
124
app.py
124
app.py
@@ -416,74 +416,74 @@ async def hoi4end(ctx, game_name: str, winner_team: str):
|
||||
(game_name,)
|
||||
)
|
||||
game = await cursor.fetchone()
|
||||
|
||||
if not game:
|
||||
await ctx.send(f"❌ No active game found with name '{game_name}'!")
|
||||
return
|
||||
|
||||
players = json.loads(game['players']) if game['players'] else []
|
||||
|
||||
if len(players) < 2:
|
||||
await ctx.send("❌ Game needs at least 2 players to end!")
|
||||
return
|
||||
|
||||
# Check if winner team exists
|
||||
teams = {p['team_name'] for p in players}
|
||||
if winner_team not in teams:
|
||||
await ctx.send(f"❌ Team '{winner_team}' not found in game! Available teams: {', '.join(teams)}")
|
||||
return
|
||||
|
||||
# Calculate team averages
|
||||
team_elos = {}
|
||||
team_players = {}
|
||||
|
||||
for player in players:
|
||||
team = player['team_name']
|
||||
if team not in team_elos:
|
||||
team_elos[team] = []
|
||||
team_players[team] = []
|
||||
|
||||
team_elos[team].append(player['current_elo'])
|
||||
team_players[team].append(player)
|
||||
|
||||
# Calculate average ELOs for each team
|
||||
team_averages = {team: sum(elos) / len(elos) for team, elos in team_elos.items()}
|
||||
|
||||
elo_changes = []
|
||||
|
||||
# Calculate ELO changes for each player
|
||||
for player in players:
|
||||
team = player['team_name']
|
||||
won = team == winner_team
|
||||
if not game:
|
||||
await ctx.send(f"❌ No active game found with name '{game_name}'!")
|
||||
return
|
||||
|
||||
# Calculate opponent average (average of all other teams)
|
||||
opponent_elos = []
|
||||
for other_team, elos in team_elos.items():
|
||||
if other_team != team:
|
||||
opponent_elos.extend(elos)
|
||||
players = json.loads(game['players']) if game['players'] else []
|
||||
|
||||
opponent_avg = sum(opponent_elos) / len(opponent_elos) if opponent_elos else player['current_elo']
|
||||
if len(players) < 2:
|
||||
await ctx.send("❌ Game needs at least 2 players to end!")
|
||||
return
|
||||
|
||||
elo_change = calculate_elo_change(
|
||||
player['current_elo'],
|
||||
opponent_avg,
|
||||
won,
|
||||
player['t_level']
|
||||
)
|
||||
# Check if winner team exists
|
||||
teams = {p['team_name'] for p in players}
|
||||
if winner_team not in teams:
|
||||
await ctx.send(f"❌ Team '{winner_team}' not found in game! Available teams: {', '.join(teams)}")
|
||||
return
|
||||
|
||||
new_elo = max(0, player['current_elo'] + elo_change) # Prevent negative ELO
|
||||
# Calculate team averages
|
||||
team_elos = {}
|
||||
team_players = {}
|
||||
|
||||
for player in players:
|
||||
team = player['team_name']
|
||||
if team not in team_elos:
|
||||
team_elos[team] = []
|
||||
team_players[team] = []
|
||||
|
||||
team_elos[team].append(player['current_elo'])
|
||||
team_players[team].append(player)
|
||||
|
||||
# Calculate average ELOs for each team
|
||||
team_averages = {team: sum(elos) / len(elos) for team, elos in team_elos.items()}
|
||||
|
||||
elo_changes = []
|
||||
|
||||
# Calculate ELO changes for each player
|
||||
for player in players:
|
||||
team = player['team_name']
|
||||
won = team == winner_team
|
||||
|
||||
# Calculate opponent average (average of all other teams)
|
||||
opponent_elos = []
|
||||
for other_team, elos in team_elos.items():
|
||||
if other_team != team:
|
||||
opponent_elos.extend(elos)
|
||||
|
||||
opponent_avg = sum(opponent_elos) / len(opponent_elos) if opponent_elos else player['current_elo']
|
||||
|
||||
elo_change = calculate_elo_change(
|
||||
player['current_elo'],
|
||||
opponent_avg,
|
||||
won,
|
||||
player['t_level']
|
||||
)
|
||||
|
||||
new_elo = max(0, player['current_elo'] + elo_change) # Prevent negative ELO
|
||||
|
||||
elo_changes.append({
|
||||
'discord_id': player['discord_id'],
|
||||
'username': player['username'],
|
||||
'team_name': team,
|
||||
't_level': player['t_level'],
|
||||
'old_elo': player['current_elo'],
|
||||
'new_elo': new_elo,
|
||||
'elo_change': elo_change,
|
||||
'won': won
|
||||
})
|
||||
|
||||
elo_changes.append({
|
||||
'discord_id': player['discord_id'],
|
||||
'username': player['username'],
|
||||
'team_name': team,
|
||||
't_level': player['t_level'],
|
||||
'old_elo': player['current_elo'],
|
||||
'new_elo': new_elo,
|
||||
'elo_change': elo_change,
|
||||
'won': won
|
||||
})
|
||||
|
||||
# Update player ELOs and save game results
|
||||
for change in elo_changes:
|
||||
# Update player ELO
|
||||
|
||||
Reference in New Issue
Block a user