Extend die expressions to #XdY[+-]Z
This commit is contained in:
parent
8672227e98
commit
cce2f836c7
26
botcmd.py
26
botcmd.py
|
@ -25,7 +25,7 @@ accountcheck = []
|
||||||
accountcheckid = 0
|
accountcheckid = 0
|
||||||
accountchecklock = threading.Lock()
|
accountchecklock = threading.Lock()
|
||||||
|
|
||||||
die_expr=re.compile("#[0-9]*d([0-9]+|%)")
|
die_expr=re.compile("#[0-9]*d([0-9]+|%)([+-][0-9]+)?")
|
||||||
|
|
||||||
class Cron(threading.Thread):
|
class Cron(threading.Thread):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -551,7 +551,19 @@ def parse((line, irc)):
|
||||||
elif die_expr.match(cmdline[0]):
|
elif die_expr.match(cmdline[0]):
|
||||||
die = cmdline[0][1:].split('d')
|
die = cmdline[0][1:].split('d')
|
||||||
times = int(die[0]) if die[0] else 1
|
times = int(die[0]) if die[0] else 1
|
||||||
|
|
||||||
|
if '+' in die[1]:
|
||||||
|
split = die[1].index('+')
|
||||||
|
plus = int(die[1][split + 1:])
|
||||||
|
die[1] = die[1][:split]
|
||||||
|
elif '-' in die[1]:
|
||||||
|
split = die[1].index('-')
|
||||||
|
plus = -int(die[1][split + 1:])
|
||||||
|
die[1] = die[1][:split]
|
||||||
|
else:
|
||||||
|
plus = 0
|
||||||
die = '%' if die[1] == '%' else int(die[1])
|
die = '%' if die[1] == '%' else int(die[1])
|
||||||
|
|
||||||
if die == '%':
|
if die == '%':
|
||||||
if times != 1:
|
if times != 1:
|
||||||
irc.msg(reply, 'Not supported')
|
irc.msg(reply, 'Not supported')
|
||||||
|
@ -566,10 +578,18 @@ def parse((line, irc)):
|
||||||
else:
|
else:
|
||||||
rolls = [random.randint(1, die) for i in xrange(times)]
|
rolls = [random.randint(1, die) for i in xrange(times)]
|
||||||
result = reduce((lambda x, y: x + y), rolls)
|
result = reduce((lambda x, y: x + y), rolls)
|
||||||
|
|
||||||
if times > 1:
|
if times > 1:
|
||||||
irc.msg(reply, '%s (%s)' % (str(result), ', '.join([str(i) for i in rolls])))
|
text = '%s (%s)' % (str(result), ', '.join([str(i) for i in rolls]))
|
||||||
else:
|
else:
|
||||||
irc.msg(reply, str(result))
|
text = str(result)
|
||||||
|
|
||||||
|
if plus > 0:
|
||||||
|
text = '%i (%s + %i)' % (result + plus, text, plus)
|
||||||
|
elif plus < 0:
|
||||||
|
text = '%i (%s - %i)' % (result + plus, text, -plus)
|
||||||
|
|
||||||
|
irc.msg(reply, text)
|
||||||
elif line[1] == '330': # WHOIS: is logged in as
|
elif line[1] == '330': # WHOIS: is logged in as
|
||||||
whoisnick = line[3]
|
whoisnick = line[3]
|
||||||
account = line[4]
|
account = line[4]
|
||||||
|
|
Loading…
Reference in New Issue