Add get_all_players function and use it wherever necessary

This commit is contained in:
Vgr E. Barry 2017-08-30 12:38:09 -04:00
parent 0f1d513daa
commit 17688050d6
13 changed files with 46 additions and 37 deletions

View File

@ -3,7 +3,7 @@ from src.events import Event
from src import settings as var from src import settings as var
from src import users from src import users
__all__ = ["get_players", "get_participants", "get_target", "get_main_role", "get_all_roles"] __all__ = ["get_players", "get_all_players", "get_participants", "get_target", "get_main_role", "get_all_roles"]
def get_players(roles=None, *, mainroles=None): def get_players(roles=None, *, mainroles=None):
if mainroles is None: if mainroles is None:
@ -21,6 +21,16 @@ def get_players(roles=None, *, mainroles=None):
return list(pl) return list(pl)
return [p for p in var.ALL_PLAYERS if p in pl] return [p for p in var.ALL_PLAYERS if p in pl]
def get_all_players(roles=None):
if roles is None:
roles = var.ROLES
pl = set()
for role in roles:
for nick in var.ROLES[role]:
pl.add(users._get(nick)) # FIXME
return pl
def get_participants(): def get_participants():
"""List all players who are still able to participate in the game.""" """List all players who are still able to participate in the game."""
evt = Event("get_participants", {"players": get_players()}) evt = Event("get_participants", {"players": get_players()})

View File

@ -8,7 +8,7 @@ import botconfig
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import users, debuglog, errlog, plog from src import users, debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -229,7 +229,7 @@ def on_transition_night_begin(evt, cli, var):
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
# the messages for angel and guardian angel are different enough to merit individual loops # the messages for angel and guardian angel are different enough to merit individual loops
ps = get_players() ps = get_players()
for bg in get_players(("bodyguard",)): for bg in get_all_players(("bodyguard",)):
pl = ps[:] pl = ps[:]
random.shuffle(pl) random.shuffle(pl)
pl.remove(bg) pl.remove(bg)
@ -243,7 +243,7 @@ def on_transition_night_end(evt, var):
to_send = "bodyguard_simple" to_send = "bodyguard_simple"
bg.send(messages[to_send].format(warning), "Players: " + ", ".join(p.nick for p in pl), sep="\n") bg.send(messages[to_send].format(warning), "Players: " + ", ".join(p.nick for p in pl), sep="\n")
for gangel in get_players(("guardian angel",)): for gangel in get_all_players(("guardian angel",)):
pl = ps[:] pl = ps[:]
random.shuffle(pl) random.shuffle(pl)
gself = messages["guardian_self_notification"] gself = messages["guardian_self_notification"]

View File

@ -8,7 +8,7 @@ import botconfig
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import users, debuglog, errlog, plog from src import users, debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -44,12 +44,11 @@ def on_transition_day_resolve(evt, cli, var, victim):
@event_listener("transition_night_end", priority=5) @event_listener("transition_night_end", priority=5)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
if var.FIRST_NIGHT or var.ALWAYS_PM_ROLE: if var.FIRST_NIGHT or var.ALWAYS_PM_ROLE:
for blessed in var.ROLES["blessed villager"]: # FIXME for blessed in get_all_players(("blessed villager",)):
user = users._get(blessed) # FIXME
to_send = "blessed_notify" to_send = "blessed_notify"
if user.prefers_simple(): if blessed.prefers_simple():
to_send = "blessed_simple" to_send = "blessed_simple"
user.send(messages[to_send]) blessed.send(messages[to_send])
@event_listener("desperation_totem") @event_listener("desperation_totem")
def on_desperation(evt, cli, var, votee, target, prot): def on_desperation(evt, cli, var, votee, target, prot):

View File

@ -5,7 +5,7 @@ import random
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import debuglog, errlog, plog from src import debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -67,7 +67,7 @@ def on_del_player(evt, cli, var, nick, mainrole, allroles, death_triggers):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
evt.data["special"].update(get_players(("detective",))) evt.data["special"].update(get_all_players(("detective",)))
@event_listener("exchange_roles") @event_listener("exchange_roles")
def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role): def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
@ -79,7 +79,7 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
ps = get_players() ps = get_players()
for dttv in get_players(("detective",)): for dttv in get_all_players(("detective",)):
pl = ps[:] pl = ps[:]
random.shuffle(pl) random.shuffle(pl)
pl.remove(dttv) pl.remove(dttv)

