gammatools/app/models/models.py

142 lines
3.7 KiB
Python

from flask_restx import fields
# Common fields
chartype_field = fields.String(
required=True,
default="human",
description='Character type. Allowed values: "human", "humanoid", "mutant", "cyborg"'
)
conscore_field = fields.Integer(
required=True,
default=10,
min=3,
max=18,
description='The characters constitution score'
)
check_model = {
'ability_score': fields.Integer(
required=True,
default=10,
min=3,
max=21,
description='The score of the ability to check against'
),
'multiplier': fields.Integer(
required=True,
default=4,
min=2, max=8,
description='Sets the threshold for the check. In general, the higher the multiplier, the higher the '
'likelihood of success. Range: 2 - 7'
)
}
# Mutations Model
mutation_model = {
'conscore': conscore_field,
'intscore': fields.Integer(
required=True,
default=10,
min=3,
max=21,
description='The characters intelligence score'
)
}
# Dice model
dice_model = {
'quantity': fields.Integer(required=True, default=1, description='The number of dice to roll'),
'geometry': fields.Integer(required=True, default=2, description='The number of sides on each die'),
'discard_lowest': fields.Boolean(required=False, default=False, description='Drop the lowest score')
}
# Ability model
ability_model = {
'chartype': chartype_field,
'ability': fields.String(
required=False,
default="all",
description='The ability to roll. Not required. Valid options: "m-strength", "p-strength", '
'"intelligence", "charisma", "constitution", "dexterity", "all". Defaults to "all".'),
}
# Hp model
hp_model = {
'chartype': chartype_field,
'conscore': conscore_field
}
pa_model = {
'weapon_attack': fields.Boolean(
required=True,
default=True,
description='Is the attacker using a weapon? If so, To-Hit is based on weapon class.'
),
'dac': fields.Integer(
required=True,
min=1,
max=10,
default=1,
description='The defenders armour class. This is needed for both weapon attacks and non-weapon attacks'
),
'awc': fields.Integer(
required=False,
min=1,
max=16,
default=1,
description='The attackers weapon class. This is needed for weapon attacks only.'
),
'ahd': fields.Integer(
required=False,
min=1,
max=16,
default=1,
description='The attackers hit dice count. This is needed for non-weapon attacks only.'
),
'modifier': fields.Integer(
required=False,
min=-100,
max=100,
default=0,
description='The roll modifier to be applied to the hit roll.'
)
}
ma_model = {
'ams': fields.Integer(
required=True,
min=3,
max=18,
default=10,
description='Attacker Mental Strength'
),
'dms': fields.Integer(
required=True,
min=3,
max=18,
default=10,
description='Defender Mental Strength'
),
'modifier': fields.Integer(
required=False,
min=-100,
max=100,
default=0,
description='Modifier For Mental Attack Roll'),
}
character_model = {
'chartype': chartype_field,
}
encounter_model = {
'terrain': fields.String(
required=True,
default="clear",
description='The terrain being traversed by the party when the encounter roll is made. Valid values are: '
'"clear", "mountains", "forest", "desert", "watery", "ruins", "deathlands"'
)
}