48 lines
944 B
Python
48 lines
944 B
Python
|
|
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)]
|
||
|
|
|
||
|
|
|