Split minion (#337)

This commit is contained in:
Ammon Smith 2018-05-26 15:33:56 -07:00 committed by Em Barry
parent 845663820f
commit afa9a04077
3 changed files with 49 additions and 26 deletions

View File

@ -783,7 +783,7 @@
"cat_land": "The cat lands on its \u0002feet\u0002.",
"vengeful_role": "You are a \u0002vengeful ghost\u0002 who is against the \u0002{0}\u0002.",
"show_role": "You are a{0} \u0002{1}\u0002.",
"original_wolves": "Original wolves: ",
"original_wolves": "Original wolves: {0}",
"turncoat_side": "Current side: \u0002{0}\u0002.",
"assassin_role_info": "You are an \u0002assassin\u0002{0}.",
"assassin_targeting": " and targeting {0}",

48
src/roles/minion.py Normal file
View File

@ -0,0 +1,48 @@
import re
import random
import itertools
import math
from collections import defaultdict
import botconfig
from src.utilities import *
from src import channels, users, debuglog, errlog, plog
from src.functions import get_players, get_all_players, get_main_role, get_reveal_role, get_target
from src.decorators import command, event_listener
from src.containers import UserList, UserSet, UserDict, DefaultUserDict
from src.messages import messages
from src.events import Event
def wolf_list(var):
wolves = [wolf.nick for wolf in get_all_players(var.WOLF_ROLES)]
random.shuffle(wolves)
return messages["wolves_list"].format(", ".join(wolves))
@event_listener("transition_night_end", priority=2)
def on_transition_night_end(evt, var):
if var.FIRST_NIGHT or var.ALWAYS_PM_ROLE:
for minion in get_all_players(("minion",)):
if minion.prefers_simple():
to_send = "minion_simple"
else:
to_send = "minion_notify"
minion.send(messages[to_send])
minion.send(wolf_list(var))
@event_listener("exchange_roles")
def on_exchange(evt, var, actor, target, actor_role, target_role):
if actor_role == "minion":
evt.data["target_messages"].append(wolf_list(var))
elif target_role == "minion":
evt.data["actor_messages"].append(wolf_list(var))
@event_listener("myrole")
def on_myrole(evt, var, user):
if user in get_all_players(("minion",)):
wolves = []
for wolfrole in var.WOLF_ROLES:
for player in var.ORIGINAL_ROLES[wolfrole]:
wolves.append(player.nick)
evt.data["messages"].append(messages["original_wolves"].format(", ".join(wolves)))
# vim: set sw=4 expandtab:

View File

@ -3843,10 +3843,6 @@ def check_exchange(cli, actor, nick):
if player in get_roles("cursed villager"): # FIXME
pl[i] = player + " (cursed)"
pm(cli, actor, messages["players_list"].format(", ".join(pl)))
elif nick_role == "minion":
wolves = list_players(var.WOLF_ROLES)
random.shuffle(wolves)
pm(cli, actor, messages["wolves_list"].format(", ".join(wolves)))
elif nick_role == "turncoat":
var.TURNCOATS[actor] = ("none", -1)
@ -3861,10 +3857,6 @@ def check_exchange(cli, actor, nick):
if player in get_roles("cursed villager"): # FIXME
pl[i] = player + " (cursed)"
pm(cli, nick, messages["players_list"].format(", ".join(pl)))
elif actor_role == "minion":
wolves = list_players(var.WOLF_ROLES)
random.shuffle(wolves)
pm(cli, nick, messages["wolves_list"].format(", ".join(wolves)))
elif actor_role == "turncoat":
var.TURNCOATS[nick] = ("none", -1)
@ -4758,15 +4750,6 @@ def transition_night():
clone.send(messages["clone_notify"])
clone.send(messages["players_list"].format(", ".join(p.nick for p in pl)))
for minion in get_all_players(("minion",)):
wolves = get_players(var.WOLF_ROLES)
random.shuffle(wolves)
if minion.prefers_simple():
minion.send(messages["minion_simple"])
else:
minion.send(messages["minion_notify"])
minion.send(messages["wolves_list"].format(", ".join(p.nick for p in wolves)))
for g in var.GUNNERS:
if g not in ps:
continue
@ -5869,14 +5852,6 @@ def myrole(var, wrapper, message): # FIXME: Need to fix !swap once this gets con
if role == "clone" and wrapper.source.nick in var.CLONED:
wrapper.pm(messages["clone_target"].format(var.CLONED[wrapper.source.nick]))
# Give minion the wolf list they would have recieved night one
if role == "minion":
wolves = []
for wolfrole in var.WOLF_ROLES:
for player in var.ORIGINAL_ROLES[wolfrole]:
wolves.append(player.nick)
wrapper.pm(messages["original_wolves"] + ", ".join(wolves))
# Remind turncoats of their side
if role == "turncoat":
wrapper.pm(messages["turncoat_side"].format(var.TURNCOATS.get(wrapper.source.nick, "none")[0]))