mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Merge pull request #238 from jrubinator/record-gift-pokemon
Record gift pokemon
This commit is contained in:
commit
db824220d0
9 changed files with 689 additions and 1 deletions
|
@ -33,3 +33,5 @@ encounter_method_id,local_language_id,name
|
||||||
16,9,Walking in red flowers
|
16,9,Walking in red flowers
|
||||||
17,6,Auf unwegsamen Gelände laufen
|
17,6,Auf unwegsamen Gelände laufen
|
||||||
17,9,Walking on rough terrain
|
17,9,Walking on rough terrain
|
||||||
|
18,9,Receive as a gift
|
||||||
|
19,9,Receive egg as a gift
|
||||||
|
|
|
|
@ -16,3 +16,5 @@ id,identifier,order
|
||||||
15,purple-flowers,7
|
15,purple-flowers,7
|
||||||
16,red-flowers,8
|
16,red-flowers,8
|
||||||
17,rough-terrain,9
|
17,rough-terrain,9
|
||||||
|
18,gift,18
|
||||||
|
19,gift-egg,19
|
||||||
|
|
|
|
@ -488,3 +488,28 @@ id,version_group_id,encounter_method_id,slot,rarity
|
||||||
487,15,4,0,60
|
487,15,4,0,60
|
||||||
488,15,4,1,35
|
488,15,4,1,35
|
||||||
489,15,4,2,5
|
489,15,4,2,5
|
||||||
|
490,1,18,,100
|
||||||
|
491,2,18,,100
|
||||||
|
492,3,18,,100
|
||||||
|
493,4,18,,100
|
||||||
|
494,5,18,,100
|
||||||
|
495,6,18,,100
|
||||||
|
496,7,18,,100
|
||||||
|
497,8,18,,100
|
||||||
|
498,9,18,,100
|
||||||
|
499,10,18,,100
|
||||||
|
500,11,18,,100
|
||||||
|
501,14,18,,100
|
||||||
|
502,15,18,,100
|
||||||
|
503,16,18,,100
|
||||||
|
504,3,19,,100
|
||||||
|
505,4,19,,100
|
||||||
|
506,5,19,,100
|
||||||
|
507,6,19,,100
|
||||||
|
508,7,19,,100
|
||||||
|
509,8,19,,100
|
||||||
|
510,9,19,,100
|
||||||
|
511,10,19,,100
|
||||||
|
512,11,19,,100
|
||||||
|
513,14,19,,100
|
||||||
|
514,16,19,,100
|
||||||
|
|
|
|
@ -46577,3 +46577,258 @@ id,version_id,location_area_id,encounter_slot_id,pokemon_id,min_level,max_level
|
||||||
50287,11,343,228,19,26,26
|
50287,11,343,228,19,26,26
|
||||||
50288,11,343,229,37,32,32
|
50288,11,343,229,37,32,32
|
||||||
50289,11,343,230,19,26,26
|
50289,11,343,230,19,26,26
|
||||||
|
50290,1,285,490,1,5,5
|
||||||
|
50291,2,285,490,1,5,5
|
||||||
|
50292,1,285,490,4,5,5
|
||||||
|
50293,2,285,490,4,5,5
|
||||||
|
50294,1,285,490,7,5,5
|
||||||
|
50295,2,285,490,7,5,5
|
||||||
|
50296,3,285,491,25,5,5
|
||||||
|
50297,3,281,491,1,10,10
|
||||||
|
50298,3,314,491,4,10,10
|
||||||
|
50299,3,282,491,7,10,10
|
||||||
|
50300,1,761,490,129,5,5
|
||||||
|
50301,2,761,490,129,5,5
|
||||||
|
50302,3,761,491,129,5,5
|
||||||
|
50303,1,762,490,106,30,30
|
||||||
|
50304,2,762,490,106,30,30
|
||||||
|
50305,3,762,491,106,30,30
|
||||||
|
50306,1,762,490,107,30,30
|
||||||
|
50307,2,762,490,107,30,30
|
||||||
|
50308,3,762,491,107,30,30
|
||||||
|
50309,1,763,490,133,25,25
|
||||||
|
50310,2,763,490,133,25,25
|
||||||
|
50311,3,763,491,133,25,25
|
||||||
|
50312,1,764,490,131,15,15
|
||||||
|
50313,2,764,490,131,15,15
|
||||||
|
50314,3,764,491,131,15,15
|
||||||
|
50315,4,184,492,152,5,5
|
||||||
|
50316,5,184,492,152,5,5
|
||||||
|
50317,6,184,493,152,5,5
|
||||||
|
50318,4,184,492,155,5,5
|
||||||
|
50319,5,184,492,155,5,5
|
||||||
|
50320,6,184,493,155,5,5
|
||||||
|
50321,4,184,492,158,5,5
|
||||||
|
50322,5,184,492,158,5,5
|
||||||
|
50323,6,184,493,158,5,5
|
||||||
|
50324,4,765,492,21,10,10
|
||||||
|
50325,5,765,492,21,10,10
|
||||||
|
50326,6,765,493,21,10,10
|
||||||
|
50327,4,766,492,133,20,20
|
||||||
|
50328,5,766,492,133,20,20
|
||||||
|
50329,6,766,493,133,20,20
|
||||||
|
50330,4,767,492,213,15,15
|
||||||
|
50331,5,767,492,213,15,15
|
||||||
|
50332,6,767,493,213,15,15
|
||||||
|
50333,6,250,493,147,15,15
|
||||||
|
50334,4,240,492,236,10,10
|
||||||
|
50335,5,240,492,236,10,10
|
||||||
|
50336,6,240,493,236,10,10
|
||||||
|
50337,7,393,494,252,5,5
|
||||||
|
50338,8,393,494,252,5,5
|
||||||
|
50339,9,393,495,252,5,5
|
||||||
|
50340,7,393,494,255,5,5
|
||||||
|
50341,8,393,494,255,5,5
|
||||||
|
50342,9,393,495,255,5,5
|
||||||
|
50343,7,393,494,258,5,5
|
||||||
|
50344,8,393,494,258,5,5
|
||||||
|
50345,9,393,495,258,5,5
|
||||||
|
50346,7,768,494,351,25,25
|
||||||
|
50347,8,768,494,351,25,25
|
||||||
|
50348,9,768,495,351,25,25
|
||||||
|
50349,7,769,494,374,5,5
|
||||||
|
50350,8,769,494,374,5,5
|
||||||
|
50351,9,769,495,374,5,5
|
||||||
|
50352,9,770,495,152,5,5
|
||||||
|
50353,9,770,495,155,5,5
|
||||||
|
50354,9,770,495,158,5,5
|
||||||
|
50355,10,285,496,1,5,5
|
||||||
|
50356,11,285,496,1,5,5
|
||||||
|
50357,10,285,496,4,5,5
|
||||||
|
50358,11,285,496,4,5,5
|
||||||
|
50359,10,285,496,7,5,5
|
||||||
|
50360,11,285,496,7,5,5
|
||||||
|
50361,10,761,496,129,5,5
|
||||||
|
50362,11,761,496,129,5,5
|
||||||
|
50363,10,762,496,106,25,25
|
||||||
|
50364,11,762,496,106,25,25
|
||||||
|
50365,10,762,496,107,25,25
|
||||||
|
50366,11,762,496,107,25,25
|
||||||
|
50367,10,763,496,133,25,25
|
||||||
|
50368,11,763,496,133,25,25
|
||||||
|
50369,10,764,496,131,25,25
|
||||||
|
50370,11,764,496,131,25,25
|
||||||
|
50371,12,135,497,387,5,5
|
||||||
|
50372,13,135,497,387,5,5
|
||||||
|
50373,12,135,497,390,5,5
|
||||||
|
50374,13,135,497,390,5,5
|
||||||
|
50375,12,135,497,393,5,5
|
||||||
|
50376,13,135,497,393,5,5
|
||||||
|
50377,14,141,498,387,5,5
|
||||||
|
50378,14,141,498,390,5,5
|
||||||
|
50379,14,141,498,393,5,5
|
||||||
|
50380,12,771,497,133,5,5
|
||||||
|
50381,13,771,497,133,5,5
|
||||||
|
50382,14,771,498,133,20,20
|
||||||
|
50383,14,772,498,137,25,25
|
||||||
|
50384,15,184,499,152,5,5
|
||||||
|
50385,16,184,499,152,5,5
|
||||||
|
50386,15,184,499,155,5,5
|
||||||
|
50387,16,184,499,155,5,5
|
||||||
|
50388,15,184,499,158,5,5
|
||||||
|
50389,16,184,499,158,5,5
|
||||||
|
50390,15,765,499,21,20,20
|
||||||
|
50391,16,765,499,21,20,20
|
||||||
|
50392,15,766,499,133,5,5
|
||||||
|
50393,16,766,499,133,5,5
|
||||||
|
50394,15,773,499,213,15,15
|
||||||
|
50395,16,773,499,213,15,15
|
||||||
|
50396,15,250,499,147,15,15
|
||||||
|
50397,16,250,499,147,15,15
|
||||||
|
50398,15,240,499,236,10,10
|
||||||
|
50399,16,240,499,236,10,10
|
||||||
|
50400,15,285,499,1,5,5
|
||||||
|
50401,16,285,499,1,5,5
|
||||||
|
50402,15,285,499,4,5,5
|
||||||
|
50403,16,285,499,4,5,5
|
||||||
|
50404,15,285,499,7,5,5
|
||||||
|
50405,16,285,499,7,5,5
|
||||||
|
50406,15,764,499,252,5,5
|
||||||
|
50407,16,764,499,252,5,5
|
||||||
|
50408,15,764,499,255,5,5
|
||||||
|
50409,16,764,499,255,5,5
|
||||||
|
50410,15,764,499,258,5,5
|
||||||
|
50411,16,764,499,258,5,5
|
||||||
|
50412,17,774,500,495,5,5
|
||||||
|
50413,18,774,500,495,5,5
|
||||||
|
50414,17,774,500,498,5,5
|
||||||
|
50415,18,774,500,498,5,5
|
||||||
|
50416,17,774,500,501,5,5
|
||||||
|
50417,18,774,500,501,5,5
|
||||||
|
50418,17,579,500,511,10,10
|
||||||
|
50419,18,579,500,511,10,10
|
||||||
|
50420,17,579,500,513,10,10
|
||||||
|
50421,18,579,500,513,10,10
|
||||||
|
50422,17,579,500,515,10,10
|
||||||
|
50423,18,579,500,515,10,10
|
||||||
|
50424,17,775,500,570,10,10
|
||||||
|
50425,18,775,500,570,10,10
|
||||||
|
50426,17,622,500,129,5,5
|
||||||
|
50427,18,622,500,129,5,5
|
||||||
|
50428,21,657,501,495,5,5
|
||||||
|
50429,22,657,501,495,5,5
|
||||||
|
50430,21,657,501,498,5,5
|
||||||
|
50431,22,657,501,498,5,5
|
||||||
|
50432,21,657,501,501,5,5
|
||||||
|
50433,22,657,501,501,5,5
|
||||||
|
50434,21,577,501,570,25,25
|
||||||
|
50435,22,577,501,570,25,25
|
||||||
|
50436,21,776,501,585,30,30
|
||||||
|
50437,22,776,501,585,30,30
|
||||||
|
50438,21,656,501,133,10,10
|
||||||
|
50439,22,656,501,133,10,10
|
||||||
|
50440,21,622,501,129,5,5
|
||||||
|
50441,22,622,501,129,5,5
|
||||||
|
50442,22,777,501,147,1,1
|
||||||
|
50443,21,777,501,443,1,1
|
||||||
|
50444,23,778,502,650,5,5
|
||||||
|
50445,24,778,502,650,5,5
|
||||||
|
50446,23,778,502,653,5,5
|
||||||
|
50447,24,778,502,653,5,5
|
||||||
|
50448,23,778,502,656,5,5
|
||||||
|
50449,24,778,502,656,5,5
|
||||||
|
50450,23,779,502,1,10,10
|
||||||
|
50451,24,779,502,1,10,10
|
||||||
|
50452,23,779,502,4,10,10
|
||||||
|
50453,24,779,502,4,10,10
|
||||||
|
50454,23,779,502,7,10,10
|
||||||
|
50455,24,779,502,7,10,10
|
||||||
|
50456,23,736,502,696,20,20
|
||||||
|
50457,24,736,502,696,20,20
|
||||||
|
50458,23,736,502,698,20,20
|
||||||
|
50459,24,736,502,698,20,20
|
||||||
|
50460,23,780,502,448,32,32
|
||||||
|
50461,24,780,502,448,32,32
|
||||||
|
50462,23,723,502,131,30,30
|
||||||
|
50463,24,723,502,131,30,30
|
||||||
|
50464,25,393,503,252,5,5
|
||||||
|
50465,26,393,503,252,5,5
|
||||||
|
50466,25,393,503,255,5,5
|
||||||
|
50467,26,393,503,255,5,5
|
||||||
|
50468,25,393,503,258,5,5
|
||||||
|
50469,26,393,503,258,5,5
|
||||||
|
50470,25,781,503,25,20,20
|
||||||
|
50471,26,781,503,25,20,20
|
||||||
|
50472,25,782,503,25,20,20
|
||||||
|
50473,26,782,503,25,20,20
|
||||||
|
50474,25,783,503,25,20,20
|
||||||
|
50475,26,783,503,25,20,20
|
||||||
|
50476,25,784,503,25,20,20
|
||||||
|
50477,26,784,503,25,20,20
|
||||||
|
50478,25,785,503,381,30,30
|
||||||
|
50479,26,785,503,380,30,30
|
||||||
|
50480,25,768,503,351,30,30
|
||||||
|
50481,26,768,503,351,30,30
|
||||||
|
50482,25,393,503,152,5,5
|
||||||
|
50483,26,393,503,152,5,5
|
||||||
|
50484,25,393,503,155,5,5
|
||||||
|
50485,26,393,503,155,5,5
|
||||||
|
50486,25,393,503,158,5,5
|
||||||
|
50487,26,393,503,158,5,5
|
||||||
|
50488,25,393,503,495,5,5
|
||||||
|
50489,26,393,503,495,5,5
|
||||||
|
50490,25,393,503,498,5,5
|
||||||
|
50491,26,393,503,498,5,5
|
||||||
|
50492,25,393,503,501,5,5
|
||||||
|
50493,26,393,503,501,5,5
|
||||||
|
50494,25,769,503,374,1,1
|
||||||
|
50495,26,769,503,374,1,1
|
||||||
|
50496,25,393,503,387,5,5
|
||||||
|
50497,26,393,503,387,5,5
|
||||||
|
50498,25,393,503,390,5,5
|
||||||
|
50499,26,393,503,390,5,5
|
||||||
|
50500,25,393,503,393,5,5
|
||||||
|
50501,26,393,503,393,5,5
|
||||||
|
50502,25,786,503,323,40,40
|
||||||
|
50503,26,786,503,323,40,40
|
||||||
|
50504,25,786,503,319,40,40
|
||||||
|
50505,26,786,503,319,40,40
|
||||||
|
50506,4,189,504,175,5,5
|
||||||
|
50507,5,189,504,175,5,5
|
||||||
|
50508,6,189,505,175,5,5
|
||||||
|
50509,6,205,505,172,5,5
|
||||||
|
50510,6,205,505,173,5,5
|
||||||
|
50511,6,205,505,174,5,5
|
||||||
|
50512,6,205,505,236,5,5
|
||||||
|
50513,6,205,505,238,5,5
|
||||||
|
50514,6,205,505,239,5,5
|
||||||
|
50515,6,205,505,240,5,5
|
||||||
|
50516,7,787,506,360,5,5
|
||||||
|
50517,8,787,506,360,5,5
|
||||||
|
50518,9,787,507,360,5,5
|
||||||
|
50519,10,518,508,175,5,5
|
||||||
|
50520,11,518,508,175,5,5
|
||||||
|
50521,12,788,509,175,1,1
|
||||||
|
50522,13,788,509,175,1,1
|
||||||
|
50523,14,788,510,175,1,1
|
||||||
|
50524,12,789,509,440,1,1
|
||||||
|
50525,13,789,509,440,1,1
|
||||||
|
50526,12,124,509,447,1,1
|
||||||
|
50527,13,124,509,447,1,1
|
||||||
|
50528,14,124,510,447,1,1
|
||||||
|
50529,15,790,511,175,1,1
|
||||||
|
50530,16,790,511,175,1,1
|
||||||
|
50531,15,791,511,179,1,1
|
||||||
|
50532,16,791,511,179,1,1
|
||||||
|
50533,15,791,511,194,1,1
|
||||||
|
50534,16,791,511,194,1,1
|
||||||
|
50535,15,791,511,218,1,1
|
||||||
|
50536,16,791,511,218,1,1
|
||||||
|
50537,17,653,512,636,1,1
|
||||||
|
50538,18,653,512,636,1,1
|
||||||
|
50539,21,792,513,440,1,1
|
||||||
|
50540,22,792,513,440,1,1
|
||||||
|
50541,25,787,514,360,1,1
|
||||||
|
50542,26,787,514,360,1,1
|
||||||
|
50543,25,787,514,175,1,1
|
||||||
|
50544,26,787,514,175,1,1
|
||||||
|
|
Can't render this file because it is too large.
|
|
@ -618,3 +618,35 @@ location_area_id,local_language_id,name
|
||||||
756,9,Unknown Area 345
|
756,9,Unknown Area 345
|
||||||
757,9,Unknown Area 347
|
757,9,Unknown Area 347
|
||||||
758,9,Unknown Area 348
|
758,9,Unknown Area 348
|
||||||
|
761,9,Pokemon Center
|
||||||
|
762,9,Fighting Dojo
|
||||||
|
763,9,Celadon Mansion rooftop
|
||||||
|
764,9,Silph Co. 7F
|
||||||
|
765,9,North Gate
|
||||||
|
766,9,Bill's house
|
||||||
|
767,9,Mania's house
|
||||||
|
768,9,Weather Institute
|
||||||
|
769,9,Steven's house
|
||||||
|
770,9,
|
||||||
|
771,9,
|
||||||
|
772,9,
|
||||||
|
773,9,Kirk's house
|
||||||
|
774,9,
|
||||||
|
775,9,Game Freak HQ 1F
|
||||||
|
776,9,Weather Institute
|
||||||
|
777,9,
|
||||||
|
778,9,
|
||||||
|
779,9,
|
||||||
|
780,9,
|
||||||
|
781,9,Contest Hall
|
||||||
|
782,9,Contest Hall
|
||||||
|
783,9,Contest Hall
|
||||||
|
784,9,Contest Hall
|
||||||
|
785,9,
|
||||||
|
786,9,
|
||||||
|
787,9,
|
||||||
|
788,9,West Gate
|
||||||
|
789,9,West Gate
|
||||||
|
790,9,Poke Mart
|
||||||
|
791,9,Pokemon Center
|
||||||
|
792,9,West Gate
|
||||||
|
|
|
|
@ -650,3 +650,35 @@ id,location_id,game_index,identifier
|
||||||
758,676,0,unknown-area-348
|
758,676,0,unknown-area-348
|
||||||
759,677,0,
|
759,677,0,
|
||||||
760,661,0,
|
760,661,0,
|
||||||
|
761,120,0,pokemon-center
|
||||||
|
762,234,0,fighting-dojo
|
||||||
|
763,67,0,celadon-mansion
|
||||||
|
764,234,0,silph-co-7f
|
||||||
|
765,229,0,north-gate
|
||||||
|
766,229,0,bills-house
|
||||||
|
767,70,0,manias-house
|
||||||
|
768,467,0,weather-institute
|
||||||
|
769,432,0,stevens-house
|
||||||
|
770,567,0,
|
||||||
|
771,169,0,
|
||||||
|
772,170,0,
|
||||||
|
773,70,0,kirks-house
|
||||||
|
774,346,0,
|
||||||
|
775,350,0,game-freak-hq-1f
|
||||||
|
776,361,0,weather-institute
|
||||||
|
777,536,0,
|
||||||
|
778,590,0,
|
||||||
|
779,599,0,
|
||||||
|
780,625,0,
|
||||||
|
781,430,0,contest-hall
|
||||||
|
782,571,0,contest-hall
|
||||||
|
783,570,0,contest-hall
|
||||||
|
784,431,0,contest-hall
|
||||||
|
785,578,0,
|
||||||
|
786,695,0,
|
||||||
|
787,569,0,
|
||||||
|
788,2,0,west-gate
|
||||||
|
789,169,0,west-gate
|
||||||
|
790,153,0,poke-mart
|
||||||
|
791,153,0,pokemon-center
|
||||||
|
792,349,0,west-gate
|
||||||
|
|
|
|
@ -850,7 +850,17 @@ create_translation_table('encounter_method_prose', EncounterMethod, 'prose',
|
||||||
)
|
)
|
||||||
|
|
||||||
class EncounterSlot(TableBase):
|
class EncounterSlot(TableBase):
|
||||||
u"""An abstract "slot" within a method, associated with both some set of conditions and a rarity."""
|
u"""An abstract "slot" within a method, associated with both some set of conditions and a rarity.
|
||||||
|
|
||||||
|
"slot" has a very specific meaning:
|
||||||
|
If during gameplay you know sufficient details about the current game state,
|
||||||
|
you can predict which slot (and therefore which pokemon) will spawn.
|
||||||
|
|
||||||
|
There are currently two reasons that "slot" might be empty:
|
||||||
|
1) The slot corresponds to a gift pokemon.
|
||||||
|
2) Red/Blue's Super Rod slots, which don't correspond to in-game slots.
|
||||||
|
See https://github.com/veekun/pokedex/issues/166#issuecomment-220101455
|
||||||
|
"""
|
||||||
|
|
||||||
__tablename__ = 'encounter_slots'
|
__tablename__ = 'encounter_slots'
|
||||||
id = Column(Integer, primary_key=True, nullable=False,
|
id = Column(Integer, primary_key=True, nullable=False,
|
||||||
|
|
|
@ -28,6 +28,28 @@ def test_encounter_slots(session):
|
||||||
# Encounter slots all match the encounters they belong to
|
# Encounter slots all match the encounters they belong to
|
||||||
assert sanity_q.count() == 0
|
assert sanity_q.count() == 0
|
||||||
|
|
||||||
|
def test_encounter_regions(session):
|
||||||
|
"""Check that encounter locations match the region of the game they're from.
|
||||||
|
"""
|
||||||
|
|
||||||
|
sanity_q = session.query(tables.Encounter) \
|
||||||
|
.join((tables.Version, tables.Encounter.version)) \
|
||||||
|
.join((tables.VersionGroup, tables.Version.version_group)) \
|
||||||
|
.join((tables.LocationArea, tables.Encounter.location_area)) \
|
||||||
|
.join((tables.Location, tables.LocationArea.location)) \
|
||||||
|
.join((tables.Region, tables.Location.region)) \
|
||||||
|
.filter(~tables.VersionGroup.version_group_regions.any(tables.VersionGroupRegion.region_id == tables.Region.id))
|
||||||
|
|
||||||
|
for e in sanity_q.limit(20):
|
||||||
|
acceptable_regions = " or ".join(r.identifier for r in e.version.version_group.regions)
|
||||||
|
if e.location_area.location.region is not None:
|
||||||
|
print("{e} ({e.pokemon.identifier}, {e.slot.method.identifier}, {e.version.identifier}) is in {e.location_area.location.region.identifier} ({e.location_area.location.identifier}) but should be in {acceptable_regions} ({e.version.identifier})".format(e=e, acceptable_regions=acceptable_regions))
|
||||||
|
else:
|
||||||
|
print("{e} ({e.pokemon.identifier}, {e.slot.method.identifier}, {e.version.identifier}) is in a pseudo-location ({e.location_area.location.identifier}) that is not part of any region, but should be in {acceptable_regions} ({e.version.identifier})".format(e=e, acceptable_regions=acceptable_regions))
|
||||||
|
|
||||||
|
# Encounter regions match the games they belong to
|
||||||
|
assert sanity_q.count() == 0
|
||||||
|
|
||||||
@parametrize('cls', tables.mapped_classes)
|
@parametrize('cls', tables.mapped_classes)
|
||||||
def test_nonzero_autoincrement_ids(session, cls):
|
def test_nonzero_autoincrement_ids(session, cls):
|
||||||
"""Check that autoincrementing ids don't contain zeroes
|
"""Check that autoincrementing ids don't contain zeroes
|
||||||
|
|
308
scripts/add-gift-encounters.py
Normal file
308
scripts/add-gift-encounters.py
Normal file
|
@ -0,0 +1,308 @@
|
||||||
|
#!/usr/bin/env python2
|
||||||
|
"""
|
||||||
|
This is an unmaintained one-shot script, only included in the repo for
|
||||||
|
reference.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from pokedex.db import connect, identifier_from_name
|
||||||
|
from pokedex.db.tables import Encounter, EncounterMethod, EncounterSlot, Language, Location, LocationArea, Pokemon, Version
|
||||||
|
|
||||||
|
session = connect()
|
||||||
|
|
||||||
|
def get_version(name):
|
||||||
|
return session.query(Version).filter_by(identifier=identifier_from_name(name)).one()
|
||||||
|
|
||||||
|
R = get_version(u'red')
|
||||||
|
B = get_version(u'blue')
|
||||||
|
Ye = get_version(u'yellow')
|
||||||
|
G = get_version(u'gold')
|
||||||
|
S = get_version(u'silver')
|
||||||
|
C = get_version(u'crystal')
|
||||||
|
RU = get_version(u'ruby')
|
||||||
|
SA = get_version(u'sapphire')
|
||||||
|
EM = get_version(u'emerald')
|
||||||
|
FR = get_version(u'firered')
|
||||||
|
LG = get_version(u'leafgreen')
|
||||||
|
|
||||||
|
DI = get_version(u'diamond')
|
||||||
|
PE = get_version(u'pearl')
|
||||||
|
PT = get_version(u'platinum')
|
||||||
|
HG = get_version(u'heartgold')
|
||||||
|
SS = get_version(u'soulsilver')
|
||||||
|
|
||||||
|
BL = get_version(u'black')
|
||||||
|
WH = get_version(u'white')
|
||||||
|
B2 = get_version(u'black-2')
|
||||||
|
W2 = get_version(u'white-2')
|
||||||
|
|
||||||
|
X = get_version(u'x')
|
||||||
|
Y = get_version(u'y')
|
||||||
|
OR = get_version(u'omega-ruby')
|
||||||
|
AS = get_version(u'alpha-sapphire')
|
||||||
|
|
||||||
|
def normal_gift_data():
|
||||||
|
return [
|
||||||
|
# Gen I
|
||||||
|
[ u'bulbasaur', [ R, B ], 5, u'pallet-town' ],
|
||||||
|
[ u'charmander', [ R, B ], 5, u'pallet-town' ],
|
||||||
|
[ u'squirtle', [ R, B ], 5, u'pallet-town' ],
|
||||||
|
[ u'pikachu', [ Ye ], 5, u'pallet-town' ],
|
||||||
|
[ u'bulbasaur', [ Ye ], 10, u'cerulean-city' ],
|
||||||
|
[ u'charmander', [ Ye ], 10, u'kanto-route-24' ],
|
||||||
|
[ u'squirtle', [ Ye ], 10, u'vermilion-city' ],
|
||||||
|
|
||||||
|
#[ u'aerodactyl', [ R, B, Ye ], 30, u'pewter-city', u'museum-of-science', u'Pewter Museum of Science' ],
|
||||||
|
[ u'magikarp', [ R, B, Ye ], 5, u'kanto-route-4', u'pokemon-center', u'Pokemon Center' ],
|
||||||
|
#[ u'omanyte', [ R, B, Ye ], 30, u'mt-moon', u'b2f' ],
|
||||||
|
#[ u'kabuto', [ R, B, Ye ], 30, u'mt-moon', u'b2f' ],
|
||||||
|
[ u'hitmonlee', [ R, B, Ye ], 30, u'saffron-city', u'fighting-dojo', u'Fighting Dojo' ],
|
||||||
|
[ u'hitmonchan', [ R, B, Ye ], 30, u'saffron-city', u'fighting-dojo', u'Fighting Dojo' ],
|
||||||
|
[ u'eevee', [ R, B, Ye ], 25, u'celadon-city', u'celadon-mansion', u'Celadon Mansion rooftop' ],
|
||||||
|
[ u'lapras', [ R, B, Ye ], 15, u'saffron-city', u'silph-co-7f', u'Silph Co. 7F' ],
|
||||||
|
|
||||||
|
# Gen II
|
||||||
|
[ u'chikorita', [ G, S, C ], 5, u'new-bark-town' ],
|
||||||
|
[ u'cyndaquil', [ G, S, C ], 5, u'new-bark-town' ],
|
||||||
|
[ u'totodile', [ G, S, C ], 5, u'new-bark-town' ],
|
||||||
|
[ u'spearow', [ G, S, C ], 10, u'goldenrod-city', u'north-gate', u'North Gate' ],
|
||||||
|
[ u'eevee', [ G, S, C ], 20, u'goldenrod-city', u'bills-house', u"Bill's house" ],
|
||||||
|
[ u'shuckle', [ G, S, C ], 15, u'cianwood-city', u'manias-house', u"Mania's house" ],
|
||||||
|
[ u'dratini', [ C ], 15, u'dragons-den' ],
|
||||||
|
[ u'tyrogue', [ G, S, C ], 10, u'mt-mortar', u'b1f' ],
|
||||||
|
|
||||||
|
# Gen III
|
||||||
|
# Note Lileep + Anorith are not listed because they are not *gifts*
|
||||||
|
# They're note quite encounters either
|
||||||
|
# but that's outta scope of gift logic
|
||||||
|
[ u'treecko', [ RU, SA, EM ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'torchic', [ RU, SA, EM ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'mudkip' , [ RU, SA, EM ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'castform', [ RU, SA, EM ], 25, u'hoenn-route-119', u'weather-institute', u'Weather Institute' ],
|
||||||
|
[ u'beldum', [ RU, SA, EM ], 5, u'mossdeep-city', u'stevens-house', u"Steven's house" ],
|
||||||
|
[ u'chikorita', [ EM ], 5, u'littleroot-town' ],
|
||||||
|
[ u'cyndaquil', [ EM ], 5, u'littleroot-town' ],
|
||||||
|
[ u'totodile', [ EM ], 5, u'littleroot-town' ],
|
||||||
|
|
||||||
|
[ u'bulbasaur', [ FR, LG ], 5, u'pallet-town' ],
|
||||||
|
[ u'charmander', [ FR, LG ], 5, u'pallet-town' ],
|
||||||
|
[ u'squirtle', [ FR, LG ], 5, u'pallet-town' ],
|
||||||
|
#[ u'aerodactyl', [ FR, LG ], 5, u'pewter-city', u'museum-of-science' ],
|
||||||
|
[ u'magikarp', [ FR, LG ], 5, u'kanto-route-4', u'pokemon-center' ],
|
||||||
|
#[ u'omanyte', [ FR, LG ], 5, u'mt-moon', u'b2f' ],
|
||||||
|
#[ u'kabuto', [ FR, LG ], 5, u'mt-moon', u'b2f' ],
|
||||||
|
[ u'hitmonlee', [ FR, LG ], 25, u'saffron-city', u'fighting-dojo' ],
|
||||||
|
[ u'hitmonchan', [ FR, LG ], 25, u'saffron-city', u'fighting-dojo' ],
|
||||||
|
[ u'eevee', [ FR, LG ], 25, u'celadon-city', u'celadon-mansion' ],
|
||||||
|
[ u'lapras', [ FR, LG ], 25, u'saffron-city', u'silph-co-7f' ],
|
||||||
|
|
||||||
|
# Gen IV
|
||||||
|
[ u'turtwig', [ DI, PE ], 5, u'lake-verity', u'before-galactic-intervention' ],
|
||||||
|
[ u'chimchar', [ DI, PE ], 5, u'lake-verity', u'before-galactic-intervention' ],
|
||||||
|
[ u'piplup', [ DI, PE ], 5, u'lake-verity', u'before-galactic-intervention' ],
|
||||||
|
[ u'turtwig', [ PT ], 5, u'sinnoh-route-201' ],
|
||||||
|
[ u'chimchar', [ PT ], 5, u'sinnoh-route-201' ],
|
||||||
|
[ u'piplup', [ PT ], 5, u'sinnoh-route-201' ],
|
||||||
|
[ u'eevee', [ DI, PE, ], 5, u'hearthome-city' ],
|
||||||
|
[ u'eevee', [ PT ], 20, u'hearthome-city' ],
|
||||||
|
[ u'porygon', [ PT ], 25, u'veilstone-city' ],
|
||||||
|
|
||||||
|
[ u'chikorita', [ HG, SS ], 5, u'new-bark-town' ],
|
||||||
|
[ u'cyndaquil', [ HG, SS ], 5, u'new-bark-town' ],
|
||||||
|
[ u'totodile', [ HG, SS ], 5, u'new-bark-town' ],
|
||||||
|
[ u'spearow', [ HG, SS ], 20, u'goldenrod-city', u'north-gate' ],
|
||||||
|
[ u'eevee', [ HG, SS ], 5, u'goldenrod-city', u'bills-house' ],
|
||||||
|
[ u'shuckle', [ HG, SS ], 15, u'cianwood-city', u'kirks-house', u"Kirk's house" ],
|
||||||
|
[ u'dratini', [ HG, SS ], 15, u'dragons-den' ],
|
||||||
|
[ u'tyrogue', [ HG, SS ], 10, u'mt-mortar', u'b1f' ],
|
||||||
|
[ u'bulbasaur', [ HG, SS ], 5, u'pallet-town' ],
|
||||||
|
[ u'charmander', [ HG, SS ], 5, u'pallet-town' ],
|
||||||
|
[ u'squirtle', [ HG, SS ], 5, u'pallet-town' ],
|
||||||
|
[ u'treecko', [ HG, SS ], 5, u'saffron-city', u'silph-co-7f' ],
|
||||||
|
[ u'torchic', [ HG, SS ], 5, u'saffron-city', u'silph-co-7f' ],
|
||||||
|
[ u'mudkip' , [ HG, SS ], 5, u'saffron-city', u'silph-co-7f' ],
|
||||||
|
|
||||||
|
# Gen V
|
||||||
|
[ u'snivy', [ BL, WH ], 5, u'nuvema-town' ],
|
||||||
|
[ u'tepig', [ BL, WH ], 5, u'nuvema-town' ],
|
||||||
|
[ u'oshawott', [ BL, WH ], 5, u'nuvema-town' ],
|
||||||
|
[ u'pansage', [ BL, WH ], 10, u'dreamyard' ], # not the basement
|
||||||
|
[ u'pansear', [ BL, WH ], 10, u'dreamyard' ],
|
||||||
|
[ u'panpour', [ BL, WH ], 10, u'dreamyard' ],
|
||||||
|
[ u'zorua', [ BL, WH ], 10, u'castelia-city', u'game-freak-hq-1f', u'Game Freak HQ 1F' ],
|
||||||
|
#[ u'tirtouga', [ BL, WH ], 25, u'relic-castle', u'a' ],
|
||||||
|
#[ u'archen', [ BL, WH ], 25, u'relic-castle', u'a' ],
|
||||||
|
#[ u'omanyte', [ BL, WH ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'kabuto', [ BL, WH ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'aerodactyl', [ BL, WH ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'lileep', [ BL, WH ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'anorith', [ BL, WH ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'cranidos', [ BL, WH ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'shieldon', [ BL, WH ], 25, u'twist-mountain' ],
|
||||||
|
[ u'magikarp', [ BL, WH ], 5, u'marvelous-bridge' ],
|
||||||
|
|
||||||
|
[ u'snivy', [ B2, W2 ], 5, u'aspertia-city' ],
|
||||||
|
[ u'tepig', [ B2, W2 ], 5, u'aspertia-city' ],
|
||||||
|
[ u'oshawott', [ B2, W2 ], 5, u'aspertia-city' ],
|
||||||
|
[ u'zorua', [ B2, W2 ], 25, u'driftveil-city' ],
|
||||||
|
[ u'deerling', [ B2, W2 ], 30, u'unova-route-6', u'weather-institute', u'Weather Institute' ],
|
||||||
|
[ u'eevee', [ B2, W2 ], 10, u'castelia-city' ],
|
||||||
|
#[ u'omanyte', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'kabuto', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'aerodactyl', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'lileep', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'anorith', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'cranidos', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'shieldon', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'tirtouga', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
#[ u'archen', [ B2, W2 ], 25, u'join-avenue' ],
|
||||||
|
[ u'magikarp', [ B2, W2 ], 5, u'marvelous-bridge' ],
|
||||||
|
#[ u'tirtouga', [ B2, W2 ], 25, u'nacrene-city', u'museum', u'Nacrene City Museum' ],
|
||||||
|
#[ u'archen', [ B2, W2 ], 25, u'nacrene-city', u'museum'],
|
||||||
|
#[ u'omanyte', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'kabuto', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'aerodactyl', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'lileep', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'anorith', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'cranidos', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||||
|
#[ u'shieldon', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||||
|
# These are shiny...
|
||||||
|
[ u'dratini', [ W2 ], 1, u'floccesy-town' ],
|
||||||
|
[ u'gible', [ B2 ], 1, u'floccesy-town' ],
|
||||||
|
|
||||||
|
# Gen VI
|
||||||
|
[ u'chespin', [ X, Y ], 5, u'aquacorde-town' ],
|
||||||
|
[ u'fennekin', [ X, Y ], 5, u'aquacorde-town' ],
|
||||||
|
[ u'froakie', [ X, Y ], 5, u'aquacorde-town' ],
|
||||||
|
[ u'bulbasaur', [ X, Y ], 10, u'lumiose-city' ],
|
||||||
|
[ u'charmander', [ X, Y ], 10, u'lumiose-city' ],
|
||||||
|
[ u'squirtle', [ X, Y ], 10, u'lumiose-city' ],
|
||||||
|
[ u'tyrunt', [ X, Y ], 20, u'glittering-cave', u'unknown-area-303' ], # 304 means ceiling
|
||||||
|
[ u'amaura', [ X, Y ], 20, u'glittering-cave', u'unknown-area-303' ],
|
||||||
|
[ u'lucario', [ X, Y ], 32, u'tower-of-mastery' ],
|
||||||
|
[ u'lapras', [ X, Y ], 30, u'kalos-route-12' ],
|
||||||
|
|
||||||
|
[ u'treecko', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'torchic', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'mudkip', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
# cosplay pikachu is given to you the first time you participate in a contest
|
||||||
|
[ u'pikachu', [ OR, AS ], 20, u'slateport-city', u'contest-hall', u"Contest Hall" ],
|
||||||
|
[ u'pikachu', [ OR, AS ], 20, u'verdanturf-town', u'contest-hall', u"Contest Hall" ],
|
||||||
|
[ u'pikachu', [ OR, AS ], 20, u'fallarbor-town', u'contest-hall', u"Contest Hall" ],
|
||||||
|
[ u'pikachu', [ OR, AS ], 20, u'lilycove-city', u'contest-hall', u"Contest Hall" ],
|
||||||
|
[ u'latios', [ OR ], 30, u'southern-island' ], # eon tickets ignored here - they're not gifts?
|
||||||
|
[ u'latias', [ AS ], 30, u'southern-island' ],
|
||||||
|
[ u'castform', [ OR, AS ], 30, u'hoenn-route-119', u'weather-institute' ],
|
||||||
|
[ u'chikorita', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'cyndaquil', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'totodile', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'snivy', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'tepig', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'oshawott', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'beldum', [ OR, AS ], 1, u'mossdeep-city', u'stevens-house' ],
|
||||||
|
[ u'turtwig', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'chimchar', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'piplup', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||||
|
[ u'camerupt', [ OR, AS ], 40, u'battle-resort' ],
|
||||||
|
[ u'sharpedo', [ OR, AS ], 40, u'battle-resort' ],
|
||||||
|
]
|
||||||
|
|
||||||
|
def egg_gift_data():
|
||||||
|
return [
|
||||||
|
[ u'togepi', [ G, S, C ], 5, u'violet-city' ],
|
||||||
|
[ u'pichu', [ C ], 5, u'johto-route-34' ],
|
||||||
|
[ u'cleffa', [ C ], 5, u'johto-route-34' ],
|
||||||
|
[ u'igglybuff', [ C ], 5, u'johto-route-34' ],
|
||||||
|
[ u'tyrogue', [ C ], 5, u'johto-route-34' ],
|
||||||
|
[ u'smoochum', [ C ], 5, u'johto-route-34' ],
|
||||||
|
[ u'elekid', [ C ], 5, u'johto-route-34' ],
|
||||||
|
[ u'magby', [ C ], 5, u'johto-route-34' ],
|
||||||
|
|
||||||
|
[ u'wynaut', [ RU, SA, EM ], 5, u'lavaridge-town' ],
|
||||||
|
[ u'togepi', [ FR, LG ], 5, u'water-labyrinth' ],
|
||||||
|
|
||||||
|
[ u'togepi', [ DI, PE, PT ], 1, u'eterna-city', u'west-gate', u'West Gate' ],
|
||||||
|
[ u'happiny', [ DI, PE, ], 1, u'hearthome-city', u'west-gate', u'West Gate' ],
|
||||||
|
[ u'riolu', [ DI, PE, PT ], 1, u'iron-island', u'b2f-left' ],
|
||||||
|
[ u'togepi', [ HG, SS ], 1, u'violet-city', u'poke-mart', u'Poke Mart' ],
|
||||||
|
[ u'mareep', [ HG, SS ], 1, u'violet-city', u'pokemon-center', u'Pokemon Center' ],
|
||||||
|
[ u'wooper', [ HG, SS ], 1, u'violet-city', u'pokemon-center' ],
|
||||||
|
[ u'slugma', [ HG, SS ], 1, u'violet-city', u'pokemon-center' ],
|
||||||
|
|
||||||
|
[ u'larvesta', [ BL, WH ], 1, u'unova-route-18' ],
|
||||||
|
[ u'happiny', [ B2, W2 ], 1, u'nacrene-city', u'west-gate', u'West Gate' ],
|
||||||
|
[ u'wynaut', [ OR, AS ], 1, u'lavaridge-town' ],
|
||||||
|
[ u'togepi', [ OR, AS ], 1, u'lavaridge-town' ],
|
||||||
|
]
|
||||||
|
|
||||||
|
def record_method_and_gifts(gift_method, gift_data):
|
||||||
|
|
||||||
|
en = session.query(Language).filter_by(identifier=u'en').one()
|
||||||
|
|
||||||
|
for gift_datum in gift_data:
|
||||||
|
pokemon_name = identifier_from_name(gift_datum[0])
|
||||||
|
versions = gift_datum[1]
|
||||||
|
level = identifier_from_name(str(gift_datum[2]))
|
||||||
|
location_name = identifier_from_name(gift_datum[3])
|
||||||
|
area_name = None
|
||||||
|
if len(gift_datum) > 4:
|
||||||
|
area_name = identifier_from_name(gift_datum[4])
|
||||||
|
|
||||||
|
pokemon = session.query(Pokemon ).filter_by(identifier=pokemon_name ).one()
|
||||||
|
location = session.query(Location ).filter_by(identifier=location_name ).one()
|
||||||
|
location_area = session.query(LocationArea).filter_by(identifier=area_name, location_id=location.id).first()
|
||||||
|
# Some of these don't exist yet
|
||||||
|
if not location_area:
|
||||||
|
|
||||||
|
location_area = LocationArea(
|
||||||
|
location_id = location.id,
|
||||||
|
game_index = 0, # cause who knows what this means
|
||||||
|
identifier = area_name
|
||||||
|
)
|
||||||
|
|
||||||
|
area_prose = None
|
||||||
|
if area_name != None:
|
||||||
|
area_prose = gift_datum[5]
|
||||||
|
location_area.name_map[en] = area_prose
|
||||||
|
|
||||||
|
session.add(location_area)
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
for version in versions:
|
||||||
|
encounter_slot = session.query(EncounterSlot).filter_by(
|
||||||
|
version_group_id = version.version_group_id,
|
||||||
|
encounter_method_id = gift_method.id
|
||||||
|
).first()
|
||||||
|
|
||||||
|
if not encounter_slot:
|
||||||
|
encounter_slot = EncounterSlot(
|
||||||
|
version_group_id = version.version_group_id,
|
||||||
|
encounter_method_id = gift_method.id,
|
||||||
|
# No priority over or under other events/conditions
|
||||||
|
slot = None,
|
||||||
|
# Rarity is meaningless for gifts, but say that it's
|
||||||
|
# 100% to help out code that expects rarity to be defined.
|
||||||
|
rarity = 100,
|
||||||
|
)
|
||||||
|
session.add(encounter_slot)
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
encounter_info = {
|
||||||
|
'version_id': version.id,
|
||||||
|
'location_area_id': location_area.id,
|
||||||
|
'encounter_slot_id': encounter_slot.id,
|
||||||
|
'pokemon_id': pokemon.id,
|
||||||
|
'min_level': level,
|
||||||
|
'max_level': level
|
||||||
|
}
|
||||||
|
encounter = session.query(Encounter).filter_by(**encounter_info).first()
|
||||||
|
if not encounter:
|
||||||
|
encounter = Encounter(**encounter_info)
|
||||||
|
session.add(encounter)
|
||||||
|
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
normal_gift_method = session.query(EncounterMethod).filter_by(identifier=u'gift').one()
|
||||||
|
record_method_and_gifts(normal_gift_method, normal_gift_data())
|
||||||
|
|
||||||
|
egg_gift_method = session.query(EncounterMethod).filter_by(identifier=u'gift-egg').one()
|
||||||
|
record_method_and_gifts(egg_gift_method, egg_gift_data())
|
Loading…
Reference in a new issue