super_contest_effect_id = Column(Integer, ForeignKey('super_contest_effects.id'), nullable=True,
info=dict(description="ID of the move's Super Contest effect"))
+class MoveChangelog(TableBase):
+ """History of changes to moves across main game versions."""
+ __tablename__ = 'move_changelog'
+ move_id = Column(Integer, ForeignKey('moves.id'), primary_key=True, nullable=False,
+ info=dict(description="ID of the move that changed"))
+ changed_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False,
+ info=dict(description="ID of the version group in which the move changed"))
+ power = Column(SmallInteger, nullable=True,
+ info=dict(description="Prior base power of the move, or NULL if unchanged"))
+ pp = Column(SmallInteger, nullable=True,
+ info=dict(description="Prior base PP of the move, or NULL if unchanged"))
+ accuracy = Column(SmallInteger, nullable=True,
+ info=dict(description="Prior accuracy of the move, or NULL if unchanged"))
+
class Nature(TableBase):
u"""A nature a pokémon can have, such as Calm or Brave
"""
description = Column(Unicode(512),
info=dict(description=u"A longer description of the pokédex", format='plaintext'))
-class PokedexVersionGroup(TableBase):
- u"""Maps a pokédex to the version group that uses it
- """
- __tablename__ = 'pokedex_version_groups'
- pokedex_id = Column(Integer, ForeignKey('pokedexes.id'), primary_key=True, nullable=False, autoincrement=False,
- info=dict(description=u"ID of the pokédex"))
- version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False, autoincrement=False,
- info=dict(description=u"ID of the version group"))
-
class Pokemon(TableBase):
u"""A species of Pokémon. The core to this whole mess.
"""
info=dict(description=u"A numeric ID"))
generation_id = Column(Integer, ForeignKey('generations.id'), nullable=False,
info=dict(description=u"ID of the generation the games of this group belong to"))
+ pokedex_id = Column(Integer, ForeignKey('pokedexes.id'), nullable=False,
+ info=dict(description=u"ID of the regional Pokédex used in this version group."))
class VersionGroupRegion(TableBase):
u"""Maps a region to a game version group that features it
Machine.item = relation(Item)
Machine.version_group = relation(VersionGroup)
+Move.changelog = relation(MoveChangelog,
+ order_by=MoveChangelog.changed_in_version_group_id.asc(),
+ backref='move',
+)
Move.contest_effect = relation(ContestEffect, backref='moves')
Move.contest_combo_next = association_proxy('contest_combo_first', 'second')
Move.contest_combo_prev = association_proxy('contest_combo_second', 'first')
Move.effect = markdown.MoveEffectProperty('effect')
Move.short_effect = markdown.MoveEffectProperty('short_effect')
+MoveChangelog.changed_in = relation(VersionGroup, backref='move_changelog')
+
MoveEffect.category_map = relation(MoveEffectCategoryMap)
MoveEffect.categories = association_proxy('category_map', 'category')
MoveEffectCategoryMap.category = relation(MoveEffectCategory)
NaturePokeathlonStat.pokeathlon_stat = relation(PokeathlonStat, backref='nature_effects')
Pokedex.region = relation(Region, backref='pokedexes')
-Pokedex.version_groups = relation(VersionGroup, secondary=PokedexVersionGroup.__table__, backref='pokedexes')
+Pokedex.version_groups = relation(VersionGroup, order_by=VersionGroup.id, back_populates='pokedex')
Pokemon.all_abilities = relation(Ability,
secondary=PokemonAbility.__table__,
VersionGroup.generation = relation(Generation, backref='version_groups')
VersionGroup.version_group_regions = relation(VersionGroupRegion, backref='version_group')
VersionGroup.regions = association_proxy('version_group_regions', 'region')
+VersionGroup.pokedex = relation(Pokedex, back_populates='version_groups')