Merge pull request #81 from jcreek/data/dexes
Improve data seeding and structure
@@ -19,6 +19,10 @@ A web app to track completion of a living Pokédex.
|
|||||||
N.B. All local emails are captured by MailPit when running Supabase in Docker.
|
N.B. All local emails are captured by MailPit when running Supabase in Docker.
|
||||||
8. You can now use [the app](http://localhost:5173/).
|
8. You can now use [the app](http://localhost:5173/).
|
||||||
|
|
||||||
|
## Reference Data Updates
|
||||||
|
|
||||||
|
The seed data lives in `supabase/migrations/20260118001000_seed_reference_data.sql`. Update that migration directly when new data is added.
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
To create a production version:
|
To create a production version:
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
dexId,gameDisplayName,dexDisplayName,sortOrder,isDlc,parentDexId,file
|
||||||
|
red-kanto,Red,Kanto,1,false,,native-game-dexes/red-blue-yellow.csv
|
||||||
|
blue-kanto,Blue,Kanto,1,false,,native-game-dexes/red-blue-yellow.csv
|
||||||
|
yellow-kanto,Yellow,Kanto,1,false,,native-game-dexes/red-blue-yellow.csv
|
||||||
|
gold-johto,Gold,Johto,1,false,,native-game-dexes/gold-silver-crystal.csv
|
||||||
|
silver-johto,Silver,Johto,1,false,,native-game-dexes/gold-silver-crystal.csv
|
||||||
|
crystal-johto,Crystal,Johto,1,false,,native-game-dexes/gold-silver-crystal.csv
|
||||||
|
ruby-hoenn,Ruby,Hoenn,1,false,,native-game-dexes/ruby-sapphire-emerald.csv
|
||||||
|
sapphire-hoenn,Sapphire,Hoenn,1,false,,native-game-dexes/ruby-sapphire-emerald.csv
|
||||||
|
emerald-hoenn,Emerald,Hoenn,1,false,,native-game-dexes/ruby-sapphire-emerald.csv
|
||||||
|
firered-kanto,FireRed,Kanto,1,false,,native-game-dexes/fire-red-leaf-green.csv
|
||||||
|
leafgreen-kanto,LeafGreen,Kanto,1,false,,native-game-dexes/fire-red-leaf-green.csv
|
||||||
|
diamond-sinnoh,Diamond,Sinnoh,1,false,,native-game-dexes/diamond-pearl.csv
|
||||||
|
pearl-sinnoh,Pearl,Sinnoh,1,false,,native-game-dexes/diamond-pearl.csv
|
||||||
|
platinum-sinnoh,Platinum,Sinnoh,1,false,,native-game-dexes/platinum.csv
|
||||||
|
heart-gold-johto,Heart Gold,Johto,1,false,,native-game-dexes/heart-gold-soul-silver.csv
|
||||||
|
soul-silver-johto,Soul Silver,Johto,1,false,,native-game-dexes/heart-gold-soul-silver.csv
|
||||||
|
black-unova,Black,Unova,1,false,,native-game-dexes/black-white.csv
|
||||||
|
white-unova,White,Unova,1,false,,native-game-dexes/black-white.csv
|
||||||
|
black-2-unova,Black 2,Unova,1,false,,native-game-dexes/black-2-white-2.csv
|
||||||
|
white-2-unova,White 2,Unova,1,false,,native-game-dexes/black-2-white-2.csv
|
||||||
|
x-central-kalos,X,Central Kalos,1,false,,native-game-dexes/x-y-central-kalos.csv
|
||||||
|
x-coastal-kalos,X,Coastal Kalos,2,false,,native-game-dexes/x-y-coastal-kalos.csv
|
||||||
|
x-mountain-kalos,X,Mountain Kalos,3,false,,native-game-dexes/x-y-mountain-kalos.csv
|
||||||
|
y-central-kalos,Y,Central Kalos,1,false,,native-game-dexes/x-y-central-kalos.csv
|
||||||
|
y-coastal-kalos,Y,Coastal Kalos,2,false,,native-game-dexes/x-y-coastal-kalos.csv
|
||||||
|
y-mountain-kalos,Y,Mountain Kalos,3,false,,native-game-dexes/x-y-mountain-kalos.csv
|
||||||
|
omega-ruby-hoenn,Omega Ruby,Hoenn,1,false,,native-game-dexes/omega-ruby-alpha-sapphire.csv
|
||||||
|
alpha-sapphire-hoenn,Alpha Sapphire,Hoenn,1,false,,native-game-dexes/omega-ruby-alpha-sapphire.csv
|
||||||
|
sun-alola,Sun,Alola,1,false,,native-game-dexes/sun-moon-alola.csv
|
||||||
|
moon-alola,Moon,Alola,1,false,,native-game-dexes/sun-moon-alola.csv
|
||||||
|
ultra-sun-alola,Ultra Sun,Alola,1,false,,native-game-dexes/ultra-sun-ultra-moon-alola.csv
|
||||||
|
ultra-moon-alola,Ultra Moon,Alola,1,false,,native-game-dexes/ultra-sun-ultra-moon-alola.csv
|
||||||
|
lg-pikachu-kanto,LG: Pikachu,Kanto,1,false,,native-game-dexes/lets-go-pikachu-eevee.csv
|
||||||
|
lg-eevee-kanto,LG: Eevee,Kanto,1,false,,native-game-dexes/lets-go-pikachu-eevee.csv
|
||||||
|
sword-galar,Sword,Galar,1,false,,native-game-dexes/sword-shield.csv
|
||||||
|
sword-isle-armor,Sword,Isle of Armor,2,true,sword-galar,native-game-dexes/sword-shield-isle-armor.csv
|
||||||
|
sword-crown-tundra,Sword,Crown Tundra,3,true,sword-galar,native-game-dexes/sword-shield-crown-tundra.csv
|
||||||
|
shield-galar,Shield,Galar,1,false,,native-game-dexes/sword-shield.csv
|
||||||
|
shield-isle-armor,Shield,Isle of Armor,2,true,shield-galar,native-game-dexes/sword-shield-isle-armor.csv
|
||||||
|
shield-crown-tundra,Shield,Crown Tundra,3,true,shield-galar,native-game-dexes/sword-shield-crown-tundra.csv
|
||||||
|
brilliant-diamond-sinnoh,Brilliant Diamond,Sinnoh,1,false,,native-game-dexes/brilliant-diamond-shining-pearl.csv
|
||||||
|
shining-pearl-sinnoh,Shining Pearl,Sinnoh,1,false,,native-game-dexes/brilliant-diamond-shining-pearl.csv
|
||||||
|
legends-arceus-hisui,Legends: Arceus,Hisui,1,false,,native-game-dexes/legends-arceus.csv
|
||||||
|
scarlet-paldea,Scarlet,Paldea,1,false,,native-game-dexes/scarlet-violet.csv
|
||||||
|
scarlet-kitakami,Scarlet,Kitakami,2,true,scarlet-paldea,native-game-dexes/scarlet-violet-kitakami.csv
|
||||||
|
scarlet-blueberry,Scarlet,Blueberry,3,true,scarlet-paldea,native-game-dexes/scarlet-violet-blueberry.csv
|
||||||
|
violet-paldea,Violet,Paldea,1,false,,native-game-dexes/scarlet-violet.csv
|
||||||
|
violet-kitakami,Violet,Kitakami,2,true,violet-paldea,native-game-dexes/scarlet-violet-kitakami.csv
|
||||||
|
violet-blueberry,Violet,Blueberry,3,true,violet-paldea,native-game-dexes/scarlet-violet-blueberry.csv
|
||||||
|
legends-z-a-kalos,Legends: Z-A,Kalos,1,false,,native-game-dexes/legends-z-a.csv
|
||||||
|
legends-z-a-mega-dimension,Legends: Z-A,Mega Dimension,2,true,legends-z-a-kalos,native-game-dexes/legends-z-a-mega-dimension.csv
|
||||||
|
@@ -0,0 +1,46 @@
|
|||||||
|
game,region,releaseYear
|
||||||
|
Red,Kanto,1996
|
||||||
|
Blue,Kanto,1996
|
||||||
|
Yellow,Kanto,1998
|
||||||
|
Gold,Johto,1999
|
||||||
|
Silver,Johto,1999
|
||||||
|
Crystal,Johto,2000
|
||||||
|
Ruby,Hoenn,2002
|
||||||
|
Sapphire,Hoenn,2002
|
||||||
|
Colosseum,Orre,2003
|
||||||
|
Emerald,Hoenn,2004
|
||||||
|
FireRed,Kanto,2004
|
||||||
|
LeafGreen,Kanto,2004
|
||||||
|
XD: Gale of Darkness,Orre,2005
|
||||||
|
Diamond,Sinnoh,2006
|
||||||
|
Pearl,Sinnoh,2006
|
||||||
|
Platinum,Sinnoh,2008
|
||||||
|
Ranch,Ranch,2008
|
||||||
|
Heart Gold,Johto,2009
|
||||||
|
Soul Silver,Johto,2009
|
||||||
|
Black,Unova,2010
|
||||||
|
White,Unova,2010
|
||||||
|
Black 2,Unova,2012
|
||||||
|
White 2,Unova,2012
|
||||||
|
Dream Radar,Unova,2012
|
||||||
|
X,Kalos,2013
|
||||||
|
Y,Kalos,2013
|
||||||
|
Omega Ruby,Hoenn,2014
|
||||||
|
Alpha Sapphire,Hoenn,2014
|
||||||
|
Sun,Alola,2016
|
||||||
|
Moon,Alola,2016
|
||||||
|
Moon (demo),Alola,2016
|
||||||
|
Go,Go,2016
|
||||||
|
Ultra Sun,Alola,2017
|
||||||
|
Ultra Moon,Alola,2017
|
||||||
|
LG: Pikachu,Kanto,2018
|
||||||
|
LG: Eevee,Kanto,2018
|
||||||
|
Sword,Galar,2019
|
||||||
|
Shield,Galar,2019
|
||||||
|
Home,Home,2020
|
||||||
|
Brilliant Diamond,Sinnoh,2021
|
||||||
|
Shining Pearl,Sinnoh,2021
|
||||||
|
Legends: Arceus,Hisui,2022
|
||||||
|
Scarlet,Paldea,2022
|
||||||
|
Violet,Paldea,2022
|
||||||
|
Legends: Z-A,Kalos,2025
|
||||||
|
@@ -0,0 +1,302 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
0,Victini,,
|
||||||
|
1,Snivy,,
|
||||||
|
2,Servine,,
|
||||||
|
3,Serperior,,
|
||||||
|
4,Tepig,,
|
||||||
|
5,Pignite,,
|
||||||
|
6,Emboar,,
|
||||||
|
7,Oshawott,,
|
||||||
|
8,Dewott,,
|
||||||
|
9,Samurott,,
|
||||||
|
10,Patrat,,
|
||||||
|
11,Watchog,,
|
||||||
|
12,Purrloin,,
|
||||||
|
13,Liepard,,
|
||||||
|
14,Pidove,,
|
||||||
|
15,Tranquill,,
|
||||||
|
16,Unfezant,,
|
||||||
|
17,Sewaddle,,
|
||||||
|
18,Swadloon,,
|
||||||
|
19,Leavanny,,
|
||||||
|
20,Sunkern,,
|
||||||
|
21,Sunflora,,
|
||||||
|
22,Lillipup,,
|
||||||
|
23,Herdier,,
|
||||||
|
24,Stoutland,,
|
||||||
|
25,Mareep,,
|
||||||
|
26,Flaaffy,,
|
||||||
|
27,Ampharos,,
|
||||||
|
28,Psyduck,,
|
||||||
|
29,Golduck,,
|
||||||
|
30,Azurill,,
|
||||||
|
31,Marill,,
|
||||||
|
32,Azumarill,,
|
||||||
|
33,Riolu,,
|
||||||
|
34,Lucario,,
|
||||||
|
35,Dunsparce,,
|
||||||
|
36,Audino,,
|
||||||
|
37,Pansage,,
|
||||||
|
38,Simisage,,
|
||||||
|
39,Pansear,,
|
||||||
|
40,Simisear,,
|
||||||
|
41,Panpour,,
|
||||||
|
42,Simipour,,
|
||||||
|
43,Venipede,,
|
||||||
|
44,Whirlipede,,
|
||||||
|
45,Scolipede,,
|
||||||
|
46,Koffing,,
|
||||||
|
47,Weezing,,
|
||||||
|
48,Magnemite,,
|
||||||
|
49,Magneton,,
|
||||||
|
50,Magnezone,,
|
||||||
|
51,Growlithe,,
|
||||||
|
52,Arcanine,,
|
||||||
|
53,Magby,,
|
||||||
|
54,Magmar,,
|
||||||
|
55,Magmortar,,
|
||||||
|
56,Elekid,,
|
||||||
|
57,Electabuzz,,
|
||||||
|
58,Electivire,,
|
||||||
|
59,Rattata,,
|
||||||
|
60,Raticate,,
|
||||||
|
61,Zubat,,
|
||||||
|
62,Golbat,,
|
||||||
|
63,Crobat,,
|
||||||
|
64,Grimer,,
|
||||||
|
65,Muk,,
|
||||||
|
66,Woobat,,
|
||||||
|
67,Swoobat,,
|
||||||
|
68,Roggenrola,,
|
||||||
|
69,Boldore,,
|
||||||
|
70,Gigalith,,
|
||||||
|
71,Onix,,
|
||||||
|
72,Steelix,,
|
||||||
|
73,Timburr,,
|
||||||
|
74,Gurdurr,,
|
||||||
|
75,Conkeldurr,,
|
||||||
|
76,Drilbur,,
|
||||||
|
77,Excadrill,,
|
||||||
|
78,Skitty,,
|
||||||
|
79,Delcatty,,
|
||||||
|
80,Buneary,,
|
||||||
|
81,Lopunny,,
|
||||||
|
82,Cottonee,,
|
||||||
|
83,Whimsicott,,
|
||||||
|
84,Petilil,,
|
||||||
|
85,Lilligant,,
|
||||||
|
86,Munna,,
|
||||||
|
87,Musharna,,
|
||||||
|
88,Cleffa,,
|
||||||
|
89,Clefairy,,
|
||||||
|
90,Clefable,,
|
||||||
|
91,Eevee,,
|
||||||
|
92,Vaporeon,,
|
||||||
|
93,Jolteon,,
|
||||||
|
94,Flareon,,
|
||||||
|
95,Espeon,,
|
||||||
|
96,Umbreon,,
|
||||||
|
97,Leafeon,,
|
||||||
|
98,Glaceon,,
|
||||||
|
99,Sandile,,
|
||||||
|
100,Krokorok,,
|
||||||
|
101,Krookodile,,
|
||||||
|
102,Darumaka,,
|
||||||
|
103,Darmanitan,,
|
||||||
|
104,Basculin,,
|
||||||
|
105,Trubbish,,
|
||||||
|
106,Garbodor,,
|
||||||
|
107,Minccino,,
|
||||||
|
108,Cinccino,,
|
||||||
|
109,Rufflet,,
|
||||||
|
110,Braviary,,
|
||||||
|
111,Vullaby,,
|
||||||
|
112,Mandibuzz,,
|
||||||
|
113,Sandshrew,,
|
||||||
|
114,Sandslash,,
|
||||||
|
115,Dwebble,,
|
||||||
|
116,Crustle,,
|
||||||
|
117,Scraggy,,
|
||||||
|
118,Scrafty,,
|
||||||
|
119,Maractus,,
|
||||||
|
120,Sigilyph,,
|
||||||
|
121,Trapinch,,
|
||||||
|
122,Vibrava,,
|
||||||
|
123,Flygon,,
|
||||||
|
124,Yamask,,
|
||||||
|
125,Cofagrigus,,
|
||||||
|
126,Tirtouga,,
|
||||||
|
127,Carracosta,,
|
||||||
|
128,Archen,,
|
||||||
|
129,Archeops,,
|
||||||
|
130,Klink,,
|
||||||
|
131,Klang,,
|
||||||
|
132,Klinklang,,
|
||||||
|
133,Budew,,
|
||||||
|
134,Roselia,,
|
||||||
|
135,Roserade,,
|
||||||
|
136,Gothita,,
|
||||||
|
137,Gothorita,,
|
||||||
|
138,Gothitelle,,
|
||||||
|
139,Solosis,,
|
||||||
|
140,Duosion,,
|
||||||
|
141,Reuniclus,,
|
||||||
|
142,Combee,,
|
||||||
|
143,Vespiquen,,
|
||||||
|
144,Emolga,,
|
||||||
|
145,Heracross,,
|
||||||
|
146,Pinsir,,
|
||||||
|
147,Blitzle,,
|
||||||
|
148,Zebstrika,,
|
||||||
|
149,Buizel,,
|
||||||
|
150,Floatzel,,
|
||||||
|
151,Zorua,,
|
||||||
|
152,Zoroark,,
|
||||||
|
153,Ducklett,,
|
||||||
|
154,Swanna,,
|
||||||
|
155,Karrablast,,
|
||||||
|
156,Escavalier,,
|
||||||
|
157,Shelmet,,
|
||||||
|
158,Accelgor,,
|
||||||
|
159,Deerling,,
|
||||||
|
160,Sawsbuck,,
|
||||||
|
161,Foongus,,
|
||||||
|
162,Amoonguss,,
|
||||||
|
163,Castform,,
|
||||||
|
164,Nosepass,,
|
||||||
|
165,Probopass,,
|
||||||
|
166,Aron,,
|
||||||
|
167,Lairon,,
|
||||||
|
168,Aggron,,
|
||||||
|
169,Baltoy,,
|
||||||
|
170,Claydol,,
|
||||||
|
171,Larvesta,,
|
||||||
|
172,Volcarona,,
|
||||||
|
173,Joltik,,
|
||||||
|
174,Galvantula,,
|
||||||
|
175,Ferroseed,,
|
||||||
|
176,Ferrothorn,,
|
||||||
|
177,Tynamo,,
|
||||||
|
178,Eelektrik,,
|
||||||
|
179,Eelektross,,
|
||||||
|
180,Frillish,,
|
||||||
|
181,Jellicent,,
|
||||||
|
182,Alomomola,,
|
||||||
|
183,Axew,,
|
||||||
|
184,Fraxure,,
|
||||||
|
185,Haxorus,,
|
||||||
|
186,Zangoose,,
|
||||||
|
187,Seviper,,
|
||||||
|
188,Elgyem,,
|
||||||
|
189,Beheeyem,,
|
||||||
|
190,Litwick,,
|
||||||
|
191,Lampent,,
|
||||||
|
192,Chandelure,,
|
||||||
|
193,Heatmor,,
|
||||||
|
194,Durant,,
|
||||||
|
195,Cubchoo,,
|
||||||
|
196,Beartic,,
|
||||||
|
197,Cryogonal,,
|
||||||
|
198,Tornadus,,
|
||||||
|
199,Thundurus,,
|
||||||
|
200,Landorus,,
|
||||||
|
201,Skorupi,,
|
||||||
|
202,Drapion,,
|
||||||
|
203,Skarmory,,
|
||||||
|
204,Numel,,
|
||||||
|
205,Camerupt,,
|
||||||
|
206,Spoink,,
|
||||||
|
207,Grumpig,,
|
||||||
|
208,Drifloon,,
|
||||||
|
209,Drifblim,,
|
||||||
|
210,Shuppet,,
|
||||||
|
211,Banette,,
|
||||||
|
212,Wingull,,
|
||||||
|
213,Pelipper,,
|
||||||
|
214,Lunatone,,
|
||||||
|
215,Solrock,,
|
||||||
|
216,Absol,,
|
||||||
|
217,Tangela,,
|
||||||
|
218,Tangrowth,,
|
||||||
|
219,Mienfoo,,
|
||||||
|
220,Mienshao,,
|
||||||
|
221,Gligar,,
|
||||||
|
222,Gliscor,,
|
||||||
|
223,Pawniard,,
|
||||||
|
224,Bisharp,,
|
||||||
|
225,Cobalion,,
|
||||||
|
226,Terrakion,,
|
||||||
|
227,Virizion,,
|
||||||
|
228,Tympole,,
|
||||||
|
229,Palpitoad,,
|
||||||
|
230,Seismitoad,,
|
||||||
|
231,Stunfisk,,
|
||||||
|
232,Shuckle,,
|
||||||
|
233,Mantyke,,
|
||||||
|
234,Mantine,,
|
||||||
|
235,Remoraid,,
|
||||||
|
236,Octillery,,
|
||||||
|
237,Corsola,,
|
||||||
|
238,Staryu,,
|
||||||
|
239,Starmie,,
|
||||||
|
240,Wailmer,,
|
||||||
|
241,Wailord,,
|
||||||
|
242,Lapras,,
|
||||||
|
243,Spheal,,
|
||||||
|
244,Sealeo,,
|
||||||
|
245,Walrein,,
|
||||||
|
246,Swablu,,
|
||||||
|
247,Altaria,,
|
||||||
|
248,Vulpix,,
|
||||||
|
249,Ninetales,,
|
||||||
|
250,Bronzor,,
|
||||||
|
251,Bronzong,,
|
||||||
|
252,Sneasel,,
|
||||||
|
253,Weavile,,
|
||||||
|
254,Delibird,,
|
||||||
|
255,Vanillite,,
|
||||||
|
256,Vanillish,,
|
||||||
|
257,Vanilluxe,,
|
||||||
|
258,Swinub,,
|
||||||
|
259,Piloswine,,
|
||||||
|
260,Mamoswine,,
|
||||||
|
261,Ditto,,
|
||||||
|
262,Beldum,,
|
||||||
|
263,Metang,,
|
||||||
|
264,Metagross,,
|
||||||
|
265,Seel,,
|
||||||
|
266,Dewgong,,
|
||||||
|
267,Throh,,
|
||||||
|
268,Sawk,,
|
||||||
|
269,Bouffalant,,
|
||||||
|
270,Druddigon,,
|
||||||
|
271,Golett,,
|
||||||
|
272,Golurk,,
|
||||||
|
273,Deino,,
|
||||||
|
274,Zweilous,,
|
||||||
|
275,Hydreigon,,
|
||||||
|
276,Slakoth,,
|
||||||
|
277,Vigoroth,,
|
||||||
|
278,Slaking,,
|
||||||
|
279,Corphish,,
|
||||||
|
280,Crawdaunt,,
|
||||||
|
281,Igglybuff,,
|
||||||
|
282,Jigglypuff,,
|
||||||
|
283,Wigglytuff,,
|
||||||
|
284,Lickitung,,
|
||||||
|
285,Lickilicky,,
|
||||||
|
286,Yanma,,
|
||||||
|
287,Yanmega,,
|
||||||
|
288,Tropius,,
|
||||||
|
289,Carnivine,,
|
||||||
|
290,Croagunk,,
|
||||||
|
291,Toxicroak,,
|
||||||
|
292,Larvitar,,
|
||||||
|
293,Pupitar,,
|
||||||
|
294,Tyranitar,,
|
||||||
|
295,Reshiram,,
|
||||||
|
296,Zekrom,,
|
||||||
|
297,Kyurem,,
|
||||||
|
298,Keldeo,,
|
||||||
|
299,Meloetta,,
|
||||||
|
300,Genesect,,
|
||||||
|
@@ -0,0 +1,157 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
0,Victini,,
|
||||||
|
1,Snivy,,
|
||||||
|
2,Servine,,
|
||||||
|
3,Serperior,,
|
||||||
|
4,Tepig,,
|
||||||
|
5,Pignite,,
|
||||||
|
6,Emboar,,
|
||||||
|
7,Oshawott,,
|
||||||
|
8,Dewott,,
|
||||||
|
9,Samurott,,
|
||||||
|
10,Patrat,,
|
||||||
|
11,Watchog,,
|
||||||
|
12,Lillipup,,
|
||||||
|
13,Herdier,,
|
||||||
|
14,Stoutland,,
|
||||||
|
15,Purrloin,,
|
||||||
|
16,Liepard,,
|
||||||
|
17,Pansage,,
|
||||||
|
18,Simisage,,
|
||||||
|
19,Pansear,,
|
||||||
|
20,Simisear,,
|
||||||
|
21,Panpour,,
|
||||||
|
22,Simipour,,
|
||||||
|
23,Munna,,
|
||||||
|
24,Musharna,,
|
||||||
|
25,Pidove,,
|
||||||
|
26,Tranquill,,
|
||||||
|
27,Unfezant,,
|
||||||
|
28,Blitzle,,
|
||||||
|
29,Zebstrika,,
|
||||||
|
30,Roggenrola,,
|
||||||
|
31,Boldore,,
|
||||||
|
32,Gigalith,,
|
||||||
|
33,Woobat,,
|
||||||
|
34,Swoobat,,
|
||||||
|
35,Drilbur,,
|
||||||
|
36,Excadrill,,
|
||||||
|
37,Audino,,
|
||||||
|
38,Timburr,,
|
||||||
|
39,Gurdurr,,
|
||||||
|
40,Conkeldurr,,
|
||||||
|
41,Tympole,,
|
||||||
|
42,Palpitoad,,
|
||||||
|
43,Seismitoad,,
|
||||||
|
44,Throh,,
|
||||||
|
45,Sawk,,
|
||||||
|
46,Sewaddle,,
|
||||||
|
47,Swadloon,,
|
||||||
|
48,Leavanny,,
|
||||||
|
49,Venipede,,
|
||||||
|
50,Whirlipede,,
|
||||||
|
51,Scolipede,,
|
||||||
|
52,Cottonee,,
|
||||||
|
53,Whimsicott,,
|
||||||
|
54,Petilil,,
|
||||||
|
55,Lilligant,,
|
||||||
|
56,Basculin,,
|
||||||
|
57,Sandile,,
|
||||||
|
58,Krokorok,,
|
||||||
|
59,Krookodile,,
|
||||||
|
60,Darumaka,,
|
||||||
|
61,Darmanitan,,
|
||||||
|
62,Maractus,,
|
||||||
|
63,Dwebble,,
|
||||||
|
64,Crustle,,
|
||||||
|
65,Scraggy,,
|
||||||
|
66,Scrafty,,
|
||||||
|
67,Sigilyph,,
|
||||||
|
68,Yamask,,
|
||||||
|
69,Cofagrigus,,
|
||||||
|
70,Tirtouga,,
|
||||||
|
71,Carracosta,,
|
||||||
|
72,Archen,,
|
||||||
|
73,Archeops,,
|
||||||
|
74,Trubbish,,
|
||||||
|
75,Garbodor,,
|
||||||
|
76,Zorua,,
|
||||||
|
77,Zoroark,,
|
||||||
|
78,Minccino,,
|
||||||
|
79,Cinccino,,
|
||||||
|
80,Gothita,,
|
||||||
|
81,Gothorita,,
|
||||||
|
82,Gothitelle,,
|
||||||
|
83,Solosis,,
|
||||||
|
84,Duosion,,
|
||||||
|
85,Reuniclus,,
|
||||||
|
86,Ducklett,,
|
||||||
|
87,Swanna,,
|
||||||
|
88,Vanillite,,
|
||||||
|
89,Vanillish,,
|
||||||
|
90,Vanilluxe,,
|
||||||
|
91,Deerling,,
|
||||||
|
92,Sawsbuck,,
|
||||||
|
93,Emolga,,
|
||||||
|
94,Karrablast,,
|
||||||
|
95,Escavalier,,
|
||||||
|
96,Foongus,,
|
||||||
|
97,Amoonguss,,
|
||||||
|
98,Frillish,,
|
||||||
|
99,Jellicent,,
|
||||||
|
100,Alomomola,,
|
||||||
|
101,Joltik,,
|
||||||
|
102,Galvantula,,
|
||||||
|
103,Ferroseed,,
|
||||||
|
104,Ferrothorn,,
|
||||||
|
105,Klink,,
|
||||||
|
106,Klang,,
|
||||||
|
107,Klinklang,,
|
||||||
|
108,Tynamo,,
|
||||||
|
109,Eelektrik,,
|
||||||
|
110,Eelektross,,
|
||||||
|
111,Elgyem,,
|
||||||
|
112,Beheeyem,,
|
||||||
|
113,Litwick,,
|
||||||
|
114,Lampent,,
|
||||||
|
115,Chandelure,,
|
||||||
|
116,Axew,,
|
||||||
|
117,Fraxure,,
|
||||||
|
118,Haxorus,,
|
||||||
|
119,Cubchoo,,
|
||||||
|
120,Beartic,,
|
||||||
|
121,Cryogonal,,
|
||||||
|
122,Shelmet,,
|
||||||
|
123,Accelgor,,
|
||||||
|
124,Stunfisk,,
|
||||||
|
125,Mienfoo,,
|
||||||
|
126,Mienshao,,
|
||||||
|
127,Druddigon,,
|
||||||
|
128,Golett,,
|
||||||
|
129,Golurk,,
|
||||||
|
130,Pawniard,,
|
||||||
|
131,Bisharp,,
|
||||||
|
132,Bouffalant,,
|
||||||
|
133,Rufflet,,
|
||||||
|
134,Braviary,,
|
||||||
|
135,Vullaby,,
|
||||||
|
136,Mandibuzz,,
|
||||||
|
137,Heatmor,,
|
||||||
|
138,Durant,,
|
||||||
|
139,Deino,,
|
||||||
|
140,Zweilous,,
|
||||||
|
141,Hydreigon,,
|
||||||
|
142,Larvesta,,
|
||||||
|
143,Volcarona,,
|
||||||
|
144,Cobalion,,
|
||||||
|
145,Terrakion,,
|
||||||
|
146,Virizion,,
|
||||||
|
147,Tornadus,,
|
||||||
|
148,Thundurus,,
|
||||||
|
149,Reshiram,,
|
||||||
|
150,Zekrom,,
|
||||||
|
151,Landorus,,
|
||||||
|
152,Kyurem,,
|
||||||
|
153,Keldeo,,
|
||||||
|
154,Meloetta,,
|
||||||
|
155,Genesect,,
|
||||||
|
@@ -0,0 +1,152 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Turtwig,,
|
||||||
|
2,Grotle,,
|
||||||
|
3,Torterra,,
|
||||||
|
4,Chimchar,,
|
||||||
|
5,Monferno,,
|
||||||
|
6,Infernape,,
|
||||||
|
7,Piplup,,
|
||||||
|
8,Prinplup,,
|
||||||
|
9,Empoleon,,
|
||||||
|
10,Starly,,
|
||||||
|
11,Staravia,,
|
||||||
|
12,Staraptor,,
|
||||||
|
13,Bidoof,,
|
||||||
|
14,Bibarel,,
|
||||||
|
15,Kricketot,,
|
||||||
|
16,Kricketune,,
|
||||||
|
17,Shinx,,
|
||||||
|
18,Luxio,,
|
||||||
|
19,Luxray,,
|
||||||
|
20,Abra,,
|
||||||
|
21,Kadabra,,
|
||||||
|
22,Alakazam,,
|
||||||
|
23,Magikarp,,
|
||||||
|
24,Gyarados,,
|
||||||
|
25,Budew,,
|
||||||
|
26,Roselia,,
|
||||||
|
27,Roserade,,
|
||||||
|
28,Zubat,,
|
||||||
|
29,Golbat,,
|
||||||
|
30,Crobat,,
|
||||||
|
31,Geodude,,
|
||||||
|
32,Graveler,,
|
||||||
|
33,Golem,,
|
||||||
|
34,Onix,,
|
||||||
|
35,Steelix,,
|
||||||
|
36,Cranidos,,
|
||||||
|
37,Rampardos,,
|
||||||
|
38,Shieldon,,
|
||||||
|
39,Bastiodon,,
|
||||||
|
40,Machop,,
|
||||||
|
41,Machoke,,
|
||||||
|
42,Machamp,,
|
||||||
|
43,Psyduck,,
|
||||||
|
44,Golduck,,
|
||||||
|
45,Burmy,,
|
||||||
|
46,Wormadam,,
|
||||||
|
47,Mothim,,
|
||||||
|
48,Wurmple,,
|
||||||
|
49,Silcoon,,
|
||||||
|
50,Beautifly,,
|
||||||
|
51,Cascoon,,
|
||||||
|
52,Dustox,,
|
||||||
|
53,Combee,,
|
||||||
|
54,Vespiquen,,
|
||||||
|
55,Pachirisu,,
|
||||||
|
56,Buizel,,
|
||||||
|
57,Floatzel,,
|
||||||
|
58,Cherubi,,
|
||||||
|
59,Cherrim,,
|
||||||
|
60,Shellos,,
|
||||||
|
61,Gastrodon,,
|
||||||
|
62,Heracross,,
|
||||||
|
63,Aipom,,
|
||||||
|
64,Ambipom,,
|
||||||
|
65,Drifloon,,
|
||||||
|
66,Drifblim,,
|
||||||
|
67,Buneary,,
|
||||||
|
68,Lopunny,,
|
||||||
|
69,Gastly,,
|
||||||
|
70,Haunter,,
|
||||||
|
71,Gengar,,
|
||||||
|
72,Misdreavus,,
|
||||||
|
73,Mismagius,,
|
||||||
|
74,Murkrow,,
|
||||||
|
75,Honchkrow,,
|
||||||
|
76,Glameow,,
|
||||||
|
77,Purugly,,
|
||||||
|
78,Goldeen,,
|
||||||
|
79,Seaking,,
|
||||||
|
80,Barboach,,
|
||||||
|
81,Whiscash,,
|
||||||
|
82,Chingling,,
|
||||||
|
83,Chimecho,,
|
||||||
|
84,Stunky,,
|
||||||
|
85,Skuntank,,
|
||||||
|
86,Meditite,,
|
||||||
|
87,Medicham,,
|
||||||
|
88,Bronzor,,
|
||||||
|
89,Bronzong,,
|
||||||
|
90,Ponyta,,
|
||||||
|
91,Rapidash,,
|
||||||
|
92,Bonsly,,
|
||||||
|
93,Sudowoodo,,
|
||||||
|
94,Mime Jr.,,
|
||||||
|
95,Mr. Mime,,
|
||||||
|
96,Happiny,,
|
||||||
|
97,Chansey,,
|
||||||
|
98,Blissey,,
|
||||||
|
99,Cleffa,,
|
||||||
|
100,Clefairy,,
|
||||||
|
101,Clefable,,
|
||||||
|
102,Chatot,,
|
||||||
|
103,Pichu,,
|
||||||
|
104,Pikachu,,
|
||||||
|
105,Raichu,,
|
||||||
|
106,Hoothoot,,
|
||||||
|
107,Noctowl,,
|
||||||
|
108,Spiritomb,,
|
||||||
|
109,Gible,,
|
||||||
|
110,Gabite,,
|
||||||
|
111,Garchomp,,
|
||||||
|
112,Munchlax,,
|
||||||
|
113,Snorlax,,
|
||||||
|
114,Unown,,
|
||||||
|
115,Riolu,,
|
||||||
|
116,Lucario,,
|
||||||
|
117,Wooper,,
|
||||||
|
118,Quagsire,,
|
||||||
|
119,Wingull,,
|
||||||
|
120,Pelipper,,
|
||||||
|
121,Girafarig,,
|
||||||
|
122,Hippopotas,,
|
||||||
|
123,Hippowdon,,
|
||||||
|
124,Azurill,,
|
||||||
|
125,Marill,,
|
||||||
|
126,Azumarill,,
|
||||||
|
127,Skorupi,,
|
||||||
|
128,Drapion,,
|
||||||
|
129,Croagunk,,
|
||||||
|
130,Toxicroak,,
|
||||||
|
131,Carnivine,,
|
||||||
|
132,Remoraid,,
|
||||||
|
133,Octillery,,
|
||||||
|
134,Finneon,,
|
||||||
|
135,Lumineon,,
|
||||||
|
136,Tentacool,,
|
||||||
|
137,Tentacruel,,
|
||||||
|
138,Feebas,,
|
||||||
|
139,Milotic,,
|
||||||
|
140,Mantyke,,
|
||||||
|
141,Mantine,,
|
||||||
|
142,Snover,,
|
||||||
|
143,Abomasnow,,
|
||||||
|
144,Sneasel,,
|
||||||
|
145,Weavile,,
|
||||||
|
146,Uxie,,
|
||||||
|
147,Mesprit,,
|
||||||
|
148,Azelf,,
|
||||||
|
149,Dialga,,
|
||||||
|
150,Palkia,,
|
||||||
|
151,Manaphy,,
|
||||||
|
@@ -0,0 +1,152 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Turtwig,,
|
||||||
|
2,Grotle,,
|
||||||
|
3,Torterra,,
|
||||||
|
4,Chimchar,,
|
||||||
|
5,Monferno,,
|
||||||
|
6,Infernape,,
|
||||||
|
7,Piplup,,
|
||||||
|
8,Prinplup,,
|
||||||
|
9,Empoleon,,
|
||||||
|
10,Starly,,
|
||||||
|
11,Staravia,,
|
||||||
|
12,Staraptor,,
|
||||||
|
13,Bidoof,,
|
||||||
|
14,Bibarel,,
|
||||||
|
15,Kricketot,,
|
||||||
|
16,Kricketune,,
|
||||||
|
17,Shinx,,
|
||||||
|
18,Luxio,,
|
||||||
|
19,Luxray,,
|
||||||
|
20,Abra,,
|
||||||
|
21,Kadabra,,
|
||||||
|
22,Alakazam,,
|
||||||
|
23,Magikarp,,
|
||||||
|
24,Gyarados,,
|
||||||
|
25,Budew,,
|
||||||
|
26,Roselia,,
|
||||||
|
27,Roserade,,
|
||||||
|
28,Zubat,,
|
||||||
|
29,Golbat,,
|
||||||
|
30,Crobat,,
|
||||||
|
31,Geodude,,
|
||||||
|
32,Graveler,,
|
||||||
|
33,Golem,,
|
||||||
|
34,Onix,,
|
||||||
|
35,Steelix,,
|
||||||
|
36,Cranidos,,
|
||||||
|
37,Rampardos,,
|
||||||
|
38,Shieldon,,
|
||||||
|
39,Bastiodon,,
|
||||||
|
40,Machop,,
|
||||||
|
41,Machoke,,
|
||||||
|
42,Machamp,,
|
||||||
|
43,Psyduck,,
|
||||||
|
44,Golduck,,
|
||||||
|
45,Burmy,,
|
||||||
|
46,Wormadam,,
|
||||||
|
47,Mothim,,
|
||||||
|
48,Wurmple,,
|
||||||
|
49,Silcoon,,
|
||||||
|
50,Beautifly,,
|
||||||
|
51,Cascoon,,
|
||||||
|
52,Dustox,,
|
||||||
|
53,Combee,,
|
||||||
|
54,Vespiquen,,
|
||||||
|
55,Pachirisu,,
|
||||||
|
56,Buizel,,
|
||||||
|
57,Floatzel,,
|
||||||
|
58,Cherubi,,
|
||||||
|
59,Cherrim,,
|
||||||
|
60,Shellos,,
|
||||||
|
61,Gastrodon,,
|
||||||
|
62,Heracross,,
|
||||||
|
63,Aipom,,
|
||||||
|
64,Ambipom,,
|
||||||
|
65,Drifloon,,
|
||||||
|
66,Drifblim,,
|
||||||
|
67,Buneary,,
|
||||||
|
68,Lopunny,,
|
||||||
|
69,Gastly,,
|
||||||
|
70,Haunter,,
|
||||||
|
71,Gengar,,
|
||||||
|
72,Misdreavus,,
|
||||||
|
73,Mismagius,,
|
||||||
|
74,Murkrow,,
|
||||||
|
75,Honchkrow,,
|
||||||
|
76,Glameow,,
|
||||||
|
77,Purugly,,
|
||||||
|
78,Goldeen,,
|
||||||
|
79,Seaking,,
|
||||||
|
80,Barboach,,
|
||||||
|
81,Whiscash,,
|
||||||
|
82,Chingling,,
|
||||||
|
83,Chimecho,,
|
||||||
|
84,Stunky,,
|
||||||
|
85,Skuntank,,
|
||||||
|
86,Meditite,,
|
||||||
|
87,Medicham,,
|
||||||
|
88,Bronzor,,
|
||||||
|
89,Bronzong,,
|
||||||
|
90,Ponyta,,
|
||||||
|
91,Rapidash,,
|
||||||
|
92,Bonsly,,
|
||||||
|
93,Sudowoodo,,
|
||||||
|
94,Mime Jr.,,
|
||||||
|
95,Mr. Mime,,
|
||||||
|
96,Happiny,,
|
||||||
|
97,Chansey,,
|
||||||
|
98,Blissey,,
|
||||||
|
99,Cleffa,,
|
||||||
|
100,Clefairy,,
|
||||||
|
101,Clefable,,
|
||||||
|
102,Chatot,,
|
||||||
|
103,Pichu,,
|
||||||
|
104,Pikachu,,
|
||||||
|
105,Raichu,,
|
||||||
|
106,Hoothoot,,
|
||||||
|
107,Noctowl,,
|
||||||
|
108,Spiritomb,,
|
||||||
|
109,Gible,,
|
||||||
|
110,Gabite,,
|
||||||
|
111,Garchomp,,
|
||||||
|
112,Munchlax,,
|
||||||
|
113,Snorlax,,
|
||||||
|
114,Unown,,
|
||||||
|
115,Riolu,,
|
||||||
|
116,Lucario,,
|
||||||
|
117,Wooper,,
|
||||||
|
118,Quagsire,,
|
||||||
|
119,Wingull,,
|
||||||
|
120,Pelipper,,
|
||||||
|
121,Girafarig,,
|
||||||
|
122,Hippopotas,,
|
||||||
|
123,Hippowdon,,
|
||||||
|
124,Azurill,,
|
||||||
|
125,Marill,,
|
||||||
|
126,Azumarill,,
|
||||||
|
127,Skorupi,,
|
||||||
|
128,Drapion,,
|
||||||
|
129,Croagunk,,
|
||||||
|
130,Toxicroak,,
|
||||||
|
131,Carnivine,,
|
||||||
|
132,Remoraid,,
|
||||||
|
133,Octillery,,
|
||||||
|
134,Finneon,,
|
||||||
|
135,Lumineon,,
|
||||||
|
136,Tentacool,,
|
||||||
|
137,Tentacruel,,
|
||||||
|
138,Feebas,,
|
||||||
|
139,Milotic,,
|
||||||
|
140,Mantyke,,
|
||||||
|
141,Mantine,,
|
||||||
|
142,Snover,,
|
||||||
|
143,Abomasnow,,
|
||||||
|
144,Sneasel,,
|
||||||
|
145,Weavile,,
|
||||||
|
146,Uxie,,
|
||||||
|
147,Mesprit,,
|
||||||
|
148,Azelf,,
|
||||||
|
149,Dialga,,
|
||||||
|
150,Palkia,,
|
||||||
|
151,Manaphy,,
|
||||||
|
@@ -0,0 +1,152 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Bulbasaur,,
|
||||||
|
2,Ivysaur,,
|
||||||
|
3,Venusaur,,
|
||||||
|
4,Charmander,,
|
||||||
|
5,Charmeleon,,
|
||||||
|
6,Charizard,,
|
||||||
|
7,Squirtle,,
|
||||||
|
8,Wartortle,,
|
||||||
|
9,Blastoise,,
|
||||||
|
10,Caterpie,,
|
||||||
|
11,Metapod,,
|
||||||
|
12,Butterfree,,
|
||||||
|
13,Weedle,,
|
||||||
|
14,Kakuna,,
|
||||||
|
15,Beedrill,,
|
||||||
|
16,Pidgey,,
|
||||||
|
17,Pidgeotto,,
|
||||||
|
18,Pidgeot,,
|
||||||
|
19,Rattata,,
|
||||||
|
20,Raticate,,
|
||||||
|
21,Spearow,,
|
||||||
|
22,Fearow,,
|
||||||
|
23,Ekans,,
|
||||||
|
24,Arbok,,
|
||||||
|
25,Pikachu,,
|
||||||
|
26,Raichu,,
|
||||||
|
27,Sandshrew,,
|
||||||
|
28,Sandslash,,
|
||||||
|
29,Nidoran♀,,
|
||||||
|
30,Nidorina,,
|
||||||
|
31,Nidoqueen,,
|
||||||
|
32,Nidoran♂,,
|
||||||
|
33,Nidorino,,
|
||||||
|
34,Nidoking,,
|
||||||
|
35,Clefairy,,
|
||||||
|
36,Clefable,,
|
||||||
|
37,Vulpix,,
|
||||||
|
38,Ninetales,,
|
||||||
|
39,Jigglypuff,,
|
||||||
|
40,Wigglytuff,,
|
||||||
|
41,Zubat,,
|
||||||
|
42,Golbat,,
|
||||||
|
43,Oddish,,
|
||||||
|
44,Gloom,,
|
||||||
|
45,Vileplume,,
|
||||||
|
46,Paras,,
|
||||||
|
47,Parasect,,
|
||||||
|
48,Venonat,,
|
||||||
|
49,Venomoth,,
|
||||||
|
50,Diglett,,
|
||||||
|
51,Dugtrio,,
|
||||||
|
52,Meowth,,
|
||||||
|
53,Persian,,
|
||||||
|
54,Psyduck,,
|
||||||
|
55,Golduck,,
|
||||||
|
56,Mankey,,
|
||||||
|
57,Primeape,,
|
||||||
|
58,Growlithe,,
|
||||||
|
59,Arcanine,,
|
||||||
|
60,Poliwag,,
|
||||||
|
61,Poliwhirl,,
|
||||||
|
62,Poliwrath,,
|
||||||
|
63,Abra,,
|
||||||
|
64,Kadabra,,
|
||||||
|
65,Alakazam,,
|
||||||
|
66,Machop,,
|
||||||
|
67,Machoke,,
|
||||||
|
68,Machamp,,
|
||||||
|
69,Bellsprout,,
|
||||||
|
70,Weepinbell,,
|
||||||
|
71,Victreebel,,
|
||||||
|
72,Tentacool,,
|
||||||
|
73,Tentacruel,,
|
||||||
|
74,Geodude,,
|
||||||
|
75,Graveler,,
|
||||||
|
76,Golem,,
|
||||||
|
77,Ponyta,,
|
||||||
|
78,Rapidash,,
|
||||||
|
79,Slowpoke,,
|
||||||
|
80,Slowbro,,
|
||||||
|
81,Magnemite,,
|
||||||
|
82,Magneton,,
|
||||||
|
83,Farfetch’d,,
|
||||||
|
84,Doduo,,
|
||||||
|
85,Dodrio,,
|
||||||
|
86,Seel,,
|
||||||
|
87,Dewgong,,
|
||||||
|
88,Grimer,,
|
||||||
|
89,Muk,,
|
||||||
|
90,Shellder,,
|
||||||
|
91,Cloyster,,
|
||||||
|
92,Gastly,,
|
||||||
|
93,Haunter,,
|
||||||
|
94,Gengar,,
|
||||||
|
95,Onix,,
|
||||||
|
96,Drowzee,,
|
||||||
|
97,Hypno,,
|
||||||
|
98,Krabby,,
|
||||||
|
99,Kingler,,
|
||||||
|
100,Voltorb,,
|
||||||
|
101,Electrode,,
|
||||||
|
102,Exeggcute,,
|
||||||
|
103,Exeggutor,,
|
||||||
|
104,Cubone,,
|
||||||
|
105,Marowak,,
|
||||||
|
106,Hitmonlee,,
|
||||||
|
107,Hitmonchan,,
|
||||||
|
108,Lickitung,,
|
||||||
|
109,Koffing,,
|
||||||
|
110,Weezing,,
|
||||||
|
111,Rhyhorn,,
|
||||||
|
112,Rhydon,,
|
||||||
|
113,Chansey,,
|
||||||
|
114,Tangela,,
|
||||||
|
115,Kangaskhan,,
|
||||||
|
116,Horsea,,
|
||||||
|
117,Seadra,,
|
||||||
|
118,Goldeen,,
|
||||||
|
119,Seaking,,
|
||||||
|
120,Staryu,,
|
||||||
|
121,Starmie,,
|
||||||
|
122,Mr. Mime,,
|
||||||
|
123,Scyther,,
|
||||||
|
124,Jynx,,
|
||||||
|
125,Electabuzz,,
|
||||||
|
126,Magmar,,
|
||||||
|
127,Pinsir,,
|
||||||
|
128,Tauros,,
|
||||||
|
129,Magikarp,,
|
||||||
|
130,Gyarados,,
|
||||||
|
131,Lapras,,
|
||||||
|
132,Ditto,,
|
||||||
|
133,Eevee,,
|
||||||
|
134,Vaporeon,,
|
||||||
|
135,Jolteon,,
|
||||||
|
136,Flareon,,
|
||||||
|
137,Porygon,,
|
||||||
|
138,Omanyte,,
|
||||||
|
139,Omastar,,
|
||||||
|
140,Kabuto,,
|
||||||
|
141,Kabutops,,
|
||||||
|
142,Aerodactyl,,
|
||||||
|
143,Snorlax,,
|
||||||
|
144,Articuno,,
|
||||||
|
145,Zapdos,,
|
||||||
|
146,Moltres,,
|
||||||
|
147,Dratini,,
|
||||||
|
148,Dragonair,,
|
||||||
|
149,Dragonite,,
|
||||||
|
150,Mewtwo,,
|
||||||
|
151,Mew,,
|
||||||
|
@@ -0,0 +1,252 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Chikorita,,
|
||||||
|
2,Bayleef,,
|
||||||
|
3,Meganium,,
|
||||||
|
4,Cyndaquil,,
|
||||||
|
5,Quilava,,
|
||||||
|
6,Typhlosion,,
|
||||||
|
7,Totodile,,
|
||||||
|
8,Croconaw,,
|
||||||
|
9,Feraligatr,,
|
||||||
|
10,Pidgey,,
|
||||||
|
11,Pidgeotto,,
|
||||||
|
12,Pidgeot,,
|
||||||
|
13,Spearow,,
|
||||||
|
14,Fearow,,
|
||||||
|
15,Hoothoot,,
|
||||||
|
16,Noctowl,,
|
||||||
|
17,Rattata,,
|
||||||
|
18,Raticate,,
|
||||||
|
19,Sentret,,
|
||||||
|
20,Furret,,
|
||||||
|
21,Pichu,,
|
||||||
|
22,Pikachu,,
|
||||||
|
23,Raichu,,
|
||||||
|
24,Caterpie,,
|
||||||
|
25,Metapod,,
|
||||||
|
26,Butterfree,,
|
||||||
|
27,Weedle,,
|
||||||
|
28,Kakuna,,
|
||||||
|
29,Beedrill,,
|
||||||
|
30,Ledyba,,
|
||||||
|
31,Ledian,,
|
||||||
|
32,Spinarak,,
|
||||||
|
33,Ariados,,
|
||||||
|
34,Geodude,,
|
||||||
|
35,Graveler,,
|
||||||
|
36,Golem,,
|
||||||
|
37,Zubat,,
|
||||||
|
38,Golbat,,
|
||||||
|
39,Crobat,,
|
||||||
|
40,Cleffa,,
|
||||||
|
41,Clefairy,,
|
||||||
|
42,Clefable,,
|
||||||
|
43,Igglybuff,,
|
||||||
|
44,Jigglypuff,,
|
||||||
|
45,Wigglytuff,,
|
||||||
|
46,Togepi,,
|
||||||
|
47,Togetic,,
|
||||||
|
48,Sandshrew,,
|
||||||
|
49,Sandslash,,
|
||||||
|
50,Ekans,,
|
||||||
|
51,Arbok,,
|
||||||
|
52,Dunsparce,,
|
||||||
|
53,Mareep,,
|
||||||
|
54,Flaaffy,,
|
||||||
|
55,Ampharos,,
|
||||||
|
56,Wooper,,
|
||||||
|
57,Quagsire,,
|
||||||
|
58,Gastly,,
|
||||||
|
59,Haunter,,
|
||||||
|
60,Gengar,,
|
||||||
|
61,Unown,,
|
||||||
|
62,Onix,,
|
||||||
|
63,Steelix,,
|
||||||
|
64,Bellsprout,,
|
||||||
|
65,Weepinbell,,
|
||||||
|
66,Victreebel,,
|
||||||
|
67,Hoppip,,
|
||||||
|
68,Skiploom,,
|
||||||
|
69,Jumpluff,,
|
||||||
|
70,Paras,,
|
||||||
|
71,Parasect,,
|
||||||
|
72,Poliwag,,
|
||||||
|
73,Poliwhirl,,
|
||||||
|
74,Poliwrath,,
|
||||||
|
75,Politoed,,
|
||||||
|
76,Magikarp,,
|
||||||
|
77,Gyarados,,
|
||||||
|
78,Goldeen,,
|
||||||
|
79,Seaking,,
|
||||||
|
80,Slowpoke,,
|
||||||
|
81,Slowbro,,
|
||||||
|
82,Slowking,,
|
||||||
|
83,Oddish,,
|
||||||
|
84,Gloom,,
|
||||||
|
85,Vileplume,,
|
||||||
|
86,Bellossom,,
|
||||||
|
87,Drowzee,,
|
||||||
|
88,Hypno,,
|
||||||
|
89,Abra,,
|
||||||
|
90,Kadabra,,
|
||||||
|
91,Alakazam,,
|
||||||
|
92,Ditto,,
|
||||||
|
93,Pineco,,
|
||||||
|
94,Forretress,,
|
||||||
|
95,Nidoran♀,,
|
||||||
|
96,Nidorina,,
|
||||||
|
97,Nidoqueen,,
|
||||||
|
98,Nidoran♂,,
|
||||||
|
99,Nidorino,,
|
||||||
|
100,Nidoking,,
|
||||||
|
101,Yanma,,
|
||||||
|
102,Sunkern,,
|
||||||
|
103,Sunflora,,
|
||||||
|
104,Exeggcute,,
|
||||||
|
105,Exeggutor,,
|
||||||
|
106,Sudowoodo,,
|
||||||
|
107,Wobbuffet,,
|
||||||
|
108,Venonat,,
|
||||||
|
109,Venomoth,,
|
||||||
|
110,Scyther,,
|
||||||
|
111,Scizor,,
|
||||||
|
112,Pinsir,,
|
||||||
|
113,Heracross,,
|
||||||
|
114,Koffing,,
|
||||||
|
115,Weezing,,
|
||||||
|
116,Grimer,,
|
||||||
|
117,Muk,,
|
||||||
|
118,Magnemite,,
|
||||||
|
119,Magneton,,
|
||||||
|
120,Voltorb,,
|
||||||
|
121,Electrode,,
|
||||||
|
122,Aipom,,
|
||||||
|
123,Snubbull,,
|
||||||
|
124,Granbull,,
|
||||||
|
125,Vulpix,,
|
||||||
|
126,Ninetales,,
|
||||||
|
127,Growlithe,,
|
||||||
|
128,Arcanine,,
|
||||||
|
129,Stantler,,
|
||||||
|
130,Marill,,
|
||||||
|
131,Azumarill,,
|
||||||
|
132,Diglett,,
|
||||||
|
133,Dugtrio,,
|
||||||
|
134,Mankey,,
|
||||||
|
135,Primeape,,
|
||||||
|
136,Meowth,,
|
||||||
|
137,Persian,,
|
||||||
|
138,Psyduck,,
|
||||||
|
139,Golduck,,
|
||||||
|
140,Machop,,
|
||||||
|
141,Machoke,,
|
||||||
|
142,Machamp,,
|
||||||
|
143,Tyrogue,,
|
||||||
|
144,Hitmonlee,,
|
||||||
|
145,Hitmonchan,,
|
||||||
|
146,Hitmontop,,
|
||||||
|
147,Girafarig,,
|
||||||
|
148,Tauros,,
|
||||||
|
149,Miltank,,
|
||||||
|
150,Magby,,
|
||||||
|
151,Magmar,,
|
||||||
|
152,Smoochum,,
|
||||||
|
153,Jynx,,
|
||||||
|
154,Elekid,,
|
||||||
|
155,Electabuzz,,
|
||||||
|
156,Mr. Mime,,
|
||||||
|
157,Smeargle,,
|
||||||
|
158,Farfetch’d,,
|
||||||
|
159,Natu,,
|
||||||
|
160,Xatu,,
|
||||||
|
161,Qwilfish,,
|
||||||
|
162,Tentacool,,
|
||||||
|
163,Tentacruel,,
|
||||||
|
164,Krabby,,
|
||||||
|
165,Kingler,,
|
||||||
|
166,Shuckle,,
|
||||||
|
167,Staryu,,
|
||||||
|
168,Starmie,,
|
||||||
|
169,Shellder,,
|
||||||
|
170,Cloyster,,
|
||||||
|
171,Corsola,,
|
||||||
|
172,Remoraid,,
|
||||||
|
173,Octillery,,
|
||||||
|
174,Chinchou,,
|
||||||
|
175,Lanturn,,
|
||||||
|
176,Seel,,
|
||||||
|
177,Dewgong,,
|
||||||
|
178,Lickitung,,
|
||||||
|
179,Tangela,,
|
||||||
|
180,Eevee,,
|
||||||
|
181,Vaporeon,,
|
||||||
|
182,Jolteon,,
|
||||||
|
183,Flareon,,
|
||||||
|
184,Espeon,,
|
||||||
|
185,Umbreon,,
|
||||||
|
186,Horsea,,
|
||||||
|
187,Seadra,,
|
||||||
|
188,Kingdra,,
|
||||||
|
189,Gligar,,
|
||||||
|
190,Delibird,,
|
||||||
|
191,Swinub,,
|
||||||
|
192,Piloswine,,
|
||||||
|
193,Teddiursa,,
|
||||||
|
194,Ursaring,,
|
||||||
|
195,Phanpy,,
|
||||||
|
196,Donphan,,
|
||||||
|
197,Mantine,,
|
||||||
|
198,Skarmory,,
|
||||||
|
199,Doduo,,
|
||||||
|
200,Dodrio,,
|
||||||
|
201,Ponyta,,
|
||||||
|
202,Rapidash,,
|
||||||
|
203,Cubone,,
|
||||||
|
204,Marowak,,
|
||||||
|
205,Kangaskhan,,
|
||||||
|
206,Rhyhorn,,
|
||||||
|
207,Rhydon,,
|
||||||
|
208,Murkrow,,
|
||||||
|
209,Houndour,,
|
||||||
|
210,Houndoom,,
|
||||||
|
211,Slugma,,
|
||||||
|
212,Magcargo,,
|
||||||
|
213,Sneasel,,
|
||||||
|
214,Misdreavus,,
|
||||||
|
215,Porygon,,
|
||||||
|
216,Porygon2,,
|
||||||
|
217,Chansey,,
|
||||||
|
218,Blissey,,
|
||||||
|
219,Lapras,,
|
||||||
|
220,Omanyte,,
|
||||||
|
221,Omastar,,
|
||||||
|
222,Kabuto,,
|
||||||
|
223,Kabutops,,
|
||||||
|
224,Aerodactyl,,
|
||||||
|
225,Snorlax,,
|
||||||
|
226,Bulbasaur,,
|
||||||
|
227,Ivysaur,,
|
||||||
|
228,Venusaur,,
|
||||||
|
229,Charmander,,
|
||||||
|
230,Charmeleon,,
|
||||||
|
231,Charizard,,
|
||||||
|
232,Squirtle,,
|
||||||
|
233,Wartortle,,
|
||||||
|
234,Blastoise,,
|
||||||
|
235,Articuno,,
|
||||||
|
236,Zapdos,,
|
||||||
|
237,Moltres,,
|
||||||
|
238,Raikou,,
|
||||||
|
239,Entei,,
|
||||||
|
240,Suicune,,
|
||||||
|
241,Dratini,,
|
||||||
|
242,Dragonair,,
|
||||||
|
243,Dragonite,,
|
||||||
|
244,Larvitar,,
|
||||||
|
245,Pupitar,,
|
||||||
|
246,Tyranitar,,
|
||||||
|
247,Lugia,,
|
||||||
|
248,Ho-Oh,,
|
||||||
|
249,Mewtwo,,
|
||||||
|
250,Mew,,
|
||||||
|
251,Celebi,,
|
||||||
|
@@ -0,0 +1,257 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Chikorita,,
|
||||||
|
2,Bayleef,,
|
||||||
|
3,Meganium,,
|
||||||
|
4,Cyndaquil,,
|
||||||
|
5,Quilava,,
|
||||||
|
6,Typhlosion,,
|
||||||
|
7,Totodile,,
|
||||||
|
8,Croconaw,,
|
||||||
|
9,Feraligatr,,
|
||||||
|
10,Pidgey,,
|
||||||
|
11,Pidgeotto,,
|
||||||
|
12,Pidgeot,,
|
||||||
|
13,Spearow,,
|
||||||
|
14,Fearow,,
|
||||||
|
15,Hoothoot,,
|
||||||
|
16,Noctowl,,
|
||||||
|
17,Rattata,,
|
||||||
|
18,Raticate,,
|
||||||
|
19,Sentret,,
|
||||||
|
20,Furret,,
|
||||||
|
21,Pichu,,
|
||||||
|
22,Pikachu,,
|
||||||
|
23,Raichu,,
|
||||||
|
24,Caterpie,,
|
||||||
|
25,Metapod,,
|
||||||
|
26,Butterfree,,
|
||||||
|
27,Weedle,,
|
||||||
|
28,Kakuna,,
|
||||||
|
29,Beedrill,,
|
||||||
|
30,Ledyba,,
|
||||||
|
31,Ledian,,
|
||||||
|
32,Spinarak,,
|
||||||
|
33,Ariados,,
|
||||||
|
34,Geodude,,
|
||||||
|
35,Graveler,,
|
||||||
|
36,Golem,,
|
||||||
|
37,Zubat,,
|
||||||
|
38,Golbat,,
|
||||||
|
39,Crobat,,
|
||||||
|
40,Cleffa,,
|
||||||
|
41,Clefairy,,
|
||||||
|
42,Clefable,,
|
||||||
|
43,Igglybuff,,
|
||||||
|
44,Jigglypuff,,
|
||||||
|
45,Wigglytuff,,
|
||||||
|
46,Togepi,,
|
||||||
|
47,Togetic,,
|
||||||
|
48,Sandshrew,,
|
||||||
|
49,Sandslash,,
|
||||||
|
50,Ekans,,
|
||||||
|
51,Arbok,,
|
||||||
|
52,Dunsparce,,
|
||||||
|
53,Mareep,,
|
||||||
|
54,Flaaffy,,
|
||||||
|
55,Ampharos,,
|
||||||
|
56,Wooper,,
|
||||||
|
57,Quagsire,,
|
||||||
|
58,Gastly,,
|
||||||
|
59,Haunter,,
|
||||||
|
60,Gengar,,
|
||||||
|
61,Unown,,
|
||||||
|
62,Onix,,
|
||||||
|
63,Steelix,,
|
||||||
|
64,Bellsprout,,
|
||||||
|
65,Weepinbell,,
|
||||||
|
66,Victreebel,,
|
||||||
|
67,Hoppip,,
|
||||||
|
68,Skiploom,,
|
||||||
|
69,Jumpluff,,
|
||||||
|
70,Paras,,
|
||||||
|
71,Parasect,,
|
||||||
|
72,Poliwag,,
|
||||||
|
73,Poliwhirl,,
|
||||||
|
74,Poliwrath,,
|
||||||
|
75,Politoed,,
|
||||||
|
76,Magikarp,,
|
||||||
|
77,Gyarados,,
|
||||||
|
78,Goldeen,,
|
||||||
|
79,Seaking,,
|
||||||
|
80,Slowpoke,,
|
||||||
|
81,Slowbro,,
|
||||||
|
82,Slowking,,
|
||||||
|
83,Oddish,,
|
||||||
|
84,Gloom,,
|
||||||
|
85,Vileplume,,
|
||||||
|
86,Bellossom,,
|
||||||
|
87,Drowzee,,
|
||||||
|
88,Hypno,,
|
||||||
|
89,Abra,,
|
||||||
|
90,Kadabra,,
|
||||||
|
91,Alakazam,,
|
||||||
|
92,Ditto,,
|
||||||
|
93,Pineco,,
|
||||||
|
94,Forretress,,
|
||||||
|
95,Nidoran♀,,
|
||||||
|
96,Nidorina,,
|
||||||
|
97,Nidoqueen,,
|
||||||
|
98,Nidoran♂,,
|
||||||
|
99,Nidorino,,
|
||||||
|
100,Nidoking,,
|
||||||
|
101,Yanma,,
|
||||||
|
102,Yanmega,,
|
||||||
|
103,Sunkern,,
|
||||||
|
104,Sunflora,,
|
||||||
|
105,Exeggcute,,
|
||||||
|
106,Exeggutor,,
|
||||||
|
107,Sudowoodo,,
|
||||||
|
108,Wobbuffet,,
|
||||||
|
109,Venonat,,
|
||||||
|
110,Venomoth,,
|
||||||
|
111,Scyther,,
|
||||||
|
112,Scizor,,
|
||||||
|
113,Pinsir,,
|
||||||
|
114,Heracross,,
|
||||||
|
115,Koffing,,
|
||||||
|
116,Weezing,,
|
||||||
|
117,Grimer,,
|
||||||
|
118,Muk,,
|
||||||
|
119,Magnemite,,
|
||||||
|
120,Magneton,,
|
||||||
|
121,Voltorb,,
|
||||||
|
122,Electrode,,
|
||||||
|
123,Aipom,,
|
||||||
|
124,Ambipom,,
|
||||||
|
125,Snubbull,,
|
||||||
|
126,Granbull,,
|
||||||
|
127,Vulpix,,
|
||||||
|
128,Ninetales,,
|
||||||
|
129,Growlithe,,
|
||||||
|
130,Arcanine,,
|
||||||
|
131,Stantler,,
|
||||||
|
132,Marill,,
|
||||||
|
133,Azumarill,,
|
||||||
|
134,Diglett,,
|
||||||
|
135,Dugtrio,,
|
||||||
|
136,Mankey,,
|
||||||
|
137,Primeape,,
|
||||||
|
138,Meowth,,
|
||||||
|
139,Persian,,
|
||||||
|
140,Psyduck,,
|
||||||
|
141,Golduck,,
|
||||||
|
142,Machop,,
|
||||||
|
143,Machoke,,
|
||||||
|
144,Machamp,,
|
||||||
|
145,Tyrogue,,
|
||||||
|
146,Hitmonlee,,
|
||||||
|
147,Hitmonchan,,
|
||||||
|
148,Hitmontop,,
|
||||||
|
149,Girafarig,,
|
||||||
|
150,Tauros,,
|
||||||
|
151,Miltank,,
|
||||||
|
152,Magby,,
|
||||||
|
153,Magmar,,
|
||||||
|
154,Smoochum,,
|
||||||
|
155,Jynx,,
|
||||||
|
156,Elekid,,
|
||||||
|
157,Electabuzz,,
|
||||||
|
158,Mr. Mime,,
|
||||||
|
159,Smeargle,,
|
||||||
|
160,Farfetch’d,,
|
||||||
|
161,Natu,,
|
||||||
|
162,Xatu,,
|
||||||
|
163,Qwilfish,,
|
||||||
|
164,Tentacool,,
|
||||||
|
165,Tentacruel,,
|
||||||
|
166,Krabby,,
|
||||||
|
167,Kingler,,
|
||||||
|
168,Shuckle,,
|
||||||
|
169,Staryu,,
|
||||||
|
170,Starmie,,
|
||||||
|
171,Shellder,,
|
||||||
|
172,Cloyster,,
|
||||||
|
173,Corsola,,
|
||||||
|
174,Remoraid,,
|
||||||
|
175,Octillery,,
|
||||||
|
176,Chinchou,,
|
||||||
|
177,Lanturn,,
|
||||||
|
178,Seel,,
|
||||||
|
179,Dewgong,,
|
||||||
|
180,Lickitung,,
|
||||||
|
181,Lickilicky,,
|
||||||
|
182,Tangela,,
|
||||||
|
183,Tangrowth,,
|
||||||
|
184,Eevee,,
|
||||||
|
185,Vaporeon,,
|
||||||
|
186,Jolteon,,
|
||||||
|
187,Flareon,,
|
||||||
|
188,Espeon,,
|
||||||
|
189,Umbreon,,
|
||||||
|
190,Horsea,,
|
||||||
|
191,Seadra,,
|
||||||
|
192,Kingdra,,
|
||||||
|
193,Gligar,,
|
||||||
|
194,Delibird,,
|
||||||
|
195,Swinub,,
|
||||||
|
196,Piloswine,,
|
||||||
|
197,Mamoswine,,
|
||||||
|
198,Teddiursa,,
|
||||||
|
199,Ursaring,,
|
||||||
|
200,Phanpy,,
|
||||||
|
201,Donphan,,
|
||||||
|
202,Mantine,,
|
||||||
|
203,Skarmory,,
|
||||||
|
204,Doduo,,
|
||||||
|
205,Dodrio,,
|
||||||
|
206,Ponyta,,
|
||||||
|
207,Rapidash,,
|
||||||
|
208,Cubone,,
|
||||||
|
209,Marowak,,
|
||||||
|
210,Kangaskhan,,
|
||||||
|
211,Rhyhorn,,
|
||||||
|
212,Rhydon,,
|
||||||
|
213,Murkrow,,
|
||||||
|
214,Houndour,,
|
||||||
|
215,Houndoom,,
|
||||||
|
216,Slugma,,
|
||||||
|
217,Magcargo,,
|
||||||
|
218,Sneasel,,
|
||||||
|
219,Misdreavus,,
|
||||||
|
220,Porygon,,
|
||||||
|
221,Porygon2,,
|
||||||
|
222,Chansey,,
|
||||||
|
223,Blissey,,
|
||||||
|
224,Lapras,,
|
||||||
|
225,Omanyte,,
|
||||||
|
226,Omastar,,
|
||||||
|
227,Kabuto,,
|
||||||
|
228,Kabutops,,
|
||||||
|
229,Aerodactyl,,
|
||||||
|
230,Snorlax,,
|
||||||
|
231,Bulbasaur,,
|
||||||
|
232,Ivysaur,,
|
||||||
|
233,Venusaur,,
|
||||||
|
234,Charmander,,
|
||||||
|
235,Charmeleon,,
|
||||||
|
236,Charizard,,
|
||||||
|
237,Squirtle,,
|
||||||
|
238,Wartortle,,
|
||||||
|
239,Blastoise,,
|
||||||
|
240,Articuno,,
|
||||||
|
241,Zapdos,,
|
||||||
|
242,Moltres,,
|
||||||
|
243,Raikou,,
|
||||||
|
244,Entei,,
|
||||||
|
245,Suicune,,
|
||||||
|
246,Dratini,,
|
||||||
|
247,Dragonair,,
|
||||||
|
248,Dragonite,,
|
||||||
|
249,Larvitar,,
|
||||||
|
250,Pupitar,,
|
||||||
|
251,Tyranitar,,
|
||||||
|
252,Lugia,,
|
||||||
|
253,Ho-Oh,,
|
||||||
|
254,Mewtwo,,
|
||||||
|
255,Mew,,
|
||||||
|
256,Celebi,,
|
||||||
|
@@ -0,0 +1,243 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Rowlet,,
|
||||||
|
2,Dartrix,,
|
||||||
|
3,Decidueye,,
|
||||||
|
4,Cyndaquil,,
|
||||||
|
5,Quilava,,
|
||||||
|
6,Typhlosion,,
|
||||||
|
7,Oshawott,,
|
||||||
|
8,Dewott,,
|
||||||
|
9,Samurott,,
|
||||||
|
10,Bidoof,,
|
||||||
|
11,Bibarel,,
|
||||||
|
12,Starly,,
|
||||||
|
13,Staravia,,
|
||||||
|
14,Staraptor,,
|
||||||
|
15,Shinx,,
|
||||||
|
16,Luxio,,
|
||||||
|
17,Luxray,,
|
||||||
|
18,Wurmple,,
|
||||||
|
19,Silcoon,,
|
||||||
|
20,Beautifly,,
|
||||||
|
21,Cascoon,,
|
||||||
|
22,Dustox,,
|
||||||
|
23,Ponyta,,
|
||||||
|
24,Rapidash,,
|
||||||
|
25,Eevee,,
|
||||||
|
26,Vaporeon,,
|
||||||
|
27,Jolteon,,
|
||||||
|
28,Flareon,,
|
||||||
|
29,Espeon,,
|
||||||
|
30,Umbreon,,
|
||||||
|
31,Leafeon,,
|
||||||
|
32,Glaceon,,
|
||||||
|
33,Sylveon,,
|
||||||
|
34,Zubat,,
|
||||||
|
35,Golbat,,
|
||||||
|
36,Crobat,,
|
||||||
|
37,Drifloon,,
|
||||||
|
38,Drifblim,,
|
||||||
|
39,Kricketot,,
|
||||||
|
40,Kricketune,,
|
||||||
|
41,Buizel,,
|
||||||
|
42,Floatzel,,
|
||||||
|
43,Burmy,,
|
||||||
|
44,Wormadam,,
|
||||||
|
45,Mothim,,
|
||||||
|
46,Geodude,,
|
||||||
|
47,Graveler,,
|
||||||
|
48,Golem,,
|
||||||
|
49,Stantler,,
|
||||||
|
50,Wyrdeer,,
|
||||||
|
51,Munchlax,,
|
||||||
|
52,Snorlax,,
|
||||||
|
53,Paras,,
|
||||||
|
54,Parasect,,
|
||||||
|
55,Pichu,,
|
||||||
|
56,Pikachu,,
|
||||||
|
57,Raichu,,
|
||||||
|
58,Abra,,
|
||||||
|
59,Kadabra,,
|
||||||
|
60,Alakazam,,
|
||||||
|
61,Chimchar,,
|
||||||
|
62,Monferno,,
|
||||||
|
63,Infernape,,
|
||||||
|
64,Buneary,,
|
||||||
|
65,Lopunny,,
|
||||||
|
66,Cherubi,,
|
||||||
|
67,Cherrim,,
|
||||||
|
68,Psyduck,,
|
||||||
|
69,Golduck,,
|
||||||
|
70,Combee,,
|
||||||
|
71,Vespiquen,,
|
||||||
|
72,Scyther,,
|
||||||
|
73,Kleavor,,
|
||||||
|
74,Scizor,,
|
||||||
|
75,Heracross,,
|
||||||
|
76,Mime Jr.,,
|
||||||
|
77,Mr. Mime,,
|
||||||
|
78,Aipom,,
|
||||||
|
79,Ambipom,,
|
||||||
|
80,Magikarp,,
|
||||||
|
81,Gyarados,,
|
||||||
|
82,Shellos,,
|
||||||
|
83,Gastrodon,,
|
||||||
|
84,Qwilfish,,
|
||||||
|
85,Overqwil,,
|
||||||
|
86,Happiny,,
|
||||||
|
87,Chansey,,
|
||||||
|
88,Blissey,,
|
||||||
|
89,Budew,,
|
||||||
|
90,Roselia,,
|
||||||
|
91,Roserade,,
|
||||||
|
92,Carnivine,,
|
||||||
|
93,Petilil,,
|
||||||
|
94,Lilligant,,
|
||||||
|
95,Tangela,,
|
||||||
|
96,Tangrowth,,
|
||||||
|
97,Barboach,,
|
||||||
|
98,Whiscash,,
|
||||||
|
99,Croagunk,,
|
||||||
|
100,Toxicroak,,
|
||||||
|
101,Ralts,,
|
||||||
|
102,Kirlia,,
|
||||||
|
103,Gardevoir,,
|
||||||
|
104,Gallade,,
|
||||||
|
105,Yanma,,
|
||||||
|
106,Yanmega,,
|
||||||
|
107,Hippopotas,,
|
||||||
|
108,Hippowdon,,
|
||||||
|
109,Pachirisu,,
|
||||||
|
110,Stunky,,
|
||||||
|
111,Skuntank,,
|
||||||
|
112,Teddiursa,,
|
||||||
|
113,Ursaring,,
|
||||||
|
114,Ursaluna,,
|
||||||
|
115,Goomy,,
|
||||||
|
116,Sliggoo,,
|
||||||
|
117,Goodra,,
|
||||||
|
118,Onix,,
|
||||||
|
119,Steelix,,
|
||||||
|
120,Rhyhorn,,
|
||||||
|
121,Rhydon,,
|
||||||
|
122,Rhyperior,,
|
||||||
|
123,Bonsly,,
|
||||||
|
124,Sudowoodo,,
|
||||||
|
125,Lickitung,,
|
||||||
|
126,Lickilicky,,
|
||||||
|
127,Togepi,,
|
||||||
|
128,Togetic,,
|
||||||
|
129,Togekiss,,
|
||||||
|
130,Turtwig,,
|
||||||
|
131,Grotle,,
|
||||||
|
132,Torterra,,
|
||||||
|
133,Porygon,,
|
||||||
|
134,Porygon2,,
|
||||||
|
135,Porygon-Z,,
|
||||||
|
136,Gastly,,
|
||||||
|
137,Haunter,,
|
||||||
|
138,Gengar,,
|
||||||
|
139,Spiritomb,,
|
||||||
|
140,Murkrow,,
|
||||||
|
141,Honchkrow,,
|
||||||
|
142,Unown,,
|
||||||
|
143,Spheal,,
|
||||||
|
144,Sealeo,,
|
||||||
|
145,Walrein,,
|
||||||
|
146,Remoraid,,
|
||||||
|
147,Octillery,,
|
||||||
|
148,Skorupi,,
|
||||||
|
149,Drapion,,
|
||||||
|
150,Growlithe,,
|
||||||
|
151,Arcanine,,
|
||||||
|
152,Glameow,,
|
||||||
|
153,Purugly,,
|
||||||
|
154,Machop,,
|
||||||
|
155,Machoke,,
|
||||||
|
156,Machamp,,
|
||||||
|
157,Chatot,,
|
||||||
|
158,Duskull,,
|
||||||
|
159,Dusclops,,
|
||||||
|
160,Dusknoir,,
|
||||||
|
161,Piplup,,
|
||||||
|
162,Prinplup,,
|
||||||
|
163,Empoleon,,
|
||||||
|
164,Mantyke,,
|
||||||
|
165,Mantine,,
|
||||||
|
166,Basculin,,
|
||||||
|
167,Basculegion,,
|
||||||
|
168,Vulpix,,
|
||||||
|
169,Ninetales,,
|
||||||
|
170,Tentacool,,
|
||||||
|
171,Tentacruel,,
|
||||||
|
172,Finneon,,
|
||||||
|
173,Lumineon,,
|
||||||
|
174,Magby,,
|
||||||
|
175,Magmar,,
|
||||||
|
176,Magmortar,,
|
||||||
|
177,Magnemite,,
|
||||||
|
178,Magneton,,
|
||||||
|
179,Magnezone,,
|
||||||
|
180,Bronzor,,
|
||||||
|
181,Bronzong,,
|
||||||
|
182,Elekid,,
|
||||||
|
183,Electabuzz,,
|
||||||
|
184,Electivire,,
|
||||||
|
185,Gligar,,
|
||||||
|
186,Gliscor,,
|
||||||
|
187,Gible,,
|
||||||
|
188,Gabite,,
|
||||||
|
189,Garchomp,,
|
||||||
|
190,Nosepass,,
|
||||||
|
191,Probopass,,
|
||||||
|
192,Voltorb,,
|
||||||
|
193,Electrode,,
|
||||||
|
194,Rotom,,
|
||||||
|
195,Chingling,,
|
||||||
|
196,Chimecho,,
|
||||||
|
197,Misdreavus,,
|
||||||
|
198,Mismagius,,
|
||||||
|
199,Cleffa,,
|
||||||
|
200,Clefairy,,
|
||||||
|
201,Clefable,,
|
||||||
|
202,Sneasel,,
|
||||||
|
203,Sneasler,,
|
||||||
|
204,Weavile,,
|
||||||
|
205,Snorunt,,
|
||||||
|
206,Glalie,,
|
||||||
|
207,Froslass,,
|
||||||
|
208,Cranidos,,
|
||||||
|
209,Rampardos,,
|
||||||
|
210,Shieldon,,
|
||||||
|
211,Bastiodon,,
|
||||||
|
212,Swinub,,
|
||||||
|
213,Piloswine,,
|
||||||
|
214,Mamoswine,,
|
||||||
|
215,Bergmite,,
|
||||||
|
216,Avalugg,,
|
||||||
|
217,Snover,,
|
||||||
|
218,Abomasnow,,
|
||||||
|
219,Zorua,,
|
||||||
|
220,Zoroark,,
|
||||||
|
221,Rufflet,,
|
||||||
|
222,Braviary,,
|
||||||
|
223,Riolu,,
|
||||||
|
224,Lucario,,
|
||||||
|
225,Uxie,,
|
||||||
|
226,Mesprit,,
|
||||||
|
227,Azelf,,
|
||||||
|
228,Heatran,,
|
||||||
|
229,Regigigas,,
|
||||||
|
230,Cresselia,,
|
||||||
|
231,Tornadus,,
|
||||||
|
232,Thundurus,,
|
||||||
|
233,Landorus,,
|
||||||
|
234,Enamorus,,
|
||||||
|
235,Dialga,,
|
||||||
|
236,Palkia,,
|
||||||
|
237,Giratina,,
|
||||||
|
238,Arceus,,
|
||||||
|
239,Phione,,
|
||||||
|
240,Manaphy,,
|
||||||
|
241,Shaymin,,
|
||||||
|
242,Darkrai,,
|
||||||
|
@@ -0,0 +1,133 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Mankey,,
|
||||||
|
2,Primeape,,
|
||||||
|
3,Annihilape,,
|
||||||
|
4,Meowth,,
|
||||||
|
5,Persian,,
|
||||||
|
6,Perrserker,,
|
||||||
|
7,Farfetch’d,,
|
||||||
|
8,Sirfetch’d,,
|
||||||
|
9,Cubone,,
|
||||||
|
10,Marowak,,
|
||||||
|
11,Porygon,,
|
||||||
|
12,Porygon2,,
|
||||||
|
13,Porygon-Z,,
|
||||||
|
14,Capsakid,,
|
||||||
|
15,Scovillain,,
|
||||||
|
16,Tinkatink,,
|
||||||
|
17,Tinkatuff,,
|
||||||
|
18,Tinkaton,,
|
||||||
|
19,Cyclizar,,
|
||||||
|
20,Glimmet,,
|
||||||
|
21,Glimmora,,
|
||||||
|
22,Rotom,,
|
||||||
|
23,Greavard,,
|
||||||
|
24,Houndstone,,
|
||||||
|
25,Sandygast,,
|
||||||
|
26,Palossand,,
|
||||||
|
27,Kecleon,,
|
||||||
|
28,Flamigo,,
|
||||||
|
29,Cryogonal,,
|
||||||
|
30,Dondozo,,
|
||||||
|
31,Tatsugiri,,
|
||||||
|
32,Frigibax,,
|
||||||
|
33,Arctibax,,
|
||||||
|
34,Baxcalibur,,
|
||||||
|
35,Gimmighoul,,
|
||||||
|
36,Gholdengo,,
|
||||||
|
37,Qwilfish,,
|
||||||
|
38,Overqwil,,
|
||||||
|
39,Treecko,,
|
||||||
|
40,Grovyle,,
|
||||||
|
41,Sceptile,,
|
||||||
|
42,Torchic,,
|
||||||
|
43,Combusken,,
|
||||||
|
44,Blaziken,,
|
||||||
|
45,Mudkip,,
|
||||||
|
46,Marshtomp,,
|
||||||
|
47,Swampert,,
|
||||||
|
48,Feebas,,
|
||||||
|
49,Milotic,,
|
||||||
|
50,Chingling,,
|
||||||
|
51,Chimecho,,
|
||||||
|
52,Indeedee,,
|
||||||
|
53,Purrloin,,
|
||||||
|
54,Liepard,,
|
||||||
|
55,Munna,,
|
||||||
|
56,Musharna,,
|
||||||
|
57,Throh,,
|
||||||
|
58,Sawk,,
|
||||||
|
59,Yamask,,
|
||||||
|
60,Cofagrigus,,
|
||||||
|
61,Runerigus,,
|
||||||
|
62,Wimpod,,
|
||||||
|
63,Golisopod,,
|
||||||
|
64,Nickit,,
|
||||||
|
65,Thievul,,
|
||||||
|
66,Clobbopus,,
|
||||||
|
67,Grapploct,,
|
||||||
|
68,Mimikyu,,
|
||||||
|
69,Kleavor,,
|
||||||
|
70,Morpeko,,
|
||||||
|
71,Golett,,
|
||||||
|
72,Golurk,,
|
||||||
|
73,Rookidee,,
|
||||||
|
74,Corvisquire,,
|
||||||
|
75,Corviknight,,
|
||||||
|
76,Igglybuff,,
|
||||||
|
77,Jigglypuff,,
|
||||||
|
78,Wigglytuff,,
|
||||||
|
79,Fidough,,
|
||||||
|
80,Dachsbun,,
|
||||||
|
81,Starly,,
|
||||||
|
82,Staravia,,
|
||||||
|
83,Staraptor,,
|
||||||
|
84,Spoink,,
|
||||||
|
85,Grumpig,,
|
||||||
|
86,Squawkabilly,,
|
||||||
|
87,Crabrawler,,
|
||||||
|
88,Crabominable,,
|
||||||
|
89,Nacli,,
|
||||||
|
90,Naclstack,,
|
||||||
|
91,Garganacl,,
|
||||||
|
92,Gulpin,,
|
||||||
|
93,Swalot,,
|
||||||
|
94,Zubat,,
|
||||||
|
95,Golbat,,
|
||||||
|
96,Crobat,,
|
||||||
|
97,Charcadet,,
|
||||||
|
98,Armarouge,,
|
||||||
|
99,Ceruledge,,
|
||||||
|
100,Maschiff,,
|
||||||
|
101,Mabosstiff,,
|
||||||
|
102,Toxel,,
|
||||||
|
103,Toxtricity,,
|
||||||
|
104,Shroodle,,
|
||||||
|
105,Grafaiai,,
|
||||||
|
106,Zangoose,,
|
||||||
|
107,Seviper,,
|
||||||
|
108,Mime Jr.,,
|
||||||
|
109,Mr. Mime,,
|
||||||
|
110,Mr. Rime,,
|
||||||
|
111,Foongus,,
|
||||||
|
112,Amoonguss,,
|
||||||
|
113,Heatran,,
|
||||||
|
114,Volcanion,,
|
||||||
|
115,Cobalion,,
|
||||||
|
116,Terrakion,,
|
||||||
|
117,Virizion,,
|
||||||
|
118,Keldeo,,
|
||||||
|
119,Meloetta,,
|
||||||
|
120,Genesect,,
|
||||||
|
121,Hoopa,,
|
||||||
|
122,Marshadow,,
|
||||||
|
123,Meltan,,
|
||||||
|
124,Melmetal,,
|
||||||
|
125,Darkrai,,
|
||||||
|
126,Latias,,
|
||||||
|
127,Latios,,
|
||||||
|
128,Kyogre,,
|
||||||
|
129,Groudon,,
|
||||||
|
130,Rayquaza,,
|
||||||
|
131,Magearna,,
|
||||||
|
132,Zeraora,,
|
||||||
|
@@ -0,0 +1,233 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Chikorita,,
|
||||||
|
2,Bayleef,,
|
||||||
|
3,Meganium,,
|
||||||
|
4,Tepig,,
|
||||||
|
5,Pignite,,
|
||||||
|
6,Emboar,,
|
||||||
|
7,Totodile,,
|
||||||
|
8,Croconaw,,
|
||||||
|
9,Feraligatr,,
|
||||||
|
10,Fletchling,,
|
||||||
|
11,Fletchinder,,
|
||||||
|
12,Talonflame,,
|
||||||
|
13,Bunnelby,,
|
||||||
|
14,Diggersby,,
|
||||||
|
15,Scatterbug,,
|
||||||
|
16,Spewpa,,
|
||||||
|
17,Vivillon,,
|
||||||
|
18,Weedle,,
|
||||||
|
19,Kakuna,,
|
||||||
|
20,Beedrill,,
|
||||||
|
21,Pidgey,,
|
||||||
|
22,Pidgeotto,,
|
||||||
|
23,Pidgeot,,
|
||||||
|
24,Mareep,,
|
||||||
|
25,Flaaffy,,
|
||||||
|
26,Ampharos,,
|
||||||
|
27,Patrat,,
|
||||||
|
28,Watchog,,
|
||||||
|
29,Budew,,
|
||||||
|
30,Roselia,,
|
||||||
|
31,Roserade,,
|
||||||
|
32,Magikarp,,
|
||||||
|
33,Gyarados,,
|
||||||
|
34,Binacle,,
|
||||||
|
35,Barbaracle,,
|
||||||
|
36,Staryu,,
|
||||||
|
37,Starmie,,
|
||||||
|
38,Flabébé,,
|
||||||
|
39,Floette,,
|
||||||
|
40,Florges,,
|
||||||
|
41,Skiddo,,
|
||||||
|
42,Gogoat,,
|
||||||
|
43,Espurr,,
|
||||||
|
44,Meowstic,,
|
||||||
|
45,Litleo,,
|
||||||
|
46,Pyroar,,
|
||||||
|
47,Pancham,,
|
||||||
|
48,Pangoro,,
|
||||||
|
49,Trubbish,,
|
||||||
|
50,Garbodor,,
|
||||||
|
51,Dedenne,,
|
||||||
|
52,Pichu,,
|
||||||
|
53,Pikachu,,
|
||||||
|
54,Raichu,,
|
||||||
|
55,Cleffa,,
|
||||||
|
56,Clefairy,,
|
||||||
|
57,Clefable,,
|
||||||
|
58,Spinarak,,
|
||||||
|
59,Ariados,,
|
||||||
|
60,Ekans,,
|
||||||
|
61,Arbok,,
|
||||||
|
62,Abra,,
|
||||||
|
63,Kadabra,,
|
||||||
|
64,Alakazam,,
|
||||||
|
65,Gastly,,
|
||||||
|
66,Haunter,,
|
||||||
|
67,Gengar,,
|
||||||
|
68,Venipede,,
|
||||||
|
69,Whirlipede,,
|
||||||
|
70,Scolipede,,
|
||||||
|
71,Honedge,,
|
||||||
|
72,Doublade,,
|
||||||
|
73,Aegislash,,
|
||||||
|
74,Bellsprout,,
|
||||||
|
75,Weepinbell,,
|
||||||
|
76,Victreebel,,
|
||||||
|
77,Pansage,,
|
||||||
|
78,Simisage,,
|
||||||
|
79,Pansear,,
|
||||||
|
80,Simisear,,
|
||||||
|
81,Panpour,,
|
||||||
|
82,Simipour,,
|
||||||
|
83,Meditite,,
|
||||||
|
84,Medicham,,
|
||||||
|
85,Electrike,,
|
||||||
|
86,Manectric,,
|
||||||
|
87,Ralts,,
|
||||||
|
88,Kirlia,,
|
||||||
|
89,Gardevoir,,
|
||||||
|
90,Gallade,,
|
||||||
|
91,Houndour,,
|
||||||
|
92,Houndoom,,
|
||||||
|
93,Swablu,,
|
||||||
|
94,Altaria,,
|
||||||
|
95,Audino,,
|
||||||
|
96,Spritzee,,
|
||||||
|
97,Aromatisse,,
|
||||||
|
98,Swirlix,,
|
||||||
|
99,Slurpuff,,
|
||||||
|
100,Eevee,,
|
||||||
|
101,Vaporeon,,
|
||||||
|
102,Jolteon,,
|
||||||
|
103,Flareon,,
|
||||||
|
104,Espeon,,
|
||||||
|
105,Umbreon,,
|
||||||
|
106,Leafeon,,
|
||||||
|
107,Glaceon,,
|
||||||
|
108,Sylveon,,
|
||||||
|
109,Buneary,,
|
||||||
|
110,Lopunny,,
|
||||||
|
111,Shuppet,,
|
||||||
|
112,Banette,,
|
||||||
|
113,Vanillite,,
|
||||||
|
114,Vanillish,,
|
||||||
|
115,Vanilluxe,,
|
||||||
|
116,Numel,,
|
||||||
|
117,Camerupt,,
|
||||||
|
118,Hippopotas,,
|
||||||
|
119,Hippowdon,,
|
||||||
|
120,Drilbur,,
|
||||||
|
121,Excadrill,,
|
||||||
|
122,Sandile,,
|
||||||
|
123,Krokorok,,
|
||||||
|
124,Krookodile,,
|
||||||
|
125,Machop,,
|
||||||
|
126,Machoke,,
|
||||||
|
127,Machamp,,
|
||||||
|
128,Gible,,
|
||||||
|
129,Gabite,,
|
||||||
|
130,Garchomp,,
|
||||||
|
131,Carbink,,
|
||||||
|
132,Sableye,,
|
||||||
|
133,Mawile,,
|
||||||
|
134,Absol,,
|
||||||
|
135,Riolu,,
|
||||||
|
136,Lucario,,
|
||||||
|
137,Slowpoke,,
|
||||||
|
138,Slowbro,,
|
||||||
|
139,Slowking,,
|
||||||
|
140,Carvanha,,
|
||||||
|
141,Sharpedo,,
|
||||||
|
142,Tynamo,,
|
||||||
|
143,Eelektrik,,
|
||||||
|
144,Eelektross,,
|
||||||
|
145,Dratini,,
|
||||||
|
146,Dragonair,,
|
||||||
|
147,Dragonite,,
|
||||||
|
148,Bulbasaur,,
|
||||||
|
149,Ivysaur,,
|
||||||
|
150,Venusaur,,
|
||||||
|
151,Charmander,,
|
||||||
|
152,Charmeleon,,
|
||||||
|
153,Charizard,,
|
||||||
|
154,Squirtle,,
|
||||||
|
155,Wartortle,,
|
||||||
|
156,Blastoise,,
|
||||||
|
157,Stunfisk,,
|
||||||
|
158,Furfrou,,
|
||||||
|
159,Inkay,,
|
||||||
|
160,Malamar,,
|
||||||
|
161,Skrelp,,
|
||||||
|
162,Dragalge,,
|
||||||
|
163,Clauncher,,
|
||||||
|
164,Clawitzer,,
|
||||||
|
165,Goomy,,
|
||||||
|
166,Sliggoo,,
|
||||||
|
167,Goodra,,
|
||||||
|
168,Delibird,,
|
||||||
|
169,Snorunt,,
|
||||||
|
170,Glalie,,
|
||||||
|
171,Froslass,,
|
||||||
|
172,Snover,,
|
||||||
|
173,Abomasnow,,
|
||||||
|
174,Bergmite,,
|
||||||
|
175,Avalugg,,
|
||||||
|
176,Scyther,,
|
||||||
|
177,Scizor,,
|
||||||
|
178,Pinsir,,
|
||||||
|
179,Heracross,,
|
||||||
|
180,Emolga,,
|
||||||
|
181,Hawlucha,,
|
||||||
|
182,Phantump,,
|
||||||
|
183,Trevenant,,
|
||||||
|
184,Scraggy,,
|
||||||
|
185,Scrafty,,
|
||||||
|
186,Noibat,,
|
||||||
|
187,Noivern,,
|
||||||
|
188,Klefki,,
|
||||||
|
189,Litwick,,
|
||||||
|
190,Lampent,,
|
||||||
|
191,Chandelure,,
|
||||||
|
192,Aerodactyl,,
|
||||||
|
193,Tyrunt,,
|
||||||
|
194,Tyrantrum,,
|
||||||
|
195,Amaura,,
|
||||||
|
196,Aurorus,,
|
||||||
|
197,Onix,,
|
||||||
|
198,Steelix,,
|
||||||
|
199,Aron,,
|
||||||
|
200,Lairon,,
|
||||||
|
201,Aggron,,
|
||||||
|
202,Helioptile,,
|
||||||
|
203,Heliolisk,,
|
||||||
|
204,Pumpkaboo,,
|
||||||
|
205,Gourgeist,,
|
||||||
|
206,Larvitar,,
|
||||||
|
207,Pupitar,,
|
||||||
|
208,Tyranitar,,
|
||||||
|
209,Froakie,,
|
||||||
|
210,Frogadier,,
|
||||||
|
211,Greninja,,
|
||||||
|
212,Falinks,,
|
||||||
|
213,Chespin,,
|
||||||
|
214,Quilladin,,
|
||||||
|
215,Chesnaught,,
|
||||||
|
216,Skarmory,,
|
||||||
|
217,Fennekin,,
|
||||||
|
218,Braixen,,
|
||||||
|
219,Delphox,,
|
||||||
|
220,Bagon,,
|
||||||
|
221,Shelgon,,
|
||||||
|
222,Salamence,,
|
||||||
|
223,Kangaskhan,,
|
||||||
|
224,Drampa,,
|
||||||
|
225,Beldum,,
|
||||||
|
226,Metang,,
|
||||||
|
227,Metagross,,
|
||||||
|
228,Xerneas,,
|
||||||
|
229,Yveltal,,
|
||||||
|
230,Zygarde,,
|
||||||
|
231,Diancie,,
|
||||||
|
232,Mewtwo,,
|
||||||
|
@@ -0,0 +1,154 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Bulbasaur,,
|
||||||
|
2,Ivysaur,,
|
||||||
|
3,Venusaur,,
|
||||||
|
4,Charmander,,
|
||||||
|
5,Charmeleon,,
|
||||||
|
6,Charizard,,
|
||||||
|
7,Squirtle,,
|
||||||
|
8,Wartortle,,
|
||||||
|
9,Blastoise,,
|
||||||
|
10,Caterpie,,
|
||||||
|
11,Metapod,,
|
||||||
|
12,Butterfree,,
|
||||||
|
13,Weedle,,
|
||||||
|
14,Kakuna,,
|
||||||
|
15,Beedrill,,
|
||||||
|
16,Pidgey,,
|
||||||
|
17,Pidgeotto,,
|
||||||
|
18,Pidgeot,,
|
||||||
|
19,Rattata,,
|
||||||
|
20,Raticate,,
|
||||||
|
21,Spearow,,
|
||||||
|
22,Fearow,,
|
||||||
|
23,Ekans,,
|
||||||
|
24,Arbok,,
|
||||||
|
25,Pikachu,,
|
||||||
|
26,Raichu,,
|
||||||
|
27,Sandshrew,,
|
||||||
|
28,Sandslash,,
|
||||||
|
29,Nidoran♀,,
|
||||||
|
30,Nidorina,,
|
||||||
|
31,Nidoqueen,,
|
||||||
|
32,Nidoran♂,,
|
||||||
|
33,Nidorino,,
|
||||||
|
34,Nidoking,,
|
||||||
|
35,Clefairy,,
|
||||||
|
36,Clefable,,
|
||||||
|
37,Vulpix,,
|
||||||
|
38,Ninetales,,
|
||||||
|
39,Jigglypuff,,
|
||||||
|
40,Wigglytuff,,
|
||||||
|
41,Zubat,,
|
||||||
|
42,Golbat,,
|
||||||
|
43,Oddish,,
|
||||||
|
44,Gloom,,
|
||||||
|
45,Vileplume,,
|
||||||
|
46,Paras,,
|
||||||
|
47,Parasect,,
|
||||||
|
48,Venonat,,
|
||||||
|
49,Venomoth,,
|
||||||
|
50,Diglett,,
|
||||||
|
51,Dugtrio,,
|
||||||
|
52,Meowth,,
|
||||||
|
53,Persian,,
|
||||||
|
54,Psyduck,,
|
||||||
|
55,Golduck,,
|
||||||
|
56,Mankey,,
|
||||||
|
57,Primeape,,
|
||||||
|
58,Growlithe,,
|
||||||
|
59,Arcanine,,
|
||||||
|
60,Poliwag,,
|
||||||
|
61,Poliwhirl,,
|
||||||
|
62,Poliwrath,,
|
||||||
|
63,Abra,,
|
||||||
|
64,Kadabra,,
|
||||||
|
65,Alakazam,,
|
||||||
|
66,Machop,,
|
||||||
|
67,Machoke,,
|
||||||
|
68,Machamp,,
|
||||||
|
69,Bellsprout,,
|
||||||
|
70,Weepinbell,,
|
||||||
|
71,Victreebel,,
|
||||||
|
72,Tentacool,,
|
||||||
|
73,Tentacruel,,
|
||||||
|
74,Geodude,,
|
||||||
|
75,Graveler,,
|
||||||
|
76,Golem,,
|
||||||
|
77,Ponyta,,
|
||||||
|
78,Rapidash,,
|
||||||
|
79,Slowpoke,,
|
||||||
|
80,Slowbro,,
|
||||||
|
81,Magnemite,,
|
||||||
|
82,Magneton,,
|
||||||
|
83,Farfetch’d,,
|
||||||
|
84,Doduo,,
|
||||||
|
85,Dodrio,,
|
||||||
|
86,Seel,,
|
||||||
|
87,Dewgong,,
|
||||||
|
88,Grimer,,
|
||||||
|
89,Muk,,
|
||||||
|
90,Shellder,,
|
||||||
|
91,Cloyster,,
|
||||||
|
92,Gastly,,
|
||||||
|
93,Haunter,,
|
||||||
|
94,Gengar,,
|
||||||
|
95,Onix,,
|
||||||
|
96,Drowzee,,
|
||||||
|
97,Hypno,,
|
||||||
|
98,Krabby,,
|
||||||
|
99,Kingler,,
|
||||||
|
100,Voltorb,,
|
||||||
|
101,Electrode,,
|
||||||
|
102,Exeggcute,,
|
||||||
|
103,Exeggutor,,
|
||||||
|
104,Cubone,,
|
||||||
|
105,Marowak,,
|
||||||
|
106,Hitmonlee,,
|
||||||
|
107,Hitmonchan,,
|
||||||
|
108,Lickitung,,
|
||||||
|
109,Koffing,,
|
||||||
|
110,Weezing,,
|
||||||
|
111,Rhyhorn,,
|
||||||
|
112,Rhydon,,
|
||||||
|
113,Chansey,,
|
||||||
|
114,Tangela,,
|
||||||
|
115,Kangaskhan,,
|
||||||
|
116,Horsea,,
|
||||||
|
117,Seadra,,
|
||||||
|
118,Goldeen,,
|
||||||
|
119,Seaking,,
|
||||||
|
120,Staryu,,
|
||||||
|
121,Starmie,,
|
||||||
|
122,Mr. Mime,,
|
||||||
|
123,Scyther,,
|
||||||
|
124,Jynx,,
|
||||||
|
125,Electabuzz,,
|
||||||
|
126,Magmar,,
|
||||||
|
127,Pinsir,,
|
||||||
|
128,Tauros,,
|
||||||
|
129,Magikarp,,
|
||||||
|
130,Gyarados,,
|
||||||
|
131,Lapras,,
|
||||||
|
132,Ditto,,
|
||||||
|
133,Eevee,,
|
||||||
|
134,Vaporeon,,
|
||||||
|
135,Jolteon,,
|
||||||
|
136,Flareon,,
|
||||||
|
137,Porygon,,
|
||||||
|
138,Omanyte,,
|
||||||
|
139,Omastar,,
|
||||||
|
140,Kabuto,,
|
||||||
|
141,Kabutops,,
|
||||||
|
142,Aerodactyl,,
|
||||||
|
143,Snorlax,,
|
||||||
|
144,Articuno,,
|
||||||
|
145,Zapdos,,
|
||||||
|
146,Moltres,,
|
||||||
|
147,Dratini,,
|
||||||
|
148,Dragonair,,
|
||||||
|
149,Dragonite,,
|
||||||
|
150,Mewtwo,,
|
||||||
|
151,Mew,,
|
||||||
|
152,Meltan,,
|
||||||
|
153,Melmetal,,
|
||||||
|
@@ -0,0 +1,212 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Treecko,,
|
||||||
|
2,Grovyle,,
|
||||||
|
3,Sceptile,,
|
||||||
|
4,Torchic,,
|
||||||
|
5,Combusken,,
|
||||||
|
6,Blaziken,,
|
||||||
|
7,Mudkip,,
|
||||||
|
8,Marshtomp,,
|
||||||
|
9,Swampert,,
|
||||||
|
10,Poochyena,,
|
||||||
|
11,Mightyena,,
|
||||||
|
12,Zigzagoon,,
|
||||||
|
13,Linoone,,
|
||||||
|
14,Wurmple,,
|
||||||
|
15,Silcoon,,
|
||||||
|
16,Beautifly,,
|
||||||
|
17,Cascoon,,
|
||||||
|
18,Dustox,,
|
||||||
|
19,Lotad,,
|
||||||
|
20,Lombre,,
|
||||||
|
21,Ludicolo,,
|
||||||
|
22,Seedot,,
|
||||||
|
23,Nuzleaf,,
|
||||||
|
24,Shiftry,,
|
||||||
|
25,Taillow,,
|
||||||
|
26,Swellow,,
|
||||||
|
27,Wingull,,
|
||||||
|
28,Pelipper,,
|
||||||
|
29,Ralts,,
|
||||||
|
30,Kirlia,,
|
||||||
|
31,Gardevoir,,
|
||||||
|
32,Gallade,,
|
||||||
|
33,Surskit,,
|
||||||
|
34,Masquerain,,
|
||||||
|
35,Shroomish,,
|
||||||
|
36,Breloom,,
|
||||||
|
37,Slakoth,,
|
||||||
|
38,Vigoroth,,
|
||||||
|
39,Slaking,,
|
||||||
|
40,Abra,,
|
||||||
|
41,Kadabra,,
|
||||||
|
42,Alakazam,,
|
||||||
|
43,Nincada,,
|
||||||
|
44,Ninjask,,
|
||||||
|
45,Shedinja,,
|
||||||
|
46,Whismur,,
|
||||||
|
47,Loudred,,
|
||||||
|
48,Exploud,,
|
||||||
|
49,Makuhita,,
|
||||||
|
50,Hariyama,,
|
||||||
|
51,Goldeen,,
|
||||||
|
52,Seaking,,
|
||||||
|
53,Magikarp,,
|
||||||
|
54,Gyarados,,
|
||||||
|
55,Azurill,,
|
||||||
|
56,Marill,,
|
||||||
|
57,Azumarill,,
|
||||||
|
58,Geodude,,
|
||||||
|
59,Graveler,,
|
||||||
|
60,Golem,,
|
||||||
|
61,Nosepass,,
|
||||||
|
62,Probopass,,
|
||||||
|
63,Skitty,,
|
||||||
|
64,Delcatty,,
|
||||||
|
65,Zubat,,
|
||||||
|
66,Golbat,,
|
||||||
|
67,Crobat,,
|
||||||
|
68,Tentacool,,
|
||||||
|
69,Tentacruel,,
|
||||||
|
70,Sableye,,
|
||||||
|
71,Mawile,,
|
||||||
|
72,Aron,,
|
||||||
|
73,Lairon,,
|
||||||
|
74,Aggron,,
|
||||||
|
75,Machop,,
|
||||||
|
76,Machoke,,
|
||||||
|
77,Machamp,,
|
||||||
|
78,Meditite,,
|
||||||
|
79,Medicham,,
|
||||||
|
80,Electrike,,
|
||||||
|
81,Manectric,,
|
||||||
|
82,Plusle,,
|
||||||
|
83,Minun,,
|
||||||
|
84,Magnemite,,
|
||||||
|
85,Magneton,,
|
||||||
|
86,Magnezone,,
|
||||||
|
87,Voltorb,,
|
||||||
|
88,Electrode,,
|
||||||
|
89,Volbeat,,
|
||||||
|
90,Illumise,,
|
||||||
|
91,Oddish,,
|
||||||
|
92,Gloom,,
|
||||||
|
93,Vileplume,,
|
||||||
|
94,Bellossom,,
|
||||||
|
95,Doduo,,
|
||||||
|
96,Dodrio,,
|
||||||
|
97,Budew,,
|
||||||
|
98,Roselia,,
|
||||||
|
99,Roserade,,
|
||||||
|
100,Gulpin,,
|
||||||
|
101,Swalot,,
|
||||||
|
102,Carvanha,,
|
||||||
|
103,Sharpedo,,
|
||||||
|
104,Wailmer,,
|
||||||
|
105,Wailord,,
|
||||||
|
106,Numel,,
|
||||||
|
107,Camerupt,,
|
||||||
|
108,Slugma,,
|
||||||
|
109,Magcargo,,
|
||||||
|
110,Torkoal,,
|
||||||
|
111,Grimer,,
|
||||||
|
112,Muk,,
|
||||||
|
113,Koffing,,
|
||||||
|
114,Weezing,,
|
||||||
|
115,Spoink,,
|
||||||
|
116,Grumpig,,
|
||||||
|
117,Sandshrew,,
|
||||||
|
118,Sandslash,,
|
||||||
|
119,Spinda,,
|
||||||
|
120,Skarmory,,
|
||||||
|
121,Trapinch,,
|
||||||
|
122,Vibrava,,
|
||||||
|
123,Flygon,,
|
||||||
|
124,Cacnea,,
|
||||||
|
125,Cacturne,,
|
||||||
|
126,Swablu,,
|
||||||
|
127,Altaria,,
|
||||||
|
128,Zangoose,,
|
||||||
|
129,Seviper,,
|
||||||
|
130,Lunatone,,
|
||||||
|
131,Solrock,,
|
||||||
|
132,Barboach,,
|
||||||
|
133,Whiscash,,
|
||||||
|
134,Corphish,,
|
||||||
|
135,Crawdaunt,,
|
||||||
|
136,Baltoy,,
|
||||||
|
137,Claydol,,
|
||||||
|
138,Lileep,,
|
||||||
|
139,Cradily,,
|
||||||
|
140,Anorith,,
|
||||||
|
141,Armaldo,,
|
||||||
|
142,Igglybuff,,
|
||||||
|
143,Jigglypuff,,
|
||||||
|
144,Wigglytuff,,
|
||||||
|
145,Feebas,,
|
||||||
|
146,Milotic,,
|
||||||
|
147,Castform,,
|
||||||
|
148,Staryu,,
|
||||||
|
149,Starmie,,
|
||||||
|
150,Kecleon,,
|
||||||
|
151,Shuppet,,
|
||||||
|
152,Banette,,
|
||||||
|
153,Duskull,,
|
||||||
|
154,Dusclops,,
|
||||||
|
155,Dusknoir,,
|
||||||
|
156,Tropius,,
|
||||||
|
157,Chingling,,
|
||||||
|
158,Chimecho,,
|
||||||
|
159,Absol,,
|
||||||
|
160,Vulpix,,
|
||||||
|
161,Ninetales,,
|
||||||
|
162,Pichu,,
|
||||||
|
163,Pikachu,,
|
||||||
|
164,Raichu,,
|
||||||
|
165,Psyduck,,
|
||||||
|
166,Golduck,,
|
||||||
|
167,Wynaut,,
|
||||||
|
168,Wobbuffet,,
|
||||||
|
169,Natu,,
|
||||||
|
170,Xatu,,
|
||||||
|
171,Girafarig,,
|
||||||
|
172,Phanpy,,
|
||||||
|
173,Donphan,,
|
||||||
|
174,Pinsir,,
|
||||||
|
175,Heracross,,
|
||||||
|
176,Rhyhorn,,
|
||||||
|
177,Rhydon,,
|
||||||
|
178,Rhyperior,,
|
||||||
|
179,Snorunt,,
|
||||||
|
180,Glalie,,
|
||||||
|
181,Froslass,,
|
||||||
|
182,Spheal,,
|
||||||
|
183,Sealeo,,
|
||||||
|
184,Walrein,,
|
||||||
|
185,Clamperl,,
|
||||||
|
186,Huntail,,
|
||||||
|
187,Gorebyss,,
|
||||||
|
188,Relicanth,,
|
||||||
|
189,Corsola,,
|
||||||
|
190,Chinchou,,
|
||||||
|
191,Lanturn,,
|
||||||
|
192,Luvdisc,,
|
||||||
|
193,Horsea,,
|
||||||
|
194,Seadra,,
|
||||||
|
195,Kingdra,,
|
||||||
|
196,Bagon,,
|
||||||
|
197,Shelgon,,
|
||||||
|
198,Salamence,,
|
||||||
|
199,Beldum,,
|
||||||
|
200,Metang,,
|
||||||
|
201,Metagross,,
|
||||||
|
202,Regirock,,
|
||||||
|
203,Regice,,
|
||||||
|
204,Registeel,,
|
||||||
|
205,Latias,,
|
||||||
|
206,Latios,,
|
||||||
|
207,Kyogre,,
|
||||||
|
208,Groudon,,
|
||||||
|
209,Rayquaza,,
|
||||||
|
210,Jirachi,,
|
||||||
|
211,Deoxys,,
|
||||||
|
@@ -0,0 +1,211 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Turtwig,,
|
||||||
|
2,Grotle,,
|
||||||
|
3,Torterra,,
|
||||||
|
4,Chimchar,,
|
||||||
|
5,Monferno,,
|
||||||
|
6,Infernape,,
|
||||||
|
7,Piplup,,
|
||||||
|
8,Prinplup,,
|
||||||
|
9,Empoleon,,
|
||||||
|
10,Starly,,
|
||||||
|
11,Staravia,,
|
||||||
|
12,Staraptor,,
|
||||||
|
13,Bidoof,,
|
||||||
|
14,Bibarel,,
|
||||||
|
15,Kricketot,,
|
||||||
|
16,Kricketune,,
|
||||||
|
17,Shinx,,
|
||||||
|
18,Luxio,,
|
||||||
|
19,Luxray,,
|
||||||
|
20,Abra,,
|
||||||
|
21,Kadabra,,
|
||||||
|
22,Alakazam,,
|
||||||
|
23,Magikarp,,
|
||||||
|
24,Gyarados,,
|
||||||
|
25,Budew,,
|
||||||
|
26,Roselia,,
|
||||||
|
27,Roserade,,
|
||||||
|
28,Zubat,,
|
||||||
|
29,Golbat,,
|
||||||
|
30,Crobat,,
|
||||||
|
31,Geodude,,
|
||||||
|
32,Graveler,,
|
||||||
|
33,Golem,,
|
||||||
|
34,Onix,,
|
||||||
|
35,Steelix,,
|
||||||
|
36,Cranidos,,
|
||||||
|
37,Rampardos,,
|
||||||
|
38,Shieldon,,
|
||||||
|
39,Bastiodon,,
|
||||||
|
40,Machop,,
|
||||||
|
41,Machoke,,
|
||||||
|
42,Machamp,,
|
||||||
|
43,Psyduck,,
|
||||||
|
44,Golduck,,
|
||||||
|
45,Burmy,,
|
||||||
|
46,Wormadam,,
|
||||||
|
47,Mothim,,
|
||||||
|
48,Wurmple,,
|
||||||
|
49,Silcoon,,
|
||||||
|
50,Beautifly,,
|
||||||
|
51,Cascoon,,
|
||||||
|
52,Dustox,,
|
||||||
|
53,Combee,,
|
||||||
|
54,Vespiquen,,
|
||||||
|
55,Pachirisu,,
|
||||||
|
56,Buizel,,
|
||||||
|
57,Floatzel,,
|
||||||
|
58,Cherubi,,
|
||||||
|
59,Cherrim,,
|
||||||
|
60,Shellos,,
|
||||||
|
61,Gastrodon,,
|
||||||
|
62,Heracross,,
|
||||||
|
63,Aipom,,
|
||||||
|
64,Ambipom,,
|
||||||
|
65,Drifloon,,
|
||||||
|
66,Drifblim,,
|
||||||
|
67,Buneary,,
|
||||||
|
68,Lopunny,,
|
||||||
|
69,Gastly,,
|
||||||
|
70,Haunter,,
|
||||||
|
71,Gengar,,
|
||||||
|
72,Misdreavus,,
|
||||||
|
73,Mismagius,,
|
||||||
|
74,Murkrow,,
|
||||||
|
75,Honchkrow,,
|
||||||
|
76,Glameow,,
|
||||||
|
77,Purugly,,
|
||||||
|
78,Goldeen,,
|
||||||
|
79,Seaking,,
|
||||||
|
80,Barboach,,
|
||||||
|
81,Whiscash,,
|
||||||
|
82,Chingling,,
|
||||||
|
83,Chimecho,,
|
||||||
|
84,Stunky,,
|
||||||
|
85,Skuntank,,
|
||||||
|
86,Meditite,,
|
||||||
|
87,Medicham,,
|
||||||
|
88,Bronzor,,
|
||||||
|
89,Bronzong,,
|
||||||
|
90,Ponyta,,
|
||||||
|
91,Rapidash,,
|
||||||
|
92,Bonsly,,
|
||||||
|
93,Sudowoodo,,
|
||||||
|
94,Mime Jr.,,
|
||||||
|
95,Mr. Mime,,
|
||||||
|
96,Happiny,,
|
||||||
|
97,Chansey,,
|
||||||
|
98,Blissey,,
|
||||||
|
99,Cleffa,,
|
||||||
|
100,Clefairy,,
|
||||||
|
101,Clefable,,
|
||||||
|
102,Chatot,,
|
||||||
|
103,Pichu,,
|
||||||
|
104,Pikachu,,
|
||||||
|
105,Raichu,,
|
||||||
|
106,Hoothoot,,
|
||||||
|
107,Noctowl,,
|
||||||
|
108,Spiritomb,,
|
||||||
|
109,Gible,,
|
||||||
|
110,Gabite,,
|
||||||
|
111,Garchomp,,
|
||||||
|
112,Munchlax,,
|
||||||
|
113,Snorlax,,
|
||||||
|
114,Unown,,
|
||||||
|
115,Riolu,,
|
||||||
|
116,Lucario,,
|
||||||
|
117,Wooper,,
|
||||||
|
118,Quagsire,,
|
||||||
|
119,Wingull,,
|
||||||
|
120,Pelipper,,
|
||||||
|
121,Girafarig,,
|
||||||
|
122,Hippopotas,,
|
||||||
|
123,Hippowdon,,
|
||||||
|
124,Azurill,,
|
||||||
|
125,Marill,,
|
||||||
|
126,Azumarill,,
|
||||||
|
127,Skorupi,,
|
||||||
|
128,Drapion,,
|
||||||
|
129,Croagunk,,
|
||||||
|
130,Toxicroak,,
|
||||||
|
131,Carnivine,,
|
||||||
|
132,Remoraid,,
|
||||||
|
133,Octillery,,
|
||||||
|
134,Finneon,,
|
||||||
|
135,Lumineon,,
|
||||||
|
136,Tentacool,,
|
||||||
|
137,Tentacruel,,
|
||||||
|
138,Feebas,,
|
||||||
|
139,Milotic,,
|
||||||
|
140,Mantyke,,
|
||||||
|
141,Mantine,,
|
||||||
|
142,Snover,,
|
||||||
|
143,Abomasnow,,
|
||||||
|
144,Sneasel,,
|
||||||
|
145,Weavile,,
|
||||||
|
146,Uxie,,
|
||||||
|
147,Mesprit,,
|
||||||
|
148,Azelf,,
|
||||||
|
149,Dialga,,
|
||||||
|
150,Palkia,,
|
||||||
|
151,Manaphy,,
|
||||||
|
152,Rotom,,
|
||||||
|
153,Gligar,,
|
||||||
|
154,Gliscor,,
|
||||||
|
155,Nosepass,,
|
||||||
|
156,Probopass,,
|
||||||
|
157,Ralts,,
|
||||||
|
158,Kirlia,,
|
||||||
|
159,Gardevoir,,
|
||||||
|
160,Gallade,,
|
||||||
|
161,Lickitung,,
|
||||||
|
162,Lickilicky,,
|
||||||
|
163,Eevee,,
|
||||||
|
164,Vaporeon,,
|
||||||
|
165,Jolteon,,
|
||||||
|
166,Flareon,,
|
||||||
|
167,Espeon,,
|
||||||
|
168,Umbreon,,
|
||||||
|
169,Leafeon,,
|
||||||
|
170,Glaceon,,
|
||||||
|
171,Swablu,,
|
||||||
|
172,Altaria,,
|
||||||
|
173,Togepi,,
|
||||||
|
174,Togetic,,
|
||||||
|
175,Togekiss,,
|
||||||
|
176,Houndour,,
|
||||||
|
177,Houndoom,,
|
||||||
|
178,Magnemite,,
|
||||||
|
179,Magneton,,
|
||||||
|
180,Magnezone,,
|
||||||
|
181,Tangela,,
|
||||||
|
182,Tangrowth,,
|
||||||
|
183,Yanma,,
|
||||||
|
184,Yanmega,,
|
||||||
|
185,Tropius,,
|
||||||
|
186,Rhyhorn,,
|
||||||
|
187,Rhydon,,
|
||||||
|
188,Rhyperior,,
|
||||||
|
189,Duskull,,
|
||||||
|
190,Dusclops,,
|
||||||
|
191,Dusknoir,,
|
||||||
|
192,Porygon,,
|
||||||
|
193,Porygon2,,
|
||||||
|
194,Porygon-Z,,
|
||||||
|
195,Scyther,,
|
||||||
|
196,Scizor,,
|
||||||
|
197,Elekid,,
|
||||||
|
198,Electabuzz,,
|
||||||
|
199,Electivire,,
|
||||||
|
200,Magby,,
|
||||||
|
201,Magmar,,
|
||||||
|
202,Magmortar,,
|
||||||
|
203,Swinub,,
|
||||||
|
204,Piloswine,,
|
||||||
|
205,Mamoswine,,
|
||||||
|
206,Snorunt,,
|
||||||
|
207,Glalie,,
|
||||||
|
208,Froslass,,
|
||||||
|
209,Absol,,
|
||||||
|
210,Giratina,,
|
||||||
|
@@ -0,0 +1,152 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Bulbasaur,,
|
||||||
|
2,Ivysaur,,
|
||||||
|
3,Venusaur,,
|
||||||
|
4,Charmander,,
|
||||||
|
5,Charmeleon,,
|
||||||
|
6,Charizard,,
|
||||||
|
7,Squirtle,,
|
||||||
|
8,Wartortle,,
|
||||||
|
9,Blastoise,,
|
||||||
|
10,Caterpie,,
|
||||||
|
11,Metapod,,
|
||||||
|
12,Butterfree,,
|
||||||
|
13,Weedle,,
|
||||||
|
14,Kakuna,,
|
||||||
|
15,Beedrill,,
|
||||||
|
16,Pidgey,,
|
||||||
|
17,Pidgeotto,,
|
||||||
|
18,Pidgeot,,
|
||||||
|
19,Rattata,,
|
||||||
|
20,Raticate,,
|
||||||
|
21,Spearow,,
|
||||||
|
22,Fearow,,
|
||||||
|
23,Ekans,,
|
||||||
|
24,Arbok,,
|
||||||
|
25,Pikachu,,
|
||||||
|
26,Raichu,,
|
||||||
|
27,Sandshrew,,
|
||||||
|
28,Sandslash,,
|
||||||
|
29,Nidoran♀,,
|
||||||
|
30,Nidorina,,
|
||||||
|
31,Nidoqueen,,
|
||||||
|
32,Nidoran♂,,
|
||||||
|
33,Nidorino,,
|
||||||
|
34,Nidoking,,
|
||||||
|
35,Clefairy,,
|
||||||
|
36,Clefable,,
|
||||||
|
37,Vulpix,,
|
||||||
|
38,Ninetales,,
|
||||||
|
39,Jigglypuff,,
|
||||||
|
40,Wigglytuff,,
|
||||||
|
41,Zubat,,
|
||||||
|
42,Golbat,,
|
||||||
|
43,Oddish,,
|
||||||
|
44,Gloom,,
|
||||||
|
45,Vileplume,,
|
||||||
|
46,Paras,,
|
||||||
|
47,Parasect,,
|
||||||
|
48,Venonat,,
|
||||||
|
49,Venomoth,,
|
||||||
|
50,Diglett,,
|
||||||
|
51,Dugtrio,,
|
||||||
|
52,Meowth,,
|
||||||
|
53,Persian,,
|
||||||
|
54,Psyduck,,
|
||||||
|
55,Golduck,,
|
||||||
|
56,Mankey,,
|
||||||
|
57,Primeape,,
|
||||||
|
58,Growlithe,,
|
||||||
|
59,Arcanine,,
|
||||||
|
60,Poliwag,,
|
||||||
|
61,Poliwhirl,,
|
||||||
|
62,Poliwrath,,
|
||||||
|
63,Abra,,
|
||||||
|
64,Kadabra,,
|
||||||
|
65,Alakazam,,
|
||||||
|
66,Machop,,
|
||||||
|
67,Machoke,,
|
||||||
|
68,Machamp,,
|
||||||
|
69,Bellsprout,,
|
||||||
|
70,Weepinbell,,
|
||||||
|
71,Victreebel,,
|
||||||
|
72,Tentacool,,
|
||||||
|
73,Tentacruel,,
|
||||||
|
74,Geodude,,
|
||||||
|
75,Graveler,,
|
||||||
|
76,Golem,,
|
||||||
|
77,Ponyta,,
|
||||||
|
78,Rapidash,,
|
||||||
|
79,Slowpoke,,
|
||||||
|
80,Slowbro,,
|
||||||
|
81,Magnemite,,
|
||||||
|
82,Magneton,,
|
||||||
|
83,Farfetch’d,,
|
||||||
|
84,Doduo,,
|
||||||
|
85,Dodrio,,
|
||||||
|
86,Seel,,
|
||||||
|
87,Dewgong,,
|
||||||
|
88,Grimer,,
|
||||||
|
89,Muk,,
|
||||||
|
90,Shellder,,
|
||||||
|
91,Cloyster,,
|
||||||
|
92,Gastly,,
|
||||||
|
93,Haunter,,
|
||||||
|
94,Gengar,,
|
||||||
|
95,Onix,,
|
||||||
|
96,Drowzee,,
|
||||||
|
97,Hypno,,
|
||||||
|
98,Krabby,,
|
||||||
|
99,Kingler,,
|
||||||
|
100,Voltorb,,
|
||||||
|
101,Electrode,,
|
||||||
|
102,Exeggcute,,
|
||||||
|
103,Exeggutor,,
|
||||||
|
104,Cubone,,
|
||||||
|
105,Marowak,,
|
||||||
|
106,Hitmonlee,,
|
||||||
|
107,Hitmonchan,,
|
||||||
|
108,Lickitung,,
|
||||||
|
109,Koffing,,
|
||||||
|
110,Weezing,,
|
||||||
|
111,Rhyhorn,,
|
||||||
|
112,Rhydon,,
|
||||||
|
113,Chansey,,
|
||||||
|
114,Tangela,,
|
||||||
|
115,Kangaskhan,,
|
||||||
|
116,Horsea,,
|
||||||
|
117,Seadra,,
|
||||||
|
118,Goldeen,,
|
||||||
|
119,Seaking,,
|
||||||
|
120,Staryu,,
|
||||||
|
121,Starmie,,
|
||||||
|
122,Mr. Mime,,
|
||||||
|
123,Scyther,,
|
||||||
|
124,Jynx,,
|
||||||
|
125,Electabuzz,,
|
||||||
|
126,Magmar,,
|
||||||
|
127,Pinsir,,
|
||||||
|
128,Tauros,,
|
||||||
|
129,Magikarp,,
|
||||||
|
130,Gyarados,,
|
||||||
|
131,Lapras,,
|
||||||
|
132,Ditto,,
|
||||||
|
133,Eevee,,
|
||||||
|
134,Vaporeon,,
|
||||||
|
135,Jolteon,,
|
||||||
|
136,Flareon,,
|
||||||
|
137,Porygon,,
|
||||||
|
138,Omanyte,,
|
||||||
|
139,Omastar,,
|
||||||
|
140,Kabuto,,
|
||||||
|
141,Kabutops,,
|
||||||
|
142,Aerodactyl,,
|
||||||
|
143,Snorlax,,
|
||||||
|
144,Articuno,,
|
||||||
|
145,Zapdos,,
|
||||||
|
146,Moltres,,
|
||||||
|
147,Dratini,,
|
||||||
|
148,Dragonair,,
|
||||||
|
149,Dragonite,,
|
||||||
|
150,Mewtwo,,
|
||||||
|
151,Mew,,
|
||||||
|
@@ -0,0 +1,203 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Treecko,,
|
||||||
|
2,Grovyle,,
|
||||||
|
3,Sceptile,,
|
||||||
|
4,Torchic,,
|
||||||
|
5,Combusken,,
|
||||||
|
6,Blaziken,,
|
||||||
|
7,Mudkip,,
|
||||||
|
8,Marshtomp,,
|
||||||
|
9,Swampert,,
|
||||||
|
10,Poochyena,,
|
||||||
|
11,Mightyena,,
|
||||||
|
12,Zigzagoon,,
|
||||||
|
13,Linoone,,
|
||||||
|
14,Wurmple,,
|
||||||
|
15,Silcoon,,
|
||||||
|
16,Beautifly,,
|
||||||
|
17,Cascoon,,
|
||||||
|
18,Dustox,,
|
||||||
|
19,Lotad,,
|
||||||
|
20,Lombre,,
|
||||||
|
21,Ludicolo,,
|
||||||
|
22,Seedot,,
|
||||||
|
23,Nuzleaf,,
|
||||||
|
24,Shiftry,,
|
||||||
|
25,Taillow,,
|
||||||
|
26,Swellow,,
|
||||||
|
27,Wingull,,
|
||||||
|
28,Pelipper,,
|
||||||
|
29,Ralts,,
|
||||||
|
30,Kirlia,,
|
||||||
|
31,Gardevoir,,
|
||||||
|
32,Surskit,,
|
||||||
|
33,Masquerain,,
|
||||||
|
34,Shroomish,,
|
||||||
|
35,Breloom,,
|
||||||
|
36,Slakoth,,
|
||||||
|
37,Vigoroth,,
|
||||||
|
38,Slaking,,
|
||||||
|
39,Abra,,
|
||||||
|
40,Kadabra,,
|
||||||
|
41,Alakazam,,
|
||||||
|
42,Nincada,,
|
||||||
|
43,Ninjask,,
|
||||||
|
44,Shedinja,,
|
||||||
|
45,Whismur,,
|
||||||
|
46,Loudred,,
|
||||||
|
47,Exploud,,
|
||||||
|
48,Makuhita,,
|
||||||
|
49,Hariyama,,
|
||||||
|
50,Goldeen,,
|
||||||
|
51,Seaking,,
|
||||||
|
52,Magikarp,,
|
||||||
|
53,Gyarados,,
|
||||||
|
54,Azurill,,
|
||||||
|
55,Marill,,
|
||||||
|
56,Azumarill,,
|
||||||
|
57,Geodude,,
|
||||||
|
58,Graveler,,
|
||||||
|
59,Golem,,
|
||||||
|
60,Nosepass,,
|
||||||
|
61,Skitty,,
|
||||||
|
62,Delcatty,,
|
||||||
|
63,Zubat,,
|
||||||
|
64,Golbat,,
|
||||||
|
65,Crobat,,
|
||||||
|
66,Tentacool,,
|
||||||
|
67,Tentacruel,,
|
||||||
|
68,Sableye,,
|
||||||
|
69,Mawile,,
|
||||||
|
70,Aron,,
|
||||||
|
71,Lairon,,
|
||||||
|
72,Aggron,,
|
||||||
|
73,Machop,,
|
||||||
|
74,Machoke,,
|
||||||
|
75,Machamp,,
|
||||||
|
76,Meditite,,
|
||||||
|
77,Medicham,,
|
||||||
|
78,Electrike,,
|
||||||
|
79,Manectric,,
|
||||||
|
80,Plusle,,
|
||||||
|
81,Minun,,
|
||||||
|
82,Magnemite,,
|
||||||
|
83,Magneton,,
|
||||||
|
84,Voltorb,,
|
||||||
|
85,Electrode,,
|
||||||
|
86,Volbeat,,
|
||||||
|
87,Illumise,,
|
||||||
|
88,Oddish,,
|
||||||
|
89,Gloom,,
|
||||||
|
90,Vileplume,,
|
||||||
|
91,Bellossom,,
|
||||||
|
92,Doduo,,
|
||||||
|
93,Dodrio,,
|
||||||
|
94,Roselia,,
|
||||||
|
95,Gulpin,,
|
||||||
|
96,Swalot,,
|
||||||
|
97,Carvanha,,
|
||||||
|
98,Sharpedo,,
|
||||||
|
99,Wailmer,,
|
||||||
|
100,Wailord,,
|
||||||
|
101,Numel,,
|
||||||
|
102,Camerupt,,
|
||||||
|
103,Slugma,,
|
||||||
|
104,Magcargo,,
|
||||||
|
105,Torkoal,,
|
||||||
|
106,Grimer,,
|
||||||
|
107,Muk,,
|
||||||
|
108,Koffing,,
|
||||||
|
109,Weezing,,
|
||||||
|
110,Spoink,,
|
||||||
|
111,Grumpig,,
|
||||||
|
112,Sandshrew,,
|
||||||
|
113,Sandslash,,
|
||||||
|
114,Spinda,,
|
||||||
|
115,Skarmory,,
|
||||||
|
116,Trapinch,,
|
||||||
|
117,Vibrava,,
|
||||||
|
118,Flygon,,
|
||||||
|
119,Cacnea,,
|
||||||
|
120,Cacturne,,
|
||||||
|
121,Swablu,,
|
||||||
|
122,Altaria,,
|
||||||
|
123,Zangoose,,
|
||||||
|
124,Seviper,,
|
||||||
|
125,Lunatone,,
|
||||||
|
126,Solrock,,
|
||||||
|
127,Barboach,,
|
||||||
|
128,Whiscash,,
|
||||||
|
129,Corphish,,
|
||||||
|
130,Crawdaunt,,
|
||||||
|
131,Baltoy,,
|
||||||
|
132,Claydol,,
|
||||||
|
133,Lileep,,
|
||||||
|
134,Cradily,,
|
||||||
|
135,Anorith,,
|
||||||
|
136,Armaldo,,
|
||||||
|
137,Igglybuff,,
|
||||||
|
138,Jigglypuff,,
|
||||||
|
139,Wigglytuff,,
|
||||||
|
140,Feebas,,
|
||||||
|
141,Milotic,,
|
||||||
|
142,Castform,,
|
||||||
|
143,Staryu,,
|
||||||
|
144,Starmie,,
|
||||||
|
145,Kecleon,,
|
||||||
|
146,Shuppet,,
|
||||||
|
147,Banette,,
|
||||||
|
148,Duskull,,
|
||||||
|
149,Dusclops,,
|
||||||
|
150,Tropius,,
|
||||||
|
151,Chimecho,,
|
||||||
|
152,Absol,,
|
||||||
|
153,Vulpix,,
|
||||||
|
154,Ninetales,,
|
||||||
|
155,Pichu,,
|
||||||
|
156,Pikachu,,
|
||||||
|
157,Raichu,,
|
||||||
|
158,Psyduck,,
|
||||||
|
159,Golduck,,
|
||||||
|
160,Wynaut,,
|
||||||
|
161,Wobbuffet,,
|
||||||
|
162,Natu,,
|
||||||
|
163,Xatu,,
|
||||||
|
164,Girafarig,,
|
||||||
|
165,Phanpy,,
|
||||||
|
166,Donphan,,
|
||||||
|
167,Pinsir,,
|
||||||
|
168,Heracross,,
|
||||||
|
169,Rhyhorn,,
|
||||||
|
170,Rhydon,,
|
||||||
|
171,Snorunt,,
|
||||||
|
172,Glalie,,
|
||||||
|
173,Spheal,,
|
||||||
|
174,Sealeo,,
|
||||||
|
175,Walrein,,
|
||||||
|
176,Clamperl,,
|
||||||
|
177,Huntail,,
|
||||||
|
178,Gorebyss,,
|
||||||
|
179,Relicanth,,
|
||||||
|
180,Corsola,,
|
||||||
|
181,Chinchou,,
|
||||||
|
182,Lanturn,,
|
||||||
|
183,Luvdisc,,
|
||||||
|
184,Horsea,,
|
||||||
|
185,Seadra,,
|
||||||
|
186,Kingdra,,
|
||||||
|
187,Bagon,,
|
||||||
|
188,Shelgon,,
|
||||||
|
189,Salamence,,
|
||||||
|
190,Beldum,,
|
||||||
|
191,Metang,,
|
||||||
|
192,Metagross,,
|
||||||
|
193,Regirock,,
|
||||||
|
194,Regice,,
|
||||||
|
195,Registeel,,
|
||||||
|
196,Latias,,
|
||||||
|
197,Latios,,
|
||||||
|
198,Kyogre,,
|
||||||
|
199,Groudon,,
|
||||||
|
200,Rayquaza,,
|
||||||
|
201,Jirachi,,
|
||||||
|
202,Deoxys,,
|
||||||
|
@@ -0,0 +1,244 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Doduo,,
|
||||||
|
2,Dodrio,,
|
||||||
|
3,Exeggcute,,
|
||||||
|
4,Exeggutor,,
|
||||||
|
5,Rhyhorn,,
|
||||||
|
6,Rhydon,,
|
||||||
|
7,Rhyperior,,
|
||||||
|
8,Venonat,,
|
||||||
|
9,Venomoth,,
|
||||||
|
10,Elekid,,
|
||||||
|
11,Electabuzz,,
|
||||||
|
12,Electivire,,
|
||||||
|
13,Magby,,
|
||||||
|
14,Magmar,,
|
||||||
|
15,Magmortar,,
|
||||||
|
16,Happiny,,
|
||||||
|
17,Chansey,,
|
||||||
|
18,Blissey,,
|
||||||
|
19,Scyther,,
|
||||||
|
20,Scizor,,
|
||||||
|
21,Kleavor,,
|
||||||
|
22,Tauros,,
|
||||||
|
23,Blitzle,,
|
||||||
|
24,Zebstrika,,
|
||||||
|
25,Girafarig,,
|
||||||
|
26,Farigiraf,,
|
||||||
|
27,Sandile,,
|
||||||
|
28,Krokorok,,
|
||||||
|
29,Krookodile,,
|
||||||
|
30,Rellor,,
|
||||||
|
31,Rabsca,,
|
||||||
|
32,Rufflet,,
|
||||||
|
33,Braviary,,
|
||||||
|
34,Vullaby,,
|
||||||
|
35,Mandibuzz,,
|
||||||
|
36,Litleo,,
|
||||||
|
37,Pyroar,,
|
||||||
|
38,Deerling,,
|
||||||
|
39,Sawsbuck,,
|
||||||
|
40,Smeargle,,
|
||||||
|
41,Rotom,,
|
||||||
|
42,Milcery,,
|
||||||
|
43,Alcremie,,
|
||||||
|
44,Trapinch,,
|
||||||
|
45,Vibrava,,
|
||||||
|
46,Flygon,,
|
||||||
|
47,Pikipek,,
|
||||||
|
48,Trumbeak,,
|
||||||
|
49,Toucannon,,
|
||||||
|
50,Tentacool,,
|
||||||
|
51,Tentacruel,,
|
||||||
|
52,Horsea,,
|
||||||
|
53,Seadra,,
|
||||||
|
54,Kingdra,,
|
||||||
|
55,Bruxish,,
|
||||||
|
56,Cottonee,,
|
||||||
|
57,Whimsicott,,
|
||||||
|
58,Comfey,,
|
||||||
|
59,Slakoth,,
|
||||||
|
60,Vigoroth,,
|
||||||
|
61,Slaking,,
|
||||||
|
62,Oddish,,
|
||||||
|
63,Gloom,,
|
||||||
|
64,Vileplume,,
|
||||||
|
65,Bellossom,,
|
||||||
|
66,Diglett,,
|
||||||
|
67,Dugtrio,,
|
||||||
|
68,Grimer,,
|
||||||
|
69,Muk,,
|
||||||
|
70,Zangoose,,
|
||||||
|
71,Seviper,,
|
||||||
|
72,Crabrawler,,
|
||||||
|
73,Crabominable,,
|
||||||
|
74,Oricorio,,
|
||||||
|
75,Slowpoke,,
|
||||||
|
76,Slowbro,,
|
||||||
|
77,Slowking,,
|
||||||
|
78,Chinchou,,
|
||||||
|
79,Lanturn,,
|
||||||
|
80,Inkay,,
|
||||||
|
81,Malamar,,
|
||||||
|
82,Luvdisc,,
|
||||||
|
83,Finneon,,
|
||||||
|
84,Lumineon,,
|
||||||
|
85,Alomomola,,
|
||||||
|
86,Torkoal,,
|
||||||
|
87,Fletchling,,
|
||||||
|
88,Fletchinder,,
|
||||||
|
89,Talonflame,,
|
||||||
|
90,Dewpider,,
|
||||||
|
91,Araquanid,,
|
||||||
|
92,Tyrogue,,
|
||||||
|
93,Hitmonlee,,
|
||||||
|
94,Hitmonchan,,
|
||||||
|
95,Hitmontop,,
|
||||||
|
96,Geodude,,
|
||||||
|
97,Graveler,,
|
||||||
|
98,Golem,,
|
||||||
|
99,Drilbur,,
|
||||||
|
100,Excadrill,,
|
||||||
|
101,Gothita,,
|
||||||
|
102,Gothorita,,
|
||||||
|
103,Gothitelle,,
|
||||||
|
104,Espurr,,
|
||||||
|
105,Meowstic,,
|
||||||
|
106,Minior,,
|
||||||
|
107,Cranidos,,
|
||||||
|
108,Rampardos,,
|
||||||
|
109,Shieldon,,
|
||||||
|
110,Bastiodon,,
|
||||||
|
111,Minccino,,
|
||||||
|
112,Cinccino,,
|
||||||
|
113,Skarmory,,
|
||||||
|
114,Swablu,,
|
||||||
|
115,Altaria,,
|
||||||
|
116,Magnemite,,
|
||||||
|
117,Magneton,,
|
||||||
|
118,Magnezone,,
|
||||||
|
119,Plusle,,
|
||||||
|
120,Minun,,
|
||||||
|
121,Scraggy,,
|
||||||
|
122,Scrafty,,
|
||||||
|
123,Golett,,
|
||||||
|
124,Golurk,,
|
||||||
|
125,Numel,,
|
||||||
|
126,Camerupt,,
|
||||||
|
127,Sinistea,,
|
||||||
|
128,Polteageist,,
|
||||||
|
129,Porygon,,
|
||||||
|
130,Porygon2,,
|
||||||
|
131,Porygon-Z,,
|
||||||
|
132,Joltik,,
|
||||||
|
133,Galvantula,,
|
||||||
|
134,Tynamo,,
|
||||||
|
135,Eelektrik,,
|
||||||
|
136,Eelektross,,
|
||||||
|
137,Beldum,,
|
||||||
|
138,Metang,,
|
||||||
|
139,Metagross,,
|
||||||
|
140,Axew,,
|
||||||
|
141,Fraxure,,
|
||||||
|
142,Haxorus,,
|
||||||
|
143,Seel,,
|
||||||
|
144,Dewgong,,
|
||||||
|
145,Lapras,,
|
||||||
|
146,Qwilfish,,
|
||||||
|
147,Overqwil,,
|
||||||
|
148,Solosis,,
|
||||||
|
149,Duosion,,
|
||||||
|
150,Reuniclus,,
|
||||||
|
151,Snubbull,,
|
||||||
|
152,Granbull,,
|
||||||
|
153,Cubchoo,,
|
||||||
|
154,Beartic,,
|
||||||
|
155,Sandshrew,,
|
||||||
|
156,Sandslash,,
|
||||||
|
157,Vulpix,,
|
||||||
|
158,Ninetales,,
|
||||||
|
159,Snover,,
|
||||||
|
160,Abomasnow,,
|
||||||
|
161,Duraludon,,
|
||||||
|
162,Archaludon,,
|
||||||
|
163,Hydrapple,,
|
||||||
|
164,Bulbasaur,,
|
||||||
|
165,Ivysaur,,
|
||||||
|
166,Venusaur,,
|
||||||
|
167,Charmander,,
|
||||||
|
168,Charmeleon,,
|
||||||
|
169,Charizard,,
|
||||||
|
170,Squirtle,,
|
||||||
|
171,Wartortle,,
|
||||||
|
172,Blastoise,,
|
||||||
|
173,Chikorita,,
|
||||||
|
174,Bayleef,,
|
||||||
|
175,Meganium,,
|
||||||
|
176,Cyndaquil,,
|
||||||
|
177,Quilava,,
|
||||||
|
178,Typhlosion,,
|
||||||
|
179,Totodile,,
|
||||||
|
180,Croconaw,,
|
||||||
|
181,Feraligatr,,
|
||||||
|
182,Treecko,,
|
||||||
|
183,Grovyle,,
|
||||||
|
184,Sceptile,,
|
||||||
|
185,Torchic,,
|
||||||
|
186,Combusken,,
|
||||||
|
187,Blaziken,,
|
||||||
|
188,Mudkip,,
|
||||||
|
189,Marshtomp,,
|
||||||
|
190,Swampert,,
|
||||||
|
191,Turtwig,,
|
||||||
|
192,Grotle,,
|
||||||
|
193,Torterra,,
|
||||||
|
194,Chimchar,,
|
||||||
|
195,Monferno,,
|
||||||
|
196,Infernape,,
|
||||||
|
197,Piplup,,
|
||||||
|
198,Prinplup,,
|
||||||
|
199,Empoleon,,
|
||||||
|
200,Snivy,,
|
||||||
|
201,Servine,,
|
||||||
|
202,Serperior,,
|
||||||
|
203,Tepig,,
|
||||||
|
204,Pignite,,
|
||||||
|
205,Emboar,,
|
||||||
|
206,Oshawott,,
|
||||||
|
207,Dewott,,
|
||||||
|
208,Samurott,,
|
||||||
|
209,Chespin,,
|
||||||
|
210,Quilladin,,
|
||||||
|
211,Chesnaught,,
|
||||||
|
212,Fennekin,,
|
||||||
|
213,Braixen,,
|
||||||
|
214,Delphox,,
|
||||||
|
215,Froakie,,
|
||||||
|
216,Frogadier,,
|
||||||
|
217,Greninja,,
|
||||||
|
218,Rowlet,,
|
||||||
|
219,Dartrix,,
|
||||||
|
220,Decidueye,,
|
||||||
|
221,Litten,,
|
||||||
|
222,Torracat,,
|
||||||
|
223,Incineroar,,
|
||||||
|
224,Popplio,,
|
||||||
|
225,Brionne,,
|
||||||
|
226,Primarina,,
|
||||||
|
227,Grookey,,
|
||||||
|
228,Thwackey,,
|
||||||
|
229,Rillaboom,,
|
||||||
|
230,Scorbunny,,
|
||||||
|
231,Raboot,,
|
||||||
|
232,Cinderace,,
|
||||||
|
233,Sobble,,
|
||||||
|
234,Drizzile,,
|
||||||
|
235,Inteleon,,
|
||||||
|
236,Gouging Fire,,
|
||||||
|
237,Raging Bolt,,
|
||||||
|
238,Iron Crown,,
|
||||||
|
239,Iron Boulder,,
|
||||||
|
240,Terapagos,,
|
||||||
|
241,Walking Wake,,
|
||||||
|
242,Iron Leaves,,
|
||||||
|
243,Pecharunt,,
|
||||||
|
@@ -0,0 +1,201 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Spinarak,,
|
||||||
|
2,Ariados,,
|
||||||
|
3,Yanma,,
|
||||||
|
4,Yanmega,,
|
||||||
|
5,Wooper,,
|
||||||
|
6,Quagsire,,
|
||||||
|
7,Poochyena,,
|
||||||
|
8,Mightyena,,
|
||||||
|
9,Volbeat,,
|
||||||
|
10,Illumise,,
|
||||||
|
11,Corphish,,
|
||||||
|
12,Crawdaunt,,
|
||||||
|
13,Sewaddle,,
|
||||||
|
14,Swadloon,,
|
||||||
|
15,Leavanny,,
|
||||||
|
16,Cutiefly,,
|
||||||
|
17,Ribombee,,
|
||||||
|
18,Ekans,,
|
||||||
|
19,Arbok,,
|
||||||
|
20,Pichu,,
|
||||||
|
21,Pikachu,,
|
||||||
|
22,Raichu,,
|
||||||
|
23,Bellsprout,,
|
||||||
|
24,Weepinbell,,
|
||||||
|
25,Victreebel,,
|
||||||
|
26,Sentret,,
|
||||||
|
27,Furret,,
|
||||||
|
28,Starly,,
|
||||||
|
29,Staravia,,
|
||||||
|
30,Staraptor,,
|
||||||
|
31,Fomantis,,
|
||||||
|
32,Lurantis,,
|
||||||
|
33,Applin,,
|
||||||
|
34,Flapple,,
|
||||||
|
35,Appletun,,
|
||||||
|
36,Dipplin,,
|
||||||
|
37,Vulpix,,
|
||||||
|
38,Ninetales,,
|
||||||
|
39,Poliwag,,
|
||||||
|
40,Poliwhirl,,
|
||||||
|
41,Poliwrath,,
|
||||||
|
42,Politoed,,
|
||||||
|
43,Magikarp,,
|
||||||
|
44,Gyarados,,
|
||||||
|
45,Hoothoot,,
|
||||||
|
46,Noctowl,,
|
||||||
|
47,Aipom,,
|
||||||
|
48,Ambipom,,
|
||||||
|
49,Heracross,,
|
||||||
|
50,Swinub,,
|
||||||
|
51,Piloswine,,
|
||||||
|
52,Mamoswine,,
|
||||||
|
53,Stantler,,
|
||||||
|
54,Seedot,,
|
||||||
|
55,Nuzleaf,,
|
||||||
|
56,Shiftry,,
|
||||||
|
57,Ralts,,
|
||||||
|
58,Kirlia,,
|
||||||
|
59,Gardevoir,,
|
||||||
|
60,Gallade,,
|
||||||
|
61,Kricketot,,
|
||||||
|
62,Kricketune,,
|
||||||
|
63,Pachirisu,,
|
||||||
|
64,Riolu,,
|
||||||
|
65,Lucario,,
|
||||||
|
66,Petilil,,
|
||||||
|
67,Lilligant,,
|
||||||
|
68,Phantump,,
|
||||||
|
69,Trevenant,,
|
||||||
|
70,Rockruff,,
|
||||||
|
71,Lycanroc,,
|
||||||
|
72,Skwovet,,
|
||||||
|
73,Greedent,,
|
||||||
|
74,Toedscool,,
|
||||||
|
75,Toedscruel,,
|
||||||
|
76,Poltchageist,,
|
||||||
|
77,Sinistcha,,
|
||||||
|
78,Growlithe,,
|
||||||
|
79,Arcanine,,
|
||||||
|
80,Geodude,,
|
||||||
|
81,Graveler,,
|
||||||
|
82,Golem,,
|
||||||
|
83,Bonsly,,
|
||||||
|
84,Sudowoodo,,
|
||||||
|
85,Timburr,,
|
||||||
|
86,Gurdurr,,
|
||||||
|
87,Conkeldurr,,
|
||||||
|
88,Noibat,,
|
||||||
|
89,Noivern,,
|
||||||
|
90,Arrokuda,,
|
||||||
|
91,Barraskewda,,
|
||||||
|
92,Hatenna,,
|
||||||
|
93,Hattrem,,
|
||||||
|
94,Hatterene,,
|
||||||
|
95,Morpeko,,
|
||||||
|
96,Orthworm,,
|
||||||
|
97,Tandemaus,,
|
||||||
|
98,Maushold,,
|
||||||
|
99,Mankey,,
|
||||||
|
100,Primeape,,
|
||||||
|
101,Annihilape,,
|
||||||
|
102,Munchlax,,
|
||||||
|
103,Snorlax,,
|
||||||
|
104,Lotad,,
|
||||||
|
105,Lombre,,
|
||||||
|
106,Ludicolo,,
|
||||||
|
107,Nosepass,,
|
||||||
|
108,Probopass,,
|
||||||
|
109,Shinx,,
|
||||||
|
110,Luxio,,
|
||||||
|
111,Luxray,,
|
||||||
|
112,Grubbin,,
|
||||||
|
113,Charjabug,,
|
||||||
|
114,Vikavolt,,
|
||||||
|
115,Oricorio,,
|
||||||
|
116,Sandshrew,,
|
||||||
|
117,Sandslash,,
|
||||||
|
118,Gastly,,
|
||||||
|
119,Haunter,,
|
||||||
|
120,Gengar,,
|
||||||
|
121,Gligar,,
|
||||||
|
122,Gliscor,,
|
||||||
|
123,Houndour,,
|
||||||
|
124,Houndoom,,
|
||||||
|
125,Spoink,,
|
||||||
|
126,Grumpig,,
|
||||||
|
127,Vullaby,,
|
||||||
|
128,Mandibuzz,,
|
||||||
|
129,Mudbray,,
|
||||||
|
130,Mudsdale,,
|
||||||
|
131,Jangmo-o,,
|
||||||
|
132,Hakamo-o,,
|
||||||
|
133,Kommo-o,,
|
||||||
|
134,Bombirdier,,
|
||||||
|
135,Koffing,,
|
||||||
|
136,Weezing,,
|
||||||
|
137,Mienfoo,,
|
||||||
|
138,Mienshao,,
|
||||||
|
139,Duskull,,
|
||||||
|
140,Dusclops,,
|
||||||
|
141,Dusknoir,,
|
||||||
|
142,Chingling,,
|
||||||
|
143,Chimecho,,
|
||||||
|
144,Slugma,,
|
||||||
|
145,Magcargo,,
|
||||||
|
146,Litwick,,
|
||||||
|
147,Lampent,,
|
||||||
|
148,Chandelure,,
|
||||||
|
149,Surskit,,
|
||||||
|
150,Masquerain,,
|
||||||
|
151,Cleffa,,
|
||||||
|
152,Clefairy,,
|
||||||
|
153,Clefable,,
|
||||||
|
154,Bronzor,,
|
||||||
|
155,Bronzong,,
|
||||||
|
156,Glimmet,,
|
||||||
|
157,Glimmora,,
|
||||||
|
158,Feebas,,
|
||||||
|
159,Milotic,,
|
||||||
|
160,Dunsparce,,
|
||||||
|
161,Dudunsparce,,
|
||||||
|
162,Barboach,,
|
||||||
|
163,Whiscash,,
|
||||||
|
164,Gible,,
|
||||||
|
165,Gabite,,
|
||||||
|
166,Garchomp,,
|
||||||
|
167,Carbink,,
|
||||||
|
168,Salandit,,
|
||||||
|
169,Salazzle,,
|
||||||
|
170,Sneasel,,
|
||||||
|
171,Weavile,,
|
||||||
|
172,Snorunt,,
|
||||||
|
173,Glalie,,
|
||||||
|
174,Froslass,,
|
||||||
|
175,Tynamo,,
|
||||||
|
176,Eelektrik,,
|
||||||
|
177,Eelektross,,
|
||||||
|
178,Goomy,,
|
||||||
|
179,Sliggoo,,
|
||||||
|
180,Goodra,,
|
||||||
|
181,Ducklett,,
|
||||||
|
182,Swanna,,
|
||||||
|
183,Chewtle,,
|
||||||
|
184,Drednaw,,
|
||||||
|
185,Cramorant,,
|
||||||
|
186,Pawniard,,
|
||||||
|
187,Bisharp,,
|
||||||
|
188,Kingambit,,
|
||||||
|
189,Mimikyu,,
|
||||||
|
190,Impidimp,,
|
||||||
|
191,Morgrem,,
|
||||||
|
192,Grimmsnarl,,
|
||||||
|
193,Indeedee,,
|
||||||
|
194,Basculin,,
|
||||||
|
195,Basculegion,,
|
||||||
|
196,Ursaluna,,
|
||||||
|
197,Okidogi,,
|
||||||
|
198,Munkidori,,
|
||||||
|
199,Fezandipiti,,
|
||||||
|
200,Ogerpon,,
|
||||||
|
@@ -0,0 +1,401 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Sprigatito,,
|
||||||
|
2,Floragato,,
|
||||||
|
3,Meowscarada,,
|
||||||
|
4,Fuecoco,,
|
||||||
|
5,Crocalor,,
|
||||||
|
6,Skeledirge,,
|
||||||
|
7,Quaxly,,
|
||||||
|
8,Quaxwell,,
|
||||||
|
9,Quaquaval,,
|
||||||
|
10,Lechonk,,
|
||||||
|
11,Oinkologne,,
|
||||||
|
12,Tarountula,,
|
||||||
|
13,Spidops,,
|
||||||
|
14,Nymble,,
|
||||||
|
15,Lokix,,
|
||||||
|
16,Hoppip,,
|
||||||
|
17,Skiploom,,
|
||||||
|
18,Jumpluff,,
|
||||||
|
19,Fletchling,,
|
||||||
|
20,Fletchinder,,
|
||||||
|
21,Talonflame,,
|
||||||
|
22,Pawmi,,
|
||||||
|
23,Pawmo,,
|
||||||
|
24,Pawmot,,
|
||||||
|
25,Houndour,,
|
||||||
|
26,Houndoom,,
|
||||||
|
27,Yungoos,,
|
||||||
|
28,Gumshoos,,
|
||||||
|
29,Skwovet,,
|
||||||
|
30,Greedent,,
|
||||||
|
31,Sunkern,,
|
||||||
|
32,Sunflora,,
|
||||||
|
33,Kricketot,,
|
||||||
|
34,Kricketune,,
|
||||||
|
35,Scatterbug,,
|
||||||
|
36,Spewpa,,
|
||||||
|
37,Vivillon,,
|
||||||
|
38,Combee,,
|
||||||
|
39,Vespiquen,,
|
||||||
|
40,Rookidee,,
|
||||||
|
41,Corvisquire,,
|
||||||
|
42,Corviknight,,
|
||||||
|
43,Happiny,,
|
||||||
|
44,Chansey,,
|
||||||
|
45,Blissey,,
|
||||||
|
46,Azurill,,
|
||||||
|
47,Marill,,
|
||||||
|
48,Azumarill,,
|
||||||
|
49,Surskit,,
|
||||||
|
50,Masquerain,,
|
||||||
|
51,Buizel,,
|
||||||
|
52,Floatzel,,
|
||||||
|
53,Wooper,,
|
||||||
|
54,Clodsire,,
|
||||||
|
55,Psyduck,,
|
||||||
|
56,Golduck,,
|
||||||
|
57,Chewtle,,
|
||||||
|
58,Drednaw,,
|
||||||
|
59,Igglybuff,,
|
||||||
|
60,Jigglypuff,,
|
||||||
|
61,Wigglytuff,,
|
||||||
|
62,Ralts,,
|
||||||
|
63,Kirlia,,
|
||||||
|
64,Gardevoir,,
|
||||||
|
65,Gallade,,
|
||||||
|
66,Drowzee,,
|
||||||
|
67,Hypno,,
|
||||||
|
68,Gastly,,
|
||||||
|
69,Haunter,,
|
||||||
|
70,Gengar,,
|
||||||
|
71,Tandemaus,,
|
||||||
|
72,Maushold,,
|
||||||
|
73,Pichu,,
|
||||||
|
74,Pikachu,,
|
||||||
|
75,Raichu,,
|
||||||
|
76,Fidough,,
|
||||||
|
77,Dachsbun,,
|
||||||
|
78,Slakoth,,
|
||||||
|
79,Vigoroth,,
|
||||||
|
80,Slaking,,
|
||||||
|
81,Bounsweet,,
|
||||||
|
82,Steenee,,
|
||||||
|
83,Tsareena,,
|
||||||
|
84,Smoliv,,
|
||||||
|
85,Dolliv,,
|
||||||
|
86,Arboliva,,
|
||||||
|
87,Bonsly,,
|
||||||
|
88,Sudowoodo,,
|
||||||
|
89,Rockruff,,
|
||||||
|
90,Lycanroc,,
|
||||||
|
91,Rolycoly,,
|
||||||
|
92,Carkol,,
|
||||||
|
93,Coalossal,,
|
||||||
|
94,Shinx,,
|
||||||
|
95,Luxio,,
|
||||||
|
96,Luxray,,
|
||||||
|
97,Starly,,
|
||||||
|
98,Staravia,,
|
||||||
|
99,Staraptor,,
|
||||||
|
100,Oricorio,,
|
||||||
|
101,Mareep,,
|
||||||
|
102,Flaaffy,,
|
||||||
|
103,Ampharos,,
|
||||||
|
104,Petilil,,
|
||||||
|
105,Lilligant,,
|
||||||
|
106,Shroomish,,
|
||||||
|
107,Breloom,,
|
||||||
|
108,Applin,,
|
||||||
|
109,Flapple,,
|
||||||
|
110,Appletun,,
|
||||||
|
111,Spoink,,
|
||||||
|
112,Grumpig,,
|
||||||
|
113,Squawkabilly,,
|
||||||
|
114,Misdreavus,,
|
||||||
|
115,Mismagius,,
|
||||||
|
116,Makuhita,,
|
||||||
|
117,Hariyama,,
|
||||||
|
118,Crabrawler,,
|
||||||
|
119,Crabominable,,
|
||||||
|
120,Salandit,,
|
||||||
|
121,Salazzle,,
|
||||||
|
122,Phanpy,,
|
||||||
|
123,Donphan,,
|
||||||
|
124,Cufant,,
|
||||||
|
125,Copperajah,,
|
||||||
|
126,Gible,,
|
||||||
|
127,Gabite,,
|
||||||
|
128,Garchomp,,
|
||||||
|
129,Nacli,,
|
||||||
|
130,Naclstack,,
|
||||||
|
131,Garganacl,,
|
||||||
|
132,Wingull,,
|
||||||
|
133,Pelipper,,
|
||||||
|
134,Magikarp,,
|
||||||
|
135,Gyarados,,
|
||||||
|
136,Arrokuda,,
|
||||||
|
137,Barraskewda,,
|
||||||
|
138,Basculin,,
|
||||||
|
139,Gulpin,,
|
||||||
|
140,Swalot,,
|
||||||
|
141,Meowth,,
|
||||||
|
142,Persian,,
|
||||||
|
143,Drifloon,,
|
||||||
|
144,Drifblim,,
|
||||||
|
145,Flabébé,,
|
||||||
|
146,Floette,,
|
||||||
|
147,Florges,,
|
||||||
|
148,Diglett,,
|
||||||
|
149,Dugtrio,,
|
||||||
|
150,Torkoal,,
|
||||||
|
151,Numel,,
|
||||||
|
152,Camerupt,,
|
||||||
|
153,Bronzor,,
|
||||||
|
154,Bronzong,,
|
||||||
|
155,Axew,,
|
||||||
|
156,Fraxure,,
|
||||||
|
157,Haxorus,,
|
||||||
|
158,Mankey,,
|
||||||
|
159,Primeape,,
|
||||||
|
160,Annihilape,,
|
||||||
|
161,Meditite,,
|
||||||
|
162,Medicham,,
|
||||||
|
163,Riolu,,
|
||||||
|
164,Lucario,,
|
||||||
|
165,Charcadet,,
|
||||||
|
166,Armarouge,,
|
||||||
|
167,Ceruledge,,
|
||||||
|
168,Barboach,,
|
||||||
|
169,Whiscash,,
|
||||||
|
170,Tadbulb,,
|
||||||
|
171,Bellibolt,,
|
||||||
|
172,Goomy,,
|
||||||
|
173,Sliggoo,,
|
||||||
|
174,Goodra,,
|
||||||
|
175,Croagunk,,
|
||||||
|
176,Toxicroak,,
|
||||||
|
177,Wattrel,,
|
||||||
|
178,Kilowattrel,,
|
||||||
|
179,Eevee,,
|
||||||
|
180,Vaporeon,,
|
||||||
|
181,Jolteon,,
|
||||||
|
182,Flareon,,
|
||||||
|
183,Espeon,,
|
||||||
|
184,Umbreon,,
|
||||||
|
185,Leafeon,,
|
||||||
|
186,Glaceon,,
|
||||||
|
187,Sylveon,,
|
||||||
|
188,Dunsparce,,
|
||||||
|
189,Dudunsparce,,
|
||||||
|
190,Deerling,,
|
||||||
|
191,Sawsbuck,,
|
||||||
|
192,Girafarig,,
|
||||||
|
193,Farigiraf,,
|
||||||
|
194,Grimer,,
|
||||||
|
195,Muk,,
|
||||||
|
196,Maschiff,,
|
||||||
|
197,Mabosstiff,,
|
||||||
|
198,Toxel,,
|
||||||
|
199,Toxtricity,,
|
||||||
|
200,Dedenne,,
|
||||||
|
201,Pachirisu,,
|
||||||
|
202,Shroodle,,
|
||||||
|
203,Grafaiai,,
|
||||||
|
204,Stantler,,
|
||||||
|
205,Foongus,,
|
||||||
|
206,Amoonguss,,
|
||||||
|
207,Voltorb,,
|
||||||
|
208,Electrode,,
|
||||||
|
209,Magnemite,,
|
||||||
|
210,Magneton,,
|
||||||
|
211,Magnezone,,
|
||||||
|
212,Ditto,,
|
||||||
|
213,Growlithe,,
|
||||||
|
214,Arcanine,,
|
||||||
|
215,Teddiursa,,
|
||||||
|
216,Ursaring,,
|
||||||
|
217,Zangoose,,
|
||||||
|
218,Seviper,,
|
||||||
|
219,Swablu,,
|
||||||
|
220,Altaria,,
|
||||||
|
221,Skiddo,,
|
||||||
|
222,Gogoat,,
|
||||||
|
223,Tauros,,
|
||||||
|
224,Litleo,,
|
||||||
|
225,Pyroar,,
|
||||||
|
226,Stunky,,
|
||||||
|
227,Skuntank,,
|
||||||
|
228,Zorua,,
|
||||||
|
229,Zoroark,,
|
||||||
|
230,Sneasel,,
|
||||||
|
231,Weavile,,
|
||||||
|
232,Murkrow,,
|
||||||
|
233,Honchkrow,,
|
||||||
|
234,Gothita,,
|
||||||
|
235,Gothorita,,
|
||||||
|
236,Gothitelle,,
|
||||||
|
237,Sinistea,,
|
||||||
|
238,Polteageist,,
|
||||||
|
239,Mimikyu,,
|
||||||
|
240,Klefki,,
|
||||||
|
241,Indeedee,,
|
||||||
|
242,Bramblin,,
|
||||||
|
243,Brambleghast,,
|
||||||
|
244,Toedscool,,
|
||||||
|
245,Toedscruel,,
|
||||||
|
246,Tropius,,
|
||||||
|
247,Fomantis,,
|
||||||
|
248,Lurantis,,
|
||||||
|
249,Klawf,,
|
||||||
|
250,Capsakid,,
|
||||||
|
251,Scovillain,,
|
||||||
|
252,Cacnea,,
|
||||||
|
253,Cacturne,,
|
||||||
|
254,Rellor,,
|
||||||
|
255,Rabsca,,
|
||||||
|
256,Venonat,,
|
||||||
|
257,Venomoth,,
|
||||||
|
258,Pineco,,
|
||||||
|
259,Forretress,,
|
||||||
|
260,Scyther,,
|
||||||
|
261,Scizor,,
|
||||||
|
262,Heracross,,
|
||||||
|
263,Flittle,,
|
||||||
|
264,Espathra,,
|
||||||
|
265,Hippopotas,,
|
||||||
|
266,Hippowdon,,
|
||||||
|
267,Sandile,,
|
||||||
|
268,Krokorok,,
|
||||||
|
269,Krookodile,,
|
||||||
|
270,Silicobra,,
|
||||||
|
271,Sandaconda,,
|
||||||
|
272,Mudbray,,
|
||||||
|
273,Mudsdale,,
|
||||||
|
274,Larvesta,,
|
||||||
|
275,Volcarona,,
|
||||||
|
276,Bagon,,
|
||||||
|
277,Shelgon,,
|
||||||
|
278,Salamence,,
|
||||||
|
279,Tinkatink,,
|
||||||
|
280,Tinkatuff,,
|
||||||
|
281,Tinkaton,,
|
||||||
|
282,Hatenna,,
|
||||||
|
283,Hattrem,,
|
||||||
|
284,Hatterene,,
|
||||||
|
285,Impidimp,,
|
||||||
|
286,Morgrem,,
|
||||||
|
287,Grimmsnarl,,
|
||||||
|
288,Wiglett,,
|
||||||
|
289,Wugtrio,,
|
||||||
|
290,Bombirdier,,
|
||||||
|
291,Finizen,,
|
||||||
|
292,Palafin,,
|
||||||
|
293,Varoom,,
|
||||||
|
294,Revavroom,,
|
||||||
|
295,Cyclizar,,
|
||||||
|
296,Orthworm,,
|
||||||
|
297,Sableye,,
|
||||||
|
298,Shuppet,,
|
||||||
|
299,Banette,,
|
||||||
|
300,Falinks,,
|
||||||
|
301,Hawlucha,,
|
||||||
|
302,Spiritomb,,
|
||||||
|
303,Noibat,,
|
||||||
|
304,Noivern,,
|
||||||
|
305,Dreepy,,
|
||||||
|
306,Drakloak,,
|
||||||
|
307,Dragapult,,
|
||||||
|
308,Glimmet,,
|
||||||
|
309,Glimmora,,
|
||||||
|
310,Rotom,,
|
||||||
|
311,Greavard,,
|
||||||
|
312,Houndstone,,
|
||||||
|
313,Oranguru,,
|
||||||
|
314,Passimian,,
|
||||||
|
315,Komala,,
|
||||||
|
316,Larvitar,,
|
||||||
|
317,Pupitar,,
|
||||||
|
318,Tyranitar,,
|
||||||
|
319,Stonjourner,,
|
||||||
|
320,Eiscue,,
|
||||||
|
321,Pincurchin,,
|
||||||
|
322,Sandygast,,
|
||||||
|
323,Palossand,,
|
||||||
|
324,Slowpoke,,
|
||||||
|
325,Slowbro,,
|
||||||
|
326,Slowking,,
|
||||||
|
327,Shellos,,
|
||||||
|
328,Gastrodon,,
|
||||||
|
329,Shellder,,
|
||||||
|
330,Cloyster,,
|
||||||
|
331,Qwilfish,,
|
||||||
|
332,Luvdisc,,
|
||||||
|
333,Finneon,,
|
||||||
|
334,Lumineon,,
|
||||||
|
335,Bruxish,,
|
||||||
|
336,Alomomola,,
|
||||||
|
337,Skrelp,,
|
||||||
|
338,Dragalge,,
|
||||||
|
339,Clauncher,,
|
||||||
|
340,Clawitzer,,
|
||||||
|
341,Tynamo,,
|
||||||
|
342,Eelektrik,,
|
||||||
|
343,Eelektross,,
|
||||||
|
344,Mareanie,,
|
||||||
|
345,Toxapex,,
|
||||||
|
346,Flamigo,,
|
||||||
|
347,Dratini,,
|
||||||
|
348,Dragonair,,
|
||||||
|
349,Dragonite,,
|
||||||
|
350,Snom,,
|
||||||
|
351,Frosmoth,,
|
||||||
|
352,Snover,,
|
||||||
|
353,Abomasnow,,
|
||||||
|
354,Delibird,,
|
||||||
|
355,Cubchoo,,
|
||||||
|
356,Beartic,,
|
||||||
|
357,Snorunt,,
|
||||||
|
358,Glalie,,
|
||||||
|
359,Froslass,,
|
||||||
|
360,Cryogonal,,
|
||||||
|
361,Cetoddle,,
|
||||||
|
362,Cetitan,,
|
||||||
|
363,Bergmite,,
|
||||||
|
364,Avalugg,,
|
||||||
|
365,Rufflet,,
|
||||||
|
366,Braviary,,
|
||||||
|
367,Pawniard,,
|
||||||
|
368,Bisharp,,
|
||||||
|
369,Kingambit,,
|
||||||
|
370,Deino,,
|
||||||
|
371,Zweilous,,
|
||||||
|
372,Hydreigon,,
|
||||||
|
373,Veluza,,
|
||||||
|
374,Dondozo,,
|
||||||
|
375,Tatsugiri,,
|
||||||
|
376,Great Tusk,,
|
||||||
|
377,Scream Tail,,
|
||||||
|
378,Brute Bonnet,,
|
||||||
|
379,Flutter Mane,,
|
||||||
|
380,Slither Wing,,
|
||||||
|
381,Sandy Shocks,,
|
||||||
|
382,Iron Treads,,
|
||||||
|
383,Iron Bundle,,
|
||||||
|
384,Iron Hands,,
|
||||||
|
385,Iron Jugulis,,
|
||||||
|
386,Iron Moth,,
|
||||||
|
387,Iron Thorns,,
|
||||||
|
388,Frigibax,,
|
||||||
|
389,Arctibax,,
|
||||||
|
390,Baxcalibur,,
|
||||||
|
391,Gimmighoul,,
|
||||||
|
392,Gholdengo,,
|
||||||
|
393,Wo-Chien,,
|
||||||
|
394,Chien-Pao,,
|
||||||
|
395,Ting-Lu,,
|
||||||
|
396,Chi-Yu,,
|
||||||
|
397,Roaring Moon,,
|
||||||
|
398,Iron Valiant,,
|
||||||
|
399,Koraidon,,
|
||||||
|
400,Miraidon,,
|
||||||
|
@@ -0,0 +1,131 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Pikipek,,
|
||||||
|
2,Trumbeak,,
|
||||||
|
3,Toucannon,,
|
||||||
|
4,Yungoos,,
|
||||||
|
5,Gumshoos,,
|
||||||
|
6,Rattata,,
|
||||||
|
7,Raticate,,
|
||||||
|
8,Caterpie,,
|
||||||
|
9,Metapod,,
|
||||||
|
10,Butterfree,,
|
||||||
|
11,Grubbin,,
|
||||||
|
12,Charjabug,,
|
||||||
|
13,Vikavolt,,
|
||||||
|
14,Bonsly,,
|
||||||
|
15,Sudowoodo,,
|
||||||
|
16,Happiny,,
|
||||||
|
17,Chansey,,
|
||||||
|
18,Blissey,,
|
||||||
|
19,Wingull,,
|
||||||
|
20,Pelipper,,
|
||||||
|
21,Crabrawler,,
|
||||||
|
22,Crabominable,,
|
||||||
|
23,Gastly,,
|
||||||
|
24,Haunter,,
|
||||||
|
25,Gengar,,
|
||||||
|
26,Zubat,,
|
||||||
|
27,Golbat,,
|
||||||
|
28,Crobat,,
|
||||||
|
29,Diglett,,
|
||||||
|
30,Dugtrio,,
|
||||||
|
31,Oricorio,,
|
||||||
|
32,Psyduck,,
|
||||||
|
33,Golduck,,
|
||||||
|
34,Magikarp,,
|
||||||
|
35,Gyarados,,
|
||||||
|
36,Barboach,,
|
||||||
|
37,Whiscash,,
|
||||||
|
38,Tentacool,,
|
||||||
|
39,Tentacruel,,
|
||||||
|
40,Finneon,,
|
||||||
|
41,Lumineon,,
|
||||||
|
42,Wishiwashi,,
|
||||||
|
43,Luvdisc,,
|
||||||
|
44,Corsola,,
|
||||||
|
45,Mareanie,,
|
||||||
|
46,Toxapex,,
|
||||||
|
47,Lillipup,,
|
||||||
|
48,Herdier,,
|
||||||
|
49,Stoutland,,
|
||||||
|
50,Eevee,,
|
||||||
|
51,Vaporeon,,
|
||||||
|
52,Jolteon,,
|
||||||
|
53,Flareon,,
|
||||||
|
54,Espeon,,
|
||||||
|
55,Umbreon,,
|
||||||
|
56,Leafeon,,
|
||||||
|
57,Glaceon,,
|
||||||
|
58,Sylveon,,
|
||||||
|
59,Mudbray,,
|
||||||
|
60,Mudsdale,,
|
||||||
|
61,Igglybuff,,
|
||||||
|
62,Jigglypuff,,
|
||||||
|
63,Wigglytuff,,
|
||||||
|
64,Tauros,,
|
||||||
|
65,Miltank,,
|
||||||
|
66,Surskit,,
|
||||||
|
67,Masquerain,,
|
||||||
|
68,Dewpider,,
|
||||||
|
69,Araquanid,,
|
||||||
|
70,Fomantis,,
|
||||||
|
71,Lurantis,,
|
||||||
|
72,Morelull,,
|
||||||
|
73,Shiinotic,,
|
||||||
|
74,Paras,,
|
||||||
|
75,Parasect,,
|
||||||
|
76,Poliwag,,
|
||||||
|
77,Poliwhirl,,
|
||||||
|
78,Poliwrath,,
|
||||||
|
79,Politoed,,
|
||||||
|
80,Goldeen,,
|
||||||
|
81,Seaking,,
|
||||||
|
82,Feebas,,
|
||||||
|
83,Milotic,,
|
||||||
|
84,Alomomola,,
|
||||||
|
85,Fletchling,,
|
||||||
|
86,Fletchinder,,
|
||||||
|
87,Talonflame,,
|
||||||
|
88,Salandit,,
|
||||||
|
89,Salazzle,,
|
||||||
|
90,Cubone,,
|
||||||
|
91,Marowak,,
|
||||||
|
92,Kangaskhan,,
|
||||||
|
93,Magby,,
|
||||||
|
94,Magmar,,
|
||||||
|
95,Magmortar,,
|
||||||
|
96,Stufful,,
|
||||||
|
97,Bewear,,
|
||||||
|
98,Bounsweet,,
|
||||||
|
99,Steenee,,
|
||||||
|
100,Tsareena,,
|
||||||
|
101,Comfey,,
|
||||||
|
102,Pinsir,,
|
||||||
|
103,Oranguru,,
|
||||||
|
104,Passimian,,
|
||||||
|
105,Goomy,,
|
||||||
|
106,Sliggoo,,
|
||||||
|
107,Goodra,,
|
||||||
|
108,Castform,,
|
||||||
|
109,Wimpod,,
|
||||||
|
110,Golisopod,,
|
||||||
|
111,Staryu,,
|
||||||
|
112,Starmie,,
|
||||||
|
113,Sandygast,,
|
||||||
|
114,Palossand,,
|
||||||
|
115,Cranidos,,
|
||||||
|
116,Rampardos,,
|
||||||
|
117,Shieldon,,
|
||||||
|
118,Bastiodon,,
|
||||||
|
119,Archen,,
|
||||||
|
120,Archeops,,
|
||||||
|
121,Tirtouga,,
|
||||||
|
122,Carracosta,,
|
||||||
|
123,Phantump,,
|
||||||
|
124,Trevenant,,
|
||||||
|
125,Nosepass,,
|
||||||
|
126,Probopass,,
|
||||||
|
127,Pyukumuku,,
|
||||||
|
128,Chinchou,,
|
||||||
|
129,Lanturn,,
|
||||||
|
130,Tapu Lele,,
|
||||||
|
@@ -0,0 +1,303 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Rowlet,,
|
||||||
|
2,Dartrix,,
|
||||||
|
3,Decidueye,,
|
||||||
|
4,Litten,,
|
||||||
|
5,Torracat,,
|
||||||
|
6,Incineroar,,
|
||||||
|
7,Popplio,,
|
||||||
|
8,Brionne,,
|
||||||
|
9,Primarina,,
|
||||||
|
10,Pikipek,,
|
||||||
|
11,Trumbeak,,
|
||||||
|
12,Toucannon,,
|
||||||
|
13,Yungoos,,
|
||||||
|
14,Gumshoos,,
|
||||||
|
15,Rattata,,
|
||||||
|
16,Raticate,,
|
||||||
|
17,Caterpie,,
|
||||||
|
18,Metapod,,
|
||||||
|
19,Butterfree,,
|
||||||
|
20,Ledyba,,
|
||||||
|
21,Ledian,,
|
||||||
|
22,Spinarak,,
|
||||||
|
23,Ariados,,
|
||||||
|
24,Pichu,,
|
||||||
|
25,Pikachu,,
|
||||||
|
26,Raichu,,
|
||||||
|
27,Grubbin,,
|
||||||
|
28,Charjabug,,
|
||||||
|
29,Vikavolt,,
|
||||||
|
30,Bonsly,,
|
||||||
|
31,Sudowoodo,,
|
||||||
|
32,Happiny,,
|
||||||
|
33,Chansey,,
|
||||||
|
34,Blissey,,
|
||||||
|
35,Munchlax,,
|
||||||
|
36,Snorlax,,
|
||||||
|
37,Slowpoke,,
|
||||||
|
38,Slowbro,,
|
||||||
|
39,Slowking,,
|
||||||
|
40,Wingull,,
|
||||||
|
41,Pelipper,,
|
||||||
|
42,Abra,,
|
||||||
|
43,Kadabra,,
|
||||||
|
44,Alakazam,,
|
||||||
|
45,Meowth,,
|
||||||
|
46,Persian,,
|
||||||
|
47,Magnemite,,
|
||||||
|
48,Magneton,,
|
||||||
|
49,Magnezone,,
|
||||||
|
50,Grimer,,
|
||||||
|
51,Muk,,
|
||||||
|
52,Growlithe,,
|
||||||
|
53,Arcanine,,
|
||||||
|
54,Drowzee,,
|
||||||
|
55,Hypno,,
|
||||||
|
56,Makuhita,,
|
||||||
|
57,Hariyama,,
|
||||||
|
58,Smeargle,,
|
||||||
|
59,Crabrawler,,
|
||||||
|
60,Crabominable,,
|
||||||
|
61,Gastly,,
|
||||||
|
62,Haunter,,
|
||||||
|
63,Gengar,,
|
||||||
|
64,Drifloon,,
|
||||||
|
65,Drifblim,,
|
||||||
|
66,Misdreavus,,
|
||||||
|
67,Mismagius,,
|
||||||
|
68,Zubat,,
|
||||||
|
69,Golbat,,
|
||||||
|
70,Crobat,,
|
||||||
|
71,Diglett,,
|
||||||
|
72,Dugtrio,,
|
||||||
|
73,Spearow,,
|
||||||
|
74,Fearow,,
|
||||||
|
75,Rufflet,,
|
||||||
|
76,Braviary,,
|
||||||
|
77,Vullaby,,
|
||||||
|
78,Mandibuzz,,
|
||||||
|
79,Mankey,,
|
||||||
|
80,Primeape,,
|
||||||
|
81,Delibird,,
|
||||||
|
82,Oricorio,,
|
||||||
|
83,Cutiefly,,
|
||||||
|
84,Ribombee,,
|
||||||
|
85,Petilil,,
|
||||||
|
86,Lilligant,,
|
||||||
|
87,Cottonee,,
|
||||||
|
88,Whimsicott,,
|
||||||
|
89,Psyduck,,
|
||||||
|
90,Golduck,,
|
||||||
|
91,Magikarp,,
|
||||||
|
92,Gyarados,,
|
||||||
|
93,Barboach,,
|
||||||
|
94,Whiscash,,
|
||||||
|
95,Machop,,
|
||||||
|
96,Machoke,,
|
||||||
|
97,Machamp,,
|
||||||
|
98,Roggenrola,,
|
||||||
|
99,Boldore,,
|
||||||
|
100,Gigalith,,
|
||||||
|
101,Carbink,,
|
||||||
|
102,Sableye,,
|
||||||
|
103,Rockruff,,
|
||||||
|
104,Lycanroc,,
|
||||||
|
105,Spinda,,
|
||||||
|
106,Tentacool,,
|
||||||
|
107,Tentacruel,,
|
||||||
|
108,Finneon,,
|
||||||
|
109,Lumineon,,
|
||||||
|
110,Wishiwashi,,
|
||||||
|
111,Luvdisc,,
|
||||||
|
112,Corsola,,
|
||||||
|
113,Mareanie,,
|
||||||
|
114,Toxapex,,
|
||||||
|
115,Shellder,,
|
||||||
|
116,Cloyster,,
|
||||||
|
117,Bagon,,
|
||||||
|
118,Shelgon,,
|
||||||
|
119,Salamence,,
|
||||||
|
120,Lillipup,,
|
||||||
|
121,Herdier,,
|
||||||
|
122,Stoutland,,
|
||||||
|
123,Eevee,,
|
||||||
|
124,Vaporeon,,
|
||||||
|
125,Jolteon,,
|
||||||
|
126,Flareon,,
|
||||||
|
127,Espeon,,
|
||||||
|
128,Umbreon,,
|
||||||
|
129,Leafeon,,
|
||||||
|
130,Glaceon,,
|
||||||
|
131,Sylveon,,
|
||||||
|
132,Mudbray,,
|
||||||
|
133,Mudsdale,,
|
||||||
|
134,Igglybuff,,
|
||||||
|
135,Jigglypuff,,
|
||||||
|
136,Wigglytuff,,
|
||||||
|
137,Tauros,,
|
||||||
|
138,Miltank,,
|
||||||
|
139,Surskit,,
|
||||||
|
140,Masquerain,,
|
||||||
|
141,Dewpider,,
|
||||||
|
142,Araquanid,,
|
||||||
|
143,Fomantis,,
|
||||||
|
144,Lurantis,,
|
||||||
|
145,Morelull,,
|
||||||
|
146,Shiinotic,,
|
||||||
|
147,Paras,,
|
||||||
|
148,Parasect,,
|
||||||
|
149,Poliwag,,
|
||||||
|
150,Poliwhirl,,
|
||||||
|
151,Poliwrath,,
|
||||||
|
152,Politoed,,
|
||||||
|
153,Goldeen,,
|
||||||
|
154,Seaking,,
|
||||||
|
155,Feebas,,
|
||||||
|
156,Milotic,,
|
||||||
|
157,Alomomola,,
|
||||||
|
158,Fletchling,,
|
||||||
|
159,Fletchinder,,
|
||||||
|
160,Talonflame,,
|
||||||
|
161,Salandit,,
|
||||||
|
162,Salazzle,,
|
||||||
|
163,Cubone,,
|
||||||
|
164,Marowak,,
|
||||||
|
165,Kangaskhan,,
|
||||||
|
166,Magby,,
|
||||||
|
167,Magmar,,
|
||||||
|
168,Magmortar,,
|
||||||
|
169,Stufful,,
|
||||||
|
170,Bewear,,
|
||||||
|
171,Bounsweet,,
|
||||||
|
172,Steenee,,
|
||||||
|
173,Tsareena,,
|
||||||
|
174,Comfey,,
|
||||||
|
175,Pinsir,,
|
||||||
|
176,Oranguru,,
|
||||||
|
177,Passimian,,
|
||||||
|
178,Goomy,,
|
||||||
|
179,Sliggoo,,
|
||||||
|
180,Goodra,,
|
||||||
|
181,Castform,,
|
||||||
|
182,Wimpod,,
|
||||||
|
183,Golisopod,,
|
||||||
|
184,Staryu,,
|
||||||
|
185,Starmie,,
|
||||||
|
186,Sandygast,,
|
||||||
|
187,Palossand,,
|
||||||
|
188,Cranidos,,
|
||||||
|
189,Rampardos,,
|
||||||
|
190,Shieldon,,
|
||||||
|
191,Bastiodon,,
|
||||||
|
192,Archen,,
|
||||||
|
193,Archeops,,
|
||||||
|
194,Tirtouga,,
|
||||||
|
195,Carracosta,,
|
||||||
|
196,Phantump,,
|
||||||
|
197,Trevenant,,
|
||||||
|
198,Nosepass,,
|
||||||
|
199,Probopass,,
|
||||||
|
200,Pyukumuku,,
|
||||||
|
201,Chinchou,,
|
||||||
|
202,Lanturn,,
|
||||||
|
203,Type: Null,,
|
||||||
|
204,Silvally,,
|
||||||
|
205,Zygarde,,
|
||||||
|
206,Trubbish,,
|
||||||
|
207,Garbodor,,
|
||||||
|
208,Skarmory,,
|
||||||
|
209,Ditto,,
|
||||||
|
210,Cleffa,,
|
||||||
|
211,Clefairy,,
|
||||||
|
212,Clefable,,
|
||||||
|
213,Minior,,
|
||||||
|
214,Beldum,,
|
||||||
|
215,Metang,,
|
||||||
|
216,Metagross,,
|
||||||
|
217,Porygon,,
|
||||||
|
218,Porygon2,,
|
||||||
|
219,Porygon-Z,,
|
||||||
|
220,Pancham,,
|
||||||
|
221,Pangoro,,
|
||||||
|
222,Komala,,
|
||||||
|
223,Torkoal,,
|
||||||
|
224,Turtonator,,
|
||||||
|
225,Togedemaru,,
|
||||||
|
226,Elekid,,
|
||||||
|
227,Electabuzz,,
|
||||||
|
228,Electivire,,
|
||||||
|
229,Geodude,,
|
||||||
|
230,Graveler,,
|
||||||
|
231,Golem,,
|
||||||
|
232,Sandile,,
|
||||||
|
233,Krokorok,,
|
||||||
|
234,Krookodile,,
|
||||||
|
235,Trapinch,,
|
||||||
|
236,Vibrava,,
|
||||||
|
237,Flygon,,
|
||||||
|
238,Gible,,
|
||||||
|
239,Gabite,,
|
||||||
|
240,Garchomp,,
|
||||||
|
241,Klefki,,
|
||||||
|
242,Mimikyu,,
|
||||||
|
243,Bruxish,,
|
||||||
|
244,Drampa,,
|
||||||
|
245,Absol,,
|
||||||
|
246,Snorunt,,
|
||||||
|
247,Glalie,,
|
||||||
|
248,Froslass,,
|
||||||
|
249,Sneasel,,
|
||||||
|
250,Weavile,,
|
||||||
|
251,Sandshrew,,
|
||||||
|
252,Sandslash,,
|
||||||
|
253,Vulpix,,
|
||||||
|
254,Ninetales,,
|
||||||
|
255,Vanillite,,
|
||||||
|
256,Vanillish,,
|
||||||
|
257,Vanilluxe,,
|
||||||
|
258,Snubbull,,
|
||||||
|
259,Granbull,,
|
||||||
|
260,Shellos,,
|
||||||
|
261,Gastrodon,,
|
||||||
|
262,Relicanth,,
|
||||||
|
263,Dhelmise,,
|
||||||
|
264,Carvanha,,
|
||||||
|
265,Sharpedo,,
|
||||||
|
266,Wailmer,,
|
||||||
|
267,Wailord,,
|
||||||
|
268,Lapras,,
|
||||||
|
269,Exeggcute,,
|
||||||
|
270,Exeggutor,,
|
||||||
|
271,Jangmo-o,,
|
||||||
|
272,Hakamo-o,,
|
||||||
|
273,Kommo-o,,
|
||||||
|
274,Emolga,,
|
||||||
|
275,Scyther,,
|
||||||
|
276,Scizor,,
|
||||||
|
277,Murkrow,,
|
||||||
|
278,Honchkrow,,
|
||||||
|
279,Riolu,,
|
||||||
|
280,Lucario,,
|
||||||
|
281,Dratini,,
|
||||||
|
282,Dragonair,,
|
||||||
|
283,Dragonite,,
|
||||||
|
284,Aerodactyl,,
|
||||||
|
285,Tapu Koko,,
|
||||||
|
286,Tapu Lele,,
|
||||||
|
287,Tapu Bulu,,
|
||||||
|
288,Tapu Fini,,
|
||||||
|
289,Cosmog,,
|
||||||
|
290,Cosmoem,,
|
||||||
|
291,Solgaleo,,
|
||||||
|
292,Lunala,,
|
||||||
|
293,Nihilego,,
|
||||||
|
294,Buzzwole,,
|
||||||
|
295,Pheromosa,,
|
||||||
|
296,Xurkitree,,
|
||||||
|
297,Celesteela,,
|
||||||
|
298,Kartana,,
|
||||||
|
299,Guzzlord,,
|
||||||
|
300,Necrozma,,
|
||||||
|
301,Magearna,,
|
||||||
|
302,Marshadow,,
|
||||||
|
@@ -0,0 +1,121 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Rowlet,,
|
||||||
|
2,Dartrix,,
|
||||||
|
3,Decidueye,,
|
||||||
|
4,Litten,,
|
||||||
|
5,Torracat,,
|
||||||
|
6,Incineroar,,
|
||||||
|
7,Popplio,,
|
||||||
|
8,Brionne,,
|
||||||
|
9,Primarina,,
|
||||||
|
10,Pikipek,,
|
||||||
|
11,Trumbeak,,
|
||||||
|
12,Toucannon,,
|
||||||
|
13,Yungoos,,
|
||||||
|
14,Gumshoos,,
|
||||||
|
15,Rattata,,
|
||||||
|
16,Raticate,,
|
||||||
|
17,Caterpie,,
|
||||||
|
18,Metapod,,
|
||||||
|
19,Butterfree,,
|
||||||
|
20,Ledyba,,
|
||||||
|
21,Ledian,,
|
||||||
|
22,Spinarak,,
|
||||||
|
23,Ariados,,
|
||||||
|
24,Pichu,,
|
||||||
|
25,Pikachu,,
|
||||||
|
26,Raichu,,
|
||||||
|
27,Grubbin,,
|
||||||
|
28,Charjabug,,
|
||||||
|
29,Vikavolt,,
|
||||||
|
30,Bonsly,,
|
||||||
|
31,Sudowoodo,,
|
||||||
|
32,Happiny,,
|
||||||
|
33,Chansey,,
|
||||||
|
34,Blissey,,
|
||||||
|
35,Munchlax,,
|
||||||
|
36,Snorlax,,
|
||||||
|
37,Slowpoke,,
|
||||||
|
38,Slowbro,,
|
||||||
|
39,Slowking,,
|
||||||
|
40,Wingull,,
|
||||||
|
41,Pelipper,,
|
||||||
|
42,Abra,,
|
||||||
|
43,Kadabra,,
|
||||||
|
44,Alakazam,,
|
||||||
|
45,Meowth,,
|
||||||
|
46,Persian,,
|
||||||
|
47,Magnemite,,
|
||||||
|
48,Magneton,,
|
||||||
|
49,Magnezone,,
|
||||||
|
50,Grimer,,
|
||||||
|
51,Muk,,
|
||||||
|
52,Growlithe,,
|
||||||
|
53,Arcanine,,
|
||||||
|
54,Drowzee,,
|
||||||
|
55,Hypno,,
|
||||||
|
56,Makuhita,,
|
||||||
|
57,Hariyama,,
|
||||||
|
58,Smeargle,,
|
||||||
|
59,Crabrawler,,
|
||||||
|
60,Crabominable,,
|
||||||
|
61,Gastly,,
|
||||||
|
62,Haunter,,
|
||||||
|
63,Gengar,,
|
||||||
|
64,Drifloon,,
|
||||||
|
65,Drifblim,,
|
||||||
|
66,Misdreavus,,
|
||||||
|
67,Mismagius,,
|
||||||
|
68,Zubat,,
|
||||||
|
69,Golbat,,
|
||||||
|
70,Crobat,,
|
||||||
|
71,Diglett,,
|
||||||
|
72,Dugtrio,,
|
||||||
|
73,Spearow,,
|
||||||
|
74,Fearow,,
|
||||||
|
75,Rufflet,,
|
||||||
|
76,Braviary,,
|
||||||
|
77,Vullaby,,
|
||||||
|
78,Mandibuzz,,
|
||||||
|
79,Mankey,,
|
||||||
|
80,Primeape,,
|
||||||
|
81,Delibird,,
|
||||||
|
82,Oricorio,,
|
||||||
|
83,Cutiefly,,
|
||||||
|
84,Ribombee,,
|
||||||
|
85,Petilil,,
|
||||||
|
86,Lilligant,,
|
||||||
|
87,Cottonee,,
|
||||||
|
88,Whimsicott,,
|
||||||
|
89,Psyduck,,
|
||||||
|
90,Golduck,,
|
||||||
|
91,Magikarp,,
|
||||||
|
92,Gyarados,,
|
||||||
|
93,Barboach,,
|
||||||
|
94,Whiscash,,
|
||||||
|
95,Machop,,
|
||||||
|
96,Machoke,,
|
||||||
|
97,Machamp,,
|
||||||
|
98,Roggenrola,,
|
||||||
|
99,Boldore,,
|
||||||
|
100,Gigalith,,
|
||||||
|
101,Carbink,,
|
||||||
|
102,Sableye,,
|
||||||
|
103,Rockruff,,
|
||||||
|
104,Lycanroc,,
|
||||||
|
105,Spinda,,
|
||||||
|
106,Tentacool,,
|
||||||
|
107,Tentacruel,,
|
||||||
|
108,Finneon,,
|
||||||
|
109,Lumineon,,
|
||||||
|
110,Wishiwashi,,
|
||||||
|
111,Luvdisc,,
|
||||||
|
112,Corsola,,
|
||||||
|
113,Mareanie,,
|
||||||
|
114,Toxapex,,
|
||||||
|
115,Shellder,,
|
||||||
|
116,Cloyster,,
|
||||||
|
117,Bagon,,
|
||||||
|
118,Shelgon,,
|
||||||
|
119,Salamence,,
|
||||||
|
120,Tapu Koko,,
|
||||||
|
@@ -0,0 +1,101 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Pikipek,,
|
||||||
|
2,Trumbeak,,
|
||||||
|
3,Toucannon,,
|
||||||
|
4,Yungoos,,
|
||||||
|
5,Gumshoos,,
|
||||||
|
6,Rattata,,
|
||||||
|
7,Raticate,,
|
||||||
|
8,Happiny,,
|
||||||
|
9,Chansey,,
|
||||||
|
10,Blissey,,
|
||||||
|
11,Wingull,,
|
||||||
|
12,Pelipper,,
|
||||||
|
13,Drowzee,,
|
||||||
|
14,Hypno,,
|
||||||
|
15,Makuhita,,
|
||||||
|
16,Hariyama,,
|
||||||
|
17,Crabrawler,,
|
||||||
|
18,Crabominable,,
|
||||||
|
19,Zubat,,
|
||||||
|
20,Golbat,,
|
||||||
|
21,Crobat,,
|
||||||
|
22,Diglett,,
|
||||||
|
23,Dugtrio,,
|
||||||
|
24,Spearow,,
|
||||||
|
25,Fearow,,
|
||||||
|
26,Rufflet,,
|
||||||
|
27,Braviary,,
|
||||||
|
28,Vullaby,,
|
||||||
|
29,Mandibuzz,,
|
||||||
|
30,Mankey,,
|
||||||
|
31,Primeape,,
|
||||||
|
32,Oricorio,,
|
||||||
|
33,Cutiefly,,
|
||||||
|
34,Ribombee,,
|
||||||
|
35,Petilil,,
|
||||||
|
36,Lilligant,,
|
||||||
|
37,Cottonee,,
|
||||||
|
38,Whimsicott,,
|
||||||
|
39,Psyduck,,
|
||||||
|
40,Golduck,,
|
||||||
|
41,Magikarp,,
|
||||||
|
42,Gyarados,,
|
||||||
|
43,Barboach,,
|
||||||
|
44,Whiscash,,
|
||||||
|
45,Machop,,
|
||||||
|
46,Machoke,,
|
||||||
|
47,Machamp,,
|
||||||
|
48,Roggenrola,,
|
||||||
|
49,Boldore,,
|
||||||
|
50,Gigalith,,
|
||||||
|
51,Carbink,,
|
||||||
|
52,Sableye,,
|
||||||
|
53,Rockruff,,
|
||||||
|
54,Lycanroc,,
|
||||||
|
55,Tentacool,,
|
||||||
|
56,Tentacruel,,
|
||||||
|
57,Finneon,,
|
||||||
|
58,Lumineon,,
|
||||||
|
59,Mudbray,,
|
||||||
|
60,Mudsdale,,
|
||||||
|
61,Tauros,,
|
||||||
|
62,Miltank,,
|
||||||
|
63,Stufful,,
|
||||||
|
64,Bewear,,
|
||||||
|
65,Pinsir,,
|
||||||
|
66,Goomy,,
|
||||||
|
67,Sliggoo,,
|
||||||
|
68,Goodra,,
|
||||||
|
69,Castform,,
|
||||||
|
70,Wimpod,,
|
||||||
|
71,Golisopod,,
|
||||||
|
72,Skarmory,,
|
||||||
|
73,Snubbull,,
|
||||||
|
74,Granbull,,
|
||||||
|
75,Shellos,,
|
||||||
|
76,Gastrodon,,
|
||||||
|
77,Relicanth,,
|
||||||
|
78,Dhelmise,,
|
||||||
|
79,Carvanha,,
|
||||||
|
80,Sharpedo,,
|
||||||
|
81,Wailmer,,
|
||||||
|
82,Wailord,,
|
||||||
|
83,Lapras,,
|
||||||
|
84,Exeggcute,,
|
||||||
|
85,Exeggutor,,
|
||||||
|
86,Jangmo-o,,
|
||||||
|
87,Hakamo-o,,
|
||||||
|
88,Kommo-o,,
|
||||||
|
89,Emolga,,
|
||||||
|
90,Scyther,,
|
||||||
|
91,Scizor,,
|
||||||
|
92,Murkrow,,
|
||||||
|
93,Honchkrow,,
|
||||||
|
94,Riolu,,
|
||||||
|
95,Lucario,,
|
||||||
|
96,Dratini,,
|
||||||
|
97,Dragonair,,
|
||||||
|
98,Dragonite,,
|
||||||
|
99,Aerodactyl,,
|
||||||
|
100,Tapu Fini,,
|
||||||
|
@@ -0,0 +1,131 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Pikipek,,
|
||||||
|
2,Trumbeak,,
|
||||||
|
3,Toucannon,,
|
||||||
|
4,Yungoos,,
|
||||||
|
5,Gumshoos,,
|
||||||
|
6,Rattata,,
|
||||||
|
7,Raticate,,
|
||||||
|
8,Ledyba,,
|
||||||
|
9,Ledian,,
|
||||||
|
10,Spinarak,,
|
||||||
|
11,Ariados,,
|
||||||
|
12,Grubbin,,
|
||||||
|
13,Charjabug,,
|
||||||
|
14,Vikavolt,,
|
||||||
|
15,Happiny,,
|
||||||
|
16,Chansey,,
|
||||||
|
17,Blissey,,
|
||||||
|
18,Slowpoke,,
|
||||||
|
19,Slowbro,,
|
||||||
|
20,Slowking,,
|
||||||
|
21,Wingull,,
|
||||||
|
22,Pelipper,,
|
||||||
|
23,Meowth,,
|
||||||
|
24,Persian,,
|
||||||
|
25,Magnemite,,
|
||||||
|
26,Magneton,,
|
||||||
|
27,Magnezone,,
|
||||||
|
28,Grimer,,
|
||||||
|
29,Muk,,
|
||||||
|
30,Crabrawler,,
|
||||||
|
31,Crabominable,,
|
||||||
|
32,Gastly,,
|
||||||
|
33,Haunter,,
|
||||||
|
34,Gengar,,
|
||||||
|
35,Zubat,,
|
||||||
|
36,Golbat,,
|
||||||
|
37,Crobat,,
|
||||||
|
38,Diglett,,
|
||||||
|
39,Dugtrio,,
|
||||||
|
40,Spearow,,
|
||||||
|
41,Fearow,,
|
||||||
|
42,Oricorio,,
|
||||||
|
43,Cutiefly,,
|
||||||
|
44,Ribombee,,
|
||||||
|
45,Petilil,,
|
||||||
|
46,Lilligant,,
|
||||||
|
47,Cottonee,,
|
||||||
|
48,Whimsicott,,
|
||||||
|
49,Psyduck,,
|
||||||
|
50,Golduck,,
|
||||||
|
51,Magikarp,,
|
||||||
|
52,Gyarados,,
|
||||||
|
53,Tentacool,,
|
||||||
|
54,Tentacruel,,
|
||||||
|
55,Finneon,,
|
||||||
|
56,Lumineon,,
|
||||||
|
57,Wishiwashi,,
|
||||||
|
58,Mudbray,,
|
||||||
|
59,Mudsdale,,
|
||||||
|
60,Surskit,,
|
||||||
|
61,Masquerain,,
|
||||||
|
62,Dewpider,,
|
||||||
|
63,Araquanid,,
|
||||||
|
64,Morelull,,
|
||||||
|
65,Shiinotic,,
|
||||||
|
66,Paras,,
|
||||||
|
67,Parasect,,
|
||||||
|
68,Poliwag,,
|
||||||
|
69,Poliwhirl,,
|
||||||
|
70,Poliwrath,,
|
||||||
|
71,Politoed,,
|
||||||
|
72,Goldeen,,
|
||||||
|
73,Seaking,,
|
||||||
|
74,Goomy,,
|
||||||
|
75,Sliggoo,,
|
||||||
|
76,Goodra,,
|
||||||
|
77,Castform,,
|
||||||
|
78,Trubbish,,
|
||||||
|
79,Garbodor,,
|
||||||
|
80,Skarmory,,
|
||||||
|
81,Ditto,,
|
||||||
|
82,Cleffa,,
|
||||||
|
83,Clefairy,,
|
||||||
|
84,Clefable,,
|
||||||
|
85,Minior,,
|
||||||
|
86,Beldum,,
|
||||||
|
87,Metang,,
|
||||||
|
88,Metagross,,
|
||||||
|
89,Porygon,,
|
||||||
|
90,Porygon2,,
|
||||||
|
91,Porygon-Z,,
|
||||||
|
92,Pancham,,
|
||||||
|
93,Pangoro,,
|
||||||
|
94,Komala,,
|
||||||
|
95,Torkoal,,
|
||||||
|
96,Turtonator,,
|
||||||
|
97,Togedemaru,,
|
||||||
|
98,Elekid,,
|
||||||
|
99,Electabuzz,,
|
||||||
|
100,Electivire,,
|
||||||
|
101,Geodude,,
|
||||||
|
102,Graveler,,
|
||||||
|
103,Golem,,
|
||||||
|
104,Sandile,,
|
||||||
|
105,Krokorok,,
|
||||||
|
106,Krookodile,,
|
||||||
|
107,Trapinch,,
|
||||||
|
108,Vibrava,,
|
||||||
|
109,Flygon,,
|
||||||
|
110,Gible,,
|
||||||
|
111,Gabite,,
|
||||||
|
112,Garchomp,,
|
||||||
|
113,Klefki,,
|
||||||
|
114,Mimikyu,,
|
||||||
|
115,Bruxish,,
|
||||||
|
116,Drampa,,
|
||||||
|
117,Absol,,
|
||||||
|
118,Snorunt,,
|
||||||
|
119,Glalie,,
|
||||||
|
120,Froslass,,
|
||||||
|
121,Sneasel,,
|
||||||
|
122,Weavile,,
|
||||||
|
123,Sandshrew,,
|
||||||
|
124,Sandslash,,
|
||||||
|
125,Vulpix,,
|
||||||
|
126,Ninetales,,
|
||||||
|
127,Vanillite,,
|
||||||
|
128,Vanillish,,
|
||||||
|
129,Vanilluxe,,
|
||||||
|
130,Tapu Bulu,,
|
||||||
|
@@ -0,0 +1,211 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Snom,,
|
||||||
|
2,Frosmoth,,
|
||||||
|
3,Wooloo,,
|
||||||
|
4,Dubwool,,
|
||||||
|
5,Skwovet,,
|
||||||
|
6,Greedent,,
|
||||||
|
7,Swinub,,
|
||||||
|
8,Piloswine,,
|
||||||
|
9,Mamoswine,,
|
||||||
|
10,Mime Jr.,,
|
||||||
|
11,Mr. Mime,,
|
||||||
|
12,Mr. Rime,,
|
||||||
|
13,Smoochum,,
|
||||||
|
14,Jynx,,
|
||||||
|
15,Elekid,,
|
||||||
|
16,Electabuzz,,
|
||||||
|
17,Electivire,,
|
||||||
|
18,Magby,,
|
||||||
|
19,Magmar,,
|
||||||
|
20,Magmortar,,
|
||||||
|
21,Audino,,
|
||||||
|
22,Vanillite,,
|
||||||
|
23,Vanillish,,
|
||||||
|
24,Vanilluxe,,
|
||||||
|
25,Snorunt,,
|
||||||
|
26,Glalie,,
|
||||||
|
27,Froslass,,
|
||||||
|
28,Sneasel,,
|
||||||
|
29,Weavile,,
|
||||||
|
30,Cryogonal,,
|
||||||
|
31,Snover,,
|
||||||
|
32,Abomasnow,,
|
||||||
|
33,Phantump,,
|
||||||
|
34,Trevenant,,
|
||||||
|
35,Swablu,,
|
||||||
|
36,Altaria,,
|
||||||
|
37,Impidimp,,
|
||||||
|
38,Morgrem,,
|
||||||
|
39,Grimmsnarl,,
|
||||||
|
40,Hatenna,,
|
||||||
|
41,Hattrem,,
|
||||||
|
42,Hatterene,,
|
||||||
|
43,Cleffa,,
|
||||||
|
44,Clefairy,,
|
||||||
|
45,Clefable,,
|
||||||
|
46,Mimikyu,,
|
||||||
|
47,Spiritomb,,
|
||||||
|
48,Litwick,,
|
||||||
|
49,Lampent,,
|
||||||
|
50,Chandelure,,
|
||||||
|
51,Gothita,,
|
||||||
|
52,Gothorita,,
|
||||||
|
53,Gothitelle,,
|
||||||
|
54,Solosis,,
|
||||||
|
55,Duosion,,
|
||||||
|
56,Reuniclus,,
|
||||||
|
57,Timburr,,
|
||||||
|
58,Gurdurr,,
|
||||||
|
59,Conkeldurr,,
|
||||||
|
60,Barboach,,
|
||||||
|
61,Whiscash,,
|
||||||
|
62,Magikarp,,
|
||||||
|
63,Gyarados,,
|
||||||
|
64,Basculin,,
|
||||||
|
65,Nidoran♀,,
|
||||||
|
66,Nidorina,,
|
||||||
|
67,Nidoqueen,,
|
||||||
|
68,Nidoran♂,,
|
||||||
|
69,Nidorino,,
|
||||||
|
70,Nidoking,,
|
||||||
|
71,Zigzagoon,,
|
||||||
|
72,Linoone,,
|
||||||
|
73,Obstagoon,,
|
||||||
|
74,Eevee,,
|
||||||
|
75,Vaporeon,,
|
||||||
|
76,Jolteon,,
|
||||||
|
77,Flareon,,
|
||||||
|
78,Umbreon,,
|
||||||
|
79,Espeon,,
|
||||||
|
80,Glaceon,,
|
||||||
|
81,Leafeon,,
|
||||||
|
82,Sylveon,,
|
||||||
|
83,Tyrunt,,
|
||||||
|
84,Tyrantrum,,
|
||||||
|
85,Amaura,,
|
||||||
|
86,Aurorus,,
|
||||||
|
87,Bronzor,,
|
||||||
|
88,Bronzong,,
|
||||||
|
89,Stonjourner,,
|
||||||
|
90,Eiscue,,
|
||||||
|
91,Dewpider,,
|
||||||
|
92,Araquanid,,
|
||||||
|
93,Joltik,,
|
||||||
|
94,Galvantula,,
|
||||||
|
95,Karrablast,,
|
||||||
|
96,Escavalier,,
|
||||||
|
97,Shelmet,,
|
||||||
|
98,Accelgor,,
|
||||||
|
99,Sizzlipede,,
|
||||||
|
100,Centiskorch,,
|
||||||
|
101,Durant,,
|
||||||
|
102,Heatmor,,
|
||||||
|
103,Darumaka,,
|
||||||
|
104,Darmanitan,,
|
||||||
|
105,Ponyta,,
|
||||||
|
106,Rapidash,,
|
||||||
|
107,Absol,,
|
||||||
|
108,Cufant,,
|
||||||
|
109,Copperajah,,
|
||||||
|
110,Dreepy,,
|
||||||
|
111,Drakloak,,
|
||||||
|
112,Dragapult,,
|
||||||
|
113,Bagon,,
|
||||||
|
114,Shelgon,,
|
||||||
|
115,Salamence,,
|
||||||
|
116,Gible,,
|
||||||
|
117,Gabite,,
|
||||||
|
118,Garchomp,,
|
||||||
|
119,Druddigon,,
|
||||||
|
120,Delibird,,
|
||||||
|
121,Cubchoo,,
|
||||||
|
122,Beartic,,
|
||||||
|
123,Omanyte,,
|
||||||
|
124,Omastar,,
|
||||||
|
125,Kabuto,,
|
||||||
|
126,Kabutops,,
|
||||||
|
127,Aerodactyl,,
|
||||||
|
128,Carbink,,
|
||||||
|
129,Beldum,,
|
||||||
|
130,Metang,,
|
||||||
|
131,Metagross,,
|
||||||
|
132,Sinistea,,
|
||||||
|
133,Polteageist,,
|
||||||
|
134,Riolu,,
|
||||||
|
135,Lucario,,
|
||||||
|
136,Deino,,
|
||||||
|
137,Zweilous,,
|
||||||
|
138,Hydreigon,,
|
||||||
|
139,Larvitar,,
|
||||||
|
140,Pupitar,,
|
||||||
|
141,Tyranitar,,
|
||||||
|
142,Bergmite,,
|
||||||
|
143,Avalugg,,
|
||||||
|
144,Zubat,,
|
||||||
|
145,Golbat,,
|
||||||
|
146,Crobat,,
|
||||||
|
147,Tirtouga,,
|
||||||
|
148,Carracosta,,
|
||||||
|
149,Archen,,
|
||||||
|
150,Archeops,,
|
||||||
|
151,Baltoy,,
|
||||||
|
152,Claydol,,
|
||||||
|
153,Golett,,
|
||||||
|
154,Golurk,,
|
||||||
|
155,Yamper,,
|
||||||
|
156,Boltund,,
|
||||||
|
157,Morpeko,,
|
||||||
|
158,Pincurchin,,
|
||||||
|
159,Spheal,,
|
||||||
|
160,Sealeo,,
|
||||||
|
161,Walrein,,
|
||||||
|
162,Dhelmise,,
|
||||||
|
163,Rookidee,,
|
||||||
|
164,Corvisquire,,
|
||||||
|
165,Corviknight,,
|
||||||
|
166,Gossifleur,,
|
||||||
|
167,Eldegoss,,
|
||||||
|
168,Cottonee,,
|
||||||
|
169,Whimsicott,,
|
||||||
|
170,Shuckle,,
|
||||||
|
171,Indeedee,,
|
||||||
|
172,Munchlax,,
|
||||||
|
173,Snorlax,,
|
||||||
|
174,Sableye,,
|
||||||
|
175,Mawile,,
|
||||||
|
176,Rolycoly,,
|
||||||
|
177,Carkol,,
|
||||||
|
178,Coalossal,,
|
||||||
|
179,Ferroseed,,
|
||||||
|
180,Ferrothorn,,
|
||||||
|
181,Noibat,,
|
||||||
|
182,Noivern,,
|
||||||
|
183,Lileep,,
|
||||||
|
184,Cradily,,
|
||||||
|
185,Anorith,,
|
||||||
|
186,Armaldo,,
|
||||||
|
187,Relicanth,,
|
||||||
|
188,Feebas,,
|
||||||
|
189,Milotic,,
|
||||||
|
190,Lapras,,
|
||||||
|
191,Aron,,
|
||||||
|
192,Lairon,,
|
||||||
|
193,Aggron,,
|
||||||
|
194,Dratini,,
|
||||||
|
195,Dragonair,,
|
||||||
|
196,Dragonite,,
|
||||||
|
197,Regirock,,
|
||||||
|
198,Regice,,
|
||||||
|
199,Registeel,,
|
||||||
|
200,Regieleki,,
|
||||||
|
201,Regidrago,,
|
||||||
|
202,Articuno,,
|
||||||
|
203,Zapdos,,
|
||||||
|
204,Moltres,,
|
||||||
|
205,Cobalion,,
|
||||||
|
206,Terrakion,,
|
||||||
|
207,Virizion,,
|
||||||
|
208,Glastrier,,
|
||||||
|
209,Spectrier,,
|
||||||
|
210,Calyrex,,
|
||||||
|
@@ -0,0 +1,212 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Slowpoke,,
|
||||||
|
2,Slowbro,,
|
||||||
|
3,Slowking,,
|
||||||
|
4,Buneary,,
|
||||||
|
5,Lopunny,,
|
||||||
|
6,Happiny,,
|
||||||
|
7,Chansey,,
|
||||||
|
8,Blissey,,
|
||||||
|
9,Skwovet,,
|
||||||
|
10,Greedent,,
|
||||||
|
11,Igglybuff,,
|
||||||
|
12,Jigglypuff,,
|
||||||
|
13,Wigglytuff,,
|
||||||
|
14,Blipbug,,
|
||||||
|
15,Dottler,,
|
||||||
|
16,Orbeetle,,
|
||||||
|
17,Fomantis,,
|
||||||
|
18,Lurantis,,
|
||||||
|
19,Applin,,
|
||||||
|
20,Flapple,,
|
||||||
|
21,Appletun,,
|
||||||
|
22,Fletchling,,
|
||||||
|
23,Fletchinder,,
|
||||||
|
24,Talonflame,,
|
||||||
|
25,Shinx,,
|
||||||
|
26,Luxio,,
|
||||||
|
27,Luxray,,
|
||||||
|
28,Klefki,,
|
||||||
|
29,Pawniard,,
|
||||||
|
30,Bisharp,,
|
||||||
|
31,Abra,,
|
||||||
|
32,Kadabra,,
|
||||||
|
33,Alakazam,,
|
||||||
|
34,Ralts,,
|
||||||
|
35,Kirlia,,
|
||||||
|
36,Gardevoir,,
|
||||||
|
37,Gallade,,
|
||||||
|
38,Krabby,,
|
||||||
|
39,Kingler,,
|
||||||
|
40,Tentacool,,
|
||||||
|
41,Tentacruel,,
|
||||||
|
42,Magikarp,,
|
||||||
|
43,Gyarados,,
|
||||||
|
44,Remoraid,,
|
||||||
|
45,Octillery,,
|
||||||
|
46,Mantyke,,
|
||||||
|
47,Mantine,,
|
||||||
|
48,Wingull,,
|
||||||
|
49,Pelipper,,
|
||||||
|
50,Skorupi,,
|
||||||
|
51,Drapion,,
|
||||||
|
52,Dunsparce,,
|
||||||
|
53,Bouffalant,,
|
||||||
|
54,Lickitung,,
|
||||||
|
55,Lickilicky,,
|
||||||
|
56,Chewtle,,
|
||||||
|
57,Drednaw,,
|
||||||
|
58,Wooper,,
|
||||||
|
59,Quagsire,,
|
||||||
|
60,Goomy,,
|
||||||
|
61,Sliggoo,,
|
||||||
|
62,Goodra,,
|
||||||
|
63,Druddigon,,
|
||||||
|
64,Shelmet,,
|
||||||
|
65,Accelgor,,
|
||||||
|
66,Karrablast,,
|
||||||
|
67,Escavalier,,
|
||||||
|
68,Bulbasaur,,
|
||||||
|
69,Ivysaur,,
|
||||||
|
70,Venusaur,,
|
||||||
|
71,Squirtle,,
|
||||||
|
72,Wartortle,,
|
||||||
|
73,Blastoise,,
|
||||||
|
74,Venipede,,
|
||||||
|
75,Whirlipede,,
|
||||||
|
76,Scolipede,,
|
||||||
|
77,Foongus,,
|
||||||
|
78,Amoonguss,,
|
||||||
|
79,Comfey,,
|
||||||
|
80,Tangela,,
|
||||||
|
81,Tangrowth,,
|
||||||
|
82,Croagunk,,
|
||||||
|
83,Toxicroak,,
|
||||||
|
84,Pichu,,
|
||||||
|
85,Pikachu,,
|
||||||
|
86,Raichu,,
|
||||||
|
87,Zorua,,
|
||||||
|
88,Zoroark,,
|
||||||
|
89,Oranguru,,
|
||||||
|
90,Passimian,,
|
||||||
|
91,Corphish,,
|
||||||
|
92,Crawdaunt,,
|
||||||
|
93,Cramorant,,
|
||||||
|
94,Goldeen,,
|
||||||
|
95,Seaking,,
|
||||||
|
96,Arrokuda,,
|
||||||
|
97,Barraskewda,,
|
||||||
|
98,Staryu,,
|
||||||
|
99,Starmie,,
|
||||||
|
100,Kubfu,,
|
||||||
|
101,Urshifu,,
|
||||||
|
102,Emolga,,
|
||||||
|
103,Dedenne,,
|
||||||
|
104,Morpeko,,
|
||||||
|
105,Magnemite,,
|
||||||
|
106,Magneton,,
|
||||||
|
107,Magnezone,,
|
||||||
|
108,Inkay,,
|
||||||
|
109,Malamar,,
|
||||||
|
110,Wishiwashi,,
|
||||||
|
111,Carvanha,,
|
||||||
|
112,Sharpedo,,
|
||||||
|
113,Lillipup,,
|
||||||
|
114,Herdier,,
|
||||||
|
115,Stoutland,,
|
||||||
|
116,Tauros,,
|
||||||
|
117,Miltank,,
|
||||||
|
118,Scyther,,
|
||||||
|
119,Scizor,,
|
||||||
|
120,Pinsir,,
|
||||||
|
121,Heracross,,
|
||||||
|
122,Dwebble,,
|
||||||
|
123,Crustle,,
|
||||||
|
124,Wimpod,,
|
||||||
|
125,Golisopod,,
|
||||||
|
126,Pincurchin,,
|
||||||
|
127,Mareanie,,
|
||||||
|
128,Toxapex,,
|
||||||
|
129,Clobbopus,,
|
||||||
|
130,Grapploct,,
|
||||||
|
131,Shellder,,
|
||||||
|
132,Cloyster,,
|
||||||
|
133,Sandygast,,
|
||||||
|
134,Palossand,,
|
||||||
|
135,Drifloon,,
|
||||||
|
136,Drifblim,,
|
||||||
|
137,Barboach,,
|
||||||
|
138,Whiscash,,
|
||||||
|
139,Azurill,,
|
||||||
|
140,Marill,,
|
||||||
|
141,Azumarill,,
|
||||||
|
142,Poliwag,,
|
||||||
|
143,Poliwhirl,,
|
||||||
|
144,Poliwrath,,
|
||||||
|
145,Politoed,,
|
||||||
|
146,Psyduck,,
|
||||||
|
147,Golduck,,
|
||||||
|
148,Whismur,,
|
||||||
|
149,Loudred,,
|
||||||
|
150,Exploud,,
|
||||||
|
151,Woobat,,
|
||||||
|
152,Swoobat,,
|
||||||
|
153,Skarmory,,
|
||||||
|
154,Roggenrola,,
|
||||||
|
155,Boldore,,
|
||||||
|
156,Gigalith,,
|
||||||
|
157,Rockruff,,
|
||||||
|
158,Lycanroc,,
|
||||||
|
159,Salandit,,
|
||||||
|
160,Salazzle,,
|
||||||
|
161,Scraggy,,
|
||||||
|
162,Scrafty,,
|
||||||
|
163,Mienfoo,,
|
||||||
|
164,Mienshao,,
|
||||||
|
165,Jangmo-o,,
|
||||||
|
166,Hakamo-o,,
|
||||||
|
167,Kommo-o,,
|
||||||
|
168,Sandshrew,,
|
||||||
|
169,Sandslash,,
|
||||||
|
170,Cubone,,
|
||||||
|
171,Marowak,,
|
||||||
|
172,Kangaskhan,,
|
||||||
|
173,Torkoal,,
|
||||||
|
174,Silicobra,,
|
||||||
|
175,Sandaconda,,
|
||||||
|
176,Sandile,,
|
||||||
|
177,Krokorok,,
|
||||||
|
178,Krookodile,,
|
||||||
|
179,Rufflet,,
|
||||||
|
180,Braviary,,
|
||||||
|
181,Vullaby,,
|
||||||
|
182,Mandibuzz,,
|
||||||
|
183,Rhyhorn,,
|
||||||
|
184,Rhydon,,
|
||||||
|
185,Rhyperior,,
|
||||||
|
186,Larvesta,,
|
||||||
|
187,Volcarona,,
|
||||||
|
188,Chinchou,,
|
||||||
|
189,Lanturn,,
|
||||||
|
190,Wailmer,,
|
||||||
|
191,Wailord,,
|
||||||
|
192,Frillish,,
|
||||||
|
193,Jellicent,,
|
||||||
|
194,Skrelp,,
|
||||||
|
195,Dragalge,,
|
||||||
|
196,Clauncher,,
|
||||||
|
197,Clawitzer,,
|
||||||
|
198,Horsea,,
|
||||||
|
199,Seadra,,
|
||||||
|
200,Kingdra,,
|
||||||
|
201,Petilil,,
|
||||||
|
202,Lilligant,,
|
||||||
|
203,Combee,,
|
||||||
|
204,Vespiquen,,
|
||||||
|
205,Exeggcute,,
|
||||||
|
206,Exeggutor,,
|
||||||
|
207,Ditto,,
|
||||||
|
208,Porygon,,
|
||||||
|
209,Porygon2,,
|
||||||
|
210,Porygon-Z,,
|
||||||
|
211,Zarude,,
|
||||||
|
@@ -0,0 +1,401 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Grookey,,
|
||||||
|
2,Thwackey,,
|
||||||
|
3,Rillaboom,,
|
||||||
|
4,Scorbunny,,
|
||||||
|
5,Raboot,,
|
||||||
|
6,Cinderace,,
|
||||||
|
7,Sobble,,
|
||||||
|
8,Drizzile,,
|
||||||
|
9,Inteleon,,
|
||||||
|
10,Blipbug,,
|
||||||
|
11,Dottler,,
|
||||||
|
12,Orbeetle,,
|
||||||
|
13,Caterpie,,
|
||||||
|
14,Metapod,,
|
||||||
|
15,Butterfree,,
|
||||||
|
16,Grubbin,,
|
||||||
|
17,Charjabug,,
|
||||||
|
18,Vikavolt,,
|
||||||
|
19,Hoothoot,,
|
||||||
|
20,Noctowl,,
|
||||||
|
21,Rookidee,,
|
||||||
|
22,Corvisquire,,
|
||||||
|
23,Corviknight,,
|
||||||
|
24,Skwovet,,
|
||||||
|
25,Greedent,,
|
||||||
|
26,Pidove,,
|
||||||
|
27,Tranquill,,
|
||||||
|
28,Unfezant,,
|
||||||
|
29,Nickit,,
|
||||||
|
30,Thievul,,
|
||||||
|
31,Zigzagoon,,
|
||||||
|
32,Linoone,,
|
||||||
|
33,Obstagoon,,
|
||||||
|
34,Wooloo,,
|
||||||
|
35,Dubwool,,
|
||||||
|
36,Lotad,,
|
||||||
|
37,Lombre,,
|
||||||
|
38,Ludicolo,,
|
||||||
|
39,Seedot,,
|
||||||
|
40,Nuzleaf,,
|
||||||
|
41,Shiftry,,
|
||||||
|
42,Chewtle,,
|
||||||
|
43,Drednaw,,
|
||||||
|
44,Purrloin,,
|
||||||
|
45,Liepard,,
|
||||||
|
46,Yamper,,
|
||||||
|
47,Boltund,,
|
||||||
|
48,Bunnelby,,
|
||||||
|
49,Diggersby,,
|
||||||
|
50,Minccino,,
|
||||||
|
51,Cinccino,,
|
||||||
|
52,Bounsweet,,
|
||||||
|
53,Steenee,,
|
||||||
|
54,Tsareena,,
|
||||||
|
55,Oddish,,
|
||||||
|
56,Gloom,,
|
||||||
|
57,Vileplume,,
|
||||||
|
58,Bellossom,,
|
||||||
|
59,Budew,,
|
||||||
|
60,Roselia,,
|
||||||
|
61,Roserade,,
|
||||||
|
62,Wingull,,
|
||||||
|
63,Pelipper,,
|
||||||
|
64,Joltik,,
|
||||||
|
65,Galvantula,,
|
||||||
|
66,Electrike,,
|
||||||
|
67,Manectric,,
|
||||||
|
68,Vulpix,,
|
||||||
|
69,Ninetales,,
|
||||||
|
70,Growlithe,,
|
||||||
|
71,Arcanine,,
|
||||||
|
72,Vanillite,,
|
||||||
|
73,Vanillish,,
|
||||||
|
74,Vanilluxe,,
|
||||||
|
75,Swinub,,
|
||||||
|
76,Piloswine,,
|
||||||
|
77,Mamoswine,,
|
||||||
|
78,Delibird,,
|
||||||
|
79,Snorunt,,
|
||||||
|
80,Glalie,,
|
||||||
|
81,Froslass,,
|
||||||
|
82,Baltoy,,
|
||||||
|
83,Claydol,,
|
||||||
|
84,Mudbray,,
|
||||||
|
85,Mudsdale,,
|
||||||
|
86,Dwebble,,
|
||||||
|
87,Crustle,,
|
||||||
|
88,Golett,,
|
||||||
|
89,Golurk,,
|
||||||
|
90,Munna,,
|
||||||
|
91,Musharna,,
|
||||||
|
92,Natu,,
|
||||||
|
93,Xatu,,
|
||||||
|
94,Stufful,,
|
||||||
|
95,Bewear,,
|
||||||
|
96,Snover,,
|
||||||
|
97,Abomasnow,,
|
||||||
|
98,Krabby,,
|
||||||
|
99,Kingler,,
|
||||||
|
100,Wooper,,
|
||||||
|
101,Quagsire,,
|
||||||
|
102,Corphish,,
|
||||||
|
103,Crawdaunt,,
|
||||||
|
104,Nincada,,
|
||||||
|
105,Ninjask,,
|
||||||
|
106,Shedinja,,
|
||||||
|
107,Tyrogue,,
|
||||||
|
108,Hitmonlee,,
|
||||||
|
109,Hitmonchan,,
|
||||||
|
110,Hitmontop,,
|
||||||
|
111,Pancham,,
|
||||||
|
112,Pangoro,,
|
||||||
|
113,Klink,,
|
||||||
|
114,Klang,,
|
||||||
|
115,Klinklang,,
|
||||||
|
116,Combee,,
|
||||||
|
117,Vespiquen,,
|
||||||
|
118,Bronzor,,
|
||||||
|
119,Bronzong,,
|
||||||
|
120,Ralts,,
|
||||||
|
121,Kirlia,,
|
||||||
|
122,Gardevoir,,
|
||||||
|
123,Gallade,,
|
||||||
|
124,Drifloon,,
|
||||||
|
125,Drifblim,,
|
||||||
|
126,Gossifleur,,
|
||||||
|
127,Eldegoss,,
|
||||||
|
128,Cherubi,,
|
||||||
|
129,Cherrim,,
|
||||||
|
130,Stunky,,
|
||||||
|
131,Skuntank,,
|
||||||
|
132,Tympole,,
|
||||||
|
133,Palpitoad,,
|
||||||
|
134,Seismitoad,,
|
||||||
|
135,Duskull,,
|
||||||
|
136,Dusclops,,
|
||||||
|
137,Dusknoir,,
|
||||||
|
138,Machop,,
|
||||||
|
139,Machoke,,
|
||||||
|
140,Machamp,,
|
||||||
|
141,Gastly,,
|
||||||
|
142,Haunter,,
|
||||||
|
143,Gengar,,
|
||||||
|
144,Magikarp,,
|
||||||
|
145,Gyarados,,
|
||||||
|
146,Goldeen,,
|
||||||
|
147,Seaking,,
|
||||||
|
148,Remoraid,,
|
||||||
|
149,Octillery,,
|
||||||
|
150,Shellder,,
|
||||||
|
151,Cloyster,,
|
||||||
|
152,Feebas,,
|
||||||
|
153,Milotic,,
|
||||||
|
154,Basculin,,
|
||||||
|
155,Wishiwashi,,
|
||||||
|
156,Pyukumuku,,
|
||||||
|
157,Trubbish,,
|
||||||
|
158,Garbodor,,
|
||||||
|
159,Sizzlipede,,
|
||||||
|
160,Centiskorch,,
|
||||||
|
161,Rolycoly,,
|
||||||
|
162,Carkol,,
|
||||||
|
163,Coalossal,,
|
||||||
|
164,Diglett,,
|
||||||
|
165,Dugtrio,,
|
||||||
|
166,Drilbur,,
|
||||||
|
167,Excadrill,,
|
||||||
|
168,Roggenrola,,
|
||||||
|
169,Boldore,,
|
||||||
|
170,Gigalith,,
|
||||||
|
171,Timburr,,
|
||||||
|
172,Gurdurr,,
|
||||||
|
173,Conkeldurr,,
|
||||||
|
174,Woobat,,
|
||||||
|
175,Swoobat,,
|
||||||
|
176,Noibat,,
|
||||||
|
177,Noivern,,
|
||||||
|
178,Onix,,
|
||||||
|
179,Steelix,,
|
||||||
|
180,Arrokuda,,
|
||||||
|
181,Barraskewda,,
|
||||||
|
182,Meowth,,
|
||||||
|
183,Perrserker,,
|
||||||
|
184,Persian,,
|
||||||
|
185,Milcery,,
|
||||||
|
186,Alcremie,,
|
||||||
|
187,Cutiefly,,
|
||||||
|
188,Ribombee,,
|
||||||
|
189,Ferroseed,,
|
||||||
|
190,Ferrothorn,,
|
||||||
|
191,Pumpkaboo,,
|
||||||
|
192,Gourgeist,,
|
||||||
|
193,Pichu,,
|
||||||
|
194,Pikachu,,
|
||||||
|
195,Raichu,,
|
||||||
|
196,Eevee,,
|
||||||
|
197,Vaporeon,,
|
||||||
|
198,Jolteon,,
|
||||||
|
199,Flareon,,
|
||||||
|
200,Espeon,,
|
||||||
|
201,Umbreon,,
|
||||||
|
202,Leafeon,,
|
||||||
|
203,Glaceon,,
|
||||||
|
204,Sylveon,,
|
||||||
|
205,Applin,,
|
||||||
|
206,Flapple,,
|
||||||
|
207,Appletun,,
|
||||||
|
208,Espurr,,
|
||||||
|
209,Meowstic,,
|
||||||
|
210,Swirlix,,
|
||||||
|
211,Slurpuff,,
|
||||||
|
212,Spritzee,,
|
||||||
|
213,Aromatisse,,
|
||||||
|
214,Dewpider,,
|
||||||
|
215,Araquanid,,
|
||||||
|
216,Wynaut,,
|
||||||
|
217,Wobbuffet,,
|
||||||
|
218,Farfetch’d,,
|
||||||
|
219,Sirfetch’d,,
|
||||||
|
220,Chinchou,,
|
||||||
|
221,Lanturn,,
|
||||||
|
222,Croagunk,,
|
||||||
|
223,Toxicroak,,
|
||||||
|
224,Scraggy,,
|
||||||
|
225,Scrafty,,
|
||||||
|
226,Stunfisk,,
|
||||||
|
227,Shuckle,,
|
||||||
|
228,Barboach,,
|
||||||
|
229,Whiscash,,
|
||||||
|
230,Shellos,,
|
||||||
|
231,Gastrodon,,
|
||||||
|
232,Wimpod,,
|
||||||
|
233,Golisopod,,
|
||||||
|
234,Binacle,,
|
||||||
|
235,Barbaracle,,
|
||||||
|
236,Corsola,,
|
||||||
|
237,Cursola,,
|
||||||
|
238,Impidimp,,
|
||||||
|
239,Morgrem,,
|
||||||
|
240,Grimmsnarl,,
|
||||||
|
241,Hatenna,,
|
||||||
|
242,Hattrem,,
|
||||||
|
243,Hatterene,,
|
||||||
|
244,Salandit,,
|
||||||
|
245,Salazzle,,
|
||||||
|
246,Pawniard,,
|
||||||
|
247,Bisharp,,
|
||||||
|
248,Throh,,
|
||||||
|
249,Sawk,,
|
||||||
|
250,Koffing,,
|
||||||
|
251,Weezing,,
|
||||||
|
252,Bonsly,,
|
||||||
|
253,Sudowoodo,,
|
||||||
|
254,Cleffa,,
|
||||||
|
255,Clefairy,,
|
||||||
|
256,Clefable,,
|
||||||
|
257,Togepi,,
|
||||||
|
258,Togetic,,
|
||||||
|
259,Togekiss,,
|
||||||
|
260,Munchlax,,
|
||||||
|
261,Snorlax,,
|
||||||
|
262,Cottonee,,
|
||||||
|
263,Whimsicott,,
|
||||||
|
264,Rhyhorn,,
|
||||||
|
265,Rhydon,,
|
||||||
|
266,Rhyperior,,
|
||||||
|
267,Gothita,,
|
||||||
|
268,Gothorita,,
|
||||||
|
269,Gothitelle,,
|
||||||
|
270,Solosis,,
|
||||||
|
271,Duosion,,
|
||||||
|
272,Reuniclus,,
|
||||||
|
273,Karrablast,,
|
||||||
|
274,Escavalier,,
|
||||||
|
275,Shelmet,,
|
||||||
|
276,Accelgor,,
|
||||||
|
277,Elgyem,,
|
||||||
|
278,Beheeyem,,
|
||||||
|
279,Cubchoo,,
|
||||||
|
280,Beartic,,
|
||||||
|
281,Rufflet,,
|
||||||
|
282,Braviary,,
|
||||||
|
283,Vullaby,,
|
||||||
|
284,Mandibuzz,,
|
||||||
|
285,Skorupi,,
|
||||||
|
286,Drapion,,
|
||||||
|
287,Litwick,,
|
||||||
|
288,Lampent,,
|
||||||
|
289,Chandelure,,
|
||||||
|
290,Inkay,,
|
||||||
|
291,Malamar,,
|
||||||
|
292,Sneasel,,
|
||||||
|
293,Weavile,,
|
||||||
|
294,Sableye,,
|
||||||
|
295,Mawile,,
|
||||||
|
296,Maractus,,
|
||||||
|
297,Sigilyph,,
|
||||||
|
298,Riolu,,
|
||||||
|
299,Lucario,,
|
||||||
|
300,Torkoal,,
|
||||||
|
301,Mimikyu,,
|
||||||
|
302,Cufant,,
|
||||||
|
303,Copperajah,,
|
||||||
|
304,Qwilfish,,
|
||||||
|
305,Frillish,,
|
||||||
|
306,Jellicent,,
|
||||||
|
307,Mareanie,,
|
||||||
|
308,Toxapex,,
|
||||||
|
309,Cramorant,,
|
||||||
|
310,Toxel,,
|
||||||
|
311,Toxtricity,,
|
||||||
|
312,Silicobra,,
|
||||||
|
313,Sandaconda,,
|
||||||
|
314,Hippopotas,,
|
||||||
|
315,Hippowdon,,
|
||||||
|
316,Durant,,
|
||||||
|
317,Heatmor,,
|
||||||
|
318,Helioptile,,
|
||||||
|
319,Heliolisk,,
|
||||||
|
320,Hawlucha,,
|
||||||
|
321,Trapinch,,
|
||||||
|
322,Vibrava,,
|
||||||
|
323,Flygon,,
|
||||||
|
324,Axew,,
|
||||||
|
325,Fraxure,,
|
||||||
|
326,Haxorus,,
|
||||||
|
327,Yamask,,
|
||||||
|
328,Runerigus,,
|
||||||
|
329,Cofagrigus,,
|
||||||
|
330,Honedge,,
|
||||||
|
331,Doublade,,
|
||||||
|
332,Aegislash,,
|
||||||
|
333,Ponyta,,
|
||||||
|
334,Rapidash,,
|
||||||
|
335,Sinistea,,
|
||||||
|
336,Polteageist,,
|
||||||
|
337,Indeedee,,
|
||||||
|
338,Phantump,,
|
||||||
|
339,Trevenant,,
|
||||||
|
340,Morelull,,
|
||||||
|
341,Shiinotic,,
|
||||||
|
342,Oranguru,,
|
||||||
|
343,Passimian,,
|
||||||
|
344,Morpeko,,
|
||||||
|
345,Falinks,,
|
||||||
|
346,Drampa,,
|
||||||
|
347,Turtonator,,
|
||||||
|
348,Togedemaru,,
|
||||||
|
349,Snom,,
|
||||||
|
350,Frosmoth,,
|
||||||
|
351,Clobbopus,,
|
||||||
|
352,Grapploct,,
|
||||||
|
353,Pincurchin,,
|
||||||
|
354,Mantyke,,
|
||||||
|
355,Mantine,,
|
||||||
|
356,Wailmer,,
|
||||||
|
357,Wailord,,
|
||||||
|
358,Bergmite,,
|
||||||
|
359,Avalugg,,
|
||||||
|
360,Dhelmise,,
|
||||||
|
361,Lapras,,
|
||||||
|
362,Lunatone,,
|
||||||
|
363,Solrock,,
|
||||||
|
364,Mime Jr.,,
|
||||||
|
365,Mr. Mime,,
|
||||||
|
366,Mr. Rime,,
|
||||||
|
367,Darumaka,,
|
||||||
|
368,Darmanitan,,
|
||||||
|
369,Stonjourner,,
|
||||||
|
370,Eiscue,,
|
||||||
|
371,Duraludon,,
|
||||||
|
372,Rotom,,
|
||||||
|
373,Ditto,,
|
||||||
|
374,Dracozolt,,
|
||||||
|
375,Arctozolt,,
|
||||||
|
376,Dracovish,,
|
||||||
|
377,Arctovish,,
|
||||||
|
378,Charmander,,
|
||||||
|
379,Charmeleon,,
|
||||||
|
380,Charizard,,
|
||||||
|
381,Type: Null,,
|
||||||
|
382,Silvally,,
|
||||||
|
383,Larvitar,,
|
||||||
|
384,Pupitar,,
|
||||||
|
385,Tyranitar,,
|
||||||
|
386,Deino,,
|
||||||
|
387,Zweilous,,
|
||||||
|
388,Hydreigon,,
|
||||||
|
389,Goomy,,
|
||||||
|
390,Sliggoo,,
|
||||||
|
391,Goodra,,
|
||||||
|
392,Jangmo-o,,
|
||||||
|
393,Hakamo-o,,
|
||||||
|
394,Kommo-o,,
|
||||||
|
395,Dreepy,,
|
||||||
|
396,Drakloak,,
|
||||||
|
397,Dragapult,,
|
||||||
|
398,Zacian,,
|
||||||
|
399,Zamazenta,,
|
||||||
|
400,Eternatus,,
|
||||||
|
@@ -0,0 +1,161 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Pikipek,,
|
||||||
|
2,Trumbeak,,
|
||||||
|
3,Toucannon,,
|
||||||
|
4,Yungoos,,
|
||||||
|
5,Gumshoos,,
|
||||||
|
6,Rattata,,
|
||||||
|
7,Raticate,,
|
||||||
|
8,Caterpie,,
|
||||||
|
9,Metapod,,
|
||||||
|
10,Butterfree,,
|
||||||
|
11,Grubbin,,
|
||||||
|
12,Charjabug,,
|
||||||
|
13,Vikavolt,,
|
||||||
|
14,Bonsly,,
|
||||||
|
15,Sudowoodo,,
|
||||||
|
16,Happiny,,
|
||||||
|
17,Chansey,,
|
||||||
|
18,Blissey,,
|
||||||
|
19,Wingull,,
|
||||||
|
20,Pelipper,,
|
||||||
|
21,Crabrawler,,
|
||||||
|
22,Crabominable,,
|
||||||
|
23,Gastly,,
|
||||||
|
24,Haunter,,
|
||||||
|
25,Gengar,,
|
||||||
|
26,Zubat,,
|
||||||
|
27,Golbat,,
|
||||||
|
28,Crobat,,
|
||||||
|
29,Diglett,,
|
||||||
|
30,Dugtrio,,
|
||||||
|
31,Oricorio,,
|
||||||
|
32,Psyduck,,
|
||||||
|
33,Golduck,,
|
||||||
|
34,Magikarp,,
|
||||||
|
35,Gyarados,,
|
||||||
|
36,Barboach,,
|
||||||
|
37,Whiscash,,
|
||||||
|
38,Tentacool,,
|
||||||
|
39,Tentacruel,,
|
||||||
|
40,Finneon,,
|
||||||
|
41,Lumineon,,
|
||||||
|
42,Wishiwashi,,
|
||||||
|
43,Luvdisc,,
|
||||||
|
44,Corsola,,
|
||||||
|
45,Mareanie,,
|
||||||
|
46,Toxapex,,
|
||||||
|
47,Remoraid,,
|
||||||
|
48,Octillery,,
|
||||||
|
49,Mantyke,,
|
||||||
|
50,Mantine,,
|
||||||
|
51,Lillipup,,
|
||||||
|
52,Herdier,,
|
||||||
|
53,Stoutland,,
|
||||||
|
54,Eevee,,
|
||||||
|
55,Vaporeon,,
|
||||||
|
56,Jolteon,,
|
||||||
|
57,Flareon,,
|
||||||
|
58,Espeon,,
|
||||||
|
59,Umbreon,,
|
||||||
|
60,Leafeon,,
|
||||||
|
61,Glaceon,,
|
||||||
|
62,Sylveon,,
|
||||||
|
63,Mareep,,
|
||||||
|
64,Flaaffy,,
|
||||||
|
65,Ampharos,,
|
||||||
|
66,Mudbray,,
|
||||||
|
67,Mudsdale,,
|
||||||
|
68,Igglybuff,,
|
||||||
|
69,Jigglypuff,,
|
||||||
|
70,Wigglytuff,,
|
||||||
|
71,Tauros,,
|
||||||
|
72,Miltank,,
|
||||||
|
73,Surskit,,
|
||||||
|
74,Masquerain,,
|
||||||
|
75,Dewpider,,
|
||||||
|
76,Araquanid,,
|
||||||
|
77,Fomantis,,
|
||||||
|
78,Lurantis,,
|
||||||
|
79,Morelull,,
|
||||||
|
80,Shiinotic,,
|
||||||
|
81,Paras,,
|
||||||
|
82,Parasect,,
|
||||||
|
83,Poliwag,,
|
||||||
|
84,Poliwhirl,,
|
||||||
|
85,Poliwrath,,
|
||||||
|
86,Politoed,,
|
||||||
|
87,Goldeen,,
|
||||||
|
88,Seaking,,
|
||||||
|
89,Basculin,,
|
||||||
|
90,Feebas,,
|
||||||
|
91,Milotic,,
|
||||||
|
92,Alomomola,,
|
||||||
|
93,Fletchling,,
|
||||||
|
94,Fletchinder,,
|
||||||
|
95,Talonflame,,
|
||||||
|
96,Salandit,,
|
||||||
|
97,Salazzle,,
|
||||||
|
98,Cubone,,
|
||||||
|
99,Marowak,,
|
||||||
|
100,Kangaskhan,,
|
||||||
|
101,Magby,,
|
||||||
|
102,Magmar,,
|
||||||
|
103,Magmortar,,
|
||||||
|
104,Larvesta,,
|
||||||
|
105,Volcarona,,
|
||||||
|
106,Stufful,,
|
||||||
|
107,Bewear,,
|
||||||
|
108,Bounsweet,,
|
||||||
|
109,Steenee,,
|
||||||
|
110,Tsareena,,
|
||||||
|
111,Comfey,,
|
||||||
|
112,Pinsir,,
|
||||||
|
113,Hoothoot,,
|
||||||
|
114,Noctowl,,
|
||||||
|
115,Kecleon,,
|
||||||
|
116,Oranguru,,
|
||||||
|
117,Passimian,,
|
||||||
|
118,Goomy,,
|
||||||
|
119,Sliggoo,,
|
||||||
|
120,Goodra,,
|
||||||
|
121,Castform,,
|
||||||
|
122,Wimpod,,
|
||||||
|
123,Golisopod,,
|
||||||
|
124,Staryu,,
|
||||||
|
125,Starmie,,
|
||||||
|
126,Sandygast,,
|
||||||
|
127,Palossand,,
|
||||||
|
128,Omanyte,,
|
||||||
|
129,Omastar,,
|
||||||
|
130,Kabuto,,
|
||||||
|
131,Kabutops,,
|
||||||
|
132,Lileep,,
|
||||||
|
133,Cradily,,
|
||||||
|
134,Anorith,,
|
||||||
|
135,Armaldo,,
|
||||||
|
136,Cranidos,,
|
||||||
|
137,Rampardos,,
|
||||||
|
138,Shieldon,,
|
||||||
|
139,Bastiodon,,
|
||||||
|
140,Archen,,
|
||||||
|
141,Archeops,,
|
||||||
|
142,Tirtouga,,
|
||||||
|
143,Carracosta,,
|
||||||
|
144,Tyrunt,,
|
||||||
|
145,Tyrantrum,,
|
||||||
|
146,Amaura,,
|
||||||
|
147,Aurorus,,
|
||||||
|
148,Larvitar,,
|
||||||
|
149,Pupitar,,
|
||||||
|
150,Tyranitar,,
|
||||||
|
151,Phantump,,
|
||||||
|
152,Trevenant,,
|
||||||
|
153,Natu,,
|
||||||
|
154,Xatu,,
|
||||||
|
155,Nosepass,,
|
||||||
|
156,Probopass,,
|
||||||
|
157,Pyukumuku,,
|
||||||
|
158,Chinchou,,
|
||||||
|
159,Lanturn,,
|
||||||
|
160,Tapu Lele,,
|
||||||
|
@@ -0,0 +1,404 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Rowlet,,
|
||||||
|
2,Dartrix,,
|
||||||
|
3,Decidueye,,
|
||||||
|
4,Litten,,
|
||||||
|
5,Torracat,,
|
||||||
|
6,Incineroar,,
|
||||||
|
7,Popplio,,
|
||||||
|
8,Brionne,,
|
||||||
|
9,Primarina,,
|
||||||
|
10,Pikipek,,
|
||||||
|
11,Trumbeak,,
|
||||||
|
12,Toucannon,,
|
||||||
|
13,Yungoos,,
|
||||||
|
14,Gumshoos,,
|
||||||
|
15,Rattata,,
|
||||||
|
16,Raticate,,
|
||||||
|
17,Caterpie,,
|
||||||
|
18,Metapod,,
|
||||||
|
19,Butterfree,,
|
||||||
|
20,Ledyba,,
|
||||||
|
21,Ledian,,
|
||||||
|
22,Spinarak,,
|
||||||
|
23,Ariados,,
|
||||||
|
24,Buneary,,
|
||||||
|
25,Lopunny,,
|
||||||
|
26,Inkay,,
|
||||||
|
27,Malamar,,
|
||||||
|
28,Zorua,,
|
||||||
|
29,Zoroark,,
|
||||||
|
30,Furfrou,,
|
||||||
|
31,Pichu,,
|
||||||
|
32,Pikachu,,
|
||||||
|
33,Raichu,,
|
||||||
|
34,Grubbin,,
|
||||||
|
35,Charjabug,,
|
||||||
|
36,Vikavolt,,
|
||||||
|
37,Bonsly,,
|
||||||
|
38,Sudowoodo,,
|
||||||
|
39,Happiny,,
|
||||||
|
40,Chansey,,
|
||||||
|
41,Blissey,,
|
||||||
|
42,Munchlax,,
|
||||||
|
43,Snorlax,,
|
||||||
|
44,Slowpoke,,
|
||||||
|
45,Slowbro,,
|
||||||
|
46,Slowking,,
|
||||||
|
47,Wingull,,
|
||||||
|
48,Pelipper,,
|
||||||
|
49,Abra,,
|
||||||
|
50,Kadabra,,
|
||||||
|
51,Alakazam,,
|
||||||
|
52,Meowth,,
|
||||||
|
53,Persian,,
|
||||||
|
54,Magnemite,,
|
||||||
|
55,Magneton,,
|
||||||
|
56,Magnezone,,
|
||||||
|
57,Grimer,,
|
||||||
|
58,Muk,,
|
||||||
|
59,Mime Jr.,,
|
||||||
|
60,Mr. Mime,,
|
||||||
|
61,Ekans,,
|
||||||
|
62,Arbok,,
|
||||||
|
63,Dunsparce,,
|
||||||
|
64,Growlithe,,
|
||||||
|
65,Arcanine,,
|
||||||
|
66,Drowzee,,
|
||||||
|
67,Hypno,,
|
||||||
|
68,Makuhita,,
|
||||||
|
69,Hariyama,,
|
||||||
|
70,Smeargle,,
|
||||||
|
71,Crabrawler,,
|
||||||
|
72,Crabominable,,
|
||||||
|
73,Gastly,,
|
||||||
|
74,Haunter,,
|
||||||
|
75,Gengar,,
|
||||||
|
76,Drifloon,,
|
||||||
|
77,Drifblim,,
|
||||||
|
78,Murkrow,,
|
||||||
|
79,Honchkrow,,
|
||||||
|
80,Zubat,,
|
||||||
|
81,Golbat,,
|
||||||
|
82,Crobat,,
|
||||||
|
83,Noibat,,
|
||||||
|
84,Noivern,,
|
||||||
|
85,Diglett,,
|
||||||
|
86,Dugtrio,,
|
||||||
|
87,Spearow,,
|
||||||
|
88,Fearow,,
|
||||||
|
89,Rufflet,,
|
||||||
|
90,Braviary,,
|
||||||
|
91,Vullaby,,
|
||||||
|
92,Mandibuzz,,
|
||||||
|
93,Mankey,,
|
||||||
|
94,Primeape,,
|
||||||
|
95,Delibird,,
|
||||||
|
96,Hawlucha,,
|
||||||
|
97,Oricorio,,
|
||||||
|
98,Cutiefly,,
|
||||||
|
99,Ribombee,,
|
||||||
|
100,Flabébé,,
|
||||||
|
101,Floette,,
|
||||||
|
102,Florges,,
|
||||||
|
103,Petilil,,
|
||||||
|
104,Lilligant,,
|
||||||
|
105,Cottonee,,
|
||||||
|
106,Whimsicott,,
|
||||||
|
107,Psyduck,,
|
||||||
|
108,Golduck,,
|
||||||
|
109,Smoochum,,
|
||||||
|
110,Jynx,,
|
||||||
|
111,Magikarp,,
|
||||||
|
112,Gyarados,,
|
||||||
|
113,Barboach,,
|
||||||
|
114,Whiscash,,
|
||||||
|
115,Seel,,
|
||||||
|
116,Dewgong,,
|
||||||
|
117,Machop,,
|
||||||
|
118,Machoke,,
|
||||||
|
119,Machamp,,
|
||||||
|
120,Roggenrola,,
|
||||||
|
121,Boldore,,
|
||||||
|
122,Gigalith,,
|
||||||
|
123,Carbink,,
|
||||||
|
124,Sableye,,
|
||||||
|
125,Mawile,,
|
||||||
|
126,Rockruff,,
|
||||||
|
127,Lycanroc,,
|
||||||
|
128,Spinda,,
|
||||||
|
129,Tentacool,,
|
||||||
|
130,Tentacruel,,
|
||||||
|
131,Finneon,,
|
||||||
|
132,Lumineon,,
|
||||||
|
133,Wishiwashi,,
|
||||||
|
134,Luvdisc,,
|
||||||
|
135,Corsola,,
|
||||||
|
136,Mareanie,,
|
||||||
|
137,Toxapex,,
|
||||||
|
138,Shellder,,
|
||||||
|
139,Cloyster,,
|
||||||
|
140,Clamperl,,
|
||||||
|
141,Huntail,,
|
||||||
|
142,Gorebyss,,
|
||||||
|
143,Remoraid,,
|
||||||
|
144,Octillery,,
|
||||||
|
145,Mantyke,,
|
||||||
|
146,Mantine,,
|
||||||
|
147,Bagon,,
|
||||||
|
148,Shelgon,,
|
||||||
|
149,Salamence,,
|
||||||
|
150,Lillipup,,
|
||||||
|
151,Herdier,,
|
||||||
|
152,Stoutland,,
|
||||||
|
153,Eevee,,
|
||||||
|
154,Vaporeon,,
|
||||||
|
155,Jolteon,,
|
||||||
|
156,Flareon,,
|
||||||
|
157,Espeon,,
|
||||||
|
158,Umbreon,,
|
||||||
|
159,Leafeon,,
|
||||||
|
160,Glaceon,,
|
||||||
|
161,Sylveon,,
|
||||||
|
162,Mareep,,
|
||||||
|
163,Flaaffy,,
|
||||||
|
164,Ampharos,,
|
||||||
|
165,Mudbray,,
|
||||||
|
166,Mudsdale,,
|
||||||
|
167,Igglybuff,,
|
||||||
|
168,Jigglypuff,,
|
||||||
|
169,Wigglytuff,,
|
||||||
|
170,Tauros,,
|
||||||
|
171,Miltank,,
|
||||||
|
172,Surskit,,
|
||||||
|
173,Masquerain,,
|
||||||
|
174,Dewpider,,
|
||||||
|
175,Araquanid,,
|
||||||
|
176,Fomantis,,
|
||||||
|
177,Lurantis,,
|
||||||
|
178,Morelull,,
|
||||||
|
179,Shiinotic,,
|
||||||
|
180,Paras,,
|
||||||
|
181,Parasect,,
|
||||||
|
182,Poliwag,,
|
||||||
|
183,Poliwhirl,,
|
||||||
|
184,Poliwrath,,
|
||||||
|
185,Politoed,,
|
||||||
|
186,Goldeen,,
|
||||||
|
187,Seaking,,
|
||||||
|
188,Basculin,,
|
||||||
|
189,Feebas,,
|
||||||
|
190,Milotic,,
|
||||||
|
191,Alomomola,,
|
||||||
|
192,Fletchling,,
|
||||||
|
193,Fletchinder,,
|
||||||
|
194,Talonflame,,
|
||||||
|
195,Salandit,,
|
||||||
|
196,Salazzle,,
|
||||||
|
197,Cubone,,
|
||||||
|
198,Marowak,,
|
||||||
|
199,Kangaskhan,,
|
||||||
|
200,Magby,,
|
||||||
|
201,Magmar,,
|
||||||
|
202,Magmortar,,
|
||||||
|
203,Larvesta,,
|
||||||
|
204,Volcarona,,
|
||||||
|
205,Stufful,,
|
||||||
|
206,Bewear,,
|
||||||
|
207,Bounsweet,,
|
||||||
|
208,Steenee,,
|
||||||
|
209,Tsareena,,
|
||||||
|
210,Comfey,,
|
||||||
|
211,Pinsir,,
|
||||||
|
212,Hoothoot,,
|
||||||
|
213,Noctowl,,
|
||||||
|
214,Kecleon,,
|
||||||
|
215,Oranguru,,
|
||||||
|
216,Passimian,,
|
||||||
|
217,Goomy,,
|
||||||
|
218,Sliggoo,,
|
||||||
|
219,Goodra,,
|
||||||
|
220,Castform,,
|
||||||
|
221,Wimpod,,
|
||||||
|
222,Golisopod,,
|
||||||
|
223,Staryu,,
|
||||||
|
224,Starmie,,
|
||||||
|
225,Sandygast,,
|
||||||
|
226,Palossand,,
|
||||||
|
227,Omanyte,,
|
||||||
|
228,Omastar,,
|
||||||
|
229,Kabuto,,
|
||||||
|
230,Kabutops,,
|
||||||
|
231,Lileep,,
|
||||||
|
232,Cradily,,
|
||||||
|
233,Anorith,,
|
||||||
|
234,Armaldo,,
|
||||||
|
235,Cranidos,,
|
||||||
|
236,Rampardos,,
|
||||||
|
237,Shieldon,,
|
||||||
|
238,Bastiodon,,
|
||||||
|
239,Archen,,
|
||||||
|
240,Archeops,,
|
||||||
|
241,Tirtouga,,
|
||||||
|
242,Carracosta,,
|
||||||
|
243,Tyrunt,,
|
||||||
|
244,Tyrantrum,,
|
||||||
|
245,Amaura,,
|
||||||
|
246,Aurorus,,
|
||||||
|
247,Larvitar,,
|
||||||
|
248,Pupitar,,
|
||||||
|
249,Tyranitar,,
|
||||||
|
250,Phantump,,
|
||||||
|
251,Trevenant,,
|
||||||
|
252,Natu,,
|
||||||
|
253,Xatu,,
|
||||||
|
254,Nosepass,,
|
||||||
|
255,Probopass,,
|
||||||
|
256,Pyukumuku,,
|
||||||
|
257,Chinchou,,
|
||||||
|
258,Lanturn,,
|
||||||
|
259,Type: Null,,
|
||||||
|
260,Silvally,,
|
||||||
|
261,Poipole,,
|
||||||
|
262,Naganadel,,
|
||||||
|
263,Zygarde,,
|
||||||
|
264,Trubbish,,
|
||||||
|
265,Garbodor,,
|
||||||
|
266,Minccino,,
|
||||||
|
267,Cinccino,,
|
||||||
|
268,Pineco,,
|
||||||
|
269,Forretress,,
|
||||||
|
270,Skarmory,,
|
||||||
|
271,Ditto,,
|
||||||
|
272,Cleffa,,
|
||||||
|
273,Clefairy,,
|
||||||
|
274,Clefable,,
|
||||||
|
275,Elgyem,,
|
||||||
|
276,Beheeyem,,
|
||||||
|
277,Minior,,
|
||||||
|
278,Beldum,,
|
||||||
|
279,Metang,,
|
||||||
|
280,Metagross,,
|
||||||
|
281,Porygon,,
|
||||||
|
282,Porygon2,,
|
||||||
|
283,Porygon-Z,,
|
||||||
|
284,Pancham,,
|
||||||
|
285,Pangoro,,
|
||||||
|
286,Komala,,
|
||||||
|
287,Torkoal,,
|
||||||
|
288,Turtonator,,
|
||||||
|
289,Houndour,,
|
||||||
|
290,Houndoom,,
|
||||||
|
291,Dedenne,,
|
||||||
|
292,Togedemaru,,
|
||||||
|
293,Electrike,,
|
||||||
|
294,Manectric,,
|
||||||
|
295,Elekid,,
|
||||||
|
296,Electabuzz,,
|
||||||
|
297,Electivire,,
|
||||||
|
298,Geodude,,
|
||||||
|
299,Graveler,,
|
||||||
|
300,Golem,,
|
||||||
|
301,Sandile,,
|
||||||
|
302,Krokorok,,
|
||||||
|
303,Krookodile,,
|
||||||
|
304,Trapinch,,
|
||||||
|
305,Vibrava,,
|
||||||
|
306,Flygon,,
|
||||||
|
307,Gible,,
|
||||||
|
308,Gabite,,
|
||||||
|
309,Garchomp,,
|
||||||
|
310,Baltoy,,
|
||||||
|
311,Claydol,,
|
||||||
|
312,Golett,,
|
||||||
|
313,Golurk,,
|
||||||
|
314,Klefki,,
|
||||||
|
315,Mimikyu,,
|
||||||
|
316,Shuppet,,
|
||||||
|
317,Banette,,
|
||||||
|
318,Frillish,,
|
||||||
|
319,Jellicent,,
|
||||||
|
320,Bruxish,,
|
||||||
|
321,Drampa,,
|
||||||
|
322,Absol,,
|
||||||
|
323,Snorunt,,
|
||||||
|
324,Glalie,,
|
||||||
|
325,Froslass,,
|
||||||
|
326,Sneasel,,
|
||||||
|
327,Weavile,,
|
||||||
|
328,Sandshrew,,
|
||||||
|
329,Sandslash,,
|
||||||
|
330,Vulpix,,
|
||||||
|
331,Ninetales,,
|
||||||
|
332,Vanillite,,
|
||||||
|
333,Vanillish,,
|
||||||
|
334,Vanilluxe,,
|
||||||
|
335,Scraggy,,
|
||||||
|
336,Scrafty,,
|
||||||
|
337,Pawniard,,
|
||||||
|
338,Bisharp,,
|
||||||
|
339,Snubbull,,
|
||||||
|
340,Granbull,,
|
||||||
|
341,Shellos,,
|
||||||
|
342,Gastrodon,,
|
||||||
|
343,Relicanth,,
|
||||||
|
344,Dhelmise,,
|
||||||
|
345,Carvanha,,
|
||||||
|
346,Sharpedo,,
|
||||||
|
347,Skrelp,,
|
||||||
|
348,Dragalge,,
|
||||||
|
349,Clauncher,,
|
||||||
|
350,Clawitzer,,
|
||||||
|
351,Wailmer,,
|
||||||
|
352,Wailord,,
|
||||||
|
353,Lapras,,
|
||||||
|
354,Tropius,,
|
||||||
|
355,Exeggcute,,
|
||||||
|
356,Exeggutor,,
|
||||||
|
357,Corphish,,
|
||||||
|
358,Crawdaunt,,
|
||||||
|
359,Mienfoo,,
|
||||||
|
360,Mienshao,,
|
||||||
|
361,Jangmo-o,,
|
||||||
|
362,Hakamo-o,,
|
||||||
|
363,Kommo-o,,
|
||||||
|
364,Emolga,,
|
||||||
|
365,Scyther,,
|
||||||
|
366,Scizor,,
|
||||||
|
367,Heracross,,
|
||||||
|
368,Aipom,,
|
||||||
|
369,Ambipom,,
|
||||||
|
370,Litleo,,
|
||||||
|
371,Pyroar,,
|
||||||
|
372,Misdreavus,,
|
||||||
|
373,Mismagius,,
|
||||||
|
374,Druddigon,,
|
||||||
|
375,Lickitung,,
|
||||||
|
376,Lickilicky,,
|
||||||
|
377,Riolu,,
|
||||||
|
378,Lucario,,
|
||||||
|
379,Dratini,,
|
||||||
|
380,Dragonair,,
|
||||||
|
381,Dragonite,,
|
||||||
|
382,Aerodactyl,,
|
||||||
|
383,Tapu Koko,,
|
||||||
|
384,Tapu Lele,,
|
||||||
|
385,Tapu Bulu,,
|
||||||
|
386,Tapu Fini,,
|
||||||
|
387,Cosmog,,
|
||||||
|
388,Cosmoem,,
|
||||||
|
389,Solgaleo,,
|
||||||
|
390,Lunala,,
|
||||||
|
391,Stakataka,,
|
||||||
|
392,Blacephalon,,
|
||||||
|
393,Nihilego,,
|
||||||
|
394,Buzzwole,,
|
||||||
|
395,Pheromosa,,
|
||||||
|
396,Xurkitree,,
|
||||||
|
397,Celesteela,,
|
||||||
|
398,Kartana,,
|
||||||
|
399,Guzzlord,,
|
||||||
|
400,Necrozma,,
|
||||||
|
401,Magearna,,
|
||||||
|
402,Marshadow,,
|
||||||
|
403,Zeraora,,
|
||||||
|
@@ -0,0 +1,151 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Rowlet,,
|
||||||
|
2,Dartrix,,
|
||||||
|
3,Decidueye,,
|
||||||
|
4,Litten,,
|
||||||
|
5,Torracat,,
|
||||||
|
6,Incineroar,,
|
||||||
|
7,Popplio,,
|
||||||
|
8,Brionne,,
|
||||||
|
9,Primarina,,
|
||||||
|
10,Pikipek,,
|
||||||
|
11,Trumbeak,,
|
||||||
|
12,Toucannon,,
|
||||||
|
13,Yungoos,,
|
||||||
|
14,Gumshoos,,
|
||||||
|
15,Rattata,,
|
||||||
|
16,Raticate,,
|
||||||
|
17,Caterpie,,
|
||||||
|
18,Metapod,,
|
||||||
|
19,Butterfree,,
|
||||||
|
20,Ledyba,,
|
||||||
|
21,Ledian,,
|
||||||
|
22,Spinarak,,
|
||||||
|
23,Ariados,,
|
||||||
|
24,Buneary,,
|
||||||
|
25,Lopunny,,
|
||||||
|
26,Inkay,,
|
||||||
|
27,Malamar,,
|
||||||
|
28,Zorua,,
|
||||||
|
29,Zoroark,,
|
||||||
|
30,Furfrou,,
|
||||||
|
31,Pichu,,
|
||||||
|
32,Pikachu,,
|
||||||
|
33,Raichu,,
|
||||||
|
34,Grubbin,,
|
||||||
|
35,Charjabug,,
|
||||||
|
36,Vikavolt,,
|
||||||
|
37,Bonsly,,
|
||||||
|
38,Sudowoodo,,
|
||||||
|
39,Happiny,,
|
||||||
|
40,Chansey,,
|
||||||
|
41,Blissey,,
|
||||||
|
42,Munchlax,,
|
||||||
|
43,Snorlax,,
|
||||||
|
44,Slowpoke,,
|
||||||
|
45,Slowbro,,
|
||||||
|
46,Slowking,,
|
||||||
|
47,Wingull,,
|
||||||
|
48,Pelipper,,
|
||||||
|
49,Abra,,
|
||||||
|
50,Kadabra,,
|
||||||
|
51,Alakazam,,
|
||||||
|
52,Meowth,,
|
||||||
|
53,Persian,,
|
||||||
|
54,Magnemite,,
|
||||||
|
55,Magneton,,
|
||||||
|
56,Magnezone,,
|
||||||
|
57,Grimer,,
|
||||||
|
58,Muk,,
|
||||||
|
59,Mime Jr.,,
|
||||||
|
60,Mr. Mime,,
|
||||||
|
61,Ekans,,
|
||||||
|
62,Arbok,,
|
||||||
|
63,Dunsparce,,
|
||||||
|
64,Growlithe,,
|
||||||
|
65,Arcanine,,
|
||||||
|
66,Drowzee,,
|
||||||
|
67,Hypno,,
|
||||||
|
68,Makuhita,,
|
||||||
|
69,Hariyama,,
|
||||||
|
70,Smeargle,,
|
||||||
|
71,Crabrawler,,
|
||||||
|
72,Crabominable,,
|
||||||
|
73,Gastly,,
|
||||||
|
74,Haunter,,
|
||||||
|
75,Gengar,,
|
||||||
|
76,Drifloon,,
|
||||||
|
77,Drifblim,,
|
||||||
|
78,Murkrow,,
|
||||||
|
79,Honchkrow,,
|
||||||
|
80,Zubat,,
|
||||||
|
81,Golbat,,
|
||||||
|
82,Crobat,,
|
||||||
|
83,Noibat,,
|
||||||
|
84,Noivern,,
|
||||||
|
85,Diglett,,
|
||||||
|
86,Dugtrio,,
|
||||||
|
87,Spearow,,
|
||||||
|
88,Fearow,,
|
||||||
|
89,Rufflet,,
|
||||||
|
90,Braviary,,
|
||||||
|
91,Vullaby,,
|
||||||
|
92,Mandibuzz,,
|
||||||
|
93,Mankey,,
|
||||||
|
94,Primeape,,
|
||||||
|
95,Delibird,,
|
||||||
|
96,Hawlucha,,
|
||||||
|
97,Oricorio,,
|
||||||
|
98,Cutiefly,,
|
||||||
|
99,Ribombee,,
|
||||||
|
100,Flabébé,,
|
||||||
|
101,Floette,,
|
||||||
|
102,Florges,,
|
||||||
|
103,Petilil,,
|
||||||
|
104,Lilligant,,
|
||||||
|
105,Cottonee,,
|
||||||
|
106,Whimsicott,,
|
||||||
|
107,Psyduck,,
|
||||||
|
108,Golduck,,
|
||||||
|
109,Smoochum,,
|
||||||
|
110,Jynx,,
|
||||||
|
111,Magikarp,,
|
||||||
|
112,Gyarados,,
|
||||||
|
113,Barboach,,
|
||||||
|
114,Whiscash,,
|
||||||
|
115,Seel,,
|
||||||
|
116,Dewgong,,
|
||||||
|
117,Machop,,
|
||||||
|
118,Machoke,,
|
||||||
|
119,Machamp,,
|
||||||
|
120,Roggenrola,,
|
||||||
|
121,Boldore,,
|
||||||
|
122,Gigalith,,
|
||||||
|
123,Carbink,,
|
||||||
|
124,Sableye,,
|
||||||
|
125,Mawile,,
|
||||||
|
126,Rockruff,,
|
||||||
|
127,Lycanroc,,
|
||||||
|
128,Spinda,,
|
||||||
|
129,Tentacool,,
|
||||||
|
130,Tentacruel,,
|
||||||
|
131,Finneon,,
|
||||||
|
132,Lumineon,,
|
||||||
|
133,Wishiwashi,,
|
||||||
|
134,Luvdisc,,
|
||||||
|
135,Corsola,,
|
||||||
|
136,Mareanie,,
|
||||||
|
137,Toxapex,,
|
||||||
|
138,Shellder,,
|
||||||
|
139,Cloyster,,
|
||||||
|
140,Clamperl,,
|
||||||
|
141,Huntail,,
|
||||||
|
142,Gorebyss,,
|
||||||
|
143,Remoraid,,
|
||||||
|
144,Octillery,,
|
||||||
|
145,Mantyke,,
|
||||||
|
146,Mantine,,
|
||||||
|
147,Bagon,,
|
||||||
|
148,Shelgon,,
|
||||||
|
149,Salamence,,
|
||||||
|
150,Tapu Koko,,
|
||||||
|
@@ -0,0 +1,131 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Pikipek,,
|
||||||
|
2,Trumbeak,,
|
||||||
|
3,Toucannon,,
|
||||||
|
4,Yungoos,,
|
||||||
|
5,Gumshoos,,
|
||||||
|
6,Rattata,,
|
||||||
|
7,Raticate,,
|
||||||
|
8,Buneary,,
|
||||||
|
9,Lopunny,,
|
||||||
|
10,Inkay,,
|
||||||
|
11,Malamar,,
|
||||||
|
12,Zorua,,
|
||||||
|
13,Zoroark,,
|
||||||
|
14,Furfrou,,
|
||||||
|
15,Happiny,,
|
||||||
|
16,Chansey,,
|
||||||
|
17,Blissey,,
|
||||||
|
18,Wingull,,
|
||||||
|
19,Pelipper,,
|
||||||
|
20,Drowzee,,
|
||||||
|
21,Hypno,,
|
||||||
|
22,Makuhita,,
|
||||||
|
23,Hariyama,,
|
||||||
|
24,Crabrawler,,
|
||||||
|
25,Crabominable,,
|
||||||
|
26,Zubat,,
|
||||||
|
27,Golbat,,
|
||||||
|
28,Crobat,,
|
||||||
|
29,Noibat,,
|
||||||
|
30,Noivern,,
|
||||||
|
31,Diglett,,
|
||||||
|
32,Dugtrio,,
|
||||||
|
33,Spearow,,
|
||||||
|
34,Fearow,,
|
||||||
|
35,Rufflet,,
|
||||||
|
36,Braviary,,
|
||||||
|
37,Vullaby,,
|
||||||
|
38,Mandibuzz,,
|
||||||
|
39,Mankey,,
|
||||||
|
40,Primeape,,
|
||||||
|
41,Oricorio,,
|
||||||
|
42,Cutiefly,,
|
||||||
|
43,Ribombee,,
|
||||||
|
44,Flabébé,,
|
||||||
|
45,Floette,,
|
||||||
|
46,Florges,,
|
||||||
|
47,Petilil,,
|
||||||
|
48,Lilligant,,
|
||||||
|
49,Cottonee,,
|
||||||
|
50,Whimsicott,,
|
||||||
|
51,Psyduck,,
|
||||||
|
52,Golduck,,
|
||||||
|
53,Magikarp,,
|
||||||
|
54,Gyarados,,
|
||||||
|
55,Barboach,,
|
||||||
|
56,Whiscash,,
|
||||||
|
57,Machop,,
|
||||||
|
58,Machoke,,
|
||||||
|
59,Machamp,,
|
||||||
|
60,Roggenrola,,
|
||||||
|
61,Boldore,,
|
||||||
|
62,Gigalith,,
|
||||||
|
63,Carbink,,
|
||||||
|
64,Sableye,,
|
||||||
|
65,Rockruff,,
|
||||||
|
66,Lycanroc,,
|
||||||
|
67,Tentacool,,
|
||||||
|
68,Tentacruel,,
|
||||||
|
69,Finneon,,
|
||||||
|
70,Lumineon,,
|
||||||
|
71,Mudbray,,
|
||||||
|
72,Mudsdale,,
|
||||||
|
73,Tauros,,
|
||||||
|
74,Miltank,,
|
||||||
|
75,Basculin,,
|
||||||
|
76,Stufful,,
|
||||||
|
77,Bewear,,
|
||||||
|
78,Pinsir,,
|
||||||
|
79,Goomy,,
|
||||||
|
80,Sliggoo,,
|
||||||
|
81,Goodra,,
|
||||||
|
82,Castform,,
|
||||||
|
83,Wimpod,,
|
||||||
|
84,Golisopod,,
|
||||||
|
85,Skarmory,,
|
||||||
|
86,Snubbull,,
|
||||||
|
87,Granbull,,
|
||||||
|
88,Shellos,,
|
||||||
|
89,Gastrodon,,
|
||||||
|
90,Relicanth,,
|
||||||
|
91,Dhelmise,,
|
||||||
|
92,Carvanha,,
|
||||||
|
93,Sharpedo,,
|
||||||
|
94,Skrelp,,
|
||||||
|
95,Dragalge,,
|
||||||
|
96,Clauncher,,
|
||||||
|
97,Clawitzer,,
|
||||||
|
98,Wailmer,,
|
||||||
|
99,Wailord,,
|
||||||
|
100,Lapras,,
|
||||||
|
101,Tropius,,
|
||||||
|
102,Exeggcute,,
|
||||||
|
103,Exeggutor,,
|
||||||
|
104,Corphish,,
|
||||||
|
105,Crawdaunt,,
|
||||||
|
106,Mienfoo,,
|
||||||
|
107,Mienshao,,
|
||||||
|
108,Jangmo-o,,
|
||||||
|
109,Hakamo-o,,
|
||||||
|
110,Kommo-o,,
|
||||||
|
111,Emolga,,
|
||||||
|
112,Scyther,,
|
||||||
|
113,Scizor,,
|
||||||
|
114,Heracross,,
|
||||||
|
115,Aipom,,
|
||||||
|
116,Ambipom,,
|
||||||
|
117,Litleo,,
|
||||||
|
118,Pyroar,,
|
||||||
|
119,Misdreavus,,
|
||||||
|
120,Mismagius,,
|
||||||
|
121,Druddigon,,
|
||||||
|
122,Lickitung,,
|
||||||
|
123,Lickilicky,,
|
||||||
|
124,Riolu,,
|
||||||
|
125,Lucario,,
|
||||||
|
126,Dratini,,
|
||||||
|
127,Dragonair,,
|
||||||
|
128,Dragonite,,
|
||||||
|
129,Aerodactyl,,
|
||||||
|
130,Tapu Fini,,
|
||||||
|
@@ -0,0 +1,161 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Pikipek,,
|
||||||
|
2,Trumbeak,,
|
||||||
|
3,Toucannon,,
|
||||||
|
4,Yungoos,,
|
||||||
|
5,Gumshoos,,
|
||||||
|
6,Rattata,,
|
||||||
|
7,Raticate,,
|
||||||
|
8,Ledyba,,
|
||||||
|
9,Ledian,,
|
||||||
|
10,Spinarak,,
|
||||||
|
11,Ariados,,
|
||||||
|
12,Grubbin,,
|
||||||
|
13,Charjabug,,
|
||||||
|
14,Vikavolt,,
|
||||||
|
15,Happiny,,
|
||||||
|
16,Chansey,,
|
||||||
|
17,Blissey,,
|
||||||
|
18,Slowpoke,,
|
||||||
|
19,Slowbro,,
|
||||||
|
20,Slowking,,
|
||||||
|
21,Wingull,,
|
||||||
|
22,Pelipper,,
|
||||||
|
23,Meowth,,
|
||||||
|
24,Persian,,
|
||||||
|
25,Magnemite,,
|
||||||
|
26,Magneton,,
|
||||||
|
27,Magnezone,,
|
||||||
|
28,Grimer,,
|
||||||
|
29,Muk,,
|
||||||
|
30,Crabrawler,,
|
||||||
|
31,Crabominable,,
|
||||||
|
32,Gastly,,
|
||||||
|
33,Haunter,,
|
||||||
|
34,Gengar,,
|
||||||
|
35,Zubat,,
|
||||||
|
36,Golbat,,
|
||||||
|
37,Crobat,,
|
||||||
|
38,Diglett,,
|
||||||
|
39,Dugtrio,,
|
||||||
|
40,Spearow,,
|
||||||
|
41,Fearow,,
|
||||||
|
42,Oricorio,,
|
||||||
|
43,Cutiefly,,
|
||||||
|
44,Ribombee,,
|
||||||
|
45,Flabébé,,
|
||||||
|
46,Floette,,
|
||||||
|
47,Florges,,
|
||||||
|
48,Petilil,,
|
||||||
|
49,Lilligant,,
|
||||||
|
50,Cottonee,,
|
||||||
|
51,Whimsicott,,
|
||||||
|
52,Psyduck,,
|
||||||
|
53,Golduck,,
|
||||||
|
54,Magikarp,,
|
||||||
|
55,Gyarados,,
|
||||||
|
56,Tentacool,,
|
||||||
|
57,Tentacruel,,
|
||||||
|
58,Finneon,,
|
||||||
|
59,Lumineon,,
|
||||||
|
60,Wishiwashi,,
|
||||||
|
61,Clamperl,,
|
||||||
|
62,Huntail,,
|
||||||
|
63,Gorebyss,,
|
||||||
|
64,Mudbray,,
|
||||||
|
65,Mudsdale,,
|
||||||
|
66,Surskit,,
|
||||||
|
67,Masquerain,,
|
||||||
|
68,Dewpider,,
|
||||||
|
69,Araquanid,,
|
||||||
|
70,Morelull,,
|
||||||
|
71,Shiinotic,,
|
||||||
|
72,Paras,,
|
||||||
|
73,Parasect,,
|
||||||
|
74,Poliwag,,
|
||||||
|
75,Poliwhirl,,
|
||||||
|
76,Poliwrath,,
|
||||||
|
77,Politoed,,
|
||||||
|
78,Goldeen,,
|
||||||
|
79,Seaking,,
|
||||||
|
80,Basculin,,
|
||||||
|
81,Goomy,,
|
||||||
|
82,Sliggoo,,
|
||||||
|
83,Goodra,,
|
||||||
|
84,Castform,,
|
||||||
|
85,Trubbish,,
|
||||||
|
86,Garbodor,,
|
||||||
|
87,Minccino,,
|
||||||
|
88,Cinccino,,
|
||||||
|
89,Pineco,,
|
||||||
|
90,Forretress,,
|
||||||
|
91,Skarmory,,
|
||||||
|
92,Ditto,,
|
||||||
|
93,Cleffa,,
|
||||||
|
94,Clefairy,,
|
||||||
|
95,Clefable,,
|
||||||
|
96,Elgyem,,
|
||||||
|
97,Beheeyem,,
|
||||||
|
98,Minior,,
|
||||||
|
99,Beldum,,
|
||||||
|
100,Metang,,
|
||||||
|
101,Metagross,,
|
||||||
|
102,Porygon,,
|
||||||
|
103,Porygon2,,
|
||||||
|
104,Porygon-Z,,
|
||||||
|
105,Pancham,,
|
||||||
|
106,Pangoro,,
|
||||||
|
107,Komala,,
|
||||||
|
108,Torkoal,,
|
||||||
|
109,Turtonator,,
|
||||||
|
110,Houndour,,
|
||||||
|
111,Houndoom,,
|
||||||
|
112,Dedenne,,
|
||||||
|
113,Togedemaru,,
|
||||||
|
114,Electrike,,
|
||||||
|
115,Manectric,,
|
||||||
|
116,Elekid,,
|
||||||
|
117,Electabuzz,,
|
||||||
|
118,Electivire,,
|
||||||
|
119,Geodude,,
|
||||||
|
120,Graveler,,
|
||||||
|
121,Golem,,
|
||||||
|
122,Sandile,,
|
||||||
|
123,Krokorok,,
|
||||||
|
124,Krookodile,,
|
||||||
|
125,Trapinch,,
|
||||||
|
126,Vibrava,,
|
||||||
|
127,Flygon,,
|
||||||
|
128,Gible,,
|
||||||
|
129,Gabite,,
|
||||||
|
130,Garchomp,,
|
||||||
|
131,Baltoy,,
|
||||||
|
132,Claydol,,
|
||||||
|
133,Golett,,
|
||||||
|
134,Golurk,,
|
||||||
|
135,Klefki,,
|
||||||
|
136,Mimikyu,,
|
||||||
|
137,Shuppet,,
|
||||||
|
138,Banette,,
|
||||||
|
139,Frillish,,
|
||||||
|
140,Jellicent,,
|
||||||
|
141,Bruxish,,
|
||||||
|
142,Drampa,,
|
||||||
|
143,Absol,,
|
||||||
|
144,Snorunt,,
|
||||||
|
145,Glalie,,
|
||||||
|
146,Froslass,,
|
||||||
|
147,Sneasel,,
|
||||||
|
148,Weavile,,
|
||||||
|
149,Sandshrew,,
|
||||||
|
150,Sandslash,,
|
||||||
|
151,Vulpix,,
|
||||||
|
152,Ninetales,,
|
||||||
|
153,Vanillite,,
|
||||||
|
154,Vanillish,,
|
||||||
|
155,Vanilluxe,,
|
||||||
|
156,Scraggy,,
|
||||||
|
157,Scrafty,,
|
||||||
|
158,Pawniard,,
|
||||||
|
159,Bisharp,,
|
||||||
|
160,Tapu Bulu,,
|
||||||
|
@@ -0,0 +1,154 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Chespin,,
|
||||||
|
2,Quilladin,,
|
||||||
|
3,Chesnaught,,
|
||||||
|
4,Fennekin,,
|
||||||
|
5,Braixen,,
|
||||||
|
6,Delphox,,
|
||||||
|
7,Froakie,,
|
||||||
|
8,Frogadier,,
|
||||||
|
9,Greninja,,
|
||||||
|
10,Bunnelby,,
|
||||||
|
11,Diggersby,,
|
||||||
|
12,Zigzagoon,,
|
||||||
|
13,Linoone,,
|
||||||
|
14,Fletchling,,
|
||||||
|
15,Fletchinder,,
|
||||||
|
16,Talonflame,,
|
||||||
|
17,Pidgey,,
|
||||||
|
18,Pidgeotto,,
|
||||||
|
19,Pidgeot,,
|
||||||
|
20,Scatterbug,,
|
||||||
|
21,Spewpa,,
|
||||||
|
22,Vivillon,,
|
||||||
|
23,Caterpie,,
|
||||||
|
24,Metapod,,
|
||||||
|
25,Butterfree,,
|
||||||
|
26,Weedle,,
|
||||||
|
27,Kakuna,,
|
||||||
|
28,Beedrill,,
|
||||||
|
29,Pansage,,
|
||||||
|
30,Simisage,,
|
||||||
|
31,Pansear,,
|
||||||
|
32,Simisear,,
|
||||||
|
33,Panpour,,
|
||||||
|
34,Simipour,,
|
||||||
|
35,Pichu,,
|
||||||
|
36,Pikachu,,
|
||||||
|
37,Raichu,,
|
||||||
|
38,Bidoof,,
|
||||||
|
39,Bibarel,,
|
||||||
|
40,Dunsparce,,
|
||||||
|
41,Azurill,,
|
||||||
|
42,Marill,,
|
||||||
|
43,Azumarill,,
|
||||||
|
44,Burmy,,
|
||||||
|
45,Wormadam,,
|
||||||
|
46,Mothim,,
|
||||||
|
47,Surskit,,
|
||||||
|
48,Masquerain,,
|
||||||
|
49,Magikarp,,
|
||||||
|
50,Gyarados,,
|
||||||
|
51,Corphish,,
|
||||||
|
52,Crawdaunt,,
|
||||||
|
53,Goldeen,,
|
||||||
|
54,Seaking,,
|
||||||
|
55,Carvanha,,
|
||||||
|
56,Sharpedo,,
|
||||||
|
57,Litleo,,
|
||||||
|
58,Pyroar,,
|
||||||
|
59,Psyduck,,
|
||||||
|
60,Golduck,,
|
||||||
|
61,Farfetch'd,,
|
||||||
|
62,Riolu,,
|
||||||
|
63,Lucario,,
|
||||||
|
64,Ralts,,
|
||||||
|
65,Kirlia,,
|
||||||
|
66,Gardevoir,,
|
||||||
|
67,Gallade,,
|
||||||
|
68,Flabébé,,
|
||||||
|
69,Floette,,
|
||||||
|
70,Florges,,
|
||||||
|
71,Budew,,
|
||||||
|
72,Roselia,,
|
||||||
|
73,Roserade,,
|
||||||
|
74,Ledyba,,
|
||||||
|
75,Ledian,,
|
||||||
|
76,Combee,,
|
||||||
|
77,Vespiquen,,
|
||||||
|
78,Skitty,,
|
||||||
|
79,Delcatty,,
|
||||||
|
80,Bulbasaur,,
|
||||||
|
81,Ivysaur,,
|
||||||
|
82,Venusaur,,
|
||||||
|
83,Charmander,,
|
||||||
|
84,Charmeleon,,
|
||||||
|
85,Charizard,,
|
||||||
|
86,Squirtle,,
|
||||||
|
87,Wartortle,,
|
||||||
|
88,Blastoise,,
|
||||||
|
89,Skiddo,,
|
||||||
|
90,Gogoat,,
|
||||||
|
91,Pancham,,
|
||||||
|
92,Pangoro,,
|
||||||
|
93,Furfrou,,
|
||||||
|
94,Doduo,,
|
||||||
|
95,Dodrio,,
|
||||||
|
96,Plusle,,
|
||||||
|
97,Minun,,
|
||||||
|
98,Gulpin,,
|
||||||
|
99,Swalot,,
|
||||||
|
100,Scraggy,,
|
||||||
|
101,Scrafty,,
|
||||||
|
102,Abra,,
|
||||||
|
103,Kadabra,,
|
||||||
|
104,Alakazam,,
|
||||||
|
105,Oddish,,
|
||||||
|
106,Gloom,,
|
||||||
|
107,Vileplume,,
|
||||||
|
108,Bellossom,,
|
||||||
|
109,Sentret,,
|
||||||
|
110,Furret,,
|
||||||
|
111,Nincada,,
|
||||||
|
112,Ninjask,,
|
||||||
|
113,Shedinja,,
|
||||||
|
114,Espurr,,
|
||||||
|
115,Meowstic,,
|
||||||
|
116,Kecleon,,
|
||||||
|
117,Honedge,,
|
||||||
|
118,Doublade,,
|
||||||
|
119,Aegislash,,
|
||||||
|
120,Venipede,,
|
||||||
|
121,Whirlipede,,
|
||||||
|
122,Scolipede,,
|
||||||
|
123,Audino,,
|
||||||
|
124,Smeargle,,
|
||||||
|
125,Croagunk,,
|
||||||
|
126,Toxicroak,,
|
||||||
|
127,Ducklett,,
|
||||||
|
128,Swanna,,
|
||||||
|
129,Spritzee,,
|
||||||
|
130,Aromatisse,,
|
||||||
|
131,Swirlix,,
|
||||||
|
132,Slurpuff,,
|
||||||
|
133,Volbeat,,
|
||||||
|
134,Illumise,,
|
||||||
|
135,Hoppip,,
|
||||||
|
136,Skiploom,,
|
||||||
|
137,Jumpluff,,
|
||||||
|
138,Munchlax,,
|
||||||
|
139,Snorlax,,
|
||||||
|
140,Whismur,,
|
||||||
|
141,Loudred,,
|
||||||
|
142,Exploud,,
|
||||||
|
143,Meditite,,
|
||||||
|
144,Medicham,,
|
||||||
|
145,Zubat,,
|
||||||
|
146,Golbat,,
|
||||||
|
147,Crobat,,
|
||||||
|
148,Axew,,
|
||||||
|
149,Fraxure,,
|
||||||
|
150,Haxorus,,
|
||||||
|
151,Diancie,,
|
||||||
|
152,Hoopa,,
|
||||||
|
153,Volcanion,,
|
||||||
|
@@ -0,0 +1,154 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Drifloon,,
|
||||||
|
2,Drifblim,,
|
||||||
|
3,Mienfoo,,
|
||||||
|
4,Mienshao,,
|
||||||
|
5,Zangoose,,
|
||||||
|
6,Seviper,,
|
||||||
|
7,Spoink,,
|
||||||
|
8,Grumpig,,
|
||||||
|
9,Absol,,
|
||||||
|
10,Inkay,,
|
||||||
|
11,Malamar,,
|
||||||
|
12,Lunatone,,
|
||||||
|
13,Solrock,,
|
||||||
|
14,Bagon,,
|
||||||
|
15,Shelgon,,
|
||||||
|
16,Salamence,,
|
||||||
|
17,Wingull,,
|
||||||
|
18,Pelipper,,
|
||||||
|
19,Taillow,,
|
||||||
|
20,Swellow,,
|
||||||
|
21,Binacle,,
|
||||||
|
22,Barbaracle,,
|
||||||
|
23,Dwebble,,
|
||||||
|
24,Crustle,,
|
||||||
|
25,Tentacool,,
|
||||||
|
26,Tentacruel,,
|
||||||
|
27,Wailmer,,
|
||||||
|
28,Wailord,,
|
||||||
|
29,Luvdisc,,
|
||||||
|
30,Skrelp,,
|
||||||
|
31,Dragalge,,
|
||||||
|
32,Clauncher,,
|
||||||
|
33,Clawitzer,,
|
||||||
|
34,Staryu,,
|
||||||
|
35,Starmie,,
|
||||||
|
36,Shellder,,
|
||||||
|
37,Cloyster,,
|
||||||
|
38,Qwilfish,,
|
||||||
|
39,Horsea,,
|
||||||
|
40,Seadra,,
|
||||||
|
41,Kingdra,,
|
||||||
|
42,Relicanth,,
|
||||||
|
43,Sandile,,
|
||||||
|
44,Krokorok,,
|
||||||
|
45,Krookodile,,
|
||||||
|
46,Helioptile,,
|
||||||
|
47,Heliolisk,,
|
||||||
|
48,Hippopotas,,
|
||||||
|
49,Hippowdon,,
|
||||||
|
50,Rhyhorn,,
|
||||||
|
51,Rhydon,,
|
||||||
|
52,Rhyperior,,
|
||||||
|
53,Onix,,
|
||||||
|
54,Steelix,,
|
||||||
|
55,Woobat,,
|
||||||
|
56,Swoobat,,
|
||||||
|
57,Machop,,
|
||||||
|
58,Machoke,,
|
||||||
|
59,Machamp,,
|
||||||
|
60,Cubone,,
|
||||||
|
61,Marowak,,
|
||||||
|
62,Kangaskhan,,
|
||||||
|
63,Mawile,,
|
||||||
|
64,Tyrunt,,
|
||||||
|
65,Tyrantrum,,
|
||||||
|
66,Amaura,,
|
||||||
|
67,Aurorus,,
|
||||||
|
68,Aerodactyl,,
|
||||||
|
69,Ferroseed,,
|
||||||
|
70,Ferrothorn,,
|
||||||
|
71,Snubbull,,
|
||||||
|
72,Granbull,,
|
||||||
|
73,Electrike,,
|
||||||
|
74,Manectric,,
|
||||||
|
75,Houndour,,
|
||||||
|
76,Houndoom,,
|
||||||
|
77,Eevee,,
|
||||||
|
78,Vaporeon,,
|
||||||
|
79,Jolteon,,
|
||||||
|
80,Flareon,,
|
||||||
|
81,Espeon,,
|
||||||
|
82,Umbreon,,
|
||||||
|
83,Leafeon,,
|
||||||
|
84,Glaceon,,
|
||||||
|
85,Sylveon,,
|
||||||
|
86,Emolga,,
|
||||||
|
87,Yanma,,
|
||||||
|
88,Yanmega,,
|
||||||
|
89,Hawlucha,,
|
||||||
|
90,Sigilyph,,
|
||||||
|
91,Golett,,
|
||||||
|
92,Golurk,,
|
||||||
|
93,Nosepass,,
|
||||||
|
94,Probopass,,
|
||||||
|
95,Makuhita,,
|
||||||
|
96,Hariyama,,
|
||||||
|
97,Throh,,
|
||||||
|
98,Sawk,,
|
||||||
|
99,Starly,,
|
||||||
|
100,Staravia,,
|
||||||
|
101,Staraptor,,
|
||||||
|
102,Stunky,,
|
||||||
|
103,Skuntank,,
|
||||||
|
104,Nidoran♀,,
|
||||||
|
105,Nidorina,,
|
||||||
|
106,Nidoqueen,,
|
||||||
|
107,Nidoran♂,,
|
||||||
|
108,Nidorino,,
|
||||||
|
109,Nidoking,,
|
||||||
|
110,Dedenne,,
|
||||||
|
111,Chingling,,
|
||||||
|
112,Chimecho,,
|
||||||
|
113,Mime Jr.,,
|
||||||
|
114,Mr. Mime,,
|
||||||
|
115,Solosis,,
|
||||||
|
116,Duosion,,
|
||||||
|
117,Reuniclus,,
|
||||||
|
118,Wynaut,,
|
||||||
|
119,Wobbuffet,,
|
||||||
|
120,Roggenrola,,
|
||||||
|
121,Boldore,,
|
||||||
|
122,Gigalith,,
|
||||||
|
123,Sableye,,
|
||||||
|
124,Carbink,,
|
||||||
|
125,Tauros,,
|
||||||
|
126,Miltank,,
|
||||||
|
127,Mareep,,
|
||||||
|
128,Flaaffy,,
|
||||||
|
129,Ampharos,,
|
||||||
|
130,Pinsir,,
|
||||||
|
131,Heracross,,
|
||||||
|
132,Pachirisu,,
|
||||||
|
133,Slowpoke,,
|
||||||
|
134,Slowbro,,
|
||||||
|
135,Slowking,,
|
||||||
|
136,Exeggcute,,
|
||||||
|
137,Exeggutor,,
|
||||||
|
138,Chatot,,
|
||||||
|
139,Mantyke,,
|
||||||
|
140,Mantine,,
|
||||||
|
141,Clamperl,,
|
||||||
|
142,Huntail,,
|
||||||
|
143,Gorebyss,,
|
||||||
|
144,Remoraid,,
|
||||||
|
145,Octillery,,
|
||||||
|
146,Corsola,,
|
||||||
|
147,Chinchou,,
|
||||||
|
148,Lanturn,,
|
||||||
|
149,Alomomola,,
|
||||||
|
150,Lapras,,
|
||||||
|
151,Articuno,,
|
||||||
|
152,Zapdos,,
|
||||||
|
153,Moltres,,
|
||||||
|
@@ -0,0 +1,152 @@
|
|||||||
|
dexNumber,pokemon,form,notes
|
||||||
|
1,Diglett,,
|
||||||
|
2,Dugtrio,,
|
||||||
|
3,Trapinch,,
|
||||||
|
4,Vibrava,,
|
||||||
|
5,Flygon,,
|
||||||
|
6,Gible,,
|
||||||
|
7,Gabite,,
|
||||||
|
8,Garchomp,,
|
||||||
|
9,Geodude,,
|
||||||
|
10,Graveler,,
|
||||||
|
11,Golem,,
|
||||||
|
12,Slugma,,
|
||||||
|
13,Magcargo,,
|
||||||
|
14,Shuckle,,
|
||||||
|
15,Skorupi,,
|
||||||
|
16,Drapion,,
|
||||||
|
17,Wooper,,
|
||||||
|
18,Quagsire,,
|
||||||
|
19,Goomy,,
|
||||||
|
20,Sliggoo,,
|
||||||
|
21,Goodra,,
|
||||||
|
22,Karrablast,,
|
||||||
|
23,Escavalier,,
|
||||||
|
24,Shelmet,,
|
||||||
|
25,Accelgor,,
|
||||||
|
26,Bellsprout,,
|
||||||
|
27,Weepinbell,,
|
||||||
|
28,Victreebel,,
|
||||||
|
29,Carnivine,,
|
||||||
|
30,Gastly,,
|
||||||
|
31,Haunter,,
|
||||||
|
32,Gengar,,
|
||||||
|
33,Poliwag,,
|
||||||
|
34,Poliwhirl,,
|
||||||
|
35,Poliwrath,,
|
||||||
|
36,Politoed,,
|
||||||
|
37,Ekans,,
|
||||||
|
38,Arbok,,
|
||||||
|
39,Stunfisk,,
|
||||||
|
40,Barboach,,
|
||||||
|
41,Whiscash,,
|
||||||
|
42,Purrloin,,
|
||||||
|
43,Liepard,,
|
||||||
|
44,Poochyena,,
|
||||||
|
45,Mightyena,,
|
||||||
|
46,Patrat,,
|
||||||
|
47,Watchog,,
|
||||||
|
48,Pawniard,,
|
||||||
|
49,Bisharp,,
|
||||||
|
50,Klefki,,
|
||||||
|
51,Murkrow,,
|
||||||
|
52,Honchkrow,,
|
||||||
|
53,Foongus,,
|
||||||
|
54,Amoonguss,,
|
||||||
|
55,Lotad,,
|
||||||
|
56,Lombre,,
|
||||||
|
57,Ludicolo,,
|
||||||
|
58,Buizel,,
|
||||||
|
59,Floatzel,,
|
||||||
|
60,Basculin,,
|
||||||
|
61,Phantump,,
|
||||||
|
62,Trevenant,,
|
||||||
|
63,Pumpkaboo,,
|
||||||
|
64,Gourgeist,,
|
||||||
|
65,Litwick,,
|
||||||
|
66,Lampent,,
|
||||||
|
67,Chandelure,,
|
||||||
|
68,Rotom,,
|
||||||
|
69,Magnemite,,
|
||||||
|
70,Magneton,,
|
||||||
|
71,Magnezone,,
|
||||||
|
72,Voltorb,,
|
||||||
|
73,Electrode,,
|
||||||
|
74,Trubbish,,
|
||||||
|
75,Garbodor,,
|
||||||
|
76,Swinub,,
|
||||||
|
77,Piloswine,,
|
||||||
|
78,Mamoswine,,
|
||||||
|
79,Bergmite,,
|
||||||
|
80,Avalugg,,
|
||||||
|
81,Cubchoo,,
|
||||||
|
82,Beartic,,
|
||||||
|
83,Smoochum,,
|
||||||
|
84,Jynx,,
|
||||||
|
85,Vanillite,,
|
||||||
|
86,Vanillish,,
|
||||||
|
87,Vanilluxe,,
|
||||||
|
88,Snover,,
|
||||||
|
89,Abomasnow,,
|
||||||
|
90,Delibird,,
|
||||||
|
91,Sneasel,,
|
||||||
|
92,Weavile,,
|
||||||
|
93,Timburr,,
|
||||||
|
94,Gurdurr,,
|
||||||
|
95,Conkeldurr,,
|
||||||
|
96,Torkoal,,
|
||||||
|
97,Sandshrew,,
|
||||||
|
98,Sandslash,,
|
||||||
|
99,Aron,,
|
||||||
|
100,Lairon,,
|
||||||
|
101,Aggron,,
|
||||||
|
102,Larvitar,,
|
||||||
|
103,Pupitar,,
|
||||||
|
104,Tyranitar,,
|
||||||
|
105,Heatmor,,
|
||||||
|
106,Durant,,
|
||||||
|
107,Spinarak,,
|
||||||
|
108,Ariados,,
|
||||||
|
109,Spearow,,
|
||||||
|
110,Fearow,,
|
||||||
|
111,Cryogonal,,
|
||||||
|
112,Skarmory,,
|
||||||
|
113,Noibat,,
|
||||||
|
114,Noivern,,
|
||||||
|
115,Gligar,,
|
||||||
|
116,Gliscor,,
|
||||||
|
117,Hoothoot,,
|
||||||
|
118,Noctowl,,
|
||||||
|
119,Igglybuff,,
|
||||||
|
120,Jigglypuff,,
|
||||||
|
121,Wigglytuff,,
|
||||||
|
122,Shuppet,,
|
||||||
|
123,Banette,,
|
||||||
|
124,Zorua,,
|
||||||
|
125,Zoroark,,
|
||||||
|
126,Gothita,,
|
||||||
|
127,Gothorita,,
|
||||||
|
128,Gothitelle,,
|
||||||
|
129,Bonsly,,
|
||||||
|
130,Sudowoodo,,
|
||||||
|
131,Spinda,,
|
||||||
|
132,Teddiursa,,
|
||||||
|
133,Ursaring,,
|
||||||
|
134,Lickitung,,
|
||||||
|
135,Lickilicky,,
|
||||||
|
136,Scyther,,
|
||||||
|
137,Scizor,,
|
||||||
|
138,Ditto,,
|
||||||
|
139,Swablu,,
|
||||||
|
140,Altaria,,
|
||||||
|
141,Druddigon,,
|
||||||
|
142,Deino,,
|
||||||
|
143,Zweilous,,
|
||||||
|
144,Hydreigon,,
|
||||||
|
145,Dratini,,
|
||||||
|
146,Dragonair,,
|
||||||
|
147,Dragonite,,
|
||||||
|
148,Xerneas,,
|
||||||
|
149,Yveltal,,
|
||||||
|
150,Zygarde,,
|
||||||
|
151,Mewtwo,,
|
||||||
|
@@ -0,0 +1,15 @@
|
|||||||
|
region,releaseOrder
|
||||||
|
Kanto,1
|
||||||
|
Johto,2
|
||||||
|
Hoenn,3
|
||||||
|
Orre,4
|
||||||
|
Sinnoh,5
|
||||||
|
Ranch,6
|
||||||
|
Unova,7
|
||||||
|
Kalos,8
|
||||||
|
Alola,9
|
||||||
|
Go,10
|
||||||
|
Galar,11
|
||||||
|
Home,12
|
||||||
|
Hisui,13
|
||||||
|
Paldea,14
|
||||||
|
@@ -1,155 +0,0 @@
|
|||||||
# Pokémon Data (CSV Format)
|
|
||||||
|
|
||||||
This directory contains Pokémon data in CSV format for easy editing and maintenance.
|
|
||||||
|
|
||||||
## File Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
/data/pokemon/
|
|
||||||
├── gen1-kanto.csv # Gen 1 Pokémon (Kanto region, #1-151)
|
|
||||||
├── gen2-johto.csv # Gen 2 Pokémon (Johto region, #152-251) - Future
|
|
||||||
├── gen3-hoenn.csv # Gen 3 Pokémon (Hoenn region, #252-386) - Future
|
|
||||||
├── games.csv # All Pokémon games definitions
|
|
||||||
└── README.md # This file
|
|
||||||
```
|
|
||||||
|
|
||||||
## CSV Format
|
|
||||||
|
|
||||||
### gen{N}-{region}.csv
|
|
||||||
|
|
||||||
One CSV file per generation/region containing all Pokémon from that generation.
|
|
||||||
|
|
||||||
**Columns:**
|
|
||||||
- `pokedexNumber` - National Pokédex number (e.g., 1, 25, 151)
|
|
||||||
- `name` - Pokémon name (e.g., Bulbasaur, Pikachu, Mew)
|
|
||||||
- `form` - Form name (empty for base form, "Female" for gender differences, "Alolan" for regional forms, etc.)
|
|
||||||
- `games` - Pipe-separated list of games where this Pokémon can be caught (e.g., "Red|Blue|Yellow")
|
|
||||||
- `regionalNumber` - Regional Pokédex number for base forms (empty for gender/alternative forms)
|
|
||||||
|
|
||||||
**Example (gen1-kanto.csv):**
|
|
||||||
```csv
|
|
||||||
pokedexNumber,name,form,games,regionalNumber
|
|
||||||
1,Bulbasaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,1
|
|
||||||
3,Venusaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,3
|
|
||||||
3,Venusaur,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
25,Pikachu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,25
|
|
||||||
151,Mew,,Red|Blue|Yellow,151
|
|
||||||
```
|
|
||||||
|
|
||||||
### games.csv
|
|
||||||
|
|
||||||
Defines all Pokémon games.
|
|
||||||
|
|
||||||
**Columns:**
|
|
||||||
- `id` - Unique game identifier (lowercase, hyphenated, e.g., "red", "lg-pikachu")
|
|
||||||
- `displayName` - Display name for the game (e.g., "Red", "LG: Pikachu")
|
|
||||||
- `region` - Region/generation the game belongs to (e.g., "Kanto", "Johto")
|
|
||||||
- `generation` - Generation number (1-9)
|
|
||||||
|
|
||||||
**Example:**
|
|
||||||
```csv
|
|
||||||
id,displayName,region,generation
|
|
||||||
red,Red,Kanto,1
|
|
||||||
blue,Blue,Kanto,1
|
|
||||||
lg-pikachu,LG: Pikachu,Kanto,7
|
|
||||||
```
|
|
||||||
|
|
||||||
## Editing with Excel/Google Sheets
|
|
||||||
|
|
||||||
CSV files are designed to be edited in spreadsheet applications:
|
|
||||||
|
|
||||||
1. Open the CSV file in Excel or Google Sheets
|
|
||||||
2. Use formulas, sorting, and filtering for bulk operations
|
|
||||||
3. Save as CSV when done
|
|
||||||
|
|
||||||
**Example workflows:**
|
|
||||||
|
|
||||||
### Adding a new game to existing Pokémon
|
|
||||||
Find & Replace in the `games` column:
|
|
||||||
- Find: `Red|Blue`
|
|
||||||
- Replace: `Red|Blue|NewGame`
|
|
||||||
|
|
||||||
### Adding a new Pokémon
|
|
||||||
Add a new row with all required fields:
|
|
||||||
```csv
|
|
||||||
152,Chikorita,,Gold|Silver|Crystal,1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Adding a regional form
|
|
||||||
Add a new row with the form name:
|
|
||||||
```csv
|
|
||||||
19,Rattata,Alolan,Sun|Moon|US|UM,
|
|
||||||
```
|
|
||||||
|
|
||||||
## Generating SQL Migrations
|
|
||||||
|
|
||||||
After editing CSV files, generate SQL migrations using npm scripts:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Generate migration for Kanto
|
|
||||||
npm run seed:kanto
|
|
||||||
|
|
||||||
# Generate migration for Johto (when ready)
|
|
||||||
npm run seed:johto
|
|
||||||
|
|
||||||
# Custom region
|
|
||||||
npm run seed:generate <RegionName>
|
|
||||||
```
|
|
||||||
|
|
||||||
Generated migrations will be created in `/supabase/migrations/` with timestamp prefixes.
|
|
||||||
|
|
||||||
## Testing Changes
|
|
||||||
|
|
||||||
After generating a migration:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Reset local database to test
|
|
||||||
npm run supabase:reset
|
|
||||||
|
|
||||||
# Verify the changes loaded correctly
|
|
||||||
```
|
|
||||||
|
|
||||||
## Important Notes
|
|
||||||
|
|
||||||
1. **Regional Numbers**: Only base forms (no `form` value) should have `regionalNumber` values. Forms like "Female" or "Alolan" should leave this column empty.
|
|
||||||
|
|
||||||
2. **Game Names**: Must exactly match the `displayName` in `games.csv`. Use pipe `|` as separator, no spaces around pipes.
|
|
||||||
|
|
||||||
3. **National Dex Numbers**: Must be accurate. Gender forms and regional variants share the same `pokedexNumber` as their base form.
|
|
||||||
|
|
||||||
4. **CSV Encoding**: Save files with UTF-8 encoding to support special characters.
|
|
||||||
|
|
||||||
5. **Quotes**: Only use quotes around values containing commas. Excel/Google Sheets handles this automatically.
|
|
||||||
|
|
||||||
## Common Operations
|
|
||||||
|
|
||||||
### Add a new generation (e.g., Gen 2 - Johto)
|
|
||||||
|
|
||||||
1. Create `gen2-johto.csv` with the format above
|
|
||||||
2. Add Johto games to `games.csv`
|
|
||||||
3. Run `npm run seed:johto`
|
|
||||||
4. Test with `npm run supabase:reset`
|
|
||||||
|
|
||||||
### Add a new game to existing generation
|
|
||||||
|
|
||||||
1. Open `games.csv`, add new game row
|
|
||||||
2. Open the relevant `gen{N}-{region}.csv` file
|
|
||||||
3. Use Find & Replace to add the new game to the `games` column
|
|
||||||
4. Regenerate the migration: `npm run seed:{region}`
|
|
||||||
5. Test with `npm run supabase:reset`
|
|
||||||
|
|
||||||
### Add DLC/expansion Pokémon
|
|
||||||
|
|
||||||
1. Add new Pokémon rows to the appropriate generation CSV
|
|
||||||
2. Update the `games` column with the DLC games
|
|
||||||
3. Regenerate the migration
|
|
||||||
4. Test
|
|
||||||
|
|
||||||
## Database Schema
|
|
||||||
|
|
||||||
Generated migrations insert data into two tables:
|
|
||||||
|
|
||||||
- **`pokedex_entries`**: Pokémon species data (name, form, games, etc.)
|
|
||||||
- **`regional_dex_numbers`**: Regional Pokédex numbers (separate table for scalability)
|
|
||||||
|
|
||||||
This design allows adding new regions without database schema changes.
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
id,displayName,region,generation,releaseYear
|
|
||||||
red,Red,Kanto,1,1996
|
|
||||||
blue,Blue,Kanto,1,1996
|
|
||||||
yellow,Yellow,Kanto,1,1998
|
|
||||||
lg--pikachu,LG: Pikachu,Kanto,7,2018
|
|
||||||
lg--eevee,LG: Eevee,Kanto,7,2018
|
|
||||||
gold,Gold,Johto,2,1999
|
|
||||||
silver,Silver,Johto,2,1999
|
|
||||||
crystal,Crystal,Johto,2,2000
|
|
||||||
ruby,Ruby,Hoenn,3,2002
|
|
||||||
sapphire,Sapphire,Hoenn,3,2002
|
|
||||||
emerald,Emerald,Hoenn,3,2004
|
|
||||||
omega-ruby,Omega Ruby,Hoenn,6,2014
|
|
||||||
alpha-sapphire,Alpha Sapphire,Hoenn,6,2014
|
|
||||||
heartgold,HeartGold,Johto,4,2009
|
|
||||||
soulsilver,SoulSilver,Johto,4,2009
|
|
||||||
legends-arceus,Legends: Arceus,Hisui,8,2022
|
|
||||||
|
@@ -1,175 +0,0 @@
|
|||||||
pokedexNumber,name,form,originGames,regionalDexGames,regionalNumber
|
|
||||||
1,Bulbasaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,1
|
|
||||||
2,Ivysaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,2
|
|
||||||
3,Venusaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,3
|
|
||||||
3,Venusaur,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
4,Charmander,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,4
|
|
||||||
5,Charmeleon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,5
|
|
||||||
6,Charizard,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,6
|
|
||||||
7,Squirtle,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,7
|
|
||||||
8,Wartortle,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,8
|
|
||||||
9,Blastoise,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,9
|
|
||||||
10,Caterpie,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,10
|
|
||||||
11,Metapod,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,11
|
|
||||||
12,Butterfree,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,12
|
|
||||||
12,Butterfree,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
13,Weedle,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,13
|
|
||||||
14,Kakuna,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,14
|
|
||||||
15,Beedrill,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,15
|
|
||||||
16,Pidgey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,16
|
|
||||||
17,Pidgeotto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,17
|
|
||||||
18,Pidgeot,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,18
|
|
||||||
19,Rattata,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,19
|
|
||||||
19,Rattata,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
20,Raticate,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,20
|
|
||||||
20,Raticate,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
21,Spearow,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,21
|
|
||||||
22,Fearow,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,22
|
|
||||||
23,Ekans,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,23
|
|
||||||
24,Arbok,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,24
|
|
||||||
25,Pikachu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,25
|
|
||||||
25,Pikachu,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
26,Raichu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,26
|
|
||||||
26,Raichu,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
27,Sandshrew,,Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,27
|
|
||||||
28,Sandslash,,Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,28
|
|
||||||
29,Nidoran♀,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,29
|
|
||||||
30,Nidorina,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,30
|
|
||||||
31,Nidoqueen,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,31
|
|
||||||
32,Nidoran♂,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,32
|
|
||||||
33,Nidorino,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,33
|
|
||||||
34,Nidoking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,34
|
|
||||||
35,Clefairy,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,35
|
|
||||||
36,Clefable,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,36
|
|
||||||
37,Vulpix,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,37
|
|
||||||
38,Ninetales,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,38
|
|
||||||
39,Jigglypuff,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,39
|
|
||||||
40,Wigglytuff,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,40
|
|
||||||
41,Zubat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,41
|
|
||||||
41,Zubat,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
42,Golbat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,42
|
|
||||||
42,Golbat,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
43,Oddish,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,43
|
|
||||||
44,Gloom,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,44
|
|
||||||
44,Gloom,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
45,Vileplume,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,45
|
|
||||||
45,Vileplume,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
46,Paras,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,46
|
|
||||||
47,Parasect,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,47
|
|
||||||
48,Venonat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,48
|
|
||||||
49,Venomoth,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,49
|
|
||||||
50,Diglett,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,50
|
|
||||||
51,Dugtrio,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,51
|
|
||||||
52,Meowth,,Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,52
|
|
||||||
53,Persian,,Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,53
|
|
||||||
54,Psyduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,54
|
|
||||||
55,Golduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,55
|
|
||||||
56,Mankey,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,56
|
|
||||||
57,Primeape,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,57
|
|
||||||
58,Growlithe,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,58
|
|
||||||
59,Arcanine,,Red|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,59
|
|
||||||
60,Poliwag,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,60
|
|
||||||
61,Poliwhirl,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,61
|
|
||||||
62,Poliwrath,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,62
|
|
||||||
63,Abra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,63
|
|
||||||
64,Kadabra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,64
|
|
||||||
64,Kadabra,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
65,Alakazam,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,65
|
|
||||||
65,Alakazam,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
66,Machop,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,66
|
|
||||||
67,Machoke,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,67
|
|
||||||
68,Machamp,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,68
|
|
||||||
69,Bellsprout,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,69
|
|
||||||
70,Weepinbell,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,70
|
|
||||||
71,Victreebel,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,71
|
|
||||||
72,Tentacool,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,72
|
|
||||||
73,Tentacruel,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,73
|
|
||||||
74,Geodude,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,74
|
|
||||||
75,Graveler,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,75
|
|
||||||
76,Golem,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,76
|
|
||||||
77,Ponyta,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,77
|
|
||||||
78,Rapidash,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,78
|
|
||||||
79,Slowpoke,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,79
|
|
||||||
80,Slowbro,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,80
|
|
||||||
81,Magnemite,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,81
|
|
||||||
82,Magneton,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,82
|
|
||||||
83,Farfetch’d,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,83
|
|
||||||
84,Doduo,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,84
|
|
||||||
84,Doduo,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
85,Dodrio,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,85
|
|
||||||
85,Dodrio,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
86,Seel,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,86
|
|
||||||
87,Dewgong,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,87
|
|
||||||
88,Grimer,,Red|Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,88
|
|
||||||
89,Muk,,Red|Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,89
|
|
||||||
90,Shellder,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,90
|
|
||||||
91,Cloyster,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,91
|
|
||||||
92,Gastly,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,92
|
|
||||||
93,Haunter,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,93
|
|
||||||
94,Gengar,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,94
|
|
||||||
95,Onix,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,95
|
|
||||||
96,Drowzee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,96
|
|
||||||
97,Hypno,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,97
|
|
||||||
97,Hypno,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
98,Krabby,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,98
|
|
||||||
99,Kingler,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,99
|
|
||||||
100,Voltorb,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,100
|
|
||||||
101,Electrode,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,101
|
|
||||||
102,Exeggcute,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,102
|
|
||||||
103,Exeggutor,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,103
|
|
||||||
104,Cubone,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,104
|
|
||||||
105,Marowak,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,105
|
|
||||||
106,Hitmonlee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,106
|
|
||||||
107,Hitmonchan,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,107
|
|
||||||
108,Lickitung,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,108
|
|
||||||
109,Koffing,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,109
|
|
||||||
110,Weezing,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,110
|
|
||||||
111,Rhyhorn,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,111
|
|
||||||
111,Rhyhorn,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
112,Rhydon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,112
|
|
||||||
112,Rhydon,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
113,Chansey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,113
|
|
||||||
114,Tangela,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,114
|
|
||||||
115,Kangaskhan,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,115
|
|
||||||
116,Horsea,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,116
|
|
||||||
117,Seadra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,117
|
|
||||||
118,Goldeen,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,118
|
|
||||||
118,Goldeen,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
119,Seaking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,119
|
|
||||||
119,Seaking,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
120,Staryu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,120
|
|
||||||
121,Starmie,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,121
|
|
||||||
122,Mr. Mime,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,122
|
|
||||||
123,Scyther,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,123
|
|
||||||
123,Scyther,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
124,Jynx,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,124
|
|
||||||
125,Electabuzz,,Red|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,125
|
|
||||||
126,Magmar,,Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,126
|
|
||||||
127,Pinsir,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,127
|
|
||||||
128,Tauros,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,128
|
|
||||||
129,Magikarp,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,129
|
|
||||||
129,Magikarp,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
130,Gyarados,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,130
|
|
||||||
130,Gyarados,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
131,Lapras,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,131
|
|
||||||
132,Ditto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,132
|
|
||||||
133,Eevee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,133
|
|
||||||
133,Eevee,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
|
||||||
134,Vaporeon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,134
|
|
||||||
135,Jolteon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,135
|
|
||||||
136,Flareon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,136
|
|
||||||
137,Porygon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,137
|
|
||||||
138,Omanyte,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,138
|
|
||||||
139,Omastar,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,139
|
|
||||||
140,Kabuto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,140
|
|
||||||
141,Kabutops,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,141
|
|
||||||
142,Aerodactyl,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,142
|
|
||||||
143,Snorlax,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,143
|
|
||||||
144,Articuno,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,144
|
|
||||||
145,Zapdos,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,145
|
|
||||||
146,Moltres,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,146
|
|
||||||
147,Dratini,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,147
|
|
||||||
148,Dragonair,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,148
|
|
||||||
149,Dragonite,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,149
|
|
||||||
150,Mewtwo,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,150
|
|
||||||
151,Mew,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,151
|
|
||||||
|
@@ -1,149 +0,0 @@
|
|||||||
pokedexNumber,name,form,originGames,regionalDexGames,regionalNumber
|
|
||||||
152,Chikorita,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,1
|
|
||||||
153,Bayleef,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,2
|
|
||||||
154,Meganium,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,3
|
|
||||||
154,Meganium,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
155,Cyndaquil,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,4
|
|
||||||
156,Quilava,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,5
|
|
||||||
157,Typhlosion,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,6
|
|
||||||
158,Totodile,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,7
|
|
||||||
159,Croconaw,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,8
|
|
||||||
160,Feraligatr,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,9
|
|
||||||
161,Sentret,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,10
|
|
||||||
162,Furret,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,11
|
|
||||||
163,Hoothoot,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,12
|
|
||||||
164,Noctowl,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,13
|
|
||||||
165,Ledyba,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,14
|
|
||||||
165,Ledyba,Female,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
166,Ledian,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,15
|
|
||||||
166,Ledian,Female,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
167,Spinarak,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,16
|
|
||||||
168,Ariados,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,17
|
|
||||||
169,Crobat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,18
|
|
||||||
170,Chinchou,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,19
|
|
||||||
171,Lanturn,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,20
|
|
||||||
172,Pichu,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,21
|
|
||||||
173,Cleffa,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,22
|
|
||||||
174,Igglybuff,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,23
|
|
||||||
175,Togepi,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,24
|
|
||||||
176,Togetic,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,25
|
|
||||||
177,Natu,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,26
|
|
||||||
178,Xatu,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,27
|
|
||||||
178,Xatu,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
179,Mareep,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,28
|
|
||||||
180,Flaaffy,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,29
|
|
||||||
181,Ampharos,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,30
|
|
||||||
182,Bellossom,,Red|Yellow|LG: Pikachu,Gold|Silver|Crystal|HeartGold|SoulSilver,31
|
|
||||||
183,Marill,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,32
|
|
||||||
184,Azumarill,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,33
|
|
||||||
185,Sudowoodo,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,34
|
|
||||||
185,Sudowoodo,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
186,Politoed,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,35
|
|
||||||
186,Politoed,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
187,Hoppip,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,36
|
|
||||||
188,Skiploom,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,37
|
|
||||||
189,Jumpluff,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,38
|
|
||||||
190,Aipom,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,39
|
|
||||||
190,Aipom,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
191,Sunkern,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,40
|
|
||||||
192,Sunflora,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,41
|
|
||||||
193,Yanma,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,42
|
|
||||||
194,Wooper,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,43
|
|
||||||
194,Wooper,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
195,Quagsire,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,44
|
|
||||||
195,Quagsire,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
196,Espeon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,45
|
|
||||||
197,Umbreon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,46
|
|
||||||
198,Murkrow,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,47
|
|
||||||
198,Murkrow,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
199,Slowking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,48
|
|
||||||
200,Misdreavus,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,49
|
|
||||||
201,Unown,A,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,50
|
|
||||||
201,Unown,B,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,C,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,D,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,E,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,F,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,G,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,H,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,I,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,J,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,K,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,L,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,M,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,N,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,O,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,P,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,Q,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,R,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,S,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,T,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,U,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,V,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,W,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,X,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,Y,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,Z,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,!,HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
201,Unown,?,HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
202,Wobbuffet,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,51
|
|
||||||
202,Wobbuffet,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
203,Girafarig,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,52
|
|
||||||
203,Girafarig,Female,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
204,Pineco,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,53
|
|
||||||
205,Forretress,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,54
|
|
||||||
206,Dunsparce,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,55
|
|
||||||
207,Gligar,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,56
|
|
||||||
207,Gligar,Female,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
208,Steelix,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,57
|
|
||||||
208,Steelix,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
209,Snubbull,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,58
|
|
||||||
210,Granbull,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,59
|
|
||||||
211,Qwilfish,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,60
|
|
||||||
212,Scizor,,Red|Yellow|LG: Pikachu,Gold|Silver|Crystal|HeartGold|SoulSilver,61
|
|
||||||
212,Scizor,Female,Red|Yellow|LG: Pikachu,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
213,Shuckle,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,62
|
|
||||||
214,Heracross,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,63
|
|
||||||
214,Heracross,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
215,Sneasel,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,64
|
|
||||||
215,Sneasel,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
216,Teddiursa,,Gold|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,65
|
|
||||||
217,Ursaring,,Gold|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,66
|
|
||||||
217,Ursaring,Female,Gold|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
218,Slugma,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,67
|
|
||||||
219,Magcargo,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,68
|
|
||||||
220,Swinub,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,69
|
|
||||||
221,Piloswine,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,70
|
|
||||||
221,Piloswine,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
222,Corsola,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,71
|
|
||||||
223,Remoraid,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,72
|
|
||||||
224,Octillery,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,73
|
|
||||||
224,Octillery,Female,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
225,Delibird,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,74
|
|
||||||
226,Mantine,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,75
|
|
||||||
227,Skarmory,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,76
|
|
||||||
228,Houndour,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,77
|
|
||||||
229,Houndoom,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,78
|
|
||||||
229,Houndoom,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
230,Kingdra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,79
|
|
||||||
231,Phanpy,,Silver|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,80
|
|
||||||
232,Donphan,,Silver|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,81
|
|
||||||
232,Donphan,Female,Silver|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
|
||||||
234,Stantler,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,83
|
|
||||||
235,Smeargle,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,84
|
|
||||||
236,Tyrogue,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,85
|
|
||||||
237,Hitmontop,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,86
|
|
||||||
238,Smoochum,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,87
|
|
||||||
239,Elekid,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,88
|
|
||||||
240,Magby,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,89
|
|
||||||
241,Miltank,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,90
|
|
||||||
242,Blissey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,91
|
|
||||||
243,Raikou,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,92
|
|
||||||
244,Entei,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,93
|
|
||||||
245,Suicune,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,94
|
|
||||||
246,Larvitar,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,95
|
|
||||||
247,Pupitar,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,96
|
|
||||||
248,Tyranitar,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,97
|
|
||||||
249,Lugia,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,98
|
|
||||||
250,Ho-Oh,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,99
|
|
||||||
251,Celebi,,Crystal,Crystal|HeartGold|SoulSilver,100
|
|
||||||
|
@@ -1,148 +0,0 @@
|
|||||||
pokedexNumber,name,form,originGames,regionalDexGames,regionalNumber
|
|
||||||
252,Treecko,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,001
|
|
||||||
253,Grovyle,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,002
|
|
||||||
254,Sceptile,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,003
|
|
||||||
255,Torchic,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,004
|
|
||||||
256,Combusken,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,005
|
|
||||||
257,Blaziken,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,006
|
|
||||||
258,Mudkip,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,007
|
|
||||||
259,Marshtomp,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,008
|
|
||||||
260,Swampert,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,009
|
|
||||||
261,Poochyena,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,010
|
|
||||||
262,Mightyena,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,011
|
|
||||||
263,Zigzagoon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,012
|
|
||||||
264,Linoone,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,013
|
|
||||||
265,Wurmple,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,014
|
|
||||||
266,Silcoon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,015
|
|
||||||
267,Beautifly,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,016
|
|
||||||
267,Beautifly,Female,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,016
|
|
||||||
268,Cascoon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,017
|
|
||||||
269,Dustox,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,018
|
|
||||||
269,Dustox,Female,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,018
|
|
||||||
270,Lotad,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,019
|
|
||||||
271,Lombre,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,020
|
|
||||||
272,Ludicolo,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,021
|
|
||||||
273,Seedot,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,022
|
|
||||||
274,Nuzleaf,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,023
|
|
||||||
275,Shiftry,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,024
|
|
||||||
276,Taillow,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,025
|
|
||||||
277,Swellow,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,026
|
|
||||||
278,Wingull,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,027
|
|
||||||
279,Pelipper,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,028
|
|
||||||
280,Ralts,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,029
|
|
||||||
281,Kirlia,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,030
|
|
||||||
282,Gardevoir,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,031
|
|
||||||
283,Surskit,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,032
|
|
||||||
284,Masquerain,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,033
|
|
||||||
285,Shroomish,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,034
|
|
||||||
286,Breloom,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,035
|
|
||||||
287,Slakoth,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,036
|
|
||||||
288,Vigoroth,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,037
|
|
||||||
289,Slaking,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,038
|
|
||||||
290,Nincada,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,039
|
|
||||||
291,Ninjask,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,040
|
|
||||||
292,Shedinja,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,041
|
|
||||||
293,Whismur,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,042
|
|
||||||
294,Loudred,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,043
|
|
||||||
295,Exploud,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,044
|
|
||||||
296,Makuhita,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,045
|
|
||||||
297,Hariyama,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,046
|
|
||||||
298,Azurill,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,047
|
|
||||||
299,Nosepass,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,048
|
|
||||||
300,Skitty,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,049
|
|
||||||
301,Delcatty,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,050
|
|
||||||
302,Sableye,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,051
|
|
||||||
302,Sableye,Female,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,051
|
|
||||||
303,Mawile,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,052
|
|
||||||
303,Mawile,Female,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,052
|
|
||||||
304,Aron,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,053
|
|
||||||
305,Lairon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,054
|
|
||||||
306,Aggron,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,055
|
|
||||||
307,Meditite,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,056
|
|
||||||
308,Medicham,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,057
|
|
||||||
308,Medicham,Female,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,057
|
|
||||||
309,Electrike,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,058
|
|
||||||
310,Manectric,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,059
|
|
||||||
311,Plusle,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,060
|
|
||||||
312,Minun,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,061
|
|
||||||
313,Volbeat,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,062
|
|
||||||
314,Illumise,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,063
|
|
||||||
315,Roselia,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,064
|
|
||||||
316,Gulpin,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,065
|
|
||||||
317,Swalot,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,066
|
|
||||||
318,Carvanha,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,067
|
|
||||||
319,Sharpedo,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,068
|
|
||||||
320,Wailmer,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,069
|
|
||||||
321,Wailord,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,070
|
|
||||||
322,Numel,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,071
|
|
||||||
323,Camerupt,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,072
|
|
||||||
324,Torkoal,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,073
|
|
||||||
325,Spoink,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,074
|
|
||||||
326,Grumpig,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,075
|
|
||||||
327,Spinda,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,076
|
|
||||||
328,Trapinch,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,077
|
|
||||||
329,Vibrava,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,078
|
|
||||||
330,Flygon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,079
|
|
||||||
331,Cacnea,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,080
|
|
||||||
332,Cacturne,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,081
|
|
||||||
333,Swablu,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,082
|
|
||||||
334,Altaria,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,083
|
|
||||||
335,Zangoose,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,084
|
|
||||||
336,Seviper,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,085
|
|
||||||
337,Lunatone,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,086
|
|
||||||
338,Solrock,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,087
|
|
||||||
339,Barboach,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,088
|
|
||||||
340,Whiscash,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,089
|
|
||||||
341,Corphish,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,090
|
|
||||||
342,Crawdaunt,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,091
|
|
||||||
343,Baltoy,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,092
|
|
||||||
344,Claydol,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,093
|
|
||||||
345,Lileep,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,094
|
|
||||||
346,Cradily,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,095
|
|
||||||
347,Anorith,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,096
|
|
||||||
348,Armaldo,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,097
|
|
||||||
349,Feebas,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,098
|
|
||||||
350,Milotic,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,099
|
|
||||||
351,Castform,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,100
|
|
||||||
351,Castform,Sunny,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,100
|
|
||||||
351,Castform,Rainy,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,100
|
|
||||||
351,Castform,Snowy,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,100
|
|
||||||
352,Kecleon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,101
|
|
||||||
353,Shuppet,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,102
|
|
||||||
354,Banette,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,103
|
|
||||||
355,Duskull,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,104
|
|
||||||
356,Dusclops,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,105
|
|
||||||
357,Tropius,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,106
|
|
||||||
358,Chimecho,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,107
|
|
||||||
359,Absol,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,108
|
|
||||||
359,Absol,Female,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,108
|
|
||||||
360,Wynaut,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,109
|
|
||||||
361,Snorunt,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,110
|
|
||||||
362,Glalie,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,111
|
|
||||||
363,Spheal,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,112
|
|
||||||
364,Sealeo,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,113
|
|
||||||
365,Walrein,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,114
|
|
||||||
366,Clamperl,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,115
|
|
||||||
367,Huntail,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,116
|
|
||||||
368,Gorebyss,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,117
|
|
||||||
369,Relicanth,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,118
|
|
||||||
370,Luvdisc,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,119
|
|
||||||
371,Bagon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,120
|
|
||||||
372,Shelgon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,121
|
|
||||||
373,Salamence,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,122
|
|
||||||
374,Beldum,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,123
|
|
||||||
375,Metang,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,124
|
|
||||||
376,Metagross,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,125
|
|
||||||
377,Regirock,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,126
|
|
||||||
378,Regice,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,127
|
|
||||||
379,Registeel,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,128
|
|
||||||
380,Latias,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,129
|
|
||||||
381,Latios,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,130
|
|
||||||
382,Kyogre,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,131
|
|
||||||
383,Groudon,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,132
|
|
||||||
384,Rayquaza,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,133
|
|
||||||
385,Jirachi,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,134
|
|
||||||
386,Deoxys,,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,135
|
|
||||||
386,Deoxys,Attack,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,135
|
|
||||||
386,Deoxys,Defense,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,135
|
|
||||||
386,Deoxys,Speed,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,Ruby|Sapphire|Emerald|Omega Ruby|Alpha Sapphire,135
|
|
||||||
|
@@ -1,99 +1,75 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onMount } from 'svelte';
|
|
||||||
import pokeApiPokemon from '$lib/helpers/pokeapi-pokemon.json';
|
|
||||||
import { PUBLIC_USE_LOCAL_POKEMON_SPRITE_FOLDER } from '$env/static/public';
|
import { PUBLIC_USE_LOCAL_POKEMON_SPRITE_FOLDER } from '$env/static/public';
|
||||||
|
|
||||||
export let pokemonName: string;
|
export let pokemonName: string;
|
||||||
export let pokedexNumber: string | number;
|
export let pokedexNumber: string | number;
|
||||||
export let form: string | undefined;
|
export let form: string | undefined;
|
||||||
|
export let spriteKey: string | undefined;
|
||||||
export let shiny: boolean | undefined = false;
|
export let shiny: boolean | undefined = false;
|
||||||
|
|
||||||
let imagePath = null as string | null;
|
let imagePath = null as string | null;
|
||||||
let blah = '';
|
|
||||||
|
|
||||||
function setImagePath() {
|
function isFemaleForm(value?: string) {
|
||||||
|
return /^female\b/i.test((value ?? '').trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildFallbackKey() {
|
||||||
|
const strippedPokedexNumber = pokedexNumber.toString().replace(/^0+/, '') || '0';
|
||||||
|
if (!form) return strippedPokedexNumber;
|
||||||
|
|
||||||
|
let formValue = form.trim();
|
||||||
|
formValue = formValue.replace(/^female[-\s]*/i, '');
|
||||||
|
formValue = formValue.replace(/\s*\(.*?\)/g, '').replace(/\s*\[.*?\]/g, '').trim();
|
||||||
|
if (!formValue || formValue.toLowerCase() === 'male') return strippedPokedexNumber;
|
||||||
|
|
||||||
|
formValue = formValue
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/%/g, '')
|
||||||
|
.replace(/\balolan\b/g, 'alola')
|
||||||
|
.replace(/\bgalarian\b/g, 'galar')
|
||||||
|
.replace(/\bhisuian\b/g, 'hisui')
|
||||||
|
.replace(/\bpaldean\b/g, 'paldea')
|
||||||
|
.replace(/\bform(e)?$/, '')
|
||||||
|
.replace(/\bability$/, '')
|
||||||
|
.replace(/[^a-z0-9]+/g, '-')
|
||||||
|
.replace(/(^-|-$)/g, '')
|
||||||
|
.replace(/2/g, 'two')
|
||||||
|
.replace(/3/g, 'three')
|
||||||
|
.replace(/4/g, 'four');
|
||||||
|
|
||||||
|
return formValue ? `${strippedPokedexNumber}-${formValue}` : strippedPokedexNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
function computeImagePath() {
|
||||||
let rootFolder =
|
let rootFolder =
|
||||||
PUBLIC_USE_LOCAL_POKEMON_SPRITE_FOLDER === 'true'
|
PUBLIC_USE_LOCAL_POKEMON_SPRITE_FOLDER === 'true'
|
||||||
? '/sprites/home'
|
? '/sprites/home'
|
||||||
: 'https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/home';
|
: 'https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/home';
|
||||||
|
|
||||||
if (form === 'Female') {
|
|
||||||
rootFolder += '/female';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (shiny) {
|
if (shiny) {
|
||||||
rootFolder += '/shiny';
|
rootFolder += '/shiny';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove leading zeros
|
if (isFemaleForm(form)) {
|
||||||
const strippedPokedexNumber = pokedexNumber.toString().replace(/^0+/, '');
|
rootFolder += '/female';
|
||||||
|
|
||||||
// Sanitise the pokemon name by making it all lowercase and replacing any spaces with hyphens and removing other characters
|
|
||||||
let sanitisedPokemonName = pokemonName.toLowerCase().replace(/[^a-z]/g, '');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sprite Resolution Strategy:
|
|
||||||
* 1. For forms with PokeAPI entries (regional forms): Use PokeAPI ID (e.g., 10107.png)
|
|
||||||
* 2. For forms without PokeAPI entries (Unown, Burmy, etc.): Use {pokedexNumber}-{form} (e.g., 201-a.png)
|
|
||||||
* 3. For base forms: Use PokeAPI ID matching species_id
|
|
||||||
*/
|
|
||||||
let pokeApiId;
|
|
||||||
if (form && form.length > 0 && form !== 'Female') {
|
|
||||||
// Sanitise the form by making it all lowercase and replacing spaces with hyphens
|
|
||||||
let sanitisedForm = form
|
|
||||||
.toLowerCase()
|
|
||||||
.replaceAll(' ', '-')
|
|
||||||
.replaceAll('!', 'exclamation')
|
|
||||||
.replaceAll('?', 'question')
|
|
||||||
.replaceAll('2', 'two')
|
|
||||||
.replaceAll('3', 'three')
|
|
||||||
.replaceAll('4', 'four');
|
|
||||||
|
|
||||||
switch (sanitisedForm) {
|
|
||||||
case 'alolan':
|
|
||||||
sanitisedForm = 'alola';
|
|
||||||
break;
|
|
||||||
case 'galarian':
|
|
||||||
sanitisedForm = 'galar';
|
|
||||||
break;
|
|
||||||
case 'hisuian':
|
|
||||||
sanitisedForm = 'hisui';
|
|
||||||
break;
|
|
||||||
// case 'rainbow-ribbon':
|
|
||||||
// sanitisedForm = 'rainbow-swirl-ribbon-sweet';
|
|
||||||
// break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to find by PokeAPI identifier (e.g., "meowth-alola" -> 10107)
|
|
||||||
const pokeApiEntry = pokeApiPokemon.find(
|
|
||||||
(pokemon) => pokemon.identifier === sanitisedPokemonName + '-' + sanitisedForm
|
|
||||||
);
|
|
||||||
|
|
||||||
if (pokeApiEntry) {
|
|
||||||
// Pattern 1: Use PokeAPI ID (e.g., 10107.png for Meowth-Alola)
|
|
||||||
pokeApiId = pokeApiEntry.id;
|
|
||||||
} else {
|
|
||||||
// Pattern 2: Use {pokedexNumber}-{form} (e.g., 201-a.png for Unown-A)
|
|
||||||
pokeApiId = `${strippedPokedexNumber}-${sanitisedForm}`;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
pokeApiId = pokeApiPokemon.find(
|
|
||||||
(pokemon) => pokemon.species_id.toString() === strippedPokedexNumber
|
|
||||||
)?.id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
imagePath = `${rootFolder}/${pokeApiId}.png`;
|
const resolvedSpriteKey = spriteKey?.trim() || buildFallbackKey();
|
||||||
blah = `${pokeApiId}.png`;
|
if (!spriteKey?.trim()) {
|
||||||
// blah = `${strippedPokedexNumber}${form?.length && form !== 'Female' ? '-' + form : ''}.png`;
|
console.warn('Missing sprite key for pokemon entry', {
|
||||||
|
pokemonName,
|
||||||
|
pokedexNumber,
|
||||||
|
form
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${rootFolder}/${resolvedSpriteKey}.png`;
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(setImagePath);
|
$: imagePath = computeImagePath();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if imagePath}
|
{#if imagePath}
|
||||||
<!-- {blah} -->
|
|
||||||
<img src={imagePath} alt="sprite" />
|
<img src={imagePath} alt="sprite" />
|
||||||
{:else}
|
{:else}
|
||||||
<span class="loading loading-spinner loading-xs"></span>
|
<span class="loading loading-spinner loading-xs"></span>
|
||||||
|
|||||||
@@ -71,11 +71,12 @@
|
|||||||
|
|
||||||
<!-- Email Input -->
|
<!-- Email Input -->
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<label class="label">
|
<label class="label" for="signin-email">
|
||||||
<span class="label-text font-medium">Email</span>
|
<span class="label-text font-medium">Email</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<input
|
<input
|
||||||
|
id="signin-email"
|
||||||
type="email"
|
type="email"
|
||||||
placeholder="your@email.com"
|
placeholder="your@email.com"
|
||||||
class="input input-bordered w-full pl-10"
|
class="input input-bordered w-full pl-10"
|
||||||
@@ -101,11 +102,12 @@
|
|||||||
|
|
||||||
<!-- Password Input -->
|
<!-- Password Input -->
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<label class="label">
|
<label class="label" for="signin-password">
|
||||||
<span class="label-text font-medium">Password</span>
|
<span class="label-text font-medium">Password</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<input
|
<input
|
||||||
|
id="signin-password"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="••••••••"
|
placeholder="••••••••"
|
||||||
class="input input-bordered w-full pl-10"
|
class="input input-bordered w-full pl-10"
|
||||||
|
|||||||
@@ -38,10 +38,11 @@
|
|||||||
|
|
||||||
<form class="card-body">
|
<form class="card-body">
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<label class="label">
|
<label class="label" for="signup-email">
|
||||||
<span class="label-text">Email</span>
|
<span class="label-text">Email</span>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
|
id="signup-email"
|
||||||
type="email"
|
type="email"
|
||||||
placeholder="email"
|
placeholder="email"
|
||||||
class="input input-bordered"
|
class="input input-bordered"
|
||||||
@@ -50,10 +51,11 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<label class="label">
|
<label class="label" for="signup-password">
|
||||||
<span class="label-text">Password</span>
|
<span class="label-text">Password</span>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
|
id="signup-password"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="password"
|
placeholder="password"
|
||||||
class="input input-bordered"
|
class="input input-bordered"
|
||||||
|
|||||||
@@ -7,14 +7,16 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="relative inline-block">
|
<div class="relative inline-block">
|
||||||
<div
|
<button
|
||||||
class="tooltip-trigger cursor-pointer"
|
type="button"
|
||||||
|
class="tooltip-trigger cursor-pointer bg-transparent border-0 p-0 appearance-none"
|
||||||
|
aria-expanded={show}
|
||||||
on:click={handleClick}
|
on:click={handleClick}
|
||||||
on:mouseenter={() => (show = true)}
|
on:mouseenter={() => (show = true)}
|
||||||
on:mouseleave={() => (show = false)}
|
on:mouseleave={() => (show = false)}
|
||||||
>
|
>
|
||||||
<slot name="hover-target" />
|
<slot name="hover-target" />
|
||||||
</div>
|
</button>
|
||||||
|
|
||||||
{#if show}
|
{#if show}
|
||||||
<div class="tooltip-content absolute z-10 mt-2 w-52">
|
<div class="tooltip-content absolute z-10 mt-2 w-52">
|
||||||
|
|||||||
@@ -36,6 +36,12 @@
|
|||||||
<span class="font-semibold">Game:</span>
|
<span class="font-semibold">Game:</span>
|
||||||
{pokedex.gameScope}
|
{pokedex.gameScope}
|
||||||
</div>
|
</div>
|
||||||
|
{#if pokedex.dexScopes?.length}
|
||||||
|
<div class="text-sm text-base-content/70">
|
||||||
|
<span class="font-semibold">Dexes:</span>
|
||||||
|
{pokedex.dexScopes.length}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
{:else}
|
{:else}
|
||||||
<div class="text-sm text-base-content/70">
|
<div class="text-sm text-base-content/70">
|
||||||
<span class="font-semibold">Scope:</span> All Games
|
<span class="font-semibold">Scope:</span> All Games
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { CatchRecord } from '$lib/models/CatchRecord';
|
import type { CatchRecord } from '$lib/models/CatchRecord';
|
||||||
import type { PokedexEntry } from '$lib/models/PokedexEntry';
|
import type { CatchInformationItem, PokedexEntry } from '$lib/models/PokedexEntry';
|
||||||
import PokemonSprite from '../PokemonSprite.svelte';
|
import PokemonSprite from '../PokemonSprite.svelte';
|
||||||
import { createEventDispatcher } from 'svelte';
|
import { createEventDispatcher } from 'svelte';
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
catchRecord = {
|
catchRecord = {
|
||||||
_id: '', // Empty string, not temp ID - will be created by server
|
_id: '', // Empty string, not temp ID - will be created by server
|
||||||
userId: userId || '',
|
userId: userId || '',
|
||||||
pokedexEntryId: pokedexEntry._id,
|
pokemonId: pokedexEntry._id,
|
||||||
pokedexId: pokedexId,
|
pokedexId: pokedexId,
|
||||||
haveToEvolve: false,
|
haveToEvolve: false,
|
||||||
caught: false,
|
caught: false,
|
||||||
@@ -31,6 +31,10 @@
|
|||||||
|
|
||||||
type UpdateCatchSource = 'toggle' | 'notes' | 'notes-blur';
|
type UpdateCatchSource = 'toggle' | 'notes' | 'notes-blur';
|
||||||
|
|
||||||
|
const isCatchInformationItem = (
|
||||||
|
value: string | CatchInformationItem
|
||||||
|
): value is CatchInformationItem => typeof value !== 'string';
|
||||||
|
|
||||||
function updateCatchRecord(source: UpdateCatchSource) {
|
function updateCatchRecord(source: UpdateCatchSource) {
|
||||||
dispatch('updateCatch', { pokedexEntry, catchRecord, source });
|
dispatch('updateCatch', { pokedexEntry, catchRecord, source });
|
||||||
}
|
}
|
||||||
@@ -64,6 +68,7 @@
|
|||||||
pokemonName={pokedexEntry.pokemon}
|
pokemonName={pokedexEntry.pokemon}
|
||||||
pokedexNumber={pokedexEntry.pokedexNumber}
|
pokedexNumber={pokedexEntry.pokedexNumber}
|
||||||
form={pokedexEntry.form}
|
form={pokedexEntry.form}
|
||||||
|
spriteKey={pokedexEntry.spriteKey}
|
||||||
shiny={showShiny}
|
shiny={showShiny}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -193,11 +198,15 @@
|
|||||||
<ul class="list-disc list-inside">
|
<ul class="list-disc list-inside">
|
||||||
{#each pokedexEntry.catchInformation as info}
|
{#each pokedexEntry.catchInformation as info}
|
||||||
<li>
|
<li>
|
||||||
<ul>
|
{#if isCatchInformationItem(info)}
|
||||||
<li><strong>Game:</strong> {info.game}</li>
|
<ul>
|
||||||
<li><strong>Location:</strong> {info.location}</li>
|
<li><strong>Game:</strong> {info.game}</li>
|
||||||
<li><strong>Notes:</strong> {info.notes}</li>
|
<li><strong>Location:</strong> {info.location}</li>
|
||||||
</ul>
|
<li><strong>Notes:</strong> {info.notes}</li>
|
||||||
|
</ul>
|
||||||
|
{:else}
|
||||||
|
{info}
|
||||||
|
{/if}
|
||||||
</li>
|
</li>
|
||||||
{/each}
|
{/each}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -9,36 +9,83 @@
|
|||||||
isShinyDex: false,
|
isShinyDex: false,
|
||||||
isOriginDex: false,
|
isOriginDex: false,
|
||||||
isFormDex: false,
|
isFormDex: false,
|
||||||
gameScope: null
|
gameScope: null,
|
||||||
|
dexScopes: []
|
||||||
};
|
};
|
||||||
export let mode: 'create' | 'edit' = 'create';
|
export let mode: 'create' | 'edit' = 'create';
|
||||||
export let onSubmit: () => void;
|
export let onSubmit: () => void;
|
||||||
export let onCancel: () => void;
|
export let onCancel: () => void;
|
||||||
|
|
||||||
let games: string[] = [];
|
type GameDex = {
|
||||||
let loadingGames = true;
|
id: string;
|
||||||
|
displayName: string;
|
||||||
|
sortOrder: number;
|
||||||
|
isDlc: boolean;
|
||||||
|
parentDexId: string | null;
|
||||||
|
};
|
||||||
|
type GameSummary = {
|
||||||
|
displayName: string;
|
||||||
|
releaseYear: number;
|
||||||
|
};
|
||||||
|
|
||||||
// Fetch available games from the database
|
let gameDexes: Record<string, GameDex[]> = {};
|
||||||
|
let gameOrder: string[] = [];
|
||||||
|
let gameList: GameSummary[] = [];
|
||||||
|
let availableDexes: GameDex[] = [];
|
||||||
|
let loadingDexes = true;
|
||||||
|
let lastGameScope: string | null = null;
|
||||||
|
let dexScopesInitialized = false;
|
||||||
|
let hasSeenGameScope = false;
|
||||||
|
|
||||||
|
// Fetch available game dexes from the database
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/api/games');
|
const response = await fetch('/api/game-dexes');
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
games = data.games || [];
|
gameDexes = data.gameDexes || {};
|
||||||
|
gameOrder = data.gameOrder || Object.keys(gameDexes);
|
||||||
|
gameList = data.games || [];
|
||||||
} else {
|
} else {
|
||||||
console.error('Failed to fetch games');
|
console.error('Failed to fetch game dexes');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching games:', error);
|
console.error('Error fetching game dexes:', error);
|
||||||
} finally {
|
} finally {
|
||||||
loadingGames = false;
|
loadingDexes = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Validation
|
// Validation
|
||||||
$: hasAtLeastOneType =
|
$: hasAtLeastOneType =
|
||||||
pokedex.isLivingDex || pokedex.isShinyDex || pokedex.isOriginDex || pokedex.isFormDex;
|
pokedex.isLivingDex || pokedex.isShinyDex || pokedex.isOriginDex || pokedex.isFormDex;
|
||||||
$: canSubmit = pokedex.name && pokedex.name.trim() !== '' && hasAtLeastOneType;
|
$: hasDexScope =
|
||||||
|
!pokedex.gameScope || (pokedex.dexScopes && pokedex.dexScopes.length > 0);
|
||||||
|
$: canSubmit =
|
||||||
|
pokedex.name && pokedex.name.trim() !== '' && hasAtLeastOneType && hasDexScope;
|
||||||
|
|
||||||
|
$: if (pokedex.gameScope !== lastGameScope) {
|
||||||
|
const shouldResetDexes = mode === 'create' || hasSeenGameScope;
|
||||||
|
lastGameScope = pokedex.gameScope || null;
|
||||||
|
dexScopesInitialized = false;
|
||||||
|
if (shouldResetDexes) {
|
||||||
|
pokedex.dexScopes = [];
|
||||||
|
}
|
||||||
|
if (!pokedex.gameScope) {
|
||||||
|
availableDexes = [];
|
||||||
|
}
|
||||||
|
hasSeenGameScope = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$: if (!loadingDexes && pokedex.gameScope) {
|
||||||
|
availableDexes = gameDexes[pokedex.gameScope] || [];
|
||||||
|
if (!dexScopesInitialized) {
|
||||||
|
if (!pokedex.dexScopes || pokedex.dexScopes.length === 0) {
|
||||||
|
pokedex.dexScopes = availableDexes.map((dex) => dex.id);
|
||||||
|
}
|
||||||
|
dexScopesInitialized = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function handleSubmit() {
|
function handleSubmit() {
|
||||||
if (canSubmit) {
|
if (canSubmit) {
|
||||||
@@ -74,30 +121,32 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-control w-full">
|
<div class="form-control w-full">
|
||||||
<label class="label">
|
<fieldset class="w-full">
|
||||||
<span class="label-text">Type(s)</span>
|
<legend class="label">
|
||||||
<span class="label-text-alt text-error"
|
<span class="label-text">Type(s)</span>
|
||||||
>{!hasAtLeastOneType ? 'At least one type required' : ''}</span
|
<span class="label-text-alt text-error"
|
||||||
>
|
>{!hasAtLeastOneType ? 'At least one type required' : ''}</span
|
||||||
</label>
|
>
|
||||||
<div class="flex flex-col gap-2">
|
</legend>
|
||||||
<label class="label cursor-pointer justify-start gap-3">
|
<div class="flex flex-col gap-2">
|
||||||
<input type="checkbox" class="checkbox" bind:checked={pokedex.isLivingDex} />
|
<label class="label cursor-pointer justify-start gap-3">
|
||||||
<span class="label-text">Living Dex (one of each Pokémon)</span>
|
<input type="checkbox" class="checkbox" bind:checked={pokedex.isLivingDex} />
|
||||||
</label>
|
<span class="label-text">Living Dex (one of each Pokémon)</span>
|
||||||
<label class="label cursor-pointer justify-start gap-3">
|
</label>
|
||||||
<input type="checkbox" class="checkbox" bind:checked={pokedex.isShinyDex} />
|
<label class="label cursor-pointer justify-start gap-3">
|
||||||
<span class="label-text">Shiny Dex (shiny variants only)</span>
|
<input type="checkbox" class="checkbox" bind:checked={pokedex.isShinyDex} />
|
||||||
</label>
|
<span class="label-text">Shiny Dex (shiny variants only)</span>
|
||||||
<label class="label cursor-pointer justify-start gap-3">
|
</label>
|
||||||
<input type="checkbox" class="checkbox" bind:checked={pokedex.isOriginDex} />
|
<label class="label cursor-pointer justify-start gap-3">
|
||||||
<span class="label-text">Origin Dex (caught in native regions)</span>
|
<input type="checkbox" class="checkbox" bind:checked={pokedex.isOriginDex} />
|
||||||
</label>
|
<span class="label-text">Origin Dex (caught in native regions)</span>
|
||||||
<label class="label cursor-pointer justify-start gap-3">
|
</label>
|
||||||
<input type="checkbox" class="checkbox" bind:checked={pokedex.isFormDex} />
|
<label class="label cursor-pointer justify-start gap-3">
|
||||||
<span class="label-text">Form Dex (all forms included)</span>
|
<input type="checkbox" class="checkbox" bind:checked={pokedex.isFormDex} />
|
||||||
</label>
|
<span class="label-text">Form Dex (all forms included)</span>
|
||||||
</div>
|
</label>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-control w-full">
|
<div class="form-control w-full">
|
||||||
@@ -108,19 +157,53 @@
|
|||||||
id="game-scope"
|
id="game-scope"
|
||||||
class="select select-bordered"
|
class="select select-bordered"
|
||||||
bind:value={pokedex.gameScope}
|
bind:value={pokedex.gameScope}
|
||||||
disabled={loadingGames}
|
disabled={loadingDexes}
|
||||||
>
|
>
|
||||||
<option value={null}>All Games</option>
|
<option value={null}>All Games</option>
|
||||||
{#if loadingGames}
|
{#if loadingDexes}
|
||||||
<option disabled>Loading games...</option>
|
<option disabled>Loading games...</option>
|
||||||
{:else}
|
{:else}
|
||||||
{#each games as game}
|
{#if gameList.length > 0}
|
||||||
<option value={game}>{game}</option>
|
{#each gameList as game}
|
||||||
{/each}
|
<option value={game.displayName}>{game.displayName}</option>
|
||||||
|
{/each}
|
||||||
|
{:else}
|
||||||
|
{#each gameOrder.length > 0 ? gameOrder : Object.keys(gameDexes) as game}
|
||||||
|
<option value={game}>{game}</option>
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{#if pokedex.gameScope}
|
||||||
|
<div class="form-control w-full">
|
||||||
|
<fieldset class="w-full">
|
||||||
|
<legend class="label">
|
||||||
|
<span class="label-text">Dex Scope</span>
|
||||||
|
<span class="label-text-alt text-error">{!hasDexScope ? 'Select at least one dex' : ''}</span>
|
||||||
|
</legend>
|
||||||
|
{#if availableDexes.length === 0}
|
||||||
|
<p class="text-sm text-error">No dexes found for this game.</p>
|
||||||
|
{:else}
|
||||||
|
<div class="flex flex-col gap-2">
|
||||||
|
{#each availableDexes as dex}
|
||||||
|
<label class="label cursor-pointer justify-start gap-3">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="checkbox"
|
||||||
|
value={dex.id}
|
||||||
|
bind:group={pokedex.dexScopes}
|
||||||
|
/>
|
||||||
|
<span class="label-text">{dex.displayName}</span>
|
||||||
|
</label>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<div class="modal-action">
|
<div class="modal-action">
|
||||||
<button class="btn btn-ghost" type="button" on:click={onCancel}>Cancel</button>
|
<button class="btn btn-ghost" type="button" on:click={onCancel}>Cancel</button>
|
||||||
<button class="btn btn-primary" type="button" on:click={handleSubmit} disabled={!canSubmit}>
|
<button class="btn btn-primary" type="button" on:click={handleSubmit} disabled={!canSubmit}>
|
||||||
|
|||||||
@@ -31,11 +31,12 @@
|
|||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<button
|
||||||
|
type="button"
|
||||||
class="modal-backdrop bg-black/50"
|
class="modal-backdrop bg-black/50"
|
||||||
|
aria-label="Close modal"
|
||||||
on:click={handleBackdropClick}
|
on:click={handleBackdropClick}
|
||||||
on:keydown={() => {}}
|
></button>
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
@@ -46,6 +47,8 @@
|
|||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-box-custom {
|
.modal-box-custom {
|
||||||
|
|||||||
@@ -353,7 +353,7 @@
|
|||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
<div class="flex flex-wrap items-center justify-between gap-3 mb-4 relative z-20">
|
<div class="flex flex-wrap items-center justify-between gap-3 mb-4 relative z-20">
|
||||||
<h2 class="text-xl font-bold">Box {boxNumber}</h2>
|
<h2 class="text-xl font-bold">Box {boxNumber}</h2>
|
||||||
<div class="relative" on:click|stopPropagation>
|
<div class="relative">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="btn btn-sm btn-outline relative z-[210]"
|
class="btn btn-sm btn-outline relative z-[210]"
|
||||||
@@ -376,12 +376,11 @@
|
|||||||
<ul
|
<ul
|
||||||
id={bulkMenuId}
|
id={bulkMenuId}
|
||||||
class="menu bg-base-100 rounded-box absolute right-0 mt-2 z-[220] w-56 p-2 shadow border border-base-300"
|
class="menu bg-base-100 rounded-box absolute right-0 mt-2 z-[220] w-56 p-2 shadow border border-base-300"
|
||||||
on:click|stopPropagation
|
|
||||||
>
|
>
|
||||||
<li>
|
<li>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click|stopPropagation={() => {
|
||||||
markBoxAsNotCaught(boxNumber);
|
markBoxAsNotCaught(boxNumber);
|
||||||
openBulkMenuForBox = null;
|
openBulkMenuForBox = null;
|
||||||
}}
|
}}
|
||||||
@@ -392,7 +391,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click|stopPropagation={() => {
|
||||||
markBoxAsCaught(boxNumber);
|
markBoxAsCaught(boxNumber);
|
||||||
openBulkMenuForBox = null;
|
openBulkMenuForBox = null;
|
||||||
}}
|
}}
|
||||||
@@ -403,7 +402,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click|stopPropagation={() => {
|
||||||
markBoxAsNeedsToEvolve(boxNumber);
|
markBoxAsNeedsToEvolve(boxNumber);
|
||||||
openBulkMenuForBox = null;
|
openBulkMenuForBox = null;
|
||||||
}}
|
}}
|
||||||
@@ -414,7 +413,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click|stopPropagation={() => {
|
||||||
markBoxAsInHome(boxNumber);
|
markBoxAsInHome(boxNumber);
|
||||||
openBulkMenuForBox = null;
|
openBulkMenuForBox = null;
|
||||||
}}
|
}}
|
||||||
@@ -425,7 +424,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click|stopPropagation={() => {
|
||||||
markBoxAsNotInHome(boxNumber);
|
markBoxAsNotInHome(boxNumber);
|
||||||
openBulkMenuForBox = null;
|
openBulkMenuForBox = null;
|
||||||
}}
|
}}
|
||||||
@@ -531,6 +530,7 @@
|
|||||||
pokemonName={pokedexEntry.pokemon}
|
pokemonName={pokedexEntry.pokemon}
|
||||||
pokedexNumber={pokedexEntry.pokedexNumber}
|
pokedexNumber={pokedexEntry.pokedexNumber}
|
||||||
form={pokedexEntry.form}
|
form={pokedexEntry.form}
|
||||||
|
spriteKey={pokedexEntry.spriteKey}
|
||||||
shiny={showShiny}
|
shiny={showShiny}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
export interface CatchRecord {
|
export interface CatchRecord {
|
||||||
_id: string; // Maps to Supabase 'id' field for frontend compatibility
|
_id: string; // Maps to Supabase 'id' field for frontend compatibility
|
||||||
userId: string;
|
userId: string;
|
||||||
pokedexEntryId: string; // String representation of the foreign key
|
pokemonId: string;
|
||||||
pokedexId: string; // NEW: Foreign key to pokedexes table
|
pokedexId: string;
|
||||||
haveToEvolve: boolean;
|
haveToEvolve: boolean;
|
||||||
caught: boolean;
|
caught: boolean;
|
||||||
inHome: boolean;
|
inHome: boolean;
|
||||||
@@ -15,7 +15,8 @@ export interface CatchRecord {
|
|||||||
export interface CatchRecordDB {
|
export interface CatchRecordDB {
|
||||||
id: string;
|
id: string;
|
||||||
userId: string;
|
userId: string;
|
||||||
pokedexEntryId: number; // Numeric foreign key in database
|
/** Numeric foreign key in database (references `pokemon.id`) */
|
||||||
|
pokemonId: number;
|
||||||
pokedexId: string; // NEW: Foreign key to pokedexes table
|
pokedexId: string; // NEW: Foreign key to pokedexes table
|
||||||
haveToEvolve: boolean;
|
haveToEvolve: boolean;
|
||||||
caught: boolean;
|
caught: boolean;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export interface Pokedex {
|
|||||||
isOriginDex: boolean;
|
isOriginDex: boolean;
|
||||||
isFormDex: boolean;
|
isFormDex: boolean;
|
||||||
gameScope: string | null;
|
gameScope: string | null;
|
||||||
|
dexScopes: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PokedexDB {
|
export interface PokedexDB {
|
||||||
|
|||||||
@@ -1,15 +1,22 @@
|
|||||||
// Supabase-based PokedexEntry interface
|
// Supabase-based PokedexEntry interface
|
||||||
|
export type CatchInformationItem = {
|
||||||
|
game: string;
|
||||||
|
location: string;
|
||||||
|
notes: string;
|
||||||
|
};
|
||||||
|
|
||||||
export interface PokedexEntry {
|
export interface PokedexEntry {
|
||||||
_id: string; // Maps to Supabase 'id' field for frontend compatibility
|
_id: string; // Maps to Supabase 'id' field for frontend compatibility
|
||||||
pokedexNumber: number;
|
pokedexNumber: number;
|
||||||
pokemon: string;
|
pokemon: string;
|
||||||
form: string;
|
form: string;
|
||||||
|
spriteKey: string;
|
||||||
canGigantamax: boolean;
|
canGigantamax: boolean;
|
||||||
regionToCatchIn: string;
|
regionToCatchIn: string;
|
||||||
gamesToCatchIn: string[];
|
gamesToCatchIn: string[];
|
||||||
regionToEvolveIn: string;
|
regionToEvolveIn: string;
|
||||||
evolutionInformation: string;
|
evolutionInformation: string;
|
||||||
catchInformation: string[];
|
catchInformation: Array<string | CatchInformationItem>;
|
||||||
// Note: Regional dex numbers stored in separate regional_dex_numbers table
|
// Note: Regional dex numbers stored in separate regional_dex_numbers table
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,6 +26,7 @@ export interface PokedexEntryDB {
|
|||||||
pokedexNumber: number;
|
pokedexNumber: number;
|
||||||
pokemon: string;
|
pokemon: string;
|
||||||
form: string | null;
|
form: string | null;
|
||||||
|
spriteKey: string | null;
|
||||||
canGigantamax: boolean;
|
canGigantamax: boolean;
|
||||||
regionToCatchIn: string | null;
|
regionToCatchIn: string | null;
|
||||||
gamesToCatchIn: string[] | null;
|
gamesToCatchIn: string[] | null;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class CatchRecordRepository {
|
|||||||
return {
|
return {
|
||||||
_id: record.id,
|
_id: record.id,
|
||||||
userId: record.userId,
|
userId: record.userId,
|
||||||
pokedexEntryId: record.pokedexEntryId.toString(),
|
pokemonId: record.pokemonId.toString(),
|
||||||
pokedexId: record.pokedexId,
|
pokedexId: record.pokedexId,
|
||||||
haveToEvolve: record.haveToEvolve,
|
haveToEvolve: record.haveToEvolve,
|
||||||
caught: record.caught,
|
caught: record.caught,
|
||||||
@@ -28,12 +28,12 @@ class CatchRecordRepository {
|
|||||||
// Transform frontend data to database format (minimal transformation)
|
// Transform frontend data to database format (minimal transformation)
|
||||||
private transformToDatabase(data: Partial<CatchRecord>): Partial<CatchRecordDB> {
|
private transformToDatabase(data: Partial<CatchRecord>): Partial<CatchRecordDB> {
|
||||||
const dbData: Partial<CatchRecordDB> = {};
|
const dbData: Partial<CatchRecordDB> = {};
|
||||||
if (data.pokedexEntryId !== undefined && data.pokedexEntryId !== null) {
|
if (data.pokemonId !== undefined && data.pokemonId !== null) {
|
||||||
const numericId = Number(data.pokedexEntryId);
|
const numericId = Number(data.pokemonId);
|
||||||
if (isNaN(numericId)) {
|
if (isNaN(numericId)) {
|
||||||
throw new Error(`Invalid pokedexEntryId: ${data.pokedexEntryId}`);
|
throw new Error(`Invalid pokemonId: ${data.pokemonId}`);
|
||||||
}
|
}
|
||||||
dbData.pokedexEntryId = numericId;
|
dbData.pokemonId = numericId;
|
||||||
}
|
}
|
||||||
if (data.pokedexId !== undefined) dbData.pokedexId = data.pokedexId;
|
if (data.pokedexId !== undefined) dbData.pokedexId = data.pokedexId;
|
||||||
if (data.haveToEvolve !== undefined) dbData.haveToEvolve = data.haveToEvolve;
|
if (data.haveToEvolve !== undefined) dbData.haveToEvolve = data.haveToEvolve;
|
||||||
@@ -53,14 +53,14 @@ class CatchRecordRepository {
|
|||||||
* catch the error and fall back to per-record upserts.
|
* catch the error and fall back to per-record upserts.
|
||||||
*/
|
*/
|
||||||
async bulkUpsert(
|
async bulkUpsert(
|
||||||
records: Array<PartialExcept<CatchRecord, 'pokedexEntryId'>>
|
records: Array<PartialExcept<CatchRecord, 'pokemonId'>>
|
||||||
): Promise<CatchRecord[]> {
|
): Promise<CatchRecord[]> {
|
||||||
if (records.length === 0) return [];
|
if (records.length === 0) return [];
|
||||||
|
|
||||||
const dbRows: Partial<CatchRecordDB>[] = records.map((r, index) => {
|
const dbRows: Partial<CatchRecordDB>[] = records.map((r, index) => {
|
||||||
if (r.pokedexEntryId === undefined || r.pokedexEntryId === null || r.pokedexEntryId === '') {
|
if (r.pokemonId === undefined || r.pokemonId === null || r.pokemonId === '') {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`CatchRecordRepository.bulkUpsert: record at index ${index} is missing required field "pokedexEntryId"`
|
`CatchRecordRepository.bulkUpsert: record at index ${index} is missing required field "pokemonId"`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,9 +81,9 @@ class CatchRecordRepository {
|
|||||||
mapped.userId = this.userId;
|
mapped.userId = this.userId;
|
||||||
mapped.pokedexId = this.pokedexId;
|
mapped.pokedexId = this.pokedexId;
|
||||||
|
|
||||||
if (mapped.pokedexEntryId === undefined || mapped.pokedexEntryId === null) {
|
if (mapped.pokemonId === undefined || mapped.pokemonId === null) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`CatchRecordRepository.bulkUpsert: record at index ${index} produced no pokedexEntryId after transform`
|
`CatchRecordRepository.bulkUpsert: record at index ${index} produced no pokemonId after transform`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ class CatchRecordRepository {
|
|||||||
const { data: result, error } = await this.supabase
|
const { data: result, error } = await this.supabase
|
||||||
.from('catch_records')
|
.from('catch_records')
|
||||||
.upsert(dbRows, {
|
.upsert(dbRows, {
|
||||||
onConflict: '"userId","pokedexId","pokedexEntryId"'
|
onConflict: '"userId","pokedexId","pokemonId"'
|
||||||
})
|
})
|
||||||
.select();
|
.select();
|
||||||
|
|
||||||
@@ -198,13 +198,9 @@ class CatchRecordRepository {
|
|||||||
async upsert(data: Partial<CatchRecord>): Promise<CatchRecord | null> {
|
async upsert(data: Partial<CatchRecord>): Promise<CatchRecord | null> {
|
||||||
if (data._id) {
|
if (data._id) {
|
||||||
return this.update(data._id, data);
|
return this.update(data._id, data);
|
||||||
} else if (data.pokedexEntryId) {
|
} else if (data.pokemonId) {
|
||||||
// Try to find existing record for this user, pokemon, and pokedex
|
// Try to find existing record for this user, pokemon, and pokedex
|
||||||
const existing = await this.findByUserAndPokemon(
|
const existing = await this.findByUserAndPokemon(this.userId, data.pokemonId, this.pokedexId);
|
||||||
this.userId,
|
|
||||||
data.pokedexEntryId,
|
|
||||||
this.pokedexId
|
|
||||||
);
|
|
||||||
if (existing) {
|
if (existing) {
|
||||||
return this.update(existing._id, data);
|
return this.update(existing._id, data);
|
||||||
} else {
|
} else {
|
||||||
@@ -216,10 +212,10 @@ class CatchRecordRepository {
|
|||||||
|
|
||||||
async findByUserAndPokemon(
|
async findByUserAndPokemon(
|
||||||
userId: string,
|
userId: string,
|
||||||
pokedexEntryId: string,
|
pokemonId: string,
|
||||||
pokedexId: string
|
pokedexId: string
|
||||||
): Promise<CatchRecord | null> {
|
): Promise<CatchRecord | null> {
|
||||||
const numericId = Number(pokedexEntryId);
|
const numericId = Number(pokemonId);
|
||||||
if (isNaN(numericId)) {
|
if (isNaN(numericId)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -227,7 +223,7 @@ class CatchRecordRepository {
|
|||||||
.from('catch_records')
|
.from('catch_records')
|
||||||
.select('*')
|
.select('*')
|
||||||
.eq('userId', userId)
|
.eq('userId', userId)
|
||||||
.eq('pokedexEntryId', numericId)
|
.eq('pokemonId', numericId)
|
||||||
.eq('pokedexId', pokedexId)
|
.eq('pokedexId', pokedexId)
|
||||||
.single();
|
.single();
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import { type CombinedData } from '$lib/models/CombinedData';
|
|||||||
import type { SupabaseClient } from '@supabase/supabase-js';
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
||||||
|
|
||||||
class CombinedDataRepository {
|
class CombinedDataRepository {
|
||||||
|
private static readonly MAX_ROWS_PER_REQUEST = 1000;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private supabase: SupabaseClient,
|
private supabase: SupabaseClient,
|
||||||
private userId: string | null,
|
private userId: string | null,
|
||||||
@@ -17,6 +19,7 @@ class CombinedDataRepository {
|
|||||||
pokedexNumber: entry.pokedexNumber,
|
pokedexNumber: entry.pokedexNumber,
|
||||||
pokemon: entry.pokemon,
|
pokemon: entry.pokemon,
|
||||||
form: entry.form || '',
|
form: entry.form || '',
|
||||||
|
spriteKey: entry.spriteKey || '',
|
||||||
canGigantamax: entry.canGigantamax,
|
canGigantamax: entry.canGigantamax,
|
||||||
regionToCatchIn: entry.regionToCatchIn || '',
|
regionToCatchIn: entry.regionToCatchIn || '',
|
||||||
gamesToCatchIn: entry.gamesToCatchIn || [],
|
gamesToCatchIn: entry.gamesToCatchIn || [],
|
||||||
@@ -31,7 +34,7 @@ class CombinedDataRepository {
|
|||||||
return {
|
return {
|
||||||
_id: record.id,
|
_id: record.id,
|
||||||
userId: record.userId,
|
userId: record.userId,
|
||||||
pokedexEntryId: record.pokedexEntryId.toString(),
|
pokemonId: record.pokemonId.toString(),
|
||||||
pokedexId: record.pokedexId,
|
pokedexId: record.pokedexId,
|
||||||
haveToEvolve: record.haveToEvolve,
|
haveToEvolve: record.haveToEvolve,
|
||||||
caught: record.caught,
|
caught: record.caught,
|
||||||
@@ -41,18 +44,12 @@ class CombinedDataRepository {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async findAllCombinedData(
|
private buildEntriesQuery(enableForms: boolean, region: string, game: string) {
|
||||||
userId: string,
|
|
||||||
enableForms: boolean = true,
|
|
||||||
region: string = '',
|
|
||||||
game: string = ''
|
|
||||||
): Promise<CombinedData[]> {
|
|
||||||
let query = this.supabase.from('pokedex_entries').select('*');
|
let query = this.supabase.from('pokedex_entries').select('*');
|
||||||
|
|
||||||
// Apply filters
|
|
||||||
if (!enableForms) {
|
if (!enableForms) {
|
||||||
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
// Filter to base forms: NULL or 'male' (gendered species), plus Unown "A".
|
||||||
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
query = query.or('form.is.null,form.eq.male,and(pokemon.eq.Unown,form.eq.A)');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (region) {
|
if (region) {
|
||||||
@@ -63,17 +60,212 @@ class CombinedDataRepository {
|
|||||||
query = query.contains('gamesToCatchIn', [game]);
|
query = query.contains('gamesToCatchIn', [game]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always order by national dex number
|
// Stable ordering from the database: national dex, Unown order, base/female/temporal, then form label.
|
||||||
// Note: Regional dex ordering would require joining with regional_dex_numbers table
|
query = query
|
||||||
query = query.order('pokedexNumber', { ascending: true });
|
.order('pokedexNumber', { ascending: true })
|
||||||
|
.order('unownSortOrder', { ascending: true })
|
||||||
|
.order('formSortBucket', { ascending: true })
|
||||||
|
.order('formSortRegionOrder', { ascending: true })
|
||||||
|
.order('formSortRegionalSub', { ascending: true })
|
||||||
|
.order('formSortLabel', { ascending: true });
|
||||||
|
|
||||||
const { data: entries, error: entriesError } = await query;
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
if (entriesError) {
|
private buildDexEntriesQuery(dexScopes: string[], enableForms: boolean, region: string) {
|
||||||
console.error('Error finding combined data:', entriesError);
|
let query = this.supabase.from('game_pokedex_entry_details').select('*').in('dexId', dexScopes);
|
||||||
return [];
|
|
||||||
|
if (!enableForms) {
|
||||||
|
// Filter to base forms: NULL or 'male' (gendered species), plus Unown "A".
|
||||||
|
query = query.or('form.is.null,form.eq.male,and(pokemon.eq.Unown,form.eq.A)');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (region) {
|
||||||
|
query = query.eq('regionToCatchIn', region);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stable ordering: dex order, dex number, Unown order, base/female/temporal, then form label.
|
||||||
|
query = query
|
||||||
|
.order('dexSortOrder', { ascending: true })
|
||||||
|
.order('dexNumber', { ascending: true })
|
||||||
|
.order('unownSortOrder', { ascending: true })
|
||||||
|
.order('formSortBucket', { ascending: true })
|
||||||
|
.order('formSortRegionOrder', { ascending: true })
|
||||||
|
.order('formSortRegionalSub', { ascending: true })
|
||||||
|
.order('formSortLabel', { ascending: true });
|
||||||
|
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async fetchAllDexEntries(
|
||||||
|
dexScopes: string[],
|
||||||
|
enableForms: boolean,
|
||||||
|
region: string
|
||||||
|
): Promise<PokedexEntryDB[]> {
|
||||||
|
if (dexScopes.length === 0) return [];
|
||||||
|
|
||||||
|
const entries: PokedexEntryDB[] = [];
|
||||||
|
let start = 0;
|
||||||
|
const maxRows = CombinedDataRepository.MAX_ROWS_PER_REQUEST;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
const end = start + maxRows - 1;
|
||||||
|
const { data, error } = await this.buildDexEntriesQuery(dexScopes, enableForms, region).range(
|
||||||
|
start,
|
||||||
|
end
|
||||||
|
);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
console.error('Error finding dex-scoped combined data:', error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data || data.length === 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
entries.push(...data);
|
||||||
|
|
||||||
|
if (data.length < maxRows) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
start = end + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
private dedupeEntries(entries: PokedexEntryDB[]): PokedexEntryDB[] {
|
||||||
|
const seen = new Set<number>();
|
||||||
|
const deduped: PokedexEntryDB[] = [];
|
||||||
|
|
||||||
|
for (const entry of entries) {
|
||||||
|
if (seen.has(entry.id)) continue;
|
||||||
|
seen.add(entry.id);
|
||||||
|
deduped.push(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
return deduped;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async fetchEntriesByRange(
|
||||||
|
from: number,
|
||||||
|
to: number,
|
||||||
|
enableForms: boolean,
|
||||||
|
region: string,
|
||||||
|
game: string
|
||||||
|
): Promise<PokedexEntryDB[]> {
|
||||||
|
const entries: PokedexEntryDB[] = [];
|
||||||
|
let start = from;
|
||||||
|
const maxRows = CombinedDataRepository.MAX_ROWS_PER_REQUEST;
|
||||||
|
|
||||||
|
while (start <= to) {
|
||||||
|
const end = Math.min(to, start + maxRows - 1);
|
||||||
|
const { data, error } = await this.buildEntriesQuery(enableForms, region, game).range(
|
||||||
|
start,
|
||||||
|
end
|
||||||
|
);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
console.error('Error finding paginated combined data:', error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data || data.length === 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
entries.push(...data);
|
||||||
|
|
||||||
|
if (data.length < end - start + 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
start = end + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async fetchAllEntries(
|
||||||
|
enableForms: boolean,
|
||||||
|
region: string,
|
||||||
|
game: string
|
||||||
|
): Promise<PokedexEntryDB[]> {
|
||||||
|
const entries: PokedexEntryDB[] = [];
|
||||||
|
let start = 0;
|
||||||
|
const maxRows = CombinedDataRepository.MAX_ROWS_PER_REQUEST;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
const end = start + maxRows - 1;
|
||||||
|
const { data, error } = await this.buildEntriesQuery(enableForms, region, game).range(
|
||||||
|
start,
|
||||||
|
end
|
||||||
|
);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
console.error('Error finding combined data:', error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data || data.length === 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
entries.push(...data);
|
||||||
|
|
||||||
|
if (data.length < maxRows) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
start = end + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async fetchCatchRecords(entryIds: number[], userId: string): Promise<CatchRecordDB[]> {
|
||||||
|
if (!this.pokedexId) return [];
|
||||||
|
if (entryIds.length === 0) return [];
|
||||||
|
|
||||||
|
const records: CatchRecordDB[] = [];
|
||||||
|
const chunkSize = 1000;
|
||||||
|
|
||||||
|
for (let i = 0; i < entryIds.length; i += chunkSize) {
|
||||||
|
const chunk = entryIds.slice(i, i + chunkSize);
|
||||||
|
const { data, error } = await this.supabase
|
||||||
|
.from('catch_records')
|
||||||
|
.select('*')
|
||||||
|
.eq('userId', userId)
|
||||||
|
.eq('pokedexId', this.pokedexId)
|
||||||
|
.in('pokemonId', chunk);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
console.error('Error loading catch records:', error);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
records.push(...data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
|
async findAllCombinedData(
|
||||||
|
userId: string,
|
||||||
|
enableForms: boolean = true,
|
||||||
|
region: string = '',
|
||||||
|
game: string = '',
|
||||||
|
dexScopes: string[] = []
|
||||||
|
): Promise<CombinedData[]> {
|
||||||
|
const entries =
|
||||||
|
dexScopes.length > 0
|
||||||
|
? this.dedupeEntries(await this.fetchAllDexEntries(dexScopes, enableForms, region))
|
||||||
|
: await this.fetchAllEntries(enableForms, region, game);
|
||||||
|
|
||||||
if (!entries || entries.length === 0) {
|
if (!entries || entries.length === 0) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
@@ -82,22 +274,12 @@ class CombinedDataRepository {
|
|||||||
let catchRecords: CatchRecordDB[] = [];
|
let catchRecords: CatchRecordDB[] = [];
|
||||||
if (userId && this.pokedexId) {
|
if (userId && this.pokedexId) {
|
||||||
const entryIds = entries.map((entry) => entry.id);
|
const entryIds = entries.map((entry) => entry.id);
|
||||||
const { data: records, error: recordsError } = await this.supabase
|
catchRecords = await this.fetchCatchRecords(entryIds, userId);
|
||||||
.from('catch_records')
|
|
||||||
.select('*')
|
|
||||||
.eq('userId', userId)
|
|
||||||
.eq('pokedexId', this.pokedexId)
|
|
||||||
.in('pokedexEntryId', entryIds);
|
|
||||||
|
|
||||||
if (!recordsError && records) {
|
|
||||||
catchRecords = records;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Combine the data exactly like master branch
|
// Combine the data exactly like master branch
|
||||||
const combinedData = entries.map((entry) => {
|
const combinedData = entries.map((entry) => {
|
||||||
const userCatchRecord =
|
const userCatchRecord = catchRecords.find((record) => record.pokemonId === entry.id) || null;
|
||||||
catchRecords.find((record) => record.pokedexEntryId === entry.id) || null;
|
|
||||||
|
|
||||||
const transformedEntry = this.transformPokedexEntry(entry);
|
const transformedEntry = this.transformPokedexEntry(entry);
|
||||||
const transformedCatchRecord = userCatchRecord
|
const transformedCatchRecord = userCatchRecord
|
||||||
@@ -120,37 +302,18 @@ class CombinedDataRepository {
|
|||||||
limit: number = 20,
|
limit: number = 20,
|
||||||
enableForms: boolean = true,
|
enableForms: boolean = true,
|
||||||
region: string = '',
|
region: string = '',
|
||||||
game: string = ''
|
game: string = '',
|
||||||
|
dexScopes: string[] = []
|
||||||
): Promise<CombinedData[]> {
|
): Promise<CombinedData[]> {
|
||||||
const from = (page - 1) * limit;
|
const from = (page - 1) * limit;
|
||||||
const to = from + limit - 1;
|
const to = from + limit - 1;
|
||||||
|
const entries =
|
||||||
let query = this.supabase.from('pokedex_entries').select('*').range(from, to);
|
dexScopes.length > 0
|
||||||
|
? this.dedupeEntries(await this.fetchAllDexEntries(dexScopes, enableForms, region)).slice(
|
||||||
// Apply filters
|
from,
|
||||||
if (!enableForms) {
|
to + 1
|
||||||
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
)
|
||||||
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
: await this.fetchEntriesByRange(from, to, enableForms, region, game);
|
||||||
}
|
|
||||||
|
|
||||||
if (region) {
|
|
||||||
query = query.eq('regionToCatchIn', region);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (game) {
|
|
||||||
query = query.contains('gamesToCatchIn', [game]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always order by national dex number
|
|
||||||
// Note: Regional dex ordering would require joining with regional_dex_numbers table
|
|
||||||
query = query.order('pokedexNumber', { ascending: true });
|
|
||||||
|
|
||||||
const { data: entries, error: entriesError } = await query;
|
|
||||||
|
|
||||||
if (entriesError) {
|
|
||||||
console.error('Error finding paginated combined data:', entriesError);
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!entries || entries.length === 0) {
|
if (!entries || entries.length === 0) {
|
||||||
return [];
|
return [];
|
||||||
@@ -160,22 +323,12 @@ class CombinedDataRepository {
|
|||||||
let catchRecords: CatchRecordDB[] = [];
|
let catchRecords: CatchRecordDB[] = [];
|
||||||
if (userId && this.pokedexId) {
|
if (userId && this.pokedexId) {
|
||||||
const entryIds = entries.map((entry) => entry.id);
|
const entryIds = entries.map((entry) => entry.id);
|
||||||
const { data: records, error: recordsError } = await this.supabase
|
catchRecords = await this.fetchCatchRecords(entryIds, userId);
|
||||||
.from('catch_records')
|
|
||||||
.select('*')
|
|
||||||
.eq('userId', userId)
|
|
||||||
.eq('pokedexId', this.pokedexId)
|
|
||||||
.in('pokedexEntryId', entryIds);
|
|
||||||
|
|
||||||
if (!recordsError && records) {
|
|
||||||
catchRecords = records;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Combine the data exactly like master branch
|
// Combine the data exactly like master branch
|
||||||
const combinedData = entries.map((entry) => {
|
const combinedData = entries.map((entry) => {
|
||||||
const userCatchRecord =
|
const userCatchRecord = catchRecords.find((record) => record.pokemonId === entry.id) || null;
|
||||||
catchRecords.find((record) => record.pokedexEntryId === entry.id) || null;
|
|
||||||
|
|
||||||
const transformedEntry = this.transformPokedexEntry(entry);
|
const transformedEntry = this.transformPokedexEntry(entry);
|
||||||
const transformedCatchRecord = userCatchRecord
|
const transformedCatchRecord = userCatchRecord
|
||||||
@@ -192,13 +345,25 @@ class CombinedDataRepository {
|
|||||||
return combinedData;
|
return combinedData;
|
||||||
}
|
}
|
||||||
|
|
||||||
async countCombinedData(enableForms: boolean, region: string, game: string): Promise<number> {
|
async countCombinedData(
|
||||||
|
enableForms: boolean,
|
||||||
|
region: string,
|
||||||
|
game: string,
|
||||||
|
dexScopes: string[] = []
|
||||||
|
): Promise<number> {
|
||||||
|
if (dexScopes.length > 0) {
|
||||||
|
const entries = this.dedupeEntries(
|
||||||
|
await this.fetchAllDexEntries(dexScopes, enableForms, region)
|
||||||
|
);
|
||||||
|
return entries.length;
|
||||||
|
}
|
||||||
|
|
||||||
let query = this.supabase.from('pokedex_entries').select('id', { count: 'exact', head: true });
|
let query = this.supabase.from('pokedex_entries').select('id', { count: 'exact', head: true });
|
||||||
|
|
||||||
// Apply same filters as in findCombinedData
|
// Apply same filters as in findCombinedData
|
||||||
if (!enableForms) {
|
if (!enableForms) {
|
||||||
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
// Filter to base forms: NULL or 'male' (gendered species), plus Unown "A".
|
||||||
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
query = query.or('form.is.null,form.eq.male,and(pokemon.eq.Unown,form.eq.A)');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (region) {
|
if (region) {
|
||||||
|
|||||||
@@ -1,9 +1,45 @@
|
|||||||
import { type PokedexEntry, type PokedexEntryDB } from '$lib/models/PokedexEntry';
|
import {
|
||||||
|
type CatchInformationItem,
|
||||||
|
type PokedexEntry,
|
||||||
|
type PokedexEntryDB
|
||||||
|
} from '$lib/models/PokedexEntry';
|
||||||
import type { SupabaseClient } from '@supabase/supabase-js';
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
||||||
|
|
||||||
class PokedexEntryRepository {
|
class PokedexEntryRepository {
|
||||||
constructor(private supabase: SupabaseClient) {}
|
constructor(private supabase: SupabaseClient) {}
|
||||||
|
|
||||||
|
private parseCatchInformation(
|
||||||
|
values: string[] | null
|
||||||
|
): Array<string | CatchInformationItem> {
|
||||||
|
if (!values) return [];
|
||||||
|
return values.map((value) => {
|
||||||
|
const trimmed = value.trim();
|
||||||
|
if (!trimmed.startsWith('{')) return value;
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(trimmed) as Partial<CatchInformationItem>;
|
||||||
|
if (
|
||||||
|
parsed &&
|
||||||
|
typeof parsed.game === 'string' &&
|
||||||
|
typeof parsed.location === 'string' &&
|
||||||
|
typeof parsed.notes === 'string'
|
||||||
|
) {
|
||||||
|
return {
|
||||||
|
game: parsed.game,
|
||||||
|
location: parsed.location,
|
||||||
|
notes: parsed.notes
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private serializeCatchInformation(values: Array<string | CatchInformationItem>): string[] {
|
||||||
|
return values.map((value) => (typeof value === 'string' ? value : JSON.stringify(value)));
|
||||||
|
}
|
||||||
|
|
||||||
// Transform Supabase data to match frontend expectations (minimal transformation)
|
// Transform Supabase data to match frontend expectations (minimal transformation)
|
||||||
private transformPokedexEntry(entry: PokedexEntryDB): PokedexEntry {
|
private transformPokedexEntry(entry: PokedexEntryDB): PokedexEntry {
|
||||||
return {
|
return {
|
||||||
@@ -11,12 +47,13 @@ class PokedexEntryRepository {
|
|||||||
pokedexNumber: entry.pokedexNumber,
|
pokedexNumber: entry.pokedexNumber,
|
||||||
pokemon: entry.pokemon,
|
pokemon: entry.pokemon,
|
||||||
form: entry.form || '',
|
form: entry.form || '',
|
||||||
|
spriteKey: entry.spriteKey || '',
|
||||||
canGigantamax: entry.canGigantamax,
|
canGigantamax: entry.canGigantamax,
|
||||||
regionToCatchIn: entry.regionToCatchIn || '',
|
regionToCatchIn: entry.regionToCatchIn || '',
|
||||||
gamesToCatchIn: entry.gamesToCatchIn || [],
|
gamesToCatchIn: entry.gamesToCatchIn || [],
|
||||||
regionToEvolveIn: entry.regionToEvolveIn || '',
|
regionToEvolveIn: entry.regionToEvolveIn || '',
|
||||||
evolutionInformation: entry.evolutionInformation || '',
|
evolutionInformation: entry.evolutionInformation || '',
|
||||||
catchInformation: entry.catchInformation || []
|
catchInformation: this.parseCatchInformation(entry.catchInformation)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,13 +84,16 @@ class PokedexEntryRepository {
|
|||||||
if (data.pokedexNumber !== undefined) dbData.pokedexNumber = data.pokedexNumber;
|
if (data.pokedexNumber !== undefined) dbData.pokedexNumber = data.pokedexNumber;
|
||||||
if (data.pokemon !== undefined) dbData.pokemon = data.pokemon;
|
if (data.pokemon !== undefined) dbData.pokemon = data.pokemon;
|
||||||
if (data.form !== undefined) dbData.form = data.form;
|
if (data.form !== undefined) dbData.form = data.form;
|
||||||
|
if (data.spriteKey !== undefined) dbData.spriteKey = data.spriteKey;
|
||||||
if (data.canGigantamax !== undefined) dbData.canGigantamax = data.canGigantamax;
|
if (data.canGigantamax !== undefined) dbData.canGigantamax = data.canGigantamax;
|
||||||
if (data.regionToCatchIn !== undefined) dbData.regionToCatchIn = data.regionToCatchIn;
|
if (data.regionToCatchIn !== undefined) dbData.regionToCatchIn = data.regionToCatchIn;
|
||||||
if (data.gamesToCatchIn !== undefined) dbData.gamesToCatchIn = data.gamesToCatchIn;
|
if (data.gamesToCatchIn !== undefined) dbData.gamesToCatchIn = data.gamesToCatchIn;
|
||||||
if (data.regionToEvolveIn !== undefined) dbData.regionToEvolveIn = data.regionToEvolveIn;
|
if (data.regionToEvolveIn !== undefined) dbData.regionToEvolveIn = data.regionToEvolveIn;
|
||||||
if (data.evolutionInformation !== undefined)
|
if (data.evolutionInformation !== undefined)
|
||||||
dbData.evolutionInformation = data.evolutionInformation;
|
dbData.evolutionInformation = data.evolutionInformation;
|
||||||
if (data.catchInformation !== undefined) dbData.catchInformation = data.catchInformation;
|
if (data.catchInformation !== undefined) {
|
||||||
|
dbData.catchInformation = this.serializeCatchInformation(data.catchInformation);
|
||||||
|
}
|
||||||
// Box placement is calculated dynamically - not stored in database
|
// Box placement is calculated dynamically - not stored in database
|
||||||
|
|
||||||
const { data: result, error } = await this.supabase
|
const { data: result, error } = await this.supabase
|
||||||
@@ -72,13 +112,16 @@ class PokedexEntryRepository {
|
|||||||
if (data.pokedexNumber !== undefined) dbData.pokedexNumber = data.pokedexNumber;
|
if (data.pokedexNumber !== undefined) dbData.pokedexNumber = data.pokedexNumber;
|
||||||
if (data.pokemon !== undefined) dbData.pokemon = data.pokemon;
|
if (data.pokemon !== undefined) dbData.pokemon = data.pokemon;
|
||||||
if (data.form !== undefined) dbData.form = data.form;
|
if (data.form !== undefined) dbData.form = data.form;
|
||||||
|
if (data.spriteKey !== undefined) dbData.spriteKey = data.spriteKey;
|
||||||
if (data.canGigantamax !== undefined) dbData.canGigantamax = data.canGigantamax;
|
if (data.canGigantamax !== undefined) dbData.canGigantamax = data.canGigantamax;
|
||||||
if (data.regionToCatchIn !== undefined) dbData.regionToCatchIn = data.regionToCatchIn;
|
if (data.regionToCatchIn !== undefined) dbData.regionToCatchIn = data.regionToCatchIn;
|
||||||
if (data.gamesToCatchIn !== undefined) dbData.gamesToCatchIn = data.gamesToCatchIn;
|
if (data.gamesToCatchIn !== undefined) dbData.gamesToCatchIn = data.gamesToCatchIn;
|
||||||
if (data.regionToEvolveIn !== undefined) dbData.regionToEvolveIn = data.regionToEvolveIn;
|
if (data.regionToEvolveIn !== undefined) dbData.regionToEvolveIn = data.regionToEvolveIn;
|
||||||
if (data.evolutionInformation !== undefined)
|
if (data.evolutionInformation !== undefined)
|
||||||
dbData.evolutionInformation = data.evolutionInformation;
|
dbData.evolutionInformation = data.evolutionInformation;
|
||||||
if (data.catchInformation !== undefined) dbData.catchInformation = data.catchInformation;
|
if (data.catchInformation !== undefined) {
|
||||||
|
dbData.catchInformation = this.serializeCatchInformation(data.catchInformation);
|
||||||
|
}
|
||||||
// Box placement is calculated dynamically - not stored in database
|
// Box placement is calculated dynamically - not stored in database
|
||||||
|
|
||||||
const { data: result, error } = await this.supabase
|
const { data: result, error } = await this.supabase
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class PokedexRepository {
|
|||||||
private userId: string
|
private userId: string
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
private transform(db: PokedexDB): Pokedex {
|
private transform(db: PokedexDB, dexScopes: string[] = []): Pokedex {
|
||||||
return {
|
return {
|
||||||
_id: db.id,
|
_id: db.id,
|
||||||
userId: db.userId,
|
userId: db.userId,
|
||||||
@@ -17,7 +17,8 @@ class PokedexRepository {
|
|||||||
isShinyDex: db.isShinyDex,
|
isShinyDex: db.isShinyDex,
|
||||||
isOriginDex: db.isOriginDex,
|
isOriginDex: db.isOriginDex,
|
||||||
isFormDex: db.isFormDex,
|
isFormDex: db.isFormDex,
|
||||||
gameScope: db.gameScope
|
gameScope: db.gameScope,
|
||||||
|
dexScopes
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,6 +34,23 @@ class PokedexRepository {
|
|||||||
return dbData;
|
return dbData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async fetchDexScopesMap(pokedexIds: string[]): Promise<Map<string, string[]>> {
|
||||||
|
if (pokedexIds.length === 0) return new Map();
|
||||||
|
const { data, error } = await this.supabase
|
||||||
|
.from('pokedex_dex_scopes')
|
||||||
|
.select('pokedexId, dexId')
|
||||||
|
.in('pokedexId', pokedexIds);
|
||||||
|
|
||||||
|
if (error || !data) return new Map();
|
||||||
|
|
||||||
|
const map = new Map<string, string[]>();
|
||||||
|
for (const row of data) {
|
||||||
|
if (!map.has(row.pokedexId)) map.set(row.pokedexId, []);
|
||||||
|
map.get(row.pokedexId)?.push(row.dexId);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
async findById(id: string): Promise<Pokedex | null> {
|
async findById(id: string): Promise<Pokedex | null> {
|
||||||
const { data, error } = await this.supabase
|
const { data, error } = await this.supabase
|
||||||
.from('pokedexes')
|
.from('pokedexes')
|
||||||
@@ -42,7 +60,8 @@ class PokedexRepository {
|
|||||||
.single();
|
.single();
|
||||||
|
|
||||||
if (error || !data) return null;
|
if (error || !data) return null;
|
||||||
return this.transform(data);
|
const dexScopesMap = await this.fetchDexScopesMap([data.id]);
|
||||||
|
return this.transform(data, dexScopesMap.get(data.id) || []);
|
||||||
}
|
}
|
||||||
|
|
||||||
async findAll(): Promise<Pokedex[]> {
|
async findAll(): Promise<Pokedex[]> {
|
||||||
@@ -53,7 +72,8 @@ class PokedexRepository {
|
|||||||
.order('createdAt', { ascending: true });
|
.order('createdAt', { ascending: true });
|
||||||
|
|
||||||
if (error || !data) return [];
|
if (error || !data) return [];
|
||||||
return data.map((d) => this.transform(d));
|
const dexScopesMap = await this.fetchDexScopesMap(data.map((d) => d.id));
|
||||||
|
return data.map((d) => this.transform(d, dexScopesMap.get(d.id) || []));
|
||||||
}
|
}
|
||||||
|
|
||||||
async create(data: Partial<Pokedex>): Promise<Pokedex> {
|
async create(data: Partial<Pokedex>): Promise<Pokedex> {
|
||||||
|
|||||||
@@ -1,24 +1,38 @@
|
|||||||
import RegionGameMappingModel, { type RegionGameMapping } from '$lib/models/RegionGameMapping';
|
import type { RegionGameMapping } from '$lib/models/RegionGameMapping';
|
||||||
|
|
||||||
class RegionGameMappingRepository {
|
class RegionGameMappingRepository {
|
||||||
async findById(id: string): Promise<RegionGameMapping | null> {
|
async findById(id: string): Promise<RegionGameMapping | null> {
|
||||||
return RegionGameMappingModel.findById(id).exec();
|
void id;
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async findAll(): Promise<RegionGameMapping[]> {
|
async findAll(): Promise<RegionGameMapping[]> {
|
||||||
return RegionGameMappingModel.find().exec();
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
async create(data: Partial<RegionGameMapping>): Promise<RegionGameMapping> {
|
async create(data: Partial<RegionGameMapping>): Promise<RegionGameMapping | null> {
|
||||||
return RegionGameMappingModel.create(data);
|
if (!data.region || !data.game) return null;
|
||||||
|
return {
|
||||||
|
id: data.id,
|
||||||
|
region: data.region,
|
||||||
|
game: data.game
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async update(id: string, data: Partial<RegionGameMapping>): Promise<RegionGameMapping | null> {
|
async update(id: string, data: Partial<RegionGameMapping>): Promise<RegionGameMapping | null> {
|
||||||
return RegionGameMappingModel.findByIdAndUpdate(id, data, { new: true }).exec();
|
if (!data.region || !data.game) return null;
|
||||||
|
const normalizedId = Number(id);
|
||||||
|
const resolvedId = Number.isFinite(normalizedId) ? normalizedId : data.id;
|
||||||
|
if (typeof resolvedId !== 'number' || !Number.isFinite(resolvedId)) return null;
|
||||||
|
return {
|
||||||
|
id: resolvedId,
|
||||||
|
region: data.region,
|
||||||
|
game: data.game
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async delete(id: string): Promise<void> {
|
async delete(id: string): Promise<void> {
|
||||||
await RegionGameMappingModel.findByIdAndDelete(id).exec();
|
void id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,135 @@
|
|||||||
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
||||||
|
import type { Pokedex } from '$lib/models/Pokedex';
|
||||||
|
|
||||||
|
type GameDexRow = {
|
||||||
|
id: string;
|
||||||
|
displayName: string;
|
||||||
|
sortOrder: number;
|
||||||
|
isDlc: boolean;
|
||||||
|
parentDexId: string | null;
|
||||||
|
};
|
||||||
|
|
||||||
|
type GameSummary = {
|
||||||
|
displayName: string;
|
||||||
|
releaseYear: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
type GameDexRowWithGame = GameDexRow & {
|
||||||
|
games: GameSummary | GameSummary[] | null;
|
||||||
|
};
|
||||||
|
|
||||||
|
async function getGameIdForScope(
|
||||||
|
supabase: SupabaseClient,
|
||||||
|
gameScope: string
|
||||||
|
): Promise<string | null> {
|
||||||
|
const { data, error } = await supabase
|
||||||
|
.from('games')
|
||||||
|
.select('id')
|
||||||
|
.eq('displayName', gameScope)
|
||||||
|
.maybeSingle();
|
||||||
|
|
||||||
|
if (error || !data) return null;
|
||||||
|
return data.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function resolveDexScopes(
|
||||||
|
supabase: SupabaseClient,
|
||||||
|
pokedex: Pokedex
|
||||||
|
): Promise<string[]> {
|
||||||
|
if (!pokedex.gameScope) return [];
|
||||||
|
if (pokedex.dexScopes && pokedex.dexScopes.length > 0) {
|
||||||
|
return pokedex.dexScopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
const gameId = await getGameIdForScope(supabase, pokedex.gameScope);
|
||||||
|
if (!gameId) return [];
|
||||||
|
|
||||||
|
const { data, error } = await supabase
|
||||||
|
.from('game_dexes')
|
||||||
|
.select('id')
|
||||||
|
.eq('gameId', gameId)
|
||||||
|
.order('sortOrder', { ascending: true })
|
||||||
|
.order('displayName', { ascending: true });
|
||||||
|
|
||||||
|
if (error || !data) return [];
|
||||||
|
return data.map((row) => row.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function setPokedexDexScopes(
|
||||||
|
supabase: SupabaseClient,
|
||||||
|
pokedexId: string,
|
||||||
|
dexIds: string[]
|
||||||
|
): Promise<void> {
|
||||||
|
const uniqueDexIds = Array.from(new Set(dexIds));
|
||||||
|
|
||||||
|
const { error: deleteError } = await supabase
|
||||||
|
.from('pokedex_dex_scopes')
|
||||||
|
.delete()
|
||||||
|
.eq('pokedexId', pokedexId);
|
||||||
|
|
||||||
|
if (deleteError) {
|
||||||
|
throw new Error(`Failed to clear dex scopes: ${deleteError.message}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uniqueDexIds.length === 0) return;
|
||||||
|
|
||||||
|
const rows = uniqueDexIds.map((dexId) => ({
|
||||||
|
pokedexId,
|
||||||
|
dexId
|
||||||
|
}));
|
||||||
|
|
||||||
|
const { error: insertError } = await supabase.from('pokedex_dex_scopes').insert(rows);
|
||||||
|
if (insertError) {
|
||||||
|
throw new Error(`Failed to save dex scopes: ${insertError.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function listGameDexes(
|
||||||
|
supabase: SupabaseClient
|
||||||
|
): Promise<{
|
||||||
|
gameDexes: Record<string, GameDexRow[]>;
|
||||||
|
gameOrder: string[];
|
||||||
|
games: { displayName: string; releaseYear: number }[];
|
||||||
|
}> {
|
||||||
|
const { data, error } = await supabase
|
||||||
|
.from('game_dexes')
|
||||||
|
.select('id, displayName, sortOrder, isDlc, parentDexId, games!inner(displayName, releaseYear)')
|
||||||
|
.order('sortOrder', { ascending: true })
|
||||||
|
.order('displayName', { ascending: true });
|
||||||
|
|
||||||
|
if (error || !data) return { gameDexes: {}, gameOrder: [], games: [] };
|
||||||
|
|
||||||
|
const grouped: Record<string, GameDexRow[]> = {};
|
||||||
|
const releaseYears: Record<string, number> = {};
|
||||||
|
const rows = data as GameDexRowWithGame[];
|
||||||
|
for (const row of rows) {
|
||||||
|
const game = Array.isArray(row.games) ? row.games[0] : row.games;
|
||||||
|
if (!game) continue;
|
||||||
|
const gameName = game.displayName;
|
||||||
|
if (!grouped[gameName]) grouped[gameName] = [];
|
||||||
|
if (releaseYears[gameName] == null) {
|
||||||
|
releaseYears[gameName] = game.releaseYear;
|
||||||
|
}
|
||||||
|
grouped[gameName].push({
|
||||||
|
id: row.id,
|
||||||
|
displayName: row.displayName,
|
||||||
|
sortOrder: row.sortOrder,
|
||||||
|
isDlc: row.isDlc,
|
||||||
|
parentDexId: row.parentDexId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const games = Object.keys(grouped)
|
||||||
|
.map((name) => ({
|
||||||
|
displayName: name,
|
||||||
|
releaseYear: releaseYears[name] ?? 0
|
||||||
|
}))
|
||||||
|
.sort((a, b) => {
|
||||||
|
if (a.releaseYear !== b.releaseYear) return b.releaseYear - a.releaseYear;
|
||||||
|
return a.displayName.localeCompare(b.displayName);
|
||||||
|
});
|
||||||
|
|
||||||
|
const gameOrder = games.map((game) => game.displayName);
|
||||||
|
|
||||||
|
return { gameDexes: grouped, gameOrder, games };
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import type { Pokedex } from '$lib/models/Pokedex';
|
import type { Pokedex } from '$lib/models/Pokedex';
|
||||||
import type { SupabaseClient } from '@supabase/supabase-js';
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
||||||
|
import { resolveDexScopes } from '$lib/services/PokedexDexScopeService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate expected pokedex entries based on pokedex configuration
|
* Calculate expected pokedex entries based on pokedex configuration
|
||||||
@@ -10,21 +11,64 @@ export async function calculateExpectedEntries(
|
|||||||
supabase: SupabaseClient,
|
supabase: SupabaseClient,
|
||||||
pokedex: Pokedex
|
pokedex: Pokedex
|
||||||
): Promise<number[]> {
|
): Promise<number[]> {
|
||||||
|
const dexScopes = await resolveDexScopes(supabase, pokedex);
|
||||||
|
|
||||||
|
if (dexScopes.length > 0) {
|
||||||
|
const { data: dexEntries, error: dexError } = await supabase
|
||||||
|
.from('game_pokedex_entries')
|
||||||
|
.select('pokemonId')
|
||||||
|
.in('dexId', dexScopes);
|
||||||
|
|
||||||
|
if (dexError) {
|
||||||
|
console.error('Error calculating dex-scoped entries:', dexError);
|
||||||
|
throw new Error(`Failed to calculate dex-scoped entries: ${dexError.message}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const uniqueIds = Array.from(new Set(dexEntries?.map((row) => row.pokemonId) || []));
|
||||||
|
if (uniqueIds.length === 0) return [];
|
||||||
|
|
||||||
|
if (!pokedex.isFormDex) {
|
||||||
|
const { data: entries, error: entryError } = await supabase
|
||||||
|
.from('pokedex_entries')
|
||||||
|
.select('id, pokemon, form')
|
||||||
|
.in('id', uniqueIds);
|
||||||
|
|
||||||
|
if (entryError) {
|
||||||
|
console.error('Error filtering base forms for dex scopes:', entryError);
|
||||||
|
throw new Error(`Failed to filter base forms: ${entryError.message}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
entries
|
||||||
|
?.filter(
|
||||||
|
(entry) =>
|
||||||
|
entry.form === null ||
|
||||||
|
entry.form === 'male' ||
|
||||||
|
(entry.pokemon === 'Unown' && entry.form === 'A')
|
||||||
|
)
|
||||||
|
.map((entry) => entry.id) || []
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return uniqueIds;
|
||||||
|
}
|
||||||
|
|
||||||
let query = supabase.from('pokedex_entries').select('id');
|
let query = supabase.from('pokedex_entries').select('id');
|
||||||
|
|
||||||
// Apply form filter: if isFormDex is false, only include base forms
|
// Apply form filter: if isFormDex is false, only include base forms
|
||||||
// Base forms have form IS NULL, except Unown which has no base form (use 'A')
|
// Base forms have form IS NULL, except Unown which has no base form (use 'A')
|
||||||
if (!pokedex.isFormDex) {
|
if (!pokedex.isFormDex) {
|
||||||
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
query = query.or('form.is.null,form.eq.male,and(pokemon.eq.Unown,form.eq.A)');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply region filter: if gameScope is specified, filter by region
|
// Apply region filter: if gameScope is specified, filter by region
|
||||||
if (pokedex.gameScope) {
|
if (pokedex.gameScope) {
|
||||||
// Determine region from gameScope using region_game_mappings
|
// Determine region from gameScope using games table.
|
||||||
|
// We keep games.region as a denormalized convenience column.
|
||||||
const { data: regionData, error: regionError } = await supabase
|
const { data: regionData, error: regionError } = await supabase
|
||||||
.from('region_game_mappings')
|
.from('games')
|
||||||
.select('region')
|
.select('region')
|
||||||
.eq('game', pokedex.gameScope)
|
.eq('displayName', pokedex.gameScope)
|
||||||
.maybeSingle();
|
.maybeSingle();
|
||||||
|
|
||||||
if (regionError) {
|
if (regionError) {
|
||||||
@@ -71,17 +115,18 @@ export async function populatePokedexMappings(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const mappings = expectedEntryIds.map((pokedexEntryId) => ({
|
// New schema writes to pokedex_pokemon_mapping; column is pokemonId
|
||||||
|
const mappings = expectedEntryIds.map((pokemonId) => ({
|
||||||
pokedexId,
|
pokedexId,
|
||||||
pokedexEntryId
|
pokemonId
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Process in chunks to avoid request size limits
|
// Process in chunks to avoid request size limits
|
||||||
const CHUNK_SIZE = 500;
|
const CHUNK_SIZE = 500;
|
||||||
for (let i = 0; i < mappings.length; i += CHUNK_SIZE) {
|
for (let i = 0; i < mappings.length; i += CHUNK_SIZE) {
|
||||||
const chunk = mappings.slice(i, i + CHUNK_SIZE);
|
const chunk = mappings.slice(i, i + CHUNK_SIZE);
|
||||||
const { error } = await supabase.from('pokedex_entries_mapping').upsert(chunk, {
|
const { error } = await supabase.from('pokedex_pokemon_mapping').upsert(chunk, {
|
||||||
onConflict: 'pokedexId,pokedexEntryId',
|
onConflict: 'pokedexId,pokemonId',
|
||||||
ignoreDuplicates: true
|
ignoreDuplicates: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ export type FlushOptions = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function keyFor(record: CatchRecord): string {
|
function keyFor(record: CatchRecord): string {
|
||||||
return `${record.userId}:${record.pokedexId}:${record.pokedexEntryId}`;
|
return `${record.userId}:${record.pokedexId}:${record.pokemonId}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function backoffMs(attempts: number): number {
|
function backoffMs(attempts: number): number {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
import { pwaAssetsHead } from 'virtual:pwa-assets/head';
|
import { pwaAssetsHead } from 'virtual:pwa-assets/head';
|
||||||
|
|
||||||
$: webManifestLink = pwaInfo ? pwaInfo.webManifest.linkTag : '';
|
$: webManifestLink = pwaInfo ? pwaInfo.webManifest.linkTag : '';
|
||||||
|
const pwaDescription = (pwaAssetsHead as { description?: { content: string } }).description;
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
let { supabase } = data;
|
let { supabase } = data;
|
||||||
@@ -22,8 +23,10 @@
|
|||||||
});
|
});
|
||||||
onDestroy(unsubscribe);
|
onDestroy(unsubscribe);
|
||||||
|
|
||||||
onMount(async () => {
|
let authSubscription: { unsubscribe: () => void } | null = null;
|
||||||
await getUser();
|
|
||||||
|
onMount(() => {
|
||||||
|
void getUser();
|
||||||
|
|
||||||
// Listen for auth state changes to keep the user store in sync
|
// Listen for auth state changes to keep the user store in sync
|
||||||
const {
|
const {
|
||||||
@@ -36,27 +39,30 @@
|
|||||||
}
|
}
|
||||||
user.set(localUser);
|
user.set(localUser);
|
||||||
});
|
});
|
||||||
|
authSubscription = subscription;
|
||||||
|
|
||||||
if (pwaInfo) {
|
if (pwaInfo) {
|
||||||
const { registerSW } = await import('virtual:pwa-register');
|
void (async () => {
|
||||||
registerSW({
|
const { registerSW } = await import('virtual:pwa-register');
|
||||||
immediate: true,
|
registerSW({
|
||||||
onRegistered(r) {
|
immediate: true,
|
||||||
// uncomment following code if you want check for updates
|
onRegistered(r) {
|
||||||
// r && setInterval(() => {
|
// uncomment following code if you want check for updates
|
||||||
// console.log('Checking for sw update')
|
// r && setInterval(() => {
|
||||||
// r.update()
|
// console.log('Checking for sw update')
|
||||||
// }, 20000 /* 20s for testing purposes */)
|
// r.update()
|
||||||
console.log(`SW Registered: ${r}`);
|
// }, 20000 /* 20s for testing purposes */)
|
||||||
},
|
console.log(`SW Registered: ${r}`);
|
||||||
onRegisterError(error) {
|
},
|
||||||
console.log('SW registration error', error);
|
onRegisterError(error) {
|
||||||
}
|
console.log('SW registration error', error);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
subscription.unsubscribe();
|
authSubscription?.unsubscribe();
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -80,8 +86,8 @@
|
|||||||
{#if pwaAssetsHead.themeColor}
|
{#if pwaAssetsHead.themeColor}
|
||||||
<meta name="theme-color" content={pwaAssetsHead.themeColor.content} />
|
<meta name="theme-color" content={pwaAssetsHead.themeColor.content} />
|
||||||
{/if}
|
{/if}
|
||||||
{#if pwaAssetsHead.description}
|
{#if pwaDescription}
|
||||||
<meta name="description" content={pwaAssetsHead.description.content} />
|
<meta name="description" content={pwaDescription.content} />
|
||||||
{/if}
|
{/if}
|
||||||
{#each pwaAssetsHead.links as link}
|
{#each pwaAssetsHead.links as link}
|
||||||
<link {...link} />
|
<link {...link} />
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import { json } from '@sveltejs/kit';
|
||||||
|
import type { RequestHandler } from './$types';
|
||||||
|
import { listGameDexes } from '$lib/services/PokedexDexScopeService';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GET /api/game-dexes
|
||||||
|
* Returns game dexes grouped by game display name.
|
||||||
|
*/
|
||||||
|
export const GET: RequestHandler = async ({ locals }) => {
|
||||||
|
try {
|
||||||
|
const { gameDexes, gameOrder, games } = await listGameDexes(locals.supabase);
|
||||||
|
return json({ gameDexes, gameOrder, games });
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Unexpected error fetching game dexes:', err);
|
||||||
|
return json({ error: 'Internal server error' }, { status: 500 });
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -4,6 +4,7 @@ import PokedexRepository from '$lib/repositories/PokedexRepository';
|
|||||||
import { requireAuth } from '$lib/utils/auth';
|
import { requireAuth } from '$lib/utils/auth';
|
||||||
import type { RequestEvent } from '@sveltejs/kit';
|
import type { RequestEvent } from '@sveltejs/kit';
|
||||||
import { populatePokedexMappings } from '$lib/services/PokedexMappingService';
|
import { populatePokedexMappings } from '$lib/services/PokedexMappingService';
|
||||||
|
import { resolveDexScopes, setPokedexDexScopes } from '$lib/services/PokedexDexScopeService';
|
||||||
|
|
||||||
// GET: List all pokedexes for user
|
// GET: List all pokedexes for user
|
||||||
export const GET = async (event: RequestEvent) => {
|
export const GET = async (event: RequestEvent) => {
|
||||||
@@ -31,19 +32,27 @@ export const POST = async (event: RequestEvent) => {
|
|||||||
const data: Partial<Pokedex> = await event.request.json();
|
const data: Partial<Pokedex> = await event.request.json();
|
||||||
requestedName = typeof data.name === 'string' ? data.name : undefined;
|
requestedName = typeof data.name === 'string' ? data.name : undefined;
|
||||||
data.userId = userId;
|
data.userId = userId;
|
||||||
|
const requestedDexScopes = Array.isArray(data.dexScopes) ? data.dexScopes : [];
|
||||||
|
|
||||||
const repo = new PokedexRepository(event.locals.supabase, userId);
|
const repo = new PokedexRepository(event.locals.supabase, userId);
|
||||||
const pokedex = await repo.create(data);
|
const pokedex = await repo.create(data);
|
||||||
createdPokedexId = pokedex._id;
|
createdPokedexId = pokedex._id;
|
||||||
createdPokedexName = pokedex.name;
|
createdPokedexName = pokedex.name;
|
||||||
|
|
||||||
// Populate pokedex_entries_mapping table with expected entries
|
// Populate dex scopes and pokedex_entries_mapping table with expected entries
|
||||||
try {
|
try {
|
||||||
|
const resolvedDexScopes = await resolveDexScopes(event.locals.supabase, {
|
||||||
|
...pokedex,
|
||||||
|
dexScopes: requestedDexScopes
|
||||||
|
});
|
||||||
|
await setPokedexDexScopes(event.locals.supabase, pokedex._id, resolvedDexScopes);
|
||||||
|
pokedex.dexScopes = resolvedDexScopes;
|
||||||
|
|
||||||
await populatePokedexMappings(event.locals.supabase, pokedex._id, pokedex);
|
await populatePokedexMappings(event.locals.supabase, pokedex._id, pokedex);
|
||||||
} catch (mappingError) {
|
} catch (mappingError) {
|
||||||
// Rollback: delete the partially-initialised pokedex to prevent dangling records
|
// Rollback: delete the partially-initialised pokedex to prevent dangling records
|
||||||
console.error(
|
console.error(
|
||||||
`Failed to populate pokedex mappings for pokedex id="${createdPokedexId}" name="${createdPokedexName}":`,
|
`Failed to initialize pokedex id="${createdPokedexId}" name="${createdPokedexName}":`,
|
||||||
mappingError
|
mappingError
|
||||||
);
|
);
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import PokedexRepository from '$lib/repositories/PokedexRepository';
|
|||||||
import { requireAuth } from '$lib/utils/auth';
|
import { requireAuth } from '$lib/utils/auth';
|
||||||
import type { RequestEvent } from '@sveltejs/kit';
|
import type { RequestEvent } from '@sveltejs/kit';
|
||||||
import { recalculatePokedexMappings } from '$lib/services/PokedexMappingService';
|
import { recalculatePokedexMappings } from '$lib/services/PokedexMappingService';
|
||||||
|
import { resolveDexScopes, setPokedexDexScopes } from '$lib/services/PokedexDexScopeService';
|
||||||
|
|
||||||
// GET: Get single pokedex by ID
|
// GET: Get single pokedex by ID
|
||||||
export const GET = async (event: RequestEvent) => {
|
export const GET = async (event: RequestEvent) => {
|
||||||
@@ -71,12 +72,35 @@ export const PUT = async (event: RequestEvent) => {
|
|||||||
return json({ error: 'Pokedex not found' }, { status: 404 });
|
return json({ error: 'Pokedex not found' }, { status: 404 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const dexScopesProvided = Object.prototype.hasOwnProperty.call(data, 'dexScopes');
|
||||||
|
const requestedDexScopes =
|
||||||
|
dexScopesProvided && Array.isArray(data.dexScopes)
|
||||||
|
? data.dexScopes
|
||||||
|
: existingPokedex.dexScopes || [];
|
||||||
|
|
||||||
|
const resolvedDexScopes = await resolveDexScopes(event.locals.supabase, {
|
||||||
|
...pokedex,
|
||||||
|
dexScopes: requestedDexScopes
|
||||||
|
});
|
||||||
|
pokedex.dexScopes = resolvedDexScopes;
|
||||||
|
|
||||||
|
const existingDexScopes = new Set(existingPokedex.dexScopes || []);
|
||||||
|
const nextDexScopes = new Set(resolvedDexScopes);
|
||||||
|
const dexScopesChanged =
|
||||||
|
existingDexScopes.size !== nextDexScopes.size ||
|
||||||
|
[...existingDexScopes].some((dexId) => !nextDexScopes.has(dexId));
|
||||||
|
|
||||||
|
if (dexScopesChanged) {
|
||||||
|
await setPokedexDexScopes(event.locals.supabase, id, resolvedDexScopes);
|
||||||
|
}
|
||||||
|
|
||||||
// Recalculate pokedex_entries_mapping if configuration changed
|
// Recalculate pokedex_entries_mapping if configuration changed
|
||||||
// Only recalculate if isFormDex or gameScope actually changed (these are the only fields that affect mapping)
|
// Only recalculate if isFormDex, gameScope, or dexScopes changed
|
||||||
// Compare the persisted result (pokedex) to existingPokedex to catch changes that repo.update may normalize or default
|
// Compare the persisted result (pokedex) to existingPokedex to catch changes that repo.update may normalize or default
|
||||||
const configChanged =
|
const configChanged =
|
||||||
pokedex.isFormDex !== existingPokedex.isFormDex ||
|
pokedex.isFormDex !== existingPokedex.isFormDex ||
|
||||||
pokedex.gameScope !== existingPokedex.gameScope;
|
pokedex.gameScope !== existingPokedex.gameScope ||
|
||||||
|
dexScopesChanged;
|
||||||
|
|
||||||
if (configChanged) {
|
if (configChanged) {
|
||||||
await recalculatePokedexMappings(event.locals.supabase, id, pokedex);
|
await recalculatePokedexMappings(event.locals.supabase, id, pokedex);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export const GET = async (event: RequestEvent) => {
|
|||||||
const repo = new CatchRecordRepository(event.locals.supabase, userId, pokedexId);
|
const repo = new CatchRecordRepository(event.locals.supabase, userId, pokedexId);
|
||||||
const catchData = await repo.findAll();
|
const catchData = await repo.findAll();
|
||||||
const sortedData = catchData.sort(
|
const sortedData = catchData.sort(
|
||||||
(a, b) => Number(a.pokedexEntryId) - Number(b.pokedexEntryId)
|
(a, b) => Number(a.pokemonId) - Number(b.pokemonId)
|
||||||
);
|
);
|
||||||
return json(sortedData);
|
return json(sortedData);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -99,17 +99,18 @@ export const POST = async (event: RequestEvent) => {
|
|||||||
}
|
}
|
||||||
const invalidIndex = body.findIndex((r) => {
|
const invalidIndex = body.findIndex((r) => {
|
||||||
if (!r || typeof r !== 'object') return true;
|
if (!r || typeof r !== 'object') return true;
|
||||||
const entryId = (r as Partial<CatchRecord>).pokedexEntryId;
|
const record = r as Partial<CatchRecord>;
|
||||||
return entryId === undefined || entryId === null || entryId === '';
|
const pokemonId = record.pokemonId;
|
||||||
|
return pokemonId === undefined || pokemonId === null || pokemonId === '';
|
||||||
});
|
});
|
||||||
if (invalidIndex !== -1) {
|
if (invalidIndex !== -1) {
|
||||||
return json(
|
return json(
|
||||||
{ error: `Record at index ${invalidIndex} is missing required field "pokedexEntryId"` },
|
{ error: `Record at index ${invalidIndex} is missing required field "pokemonId"` },
|
||||||
{ status: 400 }
|
{ status: 400 }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const records = body as Array<Partial<CatchRecord> & Pick<CatchRecord, 'pokedexEntryId'>>;
|
const records = body as Array<Partial<CatchRecord> & Pick<CatchRecord, 'pokemonId'>>;
|
||||||
|
|
||||||
const { session } = await event.locals.safeGetSession();
|
const { session } = await event.locals.safeGetSession();
|
||||||
if (session) {
|
if (session) {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import CombinedDataRepository from '$lib/repositories/CombinedDataRepository';
|
|||||||
import PokedexRepository from '$lib/repositories/PokedexRepository';
|
import PokedexRepository from '$lib/repositories/PokedexRepository';
|
||||||
import { getOptionalUserId } from '$lib/utils/auth';
|
import { getOptionalUserId } from '$lib/utils/auth';
|
||||||
import type { RequestEvent } from '@sveltejs/kit';
|
import type { RequestEvent } from '@sveltejs/kit';
|
||||||
|
import { resolveDexScopes } from '$lib/services/PokedexDexScopeService';
|
||||||
|
|
||||||
// GET: Get combined data (pokédex entries + catch records) for specific pokédex
|
// GET: Get combined data (pokédex entries + catch records) for specific pokédex
|
||||||
export const GET = async (event: RequestEvent) => {
|
export const GET = async (event: RequestEvent) => {
|
||||||
@@ -39,6 +40,7 @@ export const GET = async (event: RequestEvent) => {
|
|||||||
|
|
||||||
// Use pokédex's gameScope as default filter if no manual game filter is set
|
// Use pokédex's gameScope as default filter if no manual game filter is set
|
||||||
const effectiveGame = game || pokedex.gameScope || '';
|
const effectiveGame = game || pokedex.gameScope || '';
|
||||||
|
const dexScopes = await resolveDexScopes(event.locals.supabase, pokedex);
|
||||||
|
|
||||||
const repo = new CombinedDataRepository(event.locals.supabase, userId, pokedexId);
|
const repo = new CombinedDataRepository(event.locals.supabase, userId, pokedexId);
|
||||||
|
|
||||||
@@ -49,11 +51,12 @@ export const GET = async (event: RequestEvent) => {
|
|||||||
limit,
|
limit,
|
||||||
enableForms,
|
enableForms,
|
||||||
region,
|
region,
|
||||||
effectiveGame
|
effectiveGame,
|
||||||
|
dexScopes
|
||||||
);
|
);
|
||||||
|
|
||||||
// Get total count for pagination
|
// Get total count for pagination
|
||||||
const totalCount = await repo.countCombinedData(enableForms, region, effectiveGame);
|
const totalCount = await repo.countCombinedData(enableForms, region, effectiveGame, dexScopes);
|
||||||
const totalPages = Math.ceil(totalCount / limit);
|
const totalPages = Math.ceil(totalCount / limit);
|
||||||
|
|
||||||
return json({
|
return json({
|
||||||
|
|||||||
@@ -146,11 +146,12 @@
|
|||||||
|
|
||||||
<!-- Email Input -->
|
<!-- Email Input -->
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<label class="label">
|
<label class="label" for="forgot-password-email">
|
||||||
<span class="label-text font-medium">Email</span>
|
<span class="label-text font-medium">Email</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<input
|
<input
|
||||||
|
id="forgot-password-email"
|
||||||
type="email"
|
type="email"
|
||||||
placeholder="your@email.com"
|
placeholder="your@email.com"
|
||||||
class="input input-bordered w-full pl-10"
|
class="input input-bordered w-full pl-10"
|
||||||
|
|||||||
@@ -15,7 +15,8 @@
|
|||||||
isShinyDex: false,
|
isShinyDex: false,
|
||||||
isOriginDex: false,
|
isOriginDex: false,
|
||||||
isFormDex: false,
|
isFormDex: false,
|
||||||
gameScope: null
|
gameScope: null,
|
||||||
|
dexScopes: []
|
||||||
};
|
};
|
||||||
|
|
||||||
$: mode = editingPokedex ? ('edit' as const) : ('create' as const);
|
$: mode = editingPokedex ? ('edit' as const) : ('create' as const);
|
||||||
@@ -55,7 +56,8 @@
|
|||||||
isShinyDex: false,
|
isShinyDex: false,
|
||||||
isOriginDex: false,
|
isOriginDex: false,
|
||||||
isFormDex: false,
|
isFormDex: false,
|
||||||
gameScope: null
|
gameScope: null,
|
||||||
|
dexScopes: []
|
||||||
};
|
};
|
||||||
showModal = true;
|
showModal = true;
|
||||||
}
|
}
|
||||||
@@ -199,6 +201,11 @@
|
|||||||
</h3>
|
</h3>
|
||||||
<PokedexForm bind:pokedex={formData} {mode} onSubmit={handleSubmit} onCancel={closeModal} />
|
<PokedexForm bind:pokedex={formData} {mode} onSubmit={handleSubmit} onCancel={closeModal} />
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-backdrop" on:click={closeModal}></div>
|
<button
|
||||||
|
type="button"
|
||||||
|
class="modal-backdrop"
|
||||||
|
aria-label="Close modal"
|
||||||
|
on:click={closeModal}
|
||||||
|
></button>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@
|
|||||||
|
|
||||||
function applyOptimisticCatchRecordUpdate(next: CatchRecord) {
|
function applyOptimisticCatchRecordUpdate(next: CatchRecord) {
|
||||||
if (!combinedData) return;
|
if (!combinedData) return;
|
||||||
const idx = combinedData.findIndex((cd) => cd.pokedexEntry._id === next.pokedexEntryId);
|
const idx = combinedData.findIndex((cd) => cd.pokedexEntry._id === next.pokemonId);
|
||||||
if (idx === -1) return;
|
if (idx === -1) return;
|
||||||
// Replace the catchRecord entry with the updated version.
|
// Replace the catchRecord entry with the updated version.
|
||||||
const current = combinedData[idx];
|
const current = combinedData[idx];
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
};
|
};
|
||||||
combinedData = [...combinedData.slice(0, idx), patched, ...combinedData.slice(idx + 1)];
|
combinedData = [...combinedData.slice(0, idx), patched, ...combinedData.slice(idx + 1)];
|
||||||
|
|
||||||
if (selectedPokemon?.pokedexEntry._id === next.pokedexEntryId) {
|
if (selectedPokemon?.pokedexEntry._id === next.pokemonId) {
|
||||||
selectedPokemon = patched;
|
selectedPokemon = patched;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -207,7 +207,7 @@
|
|||||||
const baseRecord: CatchRecord = catchRecord ?? {
|
const baseRecord: CatchRecord = catchRecord ?? {
|
||||||
_id: '',
|
_id: '',
|
||||||
userId: localUser?.id || '',
|
userId: localUser?.id || '',
|
||||||
pokedexEntryId: pokedexEntry._id,
|
pokemonId: pokedexEntry._id,
|
||||||
pokedexId: pokedexId,
|
pokedexId: pokedexId,
|
||||||
haveToEvolve: false,
|
haveToEvolve: false,
|
||||||
caught: false,
|
caught: false,
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
creatingRecords = true;
|
creatingRecords = true;
|
||||||
const newCatchRecords = pokedexEntries.map((entry: PokedexEntry) => ({
|
const newCatchRecords = pokedexEntries.map((entry: PokedexEntry) => ({
|
||||||
userId: localUser?.id,
|
userId: localUser?.id,
|
||||||
pokedexEntryId: entry._id,
|
pokemonId: entry._id,
|
||||||
pokedexId: pokedexId,
|
pokedexId: pokedexId,
|
||||||
haveToEvolve: false,
|
haveToEvolve: false,
|
||||||
caught: false,
|
caught: false,
|
||||||
@@ -467,6 +467,11 @@
|
|||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
<span class="font-semibold">{pokedex.gameScope}</span>
|
<span class="font-semibold">{pokedex.gameScope}</span>
|
||||||
|
{#if pokedex.dexScopes?.length}
|
||||||
|
<span class="text-xs text-base-content/60">
|
||||||
|
({pokedex.dexScopes.length} dex{pokedex.dexScopes.length === 1 ? '' : 'es'})
|
||||||
|
</span>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="divider divider-horizontal mx-0"></div>
|
<div class="divider divider-horizontal mx-0"></div>
|
||||||
|
|||||||
@@ -174,11 +174,12 @@
|
|||||||
|
|
||||||
<!-- New Password Input -->
|
<!-- New Password Input -->
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<label class="label">
|
<label class="label" for="reset-password-new">
|
||||||
<span class="label-text font-medium">New Password</span>
|
<span class="label-text font-medium">New Password</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<input
|
<input
|
||||||
|
id="reset-password-new"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="••••••••"
|
placeholder="••••••••"
|
||||||
class="input input-bordered w-full pl-10"
|
class="input input-bordered w-full pl-10"
|
||||||
@@ -203,11 +204,12 @@
|
|||||||
|
|
||||||
<!-- Confirm Password Input -->
|
<!-- Confirm Password Input -->
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<label class="label">
|
<label class="label" for="reset-password-confirm">
|
||||||
<span class="label-text font-medium">Confirm Password</span>
|
<span class="label-text font-medium">Confirm Password</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<input
|
<input
|
||||||
|
id="reset-password-confirm"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="••••••••"
|
placeholder="••••••••"
|
||||||
class="input input-bordered w-full pl-10"
|
class="input input-bordered w-full pl-10"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
@@ -1,112 +0,0 @@
|
|||||||
CREATE TABLE pokedex_entries (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
"pokedexNumber" INTEGER NOT NULL,
|
|
||||||
pokemon TEXT NOT NULL,
|
|
||||||
form TEXT,
|
|
||||||
"canGigantamax" BOOLEAN DEFAULT FALSE,
|
|
||||||
"regionToCatchIn" TEXT,
|
|
||||||
"gamesToCatchIn" TEXT[],
|
|
||||||
"regionToEvolveIn" TEXT,
|
|
||||||
"evolutionInformation" TEXT,
|
|
||||||
"catchInformation" TEXT[],
|
|
||||||
|
|
||||||
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
||||||
"updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Add unique constraint to prevent duplicate pokemon forms
|
|
||||||
ALTER TABLE pokedex_entries ADD CONSTRAINT unique_pokemon_form
|
|
||||||
UNIQUE("pokedexNumber", form);
|
|
||||||
|
|
||||||
CREATE TABLE catch_records (
|
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
||||||
"userId" UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
||||||
"pokedexEntryId" BIGINT NOT NULL REFERENCES pokedex_entries(id) ON DELETE CASCADE,
|
|
||||||
|
|
||||||
-- Catch status fields
|
|
||||||
"haveToEvolve" BOOLEAN DEFAULT FALSE,
|
|
||||||
caught BOOLEAN DEFAULT FALSE,
|
|
||||||
"inHome" BOOLEAN DEFAULT FALSE,
|
|
||||||
"hasGigantamaxed" BOOLEAN DEFAULT FALSE,
|
|
||||||
"personalNotes" TEXT,
|
|
||||||
|
|
||||||
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
||||||
"updatedAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
||||||
|
|
||||||
-- Ensure one record per user per pokemon entry
|
|
||||||
UNIQUE("userId", "pokedexEntryId")
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE region_game_mappings (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
region TEXT NOT NULL,
|
|
||||||
game TEXT NOT NULL,
|
|
||||||
UNIQUE(region, game)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE metadata (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
key TEXT UNIQUE NOT NULL,
|
|
||||||
value TEXT,
|
|
||||||
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
||||||
"updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Create indexes for better performance
|
|
||||||
CREATE INDEX idx_pokedex_entries_pokedex_number ON pokedex_entries("pokedexNumber");
|
|
||||||
CREATE INDEX idx_pokedex_entries_pokemon ON pokedex_entries(pokemon);
|
|
||||||
|
|
||||||
CREATE INDEX idx_catch_records_user_id ON catch_records("userId");
|
|
||||||
CREATE INDEX idx_catch_records_pokedex_entry_id ON catch_records("pokedexEntryId");
|
|
||||||
CREATE INDEX idx_catch_records_caught ON catch_records(caught);
|
|
||||||
CREATE INDEX idx_catch_records_in_home ON catch_records("inHome");
|
|
||||||
CREATE INDEX idx_catch_records_user_caught ON catch_records("userId", caught);
|
|
||||||
|
|
||||||
-- Function to automatically update updated_at timestamp
|
|
||||||
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
||||||
RETURNS TRIGGER AS $$
|
|
||||||
BEGIN
|
|
||||||
NEW."updatedAt" = NOW();
|
|
||||||
RETURN NEW;
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
-- Create triggers for updated_at
|
|
||||||
CREATE TRIGGER update_pokedex_entries_updated_at
|
|
||||||
BEFORE UPDATE ON pokedex_entries
|
|
||||||
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
||||||
|
|
||||||
CREATE TRIGGER update_catch_records_updated_at
|
|
||||||
BEFORE UPDATE ON catch_records
|
|
||||||
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
||||||
|
|
||||||
-- Enable RLS on all tables
|
|
||||||
ALTER TABLE pokedex_entries ENABLE ROW LEVEL SECURITY;
|
|
||||||
ALTER TABLE catch_records ENABLE ROW LEVEL SECURITY;
|
|
||||||
ALTER TABLE region_game_mappings ENABLE ROW LEVEL SECURITY;
|
|
||||||
ALTER TABLE metadata ENABLE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
-- RLS policies for pokedex_entries (public read)
|
|
||||||
CREATE POLICY "Anyone can view pokemon entries" ON pokedex_entries
|
|
||||||
FOR SELECT USING (true);
|
|
||||||
|
|
||||||
-- RLS policies for catch_records (user-specific)
|
|
||||||
CREATE POLICY "Users can view own catch records" ON catch_records
|
|
||||||
FOR SELECT USING (auth.uid() = "userId");
|
|
||||||
|
|
||||||
CREATE POLICY "Users can insert own catch records" ON catch_records
|
|
||||||
FOR INSERT WITH CHECK (auth.uid() = "userId");
|
|
||||||
|
|
||||||
CREATE POLICY "Users can update own catch records" ON catch_records
|
|
||||||
FOR UPDATE USING (auth.uid() = "userId");
|
|
||||||
|
|
||||||
CREATE POLICY "Users can delete own catch records" ON catch_records
|
|
||||||
FOR DELETE USING (auth.uid() = "userId");
|
|
||||||
|
|
||||||
-- RLS policies for region_game_mappings (public read)
|
|
||||||
CREATE POLICY "Anyone can view region game mappings" ON region_game_mappings
|
|
||||||
FOR SELECT USING (true);
|
|
||||||
|
|
||||||
-- RLS policies for metadata (public read)
|
|
||||||
CREATE POLICY "Anyone can view metadata" ON metadata
|
|
||||||
FOR SELECT USING (true);
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
-- Create pokedexes table
|
|
||||||
CREATE TABLE pokedexes (
|
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
||||||
"userId" UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
||||||
name TEXT NOT NULL,
|
|
||||||
description TEXT,
|
|
||||||
|
|
||||||
-- Type flags (combinable)
|
|
||||||
"isLivingDex" BOOLEAN DEFAULT FALSE,
|
|
||||||
"isShinyDex" BOOLEAN DEFAULT FALSE,
|
|
||||||
"isOriginDex" BOOLEAN DEFAULT FALSE,
|
|
||||||
"isFormDex" BOOLEAN DEFAULT FALSE,
|
|
||||||
|
|
||||||
-- Scope (NULL = all games, or specific game)
|
|
||||||
"gameScope" TEXT,
|
|
||||||
|
|
||||||
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
||||||
"updatedAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
||||||
|
|
||||||
-- User can't have duplicate pokédex names
|
|
||||||
UNIQUE("userId", name)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Create index for performance
|
|
||||||
CREATE INDEX idx_pokedexes_user_id ON pokedexes("userId");
|
|
||||||
|
|
||||||
-- Trigger to automatically update updated_at timestamp
|
|
||||||
CREATE TRIGGER update_pokedexes_updated_at
|
|
||||||
BEFORE UPDATE ON pokedexes
|
|
||||||
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
||||||
|
|
||||||
-- Enable RLS
|
|
||||||
ALTER TABLE pokedexes ENABLE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
-- RLS POLICIES - CRITICAL: Users can ONLY access their own pokédexes
|
|
||||||
|
|
||||||
-- Users can ONLY view their own pokédexes
|
|
||||||
CREATE POLICY "Users can view own pokedexes" ON pokedexes
|
|
||||||
FOR SELECT USING (auth.uid() = "userId");
|
|
||||||
|
|
||||||
-- Users can ONLY create pokédexes for themselves
|
|
||||||
CREATE POLICY "Users can create own pokedexes" ON pokedexes
|
|
||||||
FOR INSERT WITH CHECK (auth.uid() = "userId");
|
|
||||||
|
|
||||||
-- Users can ONLY update their own pokédexes
|
|
||||||
CREATE POLICY "Users can update own pokedexes" ON pokedexes
|
|
||||||
FOR UPDATE USING (auth.uid() = "userId");
|
|
||||||
|
|
||||||
-- Users can ONLY delete their own pokédexes
|
|
||||||
CREATE POLICY "Users can delete own pokedexes" ON pokedexes
|
|
||||||
FOR DELETE USING (auth.uid() = "userId");
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
-- Truncate existing catch records (no real users, as confirmed)
|
|
||||||
TRUNCATE TABLE catch_records;
|
|
||||||
|
|
||||||
-- Add pokedexId column
|
|
||||||
ALTER TABLE catch_records
|
|
||||||
ADD COLUMN "pokedexId" UUID REFERENCES pokedexes(id) ON DELETE CASCADE;
|
|
||||||
|
|
||||||
-- Make pokedexId NOT NULL
|
|
||||||
ALTER TABLE catch_records
|
|
||||||
ALTER COLUMN "pokedexId" SET NOT NULL;
|
|
||||||
|
|
||||||
-- Drop old unique constraint (userId, pokedexEntryId)
|
|
||||||
ALTER TABLE catch_records
|
|
||||||
DROP CONSTRAINT IF EXISTS catch_records_userId_pokedexEntryId_key;
|
|
||||||
|
|
||||||
-- Add new unique constraint (userId, pokedexEntryId, pokedexId)
|
|
||||||
ALTER TABLE catch_records
|
|
||||||
ADD CONSTRAINT catch_records_user_pokemon_pokedex_unique
|
|
||||||
UNIQUE("userId", "pokedexEntryId", "pokedexId");
|
|
||||||
|
|
||||||
-- Add index for performance
|
|
||||||
CREATE INDEX idx_catch_records_pokedex_id ON catch_records("pokedexId");
|
|
||||||
|
|
||||||
-- RLS POLICIES - CRITICAL: Users can ONLY access catch records for their own pokédexes
|
|
||||||
|
|
||||||
-- Drop existing RLS policies if they exist
|
|
||||||
DROP POLICY IF EXISTS "Users can view own catch records" ON catch_records;
|
|
||||||
DROP POLICY IF EXISTS "Users can insert own catch records" ON catch_records;
|
|
||||||
DROP POLICY IF EXISTS "Users can update own catch records" ON catch_records;
|
|
||||||
DROP POLICY IF EXISTS "Users can delete own catch records" ON catch_records;
|
|
||||||
|
|
||||||
-- Users can ONLY view catch records for their own pokédexes
|
|
||||||
CREATE POLICY "Users can view own catch records" ON catch_records
|
|
||||||
FOR SELECT USING (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM pokedexes
|
|
||||||
WHERE pokedexes.id = catch_records."pokedexId"
|
|
||||||
AND pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Users can ONLY insert catch records for their own pokédexes
|
|
||||||
CREATE POLICY "Users can insert own catch records" ON catch_records
|
|
||||||
FOR INSERT WITH CHECK (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM pokedexes
|
|
||||||
WHERE pokedexes.id = catch_records."pokedexId"
|
|
||||||
AND pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Users can ONLY update catch records for their own pokédexes
|
|
||||||
CREATE POLICY "Users can update own catch records" ON catch_records
|
|
||||||
FOR UPDATE USING (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM pokedexes
|
|
||||||
WHERE pokedexes.id = catch_records."pokedexId"
|
|
||||||
AND pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Users can ONLY delete catch records for their own pokédexes
|
|
||||||
CREATE POLICY "Users can delete own catch records" ON catch_records
|
|
||||||
FOR DELETE USING (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM pokedexes
|
|
||||||
WHERE pokedexes.id = catch_records."pokedexId"
|
|
||||||
AND pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
-- Create regional_dex_numbers table for generic regional dex number storage
|
|
||||||
-- This table replaces region-specific columns (kanto_dex_number, johto_dex_number, etc.)
|
|
||||||
-- and allows adding new regions without schema changes
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS regional_dex_numbers (
|
|
||||||
id SERIAL PRIMARY KEY,
|
|
||||||
pokedex_entry_id INT NOT NULL REFERENCES pokedex_entries(id) ON DELETE CASCADE,
|
|
||||||
region TEXT NOT NULL,
|
|
||||||
dex_number INT NOT NULL,
|
|
||||||
UNIQUE(pokedex_entry_id, region)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Create indexes for better query performance
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_regional_dex_numbers_region ON regional_dex_numbers(region, dex_number);
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_regional_dex_numbers_entry ON regional_dex_numbers(pokedex_entry_id);
|
|
||||||
|
|
||||||
-- RLS policies (read-only reference data, same pattern as pokedex_entries)
|
|
||||||
ALTER TABLE regional_dex_numbers ENABLE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
CREATE POLICY "Allow public read access" ON regional_dex_numbers
|
|
||||||
FOR SELECT USING (true);
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
-- Create games table to store game metadata
|
|
||||||
CREATE TABLE IF NOT EXISTS games (
|
|
||||||
id TEXT PRIMARY KEY,
|
|
||||||
"displayName" TEXT NOT NULL,
|
|
||||||
region TEXT NOT NULL,
|
|
||||||
generation INTEGER NOT NULL,
|
|
||||||
"releaseYear" INTEGER NOT NULL,
|
|
||||||
"createdAt" TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
||||||
"updatedAt" TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Enable RLS
|
|
||||||
ALTER TABLE games ENABLE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
-- Allow anyone to read games (public reference data)
|
|
||||||
CREATE POLICY "Games are publicly readable"
|
|
||||||
ON games
|
|
||||||
FOR SELECT
|
|
||||||
TO public
|
|
||||||
USING (true);
|
|
||||||
|
|
||||||
-- Insert games data from games.csv
|
|
||||||
INSERT INTO games (id, "displayName", region, generation, "releaseYear") VALUES
|
|
||||||
('red', 'Red', 'Kanto', 1, 1996),
|
|
||||||
('blue', 'Blue', 'Kanto', 1, 1996),
|
|
||||||
('yellow', 'Yellow', 'Kanto', 1, 1998),
|
|
||||||
('lg--pikachu', 'LG: Pikachu', 'Kanto', 7, 2018),
|
|
||||||
('lg--eevee', 'LG: Eevee', 'Kanto', 7, 2018),
|
|
||||||
('gold', 'Gold', 'Johto', 2, 1999),
|
|
||||||
('silver', 'Silver', 'Johto', 2, 1999),
|
|
||||||
('crystal', 'Crystal', 'Johto', 2, 2000),
|
|
||||||
('heartgold', 'HeartGold', 'Johto', 4, 2009),
|
|
||||||
('soulsilver', 'SoulSilver', 'Johto', 4, 2009),
|
|
||||||
('legends-arceus', 'Legends: Arceus', 'Hisui', 8, 2022)
|
|
||||||
ON CONFLICT (id) DO UPDATE SET
|
|
||||||
"displayName" = EXCLUDED."displayName",
|
|
||||||
region = EXCLUDED.region,
|
|
||||||
generation = EXCLUDED.generation,
|
|
||||||
"releaseYear" = EXCLUDED."releaseYear",
|
|
||||||
"updatedAt" = NOW();
|
|
||||||
@@ -1,360 +0,0 @@
|
|||||||
-- Seed Kanto region Pokémon (Gen 1)
|
|
||||||
-- Auto-generated from CSV files
|
|
||||||
|
|
||||||
-- Insert Kanto region-game mappings
|
|
||||||
INSERT INTO region_game_mappings (region, game) VALUES
|
|
||||||
('Kanto', 'Red'),
|
|
||||||
('Kanto', 'Blue'),
|
|
||||||
('Kanto', 'Yellow'),
|
|
||||||
('Kanto', 'LG: Pikachu'),
|
|
||||||
('Kanto', 'LG: Eevee')
|
|
||||||
ON CONFLICT (region, game) DO NOTHING;
|
|
||||||
|
|
||||||
-- Insert Kanto Pokémon entries
|
|
||||||
INSERT INTO pokedex_entries (
|
|
||||||
"pokedexNumber",
|
|
||||||
pokemon,
|
|
||||||
form,
|
|
||||||
"canGigantamax",
|
|
||||||
"regionToCatchIn",
|
|
||||||
"gamesToCatchIn"
|
|
||||||
) VALUES
|
|
||||||
(1, 'Bulbasaur', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(2, 'Ivysaur', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(3, 'Venusaur', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(3, 'Venusaur', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(4, 'Charmander', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(5, 'Charmeleon', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(6, 'Charizard', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(7, 'Squirtle', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(8, 'Wartortle', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(9, 'Blastoise', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(10, 'Caterpie', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(11, 'Metapod', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(12, 'Butterfree', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(12, 'Butterfree', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(13, 'Weedle', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(14, 'Kakuna', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(15, 'Beedrill', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(16, 'Pidgey', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(17, 'Pidgeotto', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(18, 'Pidgeot', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(19, 'Rattata', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(19, 'Rattata', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(20, 'Raticate', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(20, 'Raticate', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(21, 'Spearow', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(22, 'Fearow', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(23, 'Ekans', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(24, 'Arbok', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(25, 'Pikachu', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(25, 'Pikachu', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(26, 'Raichu', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(26, 'Raichu', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(27, 'Sandshrew', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(28, 'Sandslash', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(29, 'Nidoran♀', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(30, 'Nidorina', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(31, 'Nidoqueen', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(32, 'Nidoran♂', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(33, 'Nidorino', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(34, 'Nidoking', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(35, 'Clefairy', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(36, 'Clefable', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(37, 'Vulpix', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(38, 'Ninetales', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(39, 'Jigglypuff', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(40, 'Wigglytuff', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(41, 'Zubat', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(41, 'Zubat', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(42, 'Golbat', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(42, 'Golbat', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(43, 'Oddish', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(44, 'Gloom', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(44, 'Gloom', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(45, 'Vileplume', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(45, 'Vileplume', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(46, 'Paras', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(47, 'Parasect', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(48, 'Venonat', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(49, 'Venomoth', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(50, 'Diglett', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(51, 'Dugtrio', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(52, 'Meowth', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(53, 'Persian', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(54, 'Psyduck', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(55, 'Golduck', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(56, 'Mankey', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(57, 'Primeape', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(58, 'Growlithe', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(59, 'Arcanine', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(60, 'Poliwag', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(61, 'Poliwhirl', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(62, 'Poliwrath', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(63, 'Abra', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(64, 'Kadabra', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(64, 'Kadabra', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(65, 'Alakazam', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(65, 'Alakazam', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(66, 'Machop', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(67, 'Machoke', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(68, 'Machamp', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(69, 'Bellsprout', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(70, 'Weepinbell', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(71, 'Victreebel', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(72, 'Tentacool', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(73, 'Tentacruel', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(74, 'Geodude', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(75, 'Graveler', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(76, 'Golem', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(77, 'Ponyta', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(78, 'Rapidash', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(79, 'Slowpoke', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(80, 'Slowbro', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(81, 'Magnemite', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(82, 'Magneton', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(83, 'Farfetch’d', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(84, 'Doduo', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(84, 'Doduo', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(85, 'Dodrio', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(85, 'Dodrio', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(86, 'Seel', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(87, 'Dewgong', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(88, 'Grimer', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(89, 'Muk', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(90, 'Shellder', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(91, 'Cloyster', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(92, 'Gastly', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(93, 'Haunter', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(94, 'Gengar', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(95, 'Onix', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(96, 'Drowzee', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(97, 'Hypno', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(97, 'Hypno', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(98, 'Krabby', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(99, 'Kingler', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(100, 'Voltorb', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(101, 'Electrode', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(102, 'Exeggcute', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(103, 'Exeggutor', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(104, 'Cubone', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(105, 'Marowak', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(106, 'Hitmonlee', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(107, 'Hitmonchan', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(108, 'Lickitung', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(109, 'Koffing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(110, 'Weezing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(111, 'Rhyhorn', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(111, 'Rhyhorn', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(112, 'Rhydon', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(112, 'Rhydon', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(113, 'Chansey', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(114, 'Tangela', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(115, 'Kangaskhan', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(116, 'Horsea', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(117, 'Seadra', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(118, 'Goldeen', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(118, 'Goldeen', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(119, 'Seaking', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(119, 'Seaking', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(120, 'Staryu', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(121, 'Starmie', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(122, 'Mr. Mime', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(123, 'Scyther', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(123, 'Scyther', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(124, 'Jynx', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(125, 'Electabuzz', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(126, 'Magmar', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(127, 'Pinsir', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(128, 'Tauros', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(129, 'Magikarp', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(129, 'Magikarp', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(130, 'Gyarados', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(130, 'Gyarados', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(131, 'Lapras', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(132, 'Ditto', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(133, 'Eevee', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(133, 'Eevee', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(134, 'Vaporeon', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(135, 'Jolteon', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(136, 'Flareon', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(137, 'Porygon', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(138, 'Omanyte', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(139, 'Omastar', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(140, 'Kabuto', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(141, 'Kabutops', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(142, 'Aerodactyl', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(143, 'Snorlax', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(144, 'Articuno', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(145, 'Zapdos', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(146, 'Moltres', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(147, 'Dratini', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(148, 'Dragonair', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(149, 'Dragonite', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(150, 'Mewtwo', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
|
||||||
(151, 'Mew', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee'])
|
|
||||||
ON CONFLICT ON CONSTRAINT unique_pokemon_form DO NOTHING;
|
|
||||||
|
|
||||||
-- Insert Kanto regional dex numbers
|
|
||||||
INSERT INTO regional_dex_numbers (
|
|
||||||
pokedex_entry_id,
|
|
||||||
region,
|
|
||||||
dex_number
|
|
||||||
) VALUES
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 1 AND form IS NULL), 'Kanto', 1),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 2 AND form IS NULL), 'Kanto', 2),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 3 AND form IS NULL), 'Kanto', 3),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 4 AND form IS NULL), 'Kanto', 4),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 5 AND form IS NULL), 'Kanto', 5),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 6 AND form IS NULL), 'Kanto', 6),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 7 AND form IS NULL), 'Kanto', 7),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 8 AND form IS NULL), 'Kanto', 8),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 9 AND form IS NULL), 'Kanto', 9),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 10 AND form IS NULL), 'Kanto', 10),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 11 AND form IS NULL), 'Kanto', 11),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 12 AND form IS NULL), 'Kanto', 12),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 13 AND form IS NULL), 'Kanto', 13),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 14 AND form IS NULL), 'Kanto', 14),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 15 AND form IS NULL), 'Kanto', 15),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 16 AND form IS NULL), 'Kanto', 16),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 17 AND form IS NULL), 'Kanto', 17),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 18 AND form IS NULL), 'Kanto', 18),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 19 AND form IS NULL), 'Kanto', 19),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 20 AND form IS NULL), 'Kanto', 20),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 21 AND form IS NULL), 'Kanto', 21),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 22 AND form IS NULL), 'Kanto', 22),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 23 AND form IS NULL), 'Kanto', 23),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 24 AND form IS NULL), 'Kanto', 24),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 25 AND form IS NULL), 'Kanto', 25),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 26 AND form IS NULL), 'Kanto', 26),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 27 AND form IS NULL), 'Kanto', 27),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 28 AND form IS NULL), 'Kanto', 28),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 29 AND form IS NULL), 'Kanto', 29),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 30 AND form IS NULL), 'Kanto', 30),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 31 AND form IS NULL), 'Kanto', 31),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 32 AND form IS NULL), 'Kanto', 32),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 33 AND form IS NULL), 'Kanto', 33),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 34 AND form IS NULL), 'Kanto', 34),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 35 AND form IS NULL), 'Kanto', 35),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 36 AND form IS NULL), 'Kanto', 36),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 37 AND form IS NULL), 'Kanto', 37),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 38 AND form IS NULL), 'Kanto', 38),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 39 AND form IS NULL), 'Kanto', 39),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 40 AND form IS NULL), 'Kanto', 40),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 41 AND form IS NULL), 'Kanto', 41),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 42 AND form IS NULL), 'Kanto', 42),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 43 AND form IS NULL), 'Kanto', 43),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 44 AND form IS NULL), 'Kanto', 44),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 45 AND form IS NULL), 'Kanto', 45),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 46 AND form IS NULL), 'Kanto', 46),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 47 AND form IS NULL), 'Kanto', 47),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 48 AND form IS NULL), 'Kanto', 48),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 49 AND form IS NULL), 'Kanto', 49),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 50 AND form IS NULL), 'Kanto', 50),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 51 AND form IS NULL), 'Kanto', 51),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 52 AND form IS NULL), 'Kanto', 52),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 53 AND form IS NULL), 'Kanto', 53),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 54 AND form IS NULL), 'Kanto', 54),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 55 AND form IS NULL), 'Kanto', 55),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 56 AND form IS NULL), 'Kanto', 56),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 57 AND form IS NULL), 'Kanto', 57),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 58 AND form IS NULL), 'Kanto', 58),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 59 AND form IS NULL), 'Kanto', 59),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 60 AND form IS NULL), 'Kanto', 60),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 61 AND form IS NULL), 'Kanto', 61),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 62 AND form IS NULL), 'Kanto', 62),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 63 AND form IS NULL), 'Kanto', 63),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 64 AND form IS NULL), 'Kanto', 64),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 65 AND form IS NULL), 'Kanto', 65),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 66 AND form IS NULL), 'Kanto', 66),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 67 AND form IS NULL), 'Kanto', 67),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 68 AND form IS NULL), 'Kanto', 68),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 69 AND form IS NULL), 'Kanto', 69),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 70 AND form IS NULL), 'Kanto', 70),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 71 AND form IS NULL), 'Kanto', 71),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 72 AND form IS NULL), 'Kanto', 72),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 73 AND form IS NULL), 'Kanto', 73),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 74 AND form IS NULL), 'Kanto', 74),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 75 AND form IS NULL), 'Kanto', 75),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 76 AND form IS NULL), 'Kanto', 76),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 77 AND form IS NULL), 'Kanto', 77),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 78 AND form IS NULL), 'Kanto', 78),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 79 AND form IS NULL), 'Kanto', 79),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 80 AND form IS NULL), 'Kanto', 80),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 81 AND form IS NULL), 'Kanto', 81),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 82 AND form IS NULL), 'Kanto', 82),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 83 AND form IS NULL), 'Kanto', 83),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 84 AND form IS NULL), 'Kanto', 84),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 85 AND form IS NULL), 'Kanto', 85),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 86 AND form IS NULL), 'Kanto', 86),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 87 AND form IS NULL), 'Kanto', 87),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 88 AND form IS NULL), 'Kanto', 88),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 89 AND form IS NULL), 'Kanto', 89),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 90 AND form IS NULL), 'Kanto', 90),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 91 AND form IS NULL), 'Kanto', 91),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 92 AND form IS NULL), 'Kanto', 92),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 93 AND form IS NULL), 'Kanto', 93),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 94 AND form IS NULL), 'Kanto', 94),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 95 AND form IS NULL), 'Kanto', 95),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 96 AND form IS NULL), 'Kanto', 96),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 97 AND form IS NULL), 'Kanto', 97),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 98 AND form IS NULL), 'Kanto', 98),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 99 AND form IS NULL), 'Kanto', 99),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 100 AND form IS NULL), 'Kanto', 100),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 101 AND form IS NULL), 'Kanto', 101),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 102 AND form IS NULL), 'Kanto', 102),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 103 AND form IS NULL), 'Kanto', 103),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 104 AND form IS NULL), 'Kanto', 104),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 105 AND form IS NULL), 'Kanto', 105),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 106 AND form IS NULL), 'Kanto', 106),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 107 AND form IS NULL), 'Kanto', 107),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 108 AND form IS NULL), 'Kanto', 108),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 109 AND form IS NULL), 'Kanto', 109),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 110 AND form IS NULL), 'Kanto', 110),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 111 AND form IS NULL), 'Kanto', 111),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 112 AND form IS NULL), 'Kanto', 112),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 113 AND form IS NULL), 'Kanto', 113),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 114 AND form IS NULL), 'Kanto', 114),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 115 AND form IS NULL), 'Kanto', 115),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 116 AND form IS NULL), 'Kanto', 116),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 117 AND form IS NULL), 'Kanto', 117),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 118 AND form IS NULL), 'Kanto', 118),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 119 AND form IS NULL), 'Kanto', 119),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 120 AND form IS NULL), 'Kanto', 120),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 121 AND form IS NULL), 'Kanto', 121),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 122 AND form IS NULL), 'Kanto', 122),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 123 AND form IS NULL), 'Kanto', 123),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 124 AND form IS NULL), 'Kanto', 124),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 125 AND form IS NULL), 'Kanto', 125),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 126 AND form IS NULL), 'Kanto', 126),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 127 AND form IS NULL), 'Kanto', 127),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 128 AND form IS NULL), 'Kanto', 128),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 129 AND form IS NULL), 'Kanto', 129),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 130 AND form IS NULL), 'Kanto', 130),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 131 AND form IS NULL), 'Kanto', 131),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 132 AND form IS NULL), 'Kanto', 132),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 133 AND form IS NULL), 'Kanto', 133),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 134 AND form IS NULL), 'Kanto', 134),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 135 AND form IS NULL), 'Kanto', 135),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 136 AND form IS NULL), 'Kanto', 136),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 137 AND form IS NULL), 'Kanto', 137),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 138 AND form IS NULL), 'Kanto', 138),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 139 AND form IS NULL), 'Kanto', 139),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 140 AND form IS NULL), 'Kanto', 140),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 141 AND form IS NULL), 'Kanto', 141),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 142 AND form IS NULL), 'Kanto', 142),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 143 AND form IS NULL), 'Kanto', 143),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 144 AND form IS NULL), 'Kanto', 144),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 145 AND form IS NULL), 'Kanto', 145),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 146 AND form IS NULL), 'Kanto', 146),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 147 AND form IS NULL), 'Kanto', 147),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 148 AND form IS NULL), 'Kanto', 148),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 149 AND form IS NULL), 'Kanto', 149),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 150 AND form IS NULL), 'Kanto', 150),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 151 AND form IS NULL), 'Kanto', 151);
|
|
||||||
|
|
||||||
-- Add metadata
|
|
||||||
INSERT INTO metadata (key, value) VALUES
|
|
||||||
('kanto_seeded', 'true'),
|
|
||||||
('kanto_seed_date', NOW()::TEXT),
|
|
||||||
('kanto_pokemon_count', '151');
|
|
||||||
@@ -1,284 +0,0 @@
|
|||||||
-- Seed Johto region Pokémon (Gen 2)
|
|
||||||
-- Auto-generated from CSV files
|
|
||||||
|
|
||||||
-- Insert Johto region-game mappings
|
|
||||||
INSERT INTO region_game_mappings (region, game) VALUES
|
|
||||||
('Johto', 'Gold'),
|
|
||||||
('Johto', 'Silver'),
|
|
||||||
('Johto', 'Crystal'),
|
|
||||||
('Johto', 'HeartGold'),
|
|
||||||
('Johto', 'SoulSilver')
|
|
||||||
ON CONFLICT (region, game) DO NOTHING;
|
|
||||||
|
|
||||||
-- Insert Johto Pokémon entries
|
|
||||||
INSERT INTO pokedex_entries (
|
|
||||||
"pokedexNumber",
|
|
||||||
pokemon,
|
|
||||||
form,
|
|
||||||
"canGigantamax",
|
|
||||||
"regionToCatchIn",
|
|
||||||
"gamesToCatchIn"
|
|
||||||
) VALUES
|
|
||||||
(152, 'Chikorita', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(153, 'Bayleef', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(154, 'Meganium', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(154, 'Meganium', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(155, 'Cyndaquil', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(156, 'Quilava', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(157, 'Typhlosion', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(158, 'Totodile', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(159, 'Croconaw', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(160, 'Feraligatr', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(161, 'Sentret', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(162, 'Furret', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(163, 'Hoothoot', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(164, 'Noctowl', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(165, 'Ledyba', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(165, 'Ledyba', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(166, 'Ledian', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(166, 'Ledian', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(167, 'Spinarak', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(168, 'Ariados', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(169, 'Crobat', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(170, 'Chinchou', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(171, 'Lanturn', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(172, 'Pichu', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(173, 'Cleffa', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(174, 'Igglybuff', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(175, 'Togepi', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(176, 'Togetic', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(177, 'Natu', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(178, 'Xatu', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(178, 'Xatu', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(179, 'Mareep', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(180, 'Flaaffy', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(181, 'Ampharos', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(182, 'Bellossom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(183, 'Marill', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(184, 'Azumarill', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(185, 'Sudowoodo', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(185, 'Sudowoodo', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(186, 'Politoed', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(186, 'Politoed', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(187, 'Hoppip', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(188, 'Skiploom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(189, 'Jumpluff', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(190, 'Aipom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(190, 'Aipom', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(191, 'Sunkern', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(192, 'Sunflora', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(193, 'Yanma', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(194, 'Wooper', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(194, 'Wooper', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(195, 'Quagsire', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(195, 'Quagsire', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(196, 'Espeon', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(197, 'Umbreon', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(198, 'Murkrow', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(198, 'Murkrow', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(199, 'Slowking', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(200, 'Misdreavus', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'A', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'B', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'C', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'D', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'E', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'F', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'G', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'H', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'I', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'J', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'K', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'L', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'M', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'N', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'O', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'P', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'Q', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'R', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'S', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'T', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'U', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'V', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'W', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'X', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'Y', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', 'Z', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', '!', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(201, 'Unown', '?', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(202, 'Wobbuffet', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(202, 'Wobbuffet', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(203, 'Girafarig', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(203, 'Girafarig', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(204, 'Pineco', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(205, 'Forretress', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(206, 'Dunsparce', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(207, 'Gligar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(207, 'Gligar', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(208, 'Steelix', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(208, 'Steelix', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(209, 'Snubbull', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(210, 'Granbull', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(211, 'Qwilfish', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(212, 'Scizor', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(212, 'Scizor', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(213, 'Shuckle', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(214, 'Heracross', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(214, 'Heracross', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(215, 'Sneasel', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(215, 'Sneasel', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(216, 'Teddiursa', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(217, 'Ursaring', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(217, 'Ursaring', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(218, 'Slugma', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(219, 'Magcargo', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(220, 'Swinub', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(221, 'Piloswine', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(221, 'Piloswine', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(222, 'Corsola', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(223, 'Remoraid', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(224, 'Octillery', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(224, 'Octillery', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(225, 'Delibird', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(226, 'Mantine', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(227, 'Skarmory', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(228, 'Houndour', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(229, 'Houndoom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(229, 'Houndoom', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(230, 'Kingdra', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(231, 'Phanpy', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(232, 'Donphan', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(232, 'Donphan', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(233, 'Porygon2', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(234, 'Stantler', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(235, 'Smeargle', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(236, 'Tyrogue', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(237, 'Hitmontop', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(238, 'Smoochum', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(239, 'Elekid', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(240, 'Magby', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(241, 'Miltank', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(242, 'Blissey', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(243, 'Raikou', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(244, 'Entei', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(245, 'Suicune', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(246, 'Larvitar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(247, 'Pupitar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(248, 'Tyranitar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(249, 'Lugia', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(250, 'Ho-Oh', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
|
||||||
(251, 'Celebi', NULL, false, 'Johto', ARRAY['Crystal', 'HeartGold', 'SoulSilver'])
|
|
||||||
ON CONFLICT ON CONSTRAINT unique_pokemon_form DO NOTHING;
|
|
||||||
|
|
||||||
-- Insert Johto regional dex numbers
|
|
||||||
INSERT INTO regional_dex_numbers (
|
|
||||||
pokedex_entry_id,
|
|
||||||
region,
|
|
||||||
dex_number
|
|
||||||
) VALUES
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 152 AND form IS NULL), 'Johto', 1),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 153 AND form IS NULL), 'Johto', 2),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 154 AND form IS NULL), 'Johto', 3),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 155 AND form IS NULL), 'Johto', 4),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 156 AND form IS NULL), 'Johto', 5),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 157 AND form IS NULL), 'Johto', 6),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 158 AND form IS NULL), 'Johto', 7),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 159 AND form IS NULL), 'Johto', 8),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 160 AND form IS NULL), 'Johto', 9),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 161 AND form IS NULL), 'Johto', 10),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 162 AND form IS NULL), 'Johto', 11),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 163 AND form IS NULL), 'Johto', 12),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 164 AND form IS NULL), 'Johto', 13),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 165 AND form IS NULL), 'Johto', 14),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 166 AND form IS NULL), 'Johto', 15),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 167 AND form IS NULL), 'Johto', 16),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 168 AND form IS NULL), 'Johto', 17),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 169 AND form IS NULL), 'Johto', 18),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 170 AND form IS NULL), 'Johto', 19),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 171 AND form IS NULL), 'Johto', 20),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 172 AND form IS NULL), 'Johto', 21),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 173 AND form IS NULL), 'Johto', 22),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 174 AND form IS NULL), 'Johto', 23),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 175 AND form IS NULL), 'Johto', 24),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 176 AND form IS NULL), 'Johto', 25),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 177 AND form IS NULL), 'Johto', 26),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 178 AND form IS NULL), 'Johto', 27),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 179 AND form IS NULL), 'Johto', 28),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 180 AND form IS NULL), 'Johto', 29),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 181 AND form IS NULL), 'Johto', 30),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 182 AND form IS NULL), 'Johto', 31),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 183 AND form IS NULL), 'Johto', 32),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 184 AND form IS NULL), 'Johto', 33),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 185 AND form IS NULL), 'Johto', 34),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 186 AND form IS NULL), 'Johto', 35),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 187 AND form IS NULL), 'Johto', 36),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 188 AND form IS NULL), 'Johto', 37),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 189 AND form IS NULL), 'Johto', 38),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 190 AND form IS NULL), 'Johto', 39),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 191 AND form IS NULL), 'Johto', 40),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 192 AND form IS NULL), 'Johto', 41),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 193 AND form IS NULL), 'Johto', 42),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 194 AND form IS NULL), 'Johto', 43),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 195 AND form IS NULL), 'Johto', 44),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 196 AND form IS NULL), 'Johto', 45),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 197 AND form IS NULL), 'Johto', 46),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 198 AND form IS NULL), 'Johto', 47),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 199 AND form IS NULL), 'Johto', 48),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 200 AND form IS NULL), 'Johto', 49),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 201 AND form = 'A'), 'Johto', 50),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 202 AND form IS NULL), 'Johto', 51),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 203 AND form IS NULL), 'Johto', 52),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 204 AND form IS NULL), 'Johto', 53),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 205 AND form IS NULL), 'Johto', 54),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 206 AND form IS NULL), 'Johto', 55),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 207 AND form IS NULL), 'Johto', 56),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 208 AND form IS NULL), 'Johto', 57),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 209 AND form IS NULL), 'Johto', 58),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 210 AND form IS NULL), 'Johto', 59),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 211 AND form IS NULL), 'Johto', 60),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 212 AND form IS NULL), 'Johto', 61),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 213 AND form IS NULL), 'Johto', 62),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 214 AND form IS NULL), 'Johto', 63),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 215 AND form IS NULL), 'Johto', 64),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 216 AND form IS NULL), 'Johto', 65),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 217 AND form IS NULL), 'Johto', 66),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 218 AND form IS NULL), 'Johto', 67),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 219 AND form IS NULL), 'Johto', 68),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 220 AND form IS NULL), 'Johto', 69),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 221 AND form IS NULL), 'Johto', 70),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 222 AND form IS NULL), 'Johto', 71),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 223 AND form IS NULL), 'Johto', 72),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 224 AND form IS NULL), 'Johto', 73),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 225 AND form IS NULL), 'Johto', 74),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 226 AND form IS NULL), 'Johto', 75),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 227 AND form IS NULL), 'Johto', 76),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 228 AND form IS NULL), 'Johto', 77),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 229 AND form IS NULL), 'Johto', 78),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 230 AND form IS NULL), 'Johto', 79),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 231 AND form IS NULL), 'Johto', 80),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 232 AND form IS NULL), 'Johto', 81),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 233 AND form IS NULL), 'Johto', 82),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 234 AND form IS NULL), 'Johto', 83),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 235 AND form IS NULL), 'Johto', 84),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 236 AND form IS NULL), 'Johto', 85),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 237 AND form IS NULL), 'Johto', 86),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 238 AND form IS NULL), 'Johto', 87),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 239 AND form IS NULL), 'Johto', 88),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 240 AND form IS NULL), 'Johto', 89),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 241 AND form IS NULL), 'Johto', 90),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 242 AND form IS NULL), 'Johto', 91),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 243 AND form IS NULL), 'Johto', 92),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 244 AND form IS NULL), 'Johto', 93),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 245 AND form IS NULL), 'Johto', 94),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 246 AND form IS NULL), 'Johto', 95),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 247 AND form IS NULL), 'Johto', 96),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 248 AND form IS NULL), 'Johto', 97),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 249 AND form IS NULL), 'Johto', 98),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 250 AND form IS NULL), 'Johto', 99),
|
|
||||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 251 AND form IS NULL), 'Johto', 100);
|
|
||||||
|
|
||||||
-- Add metadata
|
|
||||||
INSERT INTO metadata (key, value) VALUES
|
|
||||||
('johto_seeded', 'true'),
|
|
||||||
('johto_seed_date', NOW()::TEXT),
|
|
||||||
('johto_pokemon_count', '99');
|
|
||||||
@@ -1,217 +0,0 @@
|
|||||||
-- Fix catch_records uniqueness for multi-pokédex support.
|
|
||||||
--
|
|
||||||
-- Intended invariant:
|
|
||||||
-- one catch record per (userId, pokedexId, pokedexEntryId)
|
|
||||||
--
|
|
||||||
-- This migration is written to be safe to run even if parts of the schema already exist.
|
|
||||||
|
|
||||||
-- 1) Ensure pokedexId column exists
|
|
||||||
ALTER TABLE public.catch_records
|
|
||||||
ADD COLUMN IF NOT EXISTS "pokedexId" UUID;
|
|
||||||
|
|
||||||
-- 1.5) Guards: fail early with diagnostics if the backfill would be unsafe.
|
|
||||||
--
|
|
||||||
-- Why:
|
|
||||||
-- - The backfill below only updates rows for users that have at least one pokedex.
|
|
||||||
-- If any user has catch_records but no pokedexes, those rows would remain NULL
|
|
||||||
-- and the NOT NULL enforcement would fail.
|
|
||||||
-- - The backfill assigns all NULL pokedexId rows to each user's oldest pokedex.
|
|
||||||
-- That can create duplicate (userId, pokedexId, pokedexEntryId) combinations.
|
|
||||||
--
|
|
||||||
-- If either condition is detected, this migration aborts and prints sample IDs.
|
|
||||||
DO $$
|
|
||||||
DECLARE
|
|
||||||
orphan_user_count bigint;
|
|
||||||
orphan_row_count bigint;
|
|
||||||
orphan_user_samples text;
|
|
||||||
|
|
||||||
dup_group_count bigint;
|
|
||||||
dup_group_samples text;
|
|
||||||
BEGIN
|
|
||||||
-- Guard A: Any catch_records with NULL pokedexId for users who have no pokedexes?
|
|
||||||
WITH orphan_users AS (
|
|
||||||
SELECT cr."userId" AS user_id,
|
|
||||||
COUNT(*)::bigint AS null_row_count
|
|
||||||
FROM public.catch_records cr
|
|
||||||
WHERE cr."pokedexId" IS NULL
|
|
||||||
AND NOT EXISTS (
|
|
||||||
SELECT 1
|
|
||||||
FROM public.pokedexes p
|
|
||||||
WHERE p."userId" = cr."userId"
|
|
||||||
)
|
|
||||||
GROUP BY cr."userId"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
COUNT(*)::bigint,
|
|
||||||
COALESCE(SUM(null_row_count), 0)::bigint,
|
|
||||||
(
|
|
||||||
SELECT string_agg(user_id::text, ', ' ORDER BY user_id::text)
|
|
||||||
FROM (
|
|
||||||
SELECT user_id, null_row_count
|
|
||||||
FROM orphan_users
|
|
||||||
ORDER BY null_row_count DESC, user_id
|
|
||||||
LIMIT 10
|
|
||||||
) s
|
|
||||||
)
|
|
||||||
INTO orphan_user_count, orphan_row_count, orphan_user_samples
|
|
||||||
FROM orphan_users;
|
|
||||||
|
|
||||||
IF orphan_user_count > 0 THEN
|
|
||||||
RAISE EXCEPTION
|
|
||||||
'USAFE MIGRATION: found % user(s) with % catch_records row(s) where "pokedexId" is NULL but the user has no pokedexes. Sample userId(s): %',
|
|
||||||
orphan_user_count,
|
|
||||||
orphan_row_count,
|
|
||||||
COALESCE(orphan_user_samples, '(none)');
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Guard B: Would assigning NULL pokedexId rows to each user''s oldest pokedex create duplicates?
|
|
||||||
WITH primary_pokedex AS (
|
|
||||||
SELECT DISTINCT ON ("userId") id AS pokedex_id, "userId"
|
|
||||||
FROM public.pokedexes
|
|
||||||
ORDER BY "userId", "createdAt" ASC
|
|
||||||
),
|
|
||||||
projected AS (
|
|
||||||
SELECT
|
|
||||||
cr."userId",
|
|
||||||
COALESCE(cr."pokedexId", pp.pokedex_id) AS projected_pokedex_id,
|
|
||||||
cr."pokedexEntryId"
|
|
||||||
FROM public.catch_records cr
|
|
||||||
LEFT JOIN primary_pokedex pp
|
|
||||||
ON pp."userId" = cr."userId"
|
|
||||||
),
|
|
||||||
dup_groups AS (
|
|
||||||
SELECT
|
|
||||||
"userId",
|
|
||||||
projected_pokedex_id,
|
|
||||||
"pokedexEntryId",
|
|
||||||
COUNT(*)::bigint AS row_count
|
|
||||||
FROM projected
|
|
||||||
WHERE projected_pokedex_id IS NOT NULL
|
|
||||||
GROUP BY "userId", projected_pokedex_id, "pokedexEntryId"
|
|
||||||
HAVING COUNT(*) > 1
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
COUNT(*)::bigint,
|
|
||||||
(
|
|
||||||
SELECT string_agg(
|
|
||||||
format(
|
|
||||||
'(userId=%s, pokedexId=%s, pokedexEntryId=%s, rows=%s)',
|
|
||||||
"userId"::text,
|
|
||||||
projected_pokedex_id::text,
|
|
||||||
"pokedexEntryId"::text,
|
|
||||||
row_count::text
|
|
||||||
),
|
|
||||||
E'\n'
|
|
||||||
ORDER BY row_count DESC, "userId"::text
|
|
||||||
)
|
|
||||||
FROM (
|
|
||||||
SELECT * FROM dup_groups
|
|
||||||
ORDER BY row_count DESC, "userId"::text
|
|
||||||
LIMIT 10
|
|
||||||
) s
|
|
||||||
)
|
|
||||||
INTO dup_group_count, dup_group_samples
|
|
||||||
FROM dup_groups;
|
|
||||||
|
|
||||||
IF dup_group_count > 0 THEN
|
|
||||||
RAISE EXCEPTION
|
|
||||||
'USAFE MIGRATION: backfill would create % duplicate (userId, pokedexId, pokedexEntryId) group(s) after projecting NULL "pokedexId" to each user''s oldest pokedex. Sample group(s):\n%',
|
|
||||||
dup_group_count,
|
|
||||||
COALESCE(dup_group_samples, '(none)');
|
|
||||||
END IF;
|
|
||||||
END $$;
|
|
||||||
|
|
||||||
-- 2) Best-effort backfill for any NULL pokedexId rows.
|
|
||||||
-- Strategy: assign to the user's oldest pokedex.
|
|
||||||
WITH primary_pokedex AS (
|
|
||||||
SELECT DISTINCT ON ("userId") id AS pokedex_id, "userId"
|
|
||||||
FROM public.pokedexes
|
|
||||||
ORDER BY "userId", "createdAt" ASC
|
|
||||||
)
|
|
||||||
UPDATE public.catch_records cr
|
|
||||||
SET "pokedexId" = pp.pokedex_id
|
|
||||||
FROM primary_pokedex pp
|
|
||||||
WHERE cr."userId" = pp."userId"
|
|
||||||
AND cr."pokedexId" IS NULL;
|
|
||||||
|
|
||||||
-- 3) Enforce NOT NULL + FK
|
|
||||||
ALTER TABLE public.catch_records
|
|
||||||
ALTER COLUMN "pokedexId" SET NOT NULL;
|
|
||||||
|
|
||||||
-- Drop/recreate FK to avoid "already exists" name collisions.
|
|
||||||
ALTER TABLE public.catch_records
|
|
||||||
DROP CONSTRAINT IF EXISTS "catch_records_pokedexId_fkey";
|
|
||||||
|
|
||||||
ALTER TABLE public.catch_records
|
|
||||||
ADD CONSTRAINT "catch_records_pokedexId_fkey"
|
|
||||||
FOREIGN KEY ("pokedexId") REFERENCES public.pokedexes(id) ON DELETE CASCADE;
|
|
||||||
|
|
||||||
-- 4) Replace uniqueness constraint
|
|
||||||
ALTER TABLE public.catch_records
|
|
||||||
DROP CONSTRAINT IF EXISTS "catch_records_userId_pokedexEntryId_key";
|
|
||||||
|
|
||||||
ALTER TABLE public.catch_records
|
|
||||||
DROP CONSTRAINT IF EXISTS "catch_records_user_pokemon_pokedex_unique";
|
|
||||||
|
|
||||||
ALTER TABLE public.catch_records
|
|
||||||
ADD CONSTRAINT "catch_records_user_pokemon_pokedex_unique"
|
|
||||||
UNIQUE ("userId", "pokedexId", "pokedexEntryId");
|
|
||||||
|
|
||||||
-- 5) Helpful index
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_catch_records_pokedex_id ON public.catch_records("pokedexId");
|
|
||||||
|
|
||||||
-- 6) RLS policies (recreate safely)
|
|
||||||
ALTER TABLE public.catch_records ENABLE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
DROP POLICY IF EXISTS "Users can view own catch records" ON public.catch_records;
|
|
||||||
DROP POLICY IF EXISTS "Users can insert own catch records" ON public.catch_records;
|
|
||||||
DROP POLICY IF EXISTS "Users can update own catch records" ON public.catch_records;
|
|
||||||
DROP POLICY IF EXISTS "Users can delete own catch records" ON public.catch_records;
|
|
||||||
|
|
||||||
CREATE POLICY "Users can view own catch records" ON public.catch_records
|
|
||||||
FOR SELECT USING (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM public.pokedexes
|
|
||||||
WHERE public.pokedexes.id = public.catch_records."pokedexId"
|
|
||||||
AND public.pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE POLICY "Users can insert own catch records" ON public.catch_records
|
|
||||||
FOR INSERT WITH CHECK (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM public.pokedexes
|
|
||||||
WHERE public.pokedexes.id = public.catch_records."pokedexId"
|
|
||||||
AND public.pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE POLICY "Users can update own catch records" ON public.catch_records
|
|
||||||
FOR UPDATE USING (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM public.pokedexes
|
|
||||||
WHERE public.pokedexes.id = public.catch_records."pokedexId"
|
|
||||||
AND public.pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
WITH CHECK (
|
|
||||||
auth.uid() = public.catch_records."userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM public.pokedexes
|
|
||||||
WHERE public.pokedexes.id = public.catch_records."pokedexId"
|
|
||||||
AND public.pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE POLICY "Users can delete own catch records" ON public.catch_records
|
|
||||||
FOR DELETE USING (
|
|
||||||
auth.uid() = "userId" AND
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM public.pokedexes
|
|
||||||
WHERE public.pokedexes.id = public.catch_records."pokedexId"
|
|
||||||
AND public.pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
-- Create stats_cache table to store cached statistics
|
|
||||||
-- This table will be updated once per day to improve performance
|
|
||||||
|
|
||||||
CREATE TABLE stats_cache (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
pokemon_caught BIGINT NOT NULL DEFAULT 0,
|
|
||||||
total_users BIGINT NOT NULL DEFAULT 0,
|
|
||||||
completed_pokedexes BIGINT NOT NULL DEFAULT 0,
|
|
||||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Create index for faster lookups
|
|
||||||
CREATE INDEX idx_stats_cache_updated_at ON stats_cache(updated_at DESC);
|
|
||||||
|
|
||||||
-- Enable RLS
|
|
||||||
ALTER TABLE stats_cache ENABLE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
-- RLS policies: Only allow reads (stats are public)
|
|
||||||
CREATE POLICY "Anyone can view stats cache" ON stats_cache
|
|
||||||
FOR SELECT USING (true);
|
|
||||||
|
|
||||||
-- No insert/update/delete policies - only database functions can modify this table
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
-- Create function to calculate and update stats in the cache table
|
|
||||||
-- This function runs the expensive queries and stores the results
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION update_and_get_stats()
|
|
||||||
RETURNS TABLE (
|
|
||||||
pokemon_caught BIGINT,
|
|
||||||
total_users BIGINT,
|
|
||||||
completed_pokedexes BIGINT,
|
|
||||||
updated_at TIMESTAMPTZ
|
|
||||||
)
|
|
||||||
SECURITY DEFINER
|
|
||||||
SET search_path = public, pg_temp
|
|
||||||
LANGUAGE plpgsql
|
|
||||||
AS $$
|
|
||||||
DECLARE
|
|
||||||
v_pokemon_caught BIGINT;
|
|
||||||
v_total_users BIGINT;
|
|
||||||
v_completed_pokedexes BIGINT;
|
|
||||||
v_updated_at TIMESTAMPTZ := NOW();
|
|
||||||
BEGIN
|
|
||||||
-- Calculate current stats: count of caught Pokémon
|
|
||||||
SELECT COUNT(*) INTO v_pokemon_caught
|
|
||||||
FROM catch_records
|
|
||||||
WHERE caught = true;
|
|
||||||
|
|
||||||
-- Calculate current stats: count of total users
|
|
||||||
SELECT COUNT(*) INTO v_total_users
|
|
||||||
FROM auth.users;
|
|
||||||
|
|
||||||
-- Calculate current stats: count of completed pokedexes
|
|
||||||
-- A pokedex is completed when all its entries have caught = true
|
|
||||||
SELECT COUNT(*) INTO v_completed_pokedexes
|
|
||||||
FROM (
|
|
||||||
SELECT "pokedexId"
|
|
||||||
FROM catch_records
|
|
||||||
GROUP BY "pokedexId"
|
|
||||||
HAVING COUNT(*) = COUNT(*) FILTER (WHERE caught = true)
|
|
||||||
) completed;
|
|
||||||
|
|
||||||
-- Update cache using UPSERT pattern
|
|
||||||
INSERT INTO stats_cache (id, pokemon_caught, total_users, completed_pokedexes, updated_at)
|
|
||||||
VALUES (1, v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at)
|
|
||||||
ON CONFLICT (id) DO UPDATE
|
|
||||||
SET pokemon_caught = EXCLUDED.pokemon_caught,
|
|
||||||
total_users = EXCLUDED.total_users,
|
|
||||||
completed_pokedexes = EXCLUDED.completed_pokedexes,
|
|
||||||
updated_at = v_updated_at;
|
|
||||||
|
|
||||||
-- Return the stats
|
|
||||||
RETURN QUERY
|
|
||||||
SELECT v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at AS updated_at;
|
|
||||||
END;
|
|
||||||
$$;
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
-- Create function to get public stats with caching
|
|
||||||
-- Returns cached stats if fresh (within 24 hours), otherwise refreshes cache
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION get_public_stats()
|
|
||||||
RETURNS TABLE (
|
|
||||||
pokemon_caught BIGINT,
|
|
||||||
total_users BIGINT,
|
|
||||||
completed_pokedexes BIGINT,
|
|
||||||
updated_at TIMESTAMPTZ
|
|
||||||
)
|
|
||||||
SECURITY DEFINER
|
|
||||||
LANGUAGE plpgsql
|
|
||||||
AS $$
|
|
||||||
DECLARE
|
|
||||||
v_cache_exists BOOLEAN;
|
|
||||||
BEGIN
|
|
||||||
-- Check if cache exists and is fresh (within 24 hours)
|
|
||||||
SELECT EXISTS(
|
|
||||||
SELECT 1 FROM stats_cache
|
|
||||||
WHERE stats_cache.updated_at > NOW() - INTERVAL '24 hours'
|
|
||||||
) INTO v_cache_exists;
|
|
||||||
|
|
||||||
IF v_cache_exists THEN
|
|
||||||
-- Return cached stats
|
|
||||||
RETURN QUERY
|
|
||||||
SELECT sc.pokemon_caught, sc.total_users, sc.completed_pokedexes, sc.updated_at
|
|
||||||
FROM stats_cache sc
|
|
||||||
ORDER BY sc.updated_at DESC
|
|
||||||
LIMIT 1;
|
|
||||||
ELSE
|
|
||||||
-- Cache is stale or doesn't exist, update it
|
|
||||||
RETURN QUERY
|
|
||||||
SELECT * FROM update_and_get_stats();
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
$$;
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
-- Fix ambiguous column reference errors in stats functions.
|
|
||||||
--
|
|
||||||
-- If earlier migrations have already been applied, editing them will not update
|
|
||||||
-- the deployed database. This migration re-defines the functions using
|
|
||||||
-- CREATE OR REPLACE so the corrected definitions take effect.
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION update_and_get_stats()
|
|
||||||
RETURNS TABLE (
|
|
||||||
pokemon_caught BIGINT,
|
|
||||||
total_users BIGINT,
|
|
||||||
completed_pokedexes BIGINT,
|
|
||||||
updated_at TIMESTAMPTZ
|
|
||||||
)
|
|
||||||
SECURITY DEFINER
|
|
||||||
LANGUAGE plpgsql
|
|
||||||
AS $$
|
|
||||||
DECLARE
|
|
||||||
v_pokemon_caught BIGINT;
|
|
||||||
v_total_users BIGINT;
|
|
||||||
v_completed_pokedexes BIGINT;
|
|
||||||
v_updated_at TIMESTAMPTZ := NOW();
|
|
||||||
BEGIN
|
|
||||||
-- Calculate current stats: count of caught Pokémon
|
|
||||||
SELECT COUNT(*) INTO v_pokemon_caught
|
|
||||||
FROM catch_records
|
|
||||||
WHERE caught = true;
|
|
||||||
|
|
||||||
-- Calculate current stats: count of total users
|
|
||||||
SELECT COUNT(*) INTO v_total_users
|
|
||||||
FROM auth.users;
|
|
||||||
|
|
||||||
-- Calculate current stats: count of completed pokedexes
|
|
||||||
-- A pokedex is completed when all its expected entries have caught = true
|
|
||||||
-- Join catch_records to pokedex_entries_mapping to validate against explicit expected entries
|
|
||||||
SELECT COUNT(*) INTO v_completed_pokedexes
|
|
||||||
FROM (
|
|
||||||
SELECT cr."pokedexId"
|
|
||||||
FROM catch_records cr
|
|
||||||
INNER JOIN pokedex_entries_mapping pem
|
|
||||||
ON cr."pokedexId" = pem."pokedexId"
|
|
||||||
AND cr."pokedexEntryId" = pem."pokedexEntryId"
|
|
||||||
GROUP BY cr."pokedexId"
|
|
||||||
HAVING COUNT(*) = COUNT(*) FILTER (WHERE cr.caught = true)
|
|
||||||
AND COUNT(*) = (SELECT COUNT(*) FROM pokedex_entries_mapping WHERE "pokedexId" = cr."pokedexId")
|
|
||||||
) completed;
|
|
||||||
|
|
||||||
-- Update cache using UPSERT pattern
|
|
||||||
INSERT INTO stats_cache (id, pokemon_caught, total_users, completed_pokedexes, updated_at)
|
|
||||||
VALUES (1, v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at)
|
|
||||||
ON CONFLICT (id) DO UPDATE
|
|
||||||
SET pokemon_caught = EXCLUDED.pokemon_caught,
|
|
||||||
total_users = EXCLUDED.total_users,
|
|
||||||
completed_pokedexes = EXCLUDED.completed_pokedexes,
|
|
||||||
updated_at = v_updated_at;
|
|
||||||
|
|
||||||
-- Return stats
|
|
||||||
RETURN QUERY
|
|
||||||
SELECT v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at AS updated_at;
|
|
||||||
END;
|
|
||||||
$$;
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION get_public_stats()
|
|
||||||
RETURNS TABLE (
|
|
||||||
pokemon_caught BIGINT,
|
|
||||||
total_users BIGINT,
|
|
||||||
completed_pokedexes BIGINT,
|
|
||||||
updated_at TIMESTAMPTZ
|
|
||||||
)
|
|
||||||
SECURITY DEFINER
|
|
||||||
LANGUAGE plpgsql
|
|
||||||
AS $$
|
|
||||||
DECLARE
|
|
||||||
v_cache_exists BOOLEAN;
|
|
||||||
BEGIN
|
|
||||||
-- Check if cache exists and is fresh (within 24 hours)
|
|
||||||
SELECT EXISTS(
|
|
||||||
SELECT 1 FROM stats_cache
|
|
||||||
WHERE stats_cache.updated_at > NOW() - INTERVAL '24 hours'
|
|
||||||
) INTO v_cache_exists;
|
|
||||||
|
|
||||||
IF v_cache_exists THEN
|
|
||||||
-- Return cached stats (qualify updated_at to avoid ambiguity with output parameter)
|
|
||||||
RETURN QUERY
|
|
||||||
SELECT sc.pokemon_caught, sc.total_users, sc.completed_pokedexes, sc.updated_at
|
|
||||||
FROM stats_cache sc
|
|
||||||
ORDER BY sc.updated_at DESC
|
|
||||||
LIMIT 1;
|
|
||||||
ELSE
|
|
||||||
-- Cache is stale or doesn't exist, update it
|
|
||||||
RETURN QUERY
|
|
||||||
SELECT * FROM update_and_get_stats();
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
$$;
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
-- Add pokedex_entries_mapping table to explicitly define which entries belong to each pokedex
|
|
||||||
-- This fixes the stats functions ambiguity issue by providing an explicit definition of expected entries
|
|
||||||
|
|
||||||
-- Create pokedex_entries_mapping table
|
|
||||||
CREATE TABLE pokedex_entries_mapping (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
"pokedexId" UUID NOT NULL REFERENCES pokedexes(id) ON DELETE CASCADE,
|
|
||||||
"pokedexEntryId" BIGINT NOT NULL REFERENCES pokedex_entries(id) ON DELETE CASCADE,
|
|
||||||
UNIQUE("pokedexId", "pokedexEntryId")
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Create indexes for performance
|
|
||||||
CREATE INDEX idx_pokedex_entries_mapping_pokedex_id ON pokedex_entries_mapping("pokedexId");
|
|
||||||
CREATE INDEX idx_pokedex_entries_mapping_entry_id ON pokedex_entries_mapping("pokedexEntryId");
|
|
||||||
|
|
||||||
-- Enable RLS
|
|
||||||
ALTER TABLE pokedex_entries_mapping ENABLE ROW LEVEL SECURITY;
|
|
||||||
|
|
||||||
-- RLS Policies
|
|
||||||
|
|
||||||
-- Public read access (mapping is reference data)
|
|
||||||
CREATE POLICY "Anyone can view pokedex entries mapping"
|
|
||||||
ON pokedex_entries_mapping
|
|
||||||
FOR SELECT USING (true);
|
|
||||||
|
|
||||||
-- Users can only insert mappings for their own pokedexes
|
|
||||||
CREATE POLICY "Users can insert own pokedex mappings"
|
|
||||||
ON pokedex_entries_mapping
|
|
||||||
FOR INSERT WITH CHECK (
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM pokedexes
|
|
||||||
WHERE pokedexes.id = pokedex_entries_mapping."pokedexId"
|
|
||||||
AND pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Users can only delete mappings for their own pokedexes
|
|
||||||
CREATE POLICY "Users can delete own pokedex mappings"
|
|
||||||
ON pokedex_entries_mapping
|
|
||||||
FOR DELETE USING (
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM pokedexes
|
|
||||||
WHERE pokedexes.id = pokedex_entries_mapping."pokedexId"
|
|
||||||
AND pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
-- Populate pokedex_entries_mapping for existing pokedexes
|
|
||||||
-- This is a one-time migration to backfill data for pokedexes created before the mapping table
|
|
||||||
|
|
||||||
-- Insert mappings for all existing pokedexes
|
|
||||||
-- Apply the same filtering logic that the application uses to determine expected entries
|
|
||||||
INSERT INTO pokedex_entries_mapping ("pokedexId", "pokedexEntryId")
|
|
||||||
SELECT
|
|
||||||
p.id AS "pokedexId",
|
|
||||||
pe.id AS "pokedexEntryId"
|
|
||||||
FROM pokedexes p
|
|
||||||
LEFT JOIN region_game_mappings rg ON rg.game = p."gameScope"
|
|
||||||
CROSS JOIN pokedex_entries pe
|
|
||||||
WHERE
|
|
||||||
-- Form filter: if isFormDex is false, only include base forms
|
|
||||||
-- Base forms have form IS NULL, except Unown which has no base form (use 'A')
|
|
||||||
(p."isFormDex" = true OR (pe.form IS NULL OR (pe.pokemon = 'Unown' AND pe.form = 'A')))
|
|
||||||
-- Game scope filter: if gameScope is specified, filter by game
|
|
||||||
AND (p."gameScope" IS NULL OR pe."gamesToCatchIn" @> ARRAY[p."gameScope"]::TEXT[])
|
|
||||||
-- Region filter: only enforce when a mapping exists
|
|
||||||
AND (p."gameScope" IS NULL OR rg.region IS NULL OR pe."regionToCatchIn" = rg.region)
|
|
||||||
ON CONFLICT ("pokedexId", "pokedexEntryId") DO NOTHING;
|
|
||||||
|
|
||||||
-- Add comment to document this migration
|
|
||||||
COMMENT ON TABLE pokedex_entries_mapping IS 'Junction table defining which pokedex_entries belong to each pokedex. Used for accurate stats calculation.';
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
-- Create function to atomically recalculate pokedex entries mapping
|
|
||||||
-- This function replaces the two-step delete+insert process with a single atomic operation
|
|
||||||
-- to prevent orphaned pokedexes if repopulation fails or yields an empty list
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION recalculate_pokedex_mappings(
|
|
||||||
p_pokedex_id UUID,
|
|
||||||
p_entry_ids BIGINT[]
|
|
||||||
)
|
|
||||||
RETURNS VOID
|
|
||||||
SECURITY DEFINER
|
|
||||||
SET search_path = public, pg_temp
|
|
||||||
LANGUAGE plpgsql
|
|
||||||
AS $$
|
|
||||||
DECLARE
|
|
||||||
v_user_id UUID;
|
|
||||||
BEGIN
|
|
||||||
-- Validate that entry_ids is not empty to avoid accidental deletion
|
|
||||||
IF p_entry_ids IS NULL OR array_length(p_entry_ids, 1) IS NULL THEN
|
|
||||||
RAISE EXCEPTION 'entry_ids cannot be null or empty';
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Verify that the caller owns the target pokedex
|
|
||||||
SELECT "userId" INTO v_user_id
|
|
||||||
FROM pokedexes
|
|
||||||
WHERE id = p_pokedex_id;
|
|
||||||
|
|
||||||
IF v_user_id IS NULL THEN
|
|
||||||
RAISE EXCEPTION 'pokedex not found';
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
IF auth.uid() IS NULL OR v_user_id IS DISTINCT FROM auth.uid() THEN
|
|
||||||
RAISE EXCEPTION 'not authorized: you do not own this pokedex';
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Delete old mappings and insert new mappings in a single transaction
|
|
||||||
-- This ensures atomicity - either both operations succeed or both fail
|
|
||||||
DELETE FROM pokedex_entries_mapping
|
|
||||||
WHERE "pokedexId" = p_pokedex_id;
|
|
||||||
|
|
||||||
INSERT INTO pokedex_entries_mapping ("pokedexId", "pokedexEntryId")
|
|
||||||
SELECT p_pokedex_id, unnest(p_entry_ids)
|
|
||||||
ON CONFLICT ("pokedexId", "pokedexEntryId") DO NOTHING;
|
|
||||||
END;
|
|
||||||
$$;
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
-- Fix RLS SELECT policy on pokedex_entries_mapping to restrict reads to owning user
|
|
||||||
-- This prevents exposing all user mappings and ensures consistency with INSERT/DELETE policies
|
|
||||||
|
|
||||||
-- Drop the overly permissive public SELECT policy
|
|
||||||
DROP POLICY IF EXISTS "Anyone can view pokedex entries mapping" ON pokedex_entries_mapping;
|
|
||||||
|
|
||||||
-- Create a new SELECT policy that restricts reads to the owning user
|
|
||||||
CREATE POLICY "Users can view own pokedex entries mapping"
|
|
||||||
ON pokedex_entries_mapping
|
|
||||||
FOR SELECT USING (
|
|
||||||
EXISTS (
|
|
||||||
SELECT 1 FROM pokedexes
|
|
||||||
WHERE pokedexes.id = pokedex_entries_mapping."pokedexId"
|
|
||||||
AND pokedexes."userId" = auth.uid()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
@@ -0,0 +1,536 @@
|
|||||||
|
-- Baseline schema for reference data + user data.
|
||||||
|
-- Replaces legacy migrations; safe to reapply on a fresh database.
|
||||||
|
|
||||||
|
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
|
||||||
|
|
||||||
|
-- Function to automatically update updatedAt timestamp
|
||||||
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
||||||
|
RETURNS TRIGGER AS $$
|
||||||
|
BEGIN
|
||||||
|
NEW."updatedAt" = NOW();
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- Reference data: regions
|
||||||
|
CREATE TABLE regions (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
name TEXT NOT NULL UNIQUE,
|
||||||
|
"releaseOrder" INTEGER NOT NULL,
|
||||||
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Reference data: games
|
||||||
|
CREATE TABLE games (
|
||||||
|
id TEXT PRIMARY KEY,
|
||||||
|
"displayName" TEXT NOT NULL UNIQUE,
|
||||||
|
"regionId" BIGINT NOT NULL REFERENCES regions(id) ON DELETE RESTRICT,
|
||||||
|
region TEXT NOT NULL,
|
||||||
|
"releaseYear" INTEGER NOT NULL,
|
||||||
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_games_region_id ON games("regionId");
|
||||||
|
CREATE INDEX idx_games_release_year ON games("releaseYear");
|
||||||
|
|
||||||
|
-- Reference data: game dexes (base, DLCs, islands, etc.)
|
||||||
|
CREATE TABLE game_dexes (
|
||||||
|
id TEXT PRIMARY KEY,
|
||||||
|
"gameId" TEXT NOT NULL REFERENCES games(id) ON DELETE CASCADE,
|
||||||
|
"displayName" TEXT NOT NULL,
|
||||||
|
"sortOrder" INTEGER NOT NULL,
|
||||||
|
"isDlc" BOOLEAN DEFAULT FALSE,
|
||||||
|
"parentDexId" TEXT REFERENCES game_dexes(id) ON DELETE SET NULL,
|
||||||
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
UNIQUE ("gameId", "displayName")
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_game_dexes_game_id ON game_dexes("gameId");
|
||||||
|
CREATE INDEX idx_game_dexes_sort_order ON game_dexes("sortOrder");
|
||||||
|
|
||||||
|
-- Reference data: pokemon (one row per pokedexNumber + form)
|
||||||
|
CREATE TABLE pokemon (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
"pokedexNumber" INTEGER NOT NULL,
|
||||||
|
pokemon TEXT NOT NULL,
|
||||||
|
form TEXT,
|
||||||
|
"spriteKey" TEXT,
|
||||||
|
"originRegionId" BIGINT NOT NULL REFERENCES regions(id) ON DELETE RESTRICT,
|
||||||
|
"canGigantamax" BOOLEAN DEFAULT FALSE,
|
||||||
|
"regionToEvolveIn" TEXT,
|
||||||
|
"evolutionInformation" TEXT,
|
||||||
|
"catchInformation" TEXT[],
|
||||||
|
notes TEXT,
|
||||||
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX uniq_pokemon_base_form
|
||||||
|
ON pokemon("pokedexNumber")
|
||||||
|
WHERE form IS NULL;
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX uniq_pokemon_number_form
|
||||||
|
ON pokemon("pokedexNumber", form)
|
||||||
|
WHERE form IS NOT NULL;
|
||||||
|
|
||||||
|
CREATE INDEX idx_pokemon_pokedex_number ON pokemon("pokedexNumber");
|
||||||
|
CREATE INDEX idx_pokemon_name ON pokemon(pokemon);
|
||||||
|
CREATE INDEX idx_pokemon_origin_region_id ON pokemon("originRegionId");
|
||||||
|
|
||||||
|
-- Reference data: pokemon origin games (many-to-many)
|
||||||
|
CREATE TABLE pokemon_origin_games (
|
||||||
|
"pokemonId" BIGINT NOT NULL REFERENCES pokemon(id) ON DELETE CASCADE,
|
||||||
|
"gameId" TEXT NOT NULL REFERENCES games(id) ON DELETE CASCADE,
|
||||||
|
PRIMARY KEY ("pokemonId", "gameId")
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_pokemon_origin_games_game_id ON pokemon_origin_games("gameId");
|
||||||
|
|
||||||
|
-- Reference data: per-game pokedex entries (seeded from per-game CSVs)
|
||||||
|
CREATE TABLE game_pokedex_entries (
|
||||||
|
"dexId" TEXT NOT NULL REFERENCES game_dexes(id) ON DELETE CASCADE,
|
||||||
|
"pokemonId" BIGINT NOT NULL REFERENCES pokemon(id) ON DELETE CASCADE,
|
||||||
|
"dexNumber" INTEGER,
|
||||||
|
notes TEXT,
|
||||||
|
PRIMARY KEY ("dexId", "pokemonId")
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_game_pokedex_entries_dex_id ON game_pokedex_entries("dexId");
|
||||||
|
CREATE INDEX idx_game_pokedex_entries_pokemon_id ON game_pokedex_entries("pokemonId");
|
||||||
|
|
||||||
|
-- User-owned pokedexes
|
||||||
|
CREATE TABLE pokedexes (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
"userId" UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
description TEXT,
|
||||||
|
|
||||||
|
-- Type flags (combinable)
|
||||||
|
"isLivingDex" BOOLEAN DEFAULT FALSE,
|
||||||
|
"isShinyDex" BOOLEAN DEFAULT FALSE,
|
||||||
|
"isOriginDex" BOOLEAN DEFAULT FALSE,
|
||||||
|
"isFormDex" BOOLEAN DEFAULT FALSE,
|
||||||
|
|
||||||
|
-- Scope (NULL = all games, or specific game displayName)
|
||||||
|
"gameScope" TEXT,
|
||||||
|
|
||||||
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
|
||||||
|
UNIQUE("userId", name)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_pokedexes_user_id ON pokedexes("userId");
|
||||||
|
|
||||||
|
-- Selected dex scopes per user pokedex
|
||||||
|
CREATE TABLE pokedex_dex_scopes (
|
||||||
|
"pokedexId" UUID NOT NULL REFERENCES pokedexes(id) ON DELETE CASCADE,
|
||||||
|
"dexId" TEXT NOT NULL REFERENCES game_dexes(id) ON DELETE CASCADE,
|
||||||
|
PRIMARY KEY ("pokedexId", "dexId")
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_pokedex_dex_scopes_pokedex_id ON pokedex_dex_scopes("pokedexId");
|
||||||
|
CREATE INDEX idx_pokedex_dex_scopes_dex_id ON pokedex_dex_scopes("dexId");
|
||||||
|
|
||||||
|
-- User-owned expected entries per pokedex
|
||||||
|
CREATE TABLE pokedex_pokemon_mapping (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
"pokedexId" UUID NOT NULL REFERENCES pokedexes(id) ON DELETE CASCADE,
|
||||||
|
"pokemonId" BIGINT NOT NULL REFERENCES pokemon(id) ON DELETE CASCADE,
|
||||||
|
UNIQUE("pokedexId", "pokemonId")
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_pokedex_pokemon_mapping_pokedex_id
|
||||||
|
ON pokedex_pokemon_mapping("pokedexId");
|
||||||
|
CREATE INDEX idx_pokedex_pokemon_mapping_pokemon_id
|
||||||
|
ON pokedex_pokemon_mapping("pokemonId");
|
||||||
|
|
||||||
|
-- User-owned catch records
|
||||||
|
CREATE TABLE catch_records (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
"userId" UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
||||||
|
"pokemonId" BIGINT NOT NULL REFERENCES pokemon(id) ON DELETE CASCADE,
|
||||||
|
"pokedexId" UUID NOT NULL REFERENCES pokedexes(id) ON DELETE CASCADE,
|
||||||
|
|
||||||
|
-- Catch status fields
|
||||||
|
"haveToEvolve" BOOLEAN DEFAULT FALSE,
|
||||||
|
caught BOOLEAN DEFAULT FALSE,
|
||||||
|
"inHome" BOOLEAN DEFAULT FALSE,
|
||||||
|
"hasGigantamaxed" BOOLEAN DEFAULT FALSE,
|
||||||
|
"personalNotes" TEXT,
|
||||||
|
|
||||||
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW(),
|
||||||
|
|
||||||
|
UNIQUE("userId", "pokemonId", "pokedexId")
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_catch_records_user_id ON catch_records("userId");
|
||||||
|
CREATE INDEX idx_catch_records_pokemon_id ON catch_records("pokemonId");
|
||||||
|
CREATE INDEX idx_catch_records_pokedex_id ON catch_records("pokedexId");
|
||||||
|
CREATE INDEX idx_catch_records_caught ON catch_records(caught);
|
||||||
|
CREATE INDEX idx_catch_records_user_caught ON catch_records("userId", caught);
|
||||||
|
|
||||||
|
-- Cached public stats
|
||||||
|
CREATE TABLE stats_cache (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
pokemon_caught BIGINT NOT NULL DEFAULT 0,
|
||||||
|
total_users BIGINT NOT NULL DEFAULT 0,
|
||||||
|
completed_pokedexes BIGINT NOT NULL DEFAULT 0,
|
||||||
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_stats_cache_updated_at ON stats_cache(updated_at DESC);
|
||||||
|
|
||||||
|
-- Triggers for updatedAt
|
||||||
|
CREATE TRIGGER update_regions_updated_at
|
||||||
|
BEFORE UPDATE ON regions
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||||
|
|
||||||
|
CREATE TRIGGER update_games_updated_at
|
||||||
|
BEFORE UPDATE ON games
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||||
|
|
||||||
|
CREATE TRIGGER update_game_dexes_updated_at
|
||||||
|
BEFORE UPDATE ON game_dexes
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||||
|
|
||||||
|
CREATE TRIGGER update_pokemon_updated_at
|
||||||
|
BEFORE UPDATE ON pokemon
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||||
|
|
||||||
|
CREATE TRIGGER update_pokedexes_updated_at
|
||||||
|
BEFORE UPDATE ON pokedexes
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||||
|
|
||||||
|
CREATE TRIGGER update_catch_records_updated_at
|
||||||
|
BEFORE UPDATE ON catch_records
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||||
|
|
||||||
|
-- RLS policies
|
||||||
|
ALTER TABLE regions ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Regions are publicly readable" ON regions
|
||||||
|
FOR SELECT TO public USING (true);
|
||||||
|
|
||||||
|
ALTER TABLE games ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Games are publicly readable" ON games
|
||||||
|
FOR SELECT TO public USING (true);
|
||||||
|
|
||||||
|
ALTER TABLE game_dexes ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Game dexes are publicly readable" ON game_dexes
|
||||||
|
FOR SELECT TO public USING (true);
|
||||||
|
|
||||||
|
ALTER TABLE pokemon ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Pokemon are publicly readable" ON pokemon
|
||||||
|
FOR SELECT TO public USING (true);
|
||||||
|
|
||||||
|
ALTER TABLE pokemon_origin_games ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Pokemon origin games are publicly readable" ON pokemon_origin_games
|
||||||
|
FOR SELECT TO public USING (true);
|
||||||
|
|
||||||
|
ALTER TABLE game_pokedex_entries ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Game pokedex entries are publicly readable" ON game_pokedex_entries
|
||||||
|
FOR SELECT TO public USING (true);
|
||||||
|
|
||||||
|
ALTER TABLE pokedexes ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Users can view own pokedexes" ON pokedexes
|
||||||
|
FOR SELECT USING (auth.uid() = "userId");
|
||||||
|
CREATE POLICY "Users can create own pokedexes" ON pokedexes
|
||||||
|
FOR INSERT WITH CHECK (auth.uid() = "userId");
|
||||||
|
CREATE POLICY "Users can update own pokedexes" ON pokedexes
|
||||||
|
FOR UPDATE USING (auth.uid() = "userId");
|
||||||
|
CREATE POLICY "Users can delete own pokedexes" ON pokedexes
|
||||||
|
FOR DELETE USING (auth.uid() = "userId");
|
||||||
|
|
||||||
|
ALTER TABLE pokedex_dex_scopes ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Users can view own dex scopes" ON pokedex_dex_scopes
|
||||||
|
FOR SELECT USING (
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = pokedex_dex_scopes."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
CREATE POLICY "Users can manage own dex scopes" ON pokedex_dex_scopes
|
||||||
|
FOR ALL USING (
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = pokedex_dex_scopes."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE pokedex_pokemon_mapping ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Anyone can view pokedex pokemon mapping"
|
||||||
|
ON pokedex_pokemon_mapping
|
||||||
|
FOR SELECT USING (
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = pokedex_pokemon_mapping."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
CREATE POLICY "Users can insert own pokedex pokemon mappings"
|
||||||
|
ON pokedex_pokemon_mapping
|
||||||
|
FOR INSERT WITH CHECK (
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = pokedex_pokemon_mapping."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
CREATE POLICY "Users can delete own pokedex pokemon mappings"
|
||||||
|
ON pokedex_pokemon_mapping
|
||||||
|
FOR DELETE USING (
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = pokedex_pokemon_mapping."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE catch_records ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Users can view own catch records" ON catch_records
|
||||||
|
FOR SELECT USING (
|
||||||
|
auth.uid() = "userId" AND
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = catch_records."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
CREATE POLICY "Users can insert own catch records" ON catch_records
|
||||||
|
FOR INSERT WITH CHECK (
|
||||||
|
auth.uid() = "userId" AND
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = catch_records."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
CREATE POLICY "Users can update own catch records" ON catch_records
|
||||||
|
FOR UPDATE USING (
|
||||||
|
auth.uid() = "userId" AND
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = catch_records."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
CREATE POLICY "Users can delete own catch records" ON catch_records
|
||||||
|
FOR DELETE USING (
|
||||||
|
auth.uid() = "userId" AND
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM pokedexes
|
||||||
|
WHERE pokedexes.id = catch_records."pokedexId"
|
||||||
|
AND pokedexes."userId" = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE stats_cache ENABLE ROW LEVEL SECURITY;
|
||||||
|
CREATE POLICY "Anyone can view stats cache" ON stats_cache
|
||||||
|
FOR SELECT USING (true);
|
||||||
|
|
||||||
|
-- Compatibility view for the app (pokedex_entries)
|
||||||
|
CREATE OR REPLACE VIEW pokedex_entries AS
|
||||||
|
SELECT
|
||||||
|
p.id,
|
||||||
|
p."pokedexNumber",
|
||||||
|
p.pokemon,
|
||||||
|
p.form,
|
||||||
|
p."spriteKey",
|
||||||
|
p."canGigantamax",
|
||||||
|
r.name AS "regionToCatchIn",
|
||||||
|
r."releaseOrder" AS "regionReleaseOrder",
|
||||||
|
COALESCE(
|
||||||
|
ARRAY_AGG(g."displayName" ORDER BY g."displayName") FILTER (WHERE g.id IS NOT NULL),
|
||||||
|
ARRAY[]::TEXT[]
|
||||||
|
) AS "gamesToCatchIn",
|
||||||
|
p."regionToEvolveIn",
|
||||||
|
p."evolutionInformation",
|
||||||
|
p."catchInformation",
|
||||||
|
p."createdAt",
|
||||||
|
p."updatedAt",
|
||||||
|
CASE
|
||||||
|
WHEN p.form IS NULL OR lower(p.form) = 'male' THEN 0
|
||||||
|
WHEN lower(p.form) = 'female' THEN 1
|
||||||
|
WHEN lower(p.form) LIKE '%alolan%'
|
||||||
|
OR lower(p.form) LIKE '%galarian%'
|
||||||
|
OR lower(p.form) LIKE '%hisuian%'
|
||||||
|
OR lower(p.form) LIKE '%paldean%'
|
||||||
|
THEN 2
|
||||||
|
ELSE 3
|
||||||
|
END AS "formSortBucket",
|
||||||
|
CASE
|
||||||
|
WHEN lower(p.form) LIKE '%alolan%'
|
||||||
|
OR lower(p.form) LIKE '%galarian%'
|
||||||
|
OR lower(p.form) LIKE '%hisuian%'
|
||||||
|
OR lower(p.form) LIKE '%paldean%'
|
||||||
|
THEN r."releaseOrder"
|
||||||
|
ELSE 0
|
||||||
|
END AS "formSortRegionOrder",
|
||||||
|
CASE
|
||||||
|
WHEN lower(p.form) LIKE 'female-%' THEN 1
|
||||||
|
ELSE 0
|
||||||
|
END AS "formSortRegionalSub",
|
||||||
|
COALESCE(lower(p.form), '') AS "formSortLabel",
|
||||||
|
CASE
|
||||||
|
WHEN p.pokemon = 'Unown' THEN
|
||||||
|
CASE
|
||||||
|
WHEN p.form = '?' THEN 26
|
||||||
|
WHEN p.form = '!' THEN 27
|
||||||
|
WHEN length(p.form) = 1 AND ascii(upper(p.form)) BETWEEN 65 AND 90 THEN ascii(upper(p.form)) - 65
|
||||||
|
ELSE 28
|
||||||
|
END
|
||||||
|
ELSE 0
|
||||||
|
END AS "unownSortOrder"
|
||||||
|
FROM pokemon p
|
||||||
|
JOIN regions r ON r.id = p."originRegionId"
|
||||||
|
LEFT JOIN pokemon_origin_games pog ON pog."pokemonId" = p.id
|
||||||
|
LEFT JOIN games g ON g.id = pog."gameId"
|
||||||
|
GROUP BY p.id, r.name, r."releaseOrder";
|
||||||
|
|
||||||
|
GRANT SELECT ON pokedex_entries TO anon, authenticated;
|
||||||
|
|
||||||
|
-- Dex-scoped view for ordering and filtering by native dexes
|
||||||
|
CREATE OR REPLACE VIEW game_pokedex_entry_details AS
|
||||||
|
SELECT
|
||||||
|
gpe."dexId",
|
||||||
|
gd."displayName" AS "dexDisplayName",
|
||||||
|
gd."sortOrder" AS "dexSortOrder",
|
||||||
|
gpe."dexNumber",
|
||||||
|
pe.*
|
||||||
|
FROM game_pokedex_entries gpe
|
||||||
|
JOIN game_dexes gd ON gd.id = gpe."dexId"
|
||||||
|
JOIN pokedex_entries pe ON pe.id = gpe."pokemonId";
|
||||||
|
|
||||||
|
GRANT SELECT ON game_pokedex_entry_details TO anon, authenticated;
|
||||||
|
|
||||||
|
-- RPC: recalculate expected mappings for a pokedex
|
||||||
|
CREATE OR REPLACE FUNCTION recalculate_pokedex_mappings(
|
||||||
|
p_pokedex_id UUID,
|
||||||
|
p_entry_ids BIGINT[]
|
||||||
|
)
|
||||||
|
RETURNS VOID
|
||||||
|
SECURITY DEFINER
|
||||||
|
SET search_path = public, pg_temp
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
v_user_id UUID;
|
||||||
|
BEGIN
|
||||||
|
IF p_entry_ids IS NULL OR array_length(p_entry_ids, 1) IS NULL THEN
|
||||||
|
RAISE EXCEPTION 'entry_ids cannot be null or empty';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SELECT "userId" INTO v_user_id
|
||||||
|
FROM pokedexes
|
||||||
|
WHERE id = p_pokedex_id;
|
||||||
|
|
||||||
|
IF v_user_id IS NULL THEN
|
||||||
|
RAISE EXCEPTION 'pokedex not found';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF auth.uid() IS NULL OR v_user_id IS DISTINCT FROM auth.uid() THEN
|
||||||
|
RAISE EXCEPTION 'not authorized: you do not own this pokedex';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
DELETE FROM pokedex_pokemon_mapping
|
||||||
|
WHERE "pokedexId" = p_pokedex_id;
|
||||||
|
|
||||||
|
INSERT INTO pokedex_pokemon_mapping ("pokedexId", "pokemonId")
|
||||||
|
SELECT p_pokedex_id, unnest(p_entry_ids)
|
||||||
|
ON CONFLICT ("pokedexId", "pokemonId") DO NOTHING;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
-- RPC: stats cache
|
||||||
|
CREATE OR REPLACE FUNCTION update_and_get_stats()
|
||||||
|
RETURNS TABLE (
|
||||||
|
pokemon_caught BIGINT,
|
||||||
|
total_users BIGINT,
|
||||||
|
completed_pokedexes BIGINT,
|
||||||
|
updated_at TIMESTAMPTZ
|
||||||
|
)
|
||||||
|
SECURITY DEFINER
|
||||||
|
SET search_path = public, pg_temp
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
v_pokemon_caught BIGINT;
|
||||||
|
v_total_users BIGINT;
|
||||||
|
v_completed_pokedexes BIGINT;
|
||||||
|
v_updated_at TIMESTAMPTZ := NOW();
|
||||||
|
BEGIN
|
||||||
|
SELECT COUNT(*) INTO v_pokemon_caught
|
||||||
|
FROM catch_records
|
||||||
|
WHERE caught = true;
|
||||||
|
|
||||||
|
SELECT COUNT(*) INTO v_total_users
|
||||||
|
FROM auth.users;
|
||||||
|
|
||||||
|
SELECT COUNT(*) INTO v_completed_pokedexes
|
||||||
|
FROM (
|
||||||
|
SELECT cr."pokedexId"
|
||||||
|
FROM catch_records cr
|
||||||
|
INNER JOIN pokedex_pokemon_mapping ppm
|
||||||
|
ON cr."pokedexId" = ppm."pokedexId"
|
||||||
|
AND cr."pokemonId" = ppm."pokemonId"
|
||||||
|
GROUP BY cr."pokedexId"
|
||||||
|
HAVING COUNT(*) = COUNT(*) FILTER (WHERE cr.caught = true)
|
||||||
|
AND COUNT(*) = (
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM pokedex_pokemon_mapping
|
||||||
|
WHERE "pokedexId" = cr."pokedexId"
|
||||||
|
)
|
||||||
|
) completed;
|
||||||
|
|
||||||
|
INSERT INTO stats_cache (id, pokemon_caught, total_users, completed_pokedexes, updated_at)
|
||||||
|
VALUES (1, v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at)
|
||||||
|
ON CONFLICT (id) DO UPDATE
|
||||||
|
SET pokemon_caught = EXCLUDED.pokemon_caught,
|
||||||
|
total_users = EXCLUDED.total_users,
|
||||||
|
completed_pokedexes = EXCLUDED.completed_pokedexes,
|
||||||
|
updated_at = v_updated_at;
|
||||||
|
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at AS updated_at;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
REVOKE EXECUTE ON FUNCTION update_and_get_stats() FROM PUBLIC;
|
||||||
|
GRANT EXECUTE ON FUNCTION update_and_get_stats() TO service_role;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION get_public_stats()
|
||||||
|
RETURNS TABLE (
|
||||||
|
pokemon_caught BIGINT,
|
||||||
|
total_users BIGINT,
|
||||||
|
completed_pokedexes BIGINT,
|
||||||
|
updated_at TIMESTAMPTZ
|
||||||
|
)
|
||||||
|
SECURITY DEFINER
|
||||||
|
SET search_path = public, pg_temp
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
v_cache_exists BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
SELECT EXISTS(
|
||||||
|
SELECT 1 FROM stats_cache
|
||||||
|
WHERE stats_cache.updated_at > NOW() - INTERVAL '24 hours'
|
||||||
|
) INTO v_cache_exists;
|
||||||
|
|
||||||
|
IF v_cache_exists THEN
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT sc.pokemon_caught, sc.total_users, sc.completed_pokedexes, sc.updated_at
|
||||||
|
FROM stats_cache sc
|
||||||
|
ORDER BY sc.updated_at DESC
|
||||||
|
LIMIT 1;
|
||||||
|
ELSE
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT * FROM update_and_get_stats();
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||