You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.7 KiB
78 lines
2.7 KiB
from flask_sqlalchemy import SQLAlchemy
|
|
from ..models import db, BaseModel
|
|
|
|
|
|
class CharacterClass(BaseModel):
|
|
__tablename__ = 'character_class'
|
|
|
|
name = db.Column(db.String(50), unique=True, nullable=False)
|
|
bucket = db.Column(db.String(50))
|
|
frequency_modifier = db.Column(db.Integer, default=1)
|
|
|
|
prime_requisite = db.Column(db.String(3))
|
|
hit_die_size = db.Column(db.Integer)
|
|
maximum_level = db.Column(db.Integer)
|
|
|
|
armour_modifier = db.Column(db.Integer)
|
|
melee_light = db.Column(db.Integer)
|
|
melee_medium = db.Column(db.Integer)
|
|
melee_heavy = db.Column(db.Integer)
|
|
ranged_light = db.Column(db.Integer)
|
|
ranged_heavy = db.Column(db.Integer)
|
|
|
|
def __repr__(self):
|
|
return '<CharacterClass {0}>'.format(self.name)
|
|
|
|
class EquipmentArmour(BaseModel):
|
|
__tablename__ = 'eq_armour'
|
|
|
|
name = db.Column(db.String(50), unique=True, nullable=False)
|
|
gp_value = db.Column(db.Integer, nullable=False)
|
|
ac_mod = db.Column(db.Integer, nullable=False)
|
|
|
|
def __repr__(self):
|
|
return '<EquipmentArmour {0}>'.format(self.name)
|
|
|
|
class EquipmentRangedWeapon(BaseModel):
|
|
__tablename__ = 'eq_ranged_wep'
|
|
|
|
name = db.Column(db.String(50), unique=True, nullable=False)
|
|
bucket = db.Column(db.String(20), nullable=False)
|
|
gp_value = db.Column(db.Integer, nullable=False)
|
|
damage_die = db.Column(db.String(10), nullable=False)
|
|
|
|
def __repr__(self):
|
|
return '<EquipmentRangedWeapon {0}>'.format(self.name)
|
|
|
|
class EquipmentMeleeWeapon(BaseModel):
|
|
__tablename__ = 'eq_melee_wep'
|
|
|
|
name = db.Column(db.String(50), unique=False, nullable=False)
|
|
bucket = db.Column(db.String(20), nullable=False)
|
|
gp_value = db.Column(db.Integer, nullable=False)
|
|
damage_die = db.Column(db.String(10), nullable=False)
|
|
two_handed = db.Column(db.Boolean, nullable=False)
|
|
|
|
def __repr__(self):
|
|
return '<EquipmentMeleeWeapon {0}>'.format(self.name)
|
|
|
|
class CharacterNPC(BaseModel):
|
|
__tablename__ = 'npcs'
|
|
|
|
name = db.Column(db.String(50), unique=False, nullable=True)
|
|
level = db.Column(db.Integer, nullable=False)
|
|
hit_points = db.Column(db.Integer, nullable=False)
|
|
|
|
guild_id = db.Column(db.Integer, db.ForeignKey('guild.id'), nullable=False)
|
|
guild = db.relationship('CharacterClass', backref=db.backref('npcs', lazy=True))
|
|
|
|
melee_id = db.Column(db.Integer, db.ForeignKey('melee.id'), nullable=False)
|
|
melee = db.relationship('EquipmentMeleeWeapon')
|
|
|
|
ranged_id = db.Column(db.Integer, db.ForeignKey('ranged.id'), nullable=False)
|
|
ranged = db.relationship('EquipmentRangedWeapon')
|
|
|
|
def __repr__(self):
|
|
return '<CharacterNPC {0}>'.format(self.name)
|
|
|
|
admin_models = [CharacterClass, EquipmentArmour, EquipmentRangedWeapon, EquipmentMeleeWeapon, CharacterNPC]
|