use new_role event when a player joins midgame in maelstrom
This commit is contained in:
parent
ef20a35deb
commit
5d6bb8d4c2
@ -1143,31 +1143,14 @@ class MaelstromMode(GameMode):
|
|||||||
if wrapper.source.nick in var.USERS:
|
if wrapper.source.nick in var.USERS:
|
||||||
var.PLAYERS[wrapper.source.nick] = var.USERS[wrapper.source.nick]
|
var.PLAYERS[wrapper.source.nick] = var.USERS[wrapper.source.nick]
|
||||||
|
|
||||||
# TODO: split this out with doctor
|
evt = events.Event("new_role", {"messages": [], "role": role}, inherit_from=None)
|
||||||
if role == "doctor":
|
# Use "player" as old role, to force wolf event to send "new wolf" messages
|
||||||
lpl = len(list_players())
|
evt.dispatch(var, wrapper.source, "player")
|
||||||
var.DOCTORS[wrapper.source.nick] = math.ceil(var.DOCTOR_IMMUNIZATION_MULTIPLIER * lpl)
|
for message in evt.data["messages"]:
|
||||||
# let them know their role
|
wrapper.pm(message)
|
||||||
|
|
||||||
from src.decorators import COMMANDS
|
from src.decorators import COMMANDS
|
||||||
COMMANDS["myrole"][0].caller(wrapper.source.client, wrapper.source.nick, wrapper.target.name, "") # FIXME: New/old API
|
COMMANDS["myrole"][0].caller(wrapper.source.client, wrapper.source.nick, wrapper.target.name, "") # FIXME: New/old API
|
||||||
# if they're a wolfchat role, alert the other wolves
|
|
||||||
if role in var.WOLFCHAT_ROLES:
|
|
||||||
relay_wolfchat_command(wrapper.source.client, wrapper.source.nick, messages["wolfchat_new_member"].format(wrapper.source.nick, "", role), var.WOLFCHAT_ROLES, is_wolf_command=True, is_kill_command=True)
|
|
||||||
# TODO: make this part of !myrole instead, no reason we can't give out wofllist in that
|
|
||||||
wolves = list_players(var.WOLFCHAT_ROLES)
|
|
||||||
pl = get_players()
|
|
||||||
random.shuffle(pl)
|
|
||||||
pl.remove(wrapper.source)
|
|
||||||
for i, player in enumerate(pl):
|
|
||||||
prole = get_main_role(player)
|
|
||||||
if prole in var.WOLFCHAT_ROLES:
|
|
||||||
cursed = ""
|
|
||||||
if player in var.ROLES["cursed villager"]:
|
|
||||||
cursed = "cursed "
|
|
||||||
pl[i] = "\u0002{0}\u0002 ({1}{2})".format(player, cursed, prole)
|
|
||||||
elif player in var.ROLES["cursed villager"]:
|
|
||||||
pl[i] = player.nick + " (cursed)"
|
|
||||||
wrapper.pm(messages["players_list"].format(", ".join(pl)))
|
|
||||||
|
|
||||||
def role_attribution(self, evt, var, chk_win_conditions, villagers):
|
def role_attribution(self, evt, var, chk_win_conditions, villagers):
|
||||||
self.chk_win_conditions = chk_win_conditions
|
self.chk_win_conditions = chk_win_conditions
|
||||||
|
Loading…
x
Reference in New Issue
Block a user