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 ''.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 ''.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 ''.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 ''.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 ''.format(self.name) admin_models = [CharacterClass, EquipmentArmour, EquipmentRangedWeapon, EquipmentMeleeWeapon, CharacterNPC]