Don't let dead players with same account/host rejoin in maelstrom
This commit is contained in:
parent
cae1df1423
commit
037065b40c
@ -1148,20 +1148,37 @@ class MaelstromMode(GameMode):
|
|||||||
# succubus keeps around entranced people, who are then unable to win even if there are later no succubi (not very fun)
|
# succubus keeps around entranced people, who are then unable to win even if there are later no succubi (not very fun)
|
||||||
self.roles = list(var.ROLE_GUIDE.keys() - var.TEMPLATE_RESTRICTIONS.keys() - {"amnesiac", "clone", "dullahan", "matchmaker", "monster", "demoniac", "wild child", "succubus"})
|
self.roles = list(var.ROLE_GUIDE.keys() - var.TEMPLATE_RESTRICTIONS.keys() - {"amnesiac", "clone", "dullahan", "matchmaker", "monster", "demoniac", "wild child", "succubus"})
|
||||||
|
|
||||||
|
self.DEAD_ACCOUNTS = set()
|
||||||
|
self.DEAD_HOSTS = set()
|
||||||
|
|
||||||
def startup(self):
|
def startup(self):
|
||||||
events.add_listener("role_attribution", self.role_attribution)
|
events.add_listener("role_attribution", self.role_attribution)
|
||||||
events.add_listener("transition_night_begin", self.transition_night_begin)
|
events.add_listener("transition_night_begin", self.transition_night_begin)
|
||||||
|
events.add_listener("del_player", self.on_del_player)
|
||||||
events.add_listener("join", self.on_join)
|
events.add_listener("join", self.on_join)
|
||||||
|
|
||||||
def teardown(self):
|
def teardown(self):
|
||||||
events.remove_listener("role_attribution", self.role_attribution)
|
events.remove_listener("role_attribution", self.role_attribution)
|
||||||
events.remove_listener("transition_night_begin", self.transition_night_begin)
|
events.remove_listener("transition_night_begin", self.transition_night_begin)
|
||||||
|
events.remove_listener("del_player", self.on_del_player)
|
||||||
events.remove_listener("join", self.on_join)
|
events.remove_listener("join", self.on_join)
|
||||||
|
|
||||||
|
def on_del_player(self, evt, cli, var, nick, nickrole, nicktpls, death_triggers):
|
||||||
|
if is_fake_nick(nick):
|
||||||
|
return
|
||||||
|
|
||||||
|
if not var.DISABLE_ACCOUNTS:
|
||||||
|
self.DEAD_ACCOUNTS.add(irc_lower(var.USERS[nick]["account"]))
|
||||||
|
|
||||||
|
if not var.ACCOUNTS_ONLY:
|
||||||
|
self.DEAD_HOSTS.add(irc_lower(var.USERS[nick]["host"]))
|
||||||
|
|
||||||
def on_join(self, evt, cli, var, nick, chan, rest, forced=False):
|
def on_join(self, evt, cli, var, nick, chan, rest, forced=False):
|
||||||
if var.PHASE != "day" or (nick != chan and chan != botconfig.CHANNEL):
|
if var.PHASE != "day" or (nick != chan and chan != botconfig.CHANNEL):
|
||||||
return
|
return
|
||||||
if nick in var.ALL_PLAYERS:
|
if (irc_lower(nick) in (irc_lower(x) for x in var.ALL_PLAYERS) or
|
||||||
|
irc_lower(var.USERS[nick]["account"]) in self.DEAD_ACCOUNTS or
|
||||||
|
irc_lower(var.USERS[nick]["host"]) in self.DEAD_HOSTS):
|
||||||
cli.notice(nick, messages["maelstrom_dead"])
|
cli.notice(nick, messages["maelstrom_dead"])
|
||||||
return
|
return
|
||||||
if not forced and evt.data["join_player"](cli, nick, botconfig.CHANNEL, sanity=False):
|
if not forced and evt.data["join_player"](cli, nick, botconfig.CHANNEL, sanity=False):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user