From 24b2ea6001f0776f55fe96541785c0a686f1fda4 Mon Sep 17 00:00:00 2001 From: skizzerz Date: Mon, 18 Sep 2017 15:23:08 -0500 Subject: [PATCH] Update del_player callsites in wolfgame.py Also make the kwargs in del_player kwarg-only. --- src/wolfgame.py | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/wolfgame.py b/src/wolfgame.py index b5bef43..499052a 100644 --- a/src/wolfgame.py +++ b/src/wolfgame.py @@ -1103,7 +1103,7 @@ def fleave(var, wrapper, message): if target.nick in var.PLAYERS: var.DCED_PLAYERS[target.nick] = var.PLAYERS.pop(target.nick) - del_player(wrapper.client, target.nick, death_triggers=False) # FIXME: Need to fix once del_player is updated + del_player(target, death_triggers=False) elif dead_target is not None: leave_deadchat(var, dead_target, force=wrapper.source) @@ -1885,7 +1885,8 @@ def chk_decision(cli, force=""): else: lmsg = random.choice(messages["lynch_no_reveal"]).format(votee) cli.msg(botconfig.CHANNEL, lmsg) - if not del_player(cli, votee, True, killer_role="villager", deadlist=deadlist, original=votee): + better_deadlist = [users._get(p) for p in deadlist] # FIXME -- convert chk_decision_lynch to be user-aware + if not del_player(users._get(votee), forced_death=True, killer_role="villager", deadlist=better_deadlist, original=votee): # FIXME return do_night_transision = True break @@ -2371,7 +2372,7 @@ def chk_win_conditions(cli, rolemap, mainroles, end_game=True, winner=None): return True @handle_error -def del_player(player, forced_death=False, devoice=True, end_game=True, death_triggers=True, killer_role="", deadlist=[], original="", cmode=[], deadchat=[], ismain=True): +def del_player(player, *, forced_death=False, devoice=True, end_game=True, death_triggers=True, killer_role="", deadlist=[], original="", cmode=[], deadchat=[], ismain=True): """ Returns: False if one side won. arg: forced_death = True when lynched @@ -2390,9 +2391,7 @@ def del_player(player, forced_death=False, devoice=True, end_game=True, death_tr # either game ended, or a new game has started. return False ret = True - pl = set(get_players()) - for dead in deadlist: - pl.discard(dead) + pl = set(get_players()).difference(deadlist) if player is not None and (player is original or player in pl): mainrole = get_main_role(player) revealrole = get_reveal_role(player.nick) # FIXME @@ -2488,7 +2487,7 @@ def del_player(player, forced_death=False, devoice=True, end_game=True, death_tr message = messages["lover_suicide_no_reveal"].format(lover.nick) channels.Main.send(message) debuglog("{0} ({1}) LOVE SUICIDE: {2} ({3})".format(lover, get_main_role(lover), player, mainrole)) - del_player(lover, True, end_game=False, killer_role=killer_role, deadlist=deadlist, original=original, ismain=False) + del_player(lover, forced_death=True, end_game=False, killer_role=killer_role, deadlist=deadlist, original=original, ismain=False) pl = refresh_pl(pl) if "assassin" in allroles: if player.nick in var.TARGETED: @@ -2533,7 +2532,7 @@ def del_player(player, forced_death=False, devoice=True, end_game=True, death_tr message = messages["assassin_success_no_reveal"].format(player, target) channels.Main.send(message) debuglog("{0} (assassin) ASSASSINATE: {1} ({2})".format(player, target, get_main_role(target))) - del_player(target, True, end_game=False, killer_role=mainrole, deadlist=deadlist, original=original, ismain=False) + del_player(target, forced_death=True, end_game=False, killer_role=mainrole, deadlist=deadlist, original=original, ismain=False) pl = refresh_pl(pl) if mainrole == "time lord": if "DAY_TIME_LIMIT" not in var.ORIGINAL_SETTINGS: @@ -2775,7 +2774,7 @@ def reaper(cli, gameid): var.ORIGINAL_ROLES[r].add("(dced)"+nck) if var.IDLE_PENALTY: add_warning(cli, nck, var.IDLE_PENALTY, botconfig.NICK, messages["idle_warning"], expires=var.IDLE_EXPIRY) - del_player(cli, nck, end_game = False, death_triggers = False) + del_player(users._get(nck), end_game=False, death_triggers=False) # FIXME chk_win(cli) pl = list_players() x = [a for a in to_warn if a in pl] @@ -2792,7 +2791,7 @@ def reaper(cli, gameid): cli.msg(chan, messages["quit_death_no_reveal"].format(dcedplayer)) if var.PHASE != "join" and var.PART_PENALTY: add_warning(cli, dcedplayer, var.PART_PENALTY, botconfig.NICK, messages["quit_warning"], expires=var.PART_EXPIRY) - if not del_player(cli, dcedplayer, devoice = False, death_triggers = False): + if not del_player(users._get(dcedplayer), devoice=False, death_triggers=False): # FIXME return elif what == "part" and (datetime.now() - timeofdc) > timedelta(seconds=var.PART_GRACE_TIME): if get_role(dcedplayer) != "person" and var.ROLE_REVEAL in ("on", "team"): @@ -2801,7 +2800,7 @@ def reaper(cli, gameid): cli.msg(chan, messages["part_death_no_reveal"].format(dcedplayer)) if var.PHASE != "join" and var.PART_PENALTY: add_warning(cli, dcedplayer, var.PART_PENALTY, botconfig.NICK, messages["part_warning"], expires=var.PART_EXPIRY) - if not del_player(cli, dcedplayer, devoice = False, death_triggers = False): + if not del_player(users._get(dcedplayer), devoice=False, death_triggers=False): # FIXME return elif what == "account" and (datetime.now() - timeofdc) > timedelta(seconds=var.ACC_GRACE_TIME): if get_role(dcedplayer) != "person" and var.ROLE_REVEAL in ("on", "team"): @@ -2810,7 +2809,7 @@ def reaper(cli, gameid): cli.msg(chan, messages["account_death_no_reveal"].format(dcedplayer)) if var.PHASE != "join" and var.ACC_PENALTY: add_warning(cli, dcedplayer, var.ACC_PENALTY, botconfig.NICK, messages["acc_warning"], expires=var.ACC_EXPIRY) - if not del_player(cli, dcedplayer, devoice = False, death_triggers = False): + if not del_player(users._get(dcedplayer), devoice=False, death_triggers=False): # FIXME return time.sleep(10) @@ -3229,7 +3228,7 @@ def leave(var, what, user, why=None): var.USERS[user.nick]["moded"] = set() if killplayer: - del_player(user.client, user.nick, death_triggers=False) + del_player(user, death_triggers=False) else: temp = user.lower() var.DISCONNECTED[user.nick] = (temp.account, temp.userhost, datetime.now(), what) # FIXME: Need to make var.DISCONNECTED hold User instances @@ -3283,7 +3282,7 @@ def leave_game(cli, nick, chan, rest): if nick in var.PLAYERS: var.DCED_PLAYERS[nick] = var.PLAYERS.pop(nick) - del_player(cli, nick, death_triggers = False) + del_player(users._get(nick), death_triggers=False) # FIXME def begin_day(cli): chan = botconfig.CHANNEL @@ -3832,12 +3831,11 @@ def transition_day(cli, gameid=0): # no killers, so assume suicide killer_role[deadperson] = get_main_role(deadperson) - dead_nicks = [p.nick for p in dead] # FIXME: Update once del_player has been updated - for deadperson in dead: + for deadperson in dead[:]: # check if they have already been killed since del_player could do chain reactions and we want # to avoid sending duplicate messages. if deadperson in get_players(): - del_player(cli, deadperson.nick, end_game=False, killer_role=killer_role[deadperson], deadlist=dead_nicks, original=deadperson.nick) + del_player(deadperson, end_game=False, killer_role=killer_role[deadperson], deadlist=dead, original=deadperson) event_end = Event("transition_day_end", {"begin_day": begin_day}) event_end.dispatch(var) @@ -4328,7 +4326,7 @@ def shoot(var, wrapper, message): wrapper.send(messages["gunner_victim_wolf_death"].format(victim,an, victimrole)) else: # off and team wrapper.send(messages["gunner_victim_wolf_death_no_reveal"].format(victim)) - if not del_player(wrapper.source.client, victim, killer_role=get_role(wrapper.source.nick)): + if not del_player(users._get(victim), killer_role=get_main_role(wrapper.source)): # FIXME return elif random.random() <= chances[3]: accident = "accidentally " @@ -4337,7 +4335,7 @@ def shoot(var, wrapper, message): wrapper.send(messages["gunner_victim_villager_death"].format(victim, accident)) if var.ROLE_REVEAL in ("on", "team"): wrapper.send(messages["gunner_victim_role"].format(an, victimrole)) - if not del_player(wrapper.source.client, victim, killer_role=get_role(wrapper.source.nick)): + if not del_player(users._get(victim), killer_role=get_main_role(wrapper.source)): # FIXME return else: wrapper.send(messages["gunner_victim_injured"].format(victim)) @@ -4358,7 +4356,7 @@ def shoot(var, wrapper, message): wrapper.send(messages["gunner_suicide"].format(wrapper.source.nick, get_reveal_role(wrapper.source.nick))) else: wrapper.send(messages["gunner_suicide_no_reveal"].format(wrapper.source.nick)) - if not del_player(wrapper.source.client, wrapper.source.nick, killer_role="villager"): # blame explosion on villager's shoddy gun construction or something + if not del_player(wrapper.source, killer_role="villager"): # blame explosion on villager's shoddy gun construction or something return # Someone won. def is_safe(nick, victim): # replace calls to this with targeted_command event when splitting roles