Add a way to conceal roles from certain game modes.
This commit is contained in:
parent
28f4e0a2dd
commit
868db7cf07
@ -1396,7 +1396,7 @@ def stats(cli, nick, chan, rest):
|
|||||||
else:
|
else:
|
||||||
cli.notice(nick, msg)
|
cli.notice(nick, msg)
|
||||||
|
|
||||||
if var.PHASE == "join" or not var.ROLE_REVEAL:
|
if var.PHASE == "join" or not var.ROLE_REVEAL or var.GAME_MODES[var.CURRENT_GAMEMODE][4]:
|
||||||
return
|
return
|
||||||
|
|
||||||
message = []
|
message = []
|
||||||
@ -6639,30 +6639,37 @@ def listroles(cli, nick, chan, rest):
|
|||||||
old[r] = 0
|
old[r] = 0
|
||||||
rest = re.split(" +", rest.strip(), 1)
|
rest = re.split(" +", rest.strip(), 1)
|
||||||
#prepend player count if called without any arguments
|
#prepend player count if called without any arguments
|
||||||
if not len(rest[0]) and pl > 0:
|
if var.GAME_MODES[var.CURRENT_GAMEMODE][4]:
|
||||||
|
txt += " {0}: {1}roles was disabled for this game mode.".format(nick, botconfig.CMD_CHAR)
|
||||||
|
rest = []
|
||||||
|
roleindex = {}
|
||||||
|
elif not len(rest[0]) and pl > 0:
|
||||||
txt += " {0}: There {1} \u0002{2}\u0002 playing.".format(nick, "is" if pl == 1 else "are", pl)
|
txt += " {0}: There {1} \u0002{2}\u0002 playing.".format(nick, "is" if pl == 1 else "are", pl)
|
||||||
if var.PHASE in ["night", "day"]:
|
if var.PHASE in ["night", "day"]:
|
||||||
txt += " Using the {0} game mode.".format(var.CURRENT_GAMEMODE)
|
txt += " Using the {0} game mode.".format(var.CURRENT_GAMEMODE)
|
||||||
|
|
||||||
#read game mode to get roles for
|
#read game mode to get roles for
|
||||||
if len(rest[0]) and not rest[0].isdigit():
|
elif len(rest[0]) and not rest[0].isdigit():
|
||||||
gamemode = rest[0]
|
gamemode = rest[0]
|
||||||
if gamemode not in var.GAME_MODES.keys():
|
if gamemode not in var.GAME_MODES.keys():
|
||||||
gamemode, _ = complete_match(rest[0], var.GAME_MODES.keys() - ["roles"])
|
gamemode, _ = complete_match(rest[0], var.GAME_MODES.keys() - ["roles"])
|
||||||
if gamemode in var.GAME_MODES.keys() and gamemode != "roles":
|
if gamemode in var.GAME_MODES.keys() and gamemode != "roles" and not var.GAME_MODES[gamemode][4]:
|
||||||
mode = var.GAME_MODES[gamemode][0]()
|
mode = var.GAME_MODES[gamemode][0]()
|
||||||
if hasattr(mode, "ROLE_INDEX"):
|
if hasattr(mode, "ROLE_INDEX"):
|
||||||
roleindex = getattr(mode, "ROLE_INDEX")
|
roleindex = getattr(mode, "ROLE_INDEX")
|
||||||
if hasattr(mode, "ROLE_GUIDE"):
|
if hasattr(mode, "ROLE_GUIDE"):
|
||||||
roleguide = getattr(mode, "ROLE_GUIDE")
|
roleguide = getattr(mode, "ROLE_GUIDE")
|
||||||
rest.pop(0)
|
rest.pop(0)
|
||||||
|
else:
|
||||||
|
if var.GAME_MODES[gamemode][4]:
|
||||||
|
txt += " {0}: {1}roles was disabled for this game mode.".format(nick, botconfig.CMD_CHAR)
|
||||||
else:
|
else:
|
||||||
txt += " {0}: {1} is not a valid game mode.".format(nick, rest[0])
|
txt += " {0}: {1} is not a valid game mode.".format(nick, rest[0])
|
||||||
rest = []
|
rest = []
|
||||||
roleindex = {}
|
roleindex = {}
|
||||||
|
|
||||||
#number of players to print the game mode for
|
#number of players to print the game mode for
|
||||||
if len(rest) and rest[0].isdigit():
|
elif len(rest) and rest[0].isdigit():
|
||||||
index = int(rest[0])
|
index = int(rest[0])
|
||||||
for i in range(len(roleindex)-1, -1, -1):
|
for i in range(len(roleindex)-1, -1, -1):
|
||||||
if roleindex[i] <= index:
|
if roleindex[i] <= index:
|
||||||
|
@ -382,9 +382,9 @@ def break_long_message(phrases, joinstr = " "):
|
|||||||
return message
|
return message
|
||||||
|
|
||||||
class InvalidModeException(Exception): pass
|
class InvalidModeException(Exception): pass
|
||||||
def game_mode(name, minp, maxp, likelihood = 0):
|
def game_mode(name, minp, maxp, likelihood = 0, conceal_roles = False):
|
||||||
def decor(c):
|
def decor(c):
|
||||||
GAME_MODES[name] = (c, minp, maxp, likelihood)
|
GAME_MODES[name] = (c, minp, maxp, likelihood, conceal_roles)
|
||||||
return c
|
return c
|
||||||
return decor
|
return decor
|
||||||
|
|
||||||
@ -690,7 +690,7 @@ class MatchmakerMode(object):
|
|||||||
"mad scientist" : [(1 if i >= 18 else 0) for i in self.ROLE_INDEX]
|
"mad scientist" : [(1 if i >= 18 else 0) for i in self.ROLE_INDEX]
|
||||||
})
|
})
|
||||||
|
|
||||||
@game_mode("random", minp = 8, maxp = 24, likelihood = 0)
|
@game_mode("random", minp = 8, maxp = 24, likelihood = 0, conceal_roles = True)
|
||||||
class RandomMode(object):
|
class RandomMode(object):
|
||||||
"""Completely random and hidden roles."""
|
"""Completely random and hidden roles."""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user