add fudge dice
fudge dice are dF's, and are either -1, 0, or +1
This commit is contained in:
parent
d34421bd23
commit
219fe44d61
|
@ -9,10 +9,10 @@ from util import hook
|
||||||
|
|
||||||
|
|
||||||
whitespace_re = re.compile(r'\s+')
|
whitespace_re = re.compile(r'\s+')
|
||||||
valid_diceroll_re = re.compile(r'^[+-]?(\d+|\d*d\d+)([+-](\d+|\d*d\d+))*$',
|
valid_diceroll_re = re.compile(r'^[+-]?(\d+|\d*d(\d+|F))([+-](\d+|\d*d(\d+|F)))*$',
|
||||||
re.I)
|
re.I)
|
||||||
sign_re = re.compile(r'[+-]?(?:\d*d)?\d+', re.I)
|
sign_re = re.compile(r'[+-]?(?:\d*d)?(?:\d+|F)', re.I)
|
||||||
split_re = re.compile(r'([\d+-]*)d?(\d*)', re.I)
|
split_re = re.compile(r'([\d+-]*)d?(F|\d*)', re.I)
|
||||||
|
|
||||||
|
|
||||||
def nrolls(count, n):
|
def nrolls(count, n):
|
||||||
|
@ -43,10 +43,15 @@ def dice(inp):
|
||||||
groups = sign_re.findall(spec)
|
groups = sign_re.findall(spec)
|
||||||
for roll in groups:
|
for roll in groups:
|
||||||
count, side = split_re.match(roll).groups()
|
count, side = split_re.match(roll).groups()
|
||||||
if side == "":
|
count = int(count) if count not in " +-" else 1
|
||||||
sum += int(count)
|
if side.lower() == "f":
|
||||||
|
if count > 0:
|
||||||
|
sum += nrolls(count, 3) - 2 * count
|
||||||
|
else:
|
||||||
|
sum -= nrolls(count, 3) + 2 * count
|
||||||
|
elif side == "":
|
||||||
|
sum += count
|
||||||
else:
|
else:
|
||||||
count = int(count) if count not in" +-" else 1
|
|
||||||
side = int(side)
|
side = int(side)
|
||||||
try:
|
try:
|
||||||
if count > 0:
|
if count > 0:
|
||||||
|
|
Loading…
Reference in New Issue