add mutations rolls to character generator
This commit is contained in:
parent
796aac4d80
commit
4dc0bb94b4
63
app.py
63
app.py
@ -2,6 +2,7 @@ from flask import Flask
|
|||||||
from flask_restx import Api, Resource
|
from flask_restx import Api, Resource
|
||||||
from marshmallow import Schema, fields, validate
|
from marshmallow import Schema, fields, validate
|
||||||
from models import dice_model, ability_model, hp_model, character_model
|
from models import dice_model, ability_model, hp_model, character_model
|
||||||
|
from mutations import Mutations
|
||||||
import random
|
import random
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@ -131,6 +132,12 @@ class GenerateCharacter(Resource):
|
|||||||
character_sheet['hp'] = roll_hp(chartype, assigned_abilities['constitution'])
|
character_sheet['hp'] = roll_hp(chartype, assigned_abilities['constitution'])
|
||||||
character_sheet['gold'] = roll_dices(4, 4, False).get('result')
|
character_sheet['gold'] = roll_dices(4, 4, False).get('result')
|
||||||
character_sheet['domar'] = roll_dices(2, 4, False).get('result')
|
character_sheet['domar'] = roll_dices(2, 4, False).get('result')
|
||||||
|
|
||||||
|
if chartype == 'mutant':
|
||||||
|
character_sheet['mutations'] = (
|
||||||
|
roll_mutations(assigned_abilities['constitution'], assigned_abilities['intelligence'])
|
||||||
|
)
|
||||||
|
|
||||||
return character_sheet, 200
|
return character_sheet, 200
|
||||||
|
|
||||||
|
|
||||||
@ -205,6 +212,7 @@ def assign_ability_scores(scores, char_emphasis):
|
|||||||
|
|
||||||
return ability_scores
|
return ability_scores
|
||||||
|
|
||||||
|
|
||||||
def roll_hp(chartype, conscore):
|
def roll_hp(chartype, conscore):
|
||||||
if chartype == 'human':
|
if chartype == 'human':
|
||||||
geometry = 8
|
geometry = 8
|
||||||
@ -212,5 +220,60 @@ def roll_hp(chartype, conscore):
|
|||||||
geometry = 6
|
geometry = 6
|
||||||
return roll_dices(conscore, geometry, False).get('result')
|
return roll_dices(conscore, geometry, False).get('result')
|
||||||
|
|
||||||
|
|
||||||
|
def roll_mutations(conscore, intscore):
|
||||||
|
"""
|
||||||
|
:param conscore: modifier for physical mutation determination
|
||||||
|
:param intscore: modifier for mental mutation determination
|
||||||
|
:return: table of mutations (in json form)
|
||||||
|
"""
|
||||||
|
mutations_table = {}
|
||||||
|
|
||||||
|
mental_mutations_cnt = roll_dices(1,4, False).get('result')
|
||||||
|
physical_mutations_cnt = roll_dices(1, 4, False).get('result')
|
||||||
|
mutations_table['count'] = {'mental': mental_mutations_cnt, 'physical': physical_mutations_cnt}
|
||||||
|
|
||||||
|
mental_mutations_scores = []
|
||||||
|
physical_mutations_scores = []
|
||||||
|
|
||||||
|
for _ in range(mental_mutations_cnt):
|
||||||
|
mscore = roll_dices(1, 100, False).get('result') + intscore
|
||||||
|
if mscore in mental_mutations_scores:
|
||||||
|
mscore = mscore-3
|
||||||
|
|
||||||
|
if mscore > 100:
|
||||||
|
mscore = 100
|
||||||
|
mental_mutations_scores.append(mscore)
|
||||||
|
|
||||||
|
for _ in range(physical_mutations_cnt):
|
||||||
|
pscore = roll_dices(1, 100, False).get('result') + conscore
|
||||||
|
if pscore in physical_mutations_scores:
|
||||||
|
pscore = pscore-3
|
||||||
|
|
||||||
|
if pscore > 100:
|
||||||
|
pscore = 100
|
||||||
|
physical_mutations_scores.append(pscore)
|
||||||
|
|
||||||
|
mut = Mutations()
|
||||||
|
mmut = []
|
||||||
|
pmut = []
|
||||||
|
|
||||||
|
for score in mental_mutations_scores:
|
||||||
|
mutation = mut.get_mental_mutation(score)
|
||||||
|
mmut.append(mutation)
|
||||||
|
|
||||||
|
mutations_table['mental'] = mmut
|
||||||
|
|
||||||
|
for score in physical_mutations_scores:
|
||||||
|
mutation = mut.get_physical_mutation(score)
|
||||||
|
pmut.append(mutation)
|
||||||
|
|
||||||
|
mutations_table['physical'] = pmut
|
||||||
|
|
||||||
|
return mutations_table
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run()
|
app.run()
|
||||||
|
231
mutations.py
Normal file
231
mutations.py
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
|
||||||
|
class Mutations(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.raw_mutations_table = {
|
||||||
|
'Score': list(range(1, 101)),
|
||||||
|
'Physical': [
|
||||||
|
'No Nerve Endings',
|
||||||
|
'Poison Susceptibility',
|
||||||
|
'Poison Susceptibility',
|
||||||
|
'Dark Dependency',
|
||||||
|
'Dark Dependency',
|
||||||
|
'Arterial Weakness',
|
||||||
|
'Arterial Weakness',
|
||||||
|
'Diminished Sense',
|
||||||
|
'Energy Sensitivity',
|
||||||
|
'Doubled Pain',
|
||||||
|
'Heat Reaction',
|
||||||
|
'Insanity',
|
||||||
|
'Insanity',
|
||||||
|
'Insanity',
|
||||||
|
'Attraction Odor',
|
||||||
|
'Anti-Charisma',
|
||||||
|
'Anti-Charisma',
|
||||||
|
'Body Structure Change',
|
||||||
|
'Body Structure Change',
|
||||||
|
'Fat Cell Accumulation',
|
||||||
|
'Increased Metabolism',
|
||||||
|
'Inhibiting Field',
|
||||||
|
'Water Dependency',
|
||||||
|
'Weight Decrease',
|
||||||
|
'Vision Defect',
|
||||||
|
'Vision Defect',
|
||||||
|
'Light Dependency',
|
||||||
|
'Skin Structure Change',
|
||||||
|
'Narcolepsy',
|
||||||
|
'Bacterial Susceptibility',
|
||||||
|
'Phobia',
|
||||||
|
'Phobia',
|
||||||
|
'Phobia',
|
||||||
|
'Poor Duel Brain',
|
||||||
|
'Poor Respiration',
|
||||||
|
'Actual Metamorphosis',
|
||||||
|
'Kinetic Absorption',
|
||||||
|
'Kinetic Absorption',
|
||||||
|
'Sound Imitation',
|
||||||
|
'Bodily Control',
|
||||||
|
'Horns or Antlers',
|
||||||
|
'Heightened Physical Attribute',
|
||||||
|
'Heightened Physical Attribute',
|
||||||
|
'Heightened Physical Attribute',
|
||||||
|
'Heightened Physical Attribute',
|
||||||
|
'Heightened Sense',
|
||||||
|
'Heightened Sense',
|
||||||
|
'Heightened Precision',
|
||||||
|
'Heightened Precision',
|
||||||
|
'Heightened Precision',
|
||||||
|
'Heightened Precision',
|
||||||
|
'Heightened Precision',
|
||||||
|
'Modified Body Parts',
|
||||||
|
'Modified Body Parts',
|
||||||
|
'Multiplied Body Parts',
|
||||||
|
'Multiplied Body Parts',
|
||||||
|
'Multiplied Body Parts',
|
||||||
|
'Oversize Body Parts',
|
||||||
|
'New Body Parts',
|
||||||
|
'New Body Parts',
|
||||||
|
'Regeneration',
|
||||||
|
'Quills / Spines',
|
||||||
|
'Radar / Sonar',
|
||||||
|
'Ultra vision',
|
||||||
|
'Shorter',
|
||||||
|
'Electrical Generation',
|
||||||
|
'Gills',
|
||||||
|
'Taller',
|
||||||
|
'Photosynthetic Skin',
|
||||||
|
'Physical Reflection',
|
||||||
|
'Mane & Bristles',
|
||||||
|
'Skeletal Enhancement',
|
||||||
|
'Density Control (self)',
|
||||||
|
'Displacement',
|
||||||
|
'Wings',
|
||||||
|
'Gas Bags',
|
||||||
|
'Speed Increase',
|
||||||
|
'Carapace',
|
||||||
|
'Radiation Eyes',
|
||||||
|
'Chameleon Powers',
|
||||||
|
'Chameleon Powers',
|
||||||
|
'Light Generation',
|
||||||
|
'Shape change',
|
||||||
|
'Anti-Life Leach',
|
||||||
|
'Infra vision',
|
||||||
|
'Heightened Balance',
|
||||||
|
'Energy Absorption',
|
||||||
|
'Energy Metamorphosis',
|
||||||
|
'Gas Generation',
|
||||||
|
'Heat Generation',
|
||||||
|
'Hands of Power',
|
||||||
|
'Hands of Power',
|
||||||
|
'Dual Brain',
|
||||||
|
'Duality',
|
||||||
|
'Sonic Blast',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU INVENT ONE',
|
||||||
|
'YOU INVENT ONE'
|
||||||
|
],
|
||||||
|
'Mental': [
|
||||||
|
'Attack Reversal',
|
||||||
|
'Mental Block',
|
||||||
|
'Mental Block',
|
||||||
|
'Seizures',
|
||||||
|
'Seizures',
|
||||||
|
'Fear Impulse',
|
||||||
|
'Fear Impulse',
|
||||||
|
'Hostility Field',
|
||||||
|
'Mental Defenselessness',
|
||||||
|
'Multiple Damage',
|
||||||
|
'Energy Sensitivity',
|
||||||
|
'Periodic Amnesia',
|
||||||
|
'Periodic Amnesia',
|
||||||
|
'Periodic Amnesia',
|
||||||
|
'Unconscious Summoning',
|
||||||
|
'Empathy',
|
||||||
|
'Empathy',
|
||||||
|
'Beguiling',
|
||||||
|
'Beguiling',
|
||||||
|
'Confusion',
|
||||||
|
'Psychometry',
|
||||||
|
'Directional Sense',
|
||||||
|
'Intuition',
|
||||||
|
'Precognition',
|
||||||
|
'Summoning',
|
||||||
|
'Summoning',
|
||||||
|
'Absorption',
|
||||||
|
'Time Suspension',
|
||||||
|
'Reflection',
|
||||||
|
'Devolution',
|
||||||
|
'Genius Capability',
|
||||||
|
'Genius Capability',
|
||||||
|
'Genius Capability',
|
||||||
|
'Repelling Force',
|
||||||
|
'Mass Mind',
|
||||||
|
'Magnetic Control',
|
||||||
|
'Heightened Brain Talent',
|
||||||
|
'Heightened Brain Talent',
|
||||||
|
'Heightened Intelligence',
|
||||||
|
'Density Control (Others)',
|
||||||
|
'Light Manipulation',
|
||||||
|
'Mental Blast',
|
||||||
|
'Mental Blast',
|
||||||
|
'Mental Blast',
|
||||||
|
'Mental Blast',
|
||||||
|
'Mental Shield',
|
||||||
|
'Mental Shield',
|
||||||
|
'Mental Control Of Body',
|
||||||
|
'Mental Control Of Body',
|
||||||
|
'Mental Control Of Body',
|
||||||
|
'Mental Control Of Body',
|
||||||
|
'Mental Control Of Body',
|
||||||
|
'Mental Multiplier',
|
||||||
|
'Mental Multiplier',
|
||||||
|
'Mental Control',
|
||||||
|
'Mental Control',
|
||||||
|
'Mental Control',
|
||||||
|
'Mental Paralysis',
|
||||||
|
'Fear Generation',
|
||||||
|
'Fear Generation',
|
||||||
|
'Force Field Generation',
|
||||||
|
'Illusion Generation',
|
||||||
|
'Molecular Sense',
|
||||||
|
'Molecular Disruption',
|
||||||
|
'Repulsion Field',
|
||||||
|
'Plant Control',
|
||||||
|
'Stunning Force',
|
||||||
|
'Telepathy',
|
||||||
|
'Pyro/Cryokinesis',
|
||||||
|
'Telekinesis',
|
||||||
|
'Telekinetic Arm',
|
||||||
|
'Telekinetic Flight',
|
||||||
|
'Symbiotic Attachment',
|
||||||
|
'Levitation',
|
||||||
|
'Temporal Fugue',
|
||||||
|
'Temporal Fugue',
|
||||||
|
'Teleport Object',
|
||||||
|
'Teleportation',
|
||||||
|
'Thought Imitation',
|
||||||
|
'The Gamma Eye',
|
||||||
|
'The Gamma Eye',
|
||||||
|
'Will Force',
|
||||||
|
'Total Healing',
|
||||||
|
'Time Manipulation',
|
||||||
|
'Time Manipulation',
|
||||||
|
'Weather Manipulation',
|
||||||
|
'Weather Manipulation',
|
||||||
|
'Time Distortion',
|
||||||
|
'Death Field Generation',
|
||||||
|
'Life Leach',
|
||||||
|
'Planar Travel',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU PICK ONE',
|
||||||
|
'YOU INVENT ONE',
|
||||||
|
'YOU INVENT ONE'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
self.mutations_table = pd.DataFrame(self.raw_mutations_table)
|
||||||
|
|
||||||
|
def get_physical_mutation(self, score):
|
||||||
|
mutation = self.mutations_table.loc[self.mutations_table['Score'] == score, 'Physical']
|
||||||
|
return mutation.iloc[0] if not mutation.empty else None
|
||||||
|
|
||||||
|
def get_mental_mutation(self, score):
|
||||||
|
mutation = self.mutations_table.loc[self.mutations_table['Score'] == score, 'Mental']
|
||||||
|
return mutation.iloc[0] if not mutation.empty else None
|
||||||
|
|
||||||
|
def get_table_shape(self):
|
||||||
|
return self.mutations_table.shape
|
||||||
|
|
||||||
|
def get_table_row_count(self):
|
||||||
|
return self.mutations_table.shape[0]
|
||||||
|
|
||||||
|
def get_table_column_count(self):
|
||||||
|
return self.mutations_table.shape[1]
|
@ -1,3 +1,4 @@
|
|||||||
Flask~=3.0.3
|
Flask~=3.0.3
|
||||||
flask-restx~=1.3.0
|
flask-restx~=1.3.0
|
||||||
marshmallow~=3.21.3
|
marshmallow~=3.21.3
|
||||||
|
pandas~=2.2.2
|
Loading…
Reference in New Issue
Block a user