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.",
|
"cat_land": "The cat lands on its \u0002feet\u0002.",
|
||||||
"vengeful_role": "You are a \u0002vengeful ghost\u0002 who is against the \u0002{0}\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.",
|
"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.",
|
"turncoat_side": "Current side: \u0002{0}\u0002.",
|
||||||
"assassin_role_info": "You are an \u0002assassin\u0002{0}.",
|
"assassin_role_info": "You are an \u0002assassin\u0002{0}.",
|
||||||
"assassin_targeting": " and targeting {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
|
if player in get_roles("cursed villager"): # FIXME
|
||||||
pl[i] = player + " (cursed)"
|
pl[i] = player + " (cursed)"
|
||||||
pm(cli, actor, messages["players_list"].format(", ".join(pl)))
|
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":
|
elif nick_role == "turncoat":
|
||||||
var.TURNCOATS[actor] = ("none", -1)
|
var.TURNCOATS[actor] = ("none", -1)
|
||||||
|
|
||||||
@ -3861,10 +3857,6 @@ def check_exchange(cli, actor, nick):
|
|||||||
if player in get_roles("cursed villager"): # FIXME
|
if player in get_roles("cursed villager"): # FIXME
|
||||||
pl[i] = player + " (cursed)"
|
pl[i] = player + " (cursed)"
|
||||||
pm(cli, nick, messages["players_list"].format(", ".join(pl)))
|
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":
|
elif actor_role == "turncoat":
|
||||||
var.TURNCOATS[nick] = ("none", -1)
|
var.TURNCOATS[nick] = ("none", -1)
|
||||||
|
|
||||||
@ -4758,15 +4750,6 @@ def transition_night():
|
|||||||
clone.send(messages["clone_notify"])
|
clone.send(messages["clone_notify"])
|
||||||
clone.send(messages["players_list"].format(", ".join(p.nick for p in pl)))
|
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:
|
for g in var.GUNNERS:
|
||||||
if g not in ps:
|
if g not in ps:
|
||||||
continue
|
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:
|
if role == "clone" and wrapper.source.nick in var.CLONED:
|
||||||
wrapper.pm(messages["clone_target"].format(var.CLONED[wrapper.source.nick]))
|
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
|
# Remind turncoats of their side
|
||||||
if role == "turncoat":
|
if role == "turncoat":
|
||||||
wrapper.pm(messages["turncoat_side"].format(var.TURNCOATS.get(wrapper.source.nick, "none")[0]))
|
wrapper.pm(messages["turncoat_side"].format(var.TURNCOATS.get(wrapper.source.nick, "none")[0]))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user