Fix crash if vengeful ghost dc'ed and fix messages sent off to clones
This commit is contained in:
parent
202c03d0d9
commit
25b4f1bfbf
@ -1089,17 +1089,19 @@ def stop_game(cli, winner = ""):
|
|||||||
won = True
|
won = True
|
||||||
|
|
||||||
survived = var.list_players()
|
survived = var.list_players()
|
||||||
|
splr = plr
|
||||||
if plr.startswith("(dced)"):
|
if plr.startswith("(dced)"):
|
||||||
|
splr = plr[6:]
|
||||||
# You get NOTHING! You LOSE! Good DAY, sir!
|
# You get NOTHING! You LOSE! Good DAY, sir!
|
||||||
won = False
|
won = False
|
||||||
iwon = False
|
iwon = False
|
||||||
elif plr in var.ORIGINAL_ROLES["fool"] and "@" + plr == winner:
|
elif plr in var.ORIGINAL_ROLES["fool"] and "@" + splr == winner:
|
||||||
iwon = True
|
iwon = True
|
||||||
elif plr in var.ORIGINAL_ROLES["monster"] and plr in survived and winner == "monsters":
|
elif plr in var.ORIGINAL_ROLES["monster"] and splr in survived and winner == "monsters":
|
||||||
iwon = True
|
iwon = True
|
||||||
# del_player() doesn't get called on lynched fool, so both will survive even in that case
|
# del_player() doesn't get called on lynched fool, so both will survive even in that case
|
||||||
elif plr in var.LOVERS and plr in survived:
|
elif splr in var.LOVERS and splr in survived:
|
||||||
for lvr in var.LOVERS[plr]:
|
for lvr in var.LOVERS[splr]:
|
||||||
if lvr in survived and not winner.startswith("@") and winner != "monsters":
|
if lvr in survived and not winner.startswith("@") and winner != "monsters":
|
||||||
iwon = True
|
iwon = True
|
||||||
break
|
break
|
||||||
@ -1110,35 +1112,35 @@ def stop_game(cli, winner = ""):
|
|||||||
iwon = True
|
iwon = True
|
||||||
break
|
break
|
||||||
if plr in var.ORIGINAL_ROLES["crazed shaman"]:
|
if plr in var.ORIGINAL_ROLES["crazed shaman"]:
|
||||||
if plr in survived and not winner.startswith("@") and winner != "monsters":
|
if splr in survived and not winner.startswith("@") and winner != "monsters":
|
||||||
iwon = True
|
iwon = True
|
||||||
elif plr in var.ORIGINAL_ROLES["vengeful ghost"]:
|
elif plr in var.ORIGINAL_ROLES["vengeful ghost"]:
|
||||||
if not winner.startswith("@") and winner != "monsters":
|
if not winner.startswith("@") and winner != "monsters":
|
||||||
if plr in survived:
|
if plr in survived:
|
||||||
iwon = True
|
iwon = True
|
||||||
elif var.VENGEFUL_GHOSTS[plr] == "villagers" and winner == "wolves":
|
elif var.VENGEFUL_GHOSTS[splr] == "villagers" and winner == "wolves":
|
||||||
won = True
|
won = True
|
||||||
iwon = True
|
iwon = True
|
||||||
elif var.VENGEFUL_GHOSTS[plr] == "wolves" and winner == "villagers":
|
elif var.VENGEFUL_GHOSTS[splr] == "wolves" and winner == "villagers":
|
||||||
won = True
|
won = True
|
||||||
iwon = True
|
iwon = True
|
||||||
elif plr in var.ORIGINAL_ROLES["lycan"]:
|
elif plr in var.ORIGINAL_ROLES["lycan"]:
|
||||||
if plr in var.LYCANS and winner == "wolves":
|
if splr in var.LYCANS and winner == "wolves":
|
||||||
won = True
|
won = True
|
||||||
elif plr not in var.LYCANS and winner == "villagers":
|
elif splr not in var.LYCANS and winner == "villagers":
|
||||||
won = True
|
won = True
|
||||||
else:
|
else:
|
||||||
won = False
|
won = False
|
||||||
if not iwon:
|
if not iwon:
|
||||||
iwon = won and plr in survived
|
iwon = won and splr in survived
|
||||||
elif not iwon:
|
elif not iwon:
|
||||||
iwon = won and plr in survived # survived, team won = individual win
|
iwon = won and splr in survived # survived, team won = individual win
|
||||||
|
|
||||||
if acc != "*":
|
if acc != "*":
|
||||||
var.update_role_stats(acc, rol, won, iwon)
|
var.update_role_stats(acc, rol, won, iwon)
|
||||||
|
|
||||||
if won or iwon:
|
if won or iwon:
|
||||||
winners.append(plr)
|
winners.append(splr)
|
||||||
|
|
||||||
size = len(survived) + len(var.DEAD)
|
size = len(survived) + len(var.DEAD)
|
||||||
# Only update if someone actually won, "" indicates everyone died or abnormal game stop
|
# Only update if someone actually won, "" indicates everyone died or abnormal game stop
|
||||||
@ -1366,10 +1368,8 @@ def del_player(cli, nick, forced_death = False, devoice = True, end_game = True,
|
|||||||
if nickrole == "clone" and nick in var.CLONED:
|
if nickrole == "clone" and nick in var.CLONED:
|
||||||
if var.CLONED[nick] == clone:
|
if var.CLONED[nick] == clone:
|
||||||
pm(cli, clone, "It appears that your \u0002{0}\u0002 was cloning you, so you are now stuck as a clone forever. How sad.".format(nick))
|
pm(cli, clone, "It appears that your \u0002{0}\u0002 was cloning you, so you are now stuck as a clone forever. How sad.".format(nick))
|
||||||
del var.CLONED[nick]
|
|
||||||
else:
|
else:
|
||||||
var.CLONED[clone] = var.CLONED[nick]
|
var.CLONED[clone] = var.CLONED[nick]
|
||||||
del var.CLONED[nick]
|
|
||||||
pm(cli, clone, "You will now be cloning \u0002{0}\u0002 if they die.".format(var.CLONED[clone]))
|
pm(cli, clone, "You will now be cloning \u0002{0}\u0002 if they die.".format(var.CLONED[clone]))
|
||||||
elif nickrole in var.WOLFCHAT_ROLES:
|
elif nickrole in var.WOLFCHAT_ROLES:
|
||||||
wolves = var.list_players(var.WOLFCHAT_ROLES)
|
wolves = var.list_players(var.WOLFCHAT_ROLES)
|
||||||
@ -1386,8 +1386,8 @@ def del_player(cli, nick, forced_death = False, devoice = True, end_game = True,
|
|||||||
wolves[i] = "\u0002{0}\u0002 ({1}{2})".format(wolf, cursed, wolfrole)
|
wolves[i] = "\u0002{0}\u0002 ({1}{2})".format(wolf, cursed, wolfrole)
|
||||||
|
|
||||||
pm(cli, clone, "Wolves: " + ", ".join(wolves))
|
pm(cli, clone, "Wolves: " + ", ".join(wolves))
|
||||||
elif nick == clone and nick in var.CLONED:
|
if nickrole == "clone" and nick in var.CLONED:
|
||||||
del var.CLONED[nick]
|
del var.CLONED[nick]
|
||||||
|
|
||||||
if nickrole == "time lord":
|
if nickrole == "time lord":
|
||||||
if "DAY_TIME_LIMIT_WARN" not in var.ORIGINAL_SETTINGS:
|
if "DAY_TIME_LIMIT_WARN" not in var.ORIGINAL_SETTINGS:
|
||||||
|
Loading…
Reference in New Issue
Block a user