Added remaining Pokémon form data. #5
authorEevee <git@veekun.com>
Sun, 21 Jun 2009 05:32:37 +0000 (22:32 -0700)
committerEevee <git@veekun.com>
Sun, 21 Jun 2009 05:32:37 +0000 (22:32 -0700)
Types, abilities, egg groups, and stats for Shaymin, Giratina, and Rotom forms.
Updated height and weight for Shaymin and Giratina forms.
Added Giratina's form descriptions and updated Shaymin's to mention link
battles and freezing.

pokedex/data/csv/pokemon.csv
pokedex/data/csv/pokemon_abilities.csv
pokedex/data/csv/pokemon_egg_groups.csv
pokedex/data/csv/pokemon_form_groups.csv
pokedex/data/csv/pokemon_stats.csv
pokedex/data/csv/pokemon_types.csv
pokedex/db/tables.py

index cf932b7..8289e5d 100644 (file)
@@ -384,7 +384,7 @@ id,name,forme_name,forme_base_pokemon_id,generation_id,evolution_chain_id,evolut
 383,Groudon,,,3,199,,,,35,9500,Continent,red,6,rough terrain,-1,5,218,0,,0,0,0
 384,Rayquaza,,,3,200,,,,70,2065,Sky High,green,2,rare,-1,3,220,0,,0,0,0
 385,Jirachi,,,3,201,,,,3,11,Wish,yellow,12,mountain,-1,3,215,100,,0,0,0
-386,Deoxys,normal,,3,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
+386,Deoxys,,,3,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
 387,Turtwig,,,4,203,,,,4,102,Tiny Leaf,green,8,,1,45,64,70,,0,0,0
 388,Grotle,,,4,203,387,1,18,11,970,Grove,green,8,,1,45,141,70,,0,0,0
 389,Torterra,,,4,203,388,1,32,22,3100,Continent,green*,8,,1,45,208,70,,0,0,0
@@ -411,7 +411,7 @@ id,name,forme_name,forme_base_pokemon_id,generation_id,evolution_chain_id,evolut
 410,Shieldon,,,4,212,,,,5,570,Shield,gray,8,,1,45,99,70,,0,0,0
 411,Bastiodon,,,4,212,410,1,30,13,1495,Shield,gray,8,,1,45,199,70,,0,0,0
 412,Burmy,,,4,213,,,,2,34,Bagworm,gray,2,,4,120,61,70,,0,0,0
-413,Wormadam,grass,,4,213,412,3,20,5,65,Bagworm,gray,2,,8,45,159,70,,0,0,0
+413,Wormadam,plant,,4,213,412,3,20,5,65,Bagworm,gray,2,,8,45,159,70,,0,0,0
 414,Mothim,,,4,213,412,2,20,9,233,Moth,yellow,13,,0,45,159,70,,0,0,0
 415,Combee,,,4,214,,,,3,55,Tiny Bee,yellow,11,,1,120,63,70,,0,1,0
 416,Vespiquen,,,4,214,415,3,21,12,385,Beehive,yellow,9,,8,45,188,70,,0,0,0
@@ -492,15 +492,15 @@ id,name,forme_name,forme_base_pokemon_id,generation_id,evolution_chain_id,evolut
 491,Darkrai,,,4,252,,,,15,505,Pitch-Black,black,12,,-1,3,210,0,,0,0,0
 492,Shaymin,land,,4,253,,,,2,21,Gratitude,green,8,,-1,45,64,100,,0,0,0
 493,Arceus,,,4,254,,,,32,3200,Alpha,gray,8,,-1,3,255,0,,0,0,0
