diff --git a/src/settings.py b/src/settings.py index 9c308ac..5c63b1a 100644 --- a/src/settings.py +++ b/src/settings.py @@ -75,8 +75,6 @@ ROLE_REVEAL = True LOVER_WINS_WITH_FOOL = False # if fool is lynched, does their lover win with them? DEFAULT_SEEN_AS_VILL = True # non-wolves are seen as villager regardless of the default role -IGNORE_NO_WOLF = False # set to True only when randomizing roles - # Debug mode settings, whether or not timers and stasis should apply during debug mode DISABLE_DEBUG_MODE_TIMERS = True DISABLE_DEBUG_MODE_TIME_LORD = False @@ -755,7 +753,6 @@ class RandomMode(GameMode): """Completely random and hidden roles.""" def __init__(self): self.AMNESIAC_NIGHTS = 1 - self.IGNORE_NO_WOLF = True self.AMNESIAC_BLACKLIST = ["cultist"] self.LOVER_WINS_WITH_FOOL = True self.MAD_SCIENTIST_SKIPS_DEAD_PLAYERS = 0 # always make it happen @@ -790,9 +787,11 @@ class RandomMode(GameMode): def startup(self): events.add_listener("amnesiac_turn", self.amnesiac_turn, 1) + events.add_listener("roles_check", self.roles_check, 1) def teardown(self): events.remove_listener("amnesiac_turn", self.amnesiac_turn, 1) + events.remove_listener("roles_check", self.roles_check, 1) def amnesiac_turn(self, evt, var, amn, role): var.ROLES["amnesiac"].remove(amn) @@ -803,6 +802,9 @@ class RandomMode(GameMode): evt.prevent_default = True + def roles_check(self, evt, var, addroles): + evt.prevent_default = True + # Credits to Metacity for designing and current name # Blame arkiwitect for the original name of KrabbyPatty @game_mode("aleatoire", minp = 8, maxp = 24, likelihood = 4) diff --git a/src/wolfgame.py b/src/wolfgame.py index df5d934..8a08e3d 100644 --- a/src/wolfgame.py +++ b/src/wolfgame.py @@ -5945,22 +5945,25 @@ def start(cli, nick, chan, forced = False, restart = ""): return if var.ORIGINAL_SETTINGS and not restart: # Custom settings - while True: + event = Event("roles_check", {}) + if event.dispatch(var, addroles): + need_reset = True wvs = sum(addroles[r] for r in var.WOLFCHAT_ROLES) if len(villagers) < (sum(addroles.values()) - sum(addroles[r] for r in var.TEMPLATE_RESTRICTIONS.keys())): cli.msg(chan, "There are too few players in the "+ "game to use the custom roles.") - elif not wvs and not var.IGNORE_NO_WOLF: + elif not wvs: cli.msg(chan, "There has to be at least one wolf!") elif wvs > (len(villagers) / 2): cli.msg(chan, "Too many wolves.") else: - break - reset_settings() - cli.msg(chan, "The default settings have been restored. Please !start again.") - var.PHASE = "join" - return + need_reset = False + if need_reset: + reset_settings() + cli.msg(chan, "The default settings have been restored. Please !start again.") + var.PHASE = "join" + return if var.ADMIN_TO_PING and not restart: for decor in (COMMANDS.get("join", []) + COMMANDS.get("start", [])):