mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-07-13 02:53:45 +00:00
feat(*): Add improvements to the UX and the data seeding
This commit is contained in:
+12
-6
@@ -1,6 +1,12 @@
|
|||||||
id,displayName,region,generation
|
id,displayName,region,generation,releaseYear
|
||||||
red,Red,Kanto,1
|
red,Red,Kanto,1,1996
|
||||||
blue,Blue,Kanto,1
|
blue,Blue,Kanto,1,1996
|
||||||
yellow,Yellow,Kanto,1
|
yellow,Yellow,Kanto,1,1998
|
||||||
lg--pikachu,LG: Pikachu,Kanto,7
|
lg--pikachu,LG: Pikachu,Kanto,7,2018
|
||||||
lg--eevee,LG: Eevee,Kanto,7
|
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
|
||||||
|
+175
-175
@@ -1,175 +1,175 @@
|
|||||||
pokedexNumber,name,form,games,regionalNumber
|
pokedexNumber,name,form,originGames,regionalDexGames,regionalNumber
|
||||||
1,Bulbasaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,1
|
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,2
|
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,3
|
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,
|
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,4
|
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,5
|
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,6
|
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,7
|
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,8
|
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,9
|
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,10
|
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,11
|
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,12
|
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,
|
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,13
|
13,Weedle,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,13
|
||||||
14,Kakuna,,Red|Blue|LG: Pikachu|LG: Eevee,14
|
14,Kakuna,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,14
|
||||||
15,Beedrill,,Red|Blue|LG: Pikachu|LG: Eevee,15
|
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,16
|
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,17
|
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,18
|
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,19
|
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,
|
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,20
|
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,
|
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,21
|
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,22
|
22,Fearow,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,22
|
||||||
23,Ekans,,Red|Blue|LG: Eevee,23
|
23,Ekans,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,23
|
||||||
24,Arbok,,Red|Blue|LG: Eevee,24
|
24,Arbok,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,24
|
||||||
25,Pikachu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,25
|
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,
|
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,26
|
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,
|
26,Raichu,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||||
27,Sandshrew,,Blue|Yellow|LG: Pikachu,27
|
27,Sandshrew,,Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,27
|
||||||
28,Sandslash,,Blue|Yellow|LG: Pikachu,28
|
28,Sandslash,,Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,28
|
||||||
29,Nidoran♀,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,29
|
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,30
|
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,31
|
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,32
|
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,33
|
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,34
|
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,35
|
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,36
|
36,Clefable,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,36
|
||||||
37,Vulpix,,Blue|Yellow|LG: Eevee,37
|
37,Vulpix,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,37
|
||||||
38,Ninetales,,Blue|Yellow|LG: Eevee,38
|
38,Ninetales,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,38
|
||||||
39,Jigglypuff,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,39
|
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,40
|
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,41
|
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,
|
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,42
|
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,
|
42,Golbat,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||||
43,Oddish,,Red|Yellow|LG: Pikachu,43
|
43,Oddish,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,43
|
||||||
44,Gloom,,Red|Yellow|LG: Pikachu,44
|
44,Gloom,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,44
|
||||||
44,Gloom,Female,Red|Yellow|LG: Pikachu,
|
44,Gloom,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||||
45,Vileplume,,Red|Yellow|LG: Pikachu,45
|
45,Vileplume,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,45
|
||||||
45,Vileplume,Female,Red|Yellow|LG: Pikachu,
|
45,Vileplume,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||||
46,Paras,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,46
|
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,47
|
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,48
|
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,49
|
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,50
|
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,51
|
51,Dugtrio,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,51
|
||||||
52,Meowth,,Blue|LG: Eevee,52
|
52,Meowth,,Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,52
|
||||||
53,Persian,,Blue|LG: Eevee,53
|
53,Persian,,Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,53
|
||||||
54,Psyduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,54
|
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,55
|
55,Golduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,55
|
||||||
56,Mankey,,Red|Yellow|LG: Pikachu,56
|
56,Mankey,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,56
|
||||||
57,Primeape,,Red|Yellow|LG: Pikachu,57
|
57,Primeape,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,57
|
||||||
58,Growlithe,,Red|Yellow|LG: Pikachu,58
|
58,Growlithe,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,58
|
||||||
59,Arcanine,,Red|Yellow|LG: Pikachu|LG: Eevee,59
|
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,60
|
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,61
|
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,62
|
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,63
|
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,64
|
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,
|
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,65
|
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,
|
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,66
|
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,67
|
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,68
|
68,Machamp,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,68
|
||||||
69,Bellsprout,,Blue|Yellow|LG: Eevee,69
|
69,Bellsprout,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,69
|
||||||
70,Weepinbell,,Blue|Yellow|LG: Eevee,70
|
70,Weepinbell,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,70
|
||||||
71,Victreebel,,Blue|Yellow|LG: Eevee,71
|
71,Victreebel,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,71
|
||||||
72,Tentacool,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,72
|
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,73
|
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,74
|
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,75
|
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,76
|
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,77
|
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,78
|
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,79
|
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,80
|
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,81
|
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,82
|
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,83
|
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,84
|
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,
|
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,85
|
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,
|
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,86
|
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,87
|
87,Dewgong,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,87
|
||||||
88,Grimer,,Red|Blue|Yellow|LG: Pikachu,88
|
88,Grimer,,Red|Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,88
|
||||||
89,Muk,,Red|Blue|Yellow|LG: Pikachu,89
|
89,Muk,,Red|Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,89
|
||||||
90,Shellder,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,90
|
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,91
|
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,92
|
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,93
|
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,94
|
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,95
|
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,96
|
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,97
|
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,
|
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,98
|
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,99
|
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,100
|
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,101
|
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,102
|
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,103
|
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,104
|
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,105
|
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,106
|
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,107
|
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,108
|
108,Lickitung,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,108
|
||||||
109,Koffing,,Red|Blue|LG: Eevee,109
|
109,Koffing,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,109
|
||||||
110,Weezing,,Red|Blue|LG: Eevee,110
|
110,Weezing,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,110
|
||||||
111,Rhyhorn,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,111
|
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,
|
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,112
|
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,
|
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,113
|
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,114
|
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,115
|
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,116
|
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,117
|
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,118
|
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,
|
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,119
|
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,
|
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,120
|
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,121
|
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,122
|
122,Mr. Mime,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,122
|
||||||
123,Scyther,,Red|Yellow|LG: Pikachu,123
|
123,Scyther,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,123
|
||||||
123,Scyther,Female,Red|Yellow|LG: Pikachu,
|
123,Scyther,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||||
124,Jynx,,Red|Blue|LG: Pikachu|LG: Eevee,124
|
124,Jynx,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,124
|
||||||
125,Electabuzz,,Red|LG: Pikachu|LG: Eevee,125
|
125,Electabuzz,,Red|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,125
|
||||||
126,Magmar,,Blue|LG: Pikachu|LG: Eevee,126
|
126,Magmar,,Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,126
|
||||||
127,Pinsir,,Blue|Yellow|LG: Eevee,127
|
127,Pinsir,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,127
|
||||||
128,Tauros,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,128
|
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,129
|
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,
|
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,130
|
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,
|
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,131
|
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,132
|
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,133
|
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,
|
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,134
|
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,135
|
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,136
|
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,137
|
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,138
|
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,139
|
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,140
|
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,141
|
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,142
|
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,143
|
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,144
|
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,145
|
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,146
|
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,147
|
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,148
|
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,149
|
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,150
|
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,151
|
151,Mew,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,151
|
||||||
|
|||||||
|
@@ -0,0 +1,149 @@
|
|||||||
|
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
|
||||||
|
@@ -113,7 +113,10 @@ function generateMigration(region) {
|
|||||||
|
|
||||||
const rows = pokemon.map(p => {
|
const rows = pokemon.map(p => {
|
||||||
const form = p.form ? `'${p.form}'` : 'NULL';
|
const form = p.form ? `'${p.form}'` : 'NULL';
|
||||||
const gamesList = p.games.split('|');
|
// Use regionalDexGames for the database (regional dex availability)
|
||||||
|
// originGames column is for future origin dex feature
|
||||||
|
const gamesField = p.regionalDexGames || p.games; // Fallback to old 'games' column for compatibility
|
||||||
|
const gamesList = gamesField.split('|');
|
||||||
const gamesArray = `ARRAY[${gamesList.map(g => `'${g}'`).join(', ')}]`;
|
const gamesArray = `ARRAY[${gamesList.map(g => `'${g}'`).join(', ')}]`;
|
||||||
|
|
||||||
return `(${p.pokedexNumber}, '${p.name}', ${form}, false, '${region}', ${gamesArray})`;
|
return `(${p.pokedexNumber}, '${p.name}', ${form}, false, '${region}', ${gamesArray})`;
|
||||||
@@ -124,11 +127,6 @@ function generateMigration(region) {
|
|||||||
|
|
||||||
// Regional dex numbers (separate table)
|
// Regional dex numbers (separate table)
|
||||||
sql += `-- Insert ${region} regional dex numbers\n`;
|
sql += `-- Insert ${region} regional dex numbers\n`;
|
||||||
sql += `INSERT INTO regional_dex_numbers (\n`;
|
|
||||||
sql += ` pokedex_entry_id,\n`;
|
|
||||||
sql += ` region,\n`;
|
|
||||||
sql += ` dex_number\n`;
|
|
||||||
sql += `) VALUES\n`;
|
|
||||||
|
|
||||||
const dexRows = pokemon
|
const dexRows = pokemon
|
||||||
.filter(p => p.regionalNumber) // Only entries with regional dex numbers
|
.filter(p => p.regionalNumber) // Only entries with regional dex numbers
|
||||||
@@ -141,10 +139,15 @@ function generateMigration(region) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (dexRows.length > 0) {
|
if (dexRows.length > 0) {
|
||||||
|
sql += `INSERT INTO regional_dex_numbers (\n`;
|
||||||
|
sql += ` pokedex_entry_id,\n`;
|
||||||
|
sql += ` region,\n`;
|
||||||
|
sql += ` dex_number\n`;
|
||||||
|
sql += `) VALUES\n`;
|
||||||
sql += dexRows.join(',\n');
|
sql += dexRows.join(',\n');
|
||||||
sql += ';\n\n';
|
sql += ';\n\n';
|
||||||
} else {
|
} else {
|
||||||
sql += ' -- No regional dex numbers for this region\n\n';
|
sql += '-- No regional dex numbers for this region\n\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add metadata
|
// Add metadata
|
||||||
@@ -155,7 +158,7 @@ function generateMigration(region) {
|
|||||||
sql += ` ('${region.toLowerCase()}_pokemon_count', '${pokemon.filter(p => !p.form).length}');\n`;
|
sql += ` ('${region.toLowerCase()}_pokemon_count', '${pokemon.filter(p => !p.form).length}');\n`;
|
||||||
|
|
||||||
// 4. Write file
|
// 4. Write file
|
||||||
const timestamp = new Date().toISOString().replace(/[-:.]/g, '').slice(0, 14);
|
const timestamp = new Date().toISOString().replace(/[-:T.]/g, '').slice(0, 14);
|
||||||
const filename = `${timestamp}_seed_${region.toLowerCase()}.sql`;
|
const filename = `${timestamp}_seed_${region.toLowerCase()}.sql`;
|
||||||
const outputPath = path.join(__dirname, '..', 'supabase', 'migrations', filename);
|
const outputPath = path.join(__dirname, '..', 'supabase', 'migrations', filename);
|
||||||
|
|
||||||
|
|||||||
@@ -31,13 +31,20 @@
|
|||||||
// Sanitise the pokemon name by making it all lowercase and replacing any spaces with hyphens and removing other characters
|
// 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, '');
|
let sanitisedPokemonName = pokemonName.toLowerCase().replace(/[^a-z]/g, '');
|
||||||
|
|
||||||
// Get the PokeApi id for the pokemon
|
/**
|
||||||
|
* 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;
|
let pokeApiId;
|
||||||
if (form && form.length > 0 && form !== 'Female') {
|
if (form && form.length > 0 && form !== 'Female') {
|
||||||
// Sanitise the form by making it all lowercase and replacing spaces with hyphens
|
// Sanitise the form by making it all lowercase and replacing spaces with hyphens
|
||||||
let sanitisedForm = form
|
let sanitisedForm = form
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.replaceAll(' ', '-')
|
.replaceAll(' ', '-')
|
||||||
|
.replaceAll('!', 'exclamation')
|
||||||
|
.replaceAll('?', 'question')
|
||||||
.replaceAll('2', 'two')
|
.replaceAll('2', 'two')
|
||||||
.replaceAll('3', 'three')
|
.replaceAll('3', 'three')
|
||||||
.replaceAll('4', 'four');
|
.replaceAll('4', 'four');
|
||||||
@@ -59,20 +66,17 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the form is contained in the identifier, use that
|
// Try to find by PokeAPI identifier (e.g., "meowth-alola" -> 10107)
|
||||||
if (
|
const pokeApiEntry = pokeApiPokemon.find(
|
||||||
pokeApiPokemon.find(
|
(pokemon) => pokemon.identifier === sanitisedPokemonName + '-' + sanitisedForm
|
||||||
(pokemon) => pokemon.identifier === sanitisedPokemonName + '-' + sanitisedForm
|
);
|
||||||
)
|
|
||||||
) {
|
if (pokeApiEntry) {
|
||||||
pokeApiId = pokeApiPokemon.find(
|
// Pattern 1: Use PokeAPI ID (e.g., 10107.png for Meowth-Alola)
|
||||||
(pokemon) => pokemon.identifier === sanitisedPokemonName + '-' + sanitisedForm
|
pokeApiId = pokeApiEntry.id;
|
||||||
)?.id;
|
|
||||||
} else {
|
} else {
|
||||||
// If the form is not contained in the identifier, use the species_id
|
// Pattern 2: Use {pokedexNumber}-{form} (e.g., 201-a.png for Unown-A)
|
||||||
pokeApiId = pokeApiPokemon.find(
|
pokeApiId = `${strippedPokedexNumber}-${sanitisedForm}`;
|
||||||
(pokemon) => pokemon.species_id.toString() === strippedPokedexNumber
|
|
||||||
)?.id;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pokeApiId = pokeApiPokemon.find(
|
pokeApiId = pokeApiPokemon.find(
|
||||||
|
|||||||
@@ -139,6 +139,7 @@
|
|||||||
bind:value={catchRecord.personalNotes}
|
bind:value={catchRecord.personalNotes}
|
||||||
id={`personalNotesInput-${catchRecord._id || pokedexEntry._id}`}
|
id={`personalNotesInput-${catchRecord._id || pokedexEntry._id}`}
|
||||||
class="form-textarea w-full p-2 border rounded"
|
class="form-textarea w-full p-2 border rounded"
|
||||||
|
style="min-height: 120px;"
|
||||||
on:change={updateCatchRecord}
|
on:change={updateCatchRecord}
|
||||||
></textarea>
|
></textarea>
|
||||||
</p>
|
</p>
|
||||||
@@ -199,7 +200,8 @@
|
|||||||
|
|
||||||
<style>
|
<style>
|
||||||
.dex-column {
|
.dex-column {
|
||||||
width: 300px;
|
flex: 1;
|
||||||
|
min-width: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sprite-container {
|
.sprite-container {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { onMount } from 'svelte';
|
||||||
import type { Pokedex } from '$lib/models/Pokedex';
|
import type { Pokedex } from '$lib/models/Pokedex';
|
||||||
|
|
||||||
export let pokedex: Partial<Pokedex> = {
|
export let pokedex: Partial<Pokedex> = {
|
||||||
@@ -14,6 +15,26 @@
|
|||||||
export let onSubmit: () => void;
|
export let onSubmit: () => void;
|
||||||
export let onCancel: () => void;
|
export let onCancel: () => void;
|
||||||
|
|
||||||
|
let games: string[] = [];
|
||||||
|
let loadingGames = true;
|
||||||
|
|
||||||
|
// Fetch available games from the database
|
||||||
|
onMount(async () => {
|
||||||
|
try {
|
||||||
|
const response = await fetch('/api/games');
|
||||||
|
if (response.ok) {
|
||||||
|
const data = await response.json();
|
||||||
|
games = data.games || [];
|
||||||
|
} else {
|
||||||
|
console.error('Failed to fetch games');
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error fetching games:', error);
|
||||||
|
} finally {
|
||||||
|
loadingGames = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Validation
|
// Validation
|
||||||
$: hasAtLeastOneType =
|
$: hasAtLeastOneType =
|
||||||
pokedex.isLivingDex || pokedex.isShinyDex || pokedex.isOriginDex || pokedex.isFormDex;
|
pokedex.isLivingDex || pokedex.isShinyDex || pokedex.isOriginDex || pokedex.isFormDex;
|
||||||
@@ -83,15 +104,20 @@
|
|||||||
<label class="label" for="game-scope">
|
<label class="label" for="game-scope">
|
||||||
<span class="label-text">Game Scope</span>
|
<span class="label-text">Game Scope</span>
|
||||||
</label>
|
</label>
|
||||||
<select id="game-scope" class="select select-bordered" bind:value={pokedex.gameScope}>
|
<select
|
||||||
|
id="game-scope"
|
||||||
|
class="select select-bordered"
|
||||||
|
bind:value={pokedex.gameScope}
|
||||||
|
disabled={loadingGames}
|
||||||
|
>
|
||||||
<option value={null}>All Games</option>
|
<option value={null}>All Games</option>
|
||||||
<option value="Scarlet">Scarlet</option>
|
{#if loadingGames}
|
||||||
<option value="Violet">Violet>
|
<option disabled>Loading games...</option>
|
||||||
<option value="Sword">Sword</option>
|
{:else}
|
||||||
<option value="Shield">Shield</option>
|
{#each games as game}
|
||||||
<option value="Brilliant Diamond">Brilliant Diamond</option>
|
<option value={game}>{game}</option>
|
||||||
<option value="Shining Pearl">Shining Pearl</option>
|
{/each}
|
||||||
<option value="Legends: Arceus">Legends: Arceus</option>
|
{/if}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { onMount, onDestroy } from 'svelte';
|
||||||
|
|
||||||
|
export let isOpen: boolean;
|
||||||
|
export let onClose: () => void;
|
||||||
|
|
||||||
|
function handleBackdropClick() {
|
||||||
|
onClose();
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleKeyDown(event: KeyboardEvent) {
|
||||||
|
if (event.key === 'Escape' && isOpen) {
|
||||||
|
onClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
});
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
window.removeEventListener('keydown', handleKeyDown);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if isOpen}
|
||||||
|
<div class="modal modal-open" role="dialog" aria-modal="true">
|
||||||
|
<div class="modal-box-custom">
|
||||||
|
<button class="close-button" on:click={onClose} aria-label="Close"> ✕ </button>
|
||||||
|
<div class="modal-content">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="modal-backdrop bg-black/50"
|
||||||
|
on:click={handleBackdropClick}
|
||||||
|
on:keydown={() => {}}
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.modal-backdrop {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-box-custom {
|
||||||
|
max-width: 72rem;
|
||||||
|
width: 100%;
|
||||||
|
max-height: 90vh;
|
||||||
|
background-color: rgba(220, 38, 38, 0.95);
|
||||||
|
border: none;
|
||||||
|
box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);
|
||||||
|
outline: none;
|
||||||
|
position: relative;
|
||||||
|
border-radius: 1rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
overflow-y: auto;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button {
|
||||||
|
position: absolute;
|
||||||
|
right: 1rem;
|
||||||
|
top: 1rem;
|
||||||
|
width: 2.5rem;
|
||||||
|
height: 2.5rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
color: white;
|
||||||
|
border: 2px solid rgba(255, 255, 255, 0.3);
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: bold;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
transition: all 0.2s;
|
||||||
|
z-index: 10;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
border-color: rgba(255, 255, 255, 0.5);
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove margin and background from card inside modal */
|
||||||
|
.modal-content :global(.dex-entry) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
background-color: transparent !important;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.modal-box-custom {
|
||||||
|
width: 91.666667%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import Pagination from '$lib/components/Pagination.svelte';
|
|
||||||
import type { Pokedex } from '$lib/models/Pokedex';
|
|
||||||
|
|
||||||
export let pokedex: Pokedex | null = null;
|
|
||||||
export let viewAsBoxes = false;
|
|
||||||
export let currentPage = 1;
|
|
||||||
export let itemsPerPage = 20;
|
|
||||||
export let totalPages = 0;
|
|
||||||
export let showOrigins = true;
|
|
||||||
export let showShiny = false;
|
|
||||||
export let catchRegion = '';
|
|
||||||
export let catchGame = '';
|
|
||||||
export let toggleOrigins = () => {};
|
|
||||||
export let toggleShiny = () => {};
|
|
||||||
export let getData = () => {};
|
|
||||||
export let toggleViewAsBoxes = () => {};
|
|
||||||
|
|
||||||
// Get active type badges
|
|
||||||
$: typeBadges = pokedex
|
|
||||||
? [
|
|
||||||
pokedex.isLivingDex && 'Living',
|
|
||||||
pokedex.isShinyDex && 'Shiny',
|
|
||||||
pokedex.isOriginDex && 'Origin',
|
|
||||||
pokedex.isFormDex && 'Form'
|
|
||||||
].filter(Boolean)
|
|
||||||
: [];
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<aside
|
|
||||||
class="menu bg-gray-800 text-white min-h-full w-64 p-4 lg:fixed xs:top-0 lg:left-0 h-full lg:h-5/6"
|
|
||||||
>
|
|
||||||
<!-- Pokédex Info Section -->
|
|
||||||
{#if pokedex}
|
|
||||||
<div class="mb-6 pb-4 border-b border-gray-700">
|
|
||||||
<h2 class="text-xl font-semibold mb-2">{pokedex.name}</h2>
|
|
||||||
<div class="flex flex-wrap gap-1 mb-2">
|
|
||||||
{#each typeBadges as badge}
|
|
||||||
<span class="badge badge-sm badge-primary">{badge}</span>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
{#if pokedex.gameScope}
|
|
||||||
<p class="text-sm text-gray-400">Game: {pokedex.gameScope}</p>
|
|
||||||
{/if}
|
|
||||||
<a href="/my-pokedexes" class="btn btn-ghost btn-sm mt-2 w-full"> Manage Pokédexes </a>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
<h2 class="text-2xl font-semibold mb-4">Views</h2>
|
|
||||||
<ul>
|
|
||||||
<li class="mb-2">
|
|
||||||
<button class="block p-2 hover:bg-gray-700 rounded" on:click={toggleViewAsBoxes}>
|
|
||||||
{viewAsBoxes ? 'Switch to List View' : 'Switch to Box View'}
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h2 class="text-2xl font-semibold mb-4">Filters</h2>
|
|
||||||
<ul>
|
|
||||||
<li class="mb-2">
|
|
||||||
<button class="block p-2 hover:bg-gray-700 rounded" on:click={toggleOrigins}>
|
|
||||||
Toggle Origins (Currently {showOrigins ? 'On' : 'Off'})
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li class="mb-2">
|
|
||||||
<button class="block p-2 hover:bg-gray-700 rounded" on:click={toggleShiny}>
|
|
||||||
Toggle Shiny (Currently {showShiny ? 'On' : 'Off'})
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div class="mb-4">
|
|
||||||
<label for="catchRegionSelect">Region to catch in:</label>
|
|
||||||
<select
|
|
||||||
id="catchRegionSelect"
|
|
||||||
class="select select-bordered w-full max-w-xs text-black"
|
|
||||||
bind:value={catchRegion}
|
|
||||||
on:change={getData}
|
|
||||||
>
|
|
||||||
<option value="">All</option>
|
|
||||||
<option value="Kanto">Kanto (Red, Blue, Yellow, LG: Pikachu, LG: Eevee)</option>
|
|
||||||
<option value="Johto">Johto (Gold, Silver, Crystal, HG, SS)</option>
|
|
||||||
<option value="Hoenn">Hoenn (Ruby, Sapphire, Emerald, OR, AS)</option>
|
|
||||||
<option value="Sinnoh">Sinnoh (Diamond, Pearl, Platinum, BD, SP)</option>
|
|
||||||
<option value="Unova">Unova (Black, White, Black2, White2, Dream Radar)</option>
|
|
||||||
<option value="Kalos">Kalos (X, Y)</option>
|
|
||||||
<option value="Alola">Alola (Sun, Moon, Moon Demo, US, UM)</option>
|
|
||||||
<option value="Galar">Galar (Sword, Shield)</option>
|
|
||||||
<option value="Hisui">Hisui (PLA)</option>
|
|
||||||
<option value="Paldea">Paldea (Scarlet, Violet)</option>
|
|
||||||
<option value="Unknown">Unknown (Home, Go)</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mb-4">
|
|
||||||
<label for="catchGameSelect">Game to catch in: {catchGame}</label>
|
|
||||||
<select
|
|
||||||
id="catchGameSelect"
|
|
||||||
class="select select-bordered w-full max-w-xs text-black"
|
|
||||||
bind:value={catchGame}
|
|
||||||
on:change={getData}
|
|
||||||
>
|
|
||||||
<option value="">All</option>
|
|
||||||
<option value="Red">Red (Kanto)</option>
|
|
||||||
<option value="Blue">Blue (Kanto)</option>
|
|
||||||
<option value="Yellow">Yellow (Kanto)</option>
|
|
||||||
<option value="LG: Pikachu">LG: Pikachu (Kanto)</option>
|
|
||||||
<option value="LG: Eevee">LG: Eevee (Kanto)</option>
|
|
||||||
<option value="Gold">Gold (Johto)</option>
|
|
||||||
<option value="Silver">Silver (Johto)</option>
|
|
||||||
<option value="Crystal">Crystal (Johto)</option>
|
|
||||||
<option value="HG">HG (Johto)</option>
|
|
||||||
<option value="SS">SS (Johto)</option>
|
|
||||||
<option value="Ruby">Ruby (Hoenn)</option>
|
|
||||||
<option value="Sapphire">Sapphire (Hoenn)</option>
|
|
||||||
<option value="Emerald">Emerald (Hoenn)</option>
|
|
||||||
<option value="OR">OR (Hoenn)</option>
|
|
||||||
<option value="AS">AS (Hoenn)</option>
|
|
||||||
<option value="Diamond">Diamond (Sinnoh)</option>
|
|
||||||
<option value="Pearl">Pearl (Sinnoh)</option>
|
|
||||||
<option value="Platinum">Platinum (Sinnoh)</option>
|
|
||||||
<option value="BD">BD (Sinnoh)</option>
|
|
||||||
<option value="SP">SP (Sinnoh)</option>
|
|
||||||
<option value="Black">Black (Unova)</option>
|
|
||||||
<option value="White">White (Unova)</option>
|
|
||||||
<option value="Black2">Black2 (Unova)</option>
|
|
||||||
<option value="White2">White2 (Unova)</option>
|
|
||||||
<option value="Dream Radar">Dream Radar (Unova)</option>
|
|
||||||
<option value="X">X (Kalos)</option>
|
|
||||||
<option value="Y">Y (Kalos)</option>
|
|
||||||
<option value="Sun">Sun (Alola)</option>
|
|
||||||
<option value="Moon">Moon (Alola)</option>
|
|
||||||
<option value="Moon Demo">Moon Demo (Alola)</option>
|
|
||||||
<option value="US">US (Alola)</option>
|
|
||||||
<option value="UM">UM (Alola)</option>
|
|
||||||
<option value="Sword">Sword (Galar)</option>
|
|
||||||
<option value="Shield">Shield (Galar)</option>
|
|
||||||
<option value="PLA">PLA (Hisui)</option>
|
|
||||||
<option value="Scarlet">Scarlet (Paldea)</option>
|
|
||||||
<option value="Violet">Violet (Paldea)</option>
|
|
||||||
<option value="Home">Home (Unknown)</option>
|
|
||||||
<option value="Go">Go (Unknown)</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{#if !viewAsBoxes}
|
|
||||||
<h2 class="text-2xl font-semibold mb-4">Paging</h2>
|
|
||||||
<div>
|
|
||||||
<Pagination bind:currentPage bind:itemsPerPage bind:totalPages />
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</aside>
|
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
export let markBoxAsInHome = (boxNumber: number) => {};
|
export let markBoxAsInHome = (boxNumber: number) => {};
|
||||||
export let markBoxAsNotInHome = (boxNumber: number) => {};
|
export let markBoxAsNotInHome = (boxNumber: number) => {};
|
||||||
export let createCatchRecords = () => {};
|
export let createCatchRecords = () => {};
|
||||||
|
export let onPokemonClick: (pokemon: CombinedData) => void = () => {};
|
||||||
|
|
||||||
function cellBackgroundColourClass(catchRecord: CatchRecord | null) {
|
function cellBackgroundColourClass(catchRecord: CatchRecord | null) {
|
||||||
if (catchRecord?.caught) {
|
if (catchRecord?.caught) {
|
||||||
@@ -51,19 +52,19 @@
|
|||||||
{#each boxNumbers as boxNumber}
|
{#each boxNumbers as boxNumber}
|
||||||
<div class="mb-8 md:w-1/2 px-2">
|
<div class="mb-8 md:w-1/2 px-2">
|
||||||
<h2 class="text-xl font-bold mb-4">Box {boxNumber}</h2>
|
<h2 class="text-xl font-bold mb-4">Box {boxNumber}</h2>
|
||||||
<button class="btn" on:click={markBoxAsNotCaught(boxNumber)}>
|
<button class="btn" on:click={() => markBoxAsNotCaught(boxNumber)}>
|
||||||
Mark box as not 'caught'
|
Mark box as not 'caught'
|
||||||
</button>
|
</button>
|
||||||
<button class="btn" on:click={markBoxAsCaught(boxNumber)}>
|
<button class="btn" on:click={() => markBoxAsCaught(boxNumber)}>
|
||||||
Mark box as 'caught'
|
Mark box as 'caught'
|
||||||
</button>
|
</button>
|
||||||
<button class="btn" on:click={markBoxAsNeedsToEvolve(boxNumber)}
|
<button class="btn" on:click={() => markBoxAsNeedsToEvolve(boxNumber)}
|
||||||
>Mark box as 'needs to evolve'</button
|
>Mark box as 'needs to evolve'</button
|
||||||
>
|
>
|
||||||
<button class="btn" on:click={markBoxAsInHome(boxNumber)}
|
<button class="btn" on:click={() => markBoxAsInHome(boxNumber)}
|
||||||
>Mark box as 'in Home'</button
|
>Mark box as 'in Home'</button
|
||||||
>
|
>
|
||||||
<button class="btn" on:click={markBoxAsNotInHome(boxNumber)}
|
<button class="btn" on:click={() => markBoxAsNotInHome(boxNumber)}
|
||||||
>Mark box as not 'in Home'</button
|
>Mark box as not 'in Home'</button
|
||||||
>
|
>
|
||||||
<div class="grid grid-cols-6">
|
<div class="grid grid-cols-6">
|
||||||
@@ -72,10 +73,13 @@
|
|||||||
? pokedexEntry.boxPlacementForms
|
? pokedexEntry.boxPlacementForms
|
||||||
: pokedexEntry.boxPlacement}
|
: pokedexEntry.boxPlacement}
|
||||||
{#if placement.box === boxNumber}
|
{#if placement.box === boxNumber}
|
||||||
<div
|
<button
|
||||||
class="pokemon-box {cellBackgroundColourClass(catchRecord)}"
|
type="button"
|
||||||
|
class="pokemon-box {cellBackgroundColourClass(catchRecord)} hover:scale-105 hover:shadow-lg hover:z-50 transition-all cursor-pointer relative"
|
||||||
style="grid-column-start: {placement.column}; grid-row-start: {placement.row};
|
style="grid-column-start: {placement.column}; grid-row-start: {placement.row};
|
||||||
{cellBackgroundColourStyle(pokedexEntry, catchRecord)}"
|
{cellBackgroundColourStyle(pokedexEntry, catchRecord)}"
|
||||||
|
on:click={() => onPokemonClick({ pokedexEntry, catchRecord })}
|
||||||
|
aria-label="View details for {pokedexEntry.pokemon}"
|
||||||
>
|
>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<div slot="hover-target">
|
<div slot="hover-target">
|
||||||
@@ -106,7 +110,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</button>
|
||||||
{/if}
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import PokedexEntryCatchRecord from './PokedexEntryCatchRecord.svelte';
|
|
||||||
import type { CombinedData } from '$lib/models/CombinedData';
|
|
||||||
|
|
||||||
export let showOrigins = true;
|
|
||||||
export let showForms = true;
|
|
||||||
export let showShiny = false;
|
|
||||||
export let combinedData: CombinedData[] | null;
|
|
||||||
export let creatingRecords = false;
|
|
||||||
export let totalRecordsCreated = 0;
|
|
||||||
export let failedToLoad = false;
|
|
||||||
export let updateACatch = (event: any) => {};
|
|
||||||
export let createCatchRecords = () => {};
|
|
||||||
export let userId: string | null = null;
|
|
||||||
export let pokedexId: string;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<main class="flex-1 p-4 w-full">
|
|
||||||
<div class="max-w-min mx-auto">
|
|
||||||
{#if combinedData && combinedData.length > 0}
|
|
||||||
{#each combinedData as { pokedexEntry, catchRecord }}
|
|
||||||
<PokedexEntryCatchRecord
|
|
||||||
{pokedexEntry}
|
|
||||||
{showOrigins}
|
|
||||||
{showForms}
|
|
||||||
{showShiny}
|
|
||||||
{userId}
|
|
||||||
{pokedexId}
|
|
||||||
bind:catchRecord
|
|
||||||
on:updateCatch={updateACatch}
|
|
||||||
/>
|
|
||||||
{/each}
|
|
||||||
{:else if failedToLoad}
|
|
||||||
{#if creatingRecords && totalRecordsCreated > 0}
|
|
||||||
<p>Processed {totalRecordsCreated} Pokédex entries so far...</p>
|
|
||||||
<p>Please be patient, this may take some time.</p>
|
|
||||||
{:else if creatingRecords}
|
|
||||||
<p>Processing...</p>
|
|
||||||
<p>Please be patient, this may take some time.</p>
|
|
||||||
{:else}
|
|
||||||
<h1>Failed to load</h1>
|
|
||||||
<p>
|
|
||||||
If you're seeing this, you probably haven't created your Pokédex data yet. Please do so by
|
|
||||||
clicking this button.
|
|
||||||
</p>
|
|
||||||
<button class="btn" on:click={createCatchRecords}>Create Pokédex data</button>
|
|
||||||
{/if}
|
|
||||||
{:else}
|
|
||||||
<div class="min-w-max mx-auto">
|
|
||||||
<h1>Loading Pokédex</h1>
|
|
||||||
<span class="loading loading-spinner loading-xl"></span>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
@@ -12,23 +12,7 @@ export interface PokedexEntry {
|
|||||||
regionToEvolveIn: string;
|
regionToEvolveIn: string;
|
||||||
evolutionInformation: string;
|
evolutionInformation: string;
|
||||||
catchInformation: string[];
|
catchInformation: string[];
|
||||||
// Regional dex numbers
|
// Note: Regional dex numbers stored in separate regional_dex_numbers table
|
||||||
kantoDexNumber?: number;
|
|
||||||
johtoDexNumber?: number;
|
|
||||||
hoennDexNumber?: number;
|
|
||||||
sinnohDexNumber?: number;
|
|
||||||
unovaBwDexNumber?: number;
|
|
||||||
unovaB2w2DexNumber?: number;
|
|
||||||
kalosCentralDexNumber?: number;
|
|
||||||
kalosCoastalDexNumber?: number;
|
|
||||||
kalosMountainDexNumber?: number;
|
|
||||||
alolaSmDexNumber?: number;
|
|
||||||
alolaUsumDexNumber?: number;
|
|
||||||
galarDexNumber?: number;
|
|
||||||
galarIsleOfArmorDexNumber?: number;
|
|
||||||
galarCrownTundraDexNumber?: number;
|
|
||||||
hisuiDexNumber?: number;
|
|
||||||
paldeaDexNumber?: number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Database record type for Supabase
|
// Database record type for Supabase
|
||||||
@@ -43,23 +27,7 @@ export interface PokedexEntryDB {
|
|||||||
regionToEvolveIn: string | null;
|
regionToEvolveIn: string | null;
|
||||||
evolutionInformation: string | null;
|
evolutionInformation: string | null;
|
||||||
catchInformation: string[] | null;
|
catchInformation: string[] | null;
|
||||||
// Regional dex numbers - snake_case to match database
|
// Note: Regional dex numbers stored in separate regional_dex_numbers table
|
||||||
kanto_dex_number: number | null;
|
|
||||||
johto_dex_number: number | null;
|
|
||||||
hoenn_dex_number: number | null;
|
|
||||||
sinnoh_dex_number: number | null;
|
|
||||||
unova_bw_dex_number: number | null;
|
|
||||||
unova_b2w2_dex_number: number | null;
|
|
||||||
kalos_central_dex_number: number | null;
|
|
||||||
kalos_coastal_dex_number: number | null;
|
|
||||||
kalos_mountain_dex_number: number | null;
|
|
||||||
alola_sm_dex_number: number | null;
|
|
||||||
alola_usum_dex_number: number | null;
|
|
||||||
galar_dex_number: number | null;
|
|
||||||
galar_isle_of_armor_dex_number: number | null;
|
|
||||||
galar_crown_tundra_dex_number: number | null;
|
|
||||||
hisui_dex_number: number | null;
|
|
||||||
paldea_dex_number: number | null;
|
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,6 @@ import { type PokedexEntry, type PokedexEntryDB } from '$lib/models/PokedexEntry
|
|||||||
import { type CatchRecord, type CatchRecordDB } from '$lib/models/CatchRecord';
|
import { type CatchRecord, type CatchRecordDB } from '$lib/models/CatchRecord';
|
||||||
import { type CombinedData } from '$lib/models/CombinedData';
|
import { type CombinedData } from '$lib/models/CombinedData';
|
||||||
import type { SupabaseClient } from '@supabase/supabase-js';
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
||||||
import { getRegionalDexColumnName } from '$lib/utils/regionalDexMapping';
|
|
||||||
import { calculateBoxPlacement } from '$lib/utils/boxPlacement';
|
|
||||||
|
|
||||||
class CombinedDataRepository {
|
class CombinedDataRepository {
|
||||||
constructor(
|
constructor(
|
||||||
@@ -27,23 +25,8 @@ class CombinedDataRepository {
|
|||||||
catchInformation: entry.catchInformation || [],
|
catchInformation: entry.catchInformation || [],
|
||||||
// Box placement will be calculated dynamically after sorting
|
// Box placement will be calculated dynamically after sorting
|
||||||
boxPlacementForms: { box: 0, row: 0, column: 0 },
|
boxPlacementForms: { box: 0, row: 0, column: 0 },
|
||||||
boxPlacement: { box: 0, row: 0, column: 0 },
|
boxPlacement: { box: 0, row: 0, column: 0 }
|
||||||
kantoDexNumber: entry.kanto_dex_number ?? undefined,
|
// Note: Regional dex numbers are stored in separate regional_dex_numbers table
|
||||||
johtoDexNumber: entry.johto_dex_number ?? undefined,
|
|
||||||
hoennDexNumber: entry.hoenn_dex_number ?? undefined,
|
|
||||||
sinnohDexNumber: entry.sinnoh_dex_number ?? undefined,
|
|
||||||
unovaBwDexNumber: entry.unova_bw_dex_number ?? undefined,
|
|
||||||
unovaB2w2DexNumber: entry.unova_b2w2_dex_number ?? undefined,
|
|
||||||
kalosCentralDexNumber: entry.kalos_central_dex_number ?? undefined,
|
|
||||||
kalosCoastalDexNumber: entry.kalos_coastal_dex_number ?? undefined,
|
|
||||||
kalosMountainDexNumber: entry.kalos_mountain_dex_number ?? undefined,
|
|
||||||
alolaSmDexNumber: entry.alola_sm_dex_number ?? undefined,
|
|
||||||
alolaUsumDexNumber: entry.alola_usum_dex_number ?? undefined,
|
|
||||||
galarDexNumber: entry.galar_dex_number ?? undefined,
|
|
||||||
galarIsleOfArmorDexNumber: entry.galar_isle_of_armor_dex_number ?? undefined,
|
|
||||||
galarCrownTundraDexNumber: entry.galar_crown_tundra_dex_number ?? undefined,
|
|
||||||
hisuiDexNumber: entry.hisui_dex_number ?? undefined,
|
|
||||||
paldeaDexNumber: entry.paldea_dex_number ?? undefined
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,8 +54,8 @@ class CombinedDataRepository {
|
|||||||
|
|
||||||
// Apply filters
|
// Apply filters
|
||||||
if (!enableForms) {
|
if (!enableForms) {
|
||||||
// Filter to only base forms (form is NULL)
|
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
||||||
query = query.is('form', null);
|
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (region) {
|
if (region) {
|
||||||
@@ -83,22 +66,9 @@ class CombinedDataRepository {
|
|||||||
query = query.contains('gamesToCatchIn', [game]);
|
query = query.contains('gamesToCatchIn', [game]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine ordering strategy based on game filter
|
// Always order by national dex number
|
||||||
if (game) {
|
// Note: Regional dex ordering would require joining with regional_dex_numbers table
|
||||||
const regionalColumn = getRegionalDexColumnName(game);
|
query = query.order('pokedexNumber', { ascending: true });
|
||||||
if (regionalColumn) {
|
|
||||||
// Order by regional dex with national dex fallback for NULLs
|
|
||||||
query = query
|
|
||||||
.order(regionalColumn, { ascending: true, nullsFirst: false })
|
|
||||||
.order('pokedexNumber', { ascending: true });
|
|
||||||
} else {
|
|
||||||
// Game specified but has no regional dex mapping
|
|
||||||
query = query.order('pokedexNumber', { ascending: true });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// No game filter - order by national dex number
|
|
||||||
query = query.order('pokedexNumber', { ascending: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data: entries, error: entriesError } = await query;
|
const { data: entries, error: entriesError } = await query;
|
||||||
|
|
||||||
@@ -162,8 +132,8 @@ class CombinedDataRepository {
|
|||||||
|
|
||||||
// Apply filters
|
// Apply filters
|
||||||
if (!enableForms) {
|
if (!enableForms) {
|
||||||
// Filter to only base forms (form is NULL)
|
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
||||||
query = query.is('form', null);
|
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (region) {
|
if (region) {
|
||||||
@@ -174,22 +144,9 @@ class CombinedDataRepository {
|
|||||||
query = query.contains('gamesToCatchIn', [game]);
|
query = query.contains('gamesToCatchIn', [game]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine ordering strategy based on game filter
|
// Always order by national dex number
|
||||||
if (game) {
|
// Note: Regional dex ordering would require joining with regional_dex_numbers table
|
||||||
const regionalColumn = getRegionalDexColumnName(game);
|
query = query.order('pokedexNumber', { ascending: true });
|
||||||
if (regionalColumn) {
|
|
||||||
// Order by regional dex with national dex fallback for NULLs
|
|
||||||
query = query
|
|
||||||
.order(regionalColumn, { ascending: true, nullsFirst: false })
|
|
||||||
.order('pokedexNumber', { ascending: true });
|
|
||||||
} else {
|
|
||||||
// Game specified but has no regional dex mapping
|
|
||||||
query = query.order('pokedexNumber', { ascending: true });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// No game filter - order by national dex number
|
|
||||||
query = query.order('pokedexNumber', { ascending: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data: entries, error: entriesError } = await query;
|
const { data: entries, error: entriesError } = await query;
|
||||||
|
|
||||||
@@ -247,8 +204,8 @@ class CombinedDataRepository {
|
|||||||
|
|
||||||
// Apply same filters as in findCombinedData
|
// Apply same filters as in findCombinedData
|
||||||
if (!enableForms) {
|
if (!enableForms) {
|
||||||
// Filter to only base forms (form is NULL)
|
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
||||||
query = query.is('form', null);
|
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (region) {
|
if (region) {
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import { json } from '@sveltejs/kit';
|
||||||
|
import type { RequestHandler } from './$types';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GET /api/games
|
||||||
|
* Returns all games from the games table, sorted by release year descending (newest first)
|
||||||
|
*/
|
||||||
|
export const GET: RequestHandler = async ({ locals }) => {
|
||||||
|
const { supabase } = locals;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Query games table for all games, sorted by release year descending
|
||||||
|
const { data, error } = await supabase
|
||||||
|
.from('games')
|
||||||
|
.select('displayName, releaseYear')
|
||||||
|
.order('releaseYear', { ascending: false })
|
||||||
|
.order('displayName', { ascending: true }); // Secondary sort by name for same year
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
console.error('Error fetching games:', error);
|
||||||
|
return json({ error: 'Failed to fetch games' }, { status: 500 });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract just the display names
|
||||||
|
const gameNames = data.map((row) => row.displayName);
|
||||||
|
|
||||||
|
return json({ games: gameNames });
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Unexpected error fetching games:', err);
|
||||||
|
return json({ error: 'Internal server error' }, { status: 500 });
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -5,9 +5,9 @@
|
|||||||
import { type CombinedData } from '$lib/models/CombinedData';
|
import { type CombinedData } from '$lib/models/CombinedData';
|
||||||
import { browser } from '$app/environment';
|
import { browser } from '$app/environment';
|
||||||
import type { PokedexEntry } from '$lib/models/PokedexEntry';
|
import type { PokedexEntry } from '$lib/models/PokedexEntry';
|
||||||
import PokedexSidebar from '$lib/components/pokedex/PokedexSidebar.svelte';
|
|
||||||
import PokedexViewList from '$lib/components/pokedex/PokedexViewList.svelte';
|
|
||||||
import PokedexViewBoxes from '$lib/components/pokedex/PokedexViewBoxes.svelte';
|
import PokedexViewBoxes from '$lib/components/pokedex/PokedexViewBoxes.svelte';
|
||||||
|
import PokedexModal from '$lib/components/pokedex/PokedexModal.svelte';
|
||||||
|
import PokedexEntryCatchRecord from '$lib/components/pokedex/PokedexEntryCatchRecord.svelte';
|
||||||
import type { PageData } from './$types';
|
import type { PageData } from './$types';
|
||||||
|
|
||||||
export let data: PageData;
|
export let data: PageData;
|
||||||
@@ -23,40 +23,49 @@
|
|||||||
let creatingRecords = false;
|
let creatingRecords = false;
|
||||||
let totalRecordsCreated = 0;
|
let totalRecordsCreated = 0;
|
||||||
let failedToLoad = false;
|
let failedToLoad = false;
|
||||||
let catchRegion = '';
|
|
||||||
let catchGame = '';
|
|
||||||
let localUser: User | null;
|
let localUser: User | null;
|
||||||
let showOrigins = true;
|
|
||||||
let showShiny = false;
|
|
||||||
let drawerOpen = false;
|
|
||||||
let viewAsBoxes = false;
|
|
||||||
let boxNumbers: number[] = [];
|
let boxNumbers: number[] = [];
|
||||||
|
let showModal = false;
|
||||||
|
let selectedPokemon: CombinedData | null = null;
|
||||||
|
|
||||||
|
// Derive from pokedex config
|
||||||
|
$: showOrigins = pokedex.isOriginDex;
|
||||||
|
$: showShiny = pokedex.isShinyDex;
|
||||||
|
|
||||||
const unsubscribe = user.subscribe((value) => {
|
const unsubscribe = user.subscribe((value) => {
|
||||||
localUser = value;
|
localUser = value;
|
||||||
});
|
});
|
||||||
onDestroy(unsubscribe);
|
onDestroy(unsubscribe);
|
||||||
|
|
||||||
function toggleOrigins() {
|
function openPokemonModal(pokemon: CombinedData) {
|
||||||
showOrigins = !showOrigins;
|
selectedPokemon = pokemon;
|
||||||
|
showModal = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function toggleShiny() {
|
function closePokemonModal() {
|
||||||
showShiny = !showShiny;
|
showModal = false;
|
||||||
await getData();
|
selectedPokemon = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function toggleViewAsBoxes() {
|
async function handleModalCatchUpdate(event: any) {
|
||||||
viewAsBoxes = !viewAsBoxes;
|
await updateACatch(event); // Existing handler
|
||||||
await getData();
|
// Sync modal with refreshed data
|
||||||
|
if (selectedPokemon && combinedData) {
|
||||||
|
const updated = combinedData.find(
|
||||||
|
(cd) => cd.pokedexEntry._id === selectedPokemon!.pokedexEntry._id
|
||||||
|
);
|
||||||
|
if (updated) {
|
||||||
|
selectedPokemon = updated;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getData(setCombinedDataToNull = true) {
|
async function getData(setCombinedDataToNull = true) {
|
||||||
if (setCombinedDataToNull) {
|
if (setCombinedDataToNull) {
|
||||||
combinedData = null;
|
combinedData = null;
|
||||||
}
|
}
|
||||||
// Use new pokédex-scoped endpoint
|
// Use new pokédex-scoped endpoint - always fetch all data for box view
|
||||||
let endpoint = `/api/pokedexes/${pokedexId}/combined-data?page=${currentPage}&limit=${viewAsBoxes ? 9999 : itemsPerPage}&enableForms=${pokedex.isFormDex}®ion=${catchRegion}&game=${catchGame}`;
|
let endpoint = `/api/pokedexes/${pokedexId}/combined-data?page=${currentPage}&limit=9999&enableForms=${pokedex.isFormDex}`;
|
||||||
|
|
||||||
const response = await fetch(endpoint);
|
const response = await fetch(endpoint);
|
||||||
const fetchedData = await response.json();
|
const fetchedData = await response.json();
|
||||||
@@ -66,7 +75,8 @@
|
|||||||
}
|
}
|
||||||
combinedData = fetchedData.combinedData;
|
combinedData = fetchedData.combinedData;
|
||||||
totalPages = fetchedData.totalPages || 0;
|
totalPages = fetchedData.totalPages || 0;
|
||||||
if (viewAsBoxes) {
|
// Always extract box numbers for box view
|
||||||
|
if (combinedData) {
|
||||||
boxNumbers = [
|
boxNumbers = [
|
||||||
...new Set(
|
...new Set(
|
||||||
combinedData.map(({ pokedexEntry }) =>
|
combinedData.map(({ pokedexEntry }) =>
|
||||||
@@ -116,6 +126,8 @@
|
|||||||
needsToEvolve: boolean,
|
needsToEvolve: boolean,
|
||||||
inHome: boolean | null = null
|
inHome: boolean | null = null
|
||||||
) {
|
) {
|
||||||
|
if (!combinedData) return;
|
||||||
|
|
||||||
let catchRecordsToUpdate = combinedData
|
let catchRecordsToUpdate = combinedData
|
||||||
.filter(({ pokedexEntry }) =>
|
.filter(({ pokedexEntry }) =>
|
||||||
(pokedex.isFormDex ? pokedexEntry.boxPlacementForms.box : pokedexEntry.boxPlacement.box) ===
|
(pokedex.isFormDex ? pokedexEntry.boxPlacementForms.box : pokedexEntry.boxPlacement.box) ===
|
||||||
@@ -260,63 +272,119 @@
|
|||||||
{#if !localUser}
|
{#if !localUser}
|
||||||
<p>Please <a href="/signin" class="underline text-primary hover:text-secondary">sign in</a></p>
|
<p>Please <a href="/signin" class="underline text-primary hover:text-secondary">sign in</a></p>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="drawer lg:drawer-open">
|
<div class="container mx-auto p-4 max-w-screen-2xl">
|
||||||
<input id="my-drawer" type="checkbox" class="drawer-toggle" bind:checked={drawerOpen} />
|
<!-- Pokédex Header -->
|
||||||
<div class="drawer-content flex flex-col items-center justify-center md:ml-64">
|
<div class="card bg-base-100 shadow-xl mb-6">
|
||||||
<label
|
<div class="card-body">
|
||||||
for="my-drawer"
|
<div class="flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4">
|
||||||
class="btn btn-secondary drawer-button lg:hidden fixed -left-10 top-1/2 -rotate-90"
|
<!-- Left side: Title and metadata -->
|
||||||
>
|
<div class="flex-1">
|
||||||
{drawerOpen ? 'Close Filters' : 'Open Filters'}
|
<h1 class="card-title text-3xl mb-3">{pokedex.name}</h1>
|
||||||
</label>
|
|
||||||
|
|
||||||
{#if viewAsBoxes}
|
<div class="flex flex-wrap items-center gap-3">
|
||||||
<PokedexViewBoxes
|
<!-- Type badges -->
|
||||||
bind:showShiny
|
{#if pokedex.isLivingDex}
|
||||||
showForms={pokedex.isFormDex}
|
<div class="badge badge-primary badge-lg gap-1">
|
||||||
bind:combinedData
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||||
bind:boxNumbers
|
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" />
|
||||||
bind:creatingRecords
|
</svg>
|
||||||
bind:failedToLoad
|
Living
|
||||||
{markBoxAsNotCaught}
|
</div>
|
||||||
{markBoxAsCaught}
|
{/if}
|
||||||
{markBoxAsNeedsToEvolve}
|
{#if pokedex.isShinyDex}
|
||||||
{markBoxAsInHome}
|
<div class="badge badge-secondary badge-lg gap-1">
|
||||||
{markBoxAsNotInHome}
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||||
/>
|
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
|
||||||
{:else}
|
</svg>
|
||||||
<PokedexViewList
|
Shiny
|
||||||
bind:showOrigins
|
</div>
|
||||||
showForms={pokedex.isFormDex}
|
{/if}
|
||||||
bind:showShiny
|
{#if pokedex.isOriginDex}
|
||||||
bind:combinedData
|
<div class="badge badge-accent badge-lg gap-1">
|
||||||
bind:creatingRecords
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||||
bind:totalRecordsCreated
|
<path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd" />
|
||||||
bind:failedToLoad
|
</svg>
|
||||||
userId={localUser?.id}
|
Origin
|
||||||
pokedexId={pokedexId}
|
</div>
|
||||||
{updateACatch}
|
{/if}
|
||||||
{createCatchRecords}
|
{#if pokedex.isFormDex}
|
||||||
/>
|
<div class="badge badge-info badge-lg gap-1">
|
||||||
{/if}
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||||
</div>
|
<path d="M7 3a1 1 0 000 2h6a1 1 0 100-2H7zM4 7a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1zM2 11a2 2 0 012-2h12a2 2 0 012 2v4a2 2 0 01-2 2H4a2 2 0 01-2-2v-4z" />
|
||||||
<div class="drawer-side lg:relative">
|
</svg>
|
||||||
<label for="my-drawer" class="drawer-overlay lg:hidden"></label>
|
Form
|
||||||
<PokedexSidebar
|
</div>
|
||||||
{pokedex}
|
{/if}
|
||||||
bind:viewAsBoxes
|
|
||||||
bind:currentPage
|
<!-- Game scope -->
|
||||||
bind:itemsPerPage
|
{#if pokedex.gameScope}
|
||||||
bind:totalPages
|
<div class="divider divider-horizontal mx-0"></div>
|
||||||
bind:showOrigins
|
<div class="flex items-center gap-2 text-base-content/70">
|
||||||
bind:showShiny
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
||||||
bind:catchRegion
|
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z" />
|
||||||
bind:catchGame
|
<path fill-rule="evenodd" d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z" clip-rule="evenodd" />
|
||||||
{getData}
|
</svg>
|
||||||
{toggleOrigins}
|
<span class="font-semibold">{pokedex.gameScope}</span>
|
||||||
{toggleShiny}
|
</div>
|
||||||
{toggleViewAsBoxes}
|
{:else}
|
||||||
/>
|
<div class="divider divider-horizontal mx-0"></div>
|
||||||
|
<div class="flex items-center gap-2 text-base-content/70">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
||||||
|
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM4.332 8.027a6.012 6.012 0 011.912-2.706C6.512 5.73 6.974 6 7.5 6A1.5 1.5 0 019 7.5V8a2 2 0 004 0 2 2 0 011.523-1.943A5.977 5.977 0 0116 10c0 .34-.028.675-.083 1H15a2 2 0 00-2 2v2.197A5.973 5.973 0 0110 16v-2a2 2 0 00-2-2 2 2 0 01-2-2 2 2 0 00-1.668-1.973z" clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
<span class="font-semibold">All Games</span>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if pokedex.description}
|
||||||
|
<p class="text-sm text-base-content/70 mt-3">{pokedex.description}</p>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Right side: Actions -->
|
||||||
|
<div class="flex flex-row lg:flex-col gap-2">
|
||||||
|
<a href="/my-pokedexes" class="btn btn-outline btn-sm">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||||
|
<path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" />
|
||||||
|
</svg>
|
||||||
|
My Pokédexes
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Box View -->
|
||||||
|
<PokedexViewBoxes
|
||||||
|
{showShiny}
|
||||||
|
showForms={pokedex.isFormDex}
|
||||||
|
bind:combinedData
|
||||||
|
bind:boxNumbers
|
||||||
|
bind:creatingRecords
|
||||||
|
bind:failedToLoad
|
||||||
|
{markBoxAsNotCaught}
|
||||||
|
{markBoxAsCaught}
|
||||||
|
{markBoxAsNeedsToEvolve}
|
||||||
|
{markBoxAsInHome}
|
||||||
|
{markBoxAsNotInHome}
|
||||||
|
{createCatchRecords}
|
||||||
|
onPokemonClick={openPokemonModal}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{#if showModal && selectedPokemon}
|
||||||
|
<PokedexModal isOpen={showModal} onClose={closePokemonModal}>
|
||||||
|
<PokedexEntryCatchRecord
|
||||||
|
pokedexEntry={selectedPokemon.pokedexEntry}
|
||||||
|
bind:catchRecord={selectedPokemon.catchRecord}
|
||||||
|
{showOrigins}
|
||||||
|
showForms={pokedex.isFormDex}
|
||||||
|
{showShiny}
|
||||||
|
userId={localUser?.id}
|
||||||
|
pokedexId={pokedexId}
|
||||||
|
on:updateCatch={handleModalCatchUpdate}
|
||||||
|
/>
|
||||||
|
</PokedexModal>
|
||||||
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
-- 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();
|
||||||
+33
-33
@@ -33,9 +33,9 @@ INSERT INTO pokedex_entries (
|
|||||||
(11, 'Metapod', 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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(12, 'Butterfree', 'Female', 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', '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', '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', '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']),
|
(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']),
|
(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']),
|
(18, 'Pidgeot', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
@@ -45,14 +45,14 @@ INSERT INTO pokedex_entries (
|
|||||||
(20, 'Raticate', 'Female', 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']),
|
(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']),
|
(22, 'Fearow', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(23, 'Ekans', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Eevee']),
|
(23, 'Ekans', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(24, 'Arbok', NULL, false, 'Kanto', ARRAY['Red', 'Blue', '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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(25, 'Pikachu', 'Female', 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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(26, 'Raichu', 'Female', 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['Blue', 'Yellow', 'LG: Pikachu']),
|
(27, 'Sandshrew', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(28, 'Sandslash', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Pikachu']),
|
(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']),
|
(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']),
|
(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']),
|
(31, 'Nidoqueen', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
@@ -61,33 +61,33 @@ INSERT INTO pokedex_entries (
|
|||||||
(34, 'Nidoking', 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']),
|
(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']),
|
(36, 'Clefable', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(37, 'Vulpix', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
(37, 'Vulpix', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(38, 'Ninetales', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', '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']),
|
(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']),
|
(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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(41, 'Zubat', 'Female', 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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(42, 'Golbat', 'Female', 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', 'Yellow', 'LG: Pikachu']),
|
(43, 'Oddish', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(44, 'Gloom', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(44, 'Gloom', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(44, 'Gloom', 'Female', false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(44, 'Gloom', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(45, 'Vileplume', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(45, 'Vileplume', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(45, 'Vileplume', 'Female', false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(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']),
|
(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']),
|
(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']),
|
(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']),
|
(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']),
|
(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']),
|
(51, 'Dugtrio', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(52, 'Meowth', NULL, false, 'Kanto', ARRAY['Blue', 'LG: Eevee']),
|
(52, 'Meowth', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(53, 'Persian', NULL, false, 'Kanto', ARRAY['Blue', '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']),
|
(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']),
|
(55, 'Golduck', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(56, 'Mankey', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(56, 'Mankey', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(57, 'Primeape', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(57, 'Primeape', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(58, 'Growlithe', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(58, 'Growlithe', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(59, 'Arcanine', NULL, false, 'Kanto', ARRAY['Red', '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']),
|
(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']),
|
(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']),
|
(62, 'Poliwrath', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
@@ -99,9 +99,9 @@ INSERT INTO pokedex_entries (
|
|||||||
(66, 'Machop', NULL, 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']),
|
(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']),
|
(68, 'Machamp', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(69, 'Bellsprout', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
(69, 'Bellsprout', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(70, 'Weepinbell', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
(70, 'Weepinbell', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(71, 'Victreebel', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', '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']),
|
(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']),
|
(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']),
|
(74, 'Geodude', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
@@ -120,8 +120,8 @@ INSERT INTO pokedex_entries (
|
|||||||
(85, 'Dodrio', 'Female', 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']),
|
(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']),
|
(87, 'Dewgong', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(88, 'Grimer', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu']),
|
(88, 'Grimer', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(89, 'Muk', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu']),
|
(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']),
|
(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']),
|
(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']),
|
(92, 'Gastly', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
@@ -142,8 +142,8 @@ INSERT INTO pokedex_entries (
|
|||||||
(106, 'Hitmonlee', 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']),
|
(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']),
|
(108, 'Lickitung', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(109, 'Koffing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Eevee']),
|
(109, 'Koffing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(110, 'Weezing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', '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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(111, 'Rhyhorn', 'Female', 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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
@@ -160,12 +160,12 @@ INSERT INTO pokedex_entries (
|
|||||||
(120, 'Staryu', NULL, 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']),
|
(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']),
|
(122, 'Mr. Mime', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(123, 'Scyther', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(123, 'Scyther', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(123, 'Scyther', 'Female', false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
(123, 'Scyther', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(124, 'Jynx', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Pikachu', 'LG: Eevee']),
|
(124, 'Jynx', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(125, 'Electabuzz', NULL, false, 'Kanto', ARRAY['Red', 'LG: Pikachu', 'LG: Eevee']),
|
(125, 'Electabuzz', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(126, 'Magmar', NULL, false, 'Kanto', ARRAY['Blue', 'LG: Pikachu', 'LG: Eevee']),
|
(126, 'Magmar', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(127, 'Pinsir', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', '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']),
|
(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', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
(129, 'Magikarp', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
(129, 'Magikarp', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||||
@@ -0,0 +1,282 @@
|
|||||||
|
-- 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']),
|
||||||
|
(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" = 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', '98');
|
||||||
Reference in New Issue
Block a user