Change handling of chk_win events

This commit is contained in:
Vgr E. Barry 2015-10-19 15:05:14 -04:00
parent 04180bc036
commit 27f39c916f
2 changed files with 7 additions and 5 deletions

View File

@ -111,8 +111,7 @@ class GameMode:
if len(lovers) == lpl:
evt.data["winner"] = "lovers"
evt.data["message"] = "Game over! All of the remaining villagers are in love with each other! All of them win."
evt.data["players"] = ["{0} ({1})".format(x, var.get_role(x)) for x in lovers]
evt.data["winners"] = list(lovers)
evt.data["additional_winners"] = list(lovers)
@game_mode("roles", minp = 4, maxp = 35)
class ChangedRolesMode(GameMode):

View File

@ -2623,7 +2623,7 @@ def chk_win_conditions(lpl, lwolves, lcubs, lrealwolves, lmonsters, ltraitors, l
ltraitors = len(var.ROLES.get("traitor", ()))
return chk_win_conditions(lpl, lwolves, lcubs, lrealwolves, lmonsters, ltraitors, lpipers, cli, end_game)
event = Event("chk_win", {"winner": winner, "message": message, "players": [], "winners": None})
event = Event("chk_win", {"winner": winner, "message": message, "additional_winners": None})
event.dispatch(var, lpl, lwolves, lrealwolves)
winner = event.data["winner"]
message = event.data["message"]
@ -2632,7 +2632,10 @@ def chk_win_conditions(lpl, lwolves, lcubs, lrealwolves, lmonsters, ltraitors, l
return False
if end_game:
players = event.data["players"]
if event.data["additional_winners"] is None:
players = []
else:
players = ["{0} ({1})".format(x, var.get_role(x)) for x in event.data["additional_winners"]]
if winner == "monsters":
for plr in var.ROLES["monster"]:
players.append("{0} ({1})".format(plr, var.get_role(plr)))
@ -2649,7 +2652,7 @@ def chk_win_conditions(lpl, lwolves, lcubs, lrealwolves, lmonsters, ltraitors, l
debuglog("WIN:", winner)
debuglog("PLAYERS:", ", ".join(players))
cli.msg(chan, message)
stop_game(cli, winner, winners=event.data["winners"])
stop_game(cli, winner, winners=event.data["additional_winners"])
return True
def del_player(cli, nick, forced_death = False, devoice = True, end_game = True, death_triggers = True, killer_role = "", deadlist = [], original = "", cmode = [], ismain = True):