diff --git a/backend/bang/game.py b/backend/bang/game.py index 1dd7902..68a6716 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -277,7 +277,8 @@ class Game: self.choose_characters() if 'gold_rush' in self.expansions: self.notify_gold_rush_shop() - Metrics.send_metric('start_game', points=[1], tags=([f"exp:{e}" for e in self.expansions] + [f"players:{self.initial_players}", f"competitive:{self.is_competitive}"])) + if not self.is_replay: + Metrics.send_metric('start_game', points=[1], tags=([f"exp:{e}" for e in self.expansions] + [f"players:{self.initial_players}", f"competitive:{self.is_competitive}"])) def distribute_roles(self): available_roles: List[roles.Role] = [] @@ -470,7 +471,8 @@ class Game: if not self.someone_won: self.someone_won = True self.sio.emit('chat_message', room=self.name, data=f'_won|{p.name}|{p.role.name}') - Metrics.send_metric('player_win', points=[1], tags=[f"char:{p.character.name}", f"role:{p.role.name}"]) + if not self.is_replay: + Metrics.send_metric('player_win', points=[1], tags=[f"char:{p.character.name}", f"role:{p.role.name}"]) p.notify_self() if hasattr(self.sio, 'is_fake'): print('announces_winners(): Running for tests, you will have to call reset manually!') @@ -486,7 +488,8 @@ class Game: def play_turn(self): self.incremental_turn += 1 - Metrics.send_metric('incremental_turn', points=[self.incremental_turn], tags=[f'game:{self.SEED}']) + if not self.is_replay: + Metrics.send_metric('incremental_turn', points=[self.incremental_turn], tags=[f'game:{self.SEED}']) if self.players[self.turn].is_dead: pl = sorted(self.get_dead_players(), key=lambda x:x.death_turn)[0] if self.check_event(ce.DeadMan) and not self.did_resuscitate_deadman and pl == self.players[self.turn]: @@ -630,7 +633,8 @@ class Game: import bang.expansions.dodge_city.characters as chd print(f'{self.name}: the killer is {player.attacker}') if player.character and player.role: - Metrics.send_metric('player_death', points=[1], tags=[f"char:{player.character.name}", f"role:{player.role.name}"]) + if not self.is_replay: + Metrics.send_metric('player_death', points=[1], tags=[f"char:{player.character.name}", f"role:{player.role.name}"]) if len([c for c in player.gold_rush_equipment if isinstance(c, grc.Ricercato)]) > 0 and player.attacker and player.attacker in self.players: player.attacker.gold_nuggets += 1 player.attacker.hand.append(self.deck.draw(True)) diff --git a/backend/bang/players.py b/backend/bang/players.py index 0ce2ca3..810d9d0 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -650,7 +650,8 @@ class Player: self.hand.insert(hand_index, card) else: did_play_card = True - Metrics.send_metric('play_card', points=[1], tags=[f'success:{did_play_card}', f'card:{card.name}', f'bot:{self.is_bot}', f'exp:{card.expansion if "expansion" in card.__dict__ else "vanilla"}']) + if not self.game.is_replay: + Metrics.send_metric('play_card', points=[1], tags=[f'success:{did_play_card}', f'card:{card.name}', f'bot:{self.is_bot}', f'exp:{card.expansion if "expansion" in card.__dict__ else "vanilla"}']) print("did play card:", did_play_card) self.notify_self() if self.is_bot: diff --git a/backend/server.py b/backend/server.py index 58d0f5e..b3e4daa 100644 --- a/backend/server.py +++ b/backend/server.py @@ -48,7 +48,7 @@ blacklist: List[str] = [] def advertise_lobbies(): sio.emit('lobbies', room='lobby', data=[{'name': g.name, 'players': len(g.players), 'locked': g.password != ''} for g in games if not g.started and len(g.players) < 10 and not g.is_hidden]) sio.emit('spectate_lobbies', room='lobby', data=[{'name': g.name, 'players': len(g.players), 'locked': g.password != ''} for g in games if g.started]) - Metrics.send_metric('lobbies', points=[len(games)]) + Metrics.send_metric('lobbies', points=[len([g for g in games if not g.is_replay])]) Metrics.send_metric('online_players', points=[online_players]) @sio.event @@ -278,7 +278,8 @@ def start_game(sid): def set_character(sid, name): ses: Player = sio.get_session(sid) ses.game.rpc_log.append(f'{ses.name};set_character;{name}') - Metrics.send_metric('set_character', points=[1], tags=[f"char:{name}"]) + if not ses.game.is_replay: + Metrics.send_metric('set_character', points=[1], tags=[f"char:{name}"]) ses.set_character(name) @sio.event @@ -551,7 +552,8 @@ def chat_message(sid, msg, pl=None): else: color = sid.encode('utf-8').hex()[-3:] sio.emit('chat_message', room=ses.game.name, data={'color': f'#{color}','text':f'[{ses.name}]: {msg}'}) - Metrics.send_metric('chat_message', points=[1], tags=[f'game:{ses.game.name.replace(" ","_")}']) + if not ses.game.is_replay: + Metrics.send_metric('chat_message', points=[1], tags=[f'game:{ses.game.name.replace(" ","_")}']) @@ -606,7 +608,7 @@ def get_goldrushcards(sid): def pool_metrics(): sio.sleep(60) - Metrics.send_metric('lobbies', points=[len(games)]) + Metrics.send_metric('lobbies', points=[len([g for g in games if not g.is_replay])]) Metrics.send_metric('online_players', points=[online_players]) pool_metrics()