-494,Pokemon494,,,,,,,,0,0,,,0,,-1,3,255,0,,0,0,0
-495,Pokemon495,,,,,,,,0,0,,,0,,-1,3,255,0,,0,0,0
-496,Deoxys,attack,386,,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
-497,Deoxys,defense,386,,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
-498,Deoxys,speed,386,,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
-499,Wormadam,ground,413,,213,412,3,20,5,65,Bagworm,gray,2,,8,45,159,70,,0,0,0
-500,Wormadam,steel,413,,213,412,3,20,5,65,Bagworm,gray,2,,8,45,159,70,,0,0,0
-501,Giratina,origin,487,4,248,,,,45,7500,Renegade,black,10,,-1,3,220,0,,0,0,0
-502,Shaymin,sky,492,4,253,,,,2,21,Gratitude,green,8,,-1,45,64,100,,0,0,0
+494,Pokemon494,,,4,,,,,0,0,,,0,,-1,3,255,0,,0,0,0
+495,Pokemon495,,,4,,,,,0,0,,,0,,-1,3,255,0,,0,0,0
+496,Deoxys,attack,386,4,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
+497,Deoxys,defense,386,4,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
+498,Deoxys,speed,386,4,202,,,,17,608,DNA,red,12,rare,-1,3,215,0,,0,0,0
+499,Wormadam,sandy,413,4,213,412,3,20,5,65,Bagworm,gray,2,,8,45,159,70,,0,0,0
+500,Wormadam,trash,413,4,213,412,3,20,5,65,Bagworm,gray,2,,8,45,159,70,,0,0,0
+501,Giratina,origin,487,4,248,,,,69,6500,Renegade,black,10,,-1,3,220,0,,0,0,0
+502,Shaymin,sky,492,4,253,,,,4,52,Gratitude,green,8,,-1,45,64,100,,0,0,0
 503,Rotom,heat,479,4,240,,,,3,3,Plasma,red,1,,-1,45,132,70,,0,0,0
 504,Rotom,wash,479,4,240,,,,3,3,Plasma,red,1,,-1,45,132,70,,0,0,0
 505,Rotom,frost,479,4,240,,,,3,3,Plasma,red,1,,-1,45,132,70,,0,0,0
index d256608..b660d97 100644 (file)
@@ -203,6 +203,12 @@ pokemon_id,ability_id,slot
 481,26,1
 482,26,1
 488,26,1
+501,26,1
+503,26,1
+504,26,1
+505,26,1
+506,26,1
+507,26,1
 46,27,1
 47,27,1
 285,27,1
@@ -256,6 +262,7 @@ pokemon_id,ability_id,slot
 385,32,1
 440,32,2
 468,32,1
+502,32,1
 116,33,1
 118,33,1
 119,33,1
index afcdc3b..5b96b3d 100644 (file)
@@ -539,6 +539,11 @@ pokemon_id,egg_group_id
 475,11
 477,11
 479,11
+503,11
+504,11
+505,11
+506,11
+507,11
 118,12
 119,12
 129,12
@@ -645,3 +650,5 @@ pokemon_id,egg_group_id
 496,15
 497,15
 498,15
+501,15
+502,15
index c27be6a..7e41dd6 100644 (file)
@@ -8,5 +8,6 @@ pokemon_id,description
 422,Forms only affect appearance.  A form is selected before a wild encounter based on whether the battle is in Western or Eastern Sinnoh and cannot be changed.
 423,Forms only affect appearance.  A form is selected before a wild encounter based on whether the battle is in Western or Eastern Sinnoh and cannot be changed.
 479,"Forms have different signature moves.  When switching forms, the old signature move is removed and the new one, if any, is learned immediately.  In a secret room in the Galactic Eterna Building, accessible only with a Secret Key, there are appliances that can be used to switch between forms."
-492,"Forms have different stats and movepools.  After using Gracidea, Sky form will be active during daytime; otherwise, only Land form is active.  Gracidea only works on an official event Shaymin."
+487,"Forms have different stats.  Giratina becomes Origin form in Distortion World or while holding a Griseous Orb.  Otherwise, or during a link battle, Giratina will be in Altered form."
+492,"Forms have different stats and movepools.  After using a Gracidea, Shaymin will transform into Sky form during the daytime.  If a Gracidea is not used, it is currently nighttime, during a link battle, or Sky form is Frozen, Shaymin will be in Land form.  Gracidea only works on an official event Shaymin."
 493,"Form always reflects type, which may be changed by attaching a Plate and activating Multitype."
index a078deb..5a43134 100644 (file)
@@ -2999,3 +2999,45 @@ pokemon_id,stat_id,base_stat,effort
 500,4,69,0
 500,5,95,1
 500,6,36,0
+501,1,150,3
+501,2,120,0
+501,3,100,0
+501,4,120,0
+501,5,100,0
+501,6,90,0
+502,1,100,3
+502,2,103,0
+502,3,75,0
+502,4,120,0
+502,5,75,0
+502,6,127,0
+503,1,50,0
+503,2,65,0
+503,3,107,0
+503,4,105,1
+503,5,107,0
+503,6,86,1
+504,1,50,0
+504,2,65,0
+504,3,107,0
+504,4,105,1
+504,5,107,0
+504,6,86,1
+505,1,50,0
+505,2,65,0
+505,3,107,0
+505,4,105,1
+505,5,107,0
+505,6,86,1
+506,1,50,0
+506,2,65,0
+506,3,107,0
+506,4,105,1
+506,5,107,0
+506,6,86,1
+507,1,50,0
+507,2,65,0
+507,3,107,0
+507,4,105,1
+507,5,107,0
+507,6,86,1
index b1a002d..cf3cefe 100644 (file)
@@ -170,6 +170,7 @@ pokemon_id,type_id,slot
 468,3,2
 469,3,2
 472,3,2
+502,3,2
 1,4,2
 2,4,2
 3,4,2
@@ -370,6 +371,12 @@ pokemon_id,type_id,slot
 478,8,2
 479,8,2
 487,8,1
+501,8,1
+503,8,2
+504,8,2
+505,8,2
+506,8,2
+507,8,2
 81,9,2
 82,9,2
 205,9,2
@@ -576,6 +583,7 @@ pokemon_id,type_id,slot
 465,12,1
 470,12,1
 492,12,1
+502,12,1
 25,13,1
 26,13,1
 81,13,1
@@ -604,6 +612,11 @@ pokemon_id,type_id,slot
 462,13,1
 466,13,1
 479,13,1
+503,13,1
+504,13,1
+505,13,1
+506,13,1
+507,13,1
 63,14,1
 64,14,1
 65,14,1
@@ -701,6 +714,7 @@ pokemon_id,type_id,slot
 483,16,2
 484,16,2
 487,16,2
+501,16,2
 197,17,1
 198,17,1
 215,17,1
index 49d9c17..bae2211 100644 (file)
@@ -180,6 +180,14 @@ class Move(TableBase):
     super_contest_effect_id = Column(Integer, nullable=False)
 
 class Pokemon(TableBase):
+    """The core to this whole mess.
+
+    Note that I use both 'forme' and 'form' in both code and the database.  I
+    only use 'forme' when specifically referring to Pokémon that have multiple
+    distinct species as forms—i.e., different stats or movesets.  'Form' is a
+    more general term referring to any variation within a species, including
+    purely cosmetic forms like Unown.
+    """
     __tablename__ = 'pokemon'
     id = Column(Integer, primary_key=True, nullable=False)
     name = Column(Unicode(20), nullable=False)
@@ -225,6 +233,17 @@ class Pokemon(TableBase):
             return "%s %s" % (self.forme_name.capitalize(), self.name)
         return self.name
 
+    @property
+    def normal_form(self):
+        """Returns the normal form for this Pokémon; i.e., this will return
+        regular Deoxys when called on any Deoxys form.
+        """
+
+        if self.forme_base_pokemon:
+            return self.forme_base_pokemon
+
+        return self
+
 class PokemonAbility(TableBase):
     __tablename__ = 'pokemon_abilities'
     pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
@@ -332,6 +351,9 @@ LocationArea.location = relation(Location, backref='areas')
 Pokemon.abilities = relation(Ability, secondary=PokemonAbility.__table__,
                                       order_by=PokemonAbility.slot,
                                       backref='pokemon')
+Pokemon.formes = relation(Pokemon, primaryjoin=Pokemon.id==Pokemon.forme_base_pokemon_id,
+                                               backref=backref('forme_base_pokemon',
+                                                               remote_side=[Pokemon.id]))
 Pokemon.dex_numbers = relation(PokemonDexNumber, backref='pokemon')
 Pokemon.egg_groups = relation(EggGroup, secondary=PokemonEggGroup.__table__,
                                         order_by=PokemonEggGroup.egg_group_id,