Maelstrom fixes
- Don't allow dead players to re-join - Don't end game via a midgame join (e.g. ensure that numbers are good after the join)
This commit is contained in:
parent
805ee7e18a
commit
48b5db2d9c
@ -774,5 +774,6 @@
|
|||||||
"fspectate_deadchat_disabled": "Deadchat is disabled and may not be spectated.",
|
"fspectate_deadchat_disabled": "Deadchat is disabled and may not be spectated.",
|
||||||
"fspectate_in_deadchat": "You are currently in deadchat.",
|
"fspectate_in_deadchat": "You are currently in deadchat.",
|
||||||
"fspectate_on": "You are now spectating {0}.",
|
"fspectate_on": "You are now spectating {0}.",
|
||||||
"fspectate_off": "You are no longer spectating {0}."
|
"fspectate_off": "You are no longer spectating {0}.",
|
||||||
|
"maelstrom_dead": "You are dead and cannot join again."
|
||||||
}
|
}
|
||||||
|
@ -1074,6 +1074,9 @@ class MaelstromMode(GameMode):
|
|||||||
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:
|
||||||
|
cli.notice(nick, messages["maelstrom_dead"])
|
||||||
|
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):
|
||||||
self._on_join(cli, var, nick, chan)
|
self._on_join(cli, var, nick, chan)
|
||||||
evt.prevent_default = True
|
evt.prevent_default = True
|
||||||
@ -1087,6 +1090,20 @@ class MaelstromMode(GameMode):
|
|||||||
var.ROLES[role].add(nick)
|
var.ROLES[role].add(nick)
|
||||||
var.ORIGINAL_ROLES[role].add(nick)
|
var.ORIGINAL_ROLES[role].add(nick)
|
||||||
var.FINAL_ROLES[nick] = role
|
var.FINAL_ROLES[nick] = role
|
||||||
|
|
||||||
|
lpl = len(var.list_players())
|
||||||
|
lwolves = len(var.list_players(var.WOLFCHAT_ROLES))
|
||||||
|
lcubs = len(var.ROLES["wolf cub"])
|
||||||
|
lrealwolves = len(var.list_players(var.WOLF_ROLES)) - lcubs
|
||||||
|
lmonsters = len(var.ROLES["monster"])
|
||||||
|
ldemoniacs = len(var.ROLES["demoniac"])
|
||||||
|
ltraitors = len(var.ROLES["traitor"])
|
||||||
|
lpipers = len(var.ROLES["piper"])
|
||||||
|
lsuccubi = len(var.ROLES["succubus"])
|
||||||
|
|
||||||
|
if self.chk_win_conditions(lpl, lwolves, lcubs, lrealwolves, lmonsters, ldemoniacs, ltraitors, lpipers, lsuccubi, 0, cli, end_game=False):
|
||||||
|
return self._on_join(cli, var, nick, chan)
|
||||||
|
|
||||||
if role == "doctor":
|
if role == "doctor":
|
||||||
lpl = len(var.list_players())
|
lpl = len(var.list_players())
|
||||||
var.DOCTORS[nick] = math.ceil(var.DOCTOR_IMMUNIZATION_MULTIPLIER * lpl)
|
var.DOCTORS[nick] = math.ceil(var.DOCTOR_IMMUNIZATION_MULTIPLIER * lpl)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user