Add a roles check event for when game starts
Also remove `var.IGNORE_NO_WOLF` hack
This commit is contained in:
parent
a8984b6a56
commit
aaaf3df0f5
@ -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)
|
||||
|
@ -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", [])):
|
||||
|
Loading…
x
Reference in New Issue
Block a user