View File

@ -4,7 +4,7 @@ import random
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import debuglog, errlog, plog from src import debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -104,7 +104,7 @@ def on_doctor_immunize(evt, cli, var, doctor, target):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
evt.data["special"].update(get_players(("doomsayer",))) evt.data["special"].update(get_all_players(("doomsayer",)))
@event_listener("chk_nightdone") @event_listener("chk_nightdone")
def on_chk_nightdone(evt, cli, var): def on_chk_nightdone(evt, cli, var):

View File

@ -4,7 +4,7 @@ import random
from collections import defaultdict, deque from collections import defaultdict, deque
from src.utilities import * from src.utilities import *
from src.functions import get_players, get_target from src.functions import get_players, get_all_players, get_target
from src import users, debuglog, errlog, plog from src import users, debuglog, errlog, plog
from src.decorators import command, event_listener from src.decorators import command, event_listener
from src.messages import messages from src.messages import messages
@ -131,7 +131,7 @@ def on_swap(evt, var, old_user, user):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
evt.data["special"].update(get_players(("dullahan",))) evt.data["special"].update(get_all_players(("dullahan",)))
@event_listener("transition_day", priority=2) @event_listener("transition_day", priority=2)
def on_transition_day(evt, cli, var): def on_transition_day(evt, cli, var):
@ -163,7 +163,7 @@ def on_chk_nightdone(evt, cli, var):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
for dullahan in get_players(("dullahan",)): for dullahan in get_all_players(("dullahan",)):
targets = list(TARGETS[dullahan]) targets = list(TARGETS[dullahan])
for target in targets[:]: for target in targets[:]:
if target.nick in var.DEAD: if target.nick in var.DEAD:

View File

@ -8,7 +8,7 @@ import botconfig
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import channels, users, debuglog, errlog, plog from src import channels, users, debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -123,7 +123,7 @@ def on_exchange_roles(evt, cli, var, actor, nick, actor_role, nick_role):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
for harlot in get_players(("harlot",)): for harlot in get_all_players(("harlot",)):
pl = get_players() pl = get_players()
random.shuffle(pl) random.shuffle(pl)
pl.remove(harlot) pl.remove(harlot)
@ -138,7 +138,7 @@ def on_begin_day(evt, var):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
evt.data["special"].update(get_players(("harlot",))) evt.data["special"].update(get_all_players(("harlot",)))
@event_listener("del_player") @event_listener("del_player")
def on_del_player(evt, cli, var, nick, mainrole, allroles, death_triggers): def on_del_player(evt, cli, var, nick, mainrole, allroles, death_triggers):

View File

@ -5,7 +5,7 @@ from collections import defaultdict
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import users, debuglog, errlog, plog from src import users, debuglog, errlog, plog
from src.functions import get_players, get_target from src.functions import get_players, get_all_players, get_target
from src.decorators import command, event_listener from src.decorators import command, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -102,7 +102,7 @@ def on_acted(evt, var, nick, sender):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
evt.data["special"].update(get_players(("hunter",))) evt.data["special"].update(get_all_players(("hunter",)))
@event_listener("transition_day", priority=2) @event_listener("transition_day", priority=2)
def on_transition_day(evt, cli, var): def on_transition_day(evt, cli, var):
@ -133,7 +133,7 @@ def on_chk_nightdone(evt, cli, var):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
ps = get_players() ps = get_players()
for hunter in get_players(("hunter",)): for hunter in get_all_players(("hunter",)):
if hunter in HUNTERS: if hunter in HUNTERS:
continue # already killed continue # already killed
pl = ps[:] pl = ps[:]

View File

@ -8,7 +8,7 @@ import botconfig
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import channels, users, debuglog, errlog, plog from src import channels, users, debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import command, event_listener from src.decorators import command, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -152,7 +152,7 @@ def on_del_player(evt, cli, var, nick, mainrole, allroles, death_triggers):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
for ms in get_players(("mad scientist",)): for ms in get_all_players(("mad scientist",)):
pl = list_players() pl = list_players()
target1, target2 = _get_targets(var, pl, ms.nick) # FIXME: Need to update _get_targets to accept users target1, target2 = _get_targets(var, pl, ms.nick) # FIXME: Need to update _get_targets to accept users

View File

@ -4,7 +4,7 @@ import random
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import debuglog, errlog, plog from src import debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -51,12 +51,12 @@ def on_transition_night_end(evt, var):
neutral = set(get_players(var.TRUE_NEUTRAL_ROLES)) neutral = set(get_players(var.TRUE_NEUTRAL_ROLES))
special = evt2.data["special"] special = evt2.data["special"]
for wolf in get_players(("wolf mystic",)): for wolf in get_all_players(("wolf mystic",)):
# if adding this info to !myrole, you will need to save off this count so that they can't get updated info until the next night # if adding this info to !myrole, you will need to save off this count so that they can't get updated info until the next night
# # of special villagers = # of players - # of villagers - # of wolves - # of neutrals # # of special villagers = # of players - # of villagers - # of wolves - # of neutrals
numvills = len(special & (pl - wolves - neutral)) numvills = len(special & (pl - wolves - neutral))
wolf.send(messages["wolf_mystic_info"].format("are" if numvills != 1 else "is", numvills, "s" if numvills != 1 else "")) wolf.send(messages["wolf_mystic_info"].format("are" if numvills != 1 else "is", numvills, "s" if numvills != 1 else ""))
for mystic in get_players(("mystic",)): for mystic in get_all_players(("mystic",)):
to_send = "mystic_notify" to_send = "mystic_notify"
if mystic.prefers_simple(): if mystic.prefers_simple():
to_send = "mystic_simple" to_send = "mystic_simple"
@ -67,6 +67,6 @@ def on_transition_night_end(evt, var):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
# mystics count as special even though they don't have any commands # mystics count as special even though they don't have any commands
evt.data["special"].update(get_players(("mystic",))) evt.data["special"].update(get_all_players(("mystic",)))
# vim: set sw=4 expandtab: # vim: set sw=4 expandtab:

View File

@ -8,7 +8,7 @@ import botconfig
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import channels, users, debuglog, errlog, plog from src import channels, users, debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -268,7 +268,7 @@ def on_targeted_command(evt, cli, var, cmd, actor, orig_target, tags):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
succubi = get_players(("succubus",)) succubi = get_all_players(("succubus",))
for succubus in succubi: for succubus in succubi:
pl = get_players() pl = get_players()
random.shuffle(pl) random.shuffle(pl)
@ -299,7 +299,7 @@ def on_transition_day(evt, cli, var):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
evt.data["special"].update(get_players(("succubus",))) evt.data["special"].update(get_all_players(("succubus",)))
@event_listener("vg_kill") @event_listener("vg_kill")
def on_vg_kill(evt, var, ghost, target): def on_vg_kill(evt, var, ghost, target):

View File

@ -5,7 +5,7 @@ from collections import defaultdict
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import debuglog, errlog, plog from src import debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -94,7 +94,7 @@ def on_acted(evt, var, nick, sender):
@event_listener("get_special") @event_listener("get_special")
def on_get_special(evt, var): def on_get_special(evt, var):
evt.data["special"].update(get_players(("vigilante",))) evt.data["special"].update(get_all_players(("vigilante",)))
@event_listener("transition_day", priority=2) @event_listener("transition_day", priority=2)
def on_transition_day(evt, cli, var): def on_transition_day(evt, cli, var):
@ -125,7 +125,7 @@ def on_chk_nightdone(evt, cli, var):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
ps = get_players() ps = get_players()
for vigilante in get_players(("vigilante",)): for vigilante in get_all_players(("vigilante",)):
pl = ps[:] pl = ps[:]
random.shuffle(pl) random.shuffle(pl)
pl.remove(vigilante) pl.remove(vigilante)

View File

@ -4,7 +4,7 @@ import re
import src.settings as var import src.settings as var
from src.utilities import * from src.utilities import *
from src import users, debuglog, errlog, plog from src import users, debuglog, errlog, plog
from src.functions import get_players from src.functions import get_players, get_all_players
from src.decorators import cmd, event_listener from src.decorators import cmd, event_listener
from src.messages import messages from src.messages import messages
from src.events import Event from src.events import Event
@ -139,7 +139,7 @@ def on_transition_day_begin(evt, cli, var):
@event_listener("transition_night_end", priority=2) @event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var): def on_transition_night_end(evt, var):
for child in get_players(("wild child",)): for child in get_all_players(("wild child",)):
to_send = "child_notify" to_send = "child_notify"
if child.prefers_simple(): if child.prefers_simple():
to_send = "child_simple" to_send = "child_simple"