Update the chk_nightdone function and event
This commit is contained in:
parent
a5c3f0694c
commit
516d1d0c8c
@ -210,9 +210,9 @@ class VillagergameMode(GameMode):
|
||||
else:
|
||||
evt.data["winner"] = None
|
||||
|
||||
def chk_nightdone(self, evt, cli, var):
|
||||
def chk_nightdone(self, evt, var):
|
||||
transition_day = evt.data["transition_day"]
|
||||
evt.data["transition_day"] = lambda cli2, gameid=0: self.prolong_night(cli2, var, gameid, transition_day)
|
||||
evt.data["transition_day"] = lambda cli, gameid=0: self.prolong_night(cli, var, gameid, transition_day)
|
||||
|
||||
def prolong_night(self, cli, var, gameid, transition_day):
|
||||
nspecials = len(var.ROLES["seer"] | var.ROLES["harlot"] | var.ROLES["shaman"] | var.ROLES["crazed shaman"])
|
||||
@ -1126,7 +1126,7 @@ class SleepyMode(GameMode):
|
||||
pm(cli, self.having_nightmare, messages["sleepy_nightmare_restart"])
|
||||
self.nightmare_step(cli)
|
||||
|
||||
def prolong_night(self, evt, cli, var):
|
||||
def prolong_night(self, evt, var):
|
||||
if self.having_nightmare is not None:
|
||||
evt.data["actedcount"] = -1
|
||||
|
||||
|
@ -112,9 +112,9 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
del LASTGUARDED[nick]
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(GUARDED) + len(PASSED)
|
||||
evt.data["nightroles"].extend(list_players(("guardian angel", "bodyguard")))
|
||||
evt.data["nightroles"].extend(get_players(("guardian angel", "bodyguard")))
|
||||
|
||||
@event_listener("transition_day", priority=4.2)
|
||||
def on_transition_day(evt, cli, var):
|
||||
|
@ -107,9 +107,9 @@ def on_get_special(evt, var):
|
||||
evt.data["special"].update(get_players(("doomsayer",)))
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(SEEN)
|
||||
evt.data["nightroles"].extend(get_roles("doomsayer"))
|
||||
evt.data["nightroles"].extend(get_all_players(("doomsayer",)))
|
||||
|
||||
@event_listener("abstain")
|
||||
def on_abstain(evt, cli, var, nick):
|
||||
|
@ -154,7 +154,7 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
TARGET[users._get(actor)] = TARGETS.pop(k) - {users._get(actor)} # FIXME
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
spl = set(get_players())
|
||||
evt.data["actedcount"] += len(KILLS)
|
||||
for dullahan, targets in TARGETS.items():
|
||||
|
@ -104,9 +104,9 @@ def on_night_acted(evt, var, user, actor):
|
||||
evt.data["acted"] = True
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(VISITED)
|
||||
evt.data["nightroles"].extend(var.ROLES["harlot"])
|
||||
evt.data["nightroles"].extend(get_all_players(("harlot",)))
|
||||
|
||||
@event_listener("exchange_roles")
|
||||
def on_exchange_roles(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
|
@ -124,9 +124,9 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
PASSED.discard(target)
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(KILLS) + len(PASSED)
|
||||
hunter_users = (users._get(p) for p in var.ROLES["hunter"]) # FIXME
|
||||
hunter_users = get_all_players(("hunter",))
|
||||
evt.data["nightroles"].extend([p for p in hunter_users if p not in HUNTERS or p in KILLS])
|
||||
|
||||
@event_listener("transition_night_end", priority=2)
|
||||
|
@ -5,7 +5,7 @@ import src.settings as var
|
||||
from src.utilities import *
|
||||
from src import debuglog, errlog, plog
|
||||
from src.decorators import cmd, event_listener
|
||||
from src.functions import get_players, get_main_role
|
||||
from src.functions import get_players, get_all_players, get_main_role
|
||||
from src.messages import messages
|
||||
from src.events import Event
|
||||
|
||||
@ -100,9 +100,9 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
SEEN.discard(actor)
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(SEEN)
|
||||
evt.data["nightroles"].extend(get_roles("seer", "oracle", "augur"))
|
||||
evt.data["nightroles"].extend(get_all_players(("seer", "oracle", "augur")))
|
||||
|
||||
@event_listener("transition_night_end", priority=2)
|
||||
def on_transition_night_end(evt, var):
|
||||
|
@ -176,9 +176,9 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
TOTEMS[nick] = actor_totem
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(SHAMANS)
|
||||
evt.data["nightroles"].extend(list_players(var.TOTEM_ORDER))
|
||||
evt.data["nightroles"].extend(get_players(var.TOTEM_ORDER))
|
||||
|
||||
@event_listener("get_voters")
|
||||
def on_get_voters(evt, var):
|
||||
|
@ -251,9 +251,9 @@ def on_night_acted(evt, var, user, actor):
|
||||
evt.data["acted"] = True
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(VISITED)
|
||||
evt.data["nightroles"].extend(var.ROLES["succubus"])
|
||||
evt.data["nightroles"].extend(get_all_players(("succubus",)))
|
||||
|
||||
@event_listener("targeted_command")
|
||||
def on_targeted_command(evt, cli, var, cmd, actor, orig_target, tags):
|
||||
|
@ -184,9 +184,9 @@ def on_get_participant_role(evt, var, user):
|
||||
evt.data["role"] = "villager"
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(KILLS)
|
||||
evt.data["nightroles"].extend([p.nick for p in GHOSTS if GHOSTS[p][0] != "!"])
|
||||
evt.data["nightroles"].extend([p for p in GHOSTS if GHOSTS[p][0] != "!"])
|
||||
|
||||
@event_listener("transition_night_end", priority=2)
|
||||
def on_transition_night_end(evt, var):
|
||||
|
@ -118,9 +118,9 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
PASSED.discard(nick)
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
evt.data["actedcount"] += len(KILLS) + len(PASSED)
|
||||
evt.data["nightroles"].extend(get_roles("vigilante"))
|
||||
evt.data["nightroles"].extend(get_all_players(("vigilante",)))
|
||||
|
||||
@event_listener("transition_night_end", priority=2)
|
||||
def on_transition_night_end(evt, var):
|
||||
|
@ -124,10 +124,10 @@ def on_del_player(evt, var, user, mainrole, allroles, death_triggers):
|
||||
child.send(messages["no_other_wolves"])
|
||||
|
||||
@event_listener("chk_nightdone")
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
if var.FIRST_NIGHT:
|
||||
evt.data["actedcount"] += len(IDOLS.keys())
|
||||
evt.data["nightroles"].extend(var.ROLES["wild child"])
|
||||
evt.data["nightroles"].extend(get_all_players(("wild child",)))
|
||||
|
||||
@event_listener("transition_day_begin")
|
||||
def on_transition_day_begin(evt, cli, var):
|
||||
|
@ -289,13 +289,13 @@ def on_exchange(evt, cli, var, actor, nick, actor_role, nick_role):
|
||||
del KILLS[nick]
|
||||
|
||||
@event_listener("chk_nightdone", priority=3)
|
||||
def on_chk_nightdone(evt, cli, var):
|
||||
def on_chk_nightdone(evt, var):
|
||||
if not var.DISEASED_WOLVES:
|
||||
evt.data["actedcount"] += len(KILLS)
|
||||
evt.data["nightroles"].extend(list_players(CAN_KILL))
|
||||
evt.data["nightroles"].extend(get_players(CAN_KILL))
|
||||
|
||||
@event_listener("chk_nightdone", priority=20)
|
||||
def on_chk_nightdone2(evt, cli, var):
|
||||
def on_chk_nightdone2(evt, var):
|
||||
if not evt.prevent_default:
|
||||
nevt = Event("wolf_numkills", {"numkills": 1})
|
||||
nevt.dispatch(var)
|
||||
|
@ -49,7 +49,7 @@ import src.settings as var
|
||||
from src.utilities import *
|
||||
from src import db, events, dispatcher, channels, users, hooks, logger, proxy, debuglog, errlog, plog
|
||||
from src.decorators import command, cmd, hook, handle_error, event_listener, COMMANDS
|
||||
from src.functions import get_players, get_participants, get_main_role
|
||||
from src.functions import get_players, get_all_players, get_participants, get_main_role
|
||||
from src.messages import messages
|
||||
from src.warnings import *
|
||||
from src.context import IRCContext
|
||||
@ -3850,12 +3850,12 @@ def chk_nightdone(cli):
|
||||
if var.PHASE != "night":
|
||||
return
|
||||
|
||||
pl = list_players()
|
||||
pl = get_players()
|
||||
spl = set(pl)
|
||||
actedcount = sum(map(len, (var.PASSED, var.OBSERVED,
|
||||
var.HEXED, var.CURSED, var.CHARMERS)))
|
||||
|
||||
nightroles = get_roles("sorcerer", "hag", "warlock", "werecrow", "piper", "prophet")
|
||||
nightroles = list(get_all_players(("sorcerer", "hag", "warlock", "werecrow", "piper", "prophet")))
|
||||
|
||||
for nick, info in var.PRAYED.items():
|
||||
if info[0] > 0:
|
||||
@ -3863,31 +3863,32 @@ def chk_nightdone(cli):
|
||||
|
||||
if var.FIRST_NIGHT:
|
||||
actedcount += len(var.MATCHMAKERS | var.CLONED.keys())
|
||||
nightroles.extend(get_roles("matchmaker", "clone"))
|
||||
nightroles.extend(get_all_players(("matchmaker", "clone")))
|
||||
|
||||
if var.ALPHA_ENABLED:
|
||||
# alphas both kill and bite if they're activated at night, so add them into the counts
|
||||
nightroles.extend(get_roles("alpha wolf"))
|
||||
nightroles.extend(get_all_players(("alpha wolf",)))
|
||||
actedcount += len([p for p in var.ALPHA_WOLVES if p in var.ROLES["alpha wolf"]])
|
||||
|
||||
# add in turncoats who should be able to act -- if they passed they're already in var.PASSED
|
||||
# but if they can act they're in var.TURNCOATS where the second tuple item is the current night
|
||||
# (if said tuple item is the previous night, then they are not allowed to act tonight)
|
||||
for tc, tu in var.TURNCOATS.items():
|
||||
if tc not in pl:
|
||||
user = users._get(tc) # FIXME
|
||||
if user not in pl:
|
||||
continue
|
||||
if tu[1] == var.NIGHT_COUNT:
|
||||
nightroles.append(tc)
|
||||
nightroles.append(user)
|
||||
actedcount += 1
|
||||
elif tu[1] < var.NIGHT_COUNT - 1:
|
||||
nightroles.append(tc)
|
||||
nightroles.append(user)
|
||||
|
||||
event = Event("chk_nightdone", {"actedcount": actedcount, "nightroles": nightroles, "transition_day": transition_day})
|
||||
event.dispatch(cli, var)
|
||||
event.dispatch(var)
|
||||
actedcount = event.data["actedcount"]
|
||||
|
||||
# remove all instances of their name if they are silenced (makes implementing the event easier)
|
||||
nightroles = [p for p in nightroles if p not in var.SILENCED]
|
||||
# remove all instances of them if they are silenced (makes implementing the event easier)
|
||||
nightroles = [p for p in nightroles if p.nick not in var.SILENCED]
|
||||
|
||||
if var.PHASE == "night" and actedcount >= len(nightroles):
|
||||
if not event.prevent_default:
|
||||
|
Loading…
Reference in New Issue
Block a user