delay PMing charmed players until daytime
This commit is contained in:
parent
75d55ab461
commit
bd4b89ef01
@ -2788,6 +2788,9 @@ def on_nick(cli, oldnick, nick):
|
|||||||
if prefix in var.CHARMED:
|
if prefix in var.CHARMED:
|
||||||
var.CHARMED.remove(prefix)
|
var.CHARMED.remove(prefix)
|
||||||
var.CHARMED.add(nick)
|
var.CHARMED.add(nick)
|
||||||
|
if prefix in var.TOBECHARMED:
|
||||||
|
var.TOBECHARMED.remove(prefix)
|
||||||
|
var.TOBECHARMED.add(nick)
|
||||||
with var.GRAVEYARD_LOCK: # to be safe
|
with var.GRAVEYARD_LOCK: # to be safe
|
||||||
if prefix in var.LAST_SAID_TIME.keys():
|
if prefix in var.LAST_SAID_TIME.keys():
|
||||||
var.LAST_SAID_TIME[nick] = var.LAST_SAID_TIME.pop(prefix)
|
var.LAST_SAID_TIME[nick] = var.LAST_SAID_TIME.pop(prefix)
|
||||||
@ -3170,6 +3173,40 @@ def transition_day(cli, gameid=0):
|
|||||||
var.LASTGIVEN[shaman] = victim
|
var.LASTGIVEN[shaman] = victim
|
||||||
havetotem = sorted(x for x in var.LASTGIVEN.values() if x)
|
havetotem = sorted(x for x in var.LASTGIVEN.values() if x)
|
||||||
|
|
||||||
|
# Send out PMs to players who have been charmed
|
||||||
|
for victim in var.TOBECHARMED:
|
||||||
|
charmedlist = list(var.CHARMED | var.TOBECHARMED - {victim})
|
||||||
|
message = ("You hear the sweet tones of a flute coming from outside your window... You "
|
||||||
|
"inexorably walk outside and find yourself in the village square. ")
|
||||||
|
|
||||||
|
if len(charmedlist) <= 0:
|
||||||
|
pm(cli, victim, message + "There are no other charmed players.")
|
||||||
|
elif len(charmedlist) == 1:
|
||||||
|
pm(cli, victim, message + "You find out that \u0002{0}\u0002 is also charmed!".format(charmedlist[0]))
|
||||||
|
elif len(charmedlist) == 2:
|
||||||
|
pm(cli, victim, message + ("You find out that \u0002{0}\u0002 and \u0002{1}\u0002 "
|
||||||
|
"are also charmed!").format(charmedlist[0], charmedlist[1]))
|
||||||
|
else:
|
||||||
|
pm(cli, victim, message + ("You find out that \u0002{0}\u0002, and \u0002{1}\u0002 "
|
||||||
|
"are also charmed!").format("\u0002, \u0002".join(charmedlist[:-1]), charmedlist[-1]))
|
||||||
|
|
||||||
|
if var.TOBECHARMED:
|
||||||
|
tobecharmedlist = list(var.TOBECHARMED)
|
||||||
|
for victim in var.CHARMED:
|
||||||
|
if len(tobecharmedlist) == 1:
|
||||||
|
message = "\u0002{0}\u0002 is now charmed!".format(tobecharmedlist[0])
|
||||||
|
elif len(tobecharmedlist) == 2:
|
||||||
|
message = "\u0002{0}\u0002 and \u0002{1}\u0002 are now charmed".format(tobecharmedlist[0], tobecharmedlist[1])
|
||||||
|
else:
|
||||||
|
message = "\u0002{0}\u0002, and \u0002{1}\u0002 are also charmed!".format(
|
||||||
|
"\u0002, \u0002".join(tobecharmedlist[:-1]), tobecharmedlist[-1])
|
||||||
|
|
||||||
|
pm(cli, victim, message + (" now charmed! Previously charmed players: "
|
||||||
|
"{0}").format("\u0002, \u0002".join(var.CHARMED - {victim})))
|
||||||
|
var.CHARMED.update(var.TOBECHARMED)
|
||||||
|
var.TOBECHARMED.clear()
|
||||||
|
|
||||||
|
|
||||||
if var.START_WITH_DAY and var.FIRST_DAY:
|
if var.START_WITH_DAY and var.FIRST_DAY:
|
||||||
# TODO: need to message everyone their roles and give a short thing saying "it's daytime"
|
# TODO: need to message everyone their roles and give a short thing saying "it's daytime"
|
||||||
# but this is good enough for now to prevent it from crashing
|
# but this is good enough for now to prevent it from crashing
|
||||||
@ -5095,6 +5132,8 @@ def charm(cli, nick, chan, rest):
|
|||||||
return
|
return
|
||||||
if victim2 is not None:
|
if victim2 is not None:
|
||||||
victim2 = get_victim(cli, nick, victim2, False, True)
|
victim2 = get_victim(cli, nick, victim2, False, True)
|
||||||
|
if not victim2:
|
||||||
|
return
|
||||||
|
|
||||||
if victim == victim2:
|
if victim == victim2:
|
||||||
pm(cli, nick, "You must choose two different people.")
|
pm(cli, nick, "You must choose two different people.")
|
||||||
@ -5102,48 +5141,24 @@ def charm(cli, nick, chan, rest):
|
|||||||
if nick in (victim, victim2):
|
if nick in (victim, victim2):
|
||||||
pm(cli, nick, "You may not charm yourself.")
|
pm(cli, nick, "You may not charm yourself.")
|
||||||
return
|
return
|
||||||
if victim in var.CHARMED or victim2 and victim2 in var.CHARMED:
|
charmedlist = var.CHARMED|var.TOBECHARMED
|
||||||
if victim in var.CHARMED and victim2 and victim2 in var.CHARMED:
|
if victim in charmedlist or victim2 and victim2 in charmedlist:
|
||||||
|
if victim in charmedlist and victim2 and victim2 in charmedlist:
|
||||||
pm(cli, nick, "\u0002{0}\u0002 and \u0002{1}\u0002 are already charmed!".format(victim, victim2))
|
pm(cli, nick, "\u0002{0}\u0002 and \u0002{1}\u0002 are already charmed!".format(victim, victim2))
|
||||||
return
|
return
|
||||||
if (len(var.list_players()) - len(var.ROLES["piper"]) - len(var.CHARMED) - 2 >= 0 or
|
if (len(var.list_players()) - len(var.ROLES["piper"]) - len(charmedlist) - 2 >= 0 or
|
||||||
victim in var.CHARMED and not victim2):
|
victim in charmedlist and not victim2):
|
||||||
pm(cli, nick, "\u0002{0}\u0002 is already charmed!".format(victim in var.CHARMED and victim or victim2))
|
pm(cli, nick, "\u0002{0}\u0002 is already charmed!".format(victim in charmedlist and victim or victim2))
|
||||||
return
|
return
|
||||||
|
|
||||||
var.CHARMERS.add(nick)
|
var.CHARMERS.add(nick)
|
||||||
|
|
||||||
var.CHARMED.add(victim)
|
var.TOBECHARMED.add(victim)
|
||||||
if victim2:
|
if victim2:
|
||||||
var.CHARMED.add(victim2)
|
var.TOBECHARMED.add(victim2)
|
||||||
|
|
||||||
pm(cli, nick, "You have charmed \u0002{0}\u0002{1}.".format(victim, victim2 and " and \u0002{0}\u0002".format(victim2) or ""))
|
pm(cli, nick, "You have charmed \u0002{0}\u0002{1}.".format(victim, victim2 and " and \u0002{0}\u0002".format(victim2) or ""))
|
||||||
|
|
||||||
for vict in (victim, victim2):
|
|
||||||
if vict and vict in var.PLAYERS:
|
|
||||||
message = ("You hear the sweet tones of a flute coming from outside your window... You "
|
|
||||||
"inexorably walk outside and find yourself in the village square. ")
|
|
||||||
|
|
||||||
charmedlist = list(var.CHARMED - {vict})
|
|
||||||
if len(charmedlist) <= 0:
|
|
||||||
pm(cli, vict, message + "There are no other charmed players.")
|
|
||||||
elif len(charmedlist) == 1:
|
|
||||||
pm(cli, vict, message + "You find out that \u0002{0}\u0002 is also charmed!".format(charmedlist[0]))
|
|
||||||
elif len(charmedlist) == 2:
|
|
||||||
pm(cli, vict, message + ("You find out that \u0002{0}\u0002 and \u0002{1}\u0002 "
|
|
||||||
"are also charmed!").format(charmedlist[0], charmedlist[1]))
|
|
||||||
else:
|
|
||||||
pm(cli, vict, message + ("You find out that \u0002{0}\u0002, and \u0002{1}\u0002 "
|
|
||||||
"are also charmed!").format("\u0002, \u0002".join(charmedlist[:-1]), charmedlist[-1]))
|
|
||||||
|
|
||||||
for vict in var.CHARMED:
|
|
||||||
if vict in (victim, victim2):
|
|
||||||
continue
|
|
||||||
message = victim2 and "\u0002{0}\u0002 and \u0002{1}\u0002 are" or "\u0002{0}\u0002 is"
|
|
||||||
pm(cli, vict, (message + " now charmed! All charmed players: " +
|
|
||||||
"\u0002{2}\u0002").format(victim, victim2,
|
|
||||||
"\u0002, \u0002".join(var.CHARMED - {vict})))
|
|
||||||
|
|
||||||
if victim2:
|
if victim2:
|
||||||
debuglog("{0} ({1}) CHARM {2} ({3}) && {4} ({5})".format(nick, var.get_role(nick),
|
debuglog("{0} ({1}) CHARM {2} ({3}) && {4} ({5})".format(nick, var.get_role(nick),
|
||||||
victim, var.get_role(victim),
|
victim, var.get_role(victim),
|
||||||
@ -6181,6 +6196,7 @@ def start(cli, nick, chan, forced = False, restart = ""):
|
|||||||
var.BITTEN_ROLES = {}
|
var.BITTEN_ROLES = {}
|
||||||
var.CHARMERS = set()
|
var.CHARMERS = set()
|
||||||
var.CHARMED = set()
|
var.CHARMED = set()
|
||||||
|
var.TOBECHARMED = set()
|
||||||
var.ACTIVE_PROTECTIONS = defaultdict(list)
|
var.ACTIVE_PROTECTIONS = defaultdict(list)
|
||||||
var.TURNCOATS = {}
|
var.TURNCOATS = {}
|
||||||
|
|
||||||
@ -7663,8 +7679,8 @@ if botconfig.DEBUG_MODE or botconfig.ALLOWED_NORMAL_MODE_COMMANDS:
|
|||||||
output.append("\u0002immunized\u0002: {0}".format(", ".join(var.IMMUNIZED)))
|
output.append("\u0002immunized\u0002: {0}".format(", ".join(var.IMMUNIZED)))
|
||||||
|
|
||||||
# get charmed players
|
# get charmed players
|
||||||
if var.CHARMED:
|
if var.CHARMED | var.TOBECHARMED:
|
||||||
output.append("\u0002charmed players\u0002: {0}".format(", ".join(var.CHARMED)))
|
output.append("\u0002charmed players\u0002: {0}".format(", ".join(var.CHARMED | var.TOBECHARMED)))
|
||||||
|
|
||||||
if chan == nick:
|
if chan == nick:
|
||||||
pm(cli, nick, var.break_long_message(output, " | "))
|
pm(cli, nick, var.break_long_message(output, " | "))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user