Browse Source

Merge e232b93761 into d8c20eafa6

pull/1/merge
Jeebeevee 11 years ago
parent
commit
665916e0b0
  1. 18
      modules/sabotage.py
  2. 1127
      modules/wolfgame.py
  3. 76
      settings/wolfgame.py
  4. 8
      tools/decorators.py

18
modules/sabotage.py

@ -23,7 +23,7 @@ pmcmd = decorators.generate(PM_COMMANDS)
hook = decorators.generate(HOOKS, raw_nick=True, permissions=False) hook = decorators.generate(HOOKS, raw_nick=True, permissions=False)
def connect_callback(cli): def connect_callback(cli):
var.PHASE = "none" var.PHASE = "geen"
var.PLAYERS = [] var.PLAYERS = []
var.LAST_STATS = None var.LAST_STATS = None
@ -33,7 +33,7 @@ def connect_callback(cli):
def join(cli, nick, chan, rest): def join(cli, nick, chan, rest):
"""Either starts a new game of Werewolf or joins an existing game that has not started yet.""" """Either starts a new game of Werewolf or joins an existing game that has not started yet."""
if var.PHASE == "none": if var.PHASE == "geen":
cli.mode(chan, "+v", nick, nick+"!*@*") cli.mode(chan, "+v", nick, nick+"!*@*")
var.PLAYERS.append(nick) var.PLAYERS.append(nick)
@ -41,19 +41,19 @@ def join(cli, nick, chan, rest):
var.WAITED = 0 var.WAITED = 0
var.GAME_ID = time.time() var.GAME_ID = time.time()
var.CAN_START_TIME = datetime.now() + timedelta(seconds=var.MINIMUM_WAIT) var.CAN_START_TIME = datetime.now() + timedelta(seconds=var.MINIMUM_WAIT)
cli.msg(chan, ('\u0002{0}\u0002 has started a game of Sabotage. '+ cli.msg(chan, ('\u0002{0}\u0002 Heeft een spel gestart. '+
'Type "{1}join" to join. Type "{1}start" to start the game. '+ 'Tik "{1}join" om mee te spelen. Tik "{1}start" om het spel te starten. '+
'Type "{1}wait" to increase join wait time.').format(nick, botconfig.CMD_CHAR)) 'Tik "{1}wait" om nog even te wachten met het staten van het spel.').format(nick, botconfig.CMD_CHAR))
elif nick in var.PLAYERS: elif nick in var.PLAYERS:
cli.notice(nick, "You're already playing!") cli.notice(nick, "Je speelt al mee!")
elif len(pl) >= var.MAX_PLAYERS: elif len(pl) >= var.MAX_PLAYERS:
cli.notice(nick, "Too many players! Try again next time.") cli.notice(nick, "Het spel zit al vol. Probeer het later nog eens.")
elif var.PHASE != "join": elif var.PHASE != "join":
cli.notice(nick, "Sorry but the game is already running. Try again next time.") cli.notice(nick, "Sorry het spel is al bezig. Probeer het later nog eens.")
else: else:
cli.mode(chan, "+v", nick, nick+"!*@*") cli.mode(chan, "+v", nick, nick+"!*@*")
var.PLAYERS.append(nick) var.PLAYERS.append(nick)
cli.msg(chan, '\u0002{0}\u0002 has joined the game.'.format(nick)) cli.msg(chan, '\u0002{0}\u0002 doet mee met het spel.'.format(nick))
var.LAST_STATS = None # reset var.LAST_STATS = None # reset

1127
modules/wolfgame.py

File diff suppressed because it is too large Load Diff

76
settings/wolfgame.py

@ -29,10 +29,10 @@ MANSLAUGHTER_CHANCE = 1/5 # ACCIDENTAL HEADSHOT (FATAL)
GUNNER_KILLS_WOLF_AT_NIGHT_CHANCE = 0 GUNNER_KILLS_WOLF_AT_NIGHT_CHANCE = 0
GUARDIAN_ANGEL_DIES_CHANCE = 1/2 GUARDIAN_ANGEL_DIES_CHANCE = 1/2
DETECTIVE_REVEALED_CHANCE = 2/5 rechercheur_REVEALED_CHANCE = 2/5
################################################################################################################# #################################################################################################################
# ROLE INDEX: PLAYERS SEER WOLF CURSED DRUNK HARLOT TRAITOR GUNNER CROW ANGEL DETECTIVE ## # ROLE INDEX: PLAYERS SEER WOLF CURSED DRUNK HARLOT TRAITOR GUNNER CROW ANGEL rechercheur ##
################################################################################################################# #################################################################################################################
ROLES_GUIDE = { 4 : ( 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ), ## ROLES_GUIDE = { 4 : ( 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ), ##
6 : ( 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ), ## 6 : ( 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ), ##
@ -51,35 +51,35 @@ GAME_MODES = {}
AWAY = [] # cloaks of people who are away. AWAY = [] # cloaks of people who are away.
SIMPLE_NOTIFY = [] # cloaks of people who !simple, who want everything /notice'd SIMPLE_NOTIFY = [] # cloaks of people who !simple, who want everything /notice'd
ROLE_INDICES = {0 : "seer", ROLE_INDICES = {0 : "ziener",
1 : "wolf", 1 : "wolf",
2 : "cursed villager", 2 : "vervloekte burger",
3 : "village drunk", 3 : "dronken burger",
4 : "harlot", 4 : "onschuldige meisje",
5 : "traitor", 5 : "verrader",
6 : "gunner", 6 : "kanonnier",
7 : "werecrow", 7 : "weerkraai",
8 : "guardian angel", 8 : "bescherm engel",
9 : "detective"} 9 : "rechercheur"}
INDEX_OF_ROLE = dict((v,k) for k,v in ROLE_INDICES.items()) INDEX_OF_ROLE = dict((v,k) for k,v in ROLE_INDICES.items())
NO_VICTIMS_MESSAGES = ("The body of a young penguin pet is found.", NO_VICTIMS_MESSAGES = ("Het lichaam van een jonge huisdier is gevonden.",
"A pool of blood and wolf paw prints are found.", "Een plas van bloed en wolfpoot afdrukken zijn gevonden.",
"Traces of wolf fur are found.") "Een pluk van wolvenhaar is gevonden.")
LYNCH_MESSAGES = ("The villagers, after much debate, finally decide on lynching \u0002{0}\u0002, who turned out to be... a \u0002{1}\u0002.", LYNCH_MESSAGES = ("De burgers hebben, na lang overleg, besloten te elmineren \u0002{0}\u0002, hij/zij was een... \u0002{1}\u0002.",
"Under a lot of noise, the pitchfork-bearing villagers lynch \u0002{0}\u0002, who turned out to be... a \u0002{1}\u0002.", "Onder veel lawaai, de woedende burgers elimineren \u0002{0}\u0002, hij/zij was een... \u0002{1}\u0002.",
"The mob drags a protesting \u0002{0}\u0002 to the hanging tree. S/He succumbs to the will of the horde, and is hanged. It is discovered (s)he was a \u0002{1}\u0002.", "De menigte sleept een protesterende \u0002{0}\u0002 naar de galg. Hij/zij bezwijkt aan de wil van de groep, en wordt opgehangen. Hij/zij was een \u0002{1}\u0002.",
"Resigned to his/her fate, \u0002{0}\u0002 is led to the gallows. After death, it is discovered (s)he was a \u0002{1}\u0002.") "Verslagen door zijn/haar lot, is \u0002{0}\u0002 naar de galg geleid. Na de dood bleek hij/zij een \u0002{1}\u0002 te zijn.")
import botconfig import botconfig
RULES = (botconfig.CHANNEL + " channel rules: 1) Be nice to others. 2) Do not share information "+ RULES = (botconfig.CHANNEL + " Kanaal regels: 1) Wees aardig voor elkaar. 2) Deel geen spel infomatie "+
"after death. 3) No bots allowed. 4) Do not play with clones.\n"+ "na je dood. 3) Bots zijn niet toegestaan. 4) Speel niet met clones van jezelf.\n"+
"5) Do not quit unless you need to leave. 6) No swearing and keep it "+ "5) Stop niet met spelen, tenzij het niet anders kan. 6) Niet vloeken en hou het leuk "+
"family-friendly. 7) Do not paste PM's from the bot during the game. "+ "voor iedereen. 7) Sla geen Prive berichten over van het spel tijdens het spel. "+
"8) Use common sense. 9) Waiting for timeouts is discouraged.") "8) Gebruik je gezonde verstand. 9) Wachten op timeouts is niet leuk.")
# Other settings: # Other settings:
START_WITH_DAY = False START_WITH_DAY = False
@ -91,8 +91,8 @@ PING_IN = [] # cloaks of users who have opted in for ping
is_role = lambda plyr, rol: rol in ROLES and plyr in ROLES[rol] is_role = lambda plyr, rol: rol in ROLES and plyr in ROLES[rol]
def plural(role): def plural(role):
if role == "wolf": return "wolves" if role == "wolf": return "wolven"
elif role == "person": return "people" elif role == "persoon": return "personen"
else: return role + "s" else: return role + "s"
def list_players(): def list_players():
@ -125,16 +125,16 @@ def game_mode(name):
return decor return decor
CHANGEABLE_ROLES = { "seers" : INDEX_OF_ROLE["seer"], CHANGEABLE_ROLES = { "zieners" : INDEX_OF_ROLE["ziener"],
"wolves" : INDEX_OF_ROLE["wolf"], "wolven" : INDEX_OF_ROLE["wolf"],
"cursed" : INDEX_OF_ROLE["cursed villager"], "vervloekten" : INDEX_OF_ROLE["vervloekte burger"],
"drunks" : INDEX_OF_ROLE["village drunk"], "dronkaarts" : INDEX_OF_ROLE["dronken burger"],
"harlots" : INDEX_OF_ROLE["harlot"], "onschuldige meisjes" : INDEX_OF_ROLE["onschuldige meisje"],
"traitors" : INDEX_OF_ROLE["traitor"], "verraders" : INDEX_OF_ROLE["verrader"],
"gunners" : INDEX_OF_ROLE["gunner"], "kanonniers" : INDEX_OF_ROLE["kanonnier"],
"werecrows" : INDEX_OF_ROLE["werecrow"], "weerkraaien" : INDEX_OF_ROLE["weerkraai"],
"angels" : INDEX_OF_ROLE["guardian angel"], "engelen" : INDEX_OF_ROLE["bescherm engel"],
"detectives" : INDEX_OF_ROLE["detective"]} "rechercheurs" : INDEX_OF_ROLE["rechercheur"]}
@ -161,8 +161,8 @@ class ChangedRolesMode(object):
try: try:
lx[CHANGEABLE_ROLES[role.lower()]] = num lx[CHANGEABLE_ROLES[role.lower()]] = num
except KeyError: except KeyError:
raise InvalidModeException(("The role \u0002{0}\u0002 "+ raise InvalidModeException(("De rol \u0002{0}\u0002 "+
"is not valid.").format(role)) "is niet geldig.").format(role))
except ValueError: except ValueError:
raise InvalidModeException("A bad value was used in mode roles.") raise InvalidModeException("A bad value was used in mode roles.")
for k in ROLES_GUIDE.keys(): for k in ROLES_GUIDE.keys():
@ -196,7 +196,7 @@ with conn:
c.execute('DROP TABLE IF EXISTS roles') c.execute('DROP TABLE IF EXISTS roles')
c.execute('CREATE TABLE roles (id INTEGER PRIMARY KEY AUTOINCREMENT, role TEXT)') c.execute('CREATE TABLE roles (id INTEGER PRIMARY KEY AUTOINCREMENT, role TEXT)')
for x in ["villager"]+list(ROLE_INDICES.values()): for x in ["burger"]+list(ROLE_INDICES.values()):
c.execute("INSERT OR REPLACE INTO roles (role) VALUES (?)", (x,)) c.execute("INSERT OR REPLACE INTO roles (role) VALUES (?)", (x,))

8
tools/decorators.py

@ -37,7 +37,7 @@ def generate(fdict, permissions=True, **kwargs):
if fnmatch.fnmatch(cloak.lower(), pattern.lower()): if fnmatch.fnmatch(cloak.lower(), pattern.lower()):
for cmdname in s: for cmdname in s:
if cmdname in botconfig.DENY[pattern]: if cmdname in botconfig.DENY[pattern]:
largs[0].notice(nick, "You do not have permission to use that command.") largs[0].notice(nick, "Je hebt geen rechten voor dat commando.")
return return
for pattern in botconfig.ALLOW.keys(): for pattern in botconfig.ALLOW.keys():
if fnmatch.fnmatch(cloak.lower(), pattern.lower()): if fnmatch.fnmatch(cloak.lower(), pattern.lower()):
@ -49,14 +49,14 @@ def generate(fdict, permissions=True, **kwargs):
if fnmatch.fnmatch(cloak.lower(), ptn.lower())]: if fnmatch.fnmatch(cloak.lower(), ptn.lower())]:
return f(*largs) return f(*largs)
elif cloak: elif cloak:
largs[0].notice(nick, "You are not the owner.") largs[0].notice(nick, "Je bent niet de eigenaar.")
return return
if admin_only: if admin_only:
if cloak and [ptn for ptn in botconfig.ADMINS+botconfig.OWNERS if cloak and [ptn for ptn in botconfig.ADMINS+botconfig.OWNERS
if fnmatch.fnmatch(cloak.lower(), ptn.lower())]: if fnmatch.fnmatch(cloak.lower(), ptn.lower())]:
return f(*largs) return f(*largs)
elif cloak: elif cloak:
largs[0].notice(nick, "You are not an admin.") largs[0].notice(nick, "Je bent geen administrator.")
return return
return f(*largs) return f(*largs)
alias = False alias = False
@ -68,7 +68,7 @@ def generate(fdict, permissions=True, **kwargs):
for fn in fdict[x]: for fn in fdict[x]:
if (fn.owner_only != owner_only or if (fn.owner_only != owner_only or
fn.admin_only != admin_only): fn.admin_only != admin_only):
raise Exception("Command: "+x+" has non-matching protection levels!") raise Exception("Commando: "+x+" heeft geen passende beschermingsniveau!")
fdict[x].append(innerf) fdict[x].append(innerf)
if alias: if alias:
innerf.aliases.append(x) innerf.aliases.append(x)

Loading…
Cancel
Save