!roles properly displays roles that drop out, and can show roles for a specific player count

This commit is contained in:
jacob1 2014-08-19 21:26:04 -04:00
parent 6e2cae8e6b
commit e0d3476a2c

View File

@ -5265,28 +5265,46 @@ def listroles(cli, nick, chan, rest):
old = {} old = {}
txt = "" txt = ""
index = 0
for r in var.ROLE_GUIDE.keys(): for r in var.ROLE_GUIDE.keys():
old[r] = 0 old[r] = 0
rest = re.split(" +", rest.strip(), 1)[0]
pl = len(var.list_players()) + len(var.DEAD) if rest.isdigit():
if pl > 0: index = int(rest)
txt += '{0}: There are \u0002{1}\u0002 playing. '.format(nick, pl) for i in range(len(var.ROLE_INDEX)-1, -1, -1):
if var.ROLE_INDEX[i] <= index:
index = var.ROLE_INDEX[i]
break
else:
pl = len(var.list_players()) + len(var.DEAD)
if pl > 0:
txt += ' {0}: There are \u0002{1}\u0002 playing.'.format(nick, pl)
for i in range(0, len(var.ROLE_INDEX)): for i in range(0, len(var.ROLE_INDEX)):
if index:
if var.ROLE_INDEX[i] < index:
continue
elif var.ROLE_INDEX[i] > index:
break
if (var.ROLE_INDEX[i] <= pl): if (var.ROLE_INDEX[i] <= pl):
txt += BOLD txt += BOLD
txt += "[" + str(var.ROLE_INDEX[i]) + "] " txt += " [" + str(var.ROLE_INDEX[i]) + "] "
if (var.ROLE_INDEX[i] <= pl): if (var.ROLE_INDEX[i] <= pl):
txt += BOLD txt += BOLD
for r, l in var.ROLE_GUIDE.items(): roles = []
if l[i] - old[r] != 0: for role, amount in var.ROLE_GUIDE.items():
if l[i] > 1: direction = 1 if amount[i] > old[role] else -1
txt += "{0}({1}), ".format(r, l[i]) for j in range(old[role], amount[i], direction):
else: temp = "{0}{1}".format("-" if direction == -1 else "", role)
txt += "{0}, ".format(r) if direction == 1 and j+1 > 1:
old[r] = l[i] temp += "({0})".format(j+1)
txt = txt[:-2] + " " elif j > 1:
temp += "({0})".format(j)
roles.append(temp)
old[role] = amount[i]
txt += ", ".join(roles)
txt = txt[1:]
if chan == nick: if chan == nick:
pm(cli, nick, txt) pm(cli, nick, txt)