Properly delete users from UserDict instances

This commit is contained in:
Vgr E. Barry 2018-04-30 16:46:06 -04:00
parent f78d538146
commit f9712e026f
4 changed files with 8 additions and 7 deletions

View File

@ -58,12 +58,12 @@ def on_exchange(evt, var, actor, target, actor_role, target_role):
if actor_role == "doomsayer" and target_role != "doomsayer":
SEEN.discard(actor)
for name, mapping in _mappings:
mapping.pop(actor, None)
del mapping[:actor:]
elif target_role == "doomsayer" and actor_role != "doomsayer":
SEEN.discard(target)
for name, mapping in _mappings:
mapping.pop(target, None)
del mapping[:target:]
@event_listener("del_player")
def on_del_player(evt, var, user, mainrole, allroles, death_triggers):

View File

@ -42,7 +42,8 @@ def dullahan_kill(var, wrapper, message):
@command("retract", "r", chan=False, pm=True, playing=True, phases=("night",), roles=("dullahan",))
def dullahan_retract(var, wrapper, message):
"""Removes a dullahan's kill selection."""
if KILLS.pop(wrapper.source, None):
if wrapper.source in KILLS:
del KILLS[wrapper.source]
wrapper.pm(messages["retracted_kill"])
debuglog("{0} (dullahan) RETRACT".format(wrapper.source))

View File

@ -142,7 +142,7 @@ def on_get_special(evt, var):
def on_del_player(evt, var, user, mainrole, allroles, death_triggers):
if "harlot" not in allroles:
return
VISITED.pop(user, None)
del VISITED[:user:]
PASSED.discard(user)
@event_listener("reset")

View File

@ -71,7 +71,7 @@ def hunter_pass(var, wrapper, message):
def on_del_player(evt, var, user, mainrole, allroles, death_triggers):
HUNTERS.discard(user)
PASSED.discard(user)
KILLS.pop(user, None)
del KILLS[:user:]
for h, v in list(KILLS.items()):
if v is user:
HUNTERS.discard(h)
@ -98,8 +98,8 @@ def on_transition_day(evt, var):
@event_listener("exchange_roles")
def on_exchange(evt, var, actor, target, actor_role, target_role):
KILLS.pop(actor, None)
KILLS.pop(target, None)
del KILLS[:actor:]
del KILLS[:target:]
HUNTERS.discard(actor)
HUNTERS.discard(target)
PASSED.discard(actor)