import re import random from src.utilities import * from src import users, channels, status, debuglog, errlog, plog from src.functions import get_players, get_all_players, get_all_roles, get_target, get_main_role, change_role 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 from src.cats import Wolf, All from src.roles.helper.wolves import is_known_wolf_ally, send_wolfchat_message, get_wolfchat_roles, register_killer register_killer("alpha wolf") ENABLED = False ALPHAS = UserSet() # type: UserSet[users.User] BITTEN = UserDict() # type: UserDict[users.User, users.User] @command("bite", chan=False, pm=True, playing=True, silenced=True, phases=("night", ), roles=("alpha wolf", )) def observe(var, wrapper, message): """Turn a player into a wolf!""" if not ENABLED: wrapper.pm(messages["alpha_no_bite"])
import re import random from src.utilities import * from src import users, channels, debuglog, errlog, plog from src.functions import get_players, get_all_players, get_all_roles, get_target, get_main_role, change_role from src.decorators import command, event_listener from src.containers import UserList, UserSet, UserDict, DefaultUserDict from src.messages import messages from src.status import try_misdirection, try_exchange, add_lycanthropy, add_lycanthropy_scope from src.cats import Wolf, All from src.roles.helper.wolves import is_known_wolf_ally, send_wolfchat_message, get_wolfchat_roles, register_killer register_killer("alpha wolf") ENABLED = False ALPHAS = UserSet() # type: UserSet[users.User] BITTEN = UserDict() # type: UserDict[users.User, users.User] @command("bite", chan=False, pm=True, playing=True, silenced=True, phases=("night",), roles=("alpha wolf",)) def observe(var, wrapper, message): """Turn a player into a wolf!""" if not ENABLED: wrapper.pm(messages["alpha_no_bite"]) return if wrapper.source in ALPHAS: wrapper.pm(messages["alpha_already_bit"]) return target = get_target(var, wrapper, re.split(" +", message)[0]) if not target: return
import re import random from src.utilities import * from src import users, channels, debuglog, errlog, plog from src.functions import get_players, get_all_players from src.decorators import command, event_listener from src.containers import UserList, UserSet, UserDict, DefaultUserDict from src.messages import messages from src.status import try_misdirection, try_exchange from src.roles.helper.mystics import setup_variables from src.roles.helper.wolves import register_killer LAST_COUNT = setup_variables("wolf mystic", send_role=False, types=("Safe", "Win Stealer")) register_killer("wolf mystic") @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind): if kind == "role_categories": evt.data["wolf mystic"] = {"Wolf", "Wolfchat", "Wolfteam", "Killer", "Nocturnal", "Intuitive"} # vim: set sw=4 expandtab:
import re import random from src.utilities import * from src import users, channels, debuglog, errlog, plog from src.functions import get_players, get_all_players, get_all_roles, get_target, get_main_role from src.decorators import command, event_listener from src.containers import UserList, UserSet, UserDict, DefaultUserDict from src.messages import messages from src.status import try_misdirection, try_exchange from src.cats import Nocturnal from src.roles.helper.wolves import is_known_wolf_ally, send_wolfchat_message, register_killer register_killer("werecrow") OBSERVED = UserDict() # type: UserDict[users.User, users.User] @command("observe", chan=False, pm=True, playing=True, silenced=True, phases=("night", ), roles=("werecrow", )) def observe(var, wrapper, message): """Observe a player to see whether they are able to act at night.""" if wrapper.source in OBSERVED: wrapper.pm(messages["werecrow_already_observing"].format( OBSERVED[wrapper.source])) return
import re import random from src.utilities import * from src import users, channels, status, debuglog, errlog, plog from src.functions import get_players, get_all_players, get_main_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 from src.cats import All from src.roles.helper.wolves import is_known_wolf_ally, register_killer register_killer("doomsayer") SEEN = UserSet() KILLS = UserDict() SICK = UserDict() LYCANS = UserDict() _mappings = ("death", KILLS), ("lycan", LYCANS), ("sick", SICK) @command("see", chan=False, pm=True, playing=True, silenced=True, phases=("night", ), roles=("doomsayer", ))
import re import random import itertools import math from collections import defaultdict 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.status import try_misdirection, try_exchange from src.roles.helper.wolves import register_killer register_killer("werekitten") @event_listener("gun_shoot") def on_gun_shoot(evt, var, user, target): if get_main_role(target) == "werekitten": evt.data["hit"] = False @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind): if kind == "role_categories": evt.data["werekitten"] = {"Wolf", "Wolfchat", "Wolfteam", "Innocent", "Killer", "Nocturnal"}
import re import random import itertools import math from collections import defaultdict 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.status import try_misdirection, try_exchange from src.roles.helper.wolves import register_killer register_killer("werekitten") @event_listener("gun_shoot") def on_gun_shoot(evt, var, user, target): if get_main_role(target) == "werekitten": evt.data["hit"] = False @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind): if kind == "role_categories": evt.data["werekitten"] = { "Wolf", "Wolfchat", "Wolfteam", "Innocent", "Killer", "Nocturnal" }
import re import random from src.utilities import * from src import users, channels, debuglog, errlog, plog from src.functions import get_players, get_all_players 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 from src.roles.helper.mystics import setup_variables from src.roles.helper.wolves import register_killer LAST_COUNT = setup_variables("wolf mystic", send_role=False, types=("Safe", "Win Stealer")) register_killer("wolf mystic") @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind): if kind == "role_categories": evt.data["wolf mystic"] = { "Wolf", "Wolfchat", "Wolfteam", "Killer", "Nocturnal", "Intuitive" } # vim: set sw=4 expandtab:
from src.utilities import * from src import debuglog, errlog, plog, users, channels 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.dispatcher import MessageDispatcher from src.messages import messages from src.status import try_misdirection, try_exchange, is_silent from src.roles.helper.shamans import get_totem_target, give_totem, setup_variables from src.roles.helper.wolves import register_killer TOTEMS, LASTGIVEN, SHAMANS = setup_variables("wolf shaman", knows_totem=True) register_killer("wolf shaman") @command("give", "totem", chan=False, pm=True, playing=True, silenced=True, phases=("night", ), roles=("wolf shaman", )) def wolf_shaman_totem(var, wrapper, message): """Give a totem to a player.""" target = get_totem_target(var, wrapper, message, LASTGIVEN) if not target:
from src.utilities import * from src import debuglog, errlog, plog, users, channels 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.dispatcher import MessageDispatcher from src.messages import messages from src.status import try_misdirection, try_exchange, is_silent from src.roles.helper.shamans import get_totem_target, give_totem, setup_variables from src.roles.helper.wolves import register_killer TOTEMS, LASTGIVEN, SHAMANS = setup_variables("wolf shaman", knows_totem=True) register_killer("wolf shaman") @command("give", "totem", chan=False, pm=True, playing=True, silenced=True, phases=("night",), roles=("wolf shaman",)) def wolf_shaman_totem(var, wrapper, message): """Give a totem to a player.""" target = get_totem_target(var, wrapper, message, LASTGIVEN) if not target: return SHAMANS[wrapper.source] = give_totem(var, wrapper, target, prefix="You", role="wolf shaman", msg=" of {0}".format(TOTEMS[wrapper.source])) relay_wolfchat_command(wrapper.client, wrapper.source.nick, messages["shaman_wolfchat"].format(wrapper.source, target), ("wolf shaman",), is_wolf_command=True) @event_listener("transition_day_begin", priority=4) def on_transition_day_begin(evt, var):
from src.decorators import event_listener from src.roles.helper.wolves import register_killer register_killer("wolf") @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind): if kind == "role_categories": evt.data["wolf"] = {"Wolf", "Wolfchat", "Wolfteam", "Killer", "Nocturnal"}
from src.decorators import event_listener from src.roles.helper.wolves import register_killer register_killer("wolf") @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind): if kind == "role_categories": evt.data["wolf"] = { "Wolf", "Wolfchat", "Wolfteam", "Killer", "Nocturnal" }
import itertools import math from collections import defaultdict from src.utilities import * from src import users, channels, status, debuglog, errlog, plog from src.decorators import command, event_listener from src.containers import UserList, UserSet, UserDict, DefaultUserDict from src.functions import get_players, get_all_players from src.messages import messages from src.status import try_misdirection, try_exchange from src.cats import Wolf from src.roles.helper.wolves import register_killer register_killer("fallen angel") @event_listener("try_protection") def on_try_protection(evt, var, target, attacker, attacker_role, reason): if attacker_role == "wolf" and get_all_players(("fallen angel", )): status.remove_all_protections(var, target, attacker=None, attacker_role="fallen angel", reason="fallen_angel") evt.prevent_default = True @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind):
import random import itertools import math from collections import defaultdict from src.utilities import * from src import users, channels, status, debuglog, errlog, plog from src.decorators import command, event_listener from src.containers import UserList, UserSet, UserDict, DefaultUserDict from src.functions import get_players, get_all_players from src.messages import messages from src.status import try_misdirection, try_exchange from src.cats import Wolf from src.roles.helper.wolves import register_killer register_killer("fallen angel") @event_listener("try_protection") def on_try_protection(evt, var, target, attacker, attacker_role, reason): if attacker_role == "wolf" and get_all_players(("fallen angel",)): status.remove_all_protections(var, target, attacker=None, attacker_role="fallen angel", reason="fallen_angel") evt.prevent_default = True @event_listener("get_role_metadata") def on_get_role_metadata(evt, var, kind): if kind == "role_categories": evt.data["fallen angel"] = {"Wolf", "Wolfchat", "Wolfteam", "Killer", "Nocturnal"} # vim: set sw=4 expandtab:
import re import random from src.utilities import * from src import users, channels, status, debuglog, errlog, plog from src.functions import get_players, get_all_players, get_main_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.status import try_misdirection, try_exchange from src.cats import All from src.roles.helper.wolves import is_known_wolf_ally, register_killer register_killer("doomsayer") SEEN = UserSet() KILLS = UserDict() SICK = UserDict() LYCANS = UserDict() _mappings = ("death", KILLS), ("lycan", LYCANS), ("sick", SICK) @command("see", chan=False, pm=True, playing=True, silenced=True, phases=("night",), roles=("doomsayer",)) def see(var, wrapper, message): """Use your paranormal senses to determine a player's doom.""" if wrapper.source in SEEN: wrapper.send(messages["seer_fail"]) return target = get_target(var, wrapper, re.split(" +", message)[0], not_self_message="no_see_self") if not target: