49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
|
from marshmallow import Schema, fields, validate
|
||
|
|
||
|
|
||
|
class DiceSchema(Schema):
|
||
|
quantity = fields.Int(required=True, validate=validate.Range(min=1), description='The number of dice to roll')
|
||
|
geometry = fields.Int(required=True, validate=validate.Range(min=2), description='The number of sides on each die')
|
||
|
discard_lowest = fields.Bool(default=False, description='Drop the lowest score')
|
||
|
|
||
|
|
||
|
class CharacterSchema(Schema):
|
||
|
chartype = fields.String(
|
||
|
required=True,
|
||
|
validate=validate.OneOf(["human", "mutant", "android", "robot"]),
|
||
|
description='The characters type of being'
|
||
|
)
|
||
|
emphasis = fields.String(
|
||
|
required=True,
|
||
|
validate=validate.OneOf(["physical", "mental", "random"]),
|
||
|
description='Valid inputs: physical, mental, random'
|
||
|
)
|
||
|
|
||
|
|
||
|
class EncounterSchema(Schema):
|
||
|
terrain = fields.String(
|
||
|
required=True,
|
||
|
validate=validate.OneOf(["clear", "mountains", "forest", "desert", "watery", "ruins", "deathlands"]),
|
||
|
description='The terrain traversed at the time of the encounter roll'
|
||
|
)
|
||
|
|
||
|
|
||
|
class MentalAttackSchema(Schema):
|
||
|
ams = fields.Integer(
|
||
|
required=True,
|
||
|
validate=validate.Range(min=3, max=18),
|
||
|
description='The Attackers Mental Strength'
|
||
|
)
|
||
|
dms = fields.Integer(
|
||
|
required=True,
|
||
|
validate=validate.Range(min=3, max=18),
|
||
|
description='The Defenders Mental Strength'
|
||
|
)
|
||
|
modifier = fields.Integer(
|
||
|
required=False,
|
||
|
default=0,
|
||
|
validate=validate.Range(min=-100, max=100),
|
||
|
description='Roll modifier for mental attack'
|
||
|
)
|
||
|
|