Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async def _roll_many(self, ctx, iterations, roll_str, dc=None, adv=None):
if iterations < 1 or iterations > 100:
return await ctx.send("Too many or too few iterations.")
if adv is None:
adv = d20.AdvType.NONE
results = []
successes = 0
ast = d20.parse(roll_str, allow_comments=True)
roller = d20.Roller(context=PersistentRollContext())
for _ in range(iterations):
res = roller.roll(ast, advantage=adv)
if dc is not None and res.total >= dc:
successes += 1
results.append(res)
if dc is None:
header = f"Rolling {iterations} iterations..."
footer = f"{sum(o.total for o in results)} total."
else:
header = f"Rolling {iterations} iterations, DC {dc}..."