Split minion (#337)
This commit is contained in:
parent
845663820f
commit
afa9a04077
@ -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
48
src/roles/minion.py
Normal 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:
|
@ -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]))
|
||||
|
Loading…
x
Reference in New Issue
Block a user