Browse Source

added winning condition check

master
jcao219 14 years ago
parent
commit
411a0598c4
  1. 62
      wolfgame.py

62
wolfgame.py

@ -256,6 +256,25 @@ def show_votes(cli, nick, chan, rest): @@ -256,6 +256,25 @@ def show_votes(cli, nick, chan, rest):
"to vote.").format(nick, len(pl), votesneeded, avail))
def chk_win(cli):
chan = botconfig.CHANNEL
if len(vars.ROLES["wolf"]) >= len(vars.list_players()) / 2:
cli.msg(chan, ("Game over! There are the same number of wolves as "+
"villagers. The wolves eat everyone, and win."))
elif not len(vars.ROLES["wolf"]) and not vars.ROLES["traitor"]:
cli.msg(chan, ("Game over! All the wolves are dead! The villagers "+
"chop them up, BBQ them, and have a hearty meal."))
elif not len(vars.ROLES["wolf"]) and vars.ROLES["traitor"]:
pass # WOLVES ARE NOT GONE :O
# TODO: transform TRAITOR
return
else:
return
# TODO: Print the game time stats here
reset(cli)
# TODO: Reveal roles here
def del_player(cli, nick, forced_death):
cli.mode(botconfig.CHANNEL, "-v", "{0} {0}!*@*".format(nick))
@ -263,7 +282,12 @@ def del_player(cli, nick, forced_death): @@ -263,7 +282,12 @@ def del_player(cli, nick, forced_death):
cli.mode(botconfig.CHANNEL, "+q", "{0} {0}!*@*".format(nick))
vars.DEAD.append(nick)
vars.del_player(nick)
chk_win(cli)
if vars.VICTIM == nick:
vars.VICTIM = ""
if vars.PHASE == "day" and not forced_death: # didn't die from lynching
if nick in vars.VOTES.keys():
del vars.VOTES[nick] # Delete his votes
chk_decision(cli)
return True
@ -426,7 +450,7 @@ def see(cli, nick, rest): @@ -426,7 +450,7 @@ def see(cli, nick, rest):
return
if vars.CURSED == nick:
role = "wolf"
elif vars.TRAITOR == nick:
if vars.get_role(victim) == "traitor":
role = "villager"
else:
role = vars.get_role(victim)
@ -544,31 +568,35 @@ def start(cli, nick, chan, rest): @@ -544,31 +568,35 @@ def start(cli, nick, chan, rest):
seer = random.choice(pl)
vars.ROLES["seer"] = [seer]
pl.remove(seer)
if nharlots:
harlots = random.sample(pl, nharlots)
vars.ROLES["harlot"] = harlots
for h in harlots:
pl.remove(h)
if nwolves:
wolves = random.sample(pl, nwolves)
vars.ROLES["wolf"] = wolves
for w in wolves:
pl.remove(w)
if ndrunk:
drunk = random.choice(pl)
vars.ROLES["village drunk"] = [drunk]
pl.remove(drunk)
harlots = random.sample(pl, nharlots)
vars.ROLES["harlot"] = harlots
for h in harlots:
pl.remove(h)
wolves = random.sample(pl, nwolves)
vars.ROLES["wolf"] = wolves
for w in wolves:
pl.remove(w)
drunk = random.choice(pl)
vars.ROLES["village drunk"] = [drunk]
pl.remove(drunk)
vars.ROLES["villager"] = pl
if ncursed:
vars.CURSED = random.choice(vars.ROLES["villager"] + \
vars.ROLES.get("harlot", []) +\
vars.ROLES.get("village drunk", []))
else:
vars.CURSED = ""
if ntraitor:
possible = vars.ROLES["villager"]
if ncursed:
if vars.CURSED:
possible.remove(vars.CURSED) # Cursed traitors are not allowed
vars.TRAITOR = random.choice(possible)
vars.ROLES["traitor"] = random.sample(possible, ntraitor)
cli.msg(chan, ("{0}: Welcome to Werewolf, the popular detective/social party "+
"game (a theme of Mafia).").format(", ".join(vars.list_players())))

Loading…
Cancel
Save