Add additional aliases
mm = matchmaker, ms = mad scientist, vg = vengeful ghost Additionally, allow all special keys to be queried via pstats in an extensible manner (used for vg activated and vg driven off)
This commit is contained in:
parent
d029302ead
commit
f096814fec
@ -243,7 +243,7 @@ def on_reset(evt, var):
|
|||||||
TARGETS.clear()
|
TARGETS.clear()
|
||||||
|
|
||||||
@event_listener("get_role_metadata")
|
@event_listener("get_role_metadata")
|
||||||
def on_get_role_metadata(evt, cli, var, kind):
|
def on_get_role_metadata(evt, var, kind):
|
||||||
if kind == "night_kills":
|
if kind == "night_kills":
|
||||||
num = 0
|
num = 0
|
||||||
for dull in var.ROLES["dullahan"]:
|
for dull in var.ROLES["dullahan"]:
|
||||||
|
@ -168,7 +168,7 @@ def on_reset(evt, var):
|
|||||||
HUNTERS.clear()
|
HUNTERS.clear()
|
||||||
|
|
||||||
@event_listener("get_role_metadata")
|
@event_listener("get_role_metadata")
|
||||||
def on_get_role_metadata(evt, cli, var, kind):
|
def on_get_role_metadata(evt, var, kind):
|
||||||
if kind == "night_kills":
|
if kind == "night_kills":
|
||||||
# hunters is the set of all hunters that have not killed in a *previous* night
|
# hunters is the set of all hunters that have not killed in a *previous* night
|
||||||
# (if they're in both HUNTERS and KILLS, then they killed tonight and should be counted)
|
# (if they're in both HUNTERS and KILLS, then they killed tonight and should be counted)
|
||||||
|
@ -641,7 +641,7 @@ def on_frole_role(evt, cli, var, who, role, oldrole, args):
|
|||||||
break
|
break
|
||||||
|
|
||||||
@event_listener("get_role_metadata")
|
@event_listener("get_role_metadata")
|
||||||
def on_get_role_metadata(evt, cli, var, kind):
|
def on_get_role_metadata(evt, var, kind):
|
||||||
if kind == "night_kills":
|
if kind == "night_kills":
|
||||||
# only add shamans here if they were given a death totem
|
# only add shamans here if they were given a death totem
|
||||||
# even though retribution kills, it is given a special kill message
|
# even though retribution kills, it is given a special kill message
|
||||||
|
@ -45,7 +45,7 @@ def on_update_stats3(evt, cli, var, nick, nickrole, nickreveal, nicktpls):
|
|||||||
return
|
return
|
||||||
if var.PHASE == "day" and var.GAMEPHASE == "night":
|
if var.PHASE == "day" and var.GAMEPHASE == "night":
|
||||||
mevt = Event("get_role_metadata", {})
|
mevt = Event("get_role_metadata", {})
|
||||||
mevt.dispatch(cli, var, "night_kills")
|
mevt.dispatch(var, "night_kills")
|
||||||
nonwolf = 0
|
nonwolf = 0
|
||||||
total = 0
|
total = 0
|
||||||
for role, num in mevt.data.items():
|
for role, num in mevt.data.items():
|
||||||
|
@ -248,8 +248,10 @@ def on_reset(evt, var):
|
|||||||
GHOSTS.clear()
|
GHOSTS.clear()
|
||||||
|
|
||||||
@event_listener("get_role_metadata")
|
@event_listener("get_role_metadata")
|
||||||
def on_get_role_metadata(evt, cli, var, kind):
|
def on_get_role_metadata(evt, var, kind):
|
||||||
if kind == "night_kills":
|
if kind == "night_kills":
|
||||||
evt.data["vengeful ghost"] = sum(1 for against in GHOSTS.values() if against[0] != "!")
|
evt.data["vengeful ghost"] = sum(1 for against in GHOSTS.values() if against[0] != "!")
|
||||||
|
elif kind == "special_keys":
|
||||||
|
evt.data["vengeful ghost"] = {"vg activated", "vg driven off"}
|
||||||
|
|
||||||
# vim: set sw=4 expandtab:
|
# vim: set sw=4 expandtab:
|
||||||
|
@ -151,7 +151,7 @@ def on_reset(evt, var):
|
|||||||
PASSED.clear()
|
PASSED.clear()
|
||||||
|
|
||||||
@event_listener("get_role_metadata")
|
@event_listener("get_role_metadata")
|
||||||
def on_get_role_metadata(evt, cli, var, kind):
|
def on_get_role_metadata(evt, var, kind):
|
||||||
if kind == "night_kills":
|
if kind == "night_kills":
|
||||||
evt.data["vigilante"] = len(var.ROLES["vigilante"])
|
evt.data["vigilante"] = len(var.ROLES["vigilante"])
|
||||||
|
|
||||||
|
@ -450,7 +450,7 @@ def on_reset(evt, var):
|
|||||||
KILLS.clear()
|
KILLS.clear()
|
||||||
|
|
||||||
@event_listener("get_role_metadata")
|
@event_listener("get_role_metadata")
|
||||||
def on_get_role_metadata(evt, cli, var, kind):
|
def on_get_role_metadata(evt, var, kind):
|
||||||
if kind == "night_kills":
|
if kind == "night_kills":
|
||||||
if var.DISEASED_WOLVES:
|
if var.DISEASED_WOLVES:
|
||||||
evt.data["wolf"] = 0
|
evt.data["wolf"] = 0
|
||||||
|
@ -215,6 +215,9 @@ ROLE_ALIASES = {
|
|||||||
"drunk": "village drunk",
|
"drunk": "village drunk",
|
||||||
"cs": "crazed shaman",
|
"cs": "crazed shaman",
|
||||||
"potato": "villager",
|
"potato": "villager",
|
||||||
|
"vg": "vengeful ghost",
|
||||||
|
"mm": "matchmaker",
|
||||||
|
"ms": "mad scientist",
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: move this to a game mode called "fixed" once we implement a way to randomize roles (and have that game mode be called "random")
|
# TODO: move this to a game mode called "fixed" once we implement a way to randomize roles (and have that game mode be called "random")
|
||||||
|
@ -6784,9 +6784,14 @@ def player_stats(cli, nick, chan, rest):
|
|||||||
else:
|
else:
|
||||||
role = " ".join(params[1:])
|
role = " ".join(params[1:])
|
||||||
if role not in var.ROLE_GUIDE.keys():
|
if role not in var.ROLE_GUIDE.keys():
|
||||||
matches = complete_match(role, var.ROLE_GUIDE.keys() | {"lover"})
|
special_keys = {"lover"}
|
||||||
if not matches and role.lower() in var.ROLE_ALIASES:
|
evt = Event("get_role_metadata", {})
|
||||||
|
evt.dispatch(var, "special_keys")
|
||||||
|
special_keys = functools.reduce(lambda x, y: x | y, evt.data.values(), special_keys)
|
||||||
|
if role.lower() in var.ROLE_ALIASES:
|
||||||
matches = (var.ROLE_ALIASES[role.lower()],)
|
matches = (var.ROLE_ALIASES[role.lower()],)
|
||||||
|
else:
|
||||||
|
matches = complete_match(role, var.ROLE_GUIDE.keys() | special_keys)
|
||||||
if not matches:
|
if not matches:
|
||||||
reply(cli, nick, chan, messages["no_such_role"].format(role))
|
reply(cli, nick, chan, messages["no_such_role"].format(role))
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user