def get_player_totals(acc): peid, plid = _get_ids(acc) total_games = _total_games(peid) if not total_games: return (messages["db_pstats_no_game"].format(acc), []) conn = _conn() c = conn.cursor() c.execute( """SELECT gpr.role AS role, COUNT(1) AS total FROM person pe JOIN player pl ON pl.person = pe.id JOIN game_player gp ON gp.player = pl.id JOIN game_player_role gpr ON gpr.game_player = gp.id WHERE pe.id = ? GROUP BY role""", (peid, )) tmp = {} totals = [] for row in c: tmp[row[0]] = row[1] c.execute( """SELECT SUM(gp.team_win OR gp.indiv_win) FROM game_player gp JOIN player pl ON pl.id = gp.player JOIN person pe ON pe.id = pl.person WHERE pe.id = ?""", (peid, )) won_games = c.fetchone()[0] order = list(role_order()) name = _get_display_name(peid) #ordered role stats totals = [ messages["db_role_games"].format(r, tmp[r]) for r in order if r in tmp ] #lover or any other special stats totals += [ messages["db_role_games"].format(r, t) for r, t in tmp.items() if r not in order ] return (messages["db_total_games"].format(name, total_games, won_games / total_games), totals)
def on_new_role(evt, var, user, old_role): if evt.params.inherit_from is None and evt.data["role"] == "amnesiac": roles = set(role_order()) - _get_blacklist(var) ROLES[user] = random.choice(list(roles))
def role_order(): # Deprecated in favour of cats.role_order() from src import cats return cats.role_order()