Exemplo n.º 1
0
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"])
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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:
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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", ))
Exemplo n.º 6
0
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"}
Exemplo n.º 7
0
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"
        }
Exemplo n.º 8
0
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:
Exemplo n.º 9
0
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:
Exemplo n.º 10
0
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):
Exemplo n.º 11
0
Arquivo: wolf.py Projeto: lykoss/lykos
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"}
Exemplo n.º 12
0
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"
        }
Exemplo n.º 13
0
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):
Exemplo n.º 14
0
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:
Exemplo n.º 15
0
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: