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?
|
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)
|
||||||
|
@ -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", [])):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user