2020-12-22 01:04:09 +00:00
using System.Linq ;
2017-07-25 07:28:43 +00:00
using static PKHeX . Core . EncounterUtil ;
2020-08-30 17:23:22 +00:00
using static PKHeX . Core . GameVersion ;
2017-07-25 07:28:43 +00:00
namespace PKHeX.Core
{
2017-10-24 06:12:58 +00:00
/// <summary>
/// Generation 4 Encounters
/// </summary>
2017-07-25 07:28:43 +00:00
internal static class Encounters4
{
2020-08-30 17:23:22 +00:00
internal static readonly EncounterArea4 [ ] SlotsD = EncounterArea4 . GetAreas ( Get ( "d" , "da" ) , D ) ;
internal static readonly EncounterArea4 [ ] SlotsP = EncounterArea4 . GetAreas ( Get ( "p" , "pe" ) , P ) ;
internal static readonly EncounterArea4 [ ] SlotsPt = EncounterArea4 . GetAreas ( Get ( "pt" , "pt" ) , Pt ) ;
internal static readonly EncounterArea4 [ ] SlotsHG = EncounterArea4 . GetAreas ( Get ( "hg" , "hg" ) , HG ) ;
internal static readonly EncounterArea4 [ ] SlotsSS = EncounterArea4 . GetAreas ( Get ( "ss" , "ss" ) , SS ) ;
private static byte [ ] [ ] Get ( string resource , string ident ) = > BinLinker . Unpack ( Util . GetBinaryResource ( $"encounter_{resource}.pkl" ) , ident ) ;
2017-07-25 07:28:43 +00:00
static Encounters4 ( )
{
2018-03-27 05:23:11 +00:00
MarkEncounterTradeStrings ( TradeGift_DPPt , TradeDPPt ) ;
MarkEncounterTradeStrings ( TradeGift_HGSS , TradeHGSS ) ;
2018-10-27 20:37:03 +00:00
2018-04-30 01:26:36 +00:00
foreach ( var t in RanchGifts )
t . TrainerNames = RanchOTNames ;
2018-03-31 04:38:57 +00:00
2020-08-30 17:23:22 +00:00
Encounter_DPPt . SetVersion ( DPPt ) ;
Encounter_HGSS . SetVersion ( HGSS ) ;
2017-07-25 07:28:43 +00:00
}
#region Pokéwalker Encounter
// all pkm are in Poke Ball and have a met location of "PokeWalker"
2020-12-22 01:04:09 +00:00
private static readonly EncounterStatic4Pokewalker [ ] Encounter_PokeWalker =
2017-07-25 07:28:43 +00:00
{
// Some pkm has a pre-level move, an egg move or even a special move, it might be also available via HM/TM/Tutor
// Johto/Kanto Courses
2020-12-22 01:04:09 +00:00
new ( 084 , 1 , 08 ) , // Doduo
new ( 115 , 1 , 08 ) , // Kangaskhan
new ( 029 , 1 , 05 ) , // Nidoran♀
new ( 032 , 0 , 05 ) , // Nidoran♂
new ( 016 , 0 , 05 ) , // Pidgey
new ( 161 , 1 , 05 ) , // Sentret
new ( 202 , 1 , 15 ) , // Wobbuffet
new ( 069 , 1 , 08 ) , // Bellsprout
new ( 046 , 1 , 06 ) , // Paras
new ( 048 , 0 , 06 ) , // Venonat
new ( 021 , 0 , 05 ) , // Spearow
new ( 043 , 1 , 05 ) , // Oddish
new ( 095 , 0 , 09 ) , // Onix
new ( 240 , 0 , 09 ) { Moves = new [ ] { 241 } , } , // Magby: Sunny Day
new ( 066 , 1 , 07 ) , // Machop
new ( 077 , 1 , 07 ) , // Ponyta
new ( 074 , 1 , 08 ) { Moves = new [ ] { 189 } , } , // Geodude: Mud-Slap
new ( 163 , 1 , 06 ) , // Hoothoot
new ( 054 , 1 , 10 ) , // Psyduck
new ( 120 , 2 , 10 ) , // Staryu
new ( 060 , 0 , 08 ) , // Poliwag
new ( 079 , 0 , 08 ) , // Slowpoke
new ( 191 , 1 , 06 ) , // Sunkern
new ( 194 , 0 , 06 ) , // Wooper
new ( 081 , 2 , 11 ) , // Magnemite
new ( 239 , 0 , 11 ) { Moves = new [ ] { 009 } , } , // Elekid: Thunder Punch
new ( 081 , 2 , 08 ) , // Magnemite
new ( 198 , 1 , 11 ) , // Murkrow
new ( 019 , 1 , 07 ) , // Rattata
new ( 163 , 1 , 07 ) , // Hoothoot
new ( 092 , 1 , 15 ) { Moves = new [ ] { 194 } , } , // Gastly: Destiny Bond
new ( 238 , 1 , 12 ) { Moves = new [ ] { 419 } , } , // Smoochum: Avalanche
new ( 092 , 1 , 10 ) , // Gastly
new ( 095 , 0 , 10 ) , // Onix
new ( 041 , 0 , 08 ) , // Zubat
new ( 066 , 0 , 08 ) , // Machop
new ( 060 , 1 , 15 ) { Moves = new [ ] { 187 } } , // Poliwag: Belly Drum
new ( 147 , 1 , 10 ) , // Dratini
new ( 090 , 1 , 12 ) , // Shellder
new ( 098 , 0 , 12 ) { Moves = new [ ] { 152 } } , // Krabby: Crabhammer
new ( 072 , 1 , 09 ) , // Tentacool
new ( 118 , 1 , 09 ) , // Goldeen
new ( 063 , 1 , 15 ) , // Abra
new ( 100 , 2 , 15 ) , // Voltorb
new ( 088 , 0 , 13 ) , // Grimer
new ( 109 , 1 , 13 ) { Moves = new [ ] { 120 } } , // Koffing: Self-Destruct
new ( 019 , 1 , 16 ) , // Rattata
new ( 162 , 0 , 15 ) , // Furret
2017-07-25 07:28:43 +00:00
// Hoenn Courses
2020-12-22 01:04:09 +00:00
new ( 264 , 1 , 30 ) , // Linoone
new ( 300 , 1 , 30 ) , // Skitty
new ( 313 , 0 , 25 ) , // Volbeat
new ( 314 , 1 , 25 ) , // Illumise
new ( 263 , 1 , 17 ) , // Zigzagoon
new ( 265 , 1 , 15 ) , // Wurmple
new ( 298 , 1 , 20 ) , // Azurill
new ( 320 , 1 , 31 ) , // Wailmer
new ( 116 , 1 , 20 ) , // Horsea
new ( 318 , 1 , 26 ) , // Carvanha
new ( 118 , 1 , 22 ) { Moves = new [ ] { 401 } } , // Goldeen: Aqua Tail
new ( 129 , 1 , 15 ) , // Magikarp
new ( 218 , 1 , 31 ) , // Slugma
new ( 307 , 0 , 32 ) , // Meditite
new ( 111 , 0 , 25 ) , // Rhyhorn
new ( 228 , 0 , 27 ) , // Houndour
new ( 074 , 0 , 29 ) , // Geodude
new ( 077 , 1 , 19 ) , // Ponyta
new ( 351 , 1 , 30 ) , // Castform
new ( 352 , 0 , 30 ) , // Kecleon
new ( 203 , 1 , 28 ) , // Girafarig
new ( 234 , 1 , 28 ) , // Stantler
new ( 044 , 1 , 14 ) , // Gloom
new ( 070 , 0 , 13 ) , // Weepinbell
new ( 105 , 1 , 30 ) { Moves = new [ ] { 037 } } , // Marowak: Thrash
new ( 128 , 0 , 30 ) , // Tauros
new ( 042 , 0 , 33 ) , // Golbat
new ( 177 , 1 , 24 ) , // Natu
new ( 066 , 0 , 13 ) { Moves = new [ ] { 418 } } , // Machop: Bullet Punch
new ( 092 , 1 , 15 ) , // Gastly
2017-07-25 07:28:43 +00:00
// Sinnoh Courses
2020-12-22 01:04:09 +00:00
new ( 415 , 0 , 30 ) , // Combee
new ( 439 , 0 , 29 ) , // Mime Jr.
new ( 403 , 1 , 33 ) , // Shinx
new ( 406 , 0 , 30 ) , // Budew
new ( 399 , 1 , 13 ) , // Bidoof
new ( 401 , 0 , 15 ) , // Kricketot
new ( 361 , 1 , 28 ) , // Snorunt
new ( 459 , 0 , 31 ) { Moves = new [ ] { 452 } } , // Snover: Wood Hammer
new ( 215 , 0 , 28 ) { Moves = new [ ] { 306 } } , // Sneasel: Crash Claw
new ( 436 , 2 , 20 ) , // Bronzor
new ( 179 , 1 , 15 ) , // Mareep
new ( 220 , 1 , 16 ) , // Swinub
new ( 357 , 1 , 35 ) , // Tropius
new ( 438 , 0 , 30 ) , // Bonsly
new ( 114 , 1 , 30 ) , // Tangela
new ( 400 , 1 , 30 ) , // Bibarel
new ( 102 , 1 , 17 ) , // Exeggcute
new ( 179 , 0 , 19 ) , // Mareep
new ( 200 , 1 , 32 ) { Moves = new [ ] { 194 } , } , // Misdreavus: Destiny Bond
new ( 433 , 0 , 22 ) { Moves = new [ ] { 105 } , } , // Chingling: Recover
new ( 093 , 0 , 25 ) , // Haunter
new ( 418 , 0 , 28 ) { Moves = new [ ] { 226 } , } , // Buizel: Baton Pass
new ( 170 , 1 , 17 ) , // Chinchou
new ( 223 , 1 , 19 ) , // Remoraid
new ( 422 , 1 , 30 ) { Moves = new [ ] { 243 } , } , // Shellos: Mirror Coat
new ( 456 , 1 , 26 ) , // Finneon
new ( 086 , 1 , 27 ) , // Seel
new ( 129 , 1 , 30 ) , // Magikarp
new ( 054 , 1 , 22 ) { Moves = new [ ] { 281 } , } , // Psyduck: Yawn
new ( 090 , 0 , 20 ) , // Shellder
new ( 025 , 1 , 30 ) , // Pikachu
new ( 417 , 1 , 33 ) { Moves = new [ ] { 175 } , } , // Pachirisu: Flail
new ( 035 , 1 , 31 ) , // Clefairy
new ( 039 , 1 , 30 ) , // Jigglypuff
new ( 183 , 1 , 25 ) , // Marill
new ( 187 , 1 , 25 ) , // Hoppip
new ( 442 , 0 , 31 ) , // Spiritomb
new ( 446 , 0 , 33 ) , // Munchlax
new ( 349 , 0 , 30 ) , // Feebas
new ( 433 , 1 , 26 ) , // Chingling
new ( 042 , 0 , 33 ) , // Golbat
new ( 164 , 1 , 30 ) , // Noctowl
2017-07-25 07:28:43 +00:00
// Special Courses
2020-12-22 01:04:09 +00:00
new ( 120 , 2 , 18 ) { Moves = new [ ] { 113 } } , // Staryu: Light Screen
new ( 224 , 1 , 19 ) { Moves = new [ ] { 324 } } , // Octillery: Signal Beam
new ( 116 , 0 , 15 ) , // Horsea
new ( 222 , 1 , 16 ) , // Corsola
new ( 170 , 1 , 12 ) , // Chinchou
new ( 223 , 0 , 14 ) , // Remoraid
new ( 035 , 0 , 08 ) { Moves = new [ ] { 236 } } , // Clefairy: Moonlight
new ( 039 , 0 , 10 ) , // Jigglypuff
new ( 041 , 0 , 09 ) , // Zubat
new ( 163 , 1 , 06 ) , // Hoothoot
new ( 074 , 0 , 05 ) , // Geodude
new ( 095 , 1 , 05 ) { Moves = new [ ] { 088 } } , // Onix: Rock Throw
new ( 025 , 0 , 15 ) { Moves = new [ ] { 019 } } , // Pikachu: Fly
new ( 025 , 1 , 14 ) { Moves = new [ ] { 057 } } , // Pikachu: Surf
new ( 025 , 1 , 12 ) { Moves = new [ ] { 344 , 252 } } , // Pikachu: Volt Tackle, Fake Out
new ( 025 , 0 , 13 ) { Moves = new [ ] { 175 } } , // Pikachu: Flail
new ( 025 , 0 , 10 ) , // Pikachu
new ( 025 , 1 , 10 ) , // Pikachu
new ( 302 , 1 , 15 ) , // Sableye
new ( 441 , 0 , 15 ) , // Chatot
new ( 025 , 1 , 10 ) , // Pikachu
new ( 453 , 0 , 10 ) , // Croagunk
new ( 417 , 0 , 05 ) , // Pachirisu
new ( 427 , 1 , 05 ) , // Buneary
new ( 133 , 0 , 10 ) , // Eevee
new ( 255 , 0 , 10 ) , // Torchic
new ( 061 , 1 , 15 ) { Moves = new [ ] { 003 } } , // Poliwhirl: Double Slap
new ( 279 , 0 , 15 ) , // Pelipper
new ( 025 , 1 , 08 ) , // Pikachu
new ( 052 , 0 , 10 ) , // Meowth
new ( 374 , 2 , 05 ) { Moves = new [ ] { 428 , 334 , 442 } } , // Beldum: Zen Headbutt, Iron Defense & Iron Head.
new ( 446 , 0 , 05 ) { Moves = new [ ] { 120 } } , // Munchlax: Self-Destruct
new ( 116 , 0 , 05 ) { Moves = new [ ] { 330 } } , // Horsea: Muddy Water
new ( 355 , 0 , 05 ) { Moves = new [ ] { 286 } } , // Duskull: Imprison
new ( 129 , 0 , 05 ) { Moves = new [ ] { 340 } } , // Magikarp: Bounce
new ( 436 , 2 , 05 ) { Moves = new [ ] { 433 } } , // Bronzor: Trick Room
new ( 239 , 0 , 05 ) { Moves = new [ ] { 9 } } , // Elekid: Thunder Punch (can be tutored)
new ( 240 , 0 , 05 ) { Moves = new [ ] { 7 } } , // Magby: Fire Punch (can be tutored)
new ( 238 , 1 , 05 ) { Moves = new [ ] { 8 } } , // Smoochum: Ice Punch (can be tutored)
new ( 440 , 1 , 05 ) { Moves = new [ ] { 215 } } , // Happiny: Heal Bell
new ( 173 , 1 , 05 ) { Moves = new [ ] { 118 } } , // Cleffa: Metronome
new ( 174 , 0 , 05 ) { Moves = new [ ] { 273 } } , // Igglybuff: Wish
2017-07-25 07:28:43 +00:00
} ;
#endregion
#region Static Encounter / Gift Tables
2020-08-31 02:24:24 +00:00
private static readonly EncounterStatic4 [ ] Encounter_DPPt =
2017-07-25 07:28:43 +00:00
{
2019-06-25 17:55:35 +00:00
// Starters
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 387 , Level = 5 , Location = 076 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Turtwig @ Lake Verity
new ( ) { Gift = true , Species = 390 , Level = 5 , Location = 076 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Chimchar
new ( ) { Gift = true , Species = 393 , Level = 5 , Location = 076 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Piplup
new ( ) { Gift = true , Species = 387 , Level = 5 , Location = 016 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Turtwig @ Route 201
new ( ) { Gift = true , Species = 390 , Level = 5 , Location = 016 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Chimchar
new ( ) { Gift = true , Species = 393 , Level = 5 , Location = 016 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Piplup
2019-06-25 17:55:35 +00:00
// Fossil @ Mining Museum
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 138 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Omanyte
new ( ) { Gift = true , Species = 140 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Kabuto
new ( ) { Gift = true , Species = 142 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Aerodactyl
new ( ) { Gift = true , Species = 345 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Lileep
new ( ) { Gift = true , Species = 347 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Anorith
new ( ) { Gift = true , Species = 408 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Cranidos
new ( ) { Gift = true , Species = 410 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , Version = DP } , // Shieldon
new ( ) { Gift = true , Species = 138 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Omanyte
new ( ) { Gift = true , Species = 140 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Kabuto
new ( ) { Gift = true , Species = 142 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Aerodactyl
new ( ) { Gift = true , Species = 345 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Lileep
new ( ) { Gift = true , Species = 347 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Anorith
new ( ) { Gift = true , Species = 408 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Cranidos
new ( ) { Gift = true , Species = 410 , Level = 20 , Location = 094 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = Pt } , // Shieldon
2019-06-25 17:55:35 +00:00
// Gift
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 133 , Level = 05 , Location = 010 , Version = DP , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP , } , // Eevee @ Hearthome City
new ( ) { Gift = true , Species = 133 , Level = 20 , Location = 010 , Version = Pt , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Eevee @ Hearthome City
new ( ) { Gift = true , Species = 137 , Level = 25 , Location = 012 , Version = Pt , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Porygon @ Veilstone City
2020-12-22 01:17:56 +00:00
new ( ) { Gift = true , Species = 175 , Level = 01 , EggLocation = 2011 , Version = Pt , } , // Togepi Egg from Cynthia
new ( ) { Gift = true , Species = 440 , Level = 01 , EggLocation = 2009 , Version = DP , } , // Happiny Egg from Traveling Man
new ( ) { Gift = true , Species = 447 , Level = 01 , EggLocation = 2010 , } , // Riolu Egg from Riley
2019-09-12 05:06:24 +00:00
2019-06-25 17:55:35 +00:00
// Stationary
2020-12-22 01:17:56 +00:00
new ( ) { Species = 425 , Level = 22 , Location = 47 , Version = DP } , // Drifloon @ Valley Windworks
new ( ) { Species = 425 , Level = 15 , Location = 47 , Version = Pt } , // Drifloon @ Valley Windworks
2020-12-23 20:15:49 +00:00
new ( ) { Species = 479 , Level = 15 , Location = 70 , Version = DP , TypeEncounter = EncounterType . Building_EnigmaStone , } , // Rotom @ Old Chateau
new ( ) { Species = 479 , Level = 20 , Location = 70 , Version = Pt , TypeEncounter = EncounterType . Building_EnigmaStone , } , // Rotom @ Old Chateau
2020-12-22 01:17:56 +00:00
new ( ) { Species = 442 , Level = 25 , Location = 24 } , // Spiritomb @ Route 209
2019-09-12 05:06:24 +00:00
2019-06-25 17:55:35 +00:00
// Stationary Legendary
2020-12-23 20:15:49 +00:00
new ( ) { Species = 377 , Level = 30 , Location = 125 , Version = Pt , TypeEncounter = EncounterType . Cave_HallOfOrigin , } , // Regirock @ Rock Peak Ruins
new ( ) { Species = 378 , Level = 30 , Location = 124 , Version = Pt , TypeEncounter = EncounterType . Cave_HallOfOrigin , } , // Regice @ Iceberg Ruins
new ( ) { Species = 379 , Level = 30 , Location = 123 , Version = Pt , TypeEncounter = EncounterType . Cave_HallOfOrigin , } , // Registeel @ Iron Ruins
new ( ) { Species = 480 , Level = 50 , Location = 089 , TypeEncounter = EncounterType . Cave_HallOfOrigin , } , // Uxie @ Acuity Cavern
new ( ) { Species = 482 , Level = 50 , Location = 088 , TypeEncounter = EncounterType . Cave_HallOfOrigin , } , // Azelf @ Valor Cavern
new ( ) { Species = 483 , Level = 47 , Location = 051 , Version = D , TypeEncounter = EncounterType . DialgaPalkia } , // Dialga @ Spear Pillar
new ( ) { Species = 484 , Level = 47 , Location = 051 , Version = P , TypeEncounter = EncounterType . DialgaPalkia } , // Palkia @ Spear Pillar
new ( ) { Species = 483 , Level = 70 , Location = 051 , Version = Pt , TypeEncounter = EncounterType . DialgaPalkia } , // Dialga @ Spear Pillar
new ( ) { Species = 484 , Level = 70 , Location = 051 , Version = Pt , TypeEncounter = EncounterType . DialgaPalkia } , // Palkia @ Spear Pillar
new ( ) { Species = 485 , Level = 70 , Location = 084 , Version = DP , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Heatran @ Stark Mountain
new ( ) { Species = 485 , Level = 50 , Location = 084 , Version = Pt , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Heatran @ Stark Mountain
new ( ) { Species = 486 , Level = 70 , Location = 064 , Version = DP , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Regigigas @ Snowpoint Temple
new ( ) { Species = 486 , Level = 01 , Location = 064 , Version = Pt , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Regigigas @ Snowpoint Temple
new ( ) { Species = 487 , Level = 70 , Location = 062 , Version = DP , Form = 0 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Giratina @ Turnback Cave
new ( ) { Species = 487 , Level = 47 , Location = 117 , Version = Pt , Form = 1 , TypeEncounter = EncounterType . DistortionWorld_Pt , HeldItem = 112 } , // Giratina @ Distortion World
new ( ) { Species = 487 , Level = 47 , Location = 062 , Version = Pt , Form = 0 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Giratina @ Turnback Cave
2019-09-12 05:06:24 +00:00
2019-06-25 17:55:35 +00:00
// Event
2020-12-23 20:15:49 +00:00
new ( ) { Species = 491 , Level = 40 , Location = 079 , Version = DP , TypeEncounter = EncounterType . TallGrass } , // Darkrai @ Newmoon Island (Unreleased in Diamond and Pearl)
new ( ) { Species = 491 , Level = 50 , Location = 079 , Version = Pt , TypeEncounter = EncounterType . TallGrass } , // Darkrai @ Newmoon Island
2020-12-22 01:17:56 +00:00
new ( ) { Species = 492 , Form = 0 , Level = 30 , Location = 063 , Version = Pt , Fateful = true } , // Shaymin @ Flower Paradise
new ( ) { Species = 492 , Form = 0 , Level = 30 , Location = 063 , Version = DP , Fateful = false } , // Shaymin @ Flower Paradise (Unreleased in Diamond and Pearl)
2020-12-23 20:15:49 +00:00
new ( ) { Species = 493 , Form = 0 , Level = 80 , Location = 086 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Arceus @ Hall of Origin (Unreleased)
2018-08-03 03:11:42 +00:00
2020-08-31 02:24:24 +00:00
// Roamers
2020-12-23 20:15:49 +00:00
new ( ) { Roaming = true , Species = 481 , Level = 50 , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , Version = DPPt } , // Mesprit
new ( ) { Roaming = true , Species = 488 , Level = 50 , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , Version = DPPt } , // Cresselia
new ( ) { Roaming = true , Species = 144 , Level = 60 , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , Version = Pt } , // Articuno
new ( ) { Roaming = true , Species = 145 , Level = 60 , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , Version = Pt } , // Zapdos
new ( ) { Roaming = true , Species = 146 , Level = 60 , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , Version = Pt } , // Moltres
2017-07-25 07:28:43 +00:00
} ;
2018-08-03 03:11:42 +00:00
2020-08-31 02:24:24 +00:00
private static readonly EncounterStatic4 [ ] Encounter_HGSS =
2017-07-25 07:28:43 +00:00
{
2019-06-25 17:55:35 +00:00
// Starters
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 001 , Level = 05 , Location = 138 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Bulbasaur @ Pallet Town
new ( ) { Gift = true , Species = 004 , Level = 05 , Location = 138 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Charmander
new ( ) { Gift = true , Species = 007 , Level = 05 , Location = 138 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Squirtle
new ( ) { Gift = true , Species = 152 , Level = 05 , Location = 126 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP } , // Chikorita @ New Bark Town
new ( ) { Gift = true , Species = 155 , Level = 05 , Location = 126 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP } , // Cyndaquil
new ( ) { Gift = true , Species = 158 , Level = 05 , Location = 126 , TypeEncounter = EncounterType . Starter_Fossil_Gift_DP } , // Totodile
new ( ) { Gift = true , Species = 252 , Level = 05 , Location = 148 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Treecko @ Saffron City
new ( ) { Gift = true , Species = 255 , Level = 05 , Location = 148 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Torchic
new ( ) { Gift = true , Species = 258 , Level = 05 , Location = 148 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Mudkip
2019-09-12 05:06:24 +00:00
2019-06-25 17:55:35 +00:00
// Fossils @ Pewter City
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 138 , Level = 20 , Location = 140 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Omanyte
new ( ) { Gift = true , Species = 140 , Level = 20 , Location = 140 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Kabuto
new ( ) { Gift = true , Species = 142 , Level = 20 , Location = 140 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Aerodactyl
new ( ) { Gift = true , Species = 345 , Level = 20 , Location = 140 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Lileep
new ( ) { Gift = true , Species = 347 , Level = 20 , Location = 140 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Anorith
new ( ) { Gift = true , Species = 408 , Level = 20 , Location = 140 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Cranidos
new ( ) { Gift = true , Species = 410 , Level = 20 , Location = 140 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Shieldon
2019-09-12 05:06:24 +00:00
2019-06-25 17:55:35 +00:00
// Gift
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 072 , Level = 15 , Location = 130 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Tentacool @ Cianwood City
new ( ) { Gift = true , Species = 133 , Level = 05 , Location = 131 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Eevee @ Goldenrod City
new ( ) { Gift = true , Species = 147 , Level = 15 , Location = 222 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Moves = new [ ] { 245 } } , // Dratini @ Dragon's Den (ExtremeSpeed)
new ( ) { Gift = true , Species = 236 , Level = 10 , Location = 216 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , } , // Tyrogue @ Mt. Mortar
2020-12-22 01:17:56 +00:00
new ( ) { Gift = true , Species = 175 , Level = 01 , EggLocation = 2013 , Moves = new [ ] { 326 } } , // Togepi Egg from Mr. Pokemon (Extrasensory as Egg move)
new ( ) { Gift = true , Species = 179 , Level = 01 , EggLocation = 2014 , } , // Mareep Egg from Primo
new ( ) { Gift = true , Species = 194 , Level = 01 , EggLocation = 2014 , } , // Wooper Egg from Primo
new ( ) { Gift = true , Species = 218 , Level = 01 , EggLocation = 2014 , } , // Slugma Egg from Primo
2019-09-12 05:06:24 +00:00
2017-07-25 07:28:43 +00:00
// Celadon City Game Corner
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 122 , Level = 15 , Location = 144 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Mr. Mime
new ( ) { Gift = true , Species = 133 , Level = 15 , Location = 144 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Eevee
new ( ) { Gift = true , Species = 137 , Level = 15 , Location = 144 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Porygon
2019-09-12 05:06:24 +00:00
2017-07-25 07:28:43 +00:00
// Goldenrod City Game Corner
2020-12-23 20:15:49 +00:00
new ( ) { Gift = true , Species = 063 , Level = 15 , Location = 131 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Abra
new ( ) { Gift = true , Species = 023 , Level = 15 , Location = 131 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = HG } , // Ekans
new ( ) { Gift = true , Species = 027 , Level = 15 , Location = 131 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Version = SS } , // Sandshrew
new ( ) { Gift = true , Species = 147 , Level = 15 , Location = 131 , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Dratini
2019-09-12 05:06:24 +00:00
2017-07-25 07:28:43 +00:00
// Team Rocket HQ Trap Floor
2020-12-23 20:15:49 +00:00
new ( ) { Species = 100 , Level = 23 , Location = 213 , TypeEncounter = EncounterType . Building_EnigmaStone , } , // Voltorb
new ( ) { Species = 074 , Level = 21 , Location = 213 , TypeEncounter = EncounterType . Building_EnigmaStone , } , // Geodude
new ( ) { Species = 109 , Level = 21 , Location = 213 , TypeEncounter = EncounterType . Building_EnigmaStone , } , // Koffing
2017-07-25 07:28:43 +00:00
2019-06-25 17:55:35 +00:00
// Stationary
2020-12-23 20:15:49 +00:00
new ( ) { Species = 130 , Level = 30 , Location = 135 , TypeEncounter = EncounterType . Surfing_Fishing , Shiny = Shiny . Always } , // Gyarados @ Lake of Rage
new ( ) { Species = 131 , Level = 20 , Location = 210 , TypeEncounter = EncounterType . Surfing_Fishing , } , // Lapras @ Union Cave Friday Only
new ( ) { Species = 101 , Level = 23 , Location = 213 , TypeEncounter = EncounterType . Building_EnigmaStone , } , // Electrode @ Team Rocket HQ
2020-12-22 01:17:56 +00:00
new ( ) { Species = 143 , Level = 50 , Location = 159 , } , // Snorlax @ Route 11
new ( ) { Species = 143 , Level = 50 , Location = 160 , } , // Snorlax @ Route 12
new ( ) { Species = 185 , Level = 20 , Location = 184 , } , // Sudowoodo @ Route 36, Encounter does not have type
2020-12-29 08:37:59 +00:00
new ( ) // Spiky-Eared Pichu @ Ilex Forest
{
Species = 172 ,
Level = 30 ,
Gender = 1 ,
Form = 1 ,
Nature = Nature . Naughty ,
Location = 214 ,
Moves = new [ ] { 344 , 270 , 207 , 220 } ,
TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio ,
Shiny = Shiny . Never
} ,
2019-09-12 05:06:24 +00:00
2019-06-25 17:55:35 +00:00
// Stationary Legendary
2020-12-23 20:15:49 +00:00
new ( ) { Species = 144 , Level = 50 , Location = 203 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Articuno @ Seafoam Islands
2020-12-22 01:17:56 +00:00
new ( ) { Species = 145 , Level = 50 , Location = 158 , } , // Zapdos @ Route 10
2020-12-23 20:15:49 +00:00
new ( ) { Species = 146 , Level = 50 , Location = 219 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Moltres @ Mt. Silver Cave
new ( ) { Species = 150 , Level = 70 , Location = 199 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Mewtwo @ Cerulean Cave
2020-12-22 01:17:56 +00:00
new ( ) { Species = 245 , Level = 40 , Location = 173 , } , // Suicune @ Route 25
2020-12-23 20:15:49 +00:00
new ( ) { Species = 245 , Level = 40 , Location = 206 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Suicune @ Burned Tower
new ( ) { Species = 249 , Level = 45 , Location = 218 , Version = SS , TypeEncounter = EncounterType . Surfing_Fishing } , // Lugia @ Whirl Islands
new ( ) { Species = 249 , Level = 70 , Location = 218 , Version = HG , TypeEncounter = EncounterType . Surfing_Fishing } , // Lugia @ Whirl Islands
new ( ) { Species = 250 , Level = 45 , Location = 205 , Version = HG , TypeEncounter = EncounterType . Building_EnigmaStone } , // Ho-Oh @ Bell Tower
new ( ) { Species = 250 , Level = 70 , Location = 205 , Version = SS , TypeEncounter = EncounterType . Building_EnigmaStone } , // Ho-Oh @ Bell Tower
new ( ) { Species = 380 , Level = 40 , Location = 140 , Version = SS , TypeEncounter = EncounterType . Building_EnigmaStone } , // Latias @ Pewter City
new ( ) { Species = 381 , Level = 40 , Location = 140 , Version = HG , TypeEncounter = EncounterType . Building_EnigmaStone } , // Latios @ Pewter City
new ( ) { Species = 382 , Level = 50 , Location = 232 , Version = HG , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Kyogre @ Embedded Tower
new ( ) { Species = 383 , Level = 50 , Location = 232 , Version = SS , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Groudon @ Embedded Tower
new ( ) { Species = 384 , Level = 50 , Location = 232 , TypeEncounter = EncounterType . Cave_HallOfOrigin } , // Rayquaza @ Embedded Tower
new ( ) { Species = 483 , Level = 01 , Location = 231 , Gift = true , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Dialga @ Sinjoh Ruins
new ( ) { Species = 484 , Level = 01 , Location = 231 , Gift = true , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio } , // Palkia @ Sinjoh Ruins
new ( ) { Species = 487 , Level = 01 , Location = 231 , Gift = true , TypeEncounter = EncounterType . Starter_Fossil_Gift_Pt_DPTrio , Form = 1 , HeldItem = 112 } , // Giratina @ Sinjoh Ruins
2018-08-03 03:11:42 +00:00
2020-08-31 02:24:24 +00:00
// Johto Roamers
2020-12-23 20:15:49 +00:00
new ( ) { Roaming = true , Species = 243 , Level = 40 , Version = HGSS , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , } , // Raikou
new ( ) { Roaming = true , Species = 244 , Level = 40 , Version = HGSS , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , } , // Entei
2020-08-31 02:24:24 +00:00
// Kanto Roamers
2020-12-23 20:15:49 +00:00
new ( ) { Roaming = true , Species = 380 , Level = 35 , Version = HG , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , } , // Latias
new ( ) { Roaming = true , Species = 381 , Level = 35 , Version = SS , TypeEncounter = EncounterType . TallGrass | EncounterType . Surfing_Fishing , } , // Latios
2020-08-31 02:24:24 +00:00
} ;
2017-07-25 07:28:43 +00:00
#endregion
#region Trade Tables
PKHeX.Core Nullable cleanup (#2401)
* Handle some nullable cases
Refactor MysteryGift into a second abstract class (backed by a byte array, or fake data)
Make some classes have explicit constructors instead of { } initialization
* Handle bits more obviously without null
* Make SaveFile.BAK explicitly readonly again
* merge constructor methods to have readonly fields
* Inline some properties
* More nullable handling
* Rearrange box actions
define straightforward classes to not have any null properties
* Make extrabyte reference array immutable
* Move tooltip creation to designer
* Rearrange some logic to reduce nesting
* Cache generated fonts
* Split mystery gift album purpose
* Handle more tooltips
* Disallow null setters
* Don't capture RNG object, only type enum
* Unify learnset objects
Now have readonly properties which are never null
don't new() empty learnsets (>800 Learnset objects no longer created,
total of 2400 objects since we also new() a move & level array)
optimize g1/2 reader for early abort case
* Access rewrite
Initialize blocks in a separate object, and get via that object
removes a couple hundred "might be null" warnings since blocks are now readonly getters
some block references have been relocated, but interfaces should expose all that's needed
put HoF6 controls in a groupbox, and disable
* Readonly personal data
* IVs non nullable for mystery gift
* Explicitly initialize forced encounter moves
* Make shadow objects readonly & non-null
Put murkrow fix in binary data resource, instead of on startup
* Assign dex form fetch on constructor
Fixes legality parsing edge cases
also handle cxd parse for valid; exit before exception is thrown in FrameGenerator
* Remove unnecessary null checks
* Keep empty value until init
SetPouch sets the value to an actual one during load, but whatever
* Readonly team lock data
* Readonly locks
Put locked encounters at bottom (favor unlocked)
* Mail readonly data / offset
Rearrange some call flow and pass defaults
Add fake classes for SaveDataEditor mocking
Always party size, no need to check twice in stat editor
use a fake save file as initial data for savedata editor, and for
gamedata (wow i found a usage)
constrain eventwork editor to struct variable types (uint, int, etc),
thus preventing null assignment errors
2019-10-17 01:47:31 +00:00
private static readonly string [ ] RanchOTNames = { string . Empty , "ユカリ" , "Hayley" , "EULALIE" , "GIULIA" , "EUKALIA" , string . Empty , "Eulalia" } ;
2018-08-03 03:11:42 +00:00
2020-12-24 23:23:26 +00:00
private static readonly EncounterTrade4 [ ] RanchGifts =
2017-09-21 04:28:29 +00:00
{
2020-12-24 23:23:26 +00:00
new EncounterTrade4RanchGift ( 323975838 , 025 , 18 ) { Moves = new [ ] { 447 , 085 , 148 , 104 } , TID = 1000 , SID = 19840 , OTGender = 1 , Version = D , Location = 0068 , Gender = 0 , Ability = 1 , CurrentLevel = 20 , } , // Pikachu
new EncounterTrade4RanchGift ( 323977664 , 037 , 16 ) { Moves = new [ ] { 412 , 109 , 053 , 219 } , TID = 1000 , SID = 21150 , OTGender = 1 , Version = D , Location = 3000 , Gender = 0 , Ability = 1 , CurrentLevel = 30 , } , // Vulpix
new EncounterTrade4RanchGift ( 323975579 , 077 , 13 ) { Moves = new [ ] { 036 , 033 , 039 , 052 } , TID = 1000 , SID = 01123 , OTGender = 1 , Version = D , Location = 3000 , Gender = 0 , Ability = 2 , CurrentLevel = 16 , } , // Ponyta
new EncounterTrade4RanchGift ( 323975564 , 108 , 34 ) { Moves = new [ ] { 076 , 111 , 014 , 205 } , TID = 1000 , SID = 03050 , OTGender = 1 , Version = D , Location = 0077 , Gender = 0 , Ability = 1 , CurrentLevel = 40 , } , // Lickitung
new EncounterTrade4RanchGift ( 323977579 , 114 , 01 ) { Moves = new [ ] { 437 , 438 , 079 , 246 } , TID = 1000 , SID = 49497 , OTGender = 1 , Version = D , Location = 3000 , Gender = 1 , Ability = 2 , } , // Tangela
new EncounterTrade4RanchGift ( 323977675 , 133 , 16 ) { Moves = new [ ] { 363 , 270 , 098 , 247 } , TID = 1000 , SID = 47710 , OTGender = 1 , Version = D , Location = 0068 , Gender = 0 , Ability = 2 , CurrentLevel = 30 , } , // Eevee
new EncounterTrade4RanchGift ( 323977588 , 142 , 20 ) { Moves = new [ ] { 363 , 089 , 444 , 332 } , TID = 1000 , SID = 43066 , OTGender = 1 , Version = D , Location = 0094 , Gender = 0 , Ability = 1 , CurrentLevel = 50 , } , // Aerodactyl
new EncounterTrade4RanchGift ( 232975554 , 193 , 22 ) { Moves = new [ ] { 318 , 095 , 246 , 138 } , TID = 1000 , SID = 42301 , OTGender = 1 , Version = D , Location = 0052 , Gender = 0 , Ability = 1 , CurrentLevel = 45 , Ball = 0x05 , } , // Yanma
new EncounterTrade4RanchGift ( 323975570 , 241 , 16 ) { Moves = new [ ] { 208 , 215 , 360 , 359 } , TID = 1000 , SID = 02707 , OTGender = 1 , Version = D , Location = 3000 , Gender = 1 , Ability = 1 , CurrentLevel = 48 , } , // Miltank
new EncounterTrade4RanchGift ( 323975563 , 285 , 22 ) { Moves = new [ ] { 402 , 147 , 206 , 078 } , TID = 1000 , SID = 02788 , OTGender = 1 , Version = D , Location = 3000 , Gender = 0 , Ability = 2 , CurrentLevel = 45 , Ball = 0x05 , } , // Shroomish
new EncounterTrade4RanchGift ( 323975559 , 320 , 30 ) { Moves = new [ ] { 156 , 323 , 133 , 058 } , TID = 1000 , SID = 27046 , OTGender = 1 , Version = D , Location = 0038 , Gender = 0 , Ability = 2 , CurrentLevel = 45 , } , // Wailmer
new EncounterTrade4RanchGift ( 323977657 , 360 , 01 ) { Moves = new [ ] { 204 , 150 , 227 , 000 } , TID = 1000 , SID = 01788 , OTGender = 1 , Version = D , Location = 0004 , Gender = 0 , Ability = 2 , EggLocation = 2000 , } , // Wynaut
new EncounterTrade4RanchGift ( 323975563 , 397 , 02 ) { Moves = new [ ] { 355 , 017 , 283 , 018 } , TID = 1000 , SID = 59298 , OTGender = 1 , Version = D , Location = 0016 , Gender = 0 , Ability = 2 , CurrentLevel = 23 , } , // Staravia
new EncounterTrade4RanchGift ( 323970584 , 415 , 05 ) { Moves = new [ ] { 230 , 016 , 000 , 000 } , TID = 1000 , SID = 54140 , OTGender = 1 , Version = D , Location = 0020 , Gender = 1 , Ability = 1 , CurrentLevel = 20 , } , // Combee
new EncounterTrade4RanchGift ( 323977539 , 417 , 09 ) { Moves = new [ ] { 447 , 045 , 351 , 098 } , TID = 1000 , SID = 18830 , OTGender = 1 , Version = D , Location = 0020 , Gender = 1 , Ability = 2 , CurrentLevel = 10 , } , // Pachirisu
new EncounterTrade4RanchGift ( 323974107 , 422 , 20 ) { Moves = new [ ] { 363 , 352 , 426 , 104 } , TID = 1000 , SID = 39272 , OTGender = 1 , Version = D , Location = 0028 , Gender = 0 , Ability = 2 , CurrentLevel = 25 , Form = 1 } , // Shellos
new EncounterTrade4RanchGift ( 323977566 , 427 , 10 ) { Moves = new [ ] { 204 , 193 , 409 , 098 } , TID = 1000 , SID = 31045 , OTGender = 1 , Version = D , Location = 3000 , Gender = 1 , Ability = 1 , CurrentLevel = 16 , } , // Buneary
new EncounterTrade4RanchGift ( 323975579 , 453 , 22 ) { Moves = new [ ] { 310 , 207 , 426 , 389 } , TID = 1000 , SID = 41342 , OTGender = 1 , Version = D , Location = 0052 , Gender = 0 , Ability = 2 , CurrentLevel = 31 , Ball = 0x05 , } , // Croagunk
new EncounterTrade4RanchGift ( 323977566 , 456 , 15 ) { Moves = new [ ] { 213 , 352 , 219 , 392 } , TID = 1000 , SID = 48348 , OTGender = 1 , Version = D , Location = 0020 , Gender = 1 , Ability = 1 , CurrentLevel = 35 , } , // Finneon
new EncounterTrade4RanchGift ( 323975582 , 459 , 32 ) { Moves = new [ ] { 452 , 420 , 275 , 059 } , TID = 1000 , SID = 23360 , OTGender = 1 , Version = D , Location = 0031 , Gender = 0 , Ability = 1 , CurrentLevel = 41 , } , // Snover
new EncounterTrade4RanchSpecial ( 151 , 50 ) { Moves = new [ ] { 235 , 216 , 095 , 100 } , TID = 1000 , SID = 59228 , OTGender = 1 , Version = D , Location = 3000 , Ball = 0x10 , Gender = 2 , } , // Mew
new EncounterTrade4RanchSpecial ( 489 , 01 ) { Moves = new [ ] { 447 , 240 , 156 , 057 } , TID = 1000 , SID = 09248 , OTGender = 1 , Version = D , Location = 3000 , Ball = 0x10 , Gender = 2 , CurrentLevel = 50 , EggLocation = 3000 , } , // Phione
2017-09-21 04:28:29 +00:00
} ;
2018-08-03 03:11:42 +00:00
2020-12-24 23:23:26 +00:00
internal static readonly EncounterTrade4 [ ] TradeGift_DPPt = new EncounterTrade4PID [ ]
2017-07-25 07:28:43 +00:00
{
2020-12-24 23:23:26 +00:00
new ( 0x0000008E , 063 , 01 ) { Ability = 1 , TID = 25643 , SID = 00000 , OTGender = 1 , Gender = 0 , Version = DPPt , IVs = new [ ] { 15 , 15 , 15 , 20 , 25 , 25 } } , // Machop -> Abra
2021-01-01 20:21:46 +00:00
new ( 0x00000867 , 441 , 01 ) { Ability = 2 , TID = 44142 , SID = 00000 , OTGender = 0 , Gender = 1 , Version = DPPt , IVs = new [ ] { 15 , 20 , 15 , 25 , 25 , 15 } , Contest = 20 } , // Buizel -> Chatot
2020-12-24 23:23:26 +00:00
new ( 0x00000088 , 093 , 35 ) { Ability = 1 , TID = 19248 , SID = 00000 , OTGender = 1 , Gender = 0 , Version = DPPt , IVs = new [ ] { 20 , 25 , 15 , 25 , 15 , 15 } } , // Medicham (35 from Route 217) -> Haunter
new ( 0x0000045C , 129 , 01 ) { Ability = 1 , TID = 53277 , SID = 00000 , OTGender = 0 , Gender = 1 , Version = DPPt , IVs = new [ ] { 15 , 25 , 15 , 20 , 25 , 15 } } , // Finneon -> Magikarp
2017-09-21 04:28:29 +00:00
} . Concat ( RanchGifts ) . ToArray ( ) ;
2018-08-03 03:11:42 +00:00
2020-08-21 23:35:49 +00:00
internal static readonly EncounterTrade4PID [ ] TradeGift_HGSS =
2017-07-25 07:28:43 +00:00
{
2020-12-24 23:23:26 +00:00
new ( 0x000025EF , 095 , 01 ) { Ability = 2 , TID = 48926 , SID = 00000 , OTGender = 0 , Gender = 0 , Version = HGSS , IVs = new [ ] { 25 , 20 , 25 , 15 , 15 , 15 } } , // Bellsprout -> Onix
new ( 0x00002310 , 066 , 01 ) { Ability = 1 , TID = 37460 , SID = 00000 , OTGender = 0 , Gender = 1 , Version = HGSS , IVs = new [ ] { 15 , 25 , 20 , 20 , 15 , 15 } } , // Drowzee -> Machop
new ( 0x000001DB , 100 , 01 ) { Ability = 2 , TID = 29189 , SID = 00000 , OTGender = 0 , Gender = 2 , Version = HGSS , IVs = new [ ] { 15 , 20 , 15 , 25 , 25 , 15 } } , // Krabby -> Voltorb
new ( 0x0001FC0A , 085 , 15 ) { Ability = 1 , TID = 00283 , SID = 00000 , OTGender = 1 , Gender = 1 , Version = HGSS , IVs = new [ ] { 20 , 20 , 20 , 15 , 15 , 15 } } , // Dragonair (15 from DPPt) -> Dodrio
new ( 0x0000D136 , 082 , 19 ) { Ability = 1 , TID = 50082 , SID = 00000 , OTGender = 0 , Gender = 2 , Version = HGSS , IVs = new [ ] { 15 , 20 , 15 , 20 , 20 , 20 } } , // Dugtrio (19 from Diglett's Cave) -> Magneton
new ( 0x000034E4 , 178 , 16 ) { Ability = 1 , TID = 15616 , SID = 00000 , OTGender = 0 , Gender = 0 , Version = HGSS , IVs = new [ ] { 15 , 20 , 15 , 20 , 20 , 20 } } , // Haunter (16 from Old Chateau) -> Xatu
new ( 0x00485876 , 025 , 02 ) { Ability = 1 , TID = 33038 , SID = 00000 , OTGender = 0 , Gender = 1 , Version = HGSS , IVs = new [ ] { 20 , 25 , 18 , 31 , 25 , 13 } } , // Pikachu
new ( 0x0012B6D4 , 374 , 31 ) { Ability = 1 , TID = 23478 , SID = 00000 , OTGender = 0 , Gender = 2 , Version = HGSS , IVs = new [ ] { 28 , 29 , 24 , 23 , 24 , 25 } } , // Forretress -> Beldum
new ( 0x0012971C , 111 , 01 ) { Ability = 1 , TID = 06845 , SID = 00000 , OTGender = 0 , Gender = 1 , Version = HGSS , IVs = new [ ] { 22 , 31 , 13 , 00 , 22 , 09 } , Moves = new [ ] { 422 } } , // Bonsly -> Rhyhorn
new ( 0x00101596 , 208 , 01 ) { Ability = 1 , TID = 26491 , SID = 00000 , OTGender = 1 , Gender = 0 , Version = HGSS , IVs = new [ ] { 08 , 30 , 28 , 06 , 18 , 20 } } , // Any -> Steelix
2019-09-12 05:06:24 +00:00
2017-07-25 07:28:43 +00:00
//Gift
2020-12-24 23:23:26 +00:00
new ( 0x00006B5E , 021 , 20 ) { Ability = 1 , TID = 01001 , SID = 00000 , OTGender = 0 , Gender = 1 , Version = HGSS , IVs = new [ ] { 15 , 20 , 15 , 20 , 20 , 20 } , Location = 183 , Moves = new [ ] { 043 , 031 , 228 , 332 } } , // Webster's Spearow
new ( 0x000214D7 , 213 , 20 ) { Ability = 2 , TID = 04336 , SID = 00001 , OTGender = 0 , Gender = 0 , Version = HGSS , IVs = new [ ] { 15 , 20 , 15 , 20 , 20 , 20 } , Location = 130 , Moves = new [ ] { 132 , 117 , 227 , 219 } } , // Kirk's Shuckle
2017-07-25 07:28:43 +00:00
} ;
2018-08-03 03:11:42 +00:00
2019-09-12 05:06:24 +00:00
private const string tradeDPPt = "tradedppt" ;
private const string tradeHGSS = "tradehgss" ;
private static readonly string [ ] [ ] TradeDPPt = Util . GetLanguageStrings8 ( tradeDPPt ) ;
private static readonly string [ ] [ ] TradeHGSS = Util . GetLanguageStrings8 ( tradeHGSS ) ;
2017-07-25 07:28:43 +00:00
#endregion
2020-08-30 17:23:22 +00:00
internal static readonly EncounterStatic4 [ ] StaticD = GetEncounters ( Encounter_DPPt , D ) ;
internal static readonly EncounterStatic4 [ ] StaticP = GetEncounters ( Encounter_DPPt , P ) ;
internal static readonly EncounterStatic4 [ ] StaticPt = GetEncounters ( Encounter_DPPt , Pt ) ;
2020-12-23 20:15:49 +00:00
internal static readonly EncounterStatic [ ] StaticHG = GetEncounters ( ArrayUtil . ConcatAll < EncounterStatic > ( Encounter_HGSS , Encounter_PokeWalker ) , HG ) ;
internal static readonly EncounterStatic [ ] StaticSS = GetEncounters ( ArrayUtil . ConcatAll < EncounterStatic > ( Encounter_HGSS , Encounter_PokeWalker ) , SS ) ;
2017-07-25 07:28:43 +00:00
}
}