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

  1. from flask_sqlalchemy import SQLAlchemy
  2. from ..models import db, BaseModel
  3. class CharacterClass(BaseModel):
  4. __tablename__ = 'character_class'
  5. name = db.Column(db.String(50), unique=True, nullable=False)
  6. bucket = db.Column(db.String(50))
  7. frequency_modifier = db.Column(db.Integer, default=1)
  8. prime_requisite = db.Column(db.String(3))
  9. hit_die_size = db.Column(db.Integer)
  10. maximum_level = db.Column(db.Integer)
  11. armour_modifier = db.Column(db.Integer)
  12. melee_light = db.Column(db.Integer)
  13. melee_medium = db.Column(db.Integer)
  14. melee_heavy = db.Column(db.Integer)
  15. ranged_light = db.Column(db.Integer)
  16. ranged_heavy = db.Column(db.Integer)
  17. def __repr__(self):
  18. return '<CharacterClass {0}>'.format(self.name)
  19. class EquipmentArmour(BaseModel):
  20. __tablename__ = 'eq_armour'
  21. name = db.Column(db.String(50), unique=True, nullable=False)
  22. gp_value = db.Column(db.Integer, nullable=False)
  23. ac_mod = db.Column(db.Integer, nullable=False)
  24. def __repr__(self):
  25. return '<EquipmentArmour {0}>'.format(self.name)
  26. class EquipmentRangedWeapon(BaseModel):
  27. __tablename__ = 'eq_ranged_wep'
  28. name = db.Column(db.String(50), unique=True, nullable=False)
  29. bucket = db.Column(db.String(20), nullable=False)
  30. gp_value = db.Column(db.Integer, nullable=False)
  31. damage_die = db.Column(db.String(10), nullable=False)
  32. def __repr__(self):
  33. return '<EquipmentRangedWeapon {0}>'.format(self.name)
  34. class EquipmentMeleeWeapon(BaseModel):
  35. __tablename__ = 'eq_melee_wep'
  36. name = db.Column(db.String(50), unique=False, nullable=False)
  37. bucket = db.Column(db.String(20), nullable=False)
  38. gp_value = db.Column(db.Integer, nullable=False)
  39. damage_die = db.Column(db.String(10), nullable=False)
  40. two_handed = db.Column(db.Boolean, nullable=False)
  41. def __repr__(self):
  42. return '<EquipmentMeleeWeapon {0}>'.format(self.name)
  43. class CharacterNPC(BaseModel):
  44. __tablename__ = 'npcs'
  45. name = db.Column(db.String(50), unique=False, nullable=True)
  46. level = db.Column(db.Integer, nullable=False)
  47. hit_points = db.Column(db.Integer, nullable=False)
  48. guild_id = db.Column(db.Integer, db.ForeignKey('guild.id'), nullable=False)
  49. guild = db.relationship('CharacterClass', backref=db.backref('npcs', lazy=True))
  50. melee_id = db.Column(db.Integer, db.ForeignKey('melee.id'), nullable=False)
  51. melee = db.relationship('EquipmentMeleeWeapon')
  52. ranged_id = db.Column(db.Integer, db.ForeignKey('ranged.id'), nullable=False)
  53. ranged = db.relationship('EquipmentRangedWeapon')
  54. def __repr__(self):
  55. return '<CharacterNPC {0}>'.format(self.name)
  56. admin_models = [CharacterClass, EquipmentArmour, EquipmentRangedWeapon, EquipmentMeleeWeapon, CharacterNPC]