From 4397dfbb0c874ddaba5529b8e865aae0f2d8fc49 Mon Sep 17 00:00:00 2001 From: Eevee Date: Sat, 20 Jun 2009 22:32:37 -0700 Subject: [PATCH] =?UTF-8?q?Added=20remaining=20Pok=C3=A9mon=20form=20data.?= =?UTF-8?q?=20=20#5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 | 22 ++++++------- pokedex/data/csv/pokemon_abilities.csv | 7 ++++ pokedex/data/csv/pokemon_egg_groups.csv | 7 ++++ pokedex/data/csv/pokemon_form_groups.csv | 3 +- pokedex/data/csv/pokemon_stats.csv | 42 ++++++++++++++++++++++++ pokedex/data/csv/pokemon_types.csv | 14 ++++++++ pokedex/db/tables.py | 22 +++++++++++++ 7 files changed, 105 insertions(+), 12 deletions(-) diff --git a/pokedex/data/csv/pokemon.csv b/pokedex/data/csv/pokemon.csv index cf932b7..8289e5d 100644 --- a/pokedex/data/csv/pokemon.csv +++ b/pokedex/data/csv/pokemon.csv @@ -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 diff --git a/pokedex/data/csv/pokemon_abilities.csv b/pokedex/data/csv/pokemon_abilities.csv index d256608..b660d97 100644 --- a/pokedex/data/csv/pokemon_abilities.csv +++ b/pokedex/data/csv/pokemon_abilities.csv @@ -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 diff --git a/pokedex/data/csv/pokemon_egg_groups.csv b/pokedex/data/csv/pokemon_egg_groups.csv index afcdc3b..5b96b3d 100644 --- a/pokedex/data/csv/pokemon_egg_groups.csv +++ b/pokedex/data/csv/pokemon_egg_groups.csv @@ -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 diff --git a/pokedex/data/csv/pokemon_form_groups.csv b/pokedex/data/csv/pokemon_form_groups.csv index c27be6a..7e41dd6 100644 --- a/pokedex/data/csv/pokemon_form_groups.csv +++ b/pokedex/data/csv/pokemon_form_groups.csv @@ -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." diff --git a/pokedex/data/csv/pokemon_stats.csv b/pokedex/data/csv/pokemon_stats.csv index a078deb..5a43134 100644 --- a/pokedex/data/csv/pokemon_stats.csv +++ b/pokedex/data/csv/pokemon_stats.csv @@ -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 diff --git a/pokedex/data/csv/pokemon_types.csv b/pokedex/data/csv/pokemon_types.csv index b1a002d..cf3cefe 100644 --- a/pokedex/data/csv/pokemon_types.csv +++ b/pokedex/data/csv/pokemon_types.csv @@ -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 diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 49d9c17..bae2211 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -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,