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' )