Swap what GA and bodyguard do because it makes more sense if bodyguard dies and GA doesn't
This commit is contained in:
parent
9265d9cfa5
commit
0a9d5c8817
@ -1311,18 +1311,18 @@ def del_player(cli, nick, forced_death = False, devoice = True, end_game = True,
|
|||||||
cli.msg(botconfig.CHANNEL, message)
|
cli.msg(botconfig.CHANNEL, message)
|
||||||
var.LOGGER.logMessage(message.replace("\02", ""))
|
var.LOGGER.logMessage(message.replace("\02", ""))
|
||||||
elif target in var.GUARDED.values() and var.GHOSTPHASE == "night":
|
elif target in var.GUARDED.values() and var.GHOSTPHASE == "night":
|
||||||
for bg in var.ROLES["bodyguard"]:
|
for bg in var.ROLES["guardian angel"]:
|
||||||
if bg in var.GUARDED and var.GUARDED[bg] == target:
|
if bg in var.GUARDED and var.GUARDED[bg] == target:
|
||||||
message = ("Before dying, \u0002{0}\u0002 quickly attempts to slit \u0002{1}\u0002's throat, " +
|
message = ("Before dying, \u0002{0}\u0002 quickly attempts to slit \u0002{1}\u0002's throat, " +
|
||||||
"however a bodyguard was on duty and able to foil the attempt.").format(nick, target)
|
"however a guardian angel was on duty and able to foil the attempt.").format(nick, target)
|
||||||
cli.msg(botconfig.CHANNEL, message)
|
cli.msg(botconfig.CHANNEL, message)
|
||||||
var.LOGGER.logMessage(message.replace("\02", ""))
|
var.LOGGER.logMessage(message.replace("\02", ""))
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
for ga in var.ROLES["guardian angel"]:
|
for ga in var.ROLES["bodyguard"]:
|
||||||
if ga in var.GUARDED and var.GUARDED[ga] == target:
|
if ga in var.GUARDED and var.GUARDED[ga] == target:
|
||||||
message = ("Before dying, \u0002{0}\u0002 quickly attempts to slit \u0002{1}\u0002's throat, " +
|
message = ("Before dying, \u0002{0}\u0002 quickly attempts to slit \u0002{1}\u0002's throat, " +
|
||||||
"however \u0002{2}\u0002, a guardian angel, sacrificed their life to protect them.").format(nick, target, ga)
|
"however \u0002{2}\u0002, a bodyguard, sacrificed their life to protect them.").format(nick, target, ga)
|
||||||
cli.msg(botconfig.CHANNEL, message)
|
cli.msg(botconfig.CHANNEL, message)
|
||||||
var.LOGGER.logMessage(message.replace("\02", ""))
|
var.LOGGER.logMessage(message.replace("\02", ""))
|
||||||
del_player(cli, ga, True, end_game = False)
|
del_player(cli, ga, True, end_game = False)
|
||||||
@ -1885,7 +1885,7 @@ def begin_day(cli):
|
|||||||
var.SHAMANS = [] # list of shamans/crazed shamans that have acted
|
var.SHAMANS = [] # list of shamans/crazed shamans that have acted
|
||||||
var.OBSERVED = {} # those whom werecrows/sorcerers have observed
|
var.OBSERVED = {} # those whom werecrows/sorcerers have observed
|
||||||
var.HVISITED = {} # those whom harlots have visited
|
var.HVISITED = {} # those whom harlots have visited
|
||||||
var.GUARDED = {} # this whom guardian angels/bodyguards have guarded
|
var.GUARDED = {} # this whom bodyguards/guardian angels have guarded
|
||||||
var.PASSED = [] # hunters that have opted not to kill
|
var.PASSED = [] # hunters that have opted not to kill
|
||||||
var.STARTED_DAY_PLAYERS = len(var.list_players())
|
var.STARTED_DAY_PLAYERS = len(var.list_players())
|
||||||
|
|
||||||
@ -1940,11 +1940,11 @@ def transition_day(cli, gameid=0):
|
|||||||
if shaman not in var.SHAMANS:
|
if shaman not in var.SHAMANS:
|
||||||
var.LASTGIVEN[shaman] = None
|
var.LASTGIVEN[shaman] = None
|
||||||
|
|
||||||
# GA doesn't have restrictions, but being checked anyway since both GA and bodyguard use var.GUARDED
|
# bodyguard doesn't have restrictions, but being checked anyway since both GA and guardian angel use var.GUARDED
|
||||||
if len(var.GUARDED.keys()) < len(var.ROLES["guardian angel"] + var.ROLES["bodyguard"]):
|
if len(var.GUARDED.keys()) < len(var.ROLES["bodyguard"] + var.ROLES["guardian angel"]):
|
||||||
for bodyguard in var.ROLES["bodyguard"]:
|
for gangel in var.ROLES["guardian angel"]:
|
||||||
if bodyguard not in var.GUARDED:
|
if gangel not in var.GUARDED:
|
||||||
var.LASTGUARDED[bodyguard] = None
|
var.LASTGUARDED[gangel] = None
|
||||||
|
|
||||||
# Select a random target for vengeful ghost if they didn't kill
|
# Select a random target for vengeful ghost if they didn't kill
|
||||||
wolves = var.list_players(var.WOLFTEAM_ROLES)
|
wolves = var.list_players(var.WOLFTEAM_ROLES)
|
||||||
@ -2077,13 +2077,13 @@ def transition_day(cli, gameid=0):
|
|||||||
"allowing them to escape.").format(victim))
|
"allowing them to escape.").format(victim))
|
||||||
novictmsg = False
|
novictmsg = False
|
||||||
elif victim in var.GUARDED.values() and victim not in var.DYING:
|
elif victim in var.GUARDED.values() and victim not in var.DYING:
|
||||||
for bodyguard in var.ROLES["bodyguard"]:
|
for gangel in var.ROLES["guardian angel"]:
|
||||||
if var.GUARDED.get(bodyguard) == victim:
|
if var.GUARDED.get(gangel) == victim:
|
||||||
message.append(("\u0002{0}\u0002 was attacked last night, but luckily, the bodyguard was on duty.").format(victim))
|
message.append(("\u0002{0}\u0002 was attacked last night, but luckily, the guardian angel was on duty.").format(victim))
|
||||||
novictmsg = False
|
novictmsg = False
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
for gangel in var.ROLES["guardian angel"]:
|
for gangel in var.ROLES["bodyguard"]:
|
||||||
if var.GUARDED.get(gangel) == victim:
|
if var.GUARDED.get(gangel) == victim:
|
||||||
dead.append(gangel)
|
dead.append(gangel)
|
||||||
message.append(("\u0002{0}\u0002 sacrificed their life to guard that of another.").format(gangel))
|
message.append(("\u0002{0}\u0002 sacrificed their life to guard that of another.").format(gangel))
|
||||||
@ -2164,6 +2164,22 @@ def transition_day(cli, gameid=0):
|
|||||||
"visiting a wolf's house last night and is "+
|
"visiting a wolf's house last night and is "+
|
||||||
"now dead.").format(harlot))
|
"now dead.").format(harlot))
|
||||||
dead.append(harlot)
|
dead.append(harlot)
|
||||||
|
for gangel in var.ROLES["bodyguard"]:
|
||||||
|
if var.GUARDED.get(gangel) in var.list_players(var.WOLF_ROLES):
|
||||||
|
if gangel in dead:
|
||||||
|
continue # already dead.
|
||||||
|
r = random.random()
|
||||||
|
if r < var.BODYGUARD_DIES_CHANCE:
|
||||||
|
if var.ROLE_REVEAL:
|
||||||
|
message.append(("\02{0}\02, a \02bodyguard\02, "+
|
||||||
|
"made the unfortunate mistake of guarding a wolf "+
|
||||||
|
"last night, and is now dead.").format(gangel))
|
||||||
|
else:
|
||||||
|
message.append(("\02{0}\02 "+
|
||||||
|
"made the unfortunate mistake of guarding a wolf "+
|
||||||
|
"last night, and is now dead.").format(gangel))
|
||||||
|
var.LOGGER.logBare(gangel, "KILLEDWHENGUARDINGWOLF")
|
||||||
|
dead.append(gangel)
|
||||||
for gangel in var.ROLES["guardian angel"]:
|
for gangel in var.ROLES["guardian angel"]:
|
||||||
if var.GUARDED.get(gangel) in var.list_players(var.WOLF_ROLES):
|
if var.GUARDED.get(gangel) in var.list_players(var.WOLF_ROLES):
|
||||||
if gangel in dead:
|
if gangel in dead:
|
||||||
@ -2180,22 +2196,6 @@ def transition_day(cli, gameid=0):
|
|||||||
"last night, and is now dead.").format(gangel))
|
"last night, and is now dead.").format(gangel))
|
||||||
var.LOGGER.logBare(gangel, "KILLEDWHENGUARDINGWOLF")
|
var.LOGGER.logBare(gangel, "KILLEDWHENGUARDINGWOLF")
|
||||||
dead.append(gangel)
|
dead.append(gangel)
|
||||||
for bodyguard in var.ROLES["bodyguard"]:
|
|
||||||
if var.GUARDED.get(bodyguard) in var.list_players(var.WOLF_ROLES):
|
|
||||||
if bodyguard in dead:
|
|
||||||
continue # already dead.
|
|
||||||
r = random.random()
|
|
||||||
if r < var.BODYGUARD_DIES_CHANCE:
|
|
||||||
if var.ROLE_REVEAL:
|
|
||||||
message.append(("\02{0}\02, a \02bodyguard\02, "+
|
|
||||||
"made the unfortunate mistake of guarding a wolf "+
|
|
||||||
"last night, and is now dead.").format(bodyguard))
|
|
||||||
else:
|
|
||||||
message.append(("\02{0}\02 "+
|
|
||||||
"made the unfortunate mistake of guarding a wolf "+
|
|
||||||
"last night, and is now dead.").format(bodyguard))
|
|
||||||
var.LOGGER.logBare(bodyguard, "KILLEDWHENGUARDINGWOLF")
|
|
||||||
dead.append(bodyguard)
|
|
||||||
for havetotem in havetotem.values():
|
for havetotem in havetotem.values():
|
||||||
if havetotem:
|
if havetotem:
|
||||||
message.append("\u0002{0}\u0002 seem{1} to be in possession of a mysterious totem...".format(havetotem, "ed" if havetotem in dead else "s"))
|
message.append("\u0002{0}\u0002 seem{1} to be in possession of a mysterious totem...".format(havetotem, "ed" if havetotem in dead else "s"))
|
||||||
@ -2233,7 +2233,7 @@ def chk_nightdone(cli):
|
|||||||
list(var.OBSERVED.keys()) + var.PASSED + var.HEXED + var.SHAMANS +
|
list(var.OBSERVED.keys()) + var.PASSED + var.HEXED + var.SHAMANS +
|
||||||
list(var.TARGETED.keys()))
|
list(var.TARGETED.keys()))
|
||||||
nightroles = (var.ROLES["seer"] + var.ROLES["oracle"] + var.ROLES["harlot"] +
|
nightroles = (var.ROLES["seer"] + var.ROLES["oracle"] + var.ROLES["harlot"] +
|
||||||
var.ROLES["guardian angel"] + var.ROLES["bodyguard"] + var.ROLES["wolf"] +
|
var.ROLES["bodyguard"] + var.ROLES["guardian angel"] + var.ROLES["wolf"] +
|
||||||
var.ROLES["werecrow"] + var.ROLES["sorcerer"] + var.ROLES["hunter"] +
|
var.ROLES["werecrow"] + var.ROLES["sorcerer"] + var.ROLES["hunter"] +
|
||||||
list(var.VENGEFUL_GHOSTS.keys()) + var.ROLES["hag"] + var.ROLES["shaman"] +
|
list(var.VENGEFUL_GHOSTS.keys()) + var.ROLES["hag"] + var.ROLES["shaman"] +
|
||||||
var.ROLES["crazed shaman"] + var.ROLES["assassin"] + var.ROLES["augur"])
|
var.ROLES["crazed shaman"] + var.ROLES["assassin"] + var.ROLES["augur"])
|
||||||
@ -2679,8 +2679,8 @@ def guard(cli, nick, rest):
|
|||||||
cli.notice(nick, "You're not currently playing.")
|
cli.notice(nick, "You're not currently playing.")
|
||||||
return
|
return
|
||||||
role = var.get_role(nick)
|
role = var.get_role(nick)
|
||||||
if role not in ("guardian angel", "bodyguard"):
|
if role not in ("bodyguard", "guardian angel"):
|
||||||
pm(cli, nick, "Only a guardian angel or bodyguard may use this command.")
|
pm(cli, nick, "Only a bodyguard or guardian angel may use this command.")
|
||||||
return
|
return
|
||||||
if var.PHASE != "night":
|
if var.PHASE != "night":
|
||||||
pm(cli, nick, "You may only protect people at night.")
|
pm(cli, nick, "You may only protect people at night.")
|
||||||
@ -2696,7 +2696,7 @@ def guard(cli, nick, rest):
|
|||||||
pm(cli, nick, ("You are already protecting "+
|
pm(cli, nick, ("You are already protecting "+
|
||||||
"\u0002{0}\u0002.").format(var.GUARDED[nick]))
|
"\u0002{0}\u0002.").format(var.GUARDED[nick]))
|
||||||
return
|
return
|
||||||
if role == "bodyguard" and var.LASTGUARDED.get(nick) == victim:
|
if role == "guardian angel" and var.LASTGUARDED.get(nick) == victim:
|
||||||
pm(cli, nick, ("You protected \u0002{0}\u0002 last night. " +
|
pm(cli, nick, ("You protected \u0002{0}\u0002 last night. " +
|
||||||
"You cannot protect the same person two nights in a row.").format(victim))
|
"You cannot protect the same person two nights in a row.").format(victim))
|
||||||
return
|
return
|
||||||
@ -2716,11 +2716,11 @@ def guard(cli, nick, rest):
|
|||||||
return
|
return
|
||||||
victim = pl[pll.index(target)]
|
victim = pl[pll.index(target)]
|
||||||
if victim == nick:
|
if victim == nick:
|
||||||
if role == "guardian angel" or not var.BODYGUARD_CAN_GUARD_SELF:
|
if role == "bodyguard" or not var.GUARDIAN_ANGEL_CAN_GUARD_SELF:
|
||||||
var.GUARDED[nick] = None
|
var.GUARDED[nick] = None
|
||||||
del var.LASTGUARDED[nick]
|
del var.LASTGUARDED[nick]
|
||||||
pm(cli, nick, "You have chosen not to guard anyone tonight.")
|
pm(cli, nick, "You have chosen not to guard anyone tonight.")
|
||||||
elif role == "bodyguard":
|
elif role == "guardian angel":
|
||||||
var.GUARDED[nick] = nick
|
var.GUARDED[nick] = nick
|
||||||
var.LASTGUARDED[nick] = nick
|
var.LASTGUARDED[nick] = nick
|
||||||
pm(cli, nick, "You have decided to guard yourself tonight.")
|
pm(cli, nick, "You have decided to guard yourself tonight.")
|
||||||
@ -3595,42 +3595,42 @@ def transition_night(cli):
|
|||||||
cli.notice(harlot, "You are a \02harlot\02.") # !simple
|
cli.notice(harlot, "You are a \02harlot\02.") # !simple
|
||||||
pm(cli, harlot, "Players: " + ", ".join(pl))
|
pm(cli, harlot, "Players: " + ", ".join(pl))
|
||||||
|
|
||||||
# the messages for angel and bodyguard are different enough to merit individual loops
|
# the messages for angel and guardian angel are different enough to merit individual loops
|
||||||
for g_angel in var.ROLES["guardian angel"]:
|
for g_angel in var.ROLES["bodyguard"]:
|
||||||
pl = ps[:]
|
pl = ps[:]
|
||||||
random.shuffle(pl)
|
random.shuffle(pl)
|
||||||
pl.remove(g_angel)
|
pl.remove(g_angel)
|
||||||
chance = math.floor(var.GUARDIAN_ANGEL_DIES_CHANCE * 100)
|
|
||||||
warning = ""
|
|
||||||
if chance > 0:
|
|
||||||
warning = "If you guard a wolf, there is a {0}% chance of you dying. ".format(chance)
|
|
||||||
|
|
||||||
if g_angel in var.PLAYERS and var.PLAYERS[g_angel]["cloak"] not in var.SIMPLE_NOTIFY:
|
|
||||||
cli.msg(g_angel, ('You are a \u0002guardian angel\u0002. '+
|
|
||||||
'It is your job to protect the villagers. {0}If you guard '+
|
|
||||||
'a victim, you will sacrifice yourself to save them. ' +
|
|
||||||
'Use "guard <nick>" to guard a player.').format(warning))
|
|
||||||
else:
|
|
||||||
cli.notice(g_angel, "You are a \02guardian angel\02.") # !simple
|
|
||||||
pm(cli, g_angel, "Players: " + ", ".join(pl))
|
|
||||||
|
|
||||||
for bodyguard in var.ROLES["bodyguard"]:
|
|
||||||
pl = ps[:]
|
|
||||||
random.shuffle(pl)
|
|
||||||
pl.remove(bodyguard)
|
|
||||||
chance = math.floor(var.BODYGUARD_DIES_CHANCE * 100)
|
chance = math.floor(var.BODYGUARD_DIES_CHANCE * 100)
|
||||||
warning = ""
|
warning = ""
|
||||||
if chance > 0:
|
if chance > 0:
|
||||||
warning = "If you guard a wolf, there is a {0}% chance of you dying. ".format(chance)
|
warning = "If you guard a wolf, there is a {0}% chance of you dying. ".format(chance)
|
||||||
|
|
||||||
if bodyguard in var.PLAYERS and var.PLAYERS[bodyguard]["cloak"] not in var.SIMPLE_NOTIFY:
|
if g_angel in var.PLAYERS and var.PLAYERS[g_angel]["cloak"] not in var.SIMPLE_NOTIFY:
|
||||||
cli.msg(bodyguard, ('You are a \u0002bodyguard\u0002. '+
|
cli.msg(g_angel, ('You are a \u0002bodyguard\u0002. '+
|
||||||
'It is your job to protect the villagers. {0}If you guard '+
|
'It is your job to protect the villagers. {0}If you guard '+
|
||||||
'a victim, they will live. ' +
|
'a victim, you will sacrifice yourself to save them. ' +
|
||||||
'Use "guard <nick>" to guard a player.').format(warning))
|
'Use "guard <nick>" to guard a player.').format(warning))
|
||||||
else:
|
else:
|
||||||
cli.notice(bodyguard, "You are a \02bodyguard\02.") # !simple
|
cli.notice(g_angel, "You are a \02bodyguard\02.") # !simple
|
||||||
pm(cli, bodyguard, "Players: " + ", ".join(pl))
|
pm(cli, g_angel, "Players: " + ", ".join(pl))
|
||||||
|
|
||||||
|
for gangel in var.ROLES["guardian angel"]:
|
||||||
|
pl = ps[:]
|
||||||
|
random.shuffle(pl)
|
||||||
|
pl.remove(gangel)
|
||||||
|
chance = math.floor(var.GUARDIAN_ANGEL_DIES_CHANCE * 100)
|
||||||
|
warning = ""
|
||||||
|
if chance > 0:
|
||||||
|
warning = "If you guard a wolf, there is a {0}% chance of you dying. ".format(chance)
|
||||||
|
|
||||||
|
if gangel in var.PLAYERS and var.PLAYERS[gangel]["cloak"] not in var.SIMPLE_NOTIFY:
|
||||||
|
cli.msg(gangel, ('You are a \u0002guardian angel\u0002. '+
|
||||||
|
'It is your job to protect the villagers. {0}If you guard '+
|
||||||
|
'a victim, they will live. You may not guard the same person two nights in a row.' +
|
||||||
|
'Use "guard <nick>" to guard a player.').format(warning))
|
||||||
|
else:
|
||||||
|
cli.notice(gangel, "You are a \02guardian angel\02.") # !simple
|
||||||
|
pm(cli, gangel, "Players: " + ", ".join(pl))
|
||||||
|
|
||||||
for dttv in var.ROLES["detective"]:
|
for dttv in var.ROLES["detective"]:
|
||||||
pl = ps[:]
|
pl = ps[:]
|
||||||
|
@ -45,7 +45,7 @@ GOAT_HERDER = True
|
|||||||
SELF_LYNCH_ALLOWED = True
|
SELF_LYNCH_ALLOWED = True
|
||||||
HIDDEN_TRAITOR = True
|
HIDDEN_TRAITOR = True
|
||||||
VENGEFUL_GHOST_KNOWS_ROLES = True
|
VENGEFUL_GHOST_KNOWS_ROLES = True
|
||||||
BODYGUARD_CAN_GUARD_SELF = True
|
GUARDIAN_ANGEL_CAN_GUARD_SELF = True
|
||||||
START_WITH_DAY = False
|
START_WITH_DAY = False
|
||||||
WOLF_STEALS_GUN = True # at night, the wolf can steal steal the victim's bullets
|
WOLF_STEALS_GUN = True # at night, the wolf can steal steal the victim's bullets
|
||||||
ROLE_REVEAL = True
|
ROLE_REVEAL = True
|
||||||
@ -90,8 +90,8 @@ ROLE_GUIDE = {# village roles
|
|||||||
"augur" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
"augur" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
||||||
"village drunk" : ( 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ),
|
"village drunk" : ( 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ),
|
||||||
"harlot" : ( 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ),
|
"harlot" : ( 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ),
|
||||||
"guardian angel" : ( 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 ),
|
"guardian angel" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
||||||
"bodyguard" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
"bodyguard" : ( 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 ),
|
||||||
"detective" : ( 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 ),
|
"detective" : ( 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 ),
|
||||||
"village elder" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
"village elder" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
||||||
"time lord" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
"time lord" : ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ),
|
||||||
@ -286,8 +286,8 @@ class EvilVillageMode(object):
|
|||||||
"augur" : ( 0 , 0 ),
|
"augur" : ( 0 , 0 ),
|
||||||
"village drunk" : ( 0 , 0 ),
|
"village drunk" : ( 0 , 0 ),
|
||||||
"harlot" : ( 0 , 0 ),
|
"harlot" : ( 0 , 0 ),
|
||||||
"guardian angel" : ( 0 , 0 ),
|
"guardian angel" : ( 0 , 1 ),
|
||||||
"bodyguard" : ( 0 , 1 ),
|
"bodyguard" : ( 0 , 0 ),
|
||||||
"detective" : ( 0 , 0 ),
|
"detective" : ( 0 , 0 ),
|
||||||
"village elder" : ( 0 , 0 ),
|
"village elder" : ( 0 , 0 ),
|
||||||
"time lord" : ( 0 , 0 ),
|
"time lord" : ( 0 , 0 ),
|
||||||
|
Loading…
Reference in New Issue
Block a user