Add a roles check event for when game starts

Also remove `var.IGNORE_NO_WOLF` hack
This commit is contained in:
Vgr E.Barry 2015-06-14 16:34:42 -04:00
parent a8984b6a56
commit aaaf3df0f5
2 changed files with 15 additions and 10 deletions

View File

@ -75,8 +75,6 @@ ROLE_REVEAL = True
LOVER_WINS_WITH_FOOL = False # if fool is lynched, does their lover win with them? 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 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 # Debug mode settings, whether or not timers and stasis should apply during debug mode
DISABLE_DEBUG_MODE_TIMERS = True DISABLE_DEBUG_MODE_TIMERS = True
DISABLE_DEBUG_MODE_TIME_LORD = False DISABLE_DEBUG_MODE_TIME_LORD = False
@ -755,7 +753,6 @@ class RandomMode(GameMode):
"""Completely random and hidden roles.""" """Completely random and hidden roles."""
def __init__(self): def __init__(self):
self.AMNESIAC_NIGHTS = 1 self.AMNESIAC_NIGHTS = 1
self.IGNORE_NO_WOLF = True
self.AMNESIAC_BLACKLIST = ["cultist"] self.AMNESIAC_BLACKLIST = ["cultist"]
self.LOVER_WINS_WITH_FOOL = True self.LOVER_WINS_WITH_FOOL = True
self.MAD_SCIENTIST_SKIPS_DEAD_PLAYERS = 0 # always make it happen self.MAD_SCIENTIST_SKIPS_DEAD_PLAYERS = 0 # always make it happen
@ -790,9 +787,11 @@ class RandomMode(GameMode):
def startup(self): def startup(self):
events.add_listener("amnesiac_turn", self.amnesiac_turn, 1) events.add_listener("amnesiac_turn", self.amnesiac_turn, 1)
events.add_listener("roles_check", self.roles_check, 1)
def teardown(self): def teardown(self):
events.remove_listener("amnesiac_turn", self.amnesiac_turn, 1) 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): def amnesiac_turn(self, evt, var, amn, role):
var.ROLES["amnesiac"].remove(amn) var.ROLES["amnesiac"].remove(amn)
@ -803,6 +802,9 @@ class RandomMode(GameMode):
evt.prevent_default = True evt.prevent_default = True
def roles_check(self, evt, var, addroles):
evt.prevent_default = True
# Credits to Metacity for designing and current name # Credits to Metacity for designing and current name
# Blame arkiwitect for the original name of KrabbyPatty # Blame arkiwitect for the original name of KrabbyPatty
@game_mode("aleatoire", minp = 8, maxp = 24, likelihood = 4) @game_mode("aleatoire", minp = 8, maxp = 24, likelihood = 4)

View File

@ -5945,22 +5945,25 @@ def start(cli, nick, chan, forced = False, restart = ""):
return return
if var.ORIGINAL_SETTINGS and not restart: # Custom settings 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) 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())): 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 "+ cli.msg(chan, "There are too few players in the "+
"game to use the custom roles.") "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!") cli.msg(chan, "There has to be at least one wolf!")
elif wvs > (len(villagers) / 2): elif wvs > (len(villagers) / 2):
cli.msg(chan, "Too many wolves.") cli.msg(chan, "Too many wolves.")
else: else:
break need_reset = False
reset_settings()
cli.msg(chan, "The default settings have been restored. Please !start again.")
var.PHASE = "join"
return
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: if var.ADMIN_TO_PING and not restart:
for decor in (COMMANDS.get("join", []) + COMMANDS.get("start", [])): for decor in (COMMANDS.get("join", []) + COMMANDS.get("start", [])):