Browse Source

Changed behavior of stats command and added a players command.

The stats command's behavior has been to ping every person already
playing. The solution placed into practice here is to split the
more annoying (and frankly, mostly unnecessary) half of the command
into a different command for use when actually wanted/needed.
master
zamabe 13 years ago
parent
commit
6de1e1a2a4
  1. 35
      modules/wolfgame.py
  2. 1
      settings/wolfgame.py

35
modules/wolfgame.py

@ -77,6 +77,7 @@ def connect_callback(cli):
var.LAST_STATS = None var.LAST_STATS = None
var.LAST_VOTES = None var.LAST_VOTES = None
var.LAST_ADMINS = None var.LAST_ADMINS = None
var.LAST_PLAYERS = None
var.USERS = {} var.USERS = {}
@ -353,6 +354,7 @@ def join(cli, nick, chan, rest):
cli.msg(chan, '\u0002{0}\u0002 has joined the game.'.format(nick)) cli.msg(chan, '\u0002{0}\u0002 has joined the game.'.format(nick))
var.LAST_STATS = None # reset var.LAST_STATS = None # reset
var.LAST_PLAYERS = None # re/set
@cmd("fjoin", admin_only=True) @cmd("fjoin", admin_only=True)
@ -428,7 +430,7 @@ def on_account(cli, nick, acc):
@cmd("stats") @cmd("stats")
def stats(cli, nick, chan, rest): def stats(cli, nick, chan, rest):
"""Display the player statistics""" """Display the game statistics"""
if var.PHASE == "none": if var.PHASE == "none":
cli.notice(nick, "No game is currently running.") cli.notice(nick, "No game is currently running.")
return return
@ -446,10 +448,12 @@ def stats(cli, nick, chan, rest):
pl.sort(key=lambda x: x.lower()) pl.sort(key=lambda x: x.lower())
if len(pl) > 1: if len(pl) > 1:
msg = '{0}: \u0002{1}\u0002 players: {2}'.format(nick, msg = '{0}: \u0002{1}\u0002 players'.format(nick, len(pl))
len(pl), ", ".join(pl))
else: else:
msg = '{0}: \u00021\u0002 player: {1}'.format(nick, pl[0]) msg = '{0}: \u00021\u0002 player'.format(nick)
if var.PHASE == "join":
msg = msg + ". The game has not started yet."
if nick in pl or var.PHASE == "join": if nick in pl or var.PHASE == "join":
cli.msg(chan, msg) cli.msg(chan, msg)
@ -502,6 +506,29 @@ def stats(cli, nick, chan, rest):
cli.notice(nick, stats_mssg) cli.notice(nick, stats_mssg)
@cmd("players")
def players(cli, nick, chan, rest):
"""Display the player statistics"""
if var.PHASE == "none":
cli.notice(nick, "No players have joined.")
return
if (var.LAST_PLAYERS and
var.LAST_PLAYERS + timedelta(seconds=var.PLAYERS_RATE_LIMIT) > datetime.now()):
cli.msg(chan, nick+": This command is rate-limited.")
return
var.LAST_PLAYERS = datetime.now()
pl = var.list_players()
pl.sort(key=lambda x: x.lower())
if len(pl) > 1:
cli.msg(chan, '{0}: \u0002{1}\u0002 players: {2}'.format(nick,
len(pl), ", ".join(pl)))
else:
cli.msg(chan, '{0}: \u00021\u0002 player: {1}'.format(nick, pl[0]))
def hurry_up(cli, gameid, change): def hurry_up(cli, gameid, change):
if var.PHASE != "day": return if var.PHASE != "day": return

1
settings/wolfgame.py

@ -5,6 +5,7 @@ EXTRA_WAIT = 20
MAXIMUM_WAITED = 2 # limit for amount of !wait's MAXIMUM_WAITED = 2 # limit for amount of !wait's
STATS_RATE_LIMIT = 15 STATS_RATE_LIMIT = 15
VOTES_RATE_LIMIT = 15 VOTES_RATE_LIMIT = 15
PLAYERS_RATE_LIMIT = 45
ADMINS_RATE_LIMIT = 300 ADMINS_RATE_LIMIT = 300
SHOTS_MULTIPLIER = .12 # ceil(shots_multiplier * len_players) = bullets given SHOTS_MULTIPLIER = .12 # ceil(shots_multiplier * len_players) = bullets given
MAX_PLAYERS = 30 MAX_PLAYERS = 30

Loading…
Cancel
Save