diff --git a/PKHeX/Legality/Core.cs b/PKHeX/Legality/Core.cs index fc0dae25f..69803d0ef 100644 --- a/PKHeX/Legality/Core.cs +++ b/PKHeX/Legality/Core.cs @@ -174,7 +174,6 @@ private static void MarkG3Slots_FRLG(ref EncounterArea[] Areas) new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }). ToArray(); } - private static void MarkG3Slots_RSE(ref EncounterArea[] Areas) { // Group areas by location id, the raw data have areas with different slots but the same location id @@ -183,7 +182,6 @@ private static void MarkG3Slots_RSE(ref EncounterArea[] Areas) new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }). ToArray(); } - private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[] SwarmAreas) { // Swarm slots replace slots 0 and 1 from encounters data @@ -194,13 +192,13 @@ private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[] foreach(EncounterSlot SwarmSlot in SwarmSlots) { var OutputSlots = new List(); - var ReplacedSlots = Area.Slots.Where(s => s.Type == SwarmSlot.Type); + var ReplacedSlots = Area.Slots.Where(s => s.Type == SwarmSlot.Type).ToArray(); - var SwarmOutputSlot0 = ReplacedSlots.First().Clone(); + var SwarmOutputSlot0 = ReplacedSlots[0].Clone(); SwarmOutputSlot0.Species = SwarmSlot.Species; OutputSlots.Add(SwarmOutputSlot0); - var SwarmOutputSlot1 = ReplacedSlots.Skip(1).First().Clone(); + var SwarmOutputSlot1 = ReplacedSlots[1].Clone(); SwarmOutputSlot1.Species = SwarmSlot.Species; OutputSlots.Add(SwarmOutputSlot1); @@ -210,14 +208,14 @@ private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[] Area.Slots = Area.Slots.Where(a => a.Species > 0).ToArray(); } } - private static void MarkG4Slots(ref EncounterArea[] Areas) { // Group areas by location id, the raw data have areas with different slots but the same location id - Areas = Areas.GroupBy(a => a.Location). - Select(a => - new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }). - ToArray(); + Areas = Areas.GroupBy(a => a.Location).Select(a => new EncounterArea + { + Location = a.First().Location, + Slots = a.SelectMany(m => m.Slots).ToArray() + }).ToArray(); } private static void MarkG5Slots(ref EncounterArea[] Areas) { @@ -250,10 +248,11 @@ private static void MarkG5Slots(ref EncounterArea[] Areas) area.Slots = area.Slots.Where(slot => slot.Species != 0).ToArray(); } // Group areas by location id, the raw data have areas with different slots but the same location id - Areas = Areas.GroupBy(a => a.Location). - Select(a => - new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }). - ToArray(); + Areas = Areas.GroupBy(a => a.Location).Select(a => new EncounterArea + { + Location = a.First().Location, + Slots = a.SelectMany(m => m.Slots).ToArray() + }).ToArray(); } private static void MarkG6XYSlots(ref EncounterArea[] Areas) { @@ -362,7 +361,7 @@ private static EncounterArea[] getTables2() // Update Personal Entries with TM/Tutor Data var TMHM = Data.unpackMini(Resources.hmtm_g3, "g3"); for (int i = 0; i <= MaxSpeciesID_3; i++) - PersonalTable.RS[i].AddTMHM(TMHM[i]); + PersonalTable.E[i].AddTMHM(TMHM[i]); // Tutors g3 contains tutor compatiblity data extracted from emerald, // fire red and leaf green tutors data is a subset of emerald data var tutors = Data.unpackMini(Resources.tutors_g3, "g3"); @@ -2033,7 +2032,7 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form } case 3: { - int index = PersonalTable.RS.getFormeIndex(species, 0); + int index = PersonalTable.E.getFormeIndex(species, 0); if (index == 0) return r; if (LVL) @@ -2054,7 +2053,7 @@ private static IEnumerable getMoves(PKM pkm, int species, int lvl, int form } if (Machine) { - var pi_c = PersonalTable.RS[index]; + var pi_c = PersonalTable.E[index]; r.AddRange(TM_3.Where((t, m) => pi_c.TMHM[m])); if (pkm.Format == 3) // HM moves must be removed for 3->4, only give if current format. r.AddRange(HM_3.Where((t, m) => pi_c.TMHM[m+50])); @@ -2251,17 +2250,19 @@ private static IEnumerable getTutorMoves(PKM pkm, int species, int form, bo moves.Add(57); break; case 2: - moves.AddRange(Tutors_GSC.Where((t, i) => PersonalTable.C[species].TMHM[57 + i])); + info = PersonalTable.C[species]; + moves.AddRange(Tutors_GSC.Where((t, i) => info.TMHM[57 + i])); goto case 1; case 3: // E Tutors (Free) // E Tutors (BP) - moves.AddRange(Tutor_E.Where((t, i) => PersonalTable.E[species].TMHM[58 + i])); + info = PersonalTable.E[species]; + moves.AddRange(Tutor_E.Where((t, i) => info.TypeTutors[i])); // FRLG Tutors // Only special tutor moves, normal tutor moves are already included in Emerald data - moves.AddRange(SpecialTutors_FRLG.Where(t => SpecialTutors_Compatibility_FRLG[t].Any(e => e == species))); + moves.AddRange(SpecialTutors_FRLG.Where((t, i) => SpecialTutors_Compatibility_FRLG[i].Any(e => e == species))); // XD - moves.AddRange(SpecialTutors_XD_Exclusive.Where(t => SpecialTutors_Compatibility_XD_Exclusive[t].Any(e => e == species))); + moves.AddRange(SpecialTutors_XD_Exclusive.Where((t, i) => SpecialTutors_Compatibility_XD_Exclusive[i].Any(e => e == species))); // XD (Mew) if (species == 151) moves.AddRange(Tutor_3Mew); @@ -2270,7 +2271,7 @@ private static IEnumerable getTutorMoves(PKM pkm, int species, int form, bo case 4: info = PersonalTable.HGSS[species]; moves.AddRange(Tutors_4.Where((t, i) => info.TypeTutors[i])); - moves.AddRange(SpecialTutors_4.Where(t => SpecialTutors_Compatibility_4[t].Any(e => e == species))); + moves.AddRange(SpecialTutors_4.Where((t, i) => SpecialTutors_Compatibility_4[i].Any(e => e == species))); break; case 5: info = PersonalTable.B2W2[species]; diff --git a/PKHeX/Legality/Tables3.cs b/PKHeX/Legality/Tables3.cs index 8d9797a2f..9aa624417 100644 --- a/PKHeX/Legality/Tables3.cs +++ b/PKHeX/Legality/Tables3.cs @@ -161,9 +161,9 @@ public static partial class Legal internal static readonly int[][] SpecialTutors_Compatibility_FRLG = { - new int[] { 6 }, - new int[] { 9 }, - new int[] { 3 }, + new[] { 6 }, + new[] { 9 }, + new[] { 3 }, }; // Tutor moves from XD that can be learned as tutor moves in emerald @@ -182,23 +182,23 @@ public static partial class Legal internal static readonly int[][] SpecialTutors_Compatibility_XD_Exclusive = { - new int[] { 074, 075, 076, 088, 089, 090, 091, 092, 093, 094, 095, - 100, 101, 102, 103, 109, 110, 143, 150, 151, 185, 204, - 205, 208, 211, 218, 219, 222, 273, 274, 275, 299, 316, - 317, 320, 321, 323, 324, 337, 338, 343, 344, 362, 375, - 376, 377, 378, 379 }, + new[] { 074, 075, 076, 088, 089, 090, 091, 092, 093, 094, 095, + 100, 101, 102, 103, 109, 110, 143, 150, 151, 185, 204, + 205, 208, 211, 218, 219, 222, 273, 274, 275, 299, 316, + 317, 320, 321, 323, 324, 337, 338, 343, 344, 362, 375, + 376, 377, 378, 379 }, - new int[] { 016, 017, 018, 021, 022, 084, 085, 142, 144, 145, 146, - 151, 163, 164, 176, 177, 178, 198, 225, 227, 250, 276, - 277, 278, 279, 333, 334 }, + new[] { 016, 017, 018, 021, 022, 084, 085, 142, 144, 145, 146, + 151, 163, 164, 176, 177, 178, 198, 225, 227, 250, 276, + 277, 278, 279, 333, 334 }, - new int[] { 012, 035, 036, 039, 040, 052, 053, 063, 064, 065, 079, - 080, 092, 093, 094, 096, 097, 102, 103, 108, 121, 122, - 124, 131, 137, 150, 151, 163, 164, 173, 174, 177, 178, - 190, 196, 197, 198, 199, 200, 203, 206, 215, 228, 229, - 233, 234, 238, 248, 249, 250, 251, 280, 281, 282, 284, - 292, 302, 315, 316, 317, 327, 353, 354, 355, 356, 358, - 359, 385, 386 } + new[] { 012, 035, 036, 039, 040, 052, 053, 063, 064, 065, 079, + 080, 092, 093, 094, 096, 097, 102, 103, 108, 121, 122, + 124, 131, 137, 150, 151, 163, 164, 173, 174, 177, 178, + 190, 196, 197, 198, 199, 200, 203, 206, 215, 228, 229, + 233, 234, 238, 248, 249, 250, 251, 280, 281, 282, 284, + 292, 302, 315, 316, 317, 327, 353, 354, 355, 356, 358, + 359, 385, 386 } }; internal static readonly int[] Roaming_MetLocation_FRLG = @@ -233,125 +233,116 @@ public static partial class Legal internal static readonly int[] Roaming_MetLocation_RSE = { - // TODO: Check if roaming encounter is possible in routes 11, 119 and 120 - 16, // Route 101 - 17, // Route 102 - 18, // Route 103 - 19, // Route 104 - // Routes 105 to 109 only have surf encounters - 25, // Route 110 - 26, // Route 111 Deep sand - 27, // Route 112 - 28, // Route 113 - 29, // Route 114 - 30, // Route 115 - 31, // Route 116 - 32, // Route 117 - 33, // Route 118 - 34, // Route 119 Long grass - 35, // Route 120 Long grass - 36, // Route 121 - // Routes 122 only have surf encounters - 38, // Route 123 - // Routes 124 to 129 only have surf encounters - // Route 130 only have grass inMirage Island - // Routes 132 to 134 only have surf encounters + //Roaming encounter is possible in tall grass and on water + //Route 101-138 + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, }; - internal static readonly EncounterStatic[] Encounter_RSE = - (new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.S, Roaming = true, }).Clone(Roaming_MetLocation_RSE).Concat( //Latias - (new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.E, Roaming = true, }).Clone(Roaming_MetLocation_RSE)).Concat( //Latias - (new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.R, Roaming = true, }).Clone(Roaming_MetLocation_RSE)).Concat( //Latios - (new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.E, Roaming = true, }).Clone(Roaming_MetLocation_RSE)).Concat( //Latios - new EncounterStatic[] - { - //Starters - new EncounterStatic { Gift = true, Species = 152, Level = 5, Location = 000, Version = GameVersion.E, }, // Chikorita @ Littleroot Town - new EncounterStatic { Gift = true, Species = 155, Level = 5, Location = 000, Version = GameVersion.E, }, // Cyndaquil - new EncounterStatic { Gift = true, Species = 158, Level = 5, Location = 000, Version = GameVersion.E, }, // Totodile - new EncounterStatic { Gift = true, Species = 252, Level = 5, Location = 016, }, // Treecko @ Route 101 - new EncounterStatic { Gift = true, Species = 255, Level = 5, Location = 016, }, // Torchic - new EncounterStatic { Gift = true, Species = 258, Level = 5, Location = 016, }, // Mudkip + internal static readonly EncounterStatic[] Encounter_RSE_Roam = + { + new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.S, Roaming = true }, // Latias + new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.E, Roaming = true }, // Latias + new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.R, Roaming = true }, // Latios + new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.E, Roaming = true }, // Latios + }; + internal static readonly EncounterStatic[] Encounter_RSE_Regular = + { + // Starters + new EncounterStatic { Gift = true, Species = 152, Level = 05, Location = 000, Version = GameVersion.E, }, // Chikorita @ Littleroot Town + new EncounterStatic { Gift = true, Species = 155, Level = 05, Location = 000, Version = GameVersion.E, }, // Cyndaquil + new EncounterStatic { Gift = true, Species = 158, Level = 05, Location = 000, Version = GameVersion.E, }, // Totodile + new EncounterStatic { Gift = true, Species = 252, Level = 05, Location = 016, }, // Treecko @ Route 101 + new EncounterStatic { Gift = true, Species = 255, Level = 05, Location = 016, }, // Torchic + new EncounterStatic { Gift = true, Species = 258, Level = 05, Location = 016, }, // Mudkip - //Fossil @ Rustboro City - new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 010, }, // Lileep - new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 010, }, // Anorith + // Fossil @ Rustboro City + new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 010, }, // Lileep + new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 010, }, // Anorith - //Gift - new EncounterStatic { Gift = true, Species = 351, Level = 25, Location = 034, }, // Castform @ Weather Institute - new EncounterStatic { Gift = true, Species = 374, Level = 5, Location = 013, }, // Beldum @ Mossdeep City - new EncounterStatic { Gift = true, Species = 360, Level = 5, EggLocation = 253}, // Wynaut Egg + // Gift + new EncounterStatic { Gift = true, Species = 351, Level = 25, Location = 034, }, // Castform @ Weather Institute + new EncounterStatic { Gift = true, Species = 374, Level = 05, Location = 013, }, // Beldum @ Mossdeep City + new EncounterStatic { Gift = true, Species = 360, Level = 05, EggLocation = 253}, // Wynaut Egg - //Stationary - new EncounterStatic { Species = 352, Level = 30, Location = 034, }, //Kecleon @ Route 119 - new EncounterStatic { Species = 352, Level = 30, Location = 035, }, //Kecleon @ Route 120 - new EncounterStatic { Species = 101, Level = 30, Location = 066, Version = GameVersion.RS, }, //Electrode @ Hideout (R:Magma Hideout/S:Aqua Hideout) - new EncounterStatic { Species = 101, Level = 30, Location = 197, Version = GameVersion.E, }, //Electrode @ Aqua Hideout - new EncounterStatic { Species = 185, Level = 40, Location = 058, Version = GameVersion.E, }, //Sudowoodo @ Battle Frontier + // Stationary + new EncounterStatic { Species = 352, Level = 30, Location = 034, }, // Kecleon @ Route 119 + new EncounterStatic { Species = 352, Level = 30, Location = 035, }, // Kecleon @ Route 120 + new EncounterStatic { Species = 101, Level = 30, Location = 066, Version = GameVersion.RS, }, // Electrode @ Hideout (R:Magma Hideout/S:Aqua Hideout) + new EncounterStatic { Species = 101, Level = 30, Location = 197, Version = GameVersion.E, }, // Electrode @ Aqua Hideout + new EncounterStatic { Species = 185, Level = 40, Location = 058, Version = GameVersion.E, }, // Sudowoodo @ Battle Frontier - //Stationary Lengendary - new EncounterStatic { Species = 377, Level = 40, Location = 082, }, //Regirock @ Desert Ruins - new EncounterStatic { Species = 378, Level = 40, Location = 081, }, //Regice @ Island Cave - new EncounterStatic { Species = 379, Level = 40, Location = 083, }, //Registeel @ Ancient Tomb - new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.R, }, //Latias @ Southern Island - new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.E, }, //Latias @ Southern Island - new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.S, }, //Latios @ Southern Island - new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.E, }, //Latios @ Southern Island - new EncounterStatic { Species = 382, Level = 45, Location = 072, Version = GameVersion.S, }, //Kyogre @ Cave of Origin - new EncounterStatic { Species = 382, Level = 70, Location = 203, Version = GameVersion.E, }, //Kyogre @ Marine Cave - new EncounterStatic { Species = 383, Level = 45, Location = 072, Version = GameVersion.R, }, //Groudon @ Cave of Origin - new EncounterStatic { Species = 383, Level = 70, Location = 205, Version = GameVersion.E, }, //Groudon @ Terra Cave - new EncounterStatic { Species = 384, Level = 70, Location = 085, }, //Rayquaza @ Sky Pillar + // Stationary Lengendary + new EncounterStatic { Species = 377, Level = 40, Location = 082, }, // Regirock @ Desert Ruins + new EncounterStatic { Species = 378, Level = 40, Location = 081, }, // Regice @ Island Cave + new EncounterStatic { Species = 379, Level = 40, Location = 083, }, // Registeel @ Ancient Tomb + new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.R, }, // Latias @ Southern Island + new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.E, }, // Latias @ Southern Island + new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.S, }, // Latios @ Southern Island + new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.E, }, // Latios @ Southern Island + new EncounterStatic { Species = 382, Level = 45, Location = 072, Version = GameVersion.S, }, // Kyogre @ Cave of Origin + new EncounterStatic { Species = 382, Level = 70, Location = 203, Version = GameVersion.E, }, // Kyogre @ Marine Cave + new EncounterStatic { Species = 383, Level = 45, Location = 072, Version = GameVersion.R, }, // Groudon @ Cave of Origin + new EncounterStatic { Species = 383, Level = 70, Location = 205, Version = GameVersion.E, }, // Groudon @ Terra Cave + new EncounterStatic { Species = 384, Level = 70, Location = 085, }, // Rayquaza @ Sky Pillar - //Event - new EncounterStatic { Species = 151, Level = 30, Location = 201, Version = GameVersion.E, }, //Mew @ Faraway Island - new EncounterStatic { Species = 249, Level = 70, Location = 211, Version = GameVersion.E, }, //Lugia @ Navel Rock - new EncounterStatic { Species = 250, Level = 70, Location = 211, Version = GameVersion.E, }, //Ho-Oh @ Navel Rock - new EncounterStatic { Species = 386, Form = 3, Level = 30, Location = 200, Version = GameVersion.E, }, //Deoxys @ Birth Island - }).ToArray(); + // Event + new EncounterStatic { Species = 151, Level = 30, Location = 201, Version = GameVersion.E, }, // Mew @ Faraway Island + new EncounterStatic { Species = 249, Level = 70, Location = 211, Version = GameVersion.E, }, // Lugia @ Navel Rock + new EncounterStatic { Species = 250, Level = 70, Location = 211, Version = GameVersion.E, }, // Ho-Oh @ Navel Rock + new EncounterStatic { Species = 386, Level = 30, Location = 200, Version = GameVersion.E, Form = 3 }, // Deoxys @ Birth Island + }; - internal static readonly EncounterStatic[] Encounter_FRLG = - (new EncounterStatic { Species = 243, Level = 50, Roaming = true, }).Clone(Roaming_MetLocation_FRLG).Concat( //Raikou - (new EncounterStatic { Species = 244, Level = 50, Roaming = true, }).Clone(Roaming_MetLocation_FRLG)).Concat( //Entei - (new EncounterStatic { Species = 245, Level = 50, Roaming = true, }).Clone(Roaming_MetLocation_FRLG)).Concat( //Suicune - new EncounterStatic[] - { - //Starters @ Pallet Town - new EncounterStatic { Gift = true, Species = 1, Level = 5, Location = 088, }, // Bulbasaur - new EncounterStatic { Gift = true, Species = 4, Level = 5, Location = 088, }, // Charmander - new EncounterStatic { Gift = true, Species = 9, Level = 5, Location = 088, }, // Squirtle - //Fossil @ Cinnabar Island - new EncounterStatic { Gift = true, Species = 138, Level = 30, Location = 096, }, // Omanyte - new EncounterStatic { Gift = true, Species = 140, Level = 30, Location = 096, }, // Kabuto - new EncounterStatic { Gift = true, Species = 142, Level = 30, Location = 096, }, // Aerodactyl + internal static readonly EncounterStatic[] Encounter_FRLG_Roam = + { + new EncounterStatic { Species = 243, Level = 50, Roaming = true, }, // Raikou + new EncounterStatic { Species = 244, Level = 50, Roaming = true, }, // Entei + new EncounterStatic { Species = 245, Level = 50, Roaming = true, }, // Suicune + }; + internal static readonly EncounterStatic[] Encounter_FRLG_Stationary = + { + // Starters @ Pallet Town + new EncounterStatic { Gift = true, Species = 1, Level = 05, Location = 088, }, // Bulbasaur + new EncounterStatic { Gift = true, Species = 4, Level = 05, Location = 088, }, // Charmander + new EncounterStatic { Gift = true, Species = 9, Level = 05, Location = 088, }, // Squirtle - //Gift - new EncounterStatic { Gift = true, Species = 106, Level = 25, Location = 098, }, // Hitmonlee @ Saffron City - new EncounterStatic { Gift = true, Species = 107, Level = 25, Location = 098, }, // Hitmonchan @ Saffron City - new EncounterStatic { Gift = true, Species = 129, Level = 5, Location = 099, }, // Magikarp @ Route 4 - new EncounterStatic { Gift = true, Species = 131, Level = 25, Location = 134, }, // Lapras @ Silph Co. - new EncounterStatic { Gift = true, Species = 133, Level = 25, Location = 094, }, // Eevee @ Celadon City - new EncounterStatic { Gift = true, Species = 175, Level = 5, EggLocation = 253 }, // Togepi Egg + // Fossil @ Cinnabar Island + new EncounterStatic { Gift = true, Species = 138, Level = 05, Location = 096, }, // Omanyte + new EncounterStatic { Gift = true, Species = 140, Level = 05, Location = 096, }, // Kabuto + new EncounterStatic { Gift = true, Species = 142, Level = 05, Location = 096, }, // Aerodactyl - //Stationary - new EncounterStatic { Species = 143, Level = 30, Location = 112, }, //Snorlax @ Route 12 - new EncounterStatic { Species = 143, Level = 30, Location = 116, }, //Snorlax @ Route 16 - new EncounterStatic { Species = 101, Level = 34, Location = 142, }, //Electrode @ Power Plant - new EncounterStatic { Species = 097, Level = 30, Location = 176, }, //Hypno @ Berry Forest + // Gift + new EncounterStatic { Gift = true, Species = 106, Level = 25, Location = 098, }, // Hitmonlee @ Saffron City + new EncounterStatic { Gift = true, Species = 107, Level = 25, Location = 098, }, // Hitmonchan @ Saffron City + new EncounterStatic { Gift = true, Species = 129, Level = 05, Location = 099, }, // Magikarp @ Route 4 + new EncounterStatic { Gift = true, Species = 131, Level = 25, Location = 134, }, // Lapras @ Silph Co. + new EncounterStatic { Gift = true, Species = 133, Level = 25, Location = 094, }, // Eevee @ Celadon City + new EncounterStatic { Gift = true, Species = 175, Level = 05, EggLocation = 253 }, // Togepi Egg - //Stationary Lengerdary - new EncounterStatic { Species = 144, Level = 50, Location = 139, }, //Articuno @ Seafoam Islands - new EncounterStatic { Species = 145, Level = 50, Location = 142, }, //Zapdos @ Power Plant - new EncounterStatic { Species = 146, Level = 50, Location = 175, }, //Moltres @ Mt. Ember. - new EncounterStatic { Species = 150, Level = 70, Location = 141, }, //Mewtwo @ Cerulean Cave + // Stationary + new EncounterStatic { Species = 143, Level = 30, Location = 112, }, // Snorlax @ Route 12 + new EncounterStatic { Species = 143, Level = 30, Location = 116, }, // Snorlax @ Route 16 + new EncounterStatic { Species = 101, Level = 34, Location = 142, }, // Electrode @ Power Plant + new EncounterStatic { Species = 097, Level = 30, Location = 176, }, // Hypno @ Berry Forest - //Event - new EncounterStatic { Species = 249, Level = 70, Location = 174, }, //Lugia @ Navel Rock - new EncounterStatic { Species = 250, Level = 70, Location = 174, }, //Ho-Oh @ Navel Rock - new EncounterStatic { Species = 386, Form = 1, Level = 30, Location = 187, Version = GameVersion.FR, }, //Deoxys @ Birth Island - new EncounterStatic { Species = 386, Form = 2, Level = 30, Location = 187, Version = GameVersion.LG, }, //Deoxys @ Birth Island - }).ToArray(); + // Stationary Lengerdary + new EncounterStatic { Species = 144, Level = 50, Location = 139, }, // Articuno @ Seafoam Islands + new EncounterStatic { Species = 145, Level = 50, Location = 142, }, // Zapdos @ Power Plant + new EncounterStatic { Species = 146, Level = 50, Location = 175, }, // Moltres @ Mt. Ember. + new EncounterStatic { Species = 150, Level = 70, Location = 141, }, // Mewtwo @ Cerulean Cave + + // Event + new EncounterStatic { Species = 249, Level = 70, Location = 174, }, // Lugia @ Navel Rock + new EncounterStatic { Species = 250, Level = 70, Location = 174, }, // Ho-Oh @ Navel Rock + new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.FR, Form = 1 }, // Deoxys @ Birth Island + new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.LG, Form = 2 }, // Deoxys @ Birth Island + }; + + internal static readonly EncounterStatic[] Encounter_RSE = Encounter_RSE_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_RSE)).Concat(Encounter_RSE_Regular).ToArray(); + internal static readonly EncounterStatic[] Encounter_FRLG = Encounter_FRLG_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_FRLG)).Concat(Encounter_FRLG_Stationary).ToArray(); private static readonly int[] TradeContest_Cool = {30, 05, 05, 05, 05, 10}; private static readonly int[] TradeContest_Beauty = {05, 30, 05, 05, 05, 10};