Finish clone role
This commit is contained in:
parent
53cbeef9f1
commit
66fd6211a5
@ -1272,21 +1272,24 @@ def del_player(cli, nick, forced_death = False, devoice = True, end_game = True)
|
|||||||
var.LOGGER.logMessage(message.replace("\02", ""))
|
var.LOGGER.logMessage(message.replace("\02", ""))
|
||||||
var.LOGGER.logBare(target, "ASSASSINATED")
|
var.LOGGER.logBare(target, "ASSASSINATED")
|
||||||
del_player(cli, target, True, end_game = False)
|
del_player(cli, target, True, end_game = False)
|
||||||
if nick in var.CLONED:
|
|
||||||
# clone is cloning nick, so clone becomes nick's role
|
clones = copy.copy(var.ROLES["clone"])
|
||||||
clone = var.CLONED[nick]
|
for clone,target in clones.items():
|
||||||
del var.CLONED[nick]
|
if nick == target and clone in var.CLONED:
|
||||||
role = var.get_role(nick)
|
# clone is cloning nick, so clone becomes nick's role
|
||||||
var.ROLES["clone"].remove(clone)
|
del var.CLONED[clone]
|
||||||
var.ROLES[role].append(clone)
|
role = var.get_role(nick)
|
||||||
pm(cli, clone, "You are now a \u0002{0}\u0002.".format(role))
|
var.ROLES["clone"].remove(clone)
|
||||||
# if a clone is cloning a clone, clone who the old clone cloned
|
var.ROLES[role].append(clone)
|
||||||
if role == "clone":
|
pm(cli, clone, "You are now a \u0002{0}\u0002.".format(role))
|
||||||
for k, v in var.CLONED.items():
|
# if a clone is cloning a clone, clone who the old clone cloned
|
||||||
if v == nick:
|
if role == "clone" and nick in var.CLONED:
|
||||||
var.CLONED[k] = clone
|
var.CLONED[clone] = var.CLONED[nick]
|
||||||
pm(cli, clone, "You will now be cloning \u0002{0}\u0002 if they die.".format(k))
|
del var.CLONED[nick]
|
||||||
break
|
pm(cli, clone, "You will now be cloning \u0002{0}\u0002 if they die.".format(k))
|
||||||
|
elif nick == clone and nick in var.CLONED:
|
||||||
|
del var.CLONED[nick]
|
||||||
|
|
||||||
if nick in var.ROLES["vengeful ghost"]:
|
if nick in var.ROLES["vengeful ghost"]:
|
||||||
if var.GHOSTPHASE == "night":
|
if var.GHOSTPHASE == "night":
|
||||||
var.VENGEFUL_GHOSTS[nick] = "wolves"
|
var.VENGEFUL_GHOSTS[nick] = "wolves"
|
||||||
@ -3166,7 +3169,58 @@ def hex(cli, nick, rest):
|
|||||||
|
|
||||||
@pmcmd("clone")
|
@pmcmd("clone")
|
||||||
def clone(cli, nick, rest):
|
def clone(cli, nick, rest):
|
||||||
pass
|
if var.PHASE in ("none", "join"):
|
||||||
|
cli.notice(nick, "No game is currently running.")
|
||||||
|
return
|
||||||
|
elif nick not in var.list_players() or nick in var.DISCONNECTED.keys():
|
||||||
|
cli.notice(nick, "You're not currently playing.")
|
||||||
|
return
|
||||||
|
if nick not in var.ROLES["clone"]:
|
||||||
|
pm(cli, nick, "Only a clone may use this command.")
|
||||||
|
return
|
||||||
|
if var.PHASE != "night" or not var.FIRST_NIGHT:
|
||||||
|
pm(cli, nick, "You may only clone someone during the first night.")
|
||||||
|
return
|
||||||
|
if nick in var.CLONED.keys():
|
||||||
|
pm(cli, nick, "You have already chosen to clone someone.")
|
||||||
|
return
|
||||||
|
# no var.SILENCED check for night 1 only roles; silence should only apply for the night after
|
||||||
|
# but just in case, it also sucks if the one night you're allowed to act is when you are
|
||||||
|
# silenced, so we ignore it here anyway.
|
||||||
|
|
||||||
|
pieces = [p.strip().lower() for p in re.split(" +",rest)]
|
||||||
|
victim = pieces[0]
|
||||||
|
|
||||||
|
if not victim:
|
||||||
|
pm(cli, nick, "Not enough parameters")
|
||||||
|
return
|
||||||
|
|
||||||
|
pl = var.list_players()
|
||||||
|
pll = [x.lower() for x in pl]
|
||||||
|
|
||||||
|
matches = 0
|
||||||
|
for player in pll:
|
||||||
|
if victim == player:
|
||||||
|
target = player
|
||||||
|
break
|
||||||
|
if player.startswith(victim):
|
||||||
|
target = player
|
||||||
|
matches += 1
|
||||||
|
else:
|
||||||
|
if matches != 1:
|
||||||
|
pm(cli, nick, "\u0002{0}\u0002 is currently not playing.".format(victim))
|
||||||
|
return
|
||||||
|
victim = pl[pll.index(target)]
|
||||||
|
|
||||||
|
if nick == victim:
|
||||||
|
pm(cli, nick, "You may not target yourself.")
|
||||||
|
return
|
||||||
|
|
||||||
|
var.CLONED[nick] = victim
|
||||||
|
pm(cli, nick, "You have chosen to clone \u0002{0}\u0002.".format(victim))
|
||||||
|
|
||||||
|
var.LOGGER.logBare(nick, "CLONED", victim)
|
||||||
|
chk_nightdone(cli)
|
||||||
|
|
||||||
@hook("featurelist") # For multiple targets with PRIVMSG
|
@hook("featurelist") # For multiple targets with PRIVMSG
|
||||||
def getfeatures(cli, nick, *rest):
|
def getfeatures(cli, nick, *rest):
|
||||||
|
Loading…
Reference in New Issue
Block a user