|
|
@ -533,7 +533,7 @@ def stats(cli, nick, chan, rest): |
|
|
|
for role in rs: |
|
|
|
for role in rs: |
|
|
|
count = len(var.ROLES[role]) |
|
|
|
count = len(var.ROLES[role]) |
|
|
|
if count > 1 or count == 0: |
|
|
|
if count > 1 or count == 0: |
|
|
|
message.append("\u0002{0}\u0002 {1}".format(count if count else "\u0002no\u0002", var.plural(role))) |
|
|
|
message.append("\u0002{0}\u0002 {1}".format(count if count else "\u0002nee\u0002", var.plural(role))) |
|
|
|
else: |
|
|
|
else: |
|
|
|
message.append("\u0002{0}\u0002 {1}".format(count, role)) |
|
|
|
message.append("\u0002{0}\u0002 {1}".format(count, role)) |
|
|
|
stats_mssg = "{0}: Daar {3} {1}, en {2}.".format(nick, |
|
|
|
stats_mssg = "{0}: Daar {3} {1}, en {2}.".format(nick, |
|
|
@ -773,7 +773,7 @@ def stop_game(cli, winner = ""): |
|
|
|
continue # not logged in during game start |
|
|
|
continue # not logged in during game start |
|
|
|
# determine if this player's team won |
|
|
|
# determine if this player's team won |
|
|
|
if plr in (var.ORIGINAL_ROLES["wolf"] + var.ORIGINAL_ROLES["verrader"] + |
|
|
|
if plr in (var.ORIGINAL_ROLES["wolf"] + var.ORIGINAL_ROLES["verrader"] + |
|
|
|
var.ORIGINAL_ROLES["weerkraai"]): # the player was wolf-aligned |
|
|
|
var.ORIGINAL_ROLES["kraai"]): # the player was wolf-aligned |
|
|
|
if winner == "wolven": |
|
|
|
if winner == "wolven": |
|
|
|
won = True |
|
|
|
won = True |
|
|
|
elif winner == "burgers": |
|
|
|
elif winner == "burgers": |
|
|
@ -821,7 +821,7 @@ def chk_win(cli): |
|
|
|
|
|
|
|
|
|
|
|
lwolves = (len(var.ROLES["wolf"])+ |
|
|
|
lwolves = (len(var.ROLES["wolf"])+ |
|
|
|
len(var.ROLES["verrader"])+ |
|
|
|
len(var.ROLES["verrader"])+ |
|
|
|
len(var.ROLES["weerkraai"])) |
|
|
|
len(var.ROLES["kraai"])) |
|
|
|
if var.PHASE == "day": |
|
|
|
if var.PHASE == "day": |
|
|
|
lpl -= len([x for x in var.WOUNDED if x not in var.ROLES["verrader"]]) |
|
|
|
lpl -= len([x for x in var.WOUNDED if x not in var.ROLES["verrader"]]) |
|
|
|
lwolves -= len([x for x in var.WOUNDED if x in var.ROLES["verrader"]]) |
|
|
|
lwolves -= len([x for x in var.WOUNDED if x in var.ROLES["verrader"]]) |
|
|
@ -842,7 +842,7 @@ def chk_win(cli): |
|
|
|
var.LOGGER.logBare("WOLVEN", "WIN") |
|
|
|
var.LOGGER.logBare("WOLVEN", "WIN") |
|
|
|
elif (not var.ROLES["wolf"] and |
|
|
|
elif (not var.ROLES["wolf"] and |
|
|
|
not var.ROLES["verrader"] and |
|
|
|
not var.ROLES["verrader"] and |
|
|
|
not var.ROLES["weerkraai"]): |
|
|
|
not var.ROLES["kraai"]): |
|
|
|
cli.msg(chan, ("Game over! Alle wolven zijn dood! De burgers "+ |
|
|
|
cli.msg(chan, ("Game over! Alle wolven zijn dood! De burgers "+ |
|
|
|
"filleren ze, BBQ ze, en hebben een stevige maaltijd.")) |
|
|
|
"filleren ze, BBQ ze, en hebben een stevige maaltijd.")) |
|
|
|
var.LOGGER.logMessage(("Game over! Alle wolven zijn dood! De burgers "+ |
|
|
|
var.LOGGER.logMessage(("Game over! Alle wolven zijn dood! De burgers "+ |
|
|
@ -850,7 +850,7 @@ def chk_win(cli): |
|
|
|
village_win = True |
|
|
|
village_win = True |
|
|
|
var.LOGGER.logBare("BURGERS", "WIN") |
|
|
|
var.LOGGER.logBare("BURGERS", "WIN") |
|
|
|
elif (not var.ROLES["wolf"] and not |
|
|
|
elif (not var.ROLES["wolf"] and not |
|
|
|
var.ROLES["weerkraai"] and var.ROLES["verrader"]): |
|
|
|
var.ROLES["kraai"] and var.ROLES["verrader"]): |
|
|
|
for t in var.ROLES["verrader"]: |
|
|
|
for t in var.ROLES["verrader"]: |
|
|
|
var.LOGGER.logBare(t, "TRANSFORM") |
|
|
|
var.LOGGER.logBare(t, "TRANSFORM") |
|
|
|
chk_traitor(cli) |
|
|
|
chk_traitor(cli) |
|
|
@ -1271,7 +1271,7 @@ def transition_day(cli, gameid=0): |
|
|
|
if (not len(var.SEEN)+len(var.KILLS)+len(var.OBSERVED) # neither seer nor wolf acted |
|
|
|
if (not len(var.SEEN)+len(var.KILLS)+len(var.OBSERVED) # neither seer nor wolf acted |
|
|
|
and var.FIRST_NIGHT and var.ROLES["ziener"] and not botconfig.DEBUG_MODE): |
|
|
|
and var.FIRST_NIGHT and var.ROLES["ziener"] and not botconfig.DEBUG_MODE): |
|
|
|
cli.msg(botconfig.CHANNEL, "\02De wolven zijn allemaal gestorven door een onbekende ziekte.\02") |
|
|
|
cli.msg(botconfig.CHANNEL, "\02De wolven zijn allemaal gestorven door een onbekende ziekte.\02") |
|
|
|
for x in var.ROLES["wolf"]+var.ROLES["weerkraai"]+var.ROLES["verrader"]: |
|
|
|
for x in var.ROLES["wolf"]+var.ROLES["kraai"]+var.ROLES["verrader"]: |
|
|
|
if not del_player(cli, x, True): |
|
|
|
if not del_player(cli, x, True): |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
@ -1309,70 +1309,70 @@ def transition_day(cli, gameid=0): |
|
|
|
"De burgers worden wakker, dankbaar dat ze de nacht hebben overleeft, "+ |
|
|
|
"De burgers worden wakker, dankbaar dat ze de nacht hebben overleeft, "+ |
|
|
|
"en doorzoeken het dorp... ").format(min, sec)] |
|
|
|
"en doorzoeken het dorp... ").format(min, sec)] |
|
|
|
dead = [] |
|
|
|
dead = [] |
|
|
|
crowonly = var.ROLES["weerkraai"] and not var.ROLES["wolf"] |
|
|
|
crowonly = var.ROLES["kraai"] and not var.ROLES["wolf"] |
|
|
|
if victim: |
|
|
|
if victim: |
|
|
|
var.LOGGER.logBare(victim, "WOLVESVICTIM", *[y for x,y in var.KILLS.items() if x == victim]) |
|
|
|
var.LOGGER.logBare(victim, "WOLVESVICTIM", *[y for x,y in var.KILLS.items() if x == victim]) |
|
|
|
for crow, target in iter(var.OBSERVED.items()): |
|
|
|
for crow, target in iter(var.OBSERVED.items()): |
|
|
|
if ((target in list(var.HVISITED.keys()) and var.HVISITED[target]) or # if var.HVISITED[target] is None, harlot visited self |
|
|
|
if ((target in list(var.HVISITED.keys()) and var.HVISITED[target]) or # if var.HVISITED[target] is None, harlot visited self |
|
|
|
target in var.SEEN+list(var.GUARDED.keys())): |
|
|
|
target in var.SEEN+list(var.GUARDED.keys())): |
|
|
|
pm(cli, crow, ("As the sun rises, you conclude that \u0002{0}\u0002 was not in "+ |
|
|
|
pm(cli, crow, ("Met dat de zon opgaat, zie je dat \u0002{0}\u0002 de hele nacht niet in "+ |
|
|
|
"bed all night, and you fly back to your house.").format(target)) |
|
|
|
"zijn bed heeft gelegen, en je gaat vliegensvlug terug naar je huis.").format(target)) |
|
|
|
else: |
|
|
|
else: |
|
|
|
pm(cli, crow, ("As the sun rises, you conclude that \u0002{0}\u0002 was sleeping "+ |
|
|
|
pm(cli, crow, ("Met dat de zon opgaat, zie je dat \u0002{0}\u0002 de hele nacht "+ |
|
|
|
"all night long, and you fly back to your house.").format(target)) |
|
|
|
"heeft geslapen, en je gaat vliegensvlug terug naar je huis.").format(target)) |
|
|
|
if victim in var.GUARDED.values(): |
|
|
|
if victim in var.GUARDED.values(): |
|
|
|
message.append(("\u0002{0}\u0002 was attacked by the wolves last night, but luckily, the "+ |
|
|
|
message.append(("\u0002{0}\u0002 is afgelopen nacht aangevalen door de wolven, maar gelukkig, "+ |
|
|
|
"guardian angel protected him/her.").format(victim)) |
|
|
|
"de bescherm engel heeft hem/haar beschermd.").format(victim)) |
|
|
|
victim = "" |
|
|
|
victim = "" |
|
|
|
elif not victim: |
|
|
|
elif not victim: |
|
|
|
message.append(random.choice(var.NO_VICTIMS_MESSAGES) + |
|
|
|
message.append(random.choice(var.NO_VICTIMS_MESSAGES) + |
|
|
|
" All villagers, however, have survived.") |
|
|
|
" Alle burgers hebben, wonder boven wonder, het overleeft.") |
|
|
|
elif victim in var.ROLES["harlot"]: # Attacked harlot, yay no kill |
|
|
|
elif victim in var.ROLES["pizzabezorger"]: # Attacked harlot, yay no kill |
|
|
|
if var.HVISITED.get(victim): |
|
|
|
if var.HVISITED.get(victim): |
|
|
|
message.append("The wolves' selected victim was a harlot, "+ |
|
|
|
message.append("De door de wolven gekozen slachtoffer was een pizzabezorger, "+ |
|
|
|
"but she wasn't home.") |
|
|
|
"maar ze was niet thuis.") |
|
|
|
if victim and (victim not in var.ROLES["harlot"] or # not a harlot |
|
|
|
if victim and (victim not in var.ROLES["pizzabezorger"] or # not a harlot |
|
|
|
not var.HVISITED.get(victim)): # harlot stayed home |
|
|
|
not var.HVISITED.get(victim)): # harlot stayed home |
|
|
|
message.append(("The dead body of \u0002{0}\u0002, a "+ |
|
|
|
message.append(("Het dode lichaam van \u0002{0}\u0002, een "+ |
|
|
|
"\u0002{1}\u0002, is found. Those remaining mourn his/her "+ |
|
|
|
"\u0002{1}\u0002, is gevonden. De nabestaanden rouwen om zijn/haar "+ |
|
|
|
"death.").format(victim, var.get_role(victim))) |
|
|
|
"dood.").format(victim, var.get_role(victim))) |
|
|
|
dead.append(victim) |
|
|
|
dead.append(victim) |
|
|
|
var.LOGGER.logBare(victim, "KILLED") |
|
|
|
var.LOGGER.logBare(victim, "KILLED") |
|
|
|
if victim in var.GUNNERS.keys() and var.GUNNERS[victim]: # victim had bullets! |
|
|
|
if victim in var.GUNNERS.keys() and var.GUNNERS[victim]: # victim had bullets! |
|
|
|
if random.random() < var.GUNNER_KILLS_WOLF_AT_NIGHT_CHANCE: |
|
|
|
if random.random() < var.GUNNER_KILLS_WOLF_AT_NIGHT_CHANCE: |
|
|
|
wc = var.ROLES["werecrow"] |
|
|
|
wc = var.ROLES["kraai"] |
|
|
|
for crow in wc: |
|
|
|
for crow in wc: |
|
|
|
if crow in var.OBSERVED.keys(): |
|
|
|
if crow in var.OBSERVED.keys(): |
|
|
|
wc.remove(crow) |
|
|
|
wc.remove(crow) |
|
|
|
# don't kill off werecrows that observed |
|
|
|
# don't kill off werecrows that observed |
|
|
|
deadwolf = random.choice(var.ROLES["wolf"]+wc) |
|
|
|
deadwolf = random.choice(var.ROLES["wolf"]+wc) |
|
|
|
message.append(("Fortunately, the victim, \02{0}\02, had bullets, and "+ |
|
|
|
message.append(("Helaas, het slachtoffer, \02{0}\02, heeft een geweer met kogels en "+ |
|
|
|
"\02{1}\02, a \02{2}\02, was shot dead.").format(victim, deadwolf, var.get_role(deadwolf))) |
|
|
|
"\02{1}\02, een \02{2}\02, is neergeschoten.").format(victim, deadwolf, var.get_role(deadwolf))) |
|
|
|
var.LOGGER.logBare(deadwolf, "KILLEDBYGUNNER") |
|
|
|
var.LOGGER.logBare(deadwolf, "KILLEDBYGUNNER") |
|
|
|
dead.append(deadwolf) |
|
|
|
dead.append(deadwolf) |
|
|
|
if victim in var.HVISITED.values(): # victim was visited by some harlot |
|
|
|
if victim in var.HVISITED.values(): # victim was visited by some harlot |
|
|
|
for hlt in var.HVISITED.keys(): |
|
|
|
for hlt in var.HVISITED.keys(): |
|
|
|
if var.HVISITED[hlt] == victim: |
|
|
|
if var.HVISITED[hlt] == victim: |
|
|
|
message.append(("\02{0}\02, a \02harlot\02, made the unfortunate mistake of "+ |
|
|
|
message.append(("\02{0}\02, een \02pizzabezorger\02, maakte de verkeerde beslissing "+ |
|
|
|
"visiting the victim's house last night and is "+ |
|
|
|
"door afgelopen nacht het huis van het slachtoffer te bezoeken en is "+ |
|
|
|
"now dead.").format(hlt)) |
|
|
|
"nu gestorven.").format(hlt)) |
|
|
|
dead.append(hlt) |
|
|
|
dead.append(hlt) |
|
|
|
for harlot in var.ROLES["harlot"]: |
|
|
|
for harlot in var.ROLES["pizzabezorger"]: |
|
|
|
if var.HVISITED.get(harlot) in var.ROLES["wolf"]+var.ROLES["werecrow"]: |
|
|
|
if var.HVISITED.get(harlot) in var.ROLES["wolf"]+var.ROLES["kraai"]: |
|
|
|
message.append(("\02{0}\02, a \02harlot\02, made the unfortunate mistake of "+ |
|
|
|
message.append(("\02{0}\02, een \02pizzabezorger\02, maakte de verkeerde beslissing door "+ |
|
|
|
"visiting a wolf's house last night and is "+ |
|
|
|
"afgelopen nacht het huis van de wolf te bezoeken en is "+ |
|
|
|
"now dead.").format(harlot)) |
|
|
|
"nu gestorven.").format(harlot)) |
|
|
|
dead.append(harlot) |
|
|
|
dead.append(harlot) |
|
|
|
for gangel in var.ROLES["guardian angel"]: |
|
|
|
for gangel in var.ROLES["bescherm engel"]: |
|
|
|
if var.GUARDED.get(gangel) in var.ROLES["wolf"]+var.ROLES["werecrow"]: |
|
|
|
if var.GUARDED.get(gangel) in var.ROLES["wolf"]+var.ROLES["kraai"]: |
|
|
|
if victim == gangel: |
|
|
|
if victim == gangel: |
|
|
|
continue # already dead. |
|
|
|
continue # already dead. |
|
|
|
r = random.random() |
|
|
|
r = random.random() |
|
|
|
if r < var.GUARDIAN_ANGEL_DIES_CHANCE: |
|
|
|
if r < var.GUARDIAN_ANGEL_DIES_CHANCE: |
|
|
|
message.append(("\02{0}\02, a \02guardian angel\02, "+ |
|
|
|
message.append(("\02{0}\02, een \02bescherm engel\02, "+ |
|
|
|
"made the unfortunate mistake of guarding a wolf "+ |
|
|
|
"maakte de verkeerde beslissing door afgelopen nacht een wolf "+ |
|
|
|
"last night, attempted to escape, but failed "+ |
|
|
|
"te beschermen, hij/zij probeerde te ontkomen, maar het mislukte "+ |
|
|
|
"and is now dead.").format(gangel)) |
|
|
|
"en is nu gestorven.").format(gangel)) |
|
|
|
var.LOGGER.logBare(gangel, "KILLEDWHENGUARDINGWOLF") |
|
|
|
var.LOGGER.logBare(gangel, "KILLEDWHENGUARDINGWOLF") |
|
|
|
dead.append(gangel) |
|
|
|
dead.append(gangel) |
|
|
|
cli.msg(chan, "\n".join(message)) |
|
|
|
cli.msg(chan, "\n".join(message)) |
|
|
@ -1385,15 +1385,15 @@ def transition_day(cli, gameid=0): |
|
|
|
if (var.WOLF_STEALS_GUN and victim in dead and |
|
|
|
if (var.WOLF_STEALS_GUN and victim in dead and |
|
|
|
victim in var.GUNNERS.keys() and var.GUNNERS[victim] > 0): |
|
|
|
victim in var.GUNNERS.keys() and var.GUNNERS[victim] > 0): |
|
|
|
# victim has bullets |
|
|
|
# victim has bullets |
|
|
|
guntaker = random.choice(var.ROLES["wolf"] + var.ROLES["werecrow"] |
|
|
|
guntaker = random.choice(var.ROLES["wolf"] + var.ROLES["kraai"] |
|
|
|
+ var.ROLES["traitor"]) # random looter |
|
|
|
+ var.ROLES["verrader"]) # random looter |
|
|
|
numbullets = var.GUNNERS[victim] |
|
|
|
numbullets = var.GUNNERS[victim] |
|
|
|
var.WOLF_GUNNERS[guntaker] = numbullets # transfer bullets to him/her |
|
|
|
var.WOLF_GUNNERS[guntaker] = numbullets # transfer bullets to him/her |
|
|
|
mmsg = ("While searching {2}'s belongings, You found " + |
|
|
|
mmsg = ("tijdens het zoeken naar {2}'s eigendommen, Je vond " + |
|
|
|
"a gun loaded with {0} silver bullet{1}! " + |
|
|
|
"een geweer geladen met {0} zilveren kogel{1}! " + |
|
|
|
"You may only use it during the day. " + |
|
|
|
"Je kunt deze alleen overdag gebruiken. " + |
|
|
|
"If you shoot at a wolf, you will intentionally miss. " + |
|
|
|
"Als je een wolf raakt, kan het zijn dat je hem perongeluk zal missen. " + |
|
|
|
"If you shoot a villager, it is likely that they will be injured.") |
|
|
|
"Als je een burger raakt, zal het waarschijnlijk zijn dat deze gewond raakt.") |
|
|
|
if numbullets == 1: |
|
|
|
if numbullets == 1: |
|
|
|
mmsg = mmsg.format(numbullets, "", victim) |
|
|
|
mmsg = mmsg.format(numbullets, "", victim) |
|
|
|
else: |
|
|
|
else: |
|
|
@ -1406,11 +1406,11 @@ def transition_day(cli, gameid=0): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def chk_nightdone(cli): |
|
|
|
def chk_nightdone(cli): |
|
|
|
if (len(var.SEEN) == len(var.ROLES["seer"]) and # Seers have seen. |
|
|
|
if (len(var.SEEN) == len(var.ROLES["ziener"]) and # Seers have seen. |
|
|
|
len(var.HVISITED.keys()) == len(var.ROLES["harlot"]) and # harlots have visited. |
|
|
|
len(var.HVISITED.keys()) == len(var.ROLES["pizzabezorger"]) and # harlots have visited. |
|
|
|
len(var.GUARDED.keys()) == len(var.ROLES["guardian angel"]) and # guardians have guarded |
|
|
|
len(var.GUARDED.keys()) == len(var.ROLES["bescherm engel"]) and # guardians have guarded |
|
|
|
len(var.ROLES["werecrow"]+var.ROLES["wolf"]) == len(var.KILLS)+len(var.OBSERVED) and |
|
|
|
len(var.ROLES["kraai"]+var.ROLES["wolf"]) == len(var.KILLS)+len(var.OBSERVED) and |
|
|
|
var.PHASE == "night"): |
|
|
|
var.PHASE == "nacht"): |
|
|
|
|
|
|
|
|
|
|
|
# check if wolves are actually agreeing |
|
|
|
# check if wolves are actually agreeing |
|
|
|
if len(set(var.KILLS.values())) > 1: |
|
|
|
if len(set(var.KILLS.values())) > 1: |
|
|
@ -1420,7 +1420,7 @@ def chk_nightdone(cli): |
|
|
|
t.cancel() |
|
|
|
t.cancel() |
|
|
|
|
|
|
|
|
|
|
|
var.TIMERS = {} |
|
|
|
var.TIMERS = {} |
|
|
|
if var.PHASE == "night": # Double check |
|
|
|
if var.PHASE == "nacht": # Double check |
|
|
|
transition_day(cli) |
|
|
|
transition_day(cli) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1431,25 +1431,25 @@ def vote(cli, nick, chann_, rest): |
|
|
|
chan = botconfig.CHANNEL |
|
|
|
chan = botconfig.CHANNEL |
|
|
|
|
|
|
|
|
|
|
|
if var.PHASE in ("geen", "join"): |
|
|
|
if var.PHASE in ("geen", "join"): |
|
|
|
cli.notice(nick, "No game is currently running.") |
|
|
|
cli.notice(nick, "Er is geen spel bezig.") |
|
|
|
return |
|
|
|
return |
|
|
|
elif nick not in var.list_players() or nick in var.DISCONNECTED.keys(): |
|
|
|
elif nick not in var.list_players() or nick in var.DISCONNECTED.keys(): |
|
|
|
cli.notice(nick, "You're not currently playing.") |
|
|
|
cli.notice(nick, "Jij speelt momenteel niet mee.") |
|
|
|
return |
|
|
|
return |
|
|
|
if var.PHASE != "day": |
|
|
|
if var.PHASE != "dag": |
|
|
|
cli.notice(nick, ("Lynching is only allowed during the day. "+ |
|
|
|
cli.notice(nick, ("Elimineren kan alleen overdag gedaan worden. "+ |
|
|
|
"Please wait patiently for morning.")) |
|
|
|
"Wacht tot de morgen is gekomen.")) |
|
|
|
return |
|
|
|
return |
|
|
|
if nick in var.WOUNDED: |
|
|
|
if nick in var.WOUNDED: |
|
|
|
cli.msg(chan, ("{0}: You are wounded and resting, "+ |
|
|
|
cli.msg(chan, ("{0}: Je bent gewond en moet rusten, "+ |
|
|
|
"thus you are unable to vote for the day.").format(nick)) |
|
|
|
"daarom kun je vandaag niet stemmen.").format(nick)) |
|
|
|
return |
|
|
|
return |
|
|
|
pl = var.list_players() |
|
|
|
pl = var.list_players() |
|
|
|
pl_l = [x.strip().lower() for x in pl] |
|
|
|
pl_l = [x.strip().lower() for x in pl] |
|
|
|
rest = re.split(" +",rest)[0].strip().lower() |
|
|
|
rest = re.split(" +",rest)[0].strip().lower() |
|
|
|
|
|
|
|
|
|
|
|
if not rest: |
|
|
|
if not rest: |
|
|
|
cli.notice(nick, "Not enough parameters.") |
|
|
|
cli.notice(nick, "Niet genoeg parameters.") |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
matches = 0 |
|
|
|
matches = 0 |
|
|
@ -1462,7 +1462,7 @@ def vote(cli, nick, chann_, rest): |
|
|
|
matches += 1 |
|
|
|
matches += 1 |
|
|
|
else: |
|
|
|
else: |
|
|
|
if matches != 1: |
|
|
|
if matches != 1: |
|
|
|
pm(cli, nick, "\u0002{0}\u0002 is currently not playing.".format(rest)) |
|
|
|
pm(cli, nick, "\u0002{0}\u0002 speelt niet mee.".format(rest)) |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
voted = pl[pl_l.index(target)] |
|
|
|
voted = pl[pl_l.index(target)] |
|
|
@ -1477,9 +1477,9 @@ def vote(cli, nick, chann_, rest): |
|
|
|
var.VOTES[voted] = [nick] |
|
|
|
var.VOTES[voted] = [nick] |
|
|
|
else: |
|
|
|
else: |
|
|
|
var.VOTES[voted].append(nick) |
|
|
|
var.VOTES[voted].append(nick) |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 votes for "+ |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 stemmen voor "+ |
|
|
|
"\u0002{1}\u0002.").format(nick, voted)) |
|
|
|
"\u0002{1}\u0002.").format(nick, voted)) |
|
|
|
var.LOGGER.logMessage("{0} votes for {1}.".format(nick, voted)) |
|
|
|
var.LOGGER.logMessage("{0} stemmen voor {1}.".format(nick, voted)) |
|
|
|
var.LOGGER.logBare(voted, "VOTED", nick) |
|
|
|
var.LOGGER.logBare(voted, "VOTED", nick) |
|
|
|
|
|
|
|
|
|
|
|
var.LAST_VOTES = None # reset |
|
|
|
var.LAST_VOTES = None # reset |
|
|
@ -1495,15 +1495,15 @@ def retract(cli, nick, chann_, rest): |
|
|
|
chan = botconfig.CHANNEL |
|
|
|
chan = botconfig.CHANNEL |
|
|
|
|
|
|
|
|
|
|
|
if var.PHASE in ("geen", "join"): |
|
|
|
if var.PHASE in ("geen", "join"): |
|
|
|
cli.notice(nick, "No game is currently running.") |
|
|
|
cli.notice(nick, "Er is nu geen spel bezig.") |
|
|
|
return |
|
|
|
return |
|
|
|
elif nick not in var.list_players() or nick in var.DISCONNECTED.keys(): |
|
|
|
elif nick not in var.list_players() or nick in var.DISCONNECTED.keys(): |
|
|
|
cli.notice(nick, "You're not currently playing.") |
|
|
|
cli.notice(nick, "Jij speelt nu niet mee.") |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
if var.PHASE != "day": |
|
|
|
if var.PHASE != "dag": |
|
|
|
cli.notice(nick, ("Lynching is only allowed during the day. "+ |
|
|
|
cli.notice(nick, ("Elimineren kan alleen overdag gedaan worden. "+ |
|
|
|
"Please wait patiently for morning.")) |
|
|
|
"Wacht tot de morgen is gekomen.")) |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
candidates = var.VOTES.keys() |
|
|
|
candidates = var.VOTES.keys() |
|
|
@ -1512,13 +1512,13 @@ def retract(cli, nick, chann_, rest): |
|
|
|
var.VOTES[voter].remove(nick) |
|
|
|
var.VOTES[voter].remove(nick) |
|
|
|
if not var.VOTES[voter]: |
|
|
|
if not var.VOTES[voter]: |
|
|
|
del var.VOTES[voter] |
|
|
|
del var.VOTES[voter] |
|
|
|
cli.msg(chan, "\u0002{0}\u0002 retracted his/her vote.".format(nick)) |
|
|
|
cli.msg(chan, "\u0002{0}\u0002 trekt zijn/haar stem terug.".format(nick)) |
|
|
|
var.LOGGER.logBare(voter, "RETRACT", nick) |
|
|
|
var.LOGGER.logBare(voter, "RETRACT", nick) |
|
|
|
var.LOGGER.logMessage("{0} retracted his/her vote.".format(nick)) |
|
|
|
var.LOGGER.logMessage("{0} trekt zijn/haar stem terug.".format(nick)) |
|
|
|
var.LAST_VOTES = None # reset |
|
|
|
var.LAST_VOTES = None # reset |
|
|
|
break |
|
|
|
break |
|
|
|
else: |
|
|
|
else: |
|
|
|
cli.notice(nick, "You haven't voted yet.") |
|
|
|
cli.notice(nick, "Je hebt nog niet gestemd.") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1528,26 +1528,26 @@ def shoot(cli, nick, chann_, rest): |
|
|
|
|
|
|
|
|
|
|
|
chan = botconfig.CHANNEL |
|
|
|
chan = botconfig.CHANNEL |
|
|
|
if var.PHASE in ("geen", "join"): |
|
|
|
if var.PHASE in ("geen", "join"): |
|
|
|
cli.notice(nick, "No game is currently running.") |
|
|
|
cli.notice(nick, "Er is nu geen spel bezig.") |
|
|
|
return |
|
|
|
return |
|
|
|
elif nick not in var.list_players() or nick in var.DISCONNECTED.keys(): |
|
|
|
elif nick not in var.list_players() or nick in var.DISCONNECTED.keys(): |
|
|
|
cli.notice(nick, "You're not currently playing.") |
|
|
|
cli.notice(nick, "Jij speelt nu niet mee.") |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
if var.PHASE != "day": |
|
|
|
if var.PHASE != "dag": |
|
|
|
cli.notice(nick, ("Shooting is only allowed during the day. "+ |
|
|
|
cli.notice(nick, ("Schieten mag alleen overdag. "+ |
|
|
|
"Please wait patiently for morning.")) |
|
|
|
"Wacht tot de morgen is gekomen.")) |
|
|
|
return |
|
|
|
return |
|
|
|
if not (nick in var.GUNNERS.keys() or nick in var.WOLF_GUNNERS.keys()): |
|
|
|
if not (nick in var.GUNNERS.keys() or nick in var.WOLF_GUNNERS.keys()): |
|
|
|
pm(cli, nick, "You don't have a gun.") |
|
|
|
pm(cli, nick, "Je hebt geen geweer.") |
|
|
|
return |
|
|
|
return |
|
|
|
elif ((nick in var.GUNNERS.keys() and not var.GUNNERS[nick]) or |
|
|
|
elif ((nick in var.GUNNERS.keys() and not var.GUNNERS[nick]) or |
|
|
|
(nick in var.WOLF_GUNNERS.keys() and not var.WOLF_GUNNERS[nick])): |
|
|
|
(nick in var.WOLF_GUNNERS.keys() and not var.WOLF_GUNNERS[nick])): |
|
|
|
pm(cli, nick, "You don't have any more bullets.") |
|
|
|
pm(cli, nick, "Je kogels zijn op.") |
|
|
|
return |
|
|
|
return |
|
|
|
victim = re.split(" +",rest)[0].strip().lower() |
|
|
|
victim = re.split(" +",rest)[0].strip().lower() |
|
|
|
if not victim: |
|
|
|
if not victim: |
|
|
|
cli.notice(nick, "Not enough parameters") |
|
|
|
cli.notice(nick, "Niet genoeg parameters") |
|
|
|
return |
|
|
|
return |
|
|
|
pl = var.list_players() |
|
|
|
pl = var.list_players() |
|
|
|
pll = [x.lower() for x in pl] |
|
|
|
pll = [x.lower() for x in pl] |
|
|
@ -1561,14 +1561,14 @@ def shoot(cli, nick, chann_, rest): |
|
|
|
matches += 1 |
|
|
|
matches += 1 |
|
|
|
else: |
|
|
|
else: |
|
|
|
if matches != 1: |
|
|
|
if matches != 1: |
|
|
|
pm(cli, nick, "\u0002{0}\u0002 is currently not playing.".format(victim)) |
|
|
|
pm(cli, nick, "\u0002{0}\u0002 speelt niet mee met dit spel.".format(victim)) |
|
|
|
return |
|
|
|
return |
|
|
|
victim = pl[pll.index(target)] |
|
|
|
victim = pl[pll.index(target)] |
|
|
|
if victim == nick: |
|
|
|
if victim == nick: |
|
|
|
cli.notice(nick, "You are holding it the wrong way.") |
|
|
|
cli.notice(nick, "Je houd het geweer verkeerdom vast.") |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
wolfshooter = nick in var.ROLES["wolf"]+var.ROLES["werecrow"]+var.ROLES["traitor"] |
|
|
|
wolfshooter = nick in var.ROLES["wolf"]+var.ROLES["kraai"]+var.ROLES["verrader"] |
|
|
|
|
|
|
|
|
|
|
|
if wolfshooter and nick in var.WOLF_GUNNERS: |
|
|
|
if wolfshooter and nick in var.WOLF_GUNNERS: |
|
|
|
var.WOLF_GUNNERS[nick] -= 1 |
|
|
|
var.WOLF_GUNNERS[nick] -= 1 |
|
|
@ -1576,41 +1576,41 @@ def shoot(cli, nick, chann_, rest): |
|
|
|
var.GUNNERS[nick] -= 1 |
|
|
|
var.GUNNERS[nick] -= 1 |
|
|
|
|
|
|
|
|
|
|
|
rand = random.random() |
|
|
|
rand = random.random() |
|
|
|
if nick in var.ROLES["village drunk"]: |
|
|
|
if nick in var.ROLES["dronken burger"]: |
|
|
|
chances = var.DRUNK_GUN_CHANCES |
|
|
|
chances = var.DRUNK_GUN_CHANCES |
|
|
|
else: |
|
|
|
else: |
|
|
|
chances = var.GUN_CHANCES |
|
|
|
chances = var.GUN_CHANCES |
|
|
|
|
|
|
|
|
|
|
|
wolfvictim = victim in var.ROLES["wolf"]+var.ROLES["werecrow"] |
|
|
|
wolfvictim = victim in var.ROLES["wolf"]+var.ROLES["kraai"] |
|
|
|
if rand <= chances[0] and not (wolfshooter and wolfvictim): # didn't miss or suicide |
|
|
|
if rand <= chances[0] and not (wolfshooter and wolfvictim): # didn't miss or suicide |
|
|
|
# and it's not a wolf shooting another wolf |
|
|
|
# and it's not a wolf shooting another wolf |
|
|
|
|
|
|
|
|
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 shoots \u0002{1}\u0002 with "+ |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 schiet op \u0002{1}\u0002 met "+ |
|
|
|
"a silver bullet!").format(nick, victim)) |
|
|
|
"een zilveren kogel").format(nick, victim)) |
|
|
|
var.LOGGER.logMessage("{0} shoots {1} with a silver bullet!".format(nick, victim)) |
|
|
|
var.LOGGER.logMessage("{0} schiet op {1} met een zilveren kogel!".format(nick, victim)) |
|
|
|
victimrole = var.get_role(victim) |
|
|
|
victimrole = var.get_role(victim) |
|
|
|
if victimrole in ("wolf", "werecrow"): |
|
|
|
if victimrole in ("wolf", "kraai"): |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 is a wolf, and is dying from "+ |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 is een wolf, en is gedood door "+ |
|
|
|
"the silver bullet.").format(victim)) |
|
|
|
"een zilveren kogel.").format(victim)) |
|
|
|
var.LOGGER.logMessage(("{0} is a wolf, and is dying from the "+ |
|
|
|
var.LOGGER.logMessage(("{0} is een wolf,en is gedood door "+ |
|
|
|
"silver bullet.").format(victim)) |
|
|
|
"een zilveren kogel.").format(victim)) |
|
|
|
if not del_player(cli, victim): |
|
|
|
if not del_player(cli, victim): |
|
|
|
return |
|
|
|
return |
|
|
|
elif random.random() <= var.MANSLAUGHTER_CHANCE: |
|
|
|
elif random.random() <= var.MANSLAUGHTER_CHANCE: |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 is a not a wolf "+ |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 is geen wolf "+ |
|
|
|
"but was accidentally fatally injured.").format(victim)) |
|
|
|
"maar is perongeluk fataal gewond geraakt.").format(victim)) |
|
|
|
cli.msg(chan, "Appears (s)he was a \u0002{0}\u0002.".format(victimrole)) |
|
|
|
cli.msg(chan, "Hij/zij bleek een \u0002{0}\u0002 te zijn.".format(victimrole)) |
|
|
|
var.LOGGER.logMessage("{0} is not a wolf but was accidentally fatally injured.".format(victim)) |
|
|
|
var.LOGGER.logMessage("{0} is geen wolf en is fataal gewond geraakt.".format(victim)) |
|
|
|
var.LOGGER.logMessage("Appears (s)he was a {0}.".format(victimrole)) |
|
|
|
var.LOGGER.logMessage("Hij/zij was een {0}.".format(victimrole)) |
|
|
|
if not del_player(cli, victim): |
|
|
|
if not del_player(cli, victim): |
|
|
|
return |
|
|
|
return |
|
|
|
else: |
|
|
|
else: |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 is a villager and is injured but "+ |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 is een burger en is gewond geraakt maar "+ |
|
|
|
"will have a full recovery. S/He will be resting "+ |
|
|
|
"zal volledig hestellen. Hij/zij moet de hele dag "+ |
|
|
|
"for the day.").format(victim)) |
|
|
|
"rust houden.").format(victim)) |
|
|
|
var.LOGGER.logMessage(("{0} is a villager and is injured but "+ |
|
|
|
var.LOGGER.logMessage(("{0} is een burger en is gewond geraakt maar "+ |
|
|
|
"will have a full recovery. S/He will be resting "+ |
|
|
|
"zal volledig hestellen. Hij/zij moet de hele dag "+ |
|
|
|
"for the day").format(victim)) |
|
|
|
"rust houden").format(victim)) |
|
|
|
if victim not in var.WOUNDED: |
|
|
|
if victim not in var.WOUNDED: |
|
|
|
var.WOUNDED.append(victim) |
|
|
|
var.WOUNDED.append(victim) |
|
|
|
lcandidates = list(var.VOTES.keys()) |
|
|
|
lcandidates = list(var.VOTES.keys()) |
|
|
@ -1623,15 +1623,15 @@ def shoot(cli, nick, chann_, rest): |
|
|
|
chk_decision(cli) |
|
|
|
chk_decision(cli) |
|
|
|
chk_win(cli) |
|
|
|
chk_win(cli) |
|
|
|
elif rand <= chances[0] + chances[1]: |
|
|
|
elif rand <= chances[0] + chances[1]: |
|
|
|
cli.msg(chan, "\u0002{0}\u0002 is a lousy shooter. S/He missed!".format(nick)) |
|
|
|
cli.msg(chan, "\u0002{0}\u0002 is een slechte schutter. Hij/zij mist!".format(nick)) |
|
|
|
var.LOGGER.logMessage("{0} is a lousy shooter. S/He missed!".format(nick)) |
|
|
|
var.LOGGER.logMessage("{0} is een slechte schutter. Hij/zij mist!".format(nick)) |
|
|
|
else: |
|
|
|
else: |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 should clean his/her weapons more often. "+ |
|
|
|
cli.msg(chan, ("\u0002{0}\u0002 moet zijn/haar geweer vaker schoonmaken. "+ |
|
|
|
"The gun exploded and killed him/her!").format(nick)) |
|
|
|
"Het geweer explodeerde en dode hem/haar!").format(nick)) |
|
|
|
cli.msg(chan, "Appears that (s)he was a \u0002{0}\u0002.".format(var.get_role(nick))) |
|
|
|
cli.msg(chan, "Hij/zij was een \u0002{0}\u0002.".format(var.get_role(nick))) |
|
|
|
var.LOGGER.logMessage(("{0} should clean his/her weapers more often. "+ |
|
|
|
var.LOGGER.logMessage(("{0} moet zijn/haar geweer vaker schoonmakenn. "+ |
|
|
|
"The gun exploded and killed him/her!").format(nick)) |
|
|
|
"Het geweer explodeerde en dode hem/haar!").format(nick)) |
|
|
|
var.LOGGER.logMessage("Appears that (s)he was a {0}.".format(var.get_role(nick))) |
|
|
|
var.LOGGER.logMessage("Hij/zij was een {0}.".format(var.get_role(nick))) |
|
|
|
if not del_player(cli, nick): |
|
|
|
if not del_player(cli, nick): |
|
|
|
return # Someone won. |
|
|
|
return # Someone won. |
|
|
|
|
|
|
|
|
|
|
|