Link stats to damage classes.

This commit is contained in:
Eevee 2010-05-26 21:58:18 -07:00
parent b1691804c1
commit 409b16e8ee
2 changed files with 31 additions and 8 deletions

View file

@ -1,7 +1,7 @@
id,name id,damage_class_id,name
1,HP 1,,HP
2,Attack 2,2,Attack
3,Defense 3,2,Defense
4,Special Attack 4,3,Special Attack
5,Special Defense 5,3,Special Defense
6,Speed 6,,Speed

1 id damage_class_id name
2 1 HP
3 2 2 Attack
4 3 2 Defense
5 4 3 Special Attack
6 5 3 Special Defense
7 6 Speed

View file

@ -492,7 +492,27 @@ class Pokemon(TableBase):
if pokemon_stat.stat.name == stat_name: if pokemon_stat.stat.name == stat_name:
return pokemon_stat return pokemon_stat
return None raise KeyError(u'No stat named %s' % stat_name)
@property
def better_damage_class(self):
u"""Returns the MoveDamageClass that this Pokémon is best suited for,
based on its attack stats.
If the attack stats are about equal (within 5), returns None. The
value None, not the damage class called 'None'.
"""
phys = self.stat(u'Attack')
spec = self.stat(u'Special Attack')
diff = phys.base_stat - spec.base_stat
if diff > 5:
return phys.stat.damage_class
elif diff < -5:
return spec.stat.damage_class
else:
return None
class PokemonAbility(TableBase): class PokemonAbility(TableBase):
__tablename__ = 'pokemon_abilities' __tablename__ = 'pokemon_abilities'
@ -614,6 +634,7 @@ class Region(TableBase):
class Stat(TableBase): class Stat(TableBase):
__tablename__ = 'stats' __tablename__ = 'stats'
id = Column(Integer, primary_key=True, nullable=False) id = Column(Integer, primary_key=True, nullable=False)
damage_class_id = Column(Integer, ForeignKey('move_damage_classes.id'), nullable=True)
name = Column(Unicode(16), nullable=False) name = Column(Unicode(16), nullable=False)
class SuperContestCombo(TableBase): class SuperContestCombo(TableBase):
@ -883,6 +904,8 @@ Region.version_group_regions = relation(VersionGroupRegion, backref='region',
order_by='VersionGroupRegion.version_group_id') order_by='VersionGroupRegion.version_group_id')
Region.version_groups = association_proxy('version_group_regions', 'version_group') Region.version_groups = association_proxy('version_group_regions', 'version_group')
Stat.damage_class = relation(MoveDamageClass, backref='stats')
SuperContestCombo.first = relation(Move, primaryjoin=SuperContestCombo.first_move_id==Move.id, SuperContestCombo.first = relation(Move, primaryjoin=SuperContestCombo.first_move_id==Move.id,
backref='super_contest_combo_first') backref='super_contest_combo_first')
SuperContestCombo.second = relation(Move, primaryjoin=SuperContestCombo.second_move_id==Move.id, SuperContestCombo.second = relation(Move, primaryjoin=SuperContestCombo.second_move_id==Move.id,