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 marshmallow import Schema, fields, validate
|
||||
from models import dice_model, ability_model, hp_model, character_model
|
||||
from mutations import Mutations
|
||||
import random
|
||||
|
||||
app = Flask(__name__)
|
||||
@ -131,6 +132,12 @@ class GenerateCharacter(Resource):
|
||||
character_sheet['hp'] = roll_hp(chartype, assigned_abilities['constitution'])
|
||||
character_sheet['gold'] = roll_dices(4, 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
|
||||
|
||||
|
||||
@ -205,6 +212,7 @@ def assign_ability_scores(scores, char_emphasis):
|
||||
|
||||
return ability_scores
|
||||
|
||||
|
||||
def roll_hp(chartype, conscore):
|
||||
if chartype == 'human':
|
||||
geometry = 8
|
||||
@ -212,5 +220,60 @@ def roll_hp(chartype, conscore):
|
||||
geometry = 6
|
||||
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__':
|
||||
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-restx~=1.3.0
|
||||
marshmallow~=3.21.3
|
||||
marshmallow~=3.21.3
|
||||
pandas~=2.2.2
|
Loading…
Reference in New Issue
Block a user