from enum import auto, Enum import random class RollTypes(Enum): NORMAL = auto() RISKY = auto() SAFE = auto() def skill_roll(skill, modifiers, type_=RollTypes.NORMAL): eyes, result = roll_dice(type_) result += skill if len(modifiers) > 0: result += eval(modifiers) return eyes, result def custom_roll(n, eyes, modifiers=None): eyes = n_random_eyes(n, eyes) result = sum(eyes) if len(modifiers) > 0: result += eval(modifiers) return eyes, result def roll_dice(type_): if type_ is RollTypes.NORMAL: eyes = n_random_eyes(2) result = sum(eyes) elif type_ is RollTypes.RISKY: eyes = n_random_eyes(4) eyes.sort(reverse=True) result = sum(eyes[:2]) else: eyes = n_random_eyes(2) result = max(eyes) return eyes, result def n_random_eyes(n, eyes=10): return [random.randint(1, eyes) for _ in range(n)]