From c35f15b9810e27e638928461060fe689515eb607 Mon Sep 17 00:00:00 2001 From: Patrick Hurst Date: Tue, 17 Aug 2010 13:54:47 -0400 Subject: [PATCH] color fudge dice rolls when rolling fudge dice, use + and - instead. + is green, - is red. --- plugins/dice.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/plugins/dice.py b/plugins/dice.py index 70c4ef6..21cde86 100644 --- a/plugins/dice.py +++ b/plugins/dice.py @@ -50,26 +50,38 @@ def dice(inp): return "Invalid diceroll" groups = sign_re.findall(spec) + total = 0 rolls = [] - bias = 0 + for roll in groups: count, side = split_re.match(roll).groups() count = int(count) if count not in " +-" else 1 - if side.lower() == "f": # fudge dice are basically 1d3-2 - rolls += nrolls(count, "F") + if side.upper() == "F": # fudge dice are basically 1d3-2 + for fudge in nrolls(count, "F"): + if fudge == 1: + rolls.append("\x033+\x0F") + elif fudge == -1: + rolls.append("\x034-\x0F") + else: + rolls.append("0") + total += fudge elif side == "": - bias += count + total += count else: side = int(side) try: if count > 0: - rolls += nrolls(count, side) + dice = nrolls(count, side) + rolls += map(str, dice) + total += sum(dice) else: - rolls += [-x for x in nrolls(abs(count), side)] + dice = nrolls(-count, side) + rolls += [str(-x) for x in dice] + total -= sum(dice) except OverflowError: return "Thanks for overflowing a float, jerk >:[" if desc: - return "%s: %d (%s=%s)" % (desc.strip(), sum(rolls)+bias, inp, str(rolls).strip("[]")) + return "%s: %d (%s=%s)" % (desc.strip(), total, inp, ", ".join(rolls)) else: - return "%d (%s=%s)" % (sum(rolls)+bias, inp, str(rolls).strip("[]")) + return "%d (%s=%s)" % (total, inp, ", ".join(rolls))