add check roll
This commit is contained in:
parent
5dc73d949c
commit
e765b4723c
29
app.py
29
app.py
@ -2,9 +2,10 @@ from flask import Flask
|
|||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
from flask_restx import Api, Resource
|
from flask_restx import Api, Resource
|
||||||
|
|
||||||
from models import dice_model, ability_model, hp_model, character_model, encounter_model, ma_model, mutation_model
|
from models import dice_model, ability_model, hp_model, character_model, encounter_model, ma_model, mutation_model, \
|
||||||
|
check_model
|
||||||
from schemas import DiceSchema, CharacterSchema, EncounterSchema, MentalAttackSchema, AbilitySchema, HPSchema, \
|
from schemas import DiceSchema, CharacterSchema, EncounterSchema, MentalAttackSchema, AbilitySchema, HPSchema, \
|
||||||
MutationSchema
|
MutationSchema, CheckSchema
|
||||||
|
|
||||||
from encounters import EncounterTable
|
from encounters import EncounterTable
|
||||||
from mentattack import MentalAttackMatrix
|
from mentattack import MentalAttackMatrix
|
||||||
@ -27,6 +28,10 @@ ma = api.namespace('ma', description='Mental Attack operations')
|
|||||||
mut = api.namespace('mut', description='Mutation operations')
|
mut = api.namespace('mut', description='Mutation operations')
|
||||||
character = api.namespace('character', description='Character operations')
|
character = api.namespace('character', description='Character operations')
|
||||||
encounter = api.namespace('encounter', description='Encounter operations')
|
encounter = api.namespace('encounter', description='Encounter operations')
|
||||||
|
check = api.namespace('check', description='Check operations')
|
||||||
|
|
||||||
|
check_model = check.model('Check', check_model )
|
||||||
|
check_schema = CheckSchema()
|
||||||
|
|
||||||
ability_model = ability.model('Ability', ability_model)
|
ability_model = ability.model('Ability', ability_model)
|
||||||
ability_schema = AbilitySchema()
|
ability_schema = AbilitySchema()
|
||||||
@ -164,6 +169,26 @@ class RollMentalAttack(Resource):
|
|||||||
return result, 200
|
return result, 200
|
||||||
|
|
||||||
|
|
||||||
|
@api.route('/roll/check', methods=['POST'])
|
||||||
|
class RollCheck(Resource):
|
||||||
|
@check.expect(check_model)
|
||||||
|
def post(self):
|
||||||
|
data = api.payload
|
||||||
|
errors = check_schema.validate(data)
|
||||||
|
if errors:
|
||||||
|
return errors, 400
|
||||||
|
|
||||||
|
ability_score = data.get('ability_score')
|
||||||
|
multiplier = data.get('multiplier')
|
||||||
|
|
||||||
|
threshold = ability_score * multiplier
|
||||||
|
rolled = roll_dices(1, 100, False).get('result')
|
||||||
|
if rolled < threshold:
|
||||||
|
return {'threshold': threshold, 'rolled': rolled, 'success': True}, 200
|
||||||
|
else:
|
||||||
|
return {'threshold': threshold, 'rolled': rolled, 'success': False}, 200
|
||||||
|
|
||||||
|
|
||||||
@api.route('/roll/tohit', methods=['GET'])
|
@api.route('/roll/tohit', methods=['GET'])
|
||||||
class RollToHit(Resource):
|
class RollToHit(Resource):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
17
models.py
17
models.py
@ -15,6 +15,23 @@ conscore_field = fields.Integer(
|
|||||||
description='The characters constitution score'
|
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
|
# Mutations Model
|
||||||
mutation_model = {
|
mutation_model = {
|
||||||
'conscore': conscore_field,
|
'conscore': conscore_field,
|
||||||
|
16
schemas.py
16
schemas.py
@ -59,6 +59,22 @@ class AbilitySchema(Schema):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class CheckSchema(Schema):
|
||||||
|
ability_score = fields.Integer(
|
||||||
|
required=True,
|
||||||
|
default=10,
|
||||||
|
validate=validate.Range(min=3, max=21),
|
||||||
|
description='The score of the ability to be checked against'
|
||||||
|
)
|
||||||
|
multiplier = fields.Integer(
|
||||||
|
required=True,
|
||||||
|
default=4,
|
||||||
|
validate=validate.Range(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'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class EncounterSchema(Schema):
|
class EncounterSchema(Schema):
|
||||||
terrain = fields.String(
|
terrain = fields.String(
|
||||||
required=True,
|
required=True,
|
||||||
|
Loading…
Reference in New Issue
Block a user