adding defaults, modifiers, traits and attributes
This commit is contained in:
+39
-8
@@ -9,6 +9,7 @@ from sqlalchemy.exc import IntegrityError
|
||||
data = {
|
||||
'CharacterClass': [
|
||||
{
|
||||
'id': 1,
|
||||
'name': 'fighter',
|
||||
'hit_dice': '1d10',
|
||||
'hit_dice_stat': 'CON',
|
||||
@@ -17,6 +18,7 @@ data = {
|
||||
'skills': ['Acrobatics', 'Animal Handling', 'Athletics', 'History', 'Insight', 'Intimidation', 'Perception', 'Survival'],
|
||||
},
|
||||
{
|
||||
'id': 2,
|
||||
'name': 'rogue',
|
||||
'hit_dice': '1d8',
|
||||
'hit_dice_stat': 'DEX',
|
||||
@@ -25,6 +27,7 @@ data = {
|
||||
'skills': ['Acrobatics', 'Athletics', 'Deception', 'Insight', 'Intimidation', 'Investigation', 'Perception', 'Performance', 'Persuasion', 'Sleight of Hand', 'Stealth'],
|
||||
},
|
||||
],
|
||||
|
||||
'Skill': [
|
||||
{'name': 'Acrobatics'},
|
||||
{'name': 'Animal Handling'},
|
||||
@@ -41,25 +44,24 @@ data = {
|
||||
{'name': 'Stealth'},
|
||||
{'name': 'Survival'},
|
||||
],
|
||||
|
||||
'Ancestry': [
|
||||
{'name': 'human', 'creature_type': 'humanoid'},
|
||||
{'name': 'dragonborn', 'creature_type': 'humanoid'},
|
||||
{'name': 'tiefling', 'creature_type': 'humanoid'},
|
||||
{'id': 1, 'name': 'human', 'creature_type': 'humanoid'},
|
||||
{'id': 2, 'name': 'dragonborn', 'creature_type': 'humanoid'},
|
||||
{'id': 3, 'name': 'tiefling', 'creature_type': 'humanoid'},
|
||||
],
|
||||
|
||||
'Character': [
|
||||
{
|
||||
'id': 1,
|
||||
'name': 'Sabetha',
|
||||
'ancestry': 'tiefling',
|
||||
'ancestry': 'human',
|
||||
'character_class': ['fighter', 'rogue'],
|
||||
'level': 1,
|
||||
'armor_class': 10,
|
||||
'max_hit_points': 14,
|
||||
'hit_points': 14,
|
||||
'temp_hit_points': 0,
|
||||
'passive_perception': 10,
|
||||
'passive_insight': 10,
|
||||
'passive_investigation': 10,
|
||||
'speed': '30 ft.',
|
||||
'str': 16,
|
||||
'dex': 12,
|
||||
@@ -71,7 +73,36 @@ data = {
|
||||
'saving_throws': ['STR', 'CON'],
|
||||
'skills': ['Acrobatics', 'Animal Handling'],
|
||||
},
|
||||
]
|
||||
],
|
||||
|
||||
'ClassAttribute': [
|
||||
{
|
||||
'character_class_id': 1,
|
||||
'name': 'Fighting Style',
|
||||
'value': 'Archery',
|
||||
'level': 1,
|
||||
},
|
||||
],
|
||||
|
||||
'AncestryTrait': [
|
||||
{
|
||||
'id': 1,
|
||||
'ancestry_id': 1,
|
||||
'description': '+1 to All Ability Scores',
|
||||
'level': 1,
|
||||
},
|
||||
],
|
||||
|
||||
'Modifier': [
|
||||
{'source_table_name': 'ancestry_trait', 'source_table_id': 1, 'value': '+1', 'type': 'stat', 'target': 'str'},
|
||||
{'source_table_name': 'ancestry_trait', 'source_table_id': 1, 'value': '+1', 'type': 'stat', 'target': 'dex'},
|
||||
{'source_table_name': 'ancestry_trait', 'source_table_id': 1, 'value': '+1', 'type': 'stat', 'target': 'con'},
|
||||
{'source_table_name': 'ancestry_trait', 'source_table_id': 1, 'value': '+1', 'type': 'stat', 'target': 'int'},
|
||||
{'source_table_name': 'ancestry_trait', 'source_table_id': 1, 'value': '+1', 'type': 'stat', 'target': 'wis'},
|
||||
{'source_table_name': 'ancestry_trait', 'source_table_id': 1, 'value': '+1', 'type': 'stat', 'target': 'cha'},
|
||||
{'source_table_name': 'class_attribute', 'source_table_id': 1, 'value': '+2', 'type': 'weapon ', 'target': 'ranged'},
|
||||
],
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+51
-15
@@ -6,6 +6,7 @@ from sqlalchemy import String
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy import Enum
|
||||
from sqlalchemy import Text
|
||||
from sqlalchemy import UniqueConstraint
|
||||
|
||||
from ttfrog.db.base import Bases, BaseObject, IterableMixin
|
||||
from ttfrog.db.base import multivalue_string_factory
|
||||
@@ -54,6 +55,18 @@ class Ancestry(*Bases):
|
||||
return str(self.name)
|
||||
|
||||
|
||||
class AncestryTrait(BaseObject, IterableMixin):
|
||||
__tablename__ = "ancestry_trait"
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
ancestry_id = Column(Integer, ForeignKey("ancestry.id"), nullable=False)
|
||||
name = Column(String, nullable="False")
|
||||
description = Column(Text)
|
||||
level = Column(Integer, nullable=False, info={'min': 1, 'max': 20})
|
||||
|
||||
def __repr__(self):
|
||||
return str(self.name)
|
||||
|
||||
|
||||
class CharacterClass(*Bases, SavingThrowsMixin, SkillsMixin):
|
||||
__tablename__ = "character_class"
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
@@ -66,29 +79,52 @@ class CharacterClass(*Bases, SavingThrowsMixin, SkillsMixin):
|
||||
return str(self.name)
|
||||
|
||||
|
||||
class ClassAttribute(BaseObject, IterableMixin):
|
||||
__tablename__ = "class_attribute"
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
character_class_id = Column(Integer, ForeignKey("character_class.id"), nullable=False)
|
||||
name = Column(String, nullable="False")
|
||||
value = Column(String, nullable="False")
|
||||
description = Column(Text)
|
||||
level = Column(Integer, nullable=False, info={'min': 1, 'max': 20})
|
||||
|
||||
def __repr__(self):
|
||||
return str(self.name)
|
||||
|
||||
|
||||
class Character(*Bases, CharacterClassMixin, SavingThrowsMixin, SkillsMixin):
|
||||
__tablename__ = "character"
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
ancestry = Column(String, ForeignKey("ancestry.name"), nullable=False)
|
||||
name = Column(String(255), nullable=False)
|
||||
level = Column(Integer, nullable=False, info={'min': 1, 'max': 20})
|
||||
armor_class = Column(Integer, nullable=False, info={'min': 1, 'max': 99})
|
||||
hit_points = Column(Integer, nullable=False, info={'min': 0, 'max': 999})
|
||||
max_hit_points = Column(Integer, nullable=False, info={'min': 0, 'max': 999})
|
||||
temp_hit_points = Column(Integer, nullable=False, info={'min': 0})
|
||||
passive_perception = Column(Integer, nullable=False)
|
||||
passive_insight = Column(Integer, nullable=False)
|
||||
passive_investigation = Column(Integer, nullable=False)
|
||||
name = Column(String, default='New Character', nullable=False)
|
||||
level = Column(Integer, default=1, nullable=False, info={'min': 1, 'max': 20})
|
||||
armor_class = Column(Integer, default=10, nullable=False, info={'min': 1, 'max': 99})
|
||||
hit_points = Column(Integer, default=1, nullable=False, info={'min': 0, 'max': 999})
|
||||
max_hit_points = Column(Integer, default=1, nullable=False, info={'min': 0, 'max': 999})
|
||||
temp_hit_points = Column(Integer, default=0, nullable=False, info={'min': 0})
|
||||
speed = Column(String, nullable=False, default="30 ft.")
|
||||
str = Column(Integer, info={'min': 0, 'max': 30})
|
||||
dex = Column(Integer, info={'min': 0, 'max': 30})
|
||||
con = Column(Integer, info={'min': 0, 'max': 30})
|
||||
int = Column(Integer, info={'min': 0, 'max': 30})
|
||||
wis = Column(Integer, info={'min': 0, 'max': 30})
|
||||
cha = Column(Integer, info={'min': 0, 'max': 30})
|
||||
str = Column(Integer, nullable=False, default=10, info={'min': 0, 'max': 30})
|
||||
dex = Column(Integer, nullable=False, default=10, info={'min': 0, 'max': 30})
|
||||
con = Column(Integer, nullable=False, default=10, info={'min': 0, 'max': 30})
|
||||
int = Column(Integer, nullable=False, default=10, info={'min': 0, 'max': 30})
|
||||
wis = Column(Integer, nullable=False, default=10, info={'min': 0, 'max': 30})
|
||||
cha = Column(Integer, nullable=False, default=10, info={'min': 0, 'max': 30})
|
||||
proficiencies = Column(String)
|
||||
|
||||
|
||||
class Modifier(BaseObject, IterableMixin):
|
||||
__tablename__ = "modifier"
|
||||
__table_args__ = (
|
||||
UniqueConstraint('source_table_name', 'source_table_id', 'value', 'type', 'target'),
|
||||
)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
source_table_name = Column(String, index=True, nullable=False)
|
||||
source_table_id = Column(Integer, index=True, nullable=False)
|
||||
value = Column(String, nullable=False)
|
||||
type = Column(String, nullable=False)
|
||||
target = Column(String, nullable=False)
|
||||
|
||||
|
||||
class TransactionLog(BaseObject, IterableMixin):
|
||||
__tablename__ = "transaction_log"
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
|
||||
Reference in New Issue
Block a user