diff --git a/PKHeX.Core/Legality/Checks.cs b/PKHeX.Core/Legality/Checks.cs index f932bd5d0..b3b877f0a 100644 --- a/PKHeX.Core/Legality/Checks.cs +++ b/PKHeX.Core/Legality/Checks.cs @@ -273,13 +273,13 @@ private void VerifyNicknameTrade() int index = -1; if (pkm.XY) { - validOT = Legal.TradeXY[pkm.Language]; - index = Array.IndexOf(Legal.TradeGift_XY, EncounterMatch); + validOT = Encounters6.TradeXY[pkm.Language]; + index = Array.IndexOf(Encounters6.TradeGift_XY, EncounterMatch); } else if (pkm.AO) { - validOT = Legal.TradeAO[pkm.Language]; - index = Array.IndexOf(Legal.TradeGift_AO, EncounterMatch); + validOT = Encounters6.TradeAO[pkm.Language]; + index = Array.IndexOf(Encounters6.TradeGift_AO, EncounterMatch); } else if (pkm.SM) { @@ -1017,7 +1017,7 @@ private static IEnumerable VerifyRibbonSet1(PKM pkm, object encoun if (pkm.Version == 15 && encounterContent is EncounterStaticShadow s) { // only require national ribbon if no longer on origin game - bool xd = !Legal.Encounter_Colo.Contains(s); + bool xd = !Encounters3.Encounter_Colo.Contains(s); eb[1] = !(xd && pkm is XK3 x && !x.RibbonNational || !xd && pkm is CK3 c && !c.RibbonNational); } } diff --git a/PKHeX.Core/Legality/Core.cs b/PKHeX.Core/Legality/Core.cs index 05e2c6cef..629e0351c 100644 --- a/PKHeX.Core/Legality/Core.cs +++ b/PKHeX.Core/Legality/Core.cs @@ -2,6 +2,14 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using static PKHeX.Core.Encounters1; +using static PKHeX.Core.Encounters2; +using static PKHeX.Core.Encounters3; +using static PKHeX.Core.Encounters4; +using static PKHeX.Core.Encounters5; +using static PKHeX.Core.Encounters6; +using static PKHeX.Core.Encounters7; +using static PKHeX.Core.EncountersWC3; using static PKHeX.Core.LegalityCheckStrings; namespace PKHeX.Core @@ -50,8 +58,6 @@ public static partial class Legal private static readonly Learnset[] LevelUpRB = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_rb.pkl"), MaxSpeciesID_1); private static readonly Learnset[] LevelUpY = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_y.pkl"), MaxSpeciesID_1); private static readonly EvolutionTree Evolves1; - private static readonly EncounterArea[] SlotsRBY; - private static readonly EncounterStatic[] StaticRBY; // Gen 2 private static readonly EggMoves[] EggMovesGS = EggMoves2.GetArray(Util.GetBinaryResource("eggmove_gs.pkl"), MaxSpeciesID_2); @@ -59,9 +65,6 @@ public static partial class Legal private static readonly EggMoves[] EggMovesC = EggMoves2.GetArray(Util.GetBinaryResource("eggmove_c.pkl"), MaxSpeciesID_2); private static readonly Learnset[] LevelUpC = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_c.pkl"), MaxSpeciesID_2); private static readonly EvolutionTree Evolves2; - private static readonly EncounterArea[] SlotsGSC, SlotsGS, SlotsC; - private static readonly EncounterStatic[] StaticGSC, StaticGS, StaticC; - private static readonly TreesArea[] HeadbuttTreesC = TreesArea.GetArray(Data.UnpackMini(Util.GetBinaryResource("trees_h_c.pkl"), "ch")); // Gen 3 private static readonly Learnset[] LevelUpE = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_e.pkl"), "em")); @@ -70,8 +73,6 @@ public static partial class Legal private static readonly Learnset[] LevelUpLG = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_lg.pkl"), "lg")); private static readonly EggMoves[] EggMovesRS = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_rs.pkl"), "rs")); private static readonly EvolutionTree Evolves3; - private static readonly EncounterArea[] SlotsR, SlotsS, SlotsE, SlotsFR, SlotsLG; - private static readonly EncounterStatic[] StaticR, StaticS, StaticE, StaticFR, StaticLG; // Gen 4 private static readonly Learnset[] LevelUpDP = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_dp.pkl"), "dp")); @@ -80,16 +81,12 @@ public static partial class Legal private static readonly EggMoves[] EggMovesDPPt = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_dppt.pkl"), "dp")); private static readonly EggMoves[] EggMovesHGSS = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_hgss.pkl"), "hs")); private static readonly EvolutionTree Evolves4; - private static readonly EncounterArea[] SlotsD, SlotsP, SlotsPt, SlotsHG, SlotsSS; - private static readonly EncounterStatic[] StaticD, StaticP, StaticPt, StaticHG, StaticSS; // Gen 5 private static readonly Learnset[] LevelUpBW = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_bw.pkl"), "51")); private static readonly Learnset[] LevelUpB2W2 = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_b2w2.pkl"), "52")); private static readonly EggMoves[] EggMovesBW = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_bw.pkl"), "bw")); private static readonly EvolutionTree Evolves5; - private static readonly EncounterArea[] SlotsB, SlotsW, SlotsB2, SlotsW2; - private static readonly EncounterStatic[] StaticB, StaticW, StaticB2, StaticW2; // Gen 6 private static readonly EggMoves[] EggMovesXY = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_xy.pkl"), "xy")); @@ -97,15 +94,11 @@ public static partial class Legal private static readonly EggMoves[] EggMovesAO = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_ao.pkl"), "ao")); private static readonly Learnset[] LevelUpAO = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_ao.pkl"), "ao")); private static readonly EvolutionTree Evolves6; - private static readonly EncounterArea[] SlotsX, SlotsY, SlotsA, SlotsO; - private static readonly EncounterStatic[] StaticX, StaticY, StaticA, StaticO; // Gen 7 private static readonly EggMoves[] EggMovesSM = EggMoves7.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_sm.pkl"), "sm")); private static readonly Learnset[] LevelUpSM = Learnset7.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_sm.pkl"), "sm")); private static readonly EvolutionTree Evolves7; - private static readonly EncounterArea[] SlotsSN, SlotsMN; - private static readonly EncounterStatic[] StaticSN, StaticMN; // Setup Help private static HashSet GetPCDDB(byte[] bin) @@ -195,869 +188,44 @@ public static void RefreshMGDB(string localDbPath) MGDB_G7 = g7.ToArray(); } - private static EncounterStatic[] GetStaticEncounters(GameVersion Game) - { - EncounterStatic[] table; - switch (Game) - { - case GameVersion.RBY: - return Encounter_RBY; // GameVersion filtering not possible, return immediately - case GameVersion.GS: - return Encounter_GS; - case GameVersion.C: - return Encounter_C; - case GameVersion.GSC: - return Encounter_GSC; - - case GameVersion.R: case GameVersion.S: case GameVersion.E: - table = Encounter_RSE; - break; - case GameVersion.FR: case GameVersion.LG: - table = Encounter_FRLG; - break; - case GameVersion.CXD: - table = Encounter_CXD; - break; - - case GameVersion.D: case GameVersion.P: case GameVersion.Pt: - table = Encounter_DPPt; - break; - case GameVersion.HG: case GameVersion.SS: - table = Encounter_HGSS.Concat(Encounter_PokeWalker).ToArray(); - break; - - case GameVersion.B: case GameVersion.W: - table = Encounter_BW.Concat(BW_DreamWorld).ToArray(); - break; - case GameVersion.B2: case GameVersion.W2: - table = Encounter_B2W2.Concat(B2W2_DreamWorld).ToArray(); - break; - - case GameVersion.X: case GameVersion.Y: - table = Encounter_XY; - break; - case GameVersion.AS: case GameVersion.OR: - table = Encounter_AO; - break; - case GameVersion.SN: case GameVersion.MN: - table = Encounter_SM; - break; - - default: return null; - } - return table?.Where(s => s.Version.Contains(Game)).ToArray(); - } - private static EncounterArea[] GetEncounterTables(GameVersion Game) - { - string ident = null; - byte[] tables = null; - switch (Game) - { - case GameVersion.R: return EncounterArea.GetArray3(Data.UnpackMini(Util.GetBinaryResource("encounter_r.pkl"), "ru")); - case GameVersion.S: return EncounterArea.GetArray3(Data.UnpackMini(Util.GetBinaryResource("encounter_s.pkl"), "sa")); - case GameVersion.E: return EncounterArea.GetArray3(Data.UnpackMini(Util.GetBinaryResource("encounter_e.pkl"), "em")); - case GameVersion.FR: return EncounterArea.GetArray3(Data.UnpackMini(Util.GetBinaryResource("encounter_fr.pkl"), "fr")); - case GameVersion.LG: return EncounterArea.GetArray3(Data.UnpackMini(Util.GetBinaryResource("encounter_lg.pkl"), "lg")); - case GameVersion.D: return EncounterArea.GetArray4DPPt(Data.UnpackMini(Util.GetBinaryResource("encounter_d.pkl"), "da")); - case GameVersion.P: return EncounterArea.GetArray4DPPt(Data.UnpackMini(Util.GetBinaryResource("encounter_p.pkl"), "pe")); - case GameVersion.Pt: return EncounterArea.GetArray4DPPt(Data.UnpackMini(Util.GetBinaryResource("encounter_pt.pkl"), "pt")); - case GameVersion.HG: return EncounterArea.GetArray4HGSS(Data.UnpackMini(Util.GetBinaryResource("encounter_hg.pkl"), "hg")); - case GameVersion.SS: return EncounterArea.GetArray4HGSS(Data.UnpackMini(Util.GetBinaryResource("encounter_ss.pkl"), "ss")); - case GameVersion.B: ident = "51"; tables = Util.GetBinaryResource("encounter_b.pkl"); break; - case GameVersion.W: ident = "51"; tables = Util.GetBinaryResource("encounter_w.pkl"); break; - case GameVersion.B2: ident = "52"; tables = Util.GetBinaryResource("encounter_b2.pkl"); break; - case GameVersion.W2: ident = "52"; tables = Util.GetBinaryResource("encounter_w2.pkl"); break; - case GameVersion.X: ident = "xy"; tables = Util.GetBinaryResource("encounter_x.pkl"); break; - case GameVersion.Y: ident = "xy"; tables = Util.GetBinaryResource("encounter_y.pkl"); break; - case GameVersion.AS: ident = "ao"; tables = Util.GetBinaryResource("encounter_a.pkl"); break; - case GameVersion.OR: ident = "ao"; tables = Util.GetBinaryResource("encounter_o.pkl"); break; - case GameVersion.SN: ident = "sm"; tables = Util.GetBinaryResource("encounter_sn.pkl"); break; - case GameVersion.MN: ident = "sm"; tables = Util.GetBinaryResource("encounter_mn.pkl"); break; - } - if (ident == null) - return new EncounterArea[0]; - - return GetEncounterTables(tables, ident); - } - private static EncounterArea[] GetEncounterTables(byte[] mini, string ident) - { - return EncounterArea.GetArray(Data.UnpackMini(mini, ident)); - } - private static EncounterArea[] AddExtraTableSlots(params EncounterArea[][] tables) - { - return tables.SelectMany(s => s).GroupBy(l => l.Location) - .Select(t => t.Count() == 1 - ? t.First() // only one table, just return the area - : new EncounterArea {Location = t.First().Location, Slots = t.SelectMany(s => s.Slots).ToArray()}) - .ToArray(); - } - private static void MarkEncountersStaticMagnetPull(ref EncounterArea[] Areas, PersonalTable t) - { - const int steel = 8; - const int electric = 12; - foreach (EncounterArea Area in Areas) - { - var s = new List(); // Static - var m = new List(); // Magnet Pull - foreach (EncounterSlot Slot in Area.Slots) - { - var types = t[Slot.Species].Types; - if (types[0] == steel || types[1] == steel) - m.Add(Slot); - if (types[0] == electric || types[1] == electric) - s.Add(Slot); - } - foreach (var slot in s) - { - slot.Permissions.Static = true; - slot.Permissions.StaticCount = s.Count; - } - foreach (var slot in m) - { - slot.Permissions.MagnetPull = true; - slot.Permissions.MagnetPullCount = s.Count; - } - } - } - private static void MarkEncountersGeneration(ref EncounterStatic[] Encounters, int Generation) - { - foreach (EncounterStatic Encounter in Encounters) - Encounter.Generation = Generation; - } - private static void MarkEncountersVersion(ref EncounterArea[] Areas, GameVersion Version) - { - foreach (EncounterArea Area in Areas) - foreach (var Slot in Area.Slots.OfType()) - Slot.Version = Version; - } - private static void MarkEncountersGeneration(ref EncounterArea[] Areas, int Generation) - { - foreach (EncounterArea Area in Areas) - foreach (EncounterSlot Slot in Area.Slots) - Slot.Generation = Generation; - } - private static void ReduceAreasSize(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(); - } - private static void MarkSlotLocation(ref EncounterArea[] Areas) - { - foreach(EncounterArea Area in Areas) - { - foreach (EncounterSlot Slot in Area.Slots) - { - Slot.Location = Area.Location; - } - } - } - private static void MarkG2Slots(ref EncounterArea[] Areas) - { - ReduceAreasSize(ref Areas); - } - private static void MarkG3Slots_FRLG(ref EncounterArea[] Areas) - { - // Remove slots for unown, those slots does not contains alt form info, it will be added manually in SlotsRFLGAlt - // Group areas by location id, the raw data have areas with different slots but the same location id - Areas = Areas.Where(a => a.Location < 188 || a.Location > 194).GroupBy(a => a.Location).Select(a => new EncounterArea - { - Location = a.First().Location, - Slots = a.SelectMany(m => m.Slots).ToArray() - }).ToArray(); - } - private static void MarkG3Slots_RSE(ref EncounterArea[] Areas) - { - ReduceAreasSize(ref Areas); - } - private static void MarkG3SlotsSafariZones(ref EncounterArea[] Areas, int location) - { - foreach (EncounterArea Area in Areas.Where(a => a.Location == location)) - { - foreach (EncounterSlot Slot in Area.Slots) - { - SlotType t; - switch (Slot.Type) - { - case SlotType.Grass: t = SlotType.Grass_Safari; break; - case SlotType.Surf: t = SlotType.Surf_Safari; break; - case SlotType.Old_Rod: t = SlotType.Old_Rod_Safari; break; - case SlotType.Good_Rod: t = SlotType.Good_Rod_Safari; break; - case SlotType.Super_Rod: t = SlotType.Super_Rod_Safari; break; - case SlotType.Rock_Smash: t = SlotType.Rock_Smash_Safari; break; - default: continue; - } - Slot.Type = t; - } - } - } - private static void MarkG4PokeWalker(ref EncounterStatic[] t) - { - foreach (EncounterStatic s in t) - { - s.Location = 233; //Pokéwalker - s.Gift = true; //Pokeball only - } - } - private static void MarkG4SlotsGreatMarsh(ref EncounterArea[] Areas, int location) - { - foreach (EncounterArea Area in Areas.Where(a => a.Location == location)) - { - foreach (EncounterSlot Slot in Area.Slots) - { - SlotType t; - switch (Slot.Type) - { - case SlotType.Grass: t = SlotType.Grass_Safari; break; - case SlotType.Surf: t = SlotType.Surf_Safari; break; - case SlotType.Old_Rod: t = SlotType.Old_Rod_Safari; break; - case SlotType.Good_Rod: t = SlotType.Good_Rod_Safari; break; - case SlotType.Super_Rod: t = SlotType.Super_Rod_Safari; break; - case SlotType.Pokeradar: t = SlotType.Pokeradar_Safari; break; - default: continue; - } - Slot.Type = t; - } - } - } - private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[] SwarmAreas) - { - // Grass Swarm slots replace slots 0 and 1 from encounters data - // for surfing only replace slots 0 from encounters data - // for fishing replace one or several random slots from encounters data, but all slots have the same level, it's ok to only replace the first - // Species id are not included in encounter tables but levels can be copied from the encounter raw data - foreach (EncounterArea Area in Areas) - { - var SwarmSlots = SwarmAreas.Where(a => a.Location == Area.Location).SelectMany(s => s.Slots); - var OutputSlots = new List(); - foreach (EncounterSlot SwarmSlot in SwarmSlots) - { - int slotsnum = SwarmSlot.Type == SlotType.Grass ? 2 : 1; - foreach (var swarmSlot in Area.Slots.Where(s => s.Type == SwarmSlot.Type).Take(slotsnum).Select(slot => slot.Clone())) - { - swarmSlot.Species = SwarmSlot.Species; - OutputSlots.Add(swarmSlot); - } - } - Area.Slots = Area.Slots.Concat(OutputSlots).Where(a => a.Species > 0).ToArray(); - } - } - // Gen 4 raw encounter data does not contains info for alt slots - // Shellos and Gastrodom East Sea form should be modified - private static void MarkG4AltFormSlots(ref EncounterArea[] Areas, int Species, int form, int[] Locations) - { - foreach(EncounterArea Area in Areas.Where(a => Locations.Contains(a.Location))) - { - foreach (EncounterSlot Slot in Area.Slots.Where(s=>s.Species == Species)) - { - Slot.Form = form; - } - } - } - private static void MarkG4Slots(ref EncounterArea[] Areas) - { - ReduceAreasSize(ref Areas); - } - private static EncounterType GetEncounterTypeBySlotDPPt(SlotType Type, EncounterType GrassType) - { - switch (Type) - { - case SlotType.Pokeradar: - case SlotType.Pokeradar_Safari: - case SlotType.Swarm: - case SlotType.Grass: return GrassType; - case SlotType.Surf: - case SlotType.Old_Rod: - case SlotType.Good_Rod: - case SlotType.Super_Rod: - case SlotType.Surf_Safari: - case SlotType.Old_Rod_Safari: - case SlotType.Good_Rod_Safari: - case SlotType.Super_Rod_Safari: return EncounterType.Surfing_Fishing; - case SlotType.Grass_Safari: return EncounterType.MarshSafari; - case SlotType.HoneyTree: return EncounterType.None; - } - return EncounterType.None; - } - private static EncounterType GetEncounterTypeBySlotHGSS(SlotType Type, EncounterType GrassType, EncounterType HeadbuttType) - { - switch (Type) - { - // HGSS Safari encounters have normal water/grass encounter type, not safari encounter type - case SlotType.Grass: - case SlotType.Grass_Safari: - case SlotType.BugContest: return GrassType; - case SlotType.Surf: - case SlotType.Old_Rod: - case SlotType.Good_Rod: - case SlotType.Super_Rod: - case SlotType.Surf_Safari: - case SlotType.Old_Rod_Safari: - case SlotType.Good_Rod_Safari: - case SlotType.Super_Rod_Safari: return EncounterType.Surfing_Fishing; - case SlotType.Rock_Smash: - case SlotType.Rock_Smash_Safari: return EncounterType.RockSmash; - case SlotType.Headbutt: return HeadbuttType; - case SlotType.Headbutt_Special: return EncounterType.None; - } - return EncounterType.None; - } - private static void MarkDPPtEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int SpecialEncounterFile, EncounterType NormalEncounterType) - { - // Area with two different encounter type for grass encounters - // SpecialEncounterFile is tall grass encounter type, the other files have the normal encounter type for this location - var numfile = 0; - foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) - { - numfile++; - var GrassType = numfile == SpecialEncounterFile ? EncounterType.TallGrass : NormalEncounterType; - foreach (EncounterSlot Slot in Area.Slots) - { - Slot.TypeEncounter = GetEncounterTypeBySlotDPPt(Slot.Type, GrassType); - } - } - } - private static void MarkDPPtEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int[] SpecialEncounterFiles, EncounterType NormalEncounterType) - { - var numfile = 0; - foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) - { - numfile++; - var GrassType = SpecialEncounterFiles.Contains(numfile) ? EncounterType.TallGrass : NormalEncounterType; - foreach (EncounterSlot Slot in Area.Slots) - { - Slot.TypeEncounter = GetEncounterTypeBySlotDPPt(Slot.Type, GrassType); - } - } - } - private static void MarkHGSSEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int SpecialEncounterFile, EncounterType NormalEncounterType) - { - // Area with two different encounter type for grass encounters - // SpecialEncounterFile is taall grass encounter type, the other files have the normal encounter type for this location - var HeadbuttType = GetHeadbuttEncounterType(Location); - var numfile = 0; - foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) - { - numfile++; - var GrassType = numfile == SpecialEncounterFile ? EncounterType.TallGrass : NormalEncounterType; - foreach (EncounterSlot Slot in Area.Slots) - { - Slot.TypeEncounter = GetEncounterTypeBySlotHGSS(Slot.Type, GrassType, HeadbuttType); - } - } - } - private static void MarkHGSSEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int[] SpecialEncounterFiles, EncounterType NormalEncounterType) - { - var HeadbuttType = GetHeadbuttEncounterType(Location); - var numfile = 0; - foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) - { - numfile++; - var GrassType = SpecialEncounterFiles.Contains(numfile) ? EncounterType.TallGrass : NormalEncounterType; - foreach (EncounterSlot Slot in Area.Slots) - { - Slot.TypeEncounter = GetEncounterTypeBySlotHGSS(Slot.Type, GrassType, HeadbuttType); - } - } - } - private static void MarkDPPtEncounterTypeSlots(ref EncounterArea[] Areas) - { - foreach(EncounterArea Area in Areas) - { - if (DPPt_MixInteriorExteriorLocations.Contains(Area.Location)) - continue; - var GrassType = (Area.Location == 70) ? EncounterType.Building_EnigmaStone :// Old Chateau - DPPt_CaveLocations.Contains(Area.Location) ? EncounterType.Cave_HallOfOrigin : - EncounterType.TallGrass; - foreach (EncounterSlot Slot in Area.Slots) - { - Slot.TypeEncounter = GetEncounterTypeBySlotDPPt(Slot.Type, GrassType); - } - } - } - private static EncounterType GetHeadbuttEncounterType(int Location) - { - // Routes with trees adjacent to water tiles - var allowsurf= HGSS_SurfingHeadbutt_Locations.Contains(Location); - // Cities - if (HGSS_CityLocations.Contains(Location)) - return allowsurf ? EncounterType.Headbutt_CitySurf : EncounterType.Building_EnigmaStone; - // Caves with no exterior zones - if (!HGSS_MixInteriorExteriorLocations.Contains(Location) && HGSS_CaveLocations.Contains(Location)) - return allowsurf ? EncounterType.Headbutt_CaveSurf : EncounterType.Cave_HallOfOrigin; - - // Routes and exterior areas - // Routes with trees adjacent to grass tiles - var allowgrass = HGSS_GrassHeadbutt_Locations.Contains(Location); - return allowgrass && allowsurf ? EncounterType.Headbutt_GrassSurf : - allowgrass ? EncounterType.Headbutt_Grass : - allowsurf ? EncounterType.Headbutt_Surf : - EncounterType.None; - } - - private static void MarkHGSSEncounterTypeSlots(ref EncounterArea[] Areas) - { - foreach (EncounterArea Area in Areas) - { - if (HGSS_MixInteriorExteriorLocations.Contains(Area.Location)) - continue; - var GrassType = HGSS_CaveLocations.Contains(Area.Location) ? EncounterType.Cave_HallOfOrigin: EncounterType.TallGrass; - var HeadbuttType = GetHeadbuttEncounterType(Area.Location); - foreach (EncounterSlot Slot in Area.Slots) - { - Slot.TypeEncounter = GetEncounterTypeBySlotHGSS(Slot.Type, GrassType, HeadbuttType); - } - } - } - private static void MarkBWSwarmSlots(ref EncounterArea[] Areas) - { - foreach (EncounterSlot s in Areas.SelectMany(area => area.Slots)) - { - s.LevelMin = 15; s.LevelMax = 55; s.Type = SlotType.Swarm; - } - } - private static void MarkB2W2SwarmSlots(ref EncounterArea[] Areas) - { - foreach (EncounterSlot s in Areas.SelectMany(area => area.Slots)) - { - s.LevelMin = 40; s.LevelMax = 55; s.Type = SlotType.Swarm; - } - } - private static void MarkG5HiddenGrottoSlots(ref EncounterArea[] Areas) - { - foreach (EncounterSlot s in Areas[0].Slots) //Only 1 area - s.Type = SlotType.HiddenGrotto; - } - private static void MarkG5DreamWorld(ref EncounterStatic[] t) - { - foreach (EncounterStatic s in t) - { - s.Location = 75; //Entree Forest - s.Ability = PersonalTable.B2W2.GetAbilities(s.Species, s.Form)[2] == 0 ? 1 : 4; // Check if has HA - s.Shiny = false; - } - - // Split encounters with multiple permitted special moves -- a pkm can only be obtained with 1 of the special moves! - var list = new List(); - foreach (EncounterStatic s in t) - { - if (s.Moves == null || s.Moves.Length <= 1) // no special moves - { - list.Add(s); - continue; - } - - var loc = s.Location; - for (int i = 0; i < s.Moves.Length; i++) - { - var clone = s.Clone(loc); - clone.Moves = new[] {s.Moves[i]}; - list.Add(clone); - } - } - t = list.ToArray(); - } - private static void MarkG5Slots(ref EncounterArea[] Areas) - { - foreach (var area in Areas) - { - int ctr = 0; - do - { - for (int i = 0; i < 12; i++) - area.Slots[ctr++].Type = SlotType.Grass; // Single - - for (int i = 0; i < 12; i++) - area.Slots[ctr++].Type = SlotType.Grass; // Double - - for (int i = 0; i < 12; i++) - area.Slots[ctr++].Type = SlotType.Grass; // Shaking - - for (int i = 0; i < 5; i++) // 5 - area.Slots[ctr++].Type = SlotType.Surf; // Surf - - for (int i = 0; i < 5; i++) // 5 - area.Slots[ctr++].Type = SlotType.Surf; // Surf Spot - - for (int i = 0; i < 5; i++) // 5 - area.Slots[ctr++].Type = SlotType.Super_Rod; // Fish - - for (int i = 0; i < 5; i++) // 5 - area.Slots[ctr++].Type = SlotType.Super_Rod; // Fish Spot - } while (ctr != area.Slots.Length); - area.Slots = area.Slots.Where(slot => slot.Species != 0).ToArray(); - } - ReduceAreasSize(ref Areas); - } - private static void MarkG6XYSlots(ref EncounterArea[] Areas) - { - foreach (var area in Areas) - { - int slotct = area.Slots.Length; - for (int i = slotct - 15; i < slotct; i++) - area.Slots[i].Type = SlotType.Horde; - } - ReduceAreasSize(ref Areas); - } - private static void MarkG6AOSlots(ref EncounterArea[] Areas) - { - foreach (var area in Areas) - { - for (int i = 32; i < 37; i++) - area.Slots[i].Type = SlotType.Rock_Smash; - int slotct = area.Slots.Length; - for (int i = slotct - 15; i < slotct; i++) - area.Slots[i].Type = SlotType.Horde; - - for (int i = 0; i < slotct; i++) - area.Slots[i].Permissions.AllowDexNav = area.Slots[i].Type != SlotType.Rock_Smash; - } - ReduceAreasSize(ref Areas); - } - private static void MarkG7REGSlots(ref EncounterArea[] Areas) - { - ReduceAreasSize(ref Areas); - } - private static void MarkG7SMSlots(ref EncounterArea[] Areas) - { - foreach (EncounterSlot s in Areas.SelectMany(area => area.Slots)) - s.Type = SlotType.SOS; - ReduceAreasSize(ref Areas); - } - private static EncounterArea[] GetTables1() - { - var red_gw = EncounterArea.GetArray1_GW(Util.GetBinaryResource("encounter_red.pkl")); - var blu_gw = EncounterArea.GetArray1_GW(Util.GetBinaryResource("encounter_blue.pkl")); - var ylw_gw = EncounterArea.GetArray1_GW(Util.GetBinaryResource("encounter_yellow.pkl")); - var rb_fish = EncounterArea.GetArray1_F(Util.GetBinaryResource("encounter_rb_f.pkl")); - var ylw_fish = EncounterArea.GetArray1_FY(Util.GetBinaryResource("encounter_yellow_f.pkl")); - - MarkEncountersVersion(ref red_gw, GameVersion.RD); - MarkEncountersVersion(ref blu_gw, GameVersion.BW); - MarkEncountersVersion(ref ylw_gw, GameVersion.YW); - MarkEncountersVersion(ref rb_fish, GameVersion.RB); - MarkEncountersVersion(ref ylw_fish, GameVersion.YW); - - var table = AddExtraTableSlots(red_gw, blu_gw, ylw_gw, rb_fish, ylw_fish); - Array.Resize(ref table, table.Length + 1); - table[table.Length - 1] = FishOldGood_RBY; - - return table; - } - private static EncounterArea[] GetTables2(GameVersion Version) - { - EncounterArea[] Slots = null; - // Fishing - var f = EncounterArea.GetArray2_F(Util.GetBinaryResource("encounter_gsc_f.pkl")); - - if (Version == GameVersion.GS || Version == GameVersion.GSC) - { - // Grass/Water - var g = EncounterArea.GetArray2_GW(Util.GetBinaryResource("encounter_gold.pkl")); - var s = EncounterArea.GetArray2_GW(Util.GetBinaryResource("encounter_silver.pkl")); - // Headbutt/Rock Smash - var h_g = EncounterArea.GetArray2_H(Util.GetBinaryResource("encounter_gold_h.pkl")); - var h_s = EncounterArea.GetArray2_H(Util.GetBinaryResource("encounter_silver_h.pkl")); - var safari_gs = EncounterSafari_GSC; - var bcc_gs = EncounterBCC_GSC; - - MarkEncountersVersion(ref bcc_gs, GameVersion.GS); - MarkEncountersVersion(ref f, GameVersion.GS); - MarkEncountersVersion(ref g, GameVersion.GD); - MarkEncountersVersion(ref s, GameVersion.SV); - MarkEncountersVersion(ref h_g, GameVersion.GD); - MarkEncountersVersion(ref h_s, GameVersion.SV); - MarkEncountersVersion(ref safari_gs, GameVersion.GS); - - Slots = AddExtraTableSlots(g, s, h_g, h_s, f, bcc_gs, safari_gs); - } - if (Version == GameVersion.C || Version == GameVersion.GSC) - { - // Grass/Water - var c = EncounterArea.GetArray2_GW(Util.GetBinaryResource("encounter_crystal.pkl")); - // Headbutt/Rock Smash - var h_c = EncounterArea.GetArray2_H(Util.GetBinaryResource("encounter_crystal_h.pkl")); - var safari_c= EncounterSafari_GSC; - var bcc_c = EncounterBCC_GSC; - - MarkEncountersVersion(ref bcc_c, GameVersion.C); - MarkEncountersVersion(ref safari_c, GameVersion.C); - MarkEncountersVersion(ref f, GameVersion.C); - MarkEncountersVersion(ref c, GameVersion.C); - MarkEncountersVersion(ref h_c, GameVersion.C); - - var extra = AddExtraTableSlots(c, h_c, f, bcc_c, safari_c); - MarkSlotLocation(ref extra); - return Version == GameVersion.C ? extra : AddExtraTableSlots(Slots, extra); - } - - return Slots; - } - static Legal() // Setup { - // Gen 1 - { - StaticRBY = GetStaticEncounters(GameVersion.RBY); - SlotsRBY = GetTables1(); - // Gen 1 is the only gen where ReduceAreasSize is not needed - MarkEncountersGeneration(ref SlotsRBY, 1); - MarkEncountersGeneration(ref StaticRBY, 1); - Evolves1 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_rby.pkl") }, GameVersion.RBY, PersonalTable.Y, MaxSpeciesID_1); - FixPersonalTableY(); - } - // Gen 2 - { - StaticGS = GetStaticEncounters(GameVersion.GS); - StaticC = GetStaticEncounters(GameVersion.C); - StaticGSC = GetStaticEncounters(GameVersion.GSC); - SlotsGS = GetTables2(GameVersion.GS); - SlotsC = GetTables2(GameVersion.C); - SlotsGSC = GetTables2(GameVersion.GSC); - MarkG2Slots(ref SlotsGS); - MarkG2Slots(ref SlotsC); - MarkG2Slots(ref SlotsGSC); - MarkEncountersGeneration(ref SlotsGS, 2); - MarkEncountersGeneration(ref SlotsC, 2); - MarkEncountersGeneration(ref SlotsGSC, 2); - MarkEncountersGeneration(ref StaticGS, 2); - MarkEncountersGeneration(ref StaticC, 2); - MarkEncountersGeneration(ref StaticGSC, 2); - Evolves2 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_gsc.pkl") }, GameVersion.GSC, PersonalTable.C, MaxSpeciesID_2); - } - // Gen3 - { - StaticR = GetStaticEncounters(GameVersion.R); - StaticS = GetStaticEncounters(GameVersion.S); - StaticE = GetStaticEncounters(GameVersion.E); - StaticFR = GetStaticEncounters(GameVersion.FR); - StaticLG = GetStaticEncounters(GameVersion.LG); + // Evolution tables need Personal Tables initialized beforehand, hence why the EvolutionTree data is initialized here. + Evolves1 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_rby.pkl") }, GameVersion.RBY, PersonalTable.Y, MaxSpeciesID_1); + Evolves2 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_gsc.pkl") }, GameVersion.GSC, PersonalTable.C, MaxSpeciesID_2); + Evolves3 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_g3.pkl") }, GameVersion.RS, PersonalTable.RS, MaxSpeciesID_3); + Evolves4 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_g4.pkl") }, GameVersion.DP, PersonalTable.DP, MaxSpeciesID_4); + Evolves5 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_g5.pkl") }, GameVersion.BW, PersonalTable.BW, MaxSpeciesID_5); + Evolves6 = new EvolutionTree(Data.UnpackMini(Util.GetBinaryResource("evos_ao.pkl"), "ao"), GameVersion.ORAS, PersonalTable.AO, MaxSpeciesID_6); + Evolves7 = new EvolutionTree(Data.UnpackMini(Util.GetBinaryResource("evos_sm.pkl"), "sm"), GameVersion.SM, PersonalTable.SM, MaxSpeciesID_7); - var R_Slots = GetEncounterTables(GameVersion.R); - var S_Slots = GetEncounterTables(GameVersion.S); - var E_Slots = GetEncounterTables(GameVersion.E); - var FR_Slots = GetEncounterTables(GameVersion.FR); - var LG_Slots = GetEncounterTables(GameVersion.LG); - - MarkG3Slots_RSE(ref R_Slots); - MarkG3Slots_RSE(ref S_Slots); - MarkG3Slots_RSE(ref E_Slots); - MarkG3Slots_FRLG(ref FR_Slots); - MarkG3Slots_FRLG(ref LG_Slots); - MarkG3SlotsSafariZones(ref R_Slots, 57); - MarkG3SlotsSafariZones(ref S_Slots, 57); - MarkG3SlotsSafariZones(ref E_Slots, 57); - MarkG3SlotsSafariZones(ref FR_Slots, 136); - MarkG3SlotsSafariZones(ref LG_Slots, 136); - - MarkEncountersStaticMagnetPull(ref R_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref S_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref E_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref FR_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref LG_Slots, PersonalTable.SM); - - SlotsR = AddExtraTableSlots(R_Slots, SlotsRSEAlt); - SlotsS = AddExtraTableSlots(S_Slots, SlotsRSEAlt); - SlotsE = AddExtraTableSlots(E_Slots, SlotsRSEAlt); - SlotsFR = AddExtraTableSlots(FR_Slots, SlotsFRLGAlt); - SlotsLG = AddExtraTableSlots(LG_Slots, SlotsFRLGAlt); - - MarkSlotLocation(ref SlotsR); - MarkSlotLocation(ref SlotsS); - MarkSlotLocation(ref SlotsE); - MarkSlotLocation(ref SlotsFR); - MarkSlotLocation(ref SlotsLG); - - Evolves3 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_g3.pkl") }, GameVersion.RS, PersonalTable.RS, MaxSpeciesID_3); - - // Update Personal Entries with TM/Tutor Data - var TMHM = Data.UnpackMini(Util.GetBinaryResource("hmtm_g3.pkl"), "g3"); - for (int i = 0; i <= MaxSpeciesID_3; 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(Util.GetBinaryResource("tutors_g3.pkl"), "g3"); - for (int i = 0; i <= MaxSpeciesID_3; i++) - PersonalTable.E[i].AddTypeTutors(tutors[i]); - } - // Gen 4 - { - MarkG4PokeWalker(ref Encounter_PokeWalker); - StaticD = GetStaticEncounters(GameVersion.D); - StaticP = GetStaticEncounters(GameVersion.P); - StaticPt = GetStaticEncounters(GameVersion.Pt); - StaticHG = GetStaticEncounters(GameVersion.HG); - StaticSS = GetStaticEncounters(GameVersion.SS); - - var D_Slots = GetEncounterTables(GameVersion.D); - var P_Slots = GetEncounterTables(GameVersion.P); - var Pt_Slots = GetEncounterTables(GameVersion.Pt); - var HG_Slots = GetEncounterTables(GameVersion.HG); - var SS_Slots = GetEncounterTables(GameVersion.SS); - - MarkEncountersStaticMagnetPull(ref D_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref P_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref Pt_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref HG_Slots, PersonalTable.SM); - MarkEncountersStaticMagnetPull(ref SS_Slots, PersonalTable.SM); - - var DP_Trophy = EncounterArea.GetTrophyArea(TrophyDP, new[] {16, 18}); - var Pt_Trophy = EncounterArea.GetTrophyArea(TrophyPt, new[] {22, 22}); - var HG_Headbutt_Slots = EncounterArea.GetArray4HGSS_Headbutt(Data.UnpackMini(Util.GetBinaryResource("encunters_hb_hg.pkl"), "hg")); - var SS_Headbutt_Slots = EncounterArea.GetArray4HGSS_Headbutt(Data.UnpackMini(Util.GetBinaryResource("encunters_hb_ss.pkl"), "ss")); - - var D_HoneyTrees_Slots = SlotsD_HoneyTree.Clone(HoneyTreesLocation); - var P_HoneyTrees_Slots = SlotsP_HoneyTree.Clone(HoneyTreesLocation); - var Pt_HoneyTrees_Slots = SlotsPt_HoneyTree.Clone(HoneyTreesLocation); - - MarkG4SwarmSlots(ref HG_Slots, SlotsHG_Swarm); - MarkG4SwarmSlots(ref SS_Slots, SlotsSS_Swarm); - - MarkG4AltFormSlots(ref D_Slots, 422, 1, Shellos_EastSeaLocation_DP); - MarkG4AltFormSlots(ref D_Slots, 423, 1, Gastrodon_EastSeaLocation_DP); - MarkG4AltFormSlots(ref P_Slots, 422, 1, Shellos_EastSeaLocation_DP); - MarkG4AltFormSlots(ref P_Slots, 423, 1, Gastrodon_EastSeaLocation_DP); - MarkG4AltFormSlots(ref Pt_Slots, 422, 1, Shellos_EastSeaLocation_Pt); - MarkG4AltFormSlots(ref Pt_Slots, 423, 1, Gastrodon_EastSeaLocation_Pt); - - // Route 209 - MarkDPPtEncounterTypeSlots_MultipleTypes(ref D_Slots, 24, 1, EncounterType.Building_EnigmaStone); - MarkDPPtEncounterTypeSlots_MultipleTypes(ref P_Slots, 24, 1, EncounterType.Building_EnigmaStone); - MarkDPPtEncounterTypeSlots_MultipleTypes(ref Pt_Slots, 24, 1, EncounterType.Building_EnigmaStone); - - // Stark Mountain - MarkDPPtEncounterTypeSlots_MultipleTypes(ref D_Slots, 84, 1, EncounterType.Cave_HallOfOrigin); - MarkDPPtEncounterTypeSlots_MultipleTypes(ref P_Slots, 84, 1, EncounterType.Cave_HallOfOrigin); - MarkDPPtEncounterTypeSlots_MultipleTypes(ref Pt_Slots, 84, 1, EncounterType.Cave_HallOfOrigin); - // Mt Coronet - MarkDPPtEncounterTypeSlots_MultipleTypes(ref D_Slots, 50, DPPt_MtCoronetExteriorEncounters, EncounterType.Cave_HallOfOrigin); - MarkDPPtEncounterTypeSlots_MultipleTypes(ref P_Slots, 50, DPPt_MtCoronetExteriorEncounters, EncounterType.Cave_HallOfOrigin); - MarkDPPtEncounterTypeSlots_MultipleTypes(ref Pt_Slots, 50, DPPt_MtCoronetExteriorEncounters, EncounterType.Cave_HallOfOrigin); - - // Ruins of Alph - MarkHGSSEncounterTypeSlots_MultipleTypes(ref HG_Slots, 209, 1, EncounterType.Cave_HallOfOrigin); - MarkHGSSEncounterTypeSlots_MultipleTypes(ref SS_Slots, 209, 1, EncounterType.Cave_HallOfOrigin); - // Mt Silver Cave - MarkHGSSEncounterTypeSlots_MultipleTypes(ref HG_Slots, 219, HGSS_MtSilverCaveExteriorEncounters, EncounterType.Cave_HallOfOrigin); - MarkHGSSEncounterTypeSlots_MultipleTypes(ref SS_Slots, 219, HGSS_MtSilverCaveExteriorEncounters, EncounterType.Cave_HallOfOrigin); - - MarkG4Slots(ref D_Slots); - MarkG4Slots(ref P_Slots); - MarkG4Slots(ref Pt_Slots); - MarkG4Slots(ref HG_Slots); - MarkG4Slots(ref SS_Slots); - MarkG4Slots(ref HG_Headbutt_Slots); - MarkG4Slots(ref SS_Headbutt_Slots); - - MarkG4SlotsGreatMarsh(ref D_Slots, 52); - MarkG4SlotsGreatMarsh(ref P_Slots, 52); - MarkG4SlotsGreatMarsh(ref Pt_Slots, 52); - - SlotsD = AddExtraTableSlots(D_Slots, D_HoneyTrees_Slots, DP_GreatMarshAlt, SlotsDPPPtAlt, DP_Trophy); - SlotsP = AddExtraTableSlots(P_Slots, P_HoneyTrees_Slots, DP_GreatMarshAlt, SlotsDPPPtAlt, DP_Trophy); - SlotsPt = AddExtraTableSlots(Pt_Slots, Pt_HoneyTrees_Slots, Pt_GreatMarshAlt, SlotsDPPPtAlt, Pt_Trophy); - SlotsHG = AddExtraTableSlots(HG_Slots, HG_Headbutt_Slots, SlotsHGSSAlt); - SlotsSS = AddExtraTableSlots(SS_Slots, SS_Headbutt_Slots, SlotsHGSSAlt); - - MarkDPPtEncounterTypeSlots(ref SlotsD); - MarkDPPtEncounterTypeSlots(ref SlotsP); - MarkDPPtEncounterTypeSlots(ref SlotsPt); - MarkHGSSEncounterTypeSlots(ref SlotsHG); - MarkHGSSEncounterTypeSlots(ref SlotsSS); - - MarkSlotLocation(ref SlotsD); - MarkSlotLocation(ref SlotsP); - MarkSlotLocation(ref SlotsPt); - MarkSlotLocation(ref SlotsHG); - MarkSlotLocation(ref SlotsSS); - - Evolves4 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_g4.pkl") }, GameVersion.DP, PersonalTable.DP, MaxSpeciesID_4); - - // Update Personal Entries with Tutor Data - var tutors = Data.UnpackMini(Util.GetBinaryResource("tutors_g4.pkl"), "g4"); - for (int i = 0; i <= MaxSpeciesID_4; i++) - PersonalTable.HGSS[i].AddTypeTutors(tutors[i]); - } - // Gen 5 - { - MarkG5DreamWorld(ref BW_DreamWorld); - MarkG5DreamWorld(ref B2W2_DreamWorld); - StaticB = GetStaticEncounters(GameVersion.B); - StaticW = GetStaticEncounters(GameVersion.W); - StaticB2 = GetStaticEncounters(GameVersion.B2); - StaticW2 = GetStaticEncounters(GameVersion.W2); - - var BSlots = GetEncounterTables(GameVersion.B); - var WSlots = GetEncounterTables(GameVersion.W); - MarkG5Slots(ref BSlots); - MarkG5Slots(ref WSlots); - MarkBWSwarmSlots(ref SlotsB_Swarm); - MarkBWSwarmSlots(ref SlotsW_Swarm); - SlotsB = AddExtraTableSlots(BSlots, SlotsB_Swarm); - SlotsW = AddExtraTableSlots(WSlots, SlotsW_Swarm, WhiteForestSlot); - - var B2Slots = GetEncounterTables(GameVersion.B2); - var W2Slots = GetEncounterTables(GameVersion.W2); - MarkG5Slots(ref B2Slots); - MarkG5Slots(ref W2Slots); - MarkB2W2SwarmSlots(ref SlotsB2_Swarm); - MarkB2W2SwarmSlots(ref SlotsW2_Swarm); - MarkG5HiddenGrottoSlots(ref SlotsB2_HiddenGrotto); - MarkG5HiddenGrottoSlots(ref SlotsW2_HiddenGrotto); - SlotsB2 = AddExtraTableSlots(B2Slots, SlotsB2_Swarm, SlotsB2_HiddenGrotto); - SlotsW2 = AddExtraTableSlots(W2Slots, SlotsW2_Swarm, SlotsW2_HiddenGrotto); - - Evolves5 = new EvolutionTree(new[] { Util.GetBinaryResource("evos_g5.pkl") }, GameVersion.BW, PersonalTable.BW, MaxSpeciesID_5); - } - // Gen 6 - { - StaticX = GetStaticEncounters(GameVersion.X); - StaticY = GetStaticEncounters(GameVersion.Y); - StaticA = GetStaticEncounters(GameVersion.AS); - StaticO = GetStaticEncounters(GameVersion.OR); - - var XSlots = GetEncounterTables(GameVersion.X); - var YSlots = GetEncounterTables(GameVersion.Y); - MarkG6XYSlots(ref XSlots); - MarkG6XYSlots(ref YSlots); - SlotsX = AddExtraTableSlots(XSlots, SlotsXYAlt); - SlotsY = AddExtraTableSlots(YSlots, SlotsXYAlt); - - SlotsA = GetEncounterTables(GameVersion.AS); - SlotsO = GetEncounterTables(GameVersion.OR); - MarkG6AOSlots(ref SlotsA); - MarkG6AOSlots(ref SlotsO); - - Evolves6 = new EvolutionTree(Data.UnpackMini(Util.GetBinaryResource("evos_ao.pkl"), "ao"), GameVersion.ORAS, PersonalTable.AO, MaxSpeciesID_6); - } - // Gen 7 - { - StaticSN = GetStaticEncounters(GameVersion.SN); - StaticMN = GetStaticEncounters(GameVersion.MN); - var REG_SN = GetEncounterTables(GameVersion.SN); - var REG_MN = GetEncounterTables(GameVersion.MN); - var SOS_SN = GetEncounterTables(Util.GetBinaryResource("encounter_sn_sos.pkl"), "sm"); - var SOS_MN = GetEncounterTables(Util.GetBinaryResource("encounter_mn_sos.pkl"), "sm"); - MarkG7REGSlots(ref REG_SN); - MarkG7REGSlots(ref REG_MN); - MarkG7SMSlots(ref SOS_SN); - MarkG7SMSlots(ref SOS_MN); - SlotsSN = AddExtraTableSlots(REG_SN, SOS_SN, Encounter_Pelago_SM, Encounter_Pelago_SN); - SlotsMN = AddExtraTableSlots(REG_MN, SOS_MN, Encounter_Pelago_SM, Encounter_Pelago_MN); - - Evolves7 = new EvolutionTree(Data.UnpackMini(Util.GetBinaryResource("evos_sm.pkl"), "sm"), GameVersion.SM, PersonalTable.SM, MaxSpeciesID_7); - } + FixPersonalTableY(); + PopulateGen3Tutors(); + PopulateGen4Tutors(); } - private static void FixPersonalTableY() { // Personal Table from Yellow do not have yellow catch rate for Pikachu and Kadabra, have RedBlue instead PersonalTable.Y[25].CatchRate = 163; // Pikachu PersonalTable.Y[64].CatchRate = 96; // Kadabra } + private static void PopulateGen3Tutors() + { + // Update Gen3 data with Emerald's data, FR/LG is a subset of Emerald's compatibility. + var TMHM = Data.UnpackMini(Util.GetBinaryResource("hmtm_g3.pkl"), "g3"); + var tutors = Data.UnpackMini(Util.GetBinaryResource("tutors_g3.pkl"), "g3"); + for (int i = 0; i <= MaxSpeciesID_3; i++) + { + PersonalTable.E[i].AddTMHM(TMHM[i]); + PersonalTable.E[i].AddTypeTutors(tutors[i]); + } + } + private static void PopulateGen4Tutors() + { + var tutors = Data.UnpackMini(Util.GetBinaryResource("tutors_g4.pkl"), "g4"); + for (int i = 0; i <= MaxSpeciesID_4; i++) + PersonalTable.HGSS[i].AddTypeTutors(tutors[i]); + } // Moves internal static int[] GetMinLevelLearnMove(int species, int Generation, List moves) diff --git a/PKHeX.Core/Legality/Encounters/Data/EncounterUtil.cs b/PKHeX.Core/Legality/Encounters/Data/EncounterUtil.cs new file mode 100644 index 000000000..801f3442f --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/EncounterUtil.cs @@ -0,0 +1,111 @@ +using System.Collections.Generic; +using System.Linq; + +namespace PKHeX.Core +{ + internal static class EncounterUtil + { + internal static EncounterArea[] GetEncounterTables(GameVersion Game) + { + switch (Game) + { + case GameVersion.B: return GetEncounterTables("51", "b"); + case GameVersion.W: return GetEncounterTables("51", "w"); + case GameVersion.B2: return GetEncounterTables("52", "b2"); + case GameVersion.W2: return GetEncounterTables("52", "w2"); + case GameVersion.X: return GetEncounterTables("xy", "x"); + case GameVersion.Y: return GetEncounterTables("xy", "y"); + case GameVersion.AS: return GetEncounterTables("ao", "a"); + case GameVersion.OR: return GetEncounterTables("ao", "o"); + case GameVersion.SN: return GetEncounterTables("sm", "sn"); + case GameVersion.MN: return GetEncounterTables("sm", "mn"); + } + return null; // bad request + } + + internal static EncounterArea[] GetEncounterTables(string ident, string resource) + { + byte[] mini = Util.GetBinaryResource($"encounter_{resource}.pkl"); + return EncounterArea.GetArray(Data.UnpackMini(mini, ident)); + } + + internal static EncounterArea[] AddExtraTableSlots(params EncounterArea[][] tables) + { + return tables.SelectMany(s => s).GroupBy(l => l.Location) + .Select(t => t.Count() == 1 + ? t.First() // only one table, just return the area + : new EncounterArea { Location = t.First().Location, Slots = t.SelectMany(s => s.Slots).ToArray() }) + .ToArray(); + } + + internal static void MarkEncountersStaticMagnetPull(ref EncounterArea[] Areas, PersonalTable t) + { + const int steel = 8; + const int electric = 12; + foreach (EncounterArea Area in Areas) + { + var s = new List(); // Static + var m = new List(); // Magnet Pull + foreach (EncounterSlot Slot in Area.Slots) + { + var types = t[Slot.Species].Types; + if (types[0] == steel || types[1] == steel) + m.Add(Slot); + if (types[0] == electric || types[1] == electric) + s.Add(Slot); + } + foreach (var slot in s) + { + slot.Permissions.Static = true; + slot.Permissions.StaticCount = s.Count; + } + foreach (var slot in m) + { + slot.Permissions.MagnetPull = true; + slot.Permissions.MagnetPullCount = s.Count; + } + } + } + + internal static void MarkEncountersGeneration(EncounterStatic[] Encounters, int Generation) + { + foreach (EncounterStatic Encounter in Encounters) + Encounter.Generation = Generation; + } + + internal static void MarkEncountersVersion(EncounterArea[] Areas, GameVersion Version) + { + foreach (EncounterArea Area in Areas) + foreach (var Slot in Area.Slots.OfType()) + Slot.Version = Version; + } + + internal static void MarkEncountersGeneration(IEnumerable Areas, int Generation) + { + foreach (EncounterArea Area in Areas) + foreach (EncounterSlot Slot in Area.Slots) + Slot.Generation = Generation; + } + + internal static void ReduceAreasSize(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(); + } + + internal static void MarkSlotLocation(ref EncounterArea[] Areas) + { + foreach (EncounterArea Area in Areas) + { + foreach (EncounterSlot Slot in Area.Slots) + { + Slot.Location = Area.Location; + } + } + } + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters1.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters1.cs new file mode 100644 index 000000000..d7ffd0232 --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters1.cs @@ -0,0 +1,185 @@ +using System; +using System.Linq; +using static PKHeX.Core.EncounterUtil; + +namespace PKHeX.Core +{ + internal static class Encounters1 + { + internal static readonly EncounterArea[] SlotsRBY; + internal static readonly EncounterStatic[] StaticRBY; + + static Encounters1() + { + StaticRBY = Encounter_RBY; + SlotsRBY = GetAreas(); + MarkEncountersGeneration(SlotsRBY, 1); + MarkEncountersGeneration(StaticRBY, 1); + } + + private static EncounterArea[] GetAreas() + { + var red_gw = EncounterArea.GetArray1_GW(Util.GetBinaryResource("encounter_red.pkl")); + var blu_gw = EncounterArea.GetArray1_GW(Util.GetBinaryResource("encounter_blue.pkl")); + var ylw_gw = EncounterArea.GetArray1_GW(Util.GetBinaryResource("encounter_yellow.pkl")); + var rb_fish = EncounterArea.GetArray1_F(Util.GetBinaryResource("encounter_rb_f.pkl")); + var ylw_fish = EncounterArea.GetArray1_FY(Util.GetBinaryResource("encounter_yellow_f.pkl")); + + MarkEncountersVersion(red_gw, GameVersion.RD); + MarkEncountersVersion(blu_gw, GameVersion.BW); + MarkEncountersVersion(ylw_gw, GameVersion.YW); + MarkEncountersVersion(rb_fish, GameVersion.RB); + MarkEncountersVersion(ylw_fish, GameVersion.YW); + + var table = AddExtraTableSlots(red_gw, blu_gw, ylw_gw, rb_fish, ylw_fish); + Array.Resize(ref table, table.Length + 1); + table[table.Length - 1] = FishOldGood_RBY; + + return table; + } + + private static readonly EncounterStatic[] Encounter_RBY = + { + // Gameversion is RBY for pokemon with the same catch rate and initial moves in all games + // If there are differents in moves or catch rate they will have different encounters defined + new EncounterStatic { Species = 001, Level = 05, Version = GameVersion.RBY }, // Bulbasaur + new EncounterStatic { Species = 004, Level = 05, Version = GameVersion.RBY }, // Charmander + new EncounterStatic { Species = 007, Level = 05, Version = GameVersion.RBY }, // Squirtle + new EncounterStatic { Species = 025, Level = 05, Version = GameVersion.YW }, // Pikachu + + // Game Corner + new EncounterStatic { Species = 030, Level = 17, Version = GameVersion.RB }, // Nidorina (Red Game Corner) + new EncounterStatic { Species = 033, Level = 17, Version = GameVersion.BU }, // Nidorino (Blue[EN] / Green[JP] Game Corner) + new EncounterStatic { Species = 035, Level = 08, Version = GameVersion.RBY }, // Clefairy (Red Game Corner) + new EncounterStatic { Species = 036, Level = 24, Version = GameVersion.RBY }, // Clefable (Blue[JP] Game Corner) + new EncounterStatic { Species = 037, Level = 18, Version = GameVersion.RBY }, // Vulpix (Yellow Game Corner) + new EncounterStatic { Species = 040, Level = 22, Version = GameVersion.RBY }, // Wigglytuff (Yellow Game Corner) + new EncounterStatic { Species = 063, Level = 06, Version = GameVersion.RBY }, // Abra (Blue[EN] / Green[JP] Game Corner) + new EncounterStatic { Species = 116, Level = 18, Version = GameVersion.RBY }, // Horsea (Blue[JP] Game Corner) + new EncounterStatic { Species = 123, Level = 25, Version = GameVersion.RBY }, // Scyther (Red Game Corner) + new EncounterStatic { Species = 127, Level = 20, Version = GameVersion.BU }, // Pinsir (Blue[EN] / Green[JP] Game Corner) + new EncounterStatic { Species = 127, Level = 30, Version = GameVersion.YW }, // Pinsir (Yellow Game Corner) (Different initial moves) + new EncounterStatic { Species = 137, Level = 18, Version = GameVersion.RBY }, // Porygon (Blue[EN] / Green[JP] Game Corner) + new EncounterStatic { Species = 147, Level = 18, Version = GameVersion.RBY }, // Dratini (Red Game Corner) + new EncounterStatic { Species = 148, Level = 30, Version = GameVersion.BU }, // Dragonair (Blue[JP] Game Corner) + new EncounterStatic { Species = 025, Level = 12, Version = GameVersion.BU }, // Pikachu (Blue[JP] Game Corner) (Different catch rate) + + // Lower level less ideal matches; best match is from above. + // new EncounterStatic { Species = 035, Level = 12 }, // Clefairy (Blue[EN] / Green[JP] Game Corner) + // new EncounterStatic { Species = 063, Level = 09 }, // Abra (Red Game Corner) + // new EncounterStatic { Species = 063, Level = 08 }, // Abra (Blue[JP] Game Corner) + // new EncounterStatic { Species = 063, Level = 15 }, // Abra (Yellow Game Corner) + // new EncounterStatic { Species = 123, Level = 30 }, // Scyther (Yellow Game Corner) + // new EncounterStatic { Species = 137, Level = 22 }, // Porygon (Blue[JP] Game Corner) + // new EncounterStatic { Species = 137, Level = 26 }, // Porygon (Red Game Corner) + // new EncounterStatic { Species = 137, Level = 26 }, // Porygon (Yellow Game Corner) + // new EncounterStatic { Species = 147, Level = 24 }, // Dratini (Blue[EN] / Green[JP] Game Corner) + + new EncounterStatic { Species = 129, Level = 05, Version = GameVersion.RBY }, // Magikarp + new EncounterStatic { Species = 143, Level = 30, Version = GameVersion.RBY }, // Snorlax + new EncounterStatic { Species = 106, Level = 30, Version = GameVersion.RBY }, // Hitmonlee + new EncounterStatic { Species = 107, Level = 30, Version = GameVersion.RBY }, // Hitmonchan + + new EncounterStatic { Species = 131, Level = 15, Version = GameVersion.RBY }, // Lapras + new EncounterStatic { Species = 138, Level = 30, Version = GameVersion.RBY }, // Omanyte + new EncounterStatic { Species = 140, Level = 30, Version = GameVersion.RBY }, // Kabuto + new EncounterStatic { Species = 142, Level = 30, Version = GameVersion.RBY }, // Aerodactyl + + new EncounterStatic { Species = 144, Level = 50, Version = GameVersion.RBY }, // Articuno + new EncounterStatic { Species = 145, Level = 50, Version = GameVersion.RBY }, // Zapdos + new EncounterStatic { Species = 146, Level = 50, Version = GameVersion.RBY }, // Moltres + + new EncounterStatic { Species = 150, Level = 70, Version = GameVersion.RBY }, // Mewtwo + + new EncounterStatic { Species = 133, Level = 25, Version = GameVersion.RB }, // Eevee + new EncounterStatic { Species = 133, Level = 25, Version = GameVersion.YW }, // Eevee (Different initial moves) + + // Yellow Only -- duplicate encounters with a higher level + // new EncounterStatic { Species = 001, Level = 10, Version = GameVersion.YW }, // Bulbasaur (Cerulean City) + // new EncounterStatic { Species = 004, Level = 10, Version = GameVersion.YW }, // Charmander (Route 24) + // new EncounterStatic { Species = 007, Level = 10, Version = GameVersion.YW }, // Squirtle (Vermillion City) + + new EncounterStatic { Species = 054, Level = 15, Moves = new [] { 133, 10 }, Version = GameVersion.Stadium }, // Stadium Psyduck (Amnesia) + new EncounterStatic { Species = 001, Level = 05, Version = GameVersion.Stadium }, // Bulbasaur + new EncounterStatic { Species = 004, Level = 05, Version = GameVersion.Stadium }, // Charmander + new EncounterStatic { Species = 071, Level = 05, Version = GameVersion.Stadium }, // Squirtle + new EncounterStatic { Species = 106, Level = 20, Version = GameVersion.Stadium }, // Hitmonlee + new EncounterStatic { Species = 107, Level = 20, Version = GameVersion.Stadium }, // Hitmonchan + new EncounterStatic { Species = 133, Level = 25, Version = GameVersion.Stadium }, // Eevee + new EncounterStatic { Species = 138, Level = 20, Version = GameVersion.Stadium }, // Omanyte + new EncounterStatic { Species = 140, Level = 20, Version = GameVersion.Stadium }, // Kabuto + new EncounterStatic { Species = 151, Level = 5, IVs = new [] {15,15,15,15,15,15}, Version = GameVersion.VCEvents }, // Event Mew + }; + + internal static readonly EncounterTrade[] TradeGift_RBY_Common = + { + // Species & Minimum level (legal) possible to acquire at. + //new EncounterTrade { Species = 122, Generation = 1, Level = 06 }, // Mr. Mime - Game Corner Abra + new EncounterTrade { Species = 032, Generation = 1, Level = 02, Version = GameVersion.RD }, // Nidoran♂ - Wild Nidoran♀ + new EncounterTrade { Species = 029, Generation = 1, Level = 02, Version = GameVersion.BU }, // Nidoran♀ - Wild Nidoran♂ + new EncounterTrade { Species = 030, Generation = 1, Level = 16, Version = GameVersion.RB }, // Nidorina - Evolve Nidorino + new EncounterTrade { Species = 030, Generation = 1, Level = 16, Version = GameVersion.YW }, // Nidorina - Evolve Nidorino (Different initial moves) + new EncounterTrade { Species = 108, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Lickitung - Surf Slowbro + new EncounterTrade { Species = 083, Generation = 1, Level = 02, Version = GameVersion.RBY }, // Farfetch’d - Wild Spearow + new EncounterTrade { Species = 101, Generation = 1, Level = 03, Version = GameVersion.RBY }, // Electrode - Wild Raichu + + new EncounterTrade { Species = 122, Generation = 1, Level = 03, Version = GameVersion.RBY }, // Mr. Mime - Wild Jigglypuff + new EncounterTrade { Species = 060, Generation = 1, Level = 02, Version = GameVersion.RBY }, // Poliwag - Wild Rattata + //new EncounterTrade { Species = 083, Generation = 1, Level = 02 }, // Farfetch’d - Wild Pidgey + new EncounterTrade { Species = 079, Generation = 1, Level = 22, Version = GameVersion.RBY }, // Slowpoke - Wild Seel + + new EncounterTrade { Species = 051, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Dugtrio - Trade Lickitung + new EncounterTrade { Species = 047, Generation = 1, Level = 13, Version = GameVersion.RBY }, // Parasect - Trade Tangela + }; + + internal static readonly EncounterTrade[] TradeGift_RBY_NoTradeback = TradeGift_RBY_Common.Concat(new[] + { + // Species & Minimum level (legal) possible to acquire at. + new EncounterTrade { Species = 124, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Jynx - Fish Poliwhirl (GSC: 10) + new EncounterTrade { Species = 114, Generation = 1, Level = 13, Version = GameVersion.RBY }, // Tangela - Wild Venonat (GSC: 5) No different moves at level 13 + new EncounterTrade { Species = 086, Generation = 1, Level = 28, Version = GameVersion.RBY }, // Seel - Wild Ponyta (GSC: 6) + + new EncounterTrade { Species = 115, Generation = 1, Level = 42, Version = GameVersion.RBY }, // Kangaskhan - Evolve Rhydon (GSC: 30) + new EncounterTrade { Species = 128, Generation = 1, Level = 28, Version = GameVersion.RBY }, // Tauros - Evolve Persian (GSC: 18) + new EncounterTradeCatchRate { Species = 093, Generation = 1, Level = 20, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Haunter - Trade Machoke (GSC: 10) + new EncounterTradeCatchRate { Species = 075, Generation = 1, Level = 16, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Graveler - Evolve Kadabra (GSC: 15) + new EncounterTradeCatchRate { Species = 098, Generation = 1, Level = 15, Catch_Rate = 204, Version = GameVersion.RBY }, // Krabby - Wild Growlithe (GSC: 5) + + //new EncounterTrade { Species = 122, Generation = 1, Level = 08 }, // Mr. Mime - Wild Clefairy (GSC: 6) + new EncounterTradeCatchRate { Species = 067, Generation = 1, Level = 20, Catch_Rate = 180, EvolveOnTrade = true, Version = GameVersion.RBY }, // Machoke - Wild Cubone (GSC: 10) + new EncounterTrade { Species = 112, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Rhydon - Surf Golduck (GSC: 10) + new EncounterTrade { Species = 087, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Dewgong - Wild Growlithe (GSC: 5) + new EncounterTrade { Species = 089, Generation = 1, Level = 25, Version = GameVersion.RBY }, // Muk - Wild Kangaskhan (GSC: 14) + }).ToArray(); + + internal static readonly EncounterTrade[] TradeGift_RBY_Tradeback = TradeGift_RBY_Common.Concat(new[] + { + // Trade gifts that can be obtained at a lower level due to the requested Pokémon being a lower level in GSC + new EncounterTrade { Species = 124, Generation = 1, Level = 10, Version = GameVersion.RBY }, // Jynx - Fish Poliwhirl (RBY: 15) + new EncounterTrade { Species = 114, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Tangela - Wild Venonat (RBY: 13) + new EncounterTrade { Species = 086, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Seel - Egg Ponyta (RBY: 28) + + new EncounterTrade { Species = 115, Generation = 1, Level = 30, Version = GameVersion.RBY }, // Kangaskhan - Evolve Rhydon (RBY: 42) + new EncounterTrade { Species = 128, Generation = 1, Level = 18, Version = GameVersion.RBY }, // Tauros - Evolve Persian (RBY: 28) + new EncounterTradeCatchRate { Species = 093, Generation = 1, Level = 10, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Haunter - Trade Machoke (RBY: 20) + new EncounterTradeCatchRate { Species = 075, Generation = 1, Level = 15, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Graveler - Evolve Kadabra (RBY: 16) + new EncounterTradeCatchRate { Species = 098, Generation = 1, Level = 05, Catch_Rate = 204, Version = GameVersion.RBY }, // Krabby - Egg Growlithe (RBY: 15) + + //new EncounterTrade { Species = 122, Generation = 1, Level = 08 }, // Mr. Mime - Wild Clefairy (RBY: 6) + new EncounterTradeCatchRate { Species = 067, Generation = 1, Level = 05, Catch_Rate = 180, EvolveOnTrade = true, Version = GameVersion.RBY }, // Machoke - Egg Cubone (RBY: 20) + new EncounterTrade { Species = 112, Generation = 1, Level = 10, Version = GameVersion.RBY }, // Rhydon - Surf Golduck (RBY: 15) + new EncounterTrade { Species = 087, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Dewgong - Egg Growlithe (RBY: 15) + new EncounterTrade { Species = 089, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Muk - Egg Kangaskhan (RBY: 25) + }).ToArray(); + private static readonly EncounterArea FishOldGood_RBY = new EncounterArea + { + Location = -1, + Slots = new EncounterSlot[] + { + new EncounterSlot1 {Species = 129, LevelMin = 05, LevelMax = 05, Type = SlotType.Old_Rod, Rate = -1, Version = GameVersion.RBY }, // Magikarp + new EncounterSlot1 {Species = 118, LevelMin = 10, LevelMax = 10, Type = SlotType.Good_Rod, Rate = -1, Version = GameVersion.RBY }, // Goldeen + new EncounterSlot1 {Species = 060, LevelMin = 10, LevelMax = 10, Type = SlotType.Good_Rod, Rate = -1, Version = GameVersion.RBY }, // Poliwag + } + }; + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters2.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters2.cs new file mode 100644 index 000000000..585dfb5e2 --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters2.cs @@ -0,0 +1,241 @@ +using System.Linq; +using static PKHeX.Core.EncounterUtil; + +namespace PKHeX.Core +{ + internal static class Encounters2 + { + internal static readonly EncounterArea[] SlotsGSC, SlotsGS, SlotsC; + internal static readonly EncounterStatic[] StaticGSC, StaticGS, StaticC; + internal static readonly TreesArea[] HeadbuttTreesC = TreesArea.GetArray(Data.UnpackMini(Util.GetBinaryResource("trees_h_c.pkl"), "ch")); + + static Encounters2() + { + StaticGS = Encounter_GS; + StaticC = Encounter_C; + StaticGSC = Encounter_GSC; + SlotsGS = GetTables2(GameVersion.GS); + SlotsC = GetTables2(GameVersion.C); + SlotsGSC = GetTables2(GameVersion.GSC); + ReduceAreasSize(ref SlotsGS); + ReduceAreasSize(ref SlotsC); + ReduceAreasSize(ref SlotsGSC); + MarkEncountersGeneration(SlotsGS, 2); + MarkEncountersGeneration(SlotsC, 2); + MarkEncountersGeneration(SlotsGSC, 2); + MarkEncountersGeneration(StaticGS, 2); + MarkEncountersGeneration(StaticC, 2); + MarkEncountersGeneration(StaticGSC, 2); + } + + private static EncounterArea[] GetTables2(GameVersion Version) + { + // Fishing + var f = EncounterArea.GetArray2_F(Util.GetBinaryResource("encounter_gsc_f.pkl")); + + EncounterArea[] Slots = new EncounterArea[0]; + if (GameVersion.GS.Contains(Version)) + Slots = GetSlots_GS(f); + if (Version.Contains(GameVersion.C)) + Slots = AddExtraTableSlots(Slots, GetSlots_C(f)); + + return Slots; + } + + private static EncounterArea[] GetSlots_GS(EncounterArea[] f) + { + // Grass/Water + var g = EncounterArea.GetArray2_GW(Util.GetBinaryResource("encounter_gold.pkl")); + var s = EncounterArea.GetArray2_GW(Util.GetBinaryResource("encounter_silver.pkl")); + // Headbutt/Rock Smash + var h_g = EncounterArea.GetArray2_H(Util.GetBinaryResource("encounter_gold_h.pkl")); + var h_s = EncounterArea.GetArray2_H(Util.GetBinaryResource("encounter_silver_h.pkl")); + var safari_gs = EncounterSafari_GSC; + var bcc_gs = EncounterBCC_GSC; + + MarkEncountersVersion(bcc_gs, GameVersion.GS); + MarkEncountersVersion(f, GameVersion.GS); + MarkEncountersVersion(g, GameVersion.GD); + MarkEncountersVersion(s, GameVersion.SV); + MarkEncountersVersion(h_g, GameVersion.GD); + MarkEncountersVersion(h_s, GameVersion.SV); + MarkEncountersVersion(safari_gs, GameVersion.GS); + + return AddExtraTableSlots(g, s, h_g, h_s, f, bcc_gs, safari_gs); + } + + private static EncounterArea[] GetSlots_C(EncounterArea[] f) + { + // Grass/Water + var c = EncounterArea.GetArray2_GW(Util.GetBinaryResource("encounter_crystal.pkl")); + // Headbutt/Rock Smash + var h_c = EncounterArea.GetArray2_H(Util.GetBinaryResource("encounter_crystal_h.pkl")); + var safari_c = EncounterSafari_GSC; + var bcc_c = EncounterBCC_GSC; + + MarkEncountersVersion(bcc_c, GameVersion.C); + MarkEncountersVersion(safari_c, GameVersion.C); + MarkEncountersVersion(f, GameVersion.C); + MarkEncountersVersion(c, GameVersion.C); + MarkEncountersVersion(h_c, GameVersion.C); + + var extra = AddExtraTableSlots(c, h_c, f, bcc_c, safari_c); + MarkSlotLocation(ref extra); + return extra; + } + + private static readonly int[] Roaming_MetLocation_GSC_Grass = + { + // Routes 29, 30-31, 33, 34, 35, 36-37, 38-39, 42, 43, 44, 45-46 can be encountered in grass + 2, 4, 5, 8, 11, 15, 18, 20, 21, + 25, 26, 34, 37, 39, 43, 45, + }; + + private static readonly EncounterArea[] EncounterBCC_GSC = { new EncounterArea { + Location = 19, + Slots = new EncounterSlot[] + { + new EncounterSlot1 {Species = 010, LevelMin = 07, LevelMax = 18, Rate = 20, SlotNumber = 0}, // Caterpie + new EncounterSlot1 {Species = 013, LevelMin = 07, LevelMax = 18, Rate = 20, SlotNumber = 1}, // Weedle + new EncounterSlot1 {Species = 011, LevelMin = 09, LevelMax = 18, Rate = 10, SlotNumber = 2}, // Metapod + new EncounterSlot1 {Species = 014, LevelMin = 09, LevelMax = 18, Rate = 10, SlotNumber = 3}, // Kakuna + new EncounterSlot1 {Species = 012, LevelMin = 12, LevelMax = 15, Rate = 05, SlotNumber = 4}, // Butterfree + new EncounterSlot1 {Species = 015, LevelMin = 12, LevelMax = 15, Rate = 05, SlotNumber = 5}, // Beedrill + new EncounterSlot1 {Species = 048, LevelMin = 10, LevelMax = 16, Rate = 10, SlotNumber = 6}, // Venonat + new EncounterSlot1 {Species = 046, LevelMin = 10, LevelMax = 17, Rate = 10, SlotNumber = 7}, // Paras + new EncounterSlot1 {Species = 123, LevelMin = 13, LevelMax = 14, Rate = 05, SlotNumber = 8}, // Scyther + new EncounterSlot1 {Species = 127, LevelMin = 13, LevelMax = 14, Rate = 05, SlotNumber = 9}, // Pinsir + } + }}; + + private static readonly EncounterArea[] EncounterSafari_GSC = { new EncounterArea { + Location = 81, + Slots = new EncounterSlot[] + { + new EncounterSlot1 {Species = 129, LevelMin = 10, LevelMax = 10, Type = SlotType.Old_Rod_Safari}, // Magikarp + new EncounterSlot1 {Species = 098, LevelMin = 10, LevelMax = 10, Type = SlotType.Old_Rod_Safari}, // Krabby + new EncounterSlot1 {Species = 098, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Krabby + new EncounterSlot1 {Species = 129, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Magikarp + new EncounterSlot1 {Species = 222, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Corsola + new EncounterSlot1 {Species = 120, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Staryu + new EncounterSlot1 {Species = 098, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Krabby + new EncounterSlot1 {Species = 222, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Corsola + new EncounterSlot1 {Species = 120, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Staryu + new EncounterSlot1 {Species = 121, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Kingler + } + }}; + + private static readonly EncounterStatic[] Encounter_GSC_Common = + { + new EncounterStatic { Species = 152, Level = 05, Location = 001, Version = GameVersion.GSC }, // Chikorita @ New Bark Town + new EncounterStatic { Species = 155, Level = 05, Location = 001, Version = GameVersion.GSC }, // Cyndaquil @ New Bark Town + new EncounterStatic { Species = 158, Level = 05, Location = 001, Version = GameVersion.GSC }, // Totodile @ New Bark Town + + new EncounterStatic { Species = 175, Level = 05, Version = GameVersion.GSC, EggLocation = 256 }, // Togepi + new EncounterStatic { Species = 131, Level = 20, Location = 010, Version = GameVersion.GSC }, // Lapras @ Union Cave + new EncounterStatic { Species = 133, Level = 20, Location = 016, Version = GameVersion.GSC }, // Eevee @ Goldenrod City + + new EncounterStatic { Species = 185, Level = 20, Location = 020, Version = GameVersion.GSC }, // Sudowoodo @ Route 36 + new EncounterStatic { Species = 236, Level = 10, Location = 035, Version = GameVersion.GSC }, // Tyrogue @ Mt. Mortar + + new EncounterStatic { Species = 130, Level = 30, Location = 038, Version = GameVersion.GSC, Shiny = true, }, // Gyarados @ Lake of Rage + new EncounterStatic { Species = 074, Level = 21, Location = 036, Version = GameVersion.GSC }, // Geodude @ Rocket Hideout (Mahogany Town) + new EncounterStatic { Species = 109, Level = 21, Location = 036, Version = GameVersion.GSC }, // Koffing @ Rocket Hideout (Mahogany Town) + new EncounterStatic { Species = 100, Level = 23, Location = 036, Version = GameVersion.GSC }, // Voltorb @ Rocket Hideout (Mahogany Town) + new EncounterStatic { Species = 101, Level = 23, Location = 036, Version = GameVersion.GSC }, // Electrode @ Rocket Hideout (Mahogany Town) + new EncounterStatic { Species = 143, Level = 50, Location = 061, Version = GameVersion.GSC }, // Snorlax @ Vermillion City + + new EncounterStatic { Species = 083, Level = 05, Moves = new [] { 226, 14, 97, 37 }, Version = GameVersion.Stadium2 }, // Stadium 2 Baton Pass Farfetch'd + new EncounterStatic { Species = 207, Level = 05, Moves = new [] { 89, 68, 17 }, Version = GameVersion.Stadium2 }, // Stadium 2 Earthquake Gligar + }; + + private static readonly EncounterStatic[] Encounter_GS_Exclusive = + { + new EncounterStatic { Species = 245, Level = 40, Version = GameVersion.GS }, // Suicune + + new EncounterStatic { Species = 249, Level = 70, Version = GameVersion.GD }, // Lugia @ Whirl Islands + new EncounterStatic { Species = 249, Level = 40, Version = GameVersion.SV }, // Lugia @ Whirl Islands + + new EncounterStatic { Species = 250, Level = 40, Version = GameVersion.GD }, // Ho-Oh @ Tin Tower + new EncounterStatic { Species = 250, Level = 70, Version = GameVersion.SV }, // Ho-Oh @ Tin Tower + + new EncounterStatic { Species = 137, Level = 15, Version = GameVersion.GS }, // Porygon @ Celadon Game Corner + new EncounterStatic { Species = 133, Level = 15, Version = GameVersion.GS }, // Eevee @ Celadon Game Corner + new EncounterStatic { Species = 122, Level = 15, Version = GameVersion.GS }, // Mr. Mime @ Celadon Game Corner + + new EncounterStatic { Species = 063, Level = 10, Version = GameVersion.GS }, // Abra @ Goldenrod City (Game Corner) + new EncounterStatic { Species = 147, Level = 10, Version = GameVersion.GS }, // Dratini @ Goldenrod City (Game Corner) + new EncounterStatic { Species = 023, Level = 10, Version = GameVersion.GS }, // Ekans @ Goldenrod City (Game Corner) (Gold) + new EncounterStatic { Species = 027, Level = 10, Version = GameVersion.GS }, // Sandshrew @ Goldenrod City (Game Corner) (Silver) + }; + + private static readonly EncounterStatic[] Encounter_C_Exclusive = + { + new EncounterStatic { Species = 245, Level = 40, Location = 023, Version = GameVersion.C }, // Suicune @ Tin Tower + + new EncounterStatic { Species = 172, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Pichu Dizzy Punch + new EncounterStatic { Species = 173, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Cleffa Dizzy Punch + new EncounterStatic { Species = 174, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Igglybuff Dizzy Punch + new EncounterStatic { Species = 236, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Tyrogue Dizzy Punch + new EncounterStatic { Species = 238, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Smoochum Dizzy Punch + new EncounterStatic { Species = 239, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Elekid Dizzy Punch + new EncounterStatic { Species = 240, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Magby Dizzy Punch + + new EncounterStatic { Species = 147, Level = 15, Location = 042, Version = GameVersion.C, Moves = new [] {245} }, // Dratini ExtremeSpeed + + new EncounterStatic { Species = 249, Level = 60, Location = 031, Version = GameVersion.C }, // Lugia @ Whirl Islands + new EncounterStatic { Species = 250, Level = 60, Location = 023, Version = GameVersion.C }, // Ho-Oh @ Tin Tower + new EncounterStatic { Species = 251, Level = 30, Location = 014, Version = GameVersion.EventsGBGen2 }, // Celebi @ Ilex Forest + + new EncounterStatic { Species = 137, Level = 15, Location = 071, Version = GameVersion.C }, // Porygon @ Celadon Game Corner + new EncounterStatic { Species = 025, Level = 25, Location = 071, Version = GameVersion.C }, // Pikachu @ Celadon Game Corner + new EncounterStatic { Species = 246, Level = 40, Location = 071, Version = GameVersion.C }, // Larvitar @ Celadon Game Corner + + new EncounterStatic { Species = 063, Level = 05, Location = 016, Version = GameVersion.C }, // Abra @ Goldenrod City (Game Corner) + new EncounterStatic { Species = 104, Level = 15, Location = 016, Version = GameVersion.C }, // Cubone @ Goldenrod City (Game Corner) + new EncounterStatic { Species = 202, Level = 15, Location = 016, Version = GameVersion.C }, // Wobbuffet @ Goldenrod City (Game Corner) + }; + + private static readonly EncounterStatic[] Encounter_GSC_Roam = + { + new EncounterStatic { Species = 243, Level = 40, Roaming = true }, // Raikou + new EncounterStatic { Species = 244, Level = 40, Roaming = true }, // Entei + new EncounterStatic { Species = 245, Level = 40, Roaming = true, Version = GameVersion.GS }, // Suicune + }; + + private static readonly EncounterStatic[] Encounter_GS = Encounter_GSC_Common.Concat(Encounter_GS_Exclusive).Concat(Encounter_GSC_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_GSC_Grass))).ToArray(); + private static readonly EncounterStatic[] Encounter_C = Encounter_GSC_Common.Concat(Encounter_C_Exclusive).Concat(Encounter_GSC_Roam.Take(2).SelectMany(e => e.Clone(Roaming_MetLocation_GSC_Grass))).ToArray(); + private static readonly EncounterStatic[] Encounter_GSC = Encounter_GSC_Common.Concat(Encounter_GS_Exclusive).Concat(Encounter_C_Exclusive).Concat(Encounter_GSC_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_GSC_Grass))).ToArray(); + + internal static readonly EncounterTrade[] TradeGift_GSC = + { + new EncounterTrade { Species = 095, Generation = 2, Level = 03, Gender = 0, TID = 48926, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Onix @ Violet City for Bellsprout [wild] + new EncounterTrade { Species = 066, Generation = 2, Level = 05, Gender = 1, TID = 37460, IVs = new[] {12, 03, 07, 06, 06, 06} }, // Machop @ Goldenrod City for Drowzee [wild 9, hatched egg 5] + new EncounterTrade { Species = 100, Generation = 2, Level = 05, Gender = 2, TID = 29189, IVs = new[] {08, 09, 08, 08, 08, 08} }, // Voltorb @ Olivine City for Krabby [egg] + new EncounterTrade { Species = 112, Generation = 2, Level = 30, Gender = 0, TID = 00283, IVs = new[] {12, 07, 07, 06, 06, 06} }, // Rhydon @ Blackthorn City for Dragonair [blue jp game corner] + new EncounterTrade { Species = 142, Generation = 2, Level = 05, Gender = 0, TID = 26491, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Aerodactyl @ Route 14 for Chansey [egg] + new EncounterTrade { Species = 078, Generation = 2, Level = 14, Gender = 0, TID = 15616, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Rapidash @ Pewter City for Gloom [wild] + + new EncounterTrade { Species = 085, Generation = 2, Level = 30, Gender = 0, TID = 00283, IVs = new[] {12, 07, 07, 06, 06, 06} }, // Dodrio @ Blackthorn City for Dragonair [blue jp game corner] + new EncounterTrade { Species = 178, Generation = 2, Level = 15, Gender = 0, TID = 15616, IVs = new[] {08, 09, 06, 08, 06, 06} }, // Xatu @ Pewter City for Haunter [wild] + new EncounterTrade { Species = 082, Generation = 2, Level = 16, Gender = 2, TID = 50082, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Magneton @ Power Plant for Dugtrio [wild] + + new EncounterTrade { Species = 213, Generation = 2, Level = 15, TID = 00518 } // Shuckle @ Cianwood City for free + }; + internal static readonly string[][] TradeGift_GSC_OTs = + { + new[] { "コンタ", "KYLE" }, + new[] { "ナオキ", "MIKE" }, + new[] { "ゲン", "TIM" }, + new[] { "ミサコ", "EMY" }, + new[] { "キヨミ", "KIM" }, + new[] { "デンジ", "CHRIS" }, + + new[] { "ミサコ", "EMY" }, + new[] { "デンジ", "CHRIS" }, + new[] { "モリオ", "FOREST" }, + + new[] { "セイジ", "MANIA" }, + }; + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters3.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters3.cs new file mode 100644 index 000000000..11af331d3 --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters3.cs @@ -0,0 +1,654 @@ +using System.Linq; +using static PKHeX.Core.EncounterUtil; + +namespace PKHeX.Core +{ + internal static class Encounters3 + { + internal static readonly EncounterArea[] SlotsR, SlotsS, SlotsE; + internal static readonly EncounterArea[] SlotsFR, SlotsLG; + internal static readonly EncounterStatic[] StaticR, StaticS, StaticE; + internal static readonly EncounterStatic[] StaticFR, StaticLG; + + private const int SafariLocation_RSE = 57; + private const int SafariLocation_FRLG = 136; + + static Encounters3() + { + StaticR = Encounter_RSE; + StaticS = Encounter_RSE; + StaticE = Encounter_RSE; + StaticFR = Encounter_FRLG; + StaticLG = Encounter_FRLG; + + EncounterArea[] get(string resource, string ident) + => EncounterArea.GetArray3(Data.UnpackMini(Util.GetBinaryResource($"encounter_{resource}.pkl"), ident)); + + var R_Slots = get("r", "ru"); + var S_Slots = get("s", "sa"); + var E_Slots = get("e", "em"); + var FR_Slots = get("fr", "fr"); + var LG_Slots = get("lg", "lg"); + + ReduceAreasSize(ref R_Slots); + ReduceAreasSize(ref S_Slots); + ReduceAreasSize(ref E_Slots); + MarkG3Slots_FRLG(ref FR_Slots); + MarkG3Slots_FRLG(ref LG_Slots); + + MarkG3SlotsSafariZones(ref R_Slots, SafariLocation_RSE); + MarkG3SlotsSafariZones(ref S_Slots, SafariLocation_RSE); + MarkG3SlotsSafariZones(ref E_Slots, SafariLocation_RSE); + MarkG3SlotsSafariZones(ref FR_Slots, SafariLocation_FRLG); + MarkG3SlotsSafariZones(ref LG_Slots, SafariLocation_FRLG); + + MarkEncountersStaticMagnetPull(ref R_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref S_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref E_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref FR_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref LG_Slots, PersonalTable.SM); + + SlotsR = AddExtraTableSlots(R_Slots, SlotsRSEAlt); + SlotsS = AddExtraTableSlots(S_Slots, SlotsRSEAlt); + SlotsE = AddExtraTableSlots(E_Slots, SlotsRSEAlt); + SlotsFR = AddExtraTableSlots(FR_Slots, SlotsFRLGAlt); + SlotsLG = AddExtraTableSlots(LG_Slots, SlotsFRLGAlt); + + MarkSlotLocation(ref SlotsR); + MarkSlotLocation(ref SlotsS); + MarkSlotLocation(ref SlotsE); + MarkSlotLocation(ref SlotsFR); + MarkSlotLocation(ref SlotsLG); + } + + private static void MarkG3Slots_FRLG(ref EncounterArea[] Areas) + { + // Remove slots for unown, those slots does not contains alt form info, it will be added manually in SlotsRFLGAlt + // Group areas by location id, the raw data have areas with different slots but the same location id + Areas = Areas.Where(a => a.Location < 188 || a.Location > 194).GroupBy(a => a.Location).Select(a => new EncounterArea + { + Location = a.First().Location, + Slots = a.SelectMany(m => m.Slots).ToArray() + }).ToArray(); + } + + private static void MarkG3SlotsSafariZones(ref EncounterArea[] Areas, int location) + { + foreach (EncounterArea Area in Areas.Where(a => a.Location == location)) + foreach (EncounterSlot Slot in Area.Slots) + Slot.Type = Slot.Type.GetSafariSlotType(); + } + private static SlotType GetSafariSlotType(this SlotType t) + { + switch (t) + { + case SlotType.Grass: return SlotType.Grass_Safari; + case SlotType.Surf: return SlotType.Surf_Safari; + case SlotType.Old_Rod: return SlotType.Old_Rod_Safari; + case SlotType.Good_Rod: return SlotType.Good_Rod_Safari; + case SlotType.Super_Rod: return SlotType.Super_Rod_Safari; + case SlotType.Rock_Smash: return SlotType.Rock_Smash_Safari; + default: return t; + } + } + + private static readonly int[] Roaming_MetLocation_FRLG = + { + //Route 1-25 encounter is possible either in grass or on water + 101,102,103,104,105,106,107,108,109,110, + 111,112,113,114,115,116,117,118,119,120, + 121,122,123,124,125 + }; + + private static readonly int[] Roaming_MetLocation_RSE = + { + //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, + }; + private 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 + }; + private 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 + + // 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 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, Fateful = true }, // 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, Fateful = true }, // 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, Fateful = true }, // Mew @ Faraway Island (Unreleased outside of Japan) + new EncounterStatic { Species = 249, Level = 70, Location = 211, Version = GameVersion.E, Fateful = true }, // Lugia @ Navel Rock + new EncounterStatic { Species = 250, Level = 70, Location = 211, Version = GameVersion.E, Fateful = true }, // Ho-Oh @ Navel Rock + new EncounterStatic { Species = 386, Level = 30, Location = 200, Version = GameVersion.E, Fateful = true, Form = 3 }, // Deoxys @ Birth Island + }; + + private 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 + }; + private 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 = 7, Level = 05, Location = 088, }, // Squirtle + + // 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 + + // 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 + + // Celadon City Game Corner + new EncounterStatic { Gift = true, Species = 063, Level = 09, Location = 94, Version = GameVersion.FR }, // Abra + new EncounterStatic { Gift = true, Species = 035, Level = 08, Location = 94, Version = GameVersion.FR }, // Clefairy + new EncounterStatic { Gift = true, Species = 123, Level = 25, Location = 94, Version = GameVersion.FR }, // Scyther + new EncounterStatic { Gift = true, Species = 147, Level = 18, Location = 94, Version = GameVersion.FR }, // Dratini + new EncounterStatic { Gift = true, Species = 137, Level = 26, Location = 94, Version = GameVersion.FR }, // Porygon + + new EncounterStatic { Gift = true, Species = 063, Level = 07, Location = 94, Version = GameVersion.LG }, // Abra + new EncounterStatic { Gift = true, Species = 035, Level = 12, Location = 94, Version = GameVersion.LG }, // Clefairy + new EncounterStatic { Gift = true, Species = 127, Level = 18, Location = 94, Version = GameVersion.LG }, // Pinsir + new EncounterStatic { Gift = true, Species = 147, Level = 24, Location = 94, Version = GameVersion.LG }, // Dratini + new EncounterStatic { Gift = true, Species = 137, Level = 18, Location = 94, Version = GameVersion.LG }, // Porygon + + // 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 + + // 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, Fateful = true }, // Lugia @ Navel Rock + new EncounterStatic { Species = 250, Level = 70, Location = 174, Fateful = true }, // Ho-Oh @ Navel Rock + new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.FR, Form = 1, Fateful = true }, // Deoxys @ Birth Island + new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.LG, Form = 2, Fateful = true }, // Deoxys @ Birth Island + }; + + private static readonly EncounterStatic[] Encounter_RSE = Encounter_RSE_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_RSE)).Concat(Encounter_RSE_Regular).ToArray(); + private 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 }; + private static readonly int[] TradeContest_Cute = { 05, 05, 30, 05, 05, 10 }; + private static readonly int[] TradeContest_Clever = { 05, 05, 05, 30, 05, 10 }; + private static readonly int[] TradeContest_Tough = { 05, 05, 05, 05, 30, 10 }; + internal static readonly EncounterTrade[] TradeGift_RSE = + { + new EncounterTrade { Species = 296, Ability = 2, TID = 49562, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {5,5,4,4,4,4}, Level = 05, Nature = Nature.Hardy, Contest = TradeContest_Tough, Version = GameVersion.RS, }, // Slakoth (Level 5 Breeding) -> Makuhita + new EncounterTrade { Species = 300, Ability = 1, TID = 02259, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {5,4,4,5,4,4}, Level = 03, Nature = Nature.Timid, Contest = TradeContest_Cute, Version = GameVersion.RS, }, // Pikachu (Level 3 Viridiam Forest) -> Skitty + new EncounterTrade { Species = 222, Ability = 2, TID = 50183, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {4,4,5,4,4,5}, Level = 21, Nature = Nature.Calm, Contest = TradeContest_Beauty, Version = GameVersion.RS, }, // Bellossom (Level 21 Odish -> Gloom -> Bellossom) -> Corsola + new EncounterTrade { Species = 273, Ability = 2, TID = 38726, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {5,4,5,4,4,4}, Level = 04, Nature = Nature.Relaxed, Contest = TradeContest_Cool, Version = GameVersion.E, }, // Ralts (Level 4 Route 102) -> Seedot + new EncounterTrade { Species = 311, Ability = 1, TID = 08460, SID = 00001, OTGender = 0, Gender = 1, IVs = new[] {4,4,4,5,5,4}, Level = 05, Nature = Nature.Hasty, Contest = TradeContest_Cute, Version = GameVersion.E, }, // Volbeat (Level 5 Breeding) -> Plusle + new EncounterTrade { Species = 116, Ability = 1, TID = 46285, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {5,4,4,4,5,4}, Level = 05, Nature = Nature.Brave, Contest = TradeContest_Tough, Version = GameVersion.E, }, // Bagon Bagon (Level 5 Breeding) -> Horsea* + new EncounterTrade { Species = 052, Ability = 1, TID = 25945, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {4,5,4,5,4,4}, Level = 03, Nature = Nature.Naive, Contest = TradeContest_Clever, Version = GameVersion.E, }, // Skitty (Level 3 Trade)-> Meowth* + // If Pokémon with * is evolved in a Generation IV or V game, its Ability will become its second Ability. + }; + internal static readonly EncounterTrade[] TradeGift_FRLG = + { + new EncounterTrade { Species = 122, Ability = 1, TID = 01985, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,15,17,24,23,22}, Nature = Nature.Timid, Contest = TradeContest_Clever,}, // Mr. Mime + new EncounterTrade { Species = 029, Ability = 1, TID = 63184, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {22,18,25,19,15,22}, Nature = Nature.Bold, Contest = TradeContest_Tough, Version = GameVersion.FR, }, // Nidoran♀ + new EncounterTrade { Species = 032, Ability = 1, TID = 63184, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {19,25,18,22,22,15}, Nature = Nature.Lonely, Contest = TradeContest_Cool, Version = GameVersion.LG, }, // Nidoran♂ * + new EncounterTrade { Species = 030, Ability = 1, TID = 13637, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {22,25,18,19,22,15}, Nature = Nature.Lonely, Contest = TradeContest_Cute, Version = GameVersion.FR,}, // Nidorina * + new EncounterTrade { Species = 033, Ability = 1, TID = 13637, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {19,18,25,22,15,22}, Nature = Nature.Bold, Contest = TradeContest_Tough, Version = GameVersion.LG,}, // Nidorino * + new EncounterTrade { Species = 108, Ability = 1, TID = 01239, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {24,19,21,15,23,21}, Nature = Nature.Relaxed, Contest = TradeContest_Tough, }, // Lickitung * + new EncounterTrade { Species = 124, Ability = 1, TID = 36728, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {18,17,18,22,25,21}, Nature = Nature.Mild, Contest = TradeContest_Beauty, }, // Jynx + new EncounterTrade { Species = 083, Ability = 1, TID = 08810, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,25,21,24,15,20}, Nature = Nature.Adamant, Contest = TradeContest_Cool, }, // Farfetch'd + new EncounterTrade { Species = 101, Ability = 2, TID = 50298, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {19,16,18,25,25,19}, Nature = Nature.Hasty, Contest = TradeContest_Cool, }, // Electrode + new EncounterTrade { Species = 114, Ability = 1, TID = 60042, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {22,17,25,16,23,20}, Nature = Nature.Sassy, Contest = TradeContest_Cute, }, // Tangela + new EncounterTrade { Species = 086, Ability = 1, TID = 09853, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {24,15,22,16,23,22}, Nature = Nature.Bold, Contest = TradeContest_Tough, }, // Seel * + // If Pokémon with * is evolved in a Generation IV or V game, its Ability will become its second Ability. + }; + + #region AltSlots + private static readonly int[] SafariZoneLocation_3 = + { + 57, 136 + }; + private static readonly EncounterArea[] SlotsRSEAlt = + { + // Swarm can be passed from one game to another via mixing records, that means emerald swarms can occurs in r/s and r/s swarms in emerald + // Ruby and Sapphire Swarm + new EncounterArea { + Location = 17, // Route 102 + Slots = new[] + { + new EncounterSlot { Species = 283, LevelMin = 3, LevelMax = 3, Type = SlotType.Grass}, // Surskit + },}, + new EncounterArea { + Location = 29, // Route 114 + Slots = new[] + { + new EncounterSlot { Species = 283, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Surskit + },}, + new EncounterArea { + Location = 31, // Route 116 + Slots = new[] + { + new EncounterSlot { Species = 300, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Skitty + },}, + new EncounterArea { + Location = 32, // Route 117 + Slots = new[] + { + new EncounterSlot { Species = 283, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Surskit + },}, + new EncounterArea { + Location = 35, // Route 120 + Slots = new[] + { + new EncounterSlot { Species = 283, LevelMin = 28, LevelMax = 28, Type = SlotType.Grass}, // Surskit + },}, + + //Emerald Swarm + new EncounterArea { + Location = 17, // Route 102 + Slots = new[] + { + new EncounterSlot { Species = 273, LevelMin = 3, LevelMax = 3, Type = SlotType.Grass}, // Seedot + },}, + new EncounterArea { + Location = 29, // Route 114 + Slots = new[] + { + new EncounterSlot { Species = 274, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Nuzleaf + },}, + new EncounterArea { + Location = 31, // Route 116 + Slots = new[] + { + new EncounterSlot { Species = 300, LevelMin = 8, LevelMax = 8, Type = SlotType.Grass}, // Skitty + },}, + new EncounterArea { + Location = 32, // Route 117 + Slots = new[] + { + new EncounterSlot { Species = 273, LevelMin = 13, LevelMax = 13, Type = SlotType.Grass}, // Seedot + },}, + new EncounterArea { + Location = 35, // Route 120 + Slots = new[] + { + new EncounterSlot { Species = 273, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass}, // Seedot + },}, + //Feebas fishing spot + new EncounterArea { + Location = 34, // Route 119 + Slots = new[] + { + new EncounterSlot { Species = 349, LevelMin = 20, LevelMax = 25, Type = SlotType.Super_Rod } // Feebas + },}, + }; + private static readonly EncounterArea[] SlotsFRLGAlt = + { + new EncounterArea { + Location = 188, // Monean Chamber + Slots = new[] + { + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 0 }, // Unown A + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 26 }, // Unown ? + },}, + new EncounterArea { + Location = 189, // Liptoo Chamber + Slots = new[] + { + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 2 }, // Unown C + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 3 }, // Unown D + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 7 }, // Unown H + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 14 }, // Unown O + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 20 }, // Unown U + },}, + new EncounterArea { + Location = 190, // Weepth Chamber + Slots = new[] + { + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 4 }, // Unown E + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 8 }, // Unown I + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 13 }, // Unown N + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 18 }, // Unown S + },}, + new EncounterArea { + Location = 191, // Dilford Chamber + Slots = new[] + { + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 9 }, // Unown J + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 11 }, // Unown L + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 15 }, // Unown P + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 16 }, // Unown Q + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 17 }, // Unown R + },}, + new EncounterArea { + Location = 192, // Scufib Chamber + Slots = new[] + { + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 5 }, // Unown F + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 6 }, // Unown G + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 10 }, // Unown K + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 19 }, // Unown T + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 24 }, // Unown Y + },}, + new EncounterArea { + Location = 193, // Rixy Chamber + Slots = new[] + { + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 1 }, // Unown B + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 12 }, // Unown M + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 21 }, // Unown V + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 22 }, // Unown W + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 23 }, // Unown X + },}, + new EncounterArea { + Location = 194, // Viapois Chamber + Slots = new[] + { + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 25 }, // Unown Z + new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 27 }, // Unown ! + },} + }; + #endregion + + #region Colosseum + internal static readonly EncounterStatic[] Encounter_Colo = + { + new EncounterStatic { Gift = true, Species = 196, Level = 25, Location = 254 }, // Espeon + new EncounterStatic { Gift = true, Species = 197, Level = 26, Location = 254, Moves = new[] {044} }, // Umbreon (Bite) + + new EncounterStaticShadow { Species = 296, Level = 30, Gauge = 03000, Moves = new[] {193,116,233,238}, Location = 005 }, // Makuhita: Miror B.Peon Trudly @ Phenac City + + // missing locs: Realgam Tower + new EncounterStaticShadow { Species = 153, Level = 30, Gauge = 03000, Moves = new[] {241,235,075,034}, Location = 003 }, // Bayleef: Cipher Peon Verde @ Phenac City + new EncounterStaticShadow { Species = 156, Level = 30, Gauge = 03000, Moves = new[] {241,108,091,172}, Location = 003 }, // Quilava: Cipher Peon Rosso @ Phenac City + new EncounterStaticShadow { Species = 159, Level = 30, Gauge = 03000, Moves = new[] {240,184,044,057}, Location = 003 }, // Croconaw: Cipher Peon Bluno @ Phenac City + new EncounterStaticShadow { Species = 153, Level = 30, Gauge = 03000, Moves = new[] {241,235,075,034}, Location = 132 }, // Bayleef: Cipher Peon Verde @ Snagem Hideout + new EncounterStaticShadow { Species = 156, Level = 30, Gauge = 03000, Moves = new[] {241,108,091,172}, Location = 132 }, // Quilava: Cipher Peon Rosso @ Snagem Hideout + new EncounterStaticShadow { Species = 159, Level = 30, Gauge = 03000, Moves = new[] {240,184,044,057}, Location = 132 }, // Croconaw: Cipher Peon Bluno @ Snagem Hideout + new EncounterStaticShadow { Species = 153, Level = 30, Gauge = 03000, Moves = new[] {241,235,075,034}, Location = 069 }, // Bayleef: Cipher Peon Verde @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 156, Level = 30, Gauge = 03000, Moves = new[] {241,108,091,172}, Location = 069 }, // Quilava: Cipher Peon Rosso @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 159, Level = 30, Gauge = 03000, Moves = new[] {240,184,044,057}, Location = 069 }, // Croconaw: Cipher Peon Bluno @ Shadow PKMN Lab + + new EncounterStaticShadow { Species = 218, Level = 30, Gauge = 04000, Moves = new[] {241,281,088,053}, Location = 015 }, // Slugma: Roller Boy Lon @ Pyrite Town + new EncounterStaticShadow { Species = 164, Level = 30, Gauge = 03000, Moves = new[] {211,095,115,019}, Location = 015 }, // Noctowl: Rider Nover @ Pyrite Town + new EncounterStaticShadow { Species = 180, Level = 30, Gauge = 03000, Moves = new[] {085,086,178,084}, Location = 015 }, // Flaaffy: St.Performer Diogo @ Pyrite Town + new EncounterStaticShadow { Species = 188, Level = 30, Gauge = 03000, Moves = new[] {235,079,178,072}, Location = 015 }, // Skiploom: Rider Leba @ Pyrite Town + new EncounterStaticShadow { Species = 195, Level = 30, Gauge = 04000, Moves = new[] {341,133,021,057}, Location = 015 }, // Quagsire: Bandana Guy Divel @ Pyrite Town + new EncounterStaticShadow { Species = 200, Level = 30, Gauge = 04000, Moves = new[] {060,109,212,247}, Location = 015 }, // Misdreavus: Rider Vant @ Pyrite Town + new EncounterStaticShadow { Species = 162, Level = 33, Gauge = 05000, Moves = new[] {231,270,098,070}, Location = 015 }, // Furret: Rogue Cail @ Pyrite Town + + // missing loc: Snagem Hideout + new EncounterStaticShadow { Species = 193, Level = 33, Gauge = 05000, Moves = new[] {197,048,049,253}, Location = 025 }, // Yanma: Cipher Peon Nore @ Pyrite Bldg + + new EncounterStaticShadow { Species = 223, Level = 20, Gauge = 04000, Moves = new[] {061,199,060,062}, Location = 028 }, // Remoraid: Miror B.Peon Reath @ Pyrite Bldg + new EncounterStaticShadow { Species = 223, Level = 20, Gauge = 04000, Moves = new[] {061,199,060,062}, Location = 030 }, // Remoraid: Miror B.Peon Reath @ Pyrite Cave + new EncounterStaticShadow { Species = 226, Level = 33, Gauge = 05000, Moves = new[] {017,048,061,036}, Location = 028 }, // Mantine: Miror B.Peon Ferma @ Pyrite Bldg + new EncounterStaticShadow { Species = 226, Level = 33, Gauge = 05000, Moves = new[] {017,048,061,036}, Location = 030 }, // Mantine: Miror B.Peon Ferma @ Pyrite Cave + + new EncounterStaticShadow { Species = 211, Level = 33, Gauge = 05000, Moves = new[] {042,107,040,057}, Location = 015 }, // Qwilfish: Hunter Doken @ Pyrite Bldg + new EncounterStaticShadow { Species = 307, Level = 33, Gauge = 05000, Moves = new[] {197,347,093,136}, Location = 031 }, // Meditite: Rider Twan @ Pyrite Cave + new EncounterStaticShadow { Species = 206, Level = 33, Gauge = 05000, Moves = new[] {180,137,281,036}, Location = 029 }, // Dunsparce: Rider Sosh @ Pyrite Cave + new EncounterStaticShadow { Species = 333, Level = 33, Gauge = 05000, Moves = new[] {119,047,219,019}, Location = 032 }, // Swablu: Hunter Zalo @ Pyrite Cave + + new EncounterStaticShadow { Species = 185, Level = 35, Gauge = 10000, Moves = new[] {175,335,067,157}, Location = 125 }, // Sudowoodo: Cipher Admin Miror B. @ Deep Colosseum -- (Realgam Tower missing) + new EncounterStaticShadow { Species = 185, Level = 35, Gauge = 10000, Moves = new[] {175,335,067,157}, Location = 030 }, // Sudowoodo: Cipher Admin Miror B. @ Pyrite Cave + + // missing locs: Shadow PKMN Lab + new EncounterStaticShadow { Species = 237, Level = 38, Gauge = 06000, Moves = new[] {097,116,167,229}, Location = 039 }, // Hitmontop: Cipher Peon Skrub @ Agate Village + new EncounterStaticShadow { Species = 237, Level = 38, Gauge = 06000, Moves = new[] {097,116,167,229}, Location = 132 }, // Hitmontop: Cipher Peon Skrub @ Snagem Hideout + + new EncounterStaticShadow { Species = 166, Level = 40, Gauge = 06000, Moves = new[] {226,219,048,004}, Location = 047 }, // Ledian: Cipher Peon Kloak @ The Under + new EncounterStaticShadow { Species = 166, Level = 40, Gauge = 06000, Moves = new[] {226,219,048,004}, Location = 132 }, // Ledian: Cipher Peon Kloak @ Snagem Hideout + + // missing locs: Realgam Tower/Deep Colosseum + new EncounterStaticShadow { Species = 244, Level = 40, Gauge = 13000, Moves = new[] {241,043,044,126}, Location = 076 }, // Entei: Cipher Admin Dakim @ Mt. Battle + + // missing loc: Realgam Tower + new EncounterStaticShadow { Species = 245, Level = 40, Gauge = 13000, Moves = new[] {240,043,016,057}, Location = 055 }, // Suicune (Surf): Cipher Admin Venus @ The Under + new EncounterStaticShadow { Species = 245, Level = 40, Gauge = 13000, Moves = new[] {240,043,016,056}, Location = 000 }, // Suicune (Hydro Pump): Cipher Admin Venus @ Deep Colosseum + + // missing locs: Realgam Tower/Deep Colosseum + new EncounterStaticShadow { Species = 243, Level = 40, Gauge = 13000, Moves = new[] {240,043,098,087}, Location = 069 }, // Raikou: Cipher Admin Ein @ Shadow PKMN Lab + + new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 058 }, // Gligar: Hunter Frena @ The Under Subway + new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 133 }, // Gligar: Hunter Frena @ Snagem Hideout + new EncounterStaticShadow { Species = 234, Level = 43, Gauge = 06000, Moves = new[] {310,095,043,036}, Location = 058 }, // Stantler: Chaser Liaks @ The Under Subway + new EncounterStaticShadow { Species = 234, Level = 43, Gauge = 06000, Moves = new[] {310,095,043,036}, Location = 133 }, // Stantler: Chaser Liaks @ Snagem Hideout + new EncounterStaticShadow { Species = 221, Level = 43, Gauge = 06000, Moves = new[] {203,316,091,059}, Location = 058 }, // Piloswine: Bodybuilder Lonia @ The Under Subway + new EncounterStaticShadow { Species = 221, Level = 43, Gauge = 06000, Moves = new[] {203,316,091,059}, Location = 134 }, // Piloswine: Bodybuilder Lonia @ Snagem Hideout + new EncounterStaticShadow { Species = 215, Level = 43, Gauge = 06000, Moves = new[] {185,103,154,196}, Location = 058 }, // Sneasel: Rider Nelis @ The Under Subway + new EncounterStaticShadow { Species = 215, Level = 43, Gauge = 06000, Moves = new[] {185,103,154,196}, Location = 134 }, // Sneasel: Rider Nelis @ Snagem Hideout + new EncounterStaticShadow { Species = 190, Level = 43, Gauge = 06000, Moves = new[] {226,321,154,129}, Location = 067 }, // Aipom: Cipher Peon Cole @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 198, Level = 43, Gauge = 06000, Moves = new[] {185,212,101,019}, Location = 067 }, // Murkrow: Cipher Peon Lare @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 205, Level = 43, Gauge = 06000, Moves = new[] {153,182,117,229}, Location = 067 }, // Forretress: Cipher Peon Vana @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 168, Level = 43, Gauge = 06000, Moves = new[] {169,184,141,188}, Location = 069 }, // Ariados: Cipher Peon Lesar @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 210, Level = 43, Gauge = 06000, Moves = new[] {044,184,046,070}, Location = 069 }, // Granbull: Cipher Peon Tanie @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 329, Level = 43, Gauge = 06000, Moves = new[] {242,103,328,225}, Location = 068 }, // Vibrava: Cipher Peon Remil @ Shadow PKMN Lab + + new EncounterStaticShadow { Species = 192, Level = 45, Gauge = 07000, Moves = new[] {241,074,275,076}, Location = 109 }, // Sunflora: Cipher Peon Baila @ Realgam Tower + new EncounterStaticShadow { Species = 225, Level = 45, Gauge = 07000, Moves = new[] {059,213,217,019}, Location = 109 }, // Delibird: Cipher Peon Arton @ Realgam Tower + new EncounterStaticShadow { Species = 214, Level = 45, Gauge = 07000, Moves = new[] {179,203,068,280}, Location = 111 }, // Heracross: Cipher Peon Dioge @ Realgam Tower + new EncounterStaticShadow { Species = 227, Level = 47, Gauge = 13000, Moves = new[] {065,319,314,211}, Location = 117 }, // Skarmory: Snagem Head Gonzap @ Realgam Tower + new EncounterStaticShadow { Species = 192, Level = 45, Gauge = 07000, Moves = new[] {241,074,275,076}, Location = 132 }, // Sunflora: Cipher Peon Baila @ Snagem Hideout + new EncounterStaticShadow { Species = 225, Level = 45, Gauge = 07000, Moves = new[] {059,213,217,019}, Location = 132 }, // Delibird: Cipher Peon Arton @ Snagem Hideout + new EncounterStaticShadow { Species = 214, Level = 45, Gauge = 07000, Moves = new[] {179,203,068,280}, Location = 132 }, // Heracross: Cipher Peon Dioge @ Snagem Hideout + new EncounterStaticShadow { Species = 227, Level = 47, Gauge = 13000, Moves = new[] {065,319,314,211}, Location = 133 }, // Skarmory: Snagem Head Gonzap @ Snagem Hideout + + new EncounterStaticShadow { Species = 241, Level = 48, Gauge = 07000, Moves = new[] {208,111,205,034}, Location = 118 }, // Miltank: Bodybuilder Jomas @ Tower Colosseum + new EncounterStaticShadow { Species = 359, Level = 48, Gauge = 07000, Moves = new[] {195,014,163,185}, Location = 118 }, // Absol: Rider Delan @ Tower Colosseum + new EncounterStaticShadow { Species = 229, Level = 48, Gauge = 07000, Moves = new[] {185,336,123,053}, Location = 118 }, // Houndoom: Cipher Peon Nella @ Tower Colosseum + new EncounterStaticShadow { Species = 357, Level = 49, Gauge = 07000, Moves = new[] {076,235,345,019}, Location = 118 }, // Tropius: Cipher Peon Ston @ Tower Colosseum + new EncounterStaticShadow { Species = 376, Level = 50, Gauge = 15000, Moves = new[] {063,334,232,094}, Location = 118 }, // Metagross: Cipher Nascour @ Tower Colosseum + new EncounterStaticShadow { Species = 248, Level = 55, Gauge = 20000, Moves = new[] {242,087,157,059}, Location = 118 }, // Tyranitar: Cipher Head Evice @ Tower Colosseum + new EncounterStaticShadow { Species = 235, Level = 45, Gauge = 07000, Moves = new[] {166,039,003,231}, Location = 132 }, // Smeargle: Team Snagem Biden @ Snagem Hideout + new EncounterStaticShadow { Species = 217, Level = 45, Gauge = 07000, Moves = new[] {185,313,122,163}, Location = 132 }, // Ursaring: Team Snagem Agrev @ Snagem Hideout + new EncounterStaticShadow { Species = 213, Level = 45, Gauge = 07000, Moves = new[] {219,227,156,117}, Location = 125 }, // Shuckle: Deep King Agnol @ Deep Colosseum + new EncounterStaticShadow { Species = 176, Level = 20, Gauge = 05000, Moves = new[] {118,204,186,281}, Location = 001 }, // Togetic: Cipher Peon Fein @ Outskirt Stand + new EncounterStaticShadow { Species = 175, Level = 20, Gauge = 00000, Moves = new[] {118,204,186,281}, IVs = new[] {0,0,0,0,0,0}, EReader = true }, // Togepi: Chaser ボデス @ Card e Room (Japanese games only) + new EncounterStaticShadow { Species = 179, Level = 37, Gauge = 00000, Moves = new[] {087,084,086,178}, IVs = new[] {0,0,0,0,0,0}, EReader = true }, // Mareep: Hunter ホル @ Card e Room (Japanese games only) + new EncounterStaticShadow { Species = 212, Level = 50, Gauge = 00000, Moves = new[] {210,232,014,163}, IVs = new[] {0,0,0,0,0,0}, EReader = true }, // Scizor: Bodybuilder ワーバン @ Card e Room (Japanese games only) + }; + #endregion + + #region XD + + internal static readonly EncounterStatic[] Encounter_XD = + { + new EncounterStatic { Fateful = true, Gift = true, Species = 133, Level = 10, Location = 000, Moves = new[] {044} }, // Eevee (Bite) + new EncounterStatic { Fateful = true, Gift = true, Species = 152, Level = 05, Location = 016, Moves = new[] {246,033,045,338} }, // Chikorita + new EncounterStatic { Fateful = true, Gift = true, Species = 155, Level = 05, Location = 016, Moves = new[] {179,033,043,307} }, // Cyndaquil + new EncounterStatic { Fateful = true, Gift = true, Species = 158, Level = 05, Location = 016, Moves = new[] {242,010,043,308} }, // Totodile + + new EncounterStaticShadow { Fateful = true, Species = 216, Level = 11, Gauge = 03000, Moves = new[] {216,287,122,232}, Location = 143, }, // Teddiursa: Cipher Peon Naps @ Pokémon HQ Lab + new EncounterStaticShadow { Fateful = true, Species = 165, Level = 10, Gauge = 02500, Moves = new[] {060,287,332,048}, Location = 153, }, // Ledyba: Casual Guy Cyle @ Gateon Port + new EncounterStaticShadow { Fateful = true, Species = 261, Level = 10, Gauge = 02500, Moves = new[] {091,215,305,336}, Location = 162, }, // Poochyena: Bodybuilder Kilen @ Gateon Port + new EncounterStaticShadow { Fateful = true, Species = 228, Level = 17, Gauge = 01500, Moves = new[] {185,204,052,046}, Location = 011, }, // Houndour: Cipher Peon Resix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 343, Level = 17, Gauge = 01500, Moves = new[] {317,287,189,060}, Location = 011, }, // Baltoy: Cipher Peon Browsix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 179, Level = 17, Gauge = 01500, Moves = new[] {034,215,084,086}, Location = 011, }, // Mareep: Cipher Peon Yellosix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 273, Level = 17, Gauge = 01500, Moves = new[] {202,287,331,290}, Location = 011, }, // Seedot: Cipher Peon Greesix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 363, Level = 17, Gauge = 01500, Moves = new[] {062,204,055,189}, Location = 011, }, // Spheal: Cipher Peon Blusix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 316, Level = 17, Gauge = 01500, Moves = new[] {351,047,124,092}, Location = 011, }, // Gulpin: Cipher Peon Purpsix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 167, Level = 14, Gauge = 01500, Moves = new[] {091,287,324,101}, Location = 010, }, // Spinarak: Cipher Peon Nexir @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 322, Level = 14, Gauge = 01500, Moves = new[] {036,204,091,052}, Location = 009, }, // Numel: Cipher Peon Solox @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 318, Level = 15, Gauge = 01700, Moves = new[] {352,287,184,044}, Location = 008, }, // Carvanha: Cipher Peon Cabol @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 285, Level = 15, Gauge = 01800, Moves = new[] {206,287,072,078}, Location = 008, }, // Shroomish: Cipher R&D Klots @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 301, Level = 18, Gauge = 02500, Moves = new[] {290,186,213,351}, Location = 008, }, // Delcatty: Cipher Admin Lovrina @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 100, Level = 19, Gauge = 02500, Moves = new[] {243,287,209,129}, Location = 092, }, // Voltorb: Wanderer Miror B. @ Cave Poké Spot + new EncounterStaticShadow { Fateful = true, Species = 296, Level = 18, Gauge = 02000, Moves = new[] {280,287,292,317}, Location = 109, }, // Makuhita: Cipher Peon Torkin @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 037, Level = 18, Gauge = 02000, Moves = new[] {257,204,052,091}, Location = 109, }, // Vulpix: Cipher Peon Mesin @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 355, Level = 19, Gauge = 02200, Moves = new[] {247,270,310,109}, Location = 110, }, // Duskull: Cipher Peon Lobar @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 280, Level = 20, Gauge = 02200, Moves = new[] {351,047,115,093}, Location = 119, }, // Ralts: Cipher Peon Feldas @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 303, Level = 22, Gauge = 02500, Moves = new[] {206,047,011,334}, Location = 111, }, // Mawile: Cipher Cmdr Exol @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 361, Level = 20, Gauge = 02500, Moves = new[] {352,047,044,196}, Location = 097, }, // Snorunt: Cipher Peon Exinn @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 204, Level = 20, Gauge = 02500, Moves = new[] {042,287,191,068}, Location = 096, }, // Pineco: Cipher Peon Gonrap @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 177, Level = 22, Gauge = 02500, Moves = new[] {248,226,101,332}, Location = 094, }, // Natu: Cipher Peon Eloin @ Phenac City + + new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 113 }, // Roselia: Cipher Peon Fasin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 094 }, // Roselia: Cipher Peon Fasin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 113 }, // Meowth: Cipher Peon Fostin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 094 }, // Meowth: Cipher Peon Fostin @ Phenac City + + new EncounterStaticShadow { Fateful = true, Species = 220, Level = 22, Gauge = 02500, Moves = new[] {246,204,054,341}, Location = 100 }, // Swinub: Cipher Peon Greck @ Phenac City + + new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 059 }, // Spearow: Cipher Peon Ezin @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 107 }, // Spearow: Cipher Peon Ezin @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 059 }, // Grimer: Cipher Peon Faltly @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 107 }, // Grimer: Cipher Peon Faltly @ Phenac Stadium + + new EncounterStaticShadow { Fateful = true, Species = 086, Level = 23, Gauge = 03500, Moves = new[] {057,270,219,058}, Location = 107 }, // Seel: Cipher Peon Egrog @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 337, Level = 25, Gauge = 05000, Moves = new[] {094,226,240,317}, Location = 107 }, // Lunatone: Cipher Admin Snattle @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 175, Level = 25, Gauge = 04500, Moves = new[] {266,161,246,270}, Location = 164, Gift = true }, // Togepi: Pokémon Trainer Hordel @ Outskirt Stand + + new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 090 }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots + new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 113 }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots + + new EncounterStaticShadow { Fateful = true, Species = 335, Level = 28, Gauge = 05000, Moves = new[] {280,287,068,306}, Location = 071 }, // Zangoose: Thug Zook @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 335, Level = 28, Gauge = 05000, Moves = new[] {280,287,068,306}, Location = 090 }, // Zangoose: Thug Zook @ Cipher Key Lair + + new EncounterStaticShadow { Fateful = true, Species = 046, Level = 28, Gauge = 04000, Moves = new[] {147,287,163,206}, Location = 064 }, // Paras: Cipher Peon Humah @ Cipher Key Lair + + new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 064 }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 113 }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair + + new EncounterStaticShadow { Fateful = true, Species = 015, Level = 30, Gauge = 04500, Moves = new[] {188,226,041,014}, Location = 059 }, // Beedrill: Cipher Peon Lok @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 059 }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 059 }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 059 }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 059 }, // Banette: Cipher Peon Litnar @ Citadark Isle + + new EncounterStaticShadow { Fateful = true, Species = 090, Level = 29, Gauge = 04000, Moves = new[] {036,287,057,062}, Location = 065 }, // Shellder: Cipher Peon Gorog @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 015, Level = 30, Gauge = 04500, Moves = new[] {188,226,041,014}, Location = 066 }, // Beedrill: Cipher Peon Lok @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 017, Level = 30, Gauge = 04000, Moves = new[] {017,287,211,297}, Location = 066 }, // Pidgeotto: Cipher Peon Lok @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 114, Level = 30, Gauge = 04000, Moves = new[] {076,234,241,275}, Location = 067 }, // Tangela: Cipher Peon Targ @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 067 }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 082, Level = 30, Gauge = 04500, Moves = new[] {038,287,240,087}, Location = 067 }, // Magneton: Cipher Peon Snidle @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 070 }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 070, Level = 32, Gauge = 04000, Moves = new[] {345,234,188,230}, Location = 070 }, // Weepinbell: Cipher Peon Angic @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 024, Level = 33, Gauge = 05000, Moves = new[] {188,287,137,044}, Location = 070 }, // Arbok: Cipher Peon Smarton @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 057, Level = 34, Gauge = 06000, Moves = new[] {238,270,116,179}, Location = 069 }, // Primeape: Cipher Admin Gorigan @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 069 }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 055, Level = 33, Gauge = 06500, Moves = new[] {127,204,244,280}, Location = 088 }, // Golduck: Navigator Abson @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 302, Level = 33, Gauge = 07000, Moves = new[] {247,270,185,105}, Location = 088 }, // Sableye: Navigator Abson @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 085, Level = 34, Gauge = 08000, Moves = new[] {065,226,097,161}, Location = 076 }, // Dodrio: Chaser Furgy @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 020, Level = 34, Gauge = 06000, Moves = new[] {162,287,184,158}, Location = 076 }, // Raticate: Chaser Furgy @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 083, Level = 36, Gauge = 05500, Moves = new[] {163,226,014,332}, Location = 076 }, // Farfetch'd: Cipher Admin Lovrina @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 334, Level = 36, Gauge = 06500, Moves = new[] {225,215,076,332}, Location = 076 }, // Altaria: Cipher Admin Lovrina @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 115, Level = 35, Gauge = 06000, Moves = new[] {089,047,039,146}, Location = 085 }, // Kangaskhan: Cipher Peon Litnar @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 085 }, // Banette: Cipher Peon Litnar @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 126, Level = 36, Gauge = 07000, Moves = new[] {126,266,238,009}, Location = 077 }, // Magmar: Cipher Peon Grupel @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 127, Level = 35, Gauge = 07000, Moves = new[] {012,270,206,066}, Location = 077 }, // Pinsir: Cipher Peon Grupel @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 078, Level = 40, Gauge = 06000, Moves = new[] {076,226,241,053}, Location = 080 }, // Rapidash: Cipher Peon Kolest @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 219, Level = 38, Gauge = 05500, Moves = new[] {257,287,089,053}, Location = 080 }, // Magcargo: Cipher Peon Kolest @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 107, Level = 38, Gauge = 06000, Moves = new[] {005,270,170,327}, Location = 081 }, // Hitmonchan: Cipher Peon Karbon @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 106, Level = 38, Gauge = 07000, Moves = new[] {136,287,170,025}, Location = 081 }, // Hitmonlee: Cipher Peon Petro @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 108, Level = 38, Gauge = 05000, Moves = new[] {038,270,111,205}, Location = 084 }, // Lickitung: Cipher Peon Geftal @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 123, Level = 40, Gauge = 08000, Moves = new[] {013,234,318,163}, Location = 084 }, // Scyther: Cipher Peon Leden @ Citadark Isle + + new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 084 }, // Chansey: Cipher Peon Leden @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 087 }, // Chansey: Cipher Peon Leden @ Citadark Isle + + new EncounterStaticShadow { Fateful = true, Species = 338, Level = 41, Gauge = 07500, Moves = new[] {094,226,241,322}, Location = 087 }, // Solrock: Cipher Admin Snattle @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 121, Level = 41, Gauge = 07500, Moves = new[] {127,287,058,105}, Location = 087 }, // Starmie: Cipher Admin Snattle @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 277, Level = 43, Gauge = 07000, Moves = new[] {143,226,097,263}, Location = 087 }, // Swellow: Cipher Admin Ardos @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 125, Level = 43, Gauge = 07000, Moves = new[] {238,266,086,085}, Location = 087 }, // Electabuzz: Cipher Admin Ardos @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 143, Level = 43, Gauge = 09000, Moves = new[] {090,287,174,034}, Location = 087 }, // Snorlax: Cipher Admin Ardos @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 062, Level = 42, Gauge = 07500, Moves = new[] {056,270,240,280}, Location = 087 }, // Poliwrath: Cipher Admin Gorigan @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 122, Level = 42, Gauge = 06500, Moves = new[] {094,266,227,009}, Location = 087 }, // Mr. Mime: Cipher Admin Gorigan @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 051, Level = 40, Gauge = 05000, Moves = new[] {089,204,201,161}, Location = 075 }, // Dugtrio: Cipher Peon Kolax @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 310, Level = 44, Gauge = 07000, Moves = new[] {087,287,240,044}, Location = 073 }, // Manectric: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 373, Level = 50, Gauge = 09000, Moves = new[] {337,287,349,332}, Location = 073 }, // Salamence: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 105, Level = 44, Gauge = 06500, Moves = new[] {089,047,014,157}, Location = 073 }, // Marowak: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 131, Level = 44, Gauge = 06000, Moves = new[] {056,215,240,059}, Location = 073 }, // Lapras: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 249, Level = 50, Gauge = 12000, Moves = new[] {354,297,089,056}, Location = 074 }, // Lugia: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 112, Level = 46, Gauge = 07000, Moves = new[] {224,270,184,089}, Location = 074 }, // Rhydon: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 146, Level = 50, Gauge = 10000, Moves = new[] {326,234,261,053}, Location = 074 }, // Moltres: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 103, Level = 46, Gauge = 09000, Moves = new[] {094,287,095,246}, Location = 074 }, // Exeggutor: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 128, Level = 46, Gauge = 09000, Moves = new[] {089,287,039,034}, Location = 074 }, // Tauros: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 144, Level = 50, Gauge = 10000, Moves = new[] {326,215,114,058}, Location = 074 }, // Articuno: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 145, Level = 50, Gauge = 10000, Moves = new[] {326,226,319,085}, Location = 074 }, // Zapdos: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 149, Level = 55, Gauge = 09000, Moves = new[] {063,215,349,089}, Location = 162 }, // Dragonite: Wanderer Miror B. @ Gateon Port + }; + + internal static readonly EncounterArea[] SlotsXD = + { + new EncounterArea { Location = 090, Slots = new[] // Rock + { + new EncounterSlot {Species = 027, LevelMin = 10, LevelMax = 23, SlotNumber = 0}, // Sandshrew + new EncounterSlot {Species = 207, LevelMin = 10, LevelMax = 20, SlotNumber = 1}, // Gligar + new EncounterSlot {Species = 328, LevelMin = 10, LevelMax = 20, SlotNumber = 2}, // Trapinch + } + }, + new EncounterArea { Location = 091, Slots = new[] // Oasis + { + new EncounterSlot {Species = 187, LevelMin = 10, LevelMax = 20, SlotNumber = 0}, // Hoppip + new EncounterSlot {Species = 231, LevelMin = 10, LevelMax = 20, SlotNumber = 1}, // Phanpy + new EncounterSlot {Species = 283, LevelMin = 10, LevelMax = 20, SlotNumber = 2}, // Surskit + } + }, + new EncounterArea { Location = 092, Slots = new[] // Cave + { + new EncounterSlot {Species = 041, LevelMin = 10, LevelMax = 21, SlotNumber = 0}, // Zubat + new EncounterSlot {Species = 304, LevelMin = 10, LevelMax = 21, SlotNumber = 1}, // Aron + new EncounterSlot {Species = 194, LevelMin = 10, LevelMax = 21, SlotNumber = 2}, // Wooper + } + }, + }; + + internal static readonly EncounterStatic[] Encounter_CXD = Encounter_Colo.Concat(Encounter_XD).ToArray(); + + #endregion + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters4.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters4.cs new file mode 100644 index 000000000..eccf4867f --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters4.cs @@ -0,0 +1,1486 @@ +using System.Collections.Generic; +using System.Linq; +using static PKHeX.Core.EncounterUtil; + +namespace PKHeX.Core +{ + internal static class Encounters4 + { + internal static readonly EncounterArea[] SlotsD, SlotsP, SlotsPt, SlotsHG, SlotsSS; + internal static readonly EncounterStatic[] StaticD, StaticP, StaticPt, StaticHG, StaticSS; + + static Encounters4() + { + MarkG4PokeWalker(Encounter_PokeWalker); + StaticD = StaticP = StaticPt = Encounter_DPPt; + StaticHG = StaticSS = Encounter_HGSS.Concat(Encounter_PokeWalker).ToArray(); + + byte[][] get(string resource, string ident) + => Data.UnpackMini(Util.GetBinaryResource($"encounter_{resource}.pkl"), ident); + + var D_Slots = EncounterArea.GetArray4DPPt(get("d", "da")); + var P_Slots = EncounterArea.GetArray4DPPt(get("p", "pe")); + var Pt_Slots = EncounterArea.GetArray4DPPt(get("pt", "pt")); + var HG_Slots = EncounterArea.GetArray4HGSS(get("hg", "hg")); + var SS_Slots = EncounterArea.GetArray4HGSS(get("ss", "ss")); + + MarkEncountersStaticMagnetPull(ref D_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref P_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref Pt_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref HG_Slots, PersonalTable.SM); + MarkEncountersStaticMagnetPull(ref SS_Slots, PersonalTable.SM); + + var DP_Trophy = EncounterArea.GetTrophyArea(TrophyDP, new[] { 16, 18 }); + var Pt_Trophy = EncounterArea.GetTrophyArea(TrophyPt, new[] { 22, 22 }); + var HG_Headbutt_Slots = EncounterArea.GetArray4HGSS_Headbutt(get("hb_hg", "hg")); + var SS_Headbutt_Slots = EncounterArea.GetArray4HGSS_Headbutt(get("hb_ss", "ss")); + + var D_HoneyTrees_Slots = SlotsD_HoneyTree.Clone(HoneyTreesLocation); + var P_HoneyTrees_Slots = SlotsP_HoneyTree.Clone(HoneyTreesLocation); + var Pt_HoneyTrees_Slots = SlotsPt_HoneyTree.Clone(HoneyTreesLocation); + + MarkG4SwarmSlots(ref HG_Slots, SlotsHG_Swarm); + MarkG4SwarmSlots(ref SS_Slots, SlotsSS_Swarm); + + MarkEncounterTypeData(ref D_Slots, ref P_Slots, ref Pt_Slots, ref HG_Slots, ref SS_Slots); + + ReduceAreasSize(ref D_Slots); + ReduceAreasSize(ref P_Slots); + ReduceAreasSize(ref Pt_Slots); + ReduceAreasSize(ref HG_Slots); + ReduceAreasSize(ref SS_Slots); + ReduceAreasSize(ref HG_Headbutt_Slots); + ReduceAreasSize(ref SS_Headbutt_Slots); + + MarkG4SlotsGreatMarsh(ref D_Slots, 52); + MarkG4SlotsGreatMarsh(ref P_Slots, 52); + MarkG4SlotsGreatMarsh(ref Pt_Slots, 52); + + SlotsD = AddExtraTableSlots(D_Slots, D_HoneyTrees_Slots, DP_GreatMarshAlt, SlotsDPPPtAlt, DP_Trophy); + SlotsP = AddExtraTableSlots(P_Slots, P_HoneyTrees_Slots, DP_GreatMarshAlt, SlotsDPPPtAlt, DP_Trophy); + SlotsPt = AddExtraTableSlots(Pt_Slots, Pt_HoneyTrees_Slots, Pt_GreatMarshAlt, SlotsDPPPtAlt, Pt_Trophy); + SlotsHG = AddExtraTableSlots(HG_Slots, HG_Headbutt_Slots, SlotsHGSSAlt); + SlotsSS = AddExtraTableSlots(SS_Slots, SS_Headbutt_Slots, SlotsHGSSAlt); + + MarkDPPtEncounterTypeSlots(ref SlotsD); + MarkDPPtEncounterTypeSlots(ref SlotsP); + MarkDPPtEncounterTypeSlots(ref SlotsPt); + MarkHGSSEncounterTypeSlots(ref SlotsHG); + MarkHGSSEncounterTypeSlots(ref SlotsSS); + + MarkSlotLocation(ref SlotsD); + MarkSlotLocation(ref SlotsP); + MarkSlotLocation(ref SlotsPt); + MarkSlotLocation(ref SlotsHG); + MarkSlotLocation(ref SlotsSS); + } + + private static void MarkEncounterTypeData(ref EncounterArea[] D_Slots, ref EncounterArea[] P_Slots, ref EncounterArea[] Pt_Slots, ref EncounterArea[] HG_Slots, ref EncounterArea[] SS_Slots) + { + // Shellos & Gastrodon + MarkG4AltFormSlots(ref D_Slots, 422, 1, Shellos_EastSeaLocation_DP); + MarkG4AltFormSlots(ref D_Slots, 423, 1, Gastrodon_EastSeaLocation_DP); + MarkG4AltFormSlots(ref P_Slots, 422, 1, Shellos_EastSeaLocation_DP); + MarkG4AltFormSlots(ref P_Slots, 423, 1, Gastrodon_EastSeaLocation_DP); + MarkG4AltFormSlots(ref Pt_Slots, 422, 1, Shellos_EastSeaLocation_Pt); + MarkG4AltFormSlots(ref Pt_Slots, 423, 1, Gastrodon_EastSeaLocation_Pt); + + const int Route209 = 24; + MarkDPPtEncounterTypeSlots_MultipleTypes(ref D_Slots, Route209, 1, EncounterType.Building_EnigmaStone); + MarkDPPtEncounterTypeSlots_MultipleTypes(ref P_Slots, Route209, 1, EncounterType.Building_EnigmaStone); + MarkDPPtEncounterTypeSlots_MultipleTypes(ref Pt_Slots, Route209, 1, EncounterType.Building_EnigmaStone); + const int StarkMountain = 84; + MarkDPPtEncounterTypeSlots_MultipleTypes(ref D_Slots, StarkMountain, 1, EncounterType.Cave_HallOfOrigin); + MarkDPPtEncounterTypeSlots_MultipleTypes(ref P_Slots, StarkMountain, 1, EncounterType.Cave_HallOfOrigin); + MarkDPPtEncounterTypeSlots_MultipleTypes(ref Pt_Slots, StarkMountain, 1, EncounterType.Cave_HallOfOrigin); + const int MtCoronet = 50; + MarkDPPtEncounterTypeSlots_MultipleTypes(ref D_Slots, MtCoronet, DPPt_MtCoronetExteriorEncounters, EncounterType.Cave_HallOfOrigin); + MarkDPPtEncounterTypeSlots_MultipleTypes(ref P_Slots, MtCoronet, DPPt_MtCoronetExteriorEncounters, EncounterType.Cave_HallOfOrigin); + MarkDPPtEncounterTypeSlots_MultipleTypes(ref Pt_Slots, MtCoronet, DPPt_MtCoronetExteriorEncounters, EncounterType.Cave_HallOfOrigin); + const int RuinsOfAlph = 209; + MarkHGSSEncounterTypeSlots_MultipleTypes(ref HG_Slots, RuinsOfAlph, 1, EncounterType.Cave_HallOfOrigin); + MarkHGSSEncounterTypeSlots_MultipleTypes(ref SS_Slots, RuinsOfAlph, 1, EncounterType.Cave_HallOfOrigin); + const int MtSilver = 219; + MarkHGSSEncounterTypeSlots_MultipleTypes(ref HG_Slots, MtSilver, HGSS_MtSilverCaveExteriorEncounters, EncounterType.Cave_HallOfOrigin); + MarkHGSSEncounterTypeSlots_MultipleTypes(ref SS_Slots, MtSilver, HGSS_MtSilverCaveExteriorEncounters, EncounterType.Cave_HallOfOrigin); + } + + private static void MarkG4PokeWalker(EncounterStatic[] t) + { + foreach (EncounterStatic s in t) + { + s.Location = 233; //Pokéwalker + s.Gift = true; //Pokeball only + } + } + private static void MarkG4SlotsGreatMarsh(ref EncounterArea[] Areas, int location) + { + foreach (EncounterArea Area in Areas.Where(a => a.Location == location)) + { + foreach (EncounterSlot Slot in Area.Slots) + { + SlotType t; + switch (Slot.Type) + { + case SlotType.Grass: t = SlotType.Grass_Safari; break; + case SlotType.Surf: t = SlotType.Surf_Safari; break; + case SlotType.Old_Rod: t = SlotType.Old_Rod_Safari; break; + case SlotType.Good_Rod: t = SlotType.Good_Rod_Safari; break; + case SlotType.Super_Rod: t = SlotType.Super_Rod_Safari; break; + case SlotType.Pokeradar: t = SlotType.Pokeradar_Safari; break; + default: continue; + } + Slot.Type = t; + } + } + } + private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[] SwarmAreas) + { + // Grass Swarm slots replace slots 0 and 1 from encounters data + // for surfing only replace slots 0 from encounters data + // for fishing replace one or several random slots from encounters data, but all slots have the same level, it's ok to only replace the first + // Species id are not included in encounter tables but levels can be copied from the encounter raw data + foreach (EncounterArea Area in Areas) + { + var SwarmSlots = SwarmAreas.Where(a => a.Location == Area.Location).SelectMany(s => s.Slots); + var OutputSlots = new List(); + foreach (EncounterSlot SwarmSlot in SwarmSlots) + { + int slotsnum = SwarmSlot.Type == SlotType.Grass ? 2 : 1; + foreach (var swarmSlot in Area.Slots.Where(s => s.Type == SwarmSlot.Type).Take(slotsnum).Select(slot => slot.Clone())) + { + swarmSlot.Species = SwarmSlot.Species; + OutputSlots.Add(swarmSlot); + } + } + Area.Slots = Area.Slots.Concat(OutputSlots).Where(a => a.Species > 0).ToArray(); + } + } + // Gen 4 raw encounter data does not contains info for alt slots + // Shellos and Gastrodom East Sea form should be modified + private static void MarkG4AltFormSlots(ref EncounterArea[] Areas, int Species, int form, int[] Locations) + { + foreach (EncounterArea Area in Areas.Where(a => Locations.Contains(a.Location))) + { + foreach (EncounterSlot Slot in Area.Slots.Where(s => s.Species == Species)) + { + Slot.Form = form; + } + } + } + private static EncounterType GetEncounterTypeBySlotDPPt(SlotType Type, EncounterType GrassType) + { + switch (Type) + { + case SlotType.Pokeradar: + case SlotType.Pokeradar_Safari: + case SlotType.Swarm: + case SlotType.Grass: return GrassType; + case SlotType.Surf: + case SlotType.Old_Rod: + case SlotType.Good_Rod: + case SlotType.Super_Rod: + case SlotType.Surf_Safari: + case SlotType.Old_Rod_Safari: + case SlotType.Good_Rod_Safari: + case SlotType.Super_Rod_Safari: return EncounterType.Surfing_Fishing; + case SlotType.Grass_Safari: return EncounterType.MarshSafari; + case SlotType.HoneyTree: return EncounterType.None; + } + return EncounterType.None; + } + private static EncounterType GetEncounterTypeBySlotHGSS(SlotType Type, EncounterType GrassType, EncounterType HeadbuttType) + { + switch (Type) + { + // HGSS Safari encounters have normal water/grass encounter type, not safari encounter type + case SlotType.Grass: + case SlotType.Grass_Safari: + case SlotType.BugContest: return GrassType; + case SlotType.Surf: + case SlotType.Old_Rod: + case SlotType.Good_Rod: + case SlotType.Super_Rod: + case SlotType.Surf_Safari: + case SlotType.Old_Rod_Safari: + case SlotType.Good_Rod_Safari: + case SlotType.Super_Rod_Safari: return EncounterType.Surfing_Fishing; + case SlotType.Rock_Smash: + case SlotType.Rock_Smash_Safari: return EncounterType.RockSmash; + case SlotType.Headbutt: return HeadbuttType; + case SlotType.Headbutt_Special: return EncounterType.None; + } + return EncounterType.None; + } + private static void MarkDPPtEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int SpecialEncounterFile, EncounterType NormalEncounterType) + { + // Area with two different encounter type for grass encounters + // SpecialEncounterFile is tall grass encounter type, the other files have the normal encounter type for this location + var numfile = 0; + foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) + { + numfile++; + var GrassType = numfile == SpecialEncounterFile ? EncounterType.TallGrass : NormalEncounterType; + foreach (EncounterSlot Slot in Area.Slots) + { + Slot.TypeEncounter = GetEncounterTypeBySlotDPPt(Slot.Type, GrassType); + } + } + } + private static void MarkDPPtEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int[] SpecialEncounterFiles, EncounterType NormalEncounterType) + { + var numfile = 0; + foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) + { + numfile++; + var GrassType = SpecialEncounterFiles.Contains(numfile) ? EncounterType.TallGrass : NormalEncounterType; + foreach (EncounterSlot Slot in Area.Slots) + { + Slot.TypeEncounter = GetEncounterTypeBySlotDPPt(Slot.Type, GrassType); + } + } + } + private static void MarkHGSSEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int SpecialEncounterFile, EncounterType NormalEncounterType) + { + // Area with two different encounter type for grass encounters + // SpecialEncounterFile is taall grass encounter type, the other files have the normal encounter type for this location + var HeadbuttType = GetHeadbuttEncounterType(Location); + var numfile = 0; + foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) + { + numfile++; + var GrassType = numfile == SpecialEncounterFile ? EncounterType.TallGrass : NormalEncounterType; + foreach (EncounterSlot Slot in Area.Slots) + { + Slot.TypeEncounter = GetEncounterTypeBySlotHGSS(Slot.Type, GrassType, HeadbuttType); + } + } + } + private static void MarkHGSSEncounterTypeSlots_MultipleTypes(ref EncounterArea[] Areas, int Location, int[] SpecialEncounterFiles, EncounterType NormalEncounterType) + { + var HeadbuttType = GetHeadbuttEncounterType(Location); + var numfile = 0; + foreach (EncounterArea Area in Areas.Where(x => x.Location == Location)) + { + numfile++; + var GrassType = SpecialEncounterFiles.Contains(numfile) ? EncounterType.TallGrass : NormalEncounterType; + foreach (EncounterSlot Slot in Area.Slots) + { + Slot.TypeEncounter = GetEncounterTypeBySlotHGSS(Slot.Type, GrassType, HeadbuttType); + } + } + } + private static void MarkDPPtEncounterTypeSlots(ref EncounterArea[] Areas) + { + foreach (EncounterArea Area in Areas) + { + if (DPPt_MixInteriorExteriorLocations.Contains(Area.Location)) + continue; + var GrassType = (Area.Location == 70) ? EncounterType.Building_EnigmaStone :// Old Chateau + DPPt_CaveLocations.Contains(Area.Location) ? EncounterType.Cave_HallOfOrigin : + EncounterType.TallGrass; + foreach (EncounterSlot Slot in Area.Slots) + { + Slot.TypeEncounter = GetEncounterTypeBySlotDPPt(Slot.Type, GrassType); + } + } + } + private static EncounterType GetHeadbuttEncounterType(int Location) + { + // Routes with trees adjacent to water tiles + var allowsurf = HGSS_SurfingHeadbutt_Locations.Contains(Location); + // Cities + if (HGSS_CityLocations.Contains(Location)) + return allowsurf ? EncounterType.Headbutt_CitySurf : EncounterType.Building_EnigmaStone; + // Caves with no exterior zones + if (!HGSS_MixInteriorExteriorLocations.Contains(Location) && HGSS_CaveLocations.Contains(Location)) + return allowsurf ? EncounterType.Headbutt_CaveSurf : EncounterType.Cave_HallOfOrigin; + + // Routes and exterior areas + // Routes with trees adjacent to grass tiles + var allowgrass = HGSS_GrassHeadbutt_Locations.Contains(Location); + return allowgrass && allowsurf ? EncounterType.Headbutt_GrassSurf : + allowgrass ? EncounterType.Headbutt_Grass : + allowsurf ? EncounterType.Headbutt_Surf : + EncounterType.None; + } + + private static void MarkHGSSEncounterTypeSlots(ref EncounterArea[] Areas) + { + foreach (EncounterArea Area in Areas) + { + if (HGSS_MixInteriorExteriorLocations.Contains(Area.Location)) + continue; + var GrassType = HGSS_CaveLocations.Contains(Area.Location) ? EncounterType.Cave_HallOfOrigin : EncounterType.TallGrass; + var HeadbuttType = GetHeadbuttEncounterType(Area.Location); + foreach (EncounterSlot Slot in Area.Slots) + { + Slot.TypeEncounter = GetEncounterTypeBySlotHGSS(Slot.Type, GrassType, HeadbuttType); + } + } + } + + #region Encounter Types + private static readonly int[] DPPt_CaveLocations = + { + 46, // Oreburgh Mine + 50, // Mt. Coronet + 53, // Solaceon Ruins + 54, // Sinnoh Victory Road + 57, // Ravaged Path + 59, // Oreburgh Gate + 62, // Turnback Cave + 64, // Snowpoint Temple + 65, // Wayward Cave + 66, // Ruin Maniac Cave + 67, // Maniac Tunnel + 66, // Ruin Maniac Cave + 69, // Iron Island + 84, // Stark Mountain + }; + private static readonly int[] DPPt_MixInteriorExteriorLocations = + { + 24, // Route 209 (Lost Tower) + 50, // Mt Coronet + 84, // Stark Mountain + }; + private static readonly int[] DPPt_MtCoronetExteriorEncounters = + { + 4, 5, 70 + }; + private static readonly int[] HGSS_CaveLocations = + { + 197, // DIGLETT's Cave + 198, // Mt. Moon + 199, // Cerulean Cave + 200, // Rock Tunnel + 201, // Power Plant + 203, // Seafoam Islands + 204, // Sprout Tower + 205, // Bell Tower + 206, // Burned Tower + 209, // Ruins of Alph + 210, // Union Cave + 211, // SLOWPOKE Well + 214, // Ilex Forest + 216, // Mt. Mortar + 217, // Ice Path + 218, // Whirl Islands + 219, // Mt. Silver Cave + 220, // Dark Cave + 221, // Kanto Victory Road + 223, // Tohjo Falls + 228, // Cliff Cave + 234, // Cliff Edge Gate + }; + private static readonly int[] HGSS_CityLocations = + { + 126, // New Bark Town + 127, // Cherrygrove City + 128, // Violet City + 129, // Azalea Town + 130, // Cianwood City + 131, // Goldenrod City + 132, // Olivine City + 133, // Ecruteak City + 134, // Mahogany Town + 136, // Blackthorn City + 138, // Pallet Town + 139, // Viridian City + 140, // Pewter City + 141, // Cerulean City + 142, // Lavender Town + 143, // Vermilion City + 144, // Celadon City + 145, // Fuchsia City + 146, // Cinnabar Island + 147, // Indigo Plateau + 148, // Saffron City + 227, // Safari Zone Gate + }; + private static readonly int[] HGSS_SurfingHeadbutt_Locations = + { // Locations with headbutt trees adjacent to water tiles + 126, // New Bark Town + 127, // Cherrygrove City + 128, // Violet City + 133, // Ecruteak City + 135, // Lake of Rage + 138, // Pallet Town + 139, // Viridian City + 160, // Route 12 + 169, // Route 21 + 170, // Route 22 + 174, // Route 26 + 175, // Route 27 + 176, // Route 28 + 178, // Route 30 + 179, // Route 31 + 180, // Route 32 + 182, // Route 34 + 183, // Route 35 + 190, // Route 42 + 191, // Route 43 + 192, // Route 44 + 214, // Ilex Forest + }; + private static readonly int[] HGSS_GrassHeadbutt_Locations = + { // Locations with headbutt trees adjacent to tall grass tiles + 137, // Mt. Silver + 149, // Route 1 + 150, // Route 2 + 151, // Route 3 + 152, // Route 4 + 153, // Route 5 + 154, // Route 6 + 155, // Route 7 + 159, // Route 11 + 161, // Route 13 + 163, // Route 15 + 164, // Route 16 + 169, // Route 21 + 170, // Route 22 + 174, // Route 26 + 175, // Route 27 + 176, // Route 28 + 177, // Route 29 + 178, // Route 30 + 179, // Route 31 + 180, // Route 32 + 181, // Route 33 + 182, // Route 34 + 183, // Route 35 + 184, // Route 36 + 185, // Route 37 + 186, // Route 38 + 187, // Route 39 + 191, // Route 43 + 192, // Route 44 + 194, // Route 46 + 195, // Route 47 + 196, // Route 48 + 219, // Mt. Silver Cave + 224, // Viridian Forest + }; + private static readonly int[] HGSS_MtSilverCaveExteriorEncounters = + { + 2, 3 + }; + private static readonly int[] HGSS_MixInteriorExteriorLocations = + { + 209, // Ruins of Alph + 219, // Mt. Silver Cave + }; + #endregion + #region Pokéwalker Encounter + // all pkm are in Poke Ball and have a met location of "PokeWalker" + private static readonly EncounterStatic[] Encounter_PokeWalker = + { + // 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 + new EncounterStatic{ Species = 084, Gender = 1, Level = 08, }, // Doduo + new EncounterStatic{ Species = 115, Gender = 1, Level = 08, }, // Kangaskhan + new EncounterStatic{ Species = 029, Gender = 1, Level = 05, }, // Nidoran1 + new EncounterStatic{ Species = 032, Gender = 0, Level = 05, }, // Nidoran0 + new EncounterStatic{ Species = 016, Gender = 0, Level = 05, }, // Pidgey + new EncounterStatic{ Species = 161, Gender = 1, Level = 05, }, // Sentret + new EncounterStatic{ Species = 202, Gender = 1, Level = 15, }, // Wobbuffet + new EncounterStatic{ Species = 069, Gender = 1, Level = 08, }, // Bellsprout + new EncounterStatic{ Species = 046, Gender = 1, Level = 06, }, // Paras + new EncounterStatic{ Species = 048, Gender = 0, Level = 06, }, // Venonat + new EncounterStatic{ Species = 021, Gender = 0, Level = 05, }, // Spearow + new EncounterStatic{ Species = 043, Gender = 1, Level = 05, }, // Oddish + new EncounterStatic{ Species = 095, Gender = 0, Level = 09, }, // Onix + new EncounterStatic{ Species = 240, Gender = 0, Level = 09, Moves = new[]{241},}, // Magby: Sunny Day + new EncounterStatic{ Species = 066, Gender = 1, Level = 07, }, // Machop + new EncounterStatic{ Species = 077, Gender = 1, Level = 07, }, // Ponyta + new EncounterStatic{ Species = 074, Gender = 1, Level = 08, Moves = new[]{189},}, // Geodude: Mud-Slap + new EncounterStatic{ Species = 163, Gender = 1, Level = 06, }, // Hoothoot + new EncounterStatic{ Species = 054, Gender = 1, Level = 10, }, // Psyduck + new EncounterStatic{ Species = 120, Gender = 2, Level = 10, }, // Staryu + new EncounterStatic{ Species = 060, Gender = 0, Level = 08, }, // Poliwag + new EncounterStatic{ Species = 079, Gender = 0, Level = 08, }, // Slowpoke + new EncounterStatic{ Species = 191, Gender = 1, Level = 06, }, // Sunkern + new EncounterStatic{ Species = 194, Gender = 0, Level = 06, }, // Wooper + new EncounterStatic{ Species = 081, Gender = 2, Level = 11, }, // Magnemite + new EncounterStatic{ Species = 239, Gender = 0, Level = 11, Moves = new[]{009},}, // Elekid: Thunder Punch + new EncounterStatic{ Species = 081, Gender = 2, Level = 08, }, // Magnemite + new EncounterStatic{ Species = 198, Gender = 1, Level = 11, }, // Murkrow + new EncounterStatic{ Species = 019, Gender = 1, Level = 07, }, // Rattata + new EncounterStatic{ Species = 163, Gender = 1, Level = 07, }, // Hoothoot + new EncounterStatic{ Species = 092, Gender = 1, Level = 15, Moves = new[]{194},}, // Gastly: Destiny Bond + new EncounterStatic{ Species = 238, Gender = 1, Level = 12, Moves = new[]{419},}, // Smoochum: Avalanche + new EncounterStatic{ Species = 092, Gender = 1, Level = 10, }, // Gastly + new EncounterStatic{ Species = 095, Gender = 0, Level = 10, }, // Onix + new EncounterStatic{ Species = 041, Gender = 0, Level = 08, }, // Zubat + new EncounterStatic{ Species = 066, Gender = 0, Level = 08, }, // Machop + new EncounterStatic{ Species = 060, Gender = 1, Level = 15, Moves = new[]{187}, }, // Poliwag: Belly Drum + new EncounterStatic{ Species = 147, Gender = 1, Level = 10, }, // Dratini + new EncounterStatic{ Species = 090, Gender = 1, Level = 12, }, // Shellder + new EncounterStatic{ Species = 098, Gender = 0, Level = 12, Moves = new[]{152}, }, // Krabby: Crabhammer + new EncounterStatic{ Species = 072, Gender = 1, Level = 09, }, // Tentacool + new EncounterStatic{ Species = 118, Gender = 1, Level = 09, }, // Goldeen + new EncounterStatic{ Species = 063, Gender = 1, Level = 15, }, // Abra + new EncounterStatic{ Species = 100, Gender = 2, Level = 15, }, // Voltorb + new EncounterStatic{ Species = 088, Gender = 0, Level = 13, }, // Grimer + new EncounterStatic{ Species = 109, Gender = 1, Level = 13, Moves = new[]{120}, }, // Koffing: Self-Destruct + new EncounterStatic{ Species = 019, Gender = 1, Level = 16, }, // Rattata + new EncounterStatic{ Species = 162, Gender = 0, Level = 15, }, // Furret + // Hoenn Courses + new EncounterStatic{ Species = 264, Gender = 1, Level = 30, }, // Linoone + new EncounterStatic{ Species = 300, Gender = 1, Level = 30, }, // Skitty + new EncounterStatic{ Species = 313, Gender = 0, Level = 25, }, // Volbeat + new EncounterStatic{ Species = 314, Gender = 1, Level = 25, }, // Illumise + new EncounterStatic{ Species = 263, Gender = 1, Level = 17, }, // Zigzagoon + new EncounterStatic{ Species = 265, Gender = 1, Level = 15, }, // Wurmple + new EncounterStatic{ Species = 298, Gender = 1, Level = 20, }, // Azurill + new EncounterStatic{ Species = 320, Gender = 1, Level = 31, }, // Wailmer + new EncounterStatic{ Species = 116, Gender = 1, Level = 20, }, // Horsea + new EncounterStatic{ Species = 318, Gender = 1, Level = 26, }, // Carvanha + new EncounterStatic{ Species = 118, Gender = 1, Level = 22, Moves = new[]{401}, }, // Goldeen: Aqua Tail + new EncounterStatic{ Species = 129, Gender = 1, Level = 15, }, // Magikarp + new EncounterStatic{ Species = 218, Gender = 1, Level = 31, }, // Slugma + new EncounterStatic{ Species = 307, Gender = 0, Level = 32, }, // Meditite + new EncounterStatic{ Species = 111, Gender = 0, Level = 25, }, // Rhyhorn + new EncounterStatic{ Species = 228, Gender = 0, Level = 27, }, // Houndour + new EncounterStatic{ Species = 074, Gender = 0, Level = 29, }, // Geodude + new EncounterStatic{ Species = 077, Gender = 1, Level = 19, }, // Ponyta + new EncounterStatic{ Species = 351, Gender = 1, Level = 30, }, // Castform + new EncounterStatic{ Species = 352, Gender = 0, Level = 30, }, // Kecleon + new EncounterStatic{ Species = 203, Gender = 1, Level = 28, }, // Girafarig + new EncounterStatic{ Species = 234, Gender = 1, Level = 28, }, // Stantler + new EncounterStatic{ Species = 044, Gender = 1, Level = 14, }, // Gloom + new EncounterStatic{ Species = 070, Gender = 0, Level = 13, }, // Weepinbell + new EncounterStatic{ Species = 105, Gender = 1, Level = 30, Moves = new[]{037}, }, // Marowak: Tharsh + new EncounterStatic{ Species = 128, Gender = 0, Level = 30, }, // Tauros + new EncounterStatic{ Species = 042, Gender = 0, Level = 33, }, // Golbat + new EncounterStatic{ Species = 177, Gender = 1, Level = 24, }, // Natu + new EncounterStatic{ Species = 066, Gender = 0, Level = 13, Moves = new[]{418}, }, // Machop: Bullet Punch + new EncounterStatic{ Species = 092, Gender = 1, Level = 15, }, // Gastly + // Sinnoh Courses + new EncounterStatic{ Species = 415, Gender = 0, Level = 30, }, // Combee + new EncounterStatic{ Species = 439, Gender = 0, Level = 29, }, // Mime Jr. + new EncounterStatic{ Species = 403, Gender = 1, Level = 33, }, // Shinx + new EncounterStatic{ Species = 406, Gender = 0, Level = 30, }, // Budew + new EncounterStatic{ Species = 399, Gender = 1, Level = 13, }, // Bidoof + new EncounterStatic{ Species = 401, Gender = 0, Level = 15, }, // Kricketot + new EncounterStatic{ Species = 361, Gender = 1, Level = 28, }, // Snorunt + new EncounterStatic{ Species = 459, Gender = 0, Level = 31, Moves = new[]{452}, }, // Snover: Wood Hammer + new EncounterStatic{ Species = 215, Gender = 0, Level = 28, Moves = new[]{306}, }, // Sneasel: Crash Claw + new EncounterStatic{ Species = 436, Gender = 2, Level = 20, }, // Bronzor + new EncounterStatic{ Species = 179, Gender = 1, Level = 15, }, // Mareep + new EncounterStatic{ Species = 220, Gender = 1, Level = 16, }, // Swinub + new EncounterStatic{ Species = 357, Gender = 1, Level = 35, }, // Tropius + new EncounterStatic{ Species = 438, Gender = 0, Level = 30, }, // Bonsly + new EncounterStatic{ Species = 114, Gender = 1, Level = 30, }, // Tangela + new EncounterStatic{ Species = 400, Gender = 1, Level = 30, }, // Bibarel + new EncounterStatic{ Species = 102, Gender = 1, Level = 17, }, // Exeggcute + new EncounterStatic{ Species = 179, Gender = 0, Level = 19, }, // Mareep + new EncounterStatic{ Species = 200, Gender = 1, Level = 32, Moves = new[]{194},}, // Misdreavus: Destiny Bond + new EncounterStatic{ Species = 433, Gender = 0, Level = 22, Moves = new[]{105},}, // Chingling: Recover + new EncounterStatic{ Species = 093, Gender = 0, Level = 25, }, // Haunter + new EncounterStatic{ Species = 418, Gender = 0, Level = 28, Moves = new[]{226},}, // Buizel: Baton Pass + new EncounterStatic{ Species = 170, Gender = 1, Level = 17, }, // Chinchou + new EncounterStatic{ Species = 223, Gender = 1, Level = 19, }, // Remoraid + new EncounterStatic{ Species = 422, Gender = 1, Level = 30, }, // Shellos + new EncounterStatic{ Species = 456, Gender = 1, Level = 26, }, // Finneon + new EncounterStatic{ Species = 086, Gender = 1, Level = 27, }, // Seel + new EncounterStatic{ Species = 129, Gender = 1, Level = 30, }, // Magikarp + new EncounterStatic{ Species = 054, Gender = 1, Level = 22, }, // Psyduck + new EncounterStatic{ Species = 090, Gender = 0, Level = 20, }, // Shellder + new EncounterStatic{ Species = 025, Gender = 1, Level = 30, }, // Pikachu + new EncounterStatic{ Species = 417, Gender = 1, Level = 33, }, // Pachirisu + new EncounterStatic{ Species = 035, Gender = 1, Level = 31, }, // Clefairy + new EncounterStatic{ Species = 039, Gender = 1, Level = 30, }, // Jigglypuff + new EncounterStatic{ Species = 183, Gender = 1, Level = 25, }, // Marill + new EncounterStatic{ Species = 187, Gender = 1, Level = 25, }, // Hoppip + new EncounterStatic{ Species = 442, Gender = 0, Level = 31, }, // Spiritomb + new EncounterStatic{ Species = 446, Gender = 0, Level = 33, }, // Munchlax + new EncounterStatic{ Species = 349, Gender = 0, Level = 30, }, // Feebas + new EncounterStatic{ Species = 433, Gender = 1, Level = 26, }, // Chingling + new EncounterStatic{ Species = 042, Gender = 0, Level = 33, }, // Golbat + new EncounterStatic{ Species = 164, Gender = 1, Level = 30, }, // Noctowl + // Special Courses + new EncounterStatic{ Species = 120, Gender = 2, Level = 18, Moves = new[]{113}, }, // Staryu: Light Screen + new EncounterStatic{ Species = 224, Gender = 1, Level = 19, Moves = new[]{324}, }, // Octillery: Signal Beam + new EncounterStatic{ Species = 116, Gender = 0, Level = 15, }, // Horsea + new EncounterStatic{ Species = 222, Gender = 1, Level = 16, }, // Corsola + new EncounterStatic{ Species = 170, Gender = 1, Level = 12, }, // Chinchou + new EncounterStatic{ Species = 223, Gender = 0, Level = 14, }, // Remoraid + new EncounterStatic{ Species = 035, Gender = 0, Level = 08, Moves = new[]{236}, }, // Clefairy: Moonlight + new EncounterStatic{ Species = 039, Gender = 0, Level = 10, }, // Jigglypuff + new EncounterStatic{ Species = 041, Gender = 0, Level = 09, }, // Zubat + new EncounterStatic{ Species = 163, Gender = 1, Level = 06, }, // Hoothoot + new EncounterStatic{ Species = 074, Gender = 0, Level = 05, }, // Geodude + new EncounterStatic{ Species = 095, Gender = 1, Level = 05, Moves = new[]{088}, }, // Onix: Rock Throw + new EncounterStatic{ Species = 025, Gender = 0, Level = 15, Moves = new[]{019}, }, // Pikachu: Fly + new EncounterStatic{ Species = 025, Gender = 1, Level = 14, Moves = new[]{057}, }, // Pikachu: Surf + new EncounterStatic{ Species = 025, Gender = 1, Level = 12, Moves = new[]{344}, }, // Pikachu: Volt Tackle + new EncounterStatic{ Species = 025, Gender = 0, Level = 13, Moves = new[]{175}, }, // Pikachu: Flail + new EncounterStatic{ Species = 025, Gender = 0, Level = 10, }, // Pikachu + new EncounterStatic{ Species = 025, Gender = 1, Level = 10, }, // Pikachu + new EncounterStatic{ Species = 302, Gender = 1, Level = 15, }, // Sableye + new EncounterStatic{ Species = 441, Gender = 0, Level = 15, }, // Chatot + new EncounterStatic{ Species = 025, Gender = 1, Level = 10, }, // Pikachu + new EncounterStatic{ Species = 453, Gender = 0, Level = 10, }, // Croagunk + new EncounterStatic{ Species = 417, Gender = 0, Level = 05, }, // Pachirisu + new EncounterStatic{ Species = 427, Gender = 1, Level = 05, }, // Buneary + new EncounterStatic{ Species = 133, Gender = 0, Level = 10, }, // Eevee + new EncounterStatic{ Species = 255, Gender = 0, Level = 10, }, // Torchic + new EncounterStatic{ Species = 061, Gender = 1, Level = 15, Moves = new[]{003}, }, // Poliwhirl: Double Slap + new EncounterStatic{ Species = 279, Gender = 0, Level = 15, }, // Pelipper + new EncounterStatic{ Species = 025, Gender = 1, Level = 08, }, // Pikachu + new EncounterStatic{ Species = 052, Gender = 0, Level = 10, }, // Meowth + new EncounterStatic{ Species = 374, Gender = 2, Level = 05, Moves = new[]{428,334,442}, }, // Beldum: Zen Headbutt, Iron Defense & Iron Head. + new EncounterStatic{ Species = 446, Gender = 0, Level = 05, Moves = new[]{120}, }, // Munchlax: Self-Destruct + new EncounterStatic{ Species = 116, Gender = 0, Level = 05, Moves = new[]{330}, }, // Horsea: Muddy Water + new EncounterStatic{ Species = 355, Gender = 0, Level = 05, Moves = new[]{286}, }, // Duskull: Imprison + new EncounterStatic{ Species = 129, Gender = 0, Level = 05, Moves = new[]{340}, }, // Magikarp: Bounce + new EncounterStatic{ Species = 436, Gender = 2, Level = 05, Moves = new[]{433}, }, // Bronzor: Trick Room + new EncounterStatic{ Species = 239, Gender = 0, Level = 05, }, // Elekid + new EncounterStatic{ Species = 240, Gender = 0, Level = 05, }, // Magby + new EncounterStatic{ Species = 238, Gender = 1, Level = 05, }, // Smoochum + new EncounterStatic{ Species = 440, Gender = 1, Level = 05, }, // Happiny + new EncounterStatic{ Species = 173, Gender = 1, Level = 05, }, // Cleffa + new EncounterStatic{ Species = 174, Gender = 0, Level = 05, }, // Igglybuff + }; + #endregion + #region Static Encounter/Gift Tables + private static readonly int[] Roaming_MetLocation_DPPt_Grass = + { + // Routes 201-218, 221-222 can be encountered in grass + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, + 47, // Valley Windworks + 49, // Fuego Ironworks + }; + private static readonly int[] Roaming_MetLocation_DPPt_Surf = + { + // Routes 203-205, 208-210, 212-214, 218-222 can be encountered in water + 18, 19, 20, 23, 24, 25, 27, 28, 29, 33, + 34, 35, 36, 37, + 47, // Valley Windworks + 49, // Fuego Ironworks + }; + private static readonly EncounterStaticTyped[] Encounter_DPPt_Roam_Grass = + { + new EncounterStaticTyped { Species = 481, Level = 50, Roaming = true, TypeEncounter = EncounterType.TallGrass }, // Mesprit + new EncounterStaticTyped { Species = 488, Level = 50, Roaming = true, TypeEncounter = EncounterType.TallGrass }, // Cresselia + new EncounterStaticTyped { Species = 144, Level = 60, Roaming = true, TypeEncounter = EncounterType.TallGrass, Version = GameVersion.Pt }, // Articuno + new EncounterStaticTyped { Species = 145, Level = 60, Roaming = true, TypeEncounter = EncounterType.TallGrass, Version = GameVersion.Pt }, // Zapdos + new EncounterStaticTyped { Species = 146, Level = 60, Roaming = true, TypeEncounter = EncounterType.TallGrass, Version = GameVersion.Pt }, // Moltres + }; + private static readonly EncounterStaticTyped[] Encounter_DPPt_Roam_Surf = + { + new EncounterStaticTyped { Species = 481, Level = 50, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing }, // Mesprit + new EncounterStaticTyped { Species = 488, Level = 50, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing }, // Cresselia + new EncounterStaticTyped { Species = 144, Level = 60, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, Version = GameVersion.Pt }, // Articuno + new EncounterStaticTyped { Species = 145, Level = 60, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, Version = GameVersion.Pt }, // Zapdos + new EncounterStaticTyped { Species = 146, Level = 60, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, Version = GameVersion.Pt }, // Moltres + }; + private static readonly EncounterStatic[] Encounter_DPPt_Regular = + { + //Starters + new EncounterStaticTyped { Gift = true, Species = 387, Level = 5, Location = 076, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Turtwig @ Lake Verity + new EncounterStaticTyped { Gift = true, Species = 390, Level = 5, Location = 076, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Chimchar + new EncounterStaticTyped { Gift = true, Species = 393, Level = 5, Location = 076, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Piplup + new EncounterStaticTyped { Gift = true, Species = 387, Level = 5, Location = 016, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Turtwig @ Route 201 + new EncounterStaticTyped { Gift = true, Species = 390, Level = 5, Location = 016, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Chimchar + new EncounterStaticTyped { Gift = true, Species = 393, Level = 5, Location = 016, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Piplup + //Fossil @ Mining Museum + new EncounterStaticTyped { Gift = true, Species = 138, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Omanyte + new EncounterStaticTyped { Gift = true, Species = 140, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Kabuto + new EncounterStaticTyped { Gift = true, Species = 142, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Aerodactyl + new EncounterStaticTyped { Gift = true, Species = 345, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Lileep + new EncounterStaticTyped { Gift = true, Species = 347, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP}, // Anorith + new EncounterStaticTyped { Gift = true, Species = 408, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Cranidos + new EncounterStaticTyped { Gift = true, Species = 410, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Shieldon + new EncounterStaticTyped { Gift = true, Species = 138, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Omanyte + new EncounterStaticTyped { Gift = true, Species = 140, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Kabuto + new EncounterStaticTyped { Gift = true, Species = 142, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Aerodactyl + new EncounterStaticTyped { Gift = true, Species = 345, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Lileep + new EncounterStaticTyped { Gift = true, Species = 347, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt}, // Anorith + new EncounterStaticTyped { Gift = true, Species = 408, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Cranidos + new EncounterStaticTyped { Gift = true, Species = 410, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Shieldon + //Gift + new EncounterStaticTyped { Gift = true, Species = 133, Level = 05, Location = 010, Version = GameVersion.DP, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, }, //Eevee @ Hearthome City + new EncounterStaticTyped { Gift = true, Species = 133, Level = 20, Location = 010, Version = GameVersion.Pt, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, //Eevee @ Hearthome City + new EncounterStaticTyped { Gift = true, Species = 137, Level = 25, Location = 012, Version = GameVersion.Pt, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, //Porygon @ Veilstone City + new EncounterStatic { Gift = true, Species = 175, Level = 01, EggLocation = 2011, Version = GameVersion.Pt,}, //Togepi Egg from Cynthia + new EncounterStatic { Gift = true, Species = 440, Level = 01, EggLocation = 2009, Version = GameVersion.DP,}, //Happiny Egg from Traveling Man + new EncounterStatic { Gift = true, Species = 447, Level = 01, EggLocation = 2010, }, //Riolu Egg from Riley + //Stationary + new EncounterStatic { Species = 425, Level = 22, Location = 47, Version = GameVersion.DP },// Drifloon @ Valley Windworks + new EncounterStatic { Species = 425, Level = 15, Location = 47, Version = GameVersion.Pt },// Drifloon @ Valley Windworks + new EncounterStaticTyped { Species = 479, Level = 15, Location = 70, Version = GameVersion.DP, TypeEncounter = EncounterType.Building_EnigmaStone, },// Rotom @ Old Chateau + new EncounterStaticTyped { Species = 479, Level = 20, Location = 70, Version = GameVersion.Pt, TypeEncounter = EncounterType.Building_EnigmaStone, },// Rotom @ Old Chateau + new EncounterStatic { Species = 442, Level = 25, Location = 24 }, // Spiritomb @ Route 209 + //Stationary Lengerdary + new EncounterStaticTyped { Species = 377, Level = 30, Location = 125, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Regirock @ Rock Peak Ruins + new EncounterStaticTyped { Species = 378, Level = 30, Location = 124, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Regice @ Iceberg Ruins + new EncounterStaticTyped { Species = 379, Level = 30, Location = 123, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Registeel @ Iron Ruins + new EncounterStaticTyped { Species = 480, Level = 50, Location = 089, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Uxie @ Acuity Cavern + new EncounterStaticTyped { Species = 482, Level = 50, Location = 088, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Azelf @ Valor Cavern + new EncounterStaticTyped { Species = 483, Level = 47, Location = 051, Version = GameVersion.D, TypeEncounter = EncounterType.DialgaPalkia }, //Dialga @ Spear Pillar + new EncounterStaticTyped { Species = 484, Level = 47, Location = 051, Version = GameVersion.P, TypeEncounter = EncounterType.DialgaPalkia }, //Palkia @ Spear Pillar + new EncounterStaticTyped { Species = 483, Level = 70, Location = 051, Version = GameVersion.Pt, TypeEncounter = EncounterType.DialgaPalkia }, //Dialga @ Spear Pillar + new EncounterStaticTyped { Species = 484, Level = 70, Location = 051, Version = GameVersion.Pt, TypeEncounter = EncounterType.DialgaPalkia }, //Palkia @ Spear Pillar + new EncounterStaticTyped { Species = 485, Level = 70, Location = 084, Version = GameVersion.DP, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Heatran @ Stark Mountain + new EncounterStaticTyped { Species = 485, Level = 50, Location = 084, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Heatran @ Stark Mountain + new EncounterStaticTyped { Species = 486, Level = 70, Location = 064, Version = GameVersion.DP, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Regigigas @ Snowpoint Temple + new EncounterStaticTyped { Species = 486, Level = 01, Location = 064, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Regigigas @ Snowpoint Temple + new EncounterStaticTyped { Species = 487, Level = 70, Location = 062, Version = GameVersion.DP, Form = 0, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Giratina @ Turnback Cave + new EncounterStaticTyped { Species = 487, Level = 47, Location = 117, Version = GameVersion.Pt, Form = 1, TypeEncounter = EncounterType.DistortionWorld_Pt }, //Giratina @ Distortion World + new EncounterStaticTyped { Species = 487, Level = 47, Location = 062, Version = GameVersion.Pt, Form = 0, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Giratina @ Turnback Cave + //Event + new EncounterStaticTyped { Species = 491, Level = 40, Location = 079, Version = GameVersion.DP, TypeEncounter = EncounterType.TallGrass }, //Darkrai @ Newmoon Island (Unreleased in Diamond and Pearl) + new EncounterStaticTyped { Species = 491, Level = 50, Location = 079, Version = GameVersion.Pt, TypeEncounter = EncounterType.TallGrass }, //Darkrai @ Newmoon Island + new EncounterStatic { Species = 492, Form = 0, Level = 30, Location = 063, Fateful = true }, //Shaymin @ Flower Paradise (Unreleased in Diamond and Pearl) + new EncounterStaticTyped { Species = 493, Form = 0, Level = 80, Location = 086, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Arceus @ Hall of Origin (Unreleased) + }; + private static readonly EncounterStatic[] Encounter_DPPt = Encounter_DPPt_Roam_Grass.SelectMany(e => e.Clone(Roaming_MetLocation_DPPt_Grass)).Concat( + Encounter_DPPt_Roam_Surf.SelectMany(e => e.Clone(Roaming_MetLocation_DPPt_Surf))).Concat( + Encounter_DPPt_Regular).ToArray(); + + // Grass 29-39, 42-46, 47, 48 + // Surf 30-32 34-35, 40-45, 47 + // Route 45 innacesible surf + private static readonly int[] Roaming_MetLocation_HGSS_Johto_Grass = + { + // Routes 29-48 can be encountered in grass + // Won't go to routes 40,41,47,48 + 177,178,179,180,181,182,183,184,185,186, + 187, 190,191,192,193,194, + }; + private static readonly int[] Roaming_MetLocation_HGSS_Johto_Surf = + { + // Routes 30-32,34-35,40-45 and 47 can be encountered in water + // Won't go to routes 40,41,47,48 + 178,179,180,182,183,190,191,192,193 + }; + private static readonly EncounterStaticTyped[] Encounter_HGSS_JohtoRoam_Grass = + { + new EncounterStaticTyped { Species = 243, Level = 40, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, // Raikou + new EncounterStaticTyped { Species = 244, Level = 40, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, // Entei + }; + private static readonly EncounterStaticTyped[] Encounter_HGSS_JohtoRoam_Surf = + { + new EncounterStaticTyped { Species = 243, Level = 40, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, // Raikou + new EncounterStaticTyped { Species = 244, Level = 40, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, // Entei + }; + private static readonly int[] Roaming_MetLocation_HGSS_Kanto_Grass = + { + // Route 01-18,21,22,24,26 and 28 can be encountered in grass + // Won't go to route 23 25 27 + 149,150,151,152,153,154,155,156,157,158, + 159,160,161,162,163,164,165,166, + 169,170, 172, 174, 176, + }; + private static readonly int[] Roaming_MetLocation_HGSS_Kanto_Surf = + { + // Route 4,6,9,10,12,13,19-22,24,26 and 28 can be encountered in water + // Won't go to route 23 25 27 + 152,154,157,158,160,161,167,168,169,170, + 172,174,176, + }; + private static readonly EncounterStaticTyped[] Encounter_HGSS_KantoRoam_Grass = + { + new EncounterStaticTyped { Species = 380, Level = 35, Version = GameVersion.HG, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, //Latias + new EncounterStaticTyped { Species = 381, Level = 35, Version = GameVersion.SS, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, //Latios + }; + private static readonly EncounterStaticTyped[] Encounter_HGSS_KantoRoam_Surf = + { + new EncounterStaticTyped { Species = 380, Level = 35, Version = GameVersion.HG, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, //Latias + new EncounterStaticTyped { Species = 381, Level = 35, Version = GameVersion.SS, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, //Latios + }; + internal static readonly EncounterStatic SpikyEaredPichu = new EncounterStaticTyped // 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 = false + }; + private static readonly EncounterStatic[] Encounter_HGSS_Regular = + { + //Starters + new EncounterStaticTyped { Gift = true, Species = 001, Level = 05, Location = 138, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Bulbasaur @ Pallet Town + new EncounterStaticTyped { Gift = true, Species = 004, Level = 05, Location = 138, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Charmander + new EncounterStaticTyped { Gift = true, Species = 007, Level = 05, Location = 138, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Squirtle + new EncounterStaticTyped { Gift = true, Species = 152, Level = 05, Location = 126, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP }, // Chikorita @ New Bark Town + new EncounterStaticTyped { Gift = true, Species = 155, Level = 05, Location = 126, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP }, // Cyndaquil + new EncounterStaticTyped { Gift = true, Species = 158, Level = 05, Location = 126, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP }, // Totodile + new EncounterStaticTyped { Gift = true, Species = 252, Level = 05, Location = 148, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Treecko @ Saffron City + new EncounterStaticTyped { Gift = true, Species = 255, Level = 05, Location = 148, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Torchic + new EncounterStaticTyped { Gift = true, Species = 258, Level = 05, Location = 148, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Mudkip + //Fossil @ Pewter City + new EncounterStaticTyped { Gift = true, Species = 138, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Omanyte + new EncounterStaticTyped { Gift = true, Species = 140, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Kabuto + new EncounterStaticTyped { Gift = true, Species = 142, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Aerodactyl + new EncounterStaticTyped { Gift = true, Species = 345, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Lileep + new EncounterStaticTyped { Gift = true, Species = 347, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Anorith + new EncounterStaticTyped { Gift = true, Species = 408, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Cranidos + new EncounterStaticTyped { Gift = true, Species = 410, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Shieldon + //Gift + new EncounterStaticTyped { Gift = true, Species = 133, Level = 05, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Eevee @ Goldenrod City + new EncounterStaticTyped { Gift = true, Species = 147, Level = 15, Location = 222, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Moves = new[] {245} }, // Dratini @ Dragon's Den (ExtremeSpeed) + new EncounterStaticTyped { Gift = true, Species = 236, Level = 10, Location = 216, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Tyrogue @ Mt. Mortar + new EncounterStatic { Gift = true, Species = 175, Level = 01, EggLocation = 2013, Moves = new[] {326} }, // Togepi Egg from Mr. Pokemon (Extrasensory as Egg move) + new EncounterStatic { Gift = true, Species = 179, Level = 01, EggLocation = 2014, }, // Mareep Egg from Primo + new EncounterStatic { Gift = true, Species = 194, Level = 01, EggLocation = 2014, }, // Wooper Egg from Primo + new EncounterStatic { Gift = true, Species = 218, Level = 01, EggLocation = 2014, }, // Slugma Egg from Primo + // Celadon City Game Corner + new EncounterStaticTyped { Gift = true, Species = 122, Level = 15, Location = 144, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Mr. Mime + new EncounterStaticTyped { Gift = true, Species = 133, Level = 15, Location = 144, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Eevee + new EncounterStaticTyped { Gift = true, Species = 137, Level = 15, Location = 144, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Porygon + // Goldenrod City Game Corner + new EncounterStaticTyped { Gift = true, Species = 063, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Abra + new EncounterStaticTyped { Gift = true, Species = 023, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.HG }, // Ekans + new EncounterStaticTyped { Gift = true, Species = 027, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.SS }, // Sandshrew + new EncounterStaticTyped { Gift = true, Species = 147, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Dratini + // Team Rocket HQ Trap Floor + new EncounterStaticTyped { Species = 100, Level = 23, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, // Voltorb + new EncounterStaticTyped { Species = 074, Level = 21, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, // Geodude + new EncounterStaticTyped { Species = 109, Level = 21, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, // Koffing + + //Stationary + new EncounterStaticTyped { Species = 130, Level = 30, Location = 135, TypeEncounter = EncounterType.Surfing_Fishing, Shiny = true }, //Gyarados @ Lake of Rage + new EncounterStaticTyped { Species = 131, Level = 20, Location = 210, TypeEncounter = EncounterType.Surfing_Fishing, }, //Lapras @ Union Cave Friday Only + new EncounterStaticTyped { Species = 101, Level = 23, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, //Electrode @ Team Rocket HQ + new EncounterStatic { Species = 143, Level = 50, Location = 159, }, //Snorlax @ Route 11 + new EncounterStatic { Species = 143, Level = 50, Location = 160, }, //Snorlax @ Route 12 + new EncounterStatic { Species = 185, Level = 20, Location = 184, }, //Sudowoodo @ Route 36, Encounter does not have type + SpikyEaredPichu, + //Stationary Lengerdary + new EncounterStaticTyped { Species = 144, Level = 50, Location = 203, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Articuno @ Seafoam Islands + new EncounterStatic { Species = 145, Level = 50, Location = 158, }, //Zapdos @ Route 10 + new EncounterStaticTyped { Species = 146, Level = 50, Location = 219, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Moltres @ Mt. Silver Cave + new EncounterStaticTyped { Species = 150, Level = 70, Location = 199, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Mewtwo @ Cerulean Cave + new EncounterStatic { Species = 245, Level = 40, Location = 173, }, //Suicune @ Route 25 + new EncounterStaticTyped { Species = 245, Level = 40, Location = 206, TypeEncounter = EncounterType.Building_EnigmaStone }, //Suicune @ Burned Tower + new EncounterStaticTyped { Species = 249, Level = 45, Location = 218, Version = GameVersion.SS, TypeEncounter = EncounterType.Surfing_Fishing }, //Lugia @ Whirl Islands + new EncounterStaticTyped { Species = 249, Level = 70, Location = 218, Version = GameVersion.HG, TypeEncounter = EncounterType.Surfing_Fishing }, //Lugia @ Whirl Islands + new EncounterStaticTyped { Species = 250, Level = 45, Location = 205, Version = GameVersion.HG, TypeEncounter = EncounterType.Building_EnigmaStone }, //Ho-Oh @ Bell Tower + new EncounterStaticTyped { Species = 250, Level = 70, Location = 205, Version = GameVersion.SS, TypeEncounter = EncounterType.Building_EnigmaStone }, //Ho-Oh @ Bell Tower + new EncounterStaticTyped { Species = 380, Level = 40, Location = 140, Version = GameVersion.SS, TypeEncounter = EncounterType.Building_EnigmaStone }, //Latias @ Pewter City + new EncounterStaticTyped { Species = 381, Level = 40, Location = 140, Version = GameVersion.HG, TypeEncounter = EncounterType.Building_EnigmaStone }, //Latios @ Pewter City + new EncounterStaticTyped { Species = 382, Level = 50, Location = 232, Version = GameVersion.HG, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Kyogre @ Embedded Tower + new EncounterStaticTyped { Species = 383, Level = 50, Location = 232, Version = GameVersion.SS, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Groudon @ Embedded Tower + new EncounterStaticTyped { Species = 384, Level = 50, Location = 232, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Rayquaza @ Embedded Tower + new EncounterStaticTyped { Species = 483, Level = 01, Location = 231, Gift = true, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, //Dialga @ Sinjoh Ruins + new EncounterStaticTyped { Species = 484, Level = 01, Location = 231, Gift = true, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, //Palkia @ Sinjoh Ruins + new EncounterStaticTyped { Species = 487, Level = 01, Location = 231, Gift = true, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Form = 1 }, //Giratina @ Sinjoh Ruins + }; + private static readonly EncounterStatic[] Encounter_HGSS = Encounter_HGSS_KantoRoam_Grass.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Kanto_Grass)).Concat( + Encounter_HGSS_KantoRoam_Surf.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Kanto_Surf))).Concat( + Encounter_HGSS_JohtoRoam_Grass.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Johto_Grass))).Concat( + Encounter_HGSS_JohtoRoam_Surf.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Johto_Surf))).Concat( + Encounter_HGSS_Regular).ToArray(); + #endregion + #region Trade Tables + internal static readonly EncounterTrade[] TradeGift_DPPt = + { + new EncounterTrade { Species = 063, Ability = 1, TID = 25643, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {15,15,15,20,25,25}, Nature = Nature.Quiet,}, // Abra + new EncounterTrade { Species = 441, Ability = 2, TID = 44142, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {15,20,15,25,25,15}, Nature = Nature.Lonely, Contest = new[] {20,20,20,20,20,0} }, // Chatot + new EncounterTrade { Species = 093, Ability = 1, TID = 19248, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {20,25,15,25,15,15}, Nature = Nature.Hasty,}, // Haunter + new EncounterTrade { Species = 129, Ability = 1, TID = 53277, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {15,25,15,20,25,15}, Nature = Nature.Mild}, // Magikarp + }; + internal static readonly EncounterTrade[] TradeGift_HGSS = + { + new EncounterTrade { Species = 095, Ability = 2, TID = 48926, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {25,20,25,15,15,15}, Nature = Nature.Hasty,}, // Onix + new EncounterTrade { Species = 066, Ability = 1, TID = 37460, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {15,25,20,20,15,15}, Nature = Nature.Lonely,}, // Machop + new EncounterTrade { Species = 100, Ability = 2, TID = 29189, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {15,20,15,25,25,15}, Nature = Nature.Hardy,}, // Voltorb + new EncounterTrade { Species = 085, Ability = 1, TID = 00283, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,15,15,15}, Nature = Nature.Impish,}, // Dodrio + new EncounterTrade { Species = 082, Ability = 1, TID = 50082, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {15,20,15,20,20,20}, Nature = Nature.Impish,}, // Magneton + new EncounterTrade { Species = 178, Ability = 1, TID = 15616, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {15,20,15,20,20,20}, Nature = Nature.Modest,}, // Xatu + new EncounterTrade { Species = 025, Ability = 1, TID = 33038, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {20,25,18,31,25,13}, Nature = Nature.Jolly,}, // Pikachu + new EncounterTrade { Species = 374, Ability = 1, TID = 23478, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {28,29,24,23,24,25}, Nature = Nature.Brave,}, // Beldum + new EncounterTrade { Species = 111, Ability = 1, TID = 06845, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {22,31,13,00,22,09}, Nature = Nature.Relaxed, Moves= new[]{422} }, // Rhyhorn + new EncounterTrade { Species = 208, Ability = 1, TID = 26491, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {08,30,28,06,18,20}, Nature = Nature.Brave,}, // Steelix + //Gift + new EncounterTrade { Species = 021, Ability = 1, TID = 01001, SID = 00000, OTGender = 0, Gender = 1, Nature = Nature.Hasty, Level = 20, Location = 183, Moves= new[]{043,031,228,332}},//Webster's Spearow + new EncounterTrade { Species = 213, Ability = 2, TID = 04336, SID = 00001, OTGender = 0, Gender = 0, Nature = Nature.Relaxed, Level = 20, Location = 130, Moves= new[]{132,117,227,219}},//Kirk's Shuckle + }; + #endregion + + #region Alt Slots + + internal static readonly int[] SafariZoneLocation_4 = + { + 52, 202 + }; + + private static readonly EncounterArea[] SlotsDPPPtAlt = + { + new EncounterArea { + Location = 50, // Mount Coronet + Slots = new[] + { + new EncounterSlot { Species = 349, LevelMin = 10, LevelMax = 20, Type = SlotType.Old_Rod }, // Feebas + new EncounterSlot { Species = 349, LevelMin = 10, LevelMax = 20, Type = SlotType.Good_Rod }, // Feebas + new EncounterSlot { Species = 349, LevelMin = 10, LevelMax = 20, Type = SlotType.Super_Rod }, // Feebas + },}, + new EncounterArea { + Location = 53, // Solaceon Ruins + Slots = new int[25].Select((s, i) => new EncounterSlot { Species = 201, LevelMin = 14, LevelMax = 30, Type = SlotType.Grass, Form = i+1 }).ToArray() // B->?, Unown A is loaded from encounters raw file + }, + }; + private static readonly EncounterArea SlotsHGSS_BCC = + + new EncounterArea + { + // Source http://bulbapedia.bulbagarden.net/wiki/Bug-Catching_Contest#Generation_IV + Location = 207, // National Park Catching Contest + Slots = new[] + { + // Bug Contest Pre-National Pokédex + new EncounterSlot { Species = 010, LevelMin = 07, LevelMax = 18, Type = SlotType.BugContest }, // Caterpie + new EncounterSlot { Species = 011, LevelMin = 09, LevelMax = 18, Type = SlotType.BugContest }, // Metapod + new EncounterSlot { Species = 012, LevelMin = 12, LevelMax = 15, Type = SlotType.BugContest }, // Butterfree + new EncounterSlot { Species = 013, LevelMin = 07, LevelMax = 18, Type = SlotType.BugContest }, // Weedle + new EncounterSlot { Species = 014, LevelMin = 09, LevelMax = 18, Type = SlotType.BugContest }, // Kakuna + new EncounterSlot { Species = 015, LevelMin = 12, LevelMax = 15, Type = SlotType.BugContest }, // Beedrill + new EncounterSlot { Species = 046, LevelMin = 10, LevelMax = 17, Type = SlotType.BugContest }, // Paras + new EncounterSlot { Species = 048, LevelMin = 10, LevelMax = 16, Type = SlotType.BugContest }, // Venonat + new EncounterSlot { Species = 123, LevelMin = 13, LevelMax = 14, Type = SlotType.BugContest }, // Scyther + new EncounterSlot { Species = 127, LevelMin = 13, LevelMax = 14, Type = SlotType.BugContest }, // Pinsir + // Bug Contest Tuesday Post-National Pokédex + new EncounterSlot { Species = 010, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Caterpie + new EncounterSlot { Species = 011, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Metapod + new EncounterSlot { Species = 012, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Butterfree + new EncounterSlot { Species = 013, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Weedle + new EncounterSlot { Species = 014, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Kakuna + new EncounterSlot { Species = 015, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Beedrill + new EncounterSlot { Species = 046, LevelMin = 27, LevelMax = 34, Type = SlotType.BugContest }, // Paras + new EncounterSlot { Species = 048, LevelMin = 25, LevelMax = 32, Type = SlotType.BugContest }, // Venonat + new EncounterSlot { Species = 123, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Scyther + new EncounterSlot { Species = 127, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Pinsir + // Bug Contest Thursday and Saturday Post-National Pokédex + new EncounterSlot { Species = 123, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Scyther + new EncounterSlot { Species = 127, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Pinsir + new EncounterSlot { Species = 265, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Wurmple + new EncounterSlot { Species = 401, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Kricketot + new EncounterSlot { Species = 402, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Kricketune + new EncounterSlot { Species = 415, LevelMin = 27, LevelMax = 34, Type = SlotType.BugContest }, // Combee + new EncounterSlot { Species = 290, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Nincada + // Bug Contest Thursday Post-National Pokédex + new EncounterSlot { Species = 266, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Silcoon + new EncounterSlot { Species = 269, LevelMin = 25, LevelMax = 32, Type = SlotType.BugContest }, // Dustox + new EncounterSlot { Species = 313, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Volbear + // Bug Contest Saturday Post-National Pokédex + new EncounterSlot { Species = 268, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Cascoon + new EncounterSlot { Species = 267, LevelMin = 25, LevelMax = 32, Type = SlotType.BugContest }, // Beautifly + new EncounterSlot { Species = 314, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Illumise + } + }; + + private static readonly EncounterSlot[] SAFARIZONE_PEAK = + { + new EncounterSlot { Species = 022, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Fearow + new EncounterSlot { Species = 046, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Paras + new EncounterSlot { Species = 074, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Geodude + new EncounterSlot { Species = 075, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Graveler + new EncounterSlot { Species = 080, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Slowbro + new EncounterSlot { Species = 081, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Magnemite + new EncounterSlot { Species = 082, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magneton + new EncounterSlot { Species = 126, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magmar + new EncounterSlot { Species = 126, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Magmar + new EncounterSlot { Species = 202, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wobbuffet + new EncounterSlot { Species = 202, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Wobbuffet + new EncounterSlot { Species = 264, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Linoone + new EncounterSlot { Species = 288, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Vigoroth + new EncounterSlot { Species = 305, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Lairon + new EncounterSlot { Species = 335, LevelMin = 43, LevelMax = 45, Type = SlotType.Grass_Safari }, // Zangoose + new EncounterSlot { Species = 363, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Spheal + new EncounterSlot { Species = 436, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Bronzor + }; + + private static readonly EncounterSlot[] SAFARIZONE_DESERT = + { + new EncounterSlot { Species = 022, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Fearow + new EncounterSlot { Species = 022, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Fearow + new EncounterSlot { Species = 022, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Fearow + new EncounterSlot { Species = 027, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sandshrew + new EncounterSlot { Species = 028, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sandslash + new EncounterSlot { Species = 104, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Cubone + new EncounterSlot { Species = 105, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Marowak + new EncounterSlot { Species = 105, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Marowak + new EncounterSlot { Species = 270, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Lotad + new EncounterSlot { Species = 327, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Spinda + new EncounterSlot { Species = 328, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Trapinch + new EncounterSlot { Species = 329, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Vibrava + new EncounterSlot { Species = 331, LevelMin = 35, LevelMax = 35, Type = SlotType.Grass_Safari }, // Cacnea + new EncounterSlot { Species = 332, LevelMin = 48, LevelMax = 48, Type = SlotType.Grass_Safari }, // Cacturne + new EncounterSlot { Species = 449, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Hippopotas + new EncounterSlot { Species = 455, LevelMin = 48, LevelMax = 48, Type = SlotType.Grass_Safari }, // Carnivine + }; + private static readonly EncounterSlot[] SAFARIZONE_PLAINS = + { + new EncounterSlot { Species = 019, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Rattata + new EncounterSlot { Species = 020, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Raticate + new EncounterSlot { Species = 063, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Abra + new EncounterSlot { Species = 077, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Ponyta + new EncounterSlot { Species = 203, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Girafarig + new EncounterSlot { Species = 203, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Girafarig + new EncounterSlot { Species = 229, LevelMin = 43, LevelMax = 44, Type = SlotType.Grass_Safari }, // Houndoom + new EncounterSlot { Species = 234, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Stantler + new EncounterSlot { Species = 234, LevelMin = 40, LevelMax = 41, Type = SlotType.Grass_Safari }, // Stantler + new EncounterSlot { Species = 235, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Smeargle + new EncounterSlot { Species = 235, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Smeargle + new EncounterSlot { Species = 263, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Zigzagoon + new EncounterSlot { Species = 270, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Lotad + new EncounterSlot { Species = 283, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Surskit + new EncounterSlot { Species = 310, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Manectric + new EncounterSlot { Species = 335, LevelMin = 43, LevelMax = 45, Type = SlotType.Grass_Safari }, // Zangoose + new EncounterSlot { Species = 403, LevelMin = 43, LevelMax = 44, Type = SlotType.Grass_Safari }, // Shinx + }; + + private static readonly EncounterSlot[] SAFARIZONE_MEADOW = + { + new EncounterSlot { Species = 020, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Raticate + new EncounterSlot { Species = 035, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Clefairy + new EncounterSlot { Species = 035, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Clefairy + new EncounterSlot { Species = 039, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Jigglypuff + new EncounterSlot { Species = 060, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 35, LevelMax = 36, Type = SlotType.Super_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 061, LevelMin = 15, LevelMax = 16, Type = SlotType.Old_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 061, LevelMin = 24, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 061, LevelMin = 27, LevelMax = 27, Type = SlotType.Good_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 061, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 074, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Geodude + new EncounterSlot { Species = 113, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Chansey + new EncounterSlot { Species = 129, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Magikarp + new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 130, LevelMin = 28, LevelMax = 28, Type = SlotType.Good_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 130, LevelMin = 42, LevelMax = 42, Type = SlotType.Super_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 130, LevelMin = 45, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 183, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Marill + new EncounterSlot { Species = 183, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Marill + new EncounterSlot { Species = 187, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Hoppip + new EncounterSlot { Species = 188, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Skiploom + new EncounterSlot { Species = 188, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Skiploom + new EncounterSlot { Species = 188, LevelMin = 47, LevelMax = 47, Type = SlotType.Surf_Safari }, // Skiploom + new EncounterSlot { Species = 191, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sunkern + new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wooper + new EncounterSlot { Species = 194, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Wooper + new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Wooper + new EncounterSlot { Species = 273, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Seedot + new EncounterSlot { Species = 274, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Nuzleaf + new EncounterSlot { Species = 274, LevelMin = 47, LevelMax = 48, Type = SlotType.Grass_Safari }, // Nuzleaf + new EncounterSlot { Species = 284, LevelMin = 42, LevelMax = 42, Type = SlotType.Surf_Safari }, // Masquerain + new EncounterSlot { Species = 284, LevelMin = 46, LevelMax = 46, Type = SlotType.Surf_Safari }, // Masquerain + new EncounterSlot { Species = 299, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Nosepass + new EncounterSlot { Species = 447, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Riolu + }; + private static readonly EncounterSlot[] SAFARIZONE_FOREST = + { + new EncounterSlot { Species = 016, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Pidgey + new EncounterSlot { Species = 069, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Bellsprout + new EncounterSlot { Species = 092, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Gastly + new EncounterSlot { Species = 093, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Haunter + new EncounterSlot { Species = 108, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Lickitung + new EncounterSlot { Species = 122, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Mr. Mime + new EncounterSlot { Species = 122, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Mr. Mime + new EncounterSlot { Species = 125, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Electabuzz + new EncounterSlot { Species = 200, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Misdreavus + new EncounterSlot { Species = 200, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Misdreavus + new EncounterSlot { Species = 283, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Surskit + new EncounterSlot { Species = 353, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Shuppet + new EncounterSlot { Species = 374, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Beldum + new EncounterSlot { Species = 399, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Bidoof + new EncounterSlot { Species = 406, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Budew + new EncounterSlot { Species = 437, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Bronzong + }; + private static readonly EncounterSlot[] SAFARIZONE_SWAMP = + { + new EncounterSlot { Species = 039, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Jigglypuff + new EncounterSlot { Species = 046, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Paras + new EncounterSlot { Species = 047, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Parasect + new EncounterSlot { Species = 070, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Weepinbell + new EncounterSlot { Species = 096, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Drowzee + new EncounterSlot { Species = 097, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Hypno + new EncounterSlot { Species = 097, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Hypno + new EncounterSlot { Species = 100, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Voltorb + new EncounterSlot { Species = 118, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Goldeen + new EncounterSlot { Species = 118, LevelMin = 17, LevelMax = 17, Type = SlotType.Old_Rod_Safari }, // Goldeen + new EncounterSlot { Species = 118, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Goldeen + new EncounterSlot { Species = 118, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Goldeen + new EncounterSlot { Species = 119, LevelMin = 17, LevelMax = 17, Type = SlotType.Old_Rod_Safari }, // Seaking + new EncounterSlot { Species = 119, LevelMin = 24, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Seaking + new EncounterSlot { Species = 119, LevelMin = 27, LevelMax = 27, Type = SlotType.Good_Rod_Safari }, // Seaking + new EncounterSlot { Species = 119, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Seaking + new EncounterSlot { Species = 119, LevelMin = 42, LevelMax = 42, Type = SlotType.Surf_Safari }, // Seaking + new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 129, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Magikarp + new EncounterSlot { Species = 147, LevelMin = 36, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Dratini + new EncounterSlot { Species = 147, LevelMin = 29, LevelMax = 29, Type = SlotType.Good_Rod_Safari }, // Dratini + new EncounterSlot { Species = 148, LevelMin = 42, LevelMax = 42, Type = SlotType.Super_Rod_Safari }, // Dragonair + new EncounterSlot { Species = 148, LevelMin = 45, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Dragonair + new EncounterSlot { Species = 161, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sentret + new EncounterSlot { Species = 162, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Furret + new EncounterSlot { Species = 198, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Murkrow + new EncounterSlot { Species = 198, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Murkrow + new EncounterSlot { Species = 198, LevelMin = 47, LevelMax = 47, Type = SlotType.Surf_Safari }, // Murkrow + new EncounterSlot { Species = 355, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Duskull + new EncounterSlot { Species = 355, LevelMin = 48, LevelMax = 48, Type = SlotType.Surf_Safari }, // Duskull + new EncounterSlot { Species = 358, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Chimecho + new EncounterSlot { Species = 371, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Bagon + new EncounterSlot { Species = 417, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Pachirisu + new EncounterSlot { Species = 419, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Floatzel + }; + + private static readonly EncounterSlot[] SAFARIZONE_MARSHLAND = + { + new EncounterSlot { Species = 023, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Ekans + new EncounterSlot { Species = 024, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Arbok + new EncounterSlot { Species = 043, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Oddish + new EncounterSlot { Species = 044, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Gloom + new EncounterSlot { Species = 044, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Gloom + new EncounterSlot { Species = 050, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Diglett + new EncounterSlot { Species = 060, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 16, LevelMax = 16, Type = SlotType.Old_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 18, LevelMax = 18, Type = SlotType.Old_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 061, LevelMin = 22, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 061, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 088, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Grimer + new EncounterSlot { Species = 088, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Grimer + new EncounterSlot { Species = 089, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Muk + new EncounterSlot { Species = 089, LevelMin = 48, LevelMax = 48, Type = SlotType.Surf_Safari }, // Muk + new EncounterSlot { Species = 109, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Koffing + new EncounterSlot { Species = 110, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Weezing + new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 130, LevelMin = 36, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 130, LevelMin = 26, LevelMax = 26, Type = SlotType.Good_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 130, LevelMin = 29, LevelMax = 29, Type = SlotType.Good_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 189, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Jumpluff + new EncounterSlot { Species = 189, LevelMin = 47, LevelMax = 47, Type = SlotType.Surf_Safari }, // Jumpluff + new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wooper + new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Wooper + new EncounterSlot { Species = 195, LevelMin = 43, LevelMax = 43, Type = SlotType.Surf_Safari }, // Quagsire + new EncounterSlot { Species = 213, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Shuckle + new EncounterSlot { Species = 315, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Roselia + new EncounterSlot { Species = 336, LevelMin = 47, LevelMax = 48, Type = SlotType.Grass_Safari }, // Seviper + new EncounterSlot { Species = 339, LevelMin = 42, LevelMax = 42, Type = SlotType.Super_Rod_Safari }, // Barboach + new EncounterSlot { Species = 339, LevelMin = 45, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Barboach + new EncounterSlot { Species = 354, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Banette + new EncounterSlot { Species = 453, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Croagunk + new EncounterSlot { Species = 455, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Carnivine + }; + private static readonly EncounterSlot[] SAFARIZONE_MOUNTAIN = + { + new EncounterSlot { Species = 019, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Rattata + new EncounterSlot { Species = 020, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Raticate + new EncounterSlot { Species = 041, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Zubat + new EncounterSlot { Species = 042, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Golbat + new EncounterSlot { Species = 082, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magneton + new EncounterSlot { Species = 082, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Magneton + new EncounterSlot { Species = 098, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Krabby + new EncounterSlot { Species = 108, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Lickitung + new EncounterSlot { Species = 246, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Larvitar + new EncounterSlot { Species = 246, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Larvitar + new EncounterSlot { Species = 307, LevelMin = 43, LevelMax = 44, Type = SlotType.Grass_Safari }, // Meditite + new EncounterSlot { Species = 313, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Volbeat + new EncounterSlot { Species = 337, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Lunatone + new EncounterSlot { Species = 356, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Dusclops + new EncounterSlot { Species = 364, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Sealeo + new EncounterSlot { Species = 375, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Metang + new EncounterSlot { Species = 433, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Chingling + }; + private static readonly EncounterSlot[] SAFARIZONE_ROCKYBEACH = + { + new EncounterSlot { Species = 041, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Zubat + new EncounterSlot { Species = 060, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Poliwag + new EncounterSlot { Species = 061, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Poliwhirl + new EncounterSlot { Species = 079, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Slowpoke + new EncounterSlot { Species = 080, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Slowbro + new EncounterSlot { Species = 080, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Slowbro + new EncounterSlot { Species = 080, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Slowbro + new EncounterSlot { Species = 084, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Doduo + new EncounterSlot { Species = 085, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Dodrio + new EncounterSlot { Species = 098, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Krabby + new EncounterSlot { Species = 098, LevelMin = 13, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Krabby + new EncounterSlot { Species = 098, LevelMin = 22, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Krabby + new EncounterSlot { Species = 098, LevelMin = 17, LevelMax = 17, Type = SlotType.Old_Rod_Safari }, // Krabby + new EncounterSlot { Species = 098, LevelMin = 18, LevelMax = 18, Type = SlotType.Old_Rod_Safari }, // Krabby + new EncounterSlot { Species = 099, LevelMin = 26, LevelMax = 27, Type = SlotType.Good_Rod_Safari }, // Kingler + new EncounterSlot { Species = 099, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Kingler + new EncounterSlot { Species = 099, LevelMin = 38, LevelMax = 39, Type = SlotType.Super_Rod_Safari }, // Kingler + new EncounterSlot { Species = 118, LevelMin = 13, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Goldeen + new EncounterSlot { Species = 118, LevelMin = 22, LevelMax = 23, Type = SlotType.Good_Rod_Safari }, // Goldeen + new EncounterSlot { Species = 118, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Goldeen + new EncounterSlot { Species = 119, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Seaking + new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 14, Type = SlotType.Old_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 23, Type = SlotType.Good_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 129, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Magikarp + new EncounterSlot { Species = 131, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Lapras + new EncounterSlot { Species = 131, LevelMin = 36, LevelMax = 37, Type = SlotType.Surf_Safari }, // Lapras + new EncounterSlot { Species = 131, LevelMin = 41, LevelMax = 42, Type = SlotType.Surf_Safari }, // Lapras + new EncounterSlot { Species = 131, LevelMin = 46, LevelMax = 47, Type = SlotType.Surf_Safari }, // Lapras + new EncounterSlot { Species = 179, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Mareep + new EncounterSlot { Species = 304, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Aron + new EncounterSlot { Species = 309, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Electrike + new EncounterSlot { Species = 310, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Manectric + new EncounterSlot { Species = 341, LevelMin = 46, LevelMax = 46, Type = SlotType.Super_Rod_Safari }, // Corphish + new EncounterSlot { Species = 341, LevelMin = 48, LevelMax = 48, Type = SlotType.Super_Rod_Safari }, // Corphish + new EncounterSlot { Species = 406, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Budew + new EncounterSlot { Species = 443, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Gible + }; + private static EncounterSlot[] SAFARIZONE_WASTELAND = + { + new EncounterSlot { Species = 022, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Fearow + new EncounterSlot { Species = 055, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Golduck + new EncounterSlot { Species = 066, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Machop + new EncounterSlot { Species = 067, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Machoke + new EncounterSlot { Species = 067, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Machoke + new EncounterSlot { Species = 069, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Bellsprout + new EncounterSlot { Species = 081, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magnemite + new EncounterSlot { Species = 095, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Onix + new EncounterSlot { Species = 099, LevelMin = 48, LevelMax = 48, Type = SlotType.Grass_Safari }, // Kingler + new EncounterSlot { Species = 115, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Kangaskhan + new EncounterSlot { Species = 286, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Breloom + new EncounterSlot { Species = 308, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Medicham + new EncounterSlot { Species = 310, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Manectric + new EncounterSlot { Species = 314, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Illumise + new EncounterSlot { Species = 338, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Solrock + new EncounterSlot { Species = 451, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Skorupi + }; + private static readonly EncounterSlot[] SAFARIZONE_SAVANNAH = + { + new EncounterSlot { Species = 029, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidoran♀ + new EncounterSlot { Species = 030, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidorina + new EncounterSlot { Species = 032, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidoran♂ + new EncounterSlot { Species = 033, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidorino + new EncounterSlot { Species = 041, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Zubat + new EncounterSlot { Species = 042, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Golbat + new EncounterSlot { Species = 111, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Rhyhorn + new EncounterSlot { Species = 111, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Rhyhorn + new EncounterSlot { Species = 112, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Rhydon + new EncounterSlot { Species = 128, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Tauros + new EncounterSlot { Species = 128, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Tauros + new EncounterSlot { Species = 228, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Houndour + new EncounterSlot { Species = 263, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Zigzagoon + new EncounterSlot { Species = 285, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Shroomish + new EncounterSlot { Species = 298, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Azurill + new EncounterSlot { Species = 324, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Torkoal + new EncounterSlot { Species = 332, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Cacturne + new EncounterSlot { Species = 404, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Luxio + }; + private static readonly EncounterSlot[] SAFARIZONE_WETLAND = + { + new EncounterSlot { Species = 021, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Spearow + new EncounterSlot { Species = 054, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Psyduck + new EncounterSlot { Species = 054, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Psyduck + new EncounterSlot { Species = 055, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Golduck + new EncounterSlot { Species = 055, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Golduck + new EncounterSlot { Species = 055, LevelMin = 37, LevelMax = 37, Type = SlotType.Surf_Safari }, // Golduck + new EncounterSlot { Species = 055, LevelMin = 45, LevelMax = 45, Type = SlotType.Surf_Safari }, // Golduck + new EncounterSlot { Species = 060, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Poliwag + new EncounterSlot { Species = 060, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Poliwag + new EncounterSlot { Species = 061, LevelMin = 17, LevelMax = 18, Type = SlotType.Old_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 061, LevelMin = 23, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 061, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Poliwhirl + new EncounterSlot { Species = 083, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Farfetch'd + new EncounterSlot { Species = 083, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Farfetch'd + new EncounterSlot { Species = 084, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Doduo + new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp + new EncounterSlot { Species = 130, LevelMin = 44, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 130, LevelMin = 47, LevelMax = 48, Type = SlotType.Super_Rod_Safari }, // Gyarados + new EncounterSlot { Species = 132, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Ditto + new EncounterSlot { Species = 132, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Ditto + new EncounterSlot { Species = 161, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sentret + new EncounterSlot { Species = 162, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Furret + new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wooper + new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Wooper + new EncounterSlot { Species = 195, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Quagsire + new EncounterSlot { Species = 195, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Quagsire + new EncounterSlot { Species = 195, LevelMin = 37, LevelMax = 37, Type = SlotType.Surf_Safari }, // Quagsire + new EncounterSlot { Species = 271, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Lombre + new EncounterSlot { Species = 283, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Surskit + new EncounterSlot { Species = 341, LevelMin = 26, LevelMax = 26, Type = SlotType.Good_Rod_Safari }, // Corphish + new EncounterSlot { Species = 341, LevelMin = 28, LevelMax = 28, Type = SlotType.Good_Rod_Safari }, // Corphish + new EncounterSlot { Species = 372, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Shelgon + new EncounterSlot { Species = 417, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Pachirisu + new EncounterSlot { Species = 418, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Buizel + }; + + private static EncounterSlot[] ConcatAll(params EncounterSlot[][] arr) => arr.SelectMany(z => z).ToArray(); + private static readonly EncounterArea SlotsHGSS_SafariZone = new EncounterArea + { + // Source http://bulbapedia.bulbagarden.net/wiki/Johto_Safari_Zone#Pok.C3.A9mon + // Supplement http://www.psypokes.com/hgss/safari_areas.php + Location = 202, // Johto Safari Zone + Slots = ConcatAll( + SAFARIZONE_PEAK, + SAFARIZONE_DESERT, + SAFARIZONE_PLAINS, + SAFARIZONE_MEADOW, + SAFARIZONE_FOREST, + SAFARIZONE_SWAMP, + SAFARIZONE_MARSHLAND, + SAFARIZONE_MOUNTAIN, + SAFARIZONE_ROCKYBEACH, + SAFARIZONE_WASTELAND, + SAFARIZONE_SAVANNAH, + SAFARIZONE_WETLAND) + }; + private static readonly EncounterArea[] SlotsHGSSAlt = + { + new EncounterArea { + Location = 209, // Ruins of Alph + Slots = new int[25].Select((s, i) => new EncounterSlot { Species = 201, LevelMin = 5, LevelMax = 5, Type = SlotType.Grass, Form = i+1 }).ToArray() // B->?, Unown A is loaded from encounters raw file + }, + SlotsHGSS_SafariZone, + //Some edge cases + new EncounterArea + { + Location = 219, // Mt. Silver Cave 1F + Slots = new[]{new EncounterSlot { Species = 130, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod },}, // Gyarados at night + }, + }; + + private static readonly EncounterArea SlotsPt_HoneyTree = new EncounterArea + { + Slots = new[] + { + new EncounterSlot {Species = 190, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Aipom + new EncounterSlot {Species = 214, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Heracross + new EncounterSlot {Species = 265, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Wurmple + new EncounterSlot {Species = 412, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree, Form = 0}, // Burmy Plant Cloak + new EncounterSlot {Species = 415, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Combee + new EncounterSlot {Species = 420, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Cheruby + new EncounterSlot {Species = 446, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Munchlax + }, + }; + + private static readonly EncounterArea SlotsD_HoneyTree = new EncounterArea + { + Slots = SlotsPt_HoneyTree.Slots.Concat(new[] + { + new EncounterSlot {Species = 266, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Silcoon + }).ToArray() + }; + + private static readonly EncounterArea SlotsP_HoneyTree = new EncounterArea + { + Slots = SlotsPt_HoneyTree.Slots.Concat(new[] + { + new EncounterSlot {Species = 268, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree}, // Cascoon + }).ToArray() + }; + + private static readonly int[] TrophyDP = { 035, 039, 052, 113, 133, 137, 173, 174, 183, 298, 311, 312, 351, 438, 439, 440 }; // Porygon + private static readonly int[] TrophyPt = { 035, 039, 052, 113, 133, 132, 173, 174, 183, 298, 311, 312, 351, 438, 439, 440 }; // Ditto + + private static readonly int[] DP_GreatMarshAlt_Species = + { + // Daily changing Pokemon are not in the raw data http://bulbapedia.bulbagarden.net/wiki/Great_Marsh + 055,315,397,451,453,455, + 183,194,195,298,399,400, // Pre-National Pokédex + 046,102,115,193,285,316,452,454 // Post-National Pokédex + }; + private static readonly EncounterArea[] DP_GreatMarshAlt = EncounterArea.GetSimpleEncounterArea(DP_GreatMarshAlt_Species, new[] { 22, 22, 24, 24, 26, 26 }, 52, SlotType.Grass_Safari); + + private static readonly int[] Pt_GreatMarshAlt_Species = + { + 114,193,195,357,451,453,455, + 194, // Pre-National Pokédex + 046,102,115,285,316,352,452,454 // Post-National Pokédex + }; + private static readonly EncounterArea[] Pt_GreatMarshAlt = EncounterArea.GetSimpleEncounterArea(Pt_GreatMarshAlt_Species, new[] { 27, 30 }, 52, SlotType.Grass_Safari); + + private static readonly int[] Shellos_EastSeaLocation_DP = + { + 28, // Route 213 + 39, // Route 224 + }; + + private static readonly int[] Shellos_EastSeaLocation_Pt = + { + 11, // Pastoria City + 27, // Route 212 + 28, // Route 213 + }; + + private static readonly int[] Gastrodon_EastSeaLocation_DP = + { + 37, // Route 222 + 39, // Route 224 + 45, // Route 230 + }; + + private static readonly int[] Gastrodon_EastSeaLocation_Pt = + { + 11, // Pastoria City + 27, // Route 212 + 28, // Route 213 + 39, // Route 224 + 45, // Route 230 + }; + + private static readonly int[] HoneyTreesLocation = + { + 20, // Route 205 + 21, // Route 206 + 22, // Route 207 + 23, // Route 208 + 24, // Route 209 + 25, // Route 210 + 26, // Route 211 + 27, // Route 212 + 28, // Route 213 + 29, // Route 214 + 30, // Route 215 + 33, // Route 218 + 36, // Route 221 + 37, // Route 222 + 47, // Valley Windworks + 49, // Fuego Ironworks + 58, // Floaroma Meadow + }; + + private static readonly EncounterArea[] SlotsHGSS_Swarm = + { + new EncounterArea {Location = 128, Slots = new[]{new EncounterSlot {Species = 340, Type = SlotType.Old_Rod }, + new EncounterSlot {Species = 340, Type = SlotType.Good_Rod }, + new EncounterSlot {Species = 340, Type = SlotType.Super_Rod },},}, // Whiscash @ Violet City + new EncounterArea {Location = 143, Slots = new[]{new EncounterSlot {Species = 278, Type = SlotType.Surf },},}, // Wingull @ Vermillion City + new EncounterArea {Location = 149, Slots = new[]{new EncounterSlot {Species = 261, Type = SlotType.Grass },},}, // Poochyena @ Route 1 + new EncounterArea {Location = 160, Slots = new[]{new EncounterSlot {Species = 369, Type = SlotType.Super_Rod },},}, // Relicanth @ Route 12 + new EncounterArea {Location = 161, Slots = new[]{new EncounterSlot {Species = 113, Type = SlotType.Grass },},}, // Chansey @ Route 13 + new EncounterArea {Location = 167, Slots = new[]{new EncounterSlot {Species = 366, Type = SlotType.Surf },},}, // Clamperl @ Route 19 + new EncounterArea {Location = 173, Slots = new[]{new EncounterSlot {Species = 427, Type = SlotType.Grass },},}, // Buneary @ Route 25 + new EncounterArea {Location = 175, Slots = new[]{new EncounterSlot {Species = 370, Type = SlotType.Surf },},}, // Luvdisc @ Route 27 + new EncounterArea {Location = 180, Slots = new[]{new EncounterSlot {Species = 211, Type = SlotType.Super_Rod },},}, // Qwilfish @ Route 32 + new EncounterArea {Location = 182, Slots = new[]{new EncounterSlot {Species = 280, Type = SlotType.Grass },},}, // Ralts @ Route 34 + new EncounterArea {Location = 183, Slots = new[]{new EncounterSlot {Species = 193, Type = SlotType.Grass },},}, // Yanma @ Route 35 + new EncounterArea {Location = 186, Slots = new[]{new EncounterSlot {Species = 209, Type = SlotType.Grass },},}, // Snubbull @ Route 38 + new EncounterArea {Location = 192, Slots = new[]{new EncounterSlot {Species = 223, Type = SlotType.Good_Rod }, + new EncounterSlot {Species = 223, Type = SlotType.Super_Rod },},}, // Remoraid @ Route 44 + new EncounterArea {Location = 193, Slots = new[]{new EncounterSlot {Species = 333, Type = SlotType.Grass },},}, // Swablu @ Route 45 + new EncounterArea {Location = 195, Slots = new[]{new EncounterSlot {Species = 132, Type = SlotType.Grass },},}, // Ditto @ Route 47 + new EncounterArea {Location = 216, Slots = new[]{new EncounterSlot {Species = 183, Type = SlotType.Grass },},}, // Marill @ Mt. Mortar + new EncounterArea {Location = 220, Slots = new[]{new EncounterSlot {Species = 206, Type = SlotType.Grass },},}, // Dunsparce @ Dark Cave + new EncounterArea {Location = 224, Slots = new[]{new EncounterSlot {Species = 401, Type = SlotType.Grass },},}, // Kricketot @ Viridian Forest + }; + private static readonly EncounterArea[] SlotsHG_Swarm = SlotsHGSS_Swarm.Concat(new[] { + new EncounterArea {Location = 151, Slots = new[]{new EncounterSlot {Species = 343, Type = SlotType.Grass },},}, // Baltoy @ Route 3 + new EncounterArea {Location = 157, Slots = new[]{new EncounterSlot {Species = 302, Type = SlotType.Grass },},}, // Sableye @ Route 9 + }).ToArray(); + private static readonly EncounterArea[] SlotsSS_Swarm = SlotsHGSS_Swarm.Concat(new[] { + new EncounterArea {Location = 151, Slots = new[]{new EncounterSlot {Species = 316, Type = SlotType.Grass },},}, // Gulpin @ Route 3 + new EncounterArea {Location = 157, Slots = new[]{new EncounterSlot {Species = 303, Type = SlotType.Grass },},}, // Mawile @ Route 9 + }).ToArray(); + + #endregion + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters5.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters5.cs new file mode 100644 index 000000000..5d3c1086b --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters5.cs @@ -0,0 +1,881 @@ +using System.Collections.Generic; +using System.Linq; +using static PKHeX.Core.EncounterUtil; + +namespace PKHeX.Core +{ + internal static class Encounters5 + { + internal static readonly EncounterArea[] SlotsB, SlotsW, SlotsB2, SlotsW2; + internal static readonly EncounterStatic[] StaticB, StaticW, StaticB2, StaticW2; + + static Encounters5() + { + MarkG5DreamWorld(BW_DreamWorld); + MarkG5DreamWorld(B2W2_DreamWorld); + StaticB = StaticW = Encounter_BW.Concat(BW_DreamWorld).ToArray(); + StaticB2 = StaticW2 = Encounter_B2W2.Concat(B2W2_DreamWorld).ToArray(); + + var BSlots = GetEncounterTables(GameVersion.B); + var WSlots = GetEncounterTables(GameVersion.W); + var B2Slots = GetEncounterTables(GameVersion.B2); + var W2Slots = GetEncounterTables(GameVersion.W2); + MarkG5Slots(ref BSlots); + MarkG5Slots(ref WSlots); + MarkG5Slots(ref B2Slots); + MarkG5Slots(ref W2Slots); + MarkBWSwarmSlots(SlotsB_Swarm); + MarkBWSwarmSlots(SlotsW_Swarm); + MarkB2W2SwarmSlots(SlotsB2_Swarm); + MarkB2W2SwarmSlots(SlotsW2_Swarm); + MarkG5HiddenGrottoSlots(SlotsB2_HiddenGrotto); + MarkG5HiddenGrottoSlots(SlotsW2_HiddenGrotto); + + SlotsB = AddExtraTableSlots(BSlots, SlotsB_Swarm); + SlotsW = AddExtraTableSlots(WSlots, SlotsW_Swarm, WhiteForestSlot); + SlotsB2 = AddExtraTableSlots(B2Slots, SlotsB2_Swarm, SlotsB2_HiddenGrotto); + SlotsW2 = AddExtraTableSlots(W2Slots, SlotsW2_Swarm, SlotsW2_HiddenGrotto); + } + + private static void MarkBWSwarmSlots(EncounterArea[] Areas) + { + foreach (EncounterSlot s in Areas.SelectMany(area => area.Slots)) + { + s.LevelMin = 15; s.LevelMax = 55; s.Type = SlotType.Swarm; + } + } + + private static void MarkB2W2SwarmSlots(EncounterArea[] Areas) + { + foreach (EncounterSlot s in Areas.SelectMany(area => area.Slots)) + { + s.LevelMin = 40; s.LevelMax = 55; s.Type = SlotType.Swarm; + } + } + + private static void MarkG5HiddenGrottoSlots(EncounterArea[] Areas) + { + foreach (EncounterSlot s in Areas[0].Slots) //Only 1 area + s.Type = SlotType.HiddenGrotto; + } + + private static void MarkG5DreamWorld(EncounterStatic[] t) + { + foreach (EncounterStatic s in t) + { + s.Location = 75; //Entree Forest + s.Ability = PersonalTable.B2W2.GetAbilities(s.Species, s.Form)[2] == 0 ? 1 : 4; // Check if has HA + s.Shiny = false; + } + + // Split encounters with multiple permitted special moves -- a pkm can only be obtained with 1 of the special moves! + var list = new List(); + foreach (EncounterStatic s in t) + { + if (s.Moves == null || s.Moves.Length <= 1) // no special moves + { + list.Add(s); + continue; + } + + var loc = s.Location; + for (int i = 0; i < s.Moves.Length; i++) + { + var clone = s.Clone(loc); + clone.Moves = new[] { s.Moves[i] }; + list.Add(clone); + } + } + t = list.ToArray(); + } + + private static void MarkG5Slots(ref EncounterArea[] Areas) + { + foreach (var area in Areas) + { + int ctr = 0; + do + { + for (int i = 0; i < 12; i++) + area.Slots[ctr++].Type = SlotType.Grass; // Single + + for (int i = 0; i < 12; i++) + area.Slots[ctr++].Type = SlotType.Grass; // Double + + for (int i = 0; i < 12; i++) + area.Slots[ctr++].Type = SlotType.Grass; // Shaking + + for (int i = 0; i < 5; i++) // 5 + area.Slots[ctr++].Type = SlotType.Surf; // Surf + + for (int i = 0; i < 5; i++) // 5 + area.Slots[ctr++].Type = SlotType.Surf; // Surf Spot + + for (int i = 0; i < 5; i++) // 5 + area.Slots[ctr++].Type = SlotType.Super_Rod; // Fish + + for (int i = 0; i < 5; i++) // 5 + area.Slots[ctr++].Type = SlotType.Super_Rod; // Fish Spot + } while (ctr != area.Slots.Length); + area.Slots = area.Slots.Where(slot => slot.Species != 0).ToArray(); + } + ReduceAreasSize(ref Areas); + } + + #region Dream Radar Tables + + private static readonly EncounterStatic[] Encounter_DreamRadar = + { + new EncounterStatic { Shiny=false, Species=120, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=137, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=174, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=175, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=213, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=238, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=280, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=333, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=425, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=436, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=442, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=447, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=479,}, // Rotom has no HA + new EncounterStatic { Shiny=false, Species=517, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=561, Ability = 4 }, + new EncounterStatic { Shiny=false, Species=641, Ability = 4, Form = 1}, //Tornadus-T + new EncounterStatic { Shiny=false, Species=642, Ability = 4, Form = 1}, //Thundurus-T + new EncounterStatic { Shiny=false, Species=645, Ability = 4, Form = 1}, //Landorus-T + new EncounterStatic { Shiny=false, Species=249, Ability = 4 }, //SS + new EncounterStatic { Shiny=false, Species=250, Ability = 4 }, //HG + new EncounterStatic { Shiny=false, Species=483, Ability = 4 }, //D + new EncounterStatic { Shiny=false, Species=484, Ability = 4 }, //P + new EncounterStatic { Shiny=false, Species=487, Ability = 4 }, //Pt + new EncounterStatic { Shiny=false, Species=079, Ability = 4 }, //Slowpoke + new EncounterStatic { Shiny=false, Species=163, Ability = 4 }, //Hoothoot + new EncounterStatic { Shiny=false, Species=374, Ability = 4 }, //Beldum + }; + + #endregion + #region DreamWorld Encounter + + private static readonly EncounterStatic[] DreamWorld_Common = + { + // Pleasant forest + new EncounterStatic { Species=019, Level = 10, Moves = new[]{098, 382, 231}, }, //Rattata + new EncounterStatic { Species=043, Level = 10, Moves = new[]{230, 298, 202}, }, //Oddish + new EncounterStatic { Species=069, Level = 10, Moves = new[]{022, 235, 402}, }, //Bellsprout + new EncounterStatic { Species=077, Level = 10, Moves = new[]{033, 037, 257}, }, //Ponyta + new EncounterStatic { Species=083, Level = 10, Moves = new[]{210, 355, 348}, }, //Farfetch'd + new EncounterStatic { Species=084, Level = 10, Moves = new[]{045, 175, 355}, }, //Doduo + new EncounterStatic { Species=102, Level = 10, Moves = new[]{140, 235, 202}, }, //Exeggcute + new EncounterStatic { Species=108, Level = 10, Moves = new[]{122, 214, 431}, }, //Lickitung + new EncounterStatic { Species=114, Level = 10, Moves = new[]{079, 073, 402}, }, //Tangela + new EncounterStatic { Species=115, Level = 10, Moves = new[]{252, 068, 409}, }, //Kangaskhan + new EncounterStatic { Species=161, Level = 10, Moves = new[]{010, 203, 343}, }, //Sentret + new EncounterStatic { Species=179, Level = 10, Moves = new[]{084, 115, 351}, }, //Mareep + new EncounterStatic { Species=191, Level = 10, Moves = new[]{072, 230, 414}, }, //Sunkern + new EncounterStatic { Species=234, Level = 10, Moves = new[]{033, 050, 285}, }, //Stantler + new EncounterStatic { Species=261, Level = 10, Moves = new[]{336, 305, 399}, }, //Poochyena + new EncounterStatic { Species=283, Level = 10, Moves = new[]{145, 056, 202}, }, //Surskit + new EncounterStatic { Species=399, Level = 10, Moves = new[]{033, 401, 290}, }, //Bidoof + new EncounterStatic { Species=403, Level = 10, Moves = new[]{268, 393, 400}, }, //Shinx + new EncounterStatic { Species=431, Level = 10, Moves = new[]{252, 372, 290}, }, //Glameow + new EncounterStatic { Species=054, Level = 10, Moves = new[]{346, 227, 362}, }, //Psyduck + new EncounterStatic { Species=058, Level = 10, Moves = new[]{044, 034, 203}, }, //Growlithe + new EncounterStatic { Species=123, Level = 10, Moves = new[]{098, 226, 366}, }, //Scyther + new EncounterStatic { Species=128, Level = 10, Moves = new[]{099, 231, 431}, }, //Tauros + new EncounterStatic { Species=183, Level = 10, Moves = new[]{111, 453, 008}, }, //Marill + new EncounterStatic { Species=185, Level = 10, Moves = new[]{175, 205, 272}, }, //Sudowoodo + new EncounterStatic { Species=203, Level = 10, Moves = new[]{093, 243, 285}, }, //Girafarig + new EncounterStatic { Species=241, Level = 10, Moves = new[]{111, 174, 231}, }, //Miltank + new EncounterStatic { Species=263, Level = 10, Moves = new[]{033, 271, 387}, }, //Zigzagoon + new EncounterStatic { Species=427, Level = 10, Moves = new[]{193, 252, 409}, }, //Buneary + new EncounterStatic { Species=037, Level = 10, Moves = new[]{046, 257, 399}, }, //Vulpix + new EncounterStatic { Species=060, Level = 10, Moves = new[]{095, 054, 214}, }, //Poliwag + new EncounterStatic { Species=177, Level = 10, Moves = new[]{101, 297, 202}, }, //Natu + new EncounterStatic { Species=239, Level = 10, Moves = new[]{084, 238, 393}, }, //Elekid + new EncounterStatic { Species=300, Level = 10, Moves = new[]{193, 321, 445}, }, //Skitty + // Windskept Sky + new EncounterStatic { Species=016, Level = 10, Moves = new[]{016, 211, 290}, }, //Pidgey + new EncounterStatic { Species=021, Level = 10, Moves = new[]{064, 185, 211}, }, //Spearow + new EncounterStatic { Species=041, Level = 10, Moves = new[]{048, 095, 162}, }, //Zubat + new EncounterStatic { Species=142, Level = 10, Moves = new[]{044, 372, 446}, }, //Aerodactyl + new EncounterStatic { Species=165, Level = 10, Moves = new[]{004, 450, 009}, }, //Ledyba + new EncounterStatic { Species=187, Level = 10, Moves = new[]{235, 227, 340}, }, //Hoppip + new EncounterStatic { Species=193, Level = 10, Moves = new[]{098, 364, 202}, }, //Yanma + new EncounterStatic { Species=198, Level = 10, Moves = new[]{064, 109, 355}, }, //Murkrow + new EncounterStatic { Species=207, Level = 10, Moves = new[]{028, 364, 366}, }, //Gligar + new EncounterStatic { Species=225, Level = 10, Moves = new[]{217, 420, 264}, }, //Delibird + new EncounterStatic { Species=276, Level = 10, Moves = new[]{064, 203, 413}, }, //Taillow + new EncounterStatic { Species=397, Level = 14, Moves = new[]{017, 297, 366}, }, //Staravia + new EncounterStatic { Species=227, Level = 10, Moves = new[]{064, 065, 355}, }, //Skarmory + new EncounterStatic { Species=357, Level = 10, Moves = new[]{016, 073, 318}, }, //Tropius + // Sparkling Sea + new EncounterStatic { Species=086, Level = 10, Moves = new[]{029, 333, 214}, }, //Seel + new EncounterStatic { Species=090, Level = 10, Moves = new[]{110, 112, 196}, }, //Shellder + new EncounterStatic { Species=116, Level = 10, Moves = new[]{145, 190, 362}, }, //Horsea + new EncounterStatic { Species=118, Level = 10, Moves = new[]{064, 060, 352}, }, //Goldeen + new EncounterStatic { Species=129, Level = 10, Moves = new[]{150, 175, 340}, }, //Magikarp + new EncounterStatic { Species=138, Level = 10, Moves = new[]{044, 330, 196}, }, //Omanyte + new EncounterStatic { Species=140, Level = 10, Moves = new[]{071, 175, 446}, }, //Kabuto + new EncounterStatic { Species=170, Level = 10, Moves = new[]{086, 133, 351}, }, //Chinchou + new EncounterStatic { Species=194, Level = 10, Moves = new[]{055, 034, 401}, }, //Wooper + new EncounterStatic { Species=211, Level = 10, Moves = new[]{040, 453, 290}, }, //Qwilfish + new EncounterStatic { Species=223, Level = 10, Moves = new[]{199, 350, 362}, }, //Remoraid + new EncounterStatic { Species=226, Level = 10, Moves = new[]{048, 243, 314}, }, //Mantine + new EncounterStatic { Species=320, Level = 10, Moves = new[]{055, 214, 340}, }, //Wailmer + new EncounterStatic { Species=339, Level = 10, Moves = new[]{189, 214, 209}, }, //Barboach + new EncounterStatic { Species=366, Level = 10, Moves = new[]{250, 445, 392}, }, //Clamperl + new EncounterStatic { Species=369, Level = 10, Moves = new[]{055, 214, 414}, }, //Relicanth + new EncounterStatic { Species=370, Level = 10, Moves = new[]{204, 300, 196}, }, //Luvdisc + new EncounterStatic { Species=418, Level = 10, Moves = new[]{346, 163, 352}, }, //Buizel + new EncounterStatic { Species=456, Level = 10, Moves = new[]{213, 186, 352}, }, //Finneon + new EncounterStatic { Species=072, Level = 10, Moves = new[]{048, 367, 202}, }, //Tentacool + new EncounterStatic { Species=318, Level = 10, Moves = new[]{044, 037, 399}, }, //Carvanha + new EncounterStatic { Species=341, Level = 10, Moves = new[]{106, 232, 283}, }, //Corphish + new EncounterStatic { Species=345, Level = 10, Moves = new[]{051, 243, 202}, }, //Lileep + new EncounterStatic { Species=347, Level = 10, Moves = new[]{010, 446, 440}, }, //Anorith + new EncounterStatic { Species=349, Level = 10, Moves = new[]{150, 445, 243}, }, //Feebas + new EncounterStatic { Species=131, Level = 10, Moves = new[]{109, 032, 196}, }, //Lapras + new EncounterStatic { Species=147, Level = 10, Moves = new[]{086, 352, 225}, }, //Dratini + // Spooky Mannor + new EncounterStatic { Species=092, Level = 10, Moves = new[]{095, 050, 482}, }, //Gastly + new EncounterStatic { Species=096, Level = 10, Moves = new[]{095, 427, 409}, }, //Drowzee + new EncounterStatic { Species=122, Level = 10, Moves = new[]{112, 298, 285}, }, //Mr. Mime + new EncounterStatic { Species=167, Level = 10, Moves = new[]{040, 527, 450}, }, //Spinarak + new EncounterStatic { Species=200, Level = 10, Moves = new[]{149, 194, 517}, }, //Misdreavus + new EncounterStatic { Species=228, Level = 10, Moves = new[]{336, 364, 399}, }, //Houndour + new EncounterStatic { Species=325, Level = 10, Moves = new[]{149, 285, 278}, }, //Spoink + new EncounterStatic { Species=353, Level = 10, Moves = new[]{101, 194, 220}, }, //Shuppet + new EncounterStatic { Species=355, Level = 10, Moves = new[]{050, 220, 271}, }, //Duskull + new EncounterStatic { Species=358, Level = 10, Moves = new[]{035, 095, 304}, }, //Chimecho + new EncounterStatic { Species=434, Level = 10, Moves = new[]{103, 492, 389}, }, //Stunky + new EncounterStatic { Species=209, Level = 10, Moves = new[]{204, 370, 038}, }, //Snubbull + new EncounterStatic { Species=235, Level = 10, Moves = new[]{166, 445, 214}, }, //Smeargle + new EncounterStatic { Species=313, Level = 10, Moves = new[]{148, 271, 366}, }, //Volbeat + new EncounterStatic { Species=314, Level = 10, Moves = new[]{204, 313, 366}, }, //Illumise + new EncounterStatic { Species=063, Level = 10, Moves = new[]{100, 285, 356}, }, //Abra + // Rugged Mountain + new EncounterStatic { Species=066, Level = 10, Moves = new[]{067, 418, 270}, }, //Machop + new EncounterStatic { Species=081, Level = 10, Moves = new[]{319, 278, 356}, }, //Magnemite + new EncounterStatic { Species=109, Level = 10, Moves = new[]{123, 399, 482}, }, //Koffing + new EncounterStatic { Species=218, Level = 10, Moves = new[]{052, 517, 257}, }, //Slugma + new EncounterStatic { Species=246, Level = 10, Moves = new[]{044, 399, 446}, }, //Larvitar + new EncounterStatic { Species=324, Level = 10, Moves = new[]{052, 090, 446}, }, //Torkoal + new EncounterStatic { Species=328, Level = 10, Moves = new[]{044, 324, 202}, }, //Trapinch + new EncounterStatic { Species=331, Level = 10, Moves = new[]{071, 298, 009}, }, //Cacnea + new EncounterStatic { Species=412, Level = 10, Moves = new[]{182, 450, 173}, }, //Burmy + new EncounterStatic { Species=449, Level = 10, Moves = new[]{044, 254, 276}, }, //Hippopotas + new EncounterStatic { Species=240, Level = 10, Moves = new[]{052, 009, 257}, }, //Magby + new EncounterStatic { Species=322, Level = 10, Moves = new[]{052, 034, 257}, }, //Numel + new EncounterStatic { Species=359, Level = 10, Moves = new[]{364, 224, 276}, }, //Absol + new EncounterStatic { Species=453, Level = 10, Moves = new[]{040, 409, 441}, }, //Croagunk + new EncounterStatic { Species=236, Level = 10, Moves = new[]{252, 364, 183}, }, //Tyrogue + new EncounterStatic { Species=371, Level = 10, Moves = new[]{044, 349, 200}, }, //Bagon + // Icy Cave + new EncounterStatic { Species=027, Level = 10, Moves = new[]{028, 068, 162}, }, //Sandshrew + new EncounterStatic { Species=074, Level = 10, Moves = new[]{111, 446, 431}, }, //Geodude + new EncounterStatic { Species=095, Level = 10, Moves = new[]{020, 446, 431}, }, //Onix + new EncounterStatic { Species=100, Level = 10, Moves = new[]{268, 324, 363}, }, //Voltorb + new EncounterStatic { Species=104, Level = 10, Moves = new[]{125, 195, 067}, }, //Cubone + new EncounterStatic { Species=293, Level = 10, Moves = new[]{253, 283, 428}, }, //Whismur + new EncounterStatic { Species=304, Level = 10, Moves = new[]{106, 283, 457}, }, //Aron + new EncounterStatic { Species=337, Level = 10, Moves = new[]{093, 414, 236}, }, //Lunatone + new EncounterStatic { Species=338, Level = 10, Moves = new[]{093, 428, 234}, }, //Solrock + new EncounterStatic { Species=343, Level = 10, Moves = new[]{229, 356, 428}, }, //Baltoy + new EncounterStatic { Species=459, Level = 10, Moves = new[]{075, 419, 202}, }, //Snover + new EncounterStatic { Species=050, Level = 10, Moves = new[]{028, 251, 446}, }, //Diglett + new EncounterStatic { Species=215, Level = 10, Moves = new[]{269, 008, 067}, }, //Sneasel + new EncounterStatic { Species=361, Level = 10, Moves = new[]{181, 311, 352}, }, //Snorunt + new EncounterStatic { Species=220, Level = 10, Moves = new[]{316, 246, 333}, }, //Swinub + new EncounterStatic { Species=443, Level = 10, Moves = new[]{082, 200, 203}, }, //Gible + // Dream Park + new EncounterStatic { Species=046, Level = 10, Moves = new[]{078, 440, 235}, }, //Paras + new EncounterStatic { Species=204, Level = 10, Moves = new[]{120, 390, 356}, }, //Pineco + new EncounterStatic { Species=265, Level = 10, Moves = new[]{040, 450, 173}, }, //Wurmple + new EncounterStatic { Species=273, Level = 10, Moves = new[]{074, 331, 492}, }, //Seedot + new EncounterStatic { Species=287, Level = 10, Moves = new[]{281, 400, 389}, }, //Slakoth + new EncounterStatic { Species=290, Level = 10, Moves = new[]{141, 203, 400}, }, //Nincada + new EncounterStatic { Species=311, Level = 10, Moves = new[]{086, 435, 324}, }, //Plusle + new EncounterStatic { Species=312, Level = 10, Moves = new[]{086, 435, 324}, }, //Minun + new EncounterStatic { Species=316, Level = 10, Moves = new[]{139, 151, 202}, }, //Gulpin + new EncounterStatic { Species=352, Level = 10, Moves = new[]{185, 285, 513}, }, //Kecleon + new EncounterStatic { Species=401, Level = 10, Moves = new[]{522, 283, 253}, }, //Kricketot + new EncounterStatic { Species=420, Level = 10, Moves = new[]{073, 505, 331}, }, //Cherubi + new EncounterStatic { Species=455, Level = 10, Moves = new[]{044, 476, 380}, }, //Carnivine + new EncounterStatic { Species=023, Level = 10, Moves = new[]{040, 251, 399}, }, //Ekans + new EncounterStatic { Species=175, Level = 10, Moves = new[]{118, 381, 253}, }, //Togepi + new EncounterStatic { Species=190, Level = 10, Moves = new[]{010, 252, 007}, }, //Aipom + new EncounterStatic { Species=285, Level = 10, Moves = new[]{078, 331, 264}, }, //Shroomish + new EncounterStatic { Species=315, Level = 10, Moves = new[]{074, 079, 129}, }, //Roselia + new EncounterStatic { Species=113, Level = 10, Moves = new[]{045, 068, 270}, }, //Chansey + new EncounterStatic { Species=127, Level = 10, Moves = new[]{011, 370, 382}, }, //Pinsir + new EncounterStatic { Species=133, Level = 10, Moves = new[]{028, 204, 129}, }, //Eevee + new EncounterStatic { Species=143, Level = 10, Moves = new[]{133, 007, 278}, }, //Snorlax + new EncounterStatic { Species=214, Level = 10, Moves = new[]{030, 175, 264}, }, //Heracross + // Pokémon Café Forest + new EncounterStatic { Species=061, Level = 25, Moves = new[]{240, 114, 352}, }, //Poliwhirl + new EncounterStatic { Species=133, Level = 10, Moves = new[]{270, 204, 129}, }, //Eevee + new EncounterStatic { Species=235, Level = 10, Moves = new[]{166, 445, 214}, }, //Smeargle + new EncounterStatic { Species=412, Level = 10, Moves = new[]{182, 450, 173}, }, //Burmy + //PGL + new EncounterStatic { Species=212, Level = 10, Moves = new[]{211}, Gender = 0, }, //Scizor + new EncounterStatic { Species=445, Level = 48, Gender = 0, }, //Garchomp + new EncounterStatic { Species=149, Level = 55, Moves = new[]{245}, Gender = 0, }, //Dragonite + new EncounterStatic { Species=248, Level = 55, Moves = new[]{069}, Gender = 0, }, //Tyranitar + new EncounterStatic { Species=376, Level = 45, Moves = new[]{038}, Gender = 2, }, //Metagross + }; + + private static readonly EncounterStatic[] BW_DreamWorld = DreamWorld_Common.Concat(new[] + { + // Pleasant forest + new EncounterStatic { Species=029, Level = 10, Moves = new[]{010, 389, 162}, }, //Nidoran (F) + new EncounterStatic { Species=032, Level = 10, Moves = new[]{064, 068, 162}, }, //Nidoran (M) + new EncounterStatic { Species=174, Level = 10, Moves = new[]{047, 313, 270}, }, //Igglybuff + new EncounterStatic { Species=187, Level = 10, Moves = new[]{235, 270, 331}, }, //Hoppip + new EncounterStatic { Species=270, Level = 10, Moves = new[]{071, 073, 352}, }, //Lotad + new EncounterStatic { Species=276, Level = 10, Moves = new[]{064, 119, 366}, }, //Taillow + new EncounterStatic { Species=309, Level = 10, Moves = new[]{086, 423, 324}, }, //Electrike + new EncounterStatic { Species=351, Level = 10, Moves = new[]{052, 466, 352}, }, //Castform + new EncounterStatic { Species=417, Level = 10, Moves = new[]{098, 343, 351}, }, //Pachirisu + // Windskept Sky + new EncounterStatic { Species=012, Level = 10, Moves = new[]{093, 355, 314}, }, //Butterfree + new EncounterStatic { Species=163, Level = 10, Moves = new[]{193, 101, 278}, }, //Hoothoot + new EncounterStatic { Species=278, Level = 10, Moves = new[]{055, 239, 351}, }, //Wingull + new EncounterStatic { Species=333, Level = 10, Moves = new[]{064, 297, 355}, }, //Swablu + new EncounterStatic { Species=425, Level = 10, Moves = new[]{107, 095, 285}, }, //Drifloon + new EncounterStatic { Species=441, Level = 10, Moves = new[]{119, 417, 272}, }, //Chatot + // Sparkling Sea + new EncounterStatic { Species=079, Level = 10, Moves = new[]{281, 335, 362}, }, //Slowpoke + new EncounterStatic { Species=098, Level = 10, Moves = new[]{011, 133, 290}, }, //Krabby + new EncounterStatic { Species=119, Level = 33, Moves = new[]{352, 214, 203}, }, //Seaking + new EncounterStatic { Species=120, Level = 10, Moves = new[]{055, 278, 196}, }, //Staryu + new EncounterStatic { Species=222, Level = 10, Moves = new[]{145, 109, 446}, }, //Corsola + new EncounterStatic { Species=422, Level = 10, Moves = new[]{189, 281, 290}, Form = 0 }, //Shellos + new EncounterStatic { Species=422, Level = 10, Moves = new[]{189, 281, 290}, Form = 1 }, + // Spooky Mannor + new EncounterStatic { Species=202, Level = 15, Moves = new[]{243, 204, 227}, }, //Wobbuffet + new EncounterStatic { Species=238, Level = 10, Moves = new[]{186, 445, 285}, }, //Smoochum + new EncounterStatic { Species=303, Level = 10, Moves = new[]{313, 424, 008}, }, //Mawile + new EncounterStatic { Species=307, Level = 10, Moves = new[]{096, 409, 203}, }, //Meditite + new EncounterStatic { Species=436, Level = 10, Moves = new[]{095, 285, 356}, }, //Bronzor + new EncounterStatic { Species=052, Level = 10, Moves = new[]{010, 095, 290}, }, //Meowth + new EncounterStatic { Species=479, Level = 10, Moves = new[]{086, 351, 324}, }, //Rotom + new EncounterStatic { Species=280, Level = 10, Moves = new[]{093, 194, 270}, }, //Ralts + new EncounterStatic { Species=302, Level = 10, Moves = new[]{193, 389, 180}, }, //Sableye + new EncounterStatic { Species=442, Level = 10, Moves = new[]{180, 220, 196}, }, //Spiritomb + // Rugged Mountain + new EncounterStatic { Species=056, Level = 10, Moves = new[]{067, 179, 009}, }, //Mankey + new EncounterStatic { Species=111, Level = 10, Moves = new[]{030, 068, 038}, }, //Rhyhorn + new EncounterStatic { Species=231, Level = 10, Moves = new[]{175, 484, 402}, }, //Phanpy + new EncounterStatic { Species=451, Level = 10, Moves = new[]{044, 097, 401}, }, //Skorupi + new EncounterStatic { Species=216, Level = 10, Moves = new[]{313, 242, 264}, }, //Teddiursa + new EncounterStatic { Species=296, Level = 10, Moves = new[]{292, 270, 008}, }, //Makuhita + new EncounterStatic { Species=327, Level = 10, Moves = new[]{383, 252, 276}, }, //Spinda + new EncounterStatic { Species=374, Level = 10, Moves = new[]{036, 428, 442}, }, //Beldum + new EncounterStatic { Species=447, Level = 10, Moves = new[]{203, 418, 264}, }, //Riolu + // Icy Cave + new EncounterStatic { Species=173, Level = 10, Moves = new[]{227, 312, 214}, }, //Cleffa + new EncounterStatic { Species=213, Level = 10, Moves = new[]{227, 270, 504}, }, //Shuckle + new EncounterStatic { Species=299, Level = 10, Moves = new[]{033, 446, 246}, }, //Nosepass + new EncounterStatic { Species=363, Level = 10, Moves = new[]{181, 090, 401}, }, //Spheal + new EncounterStatic { Species=408, Level = 10, Moves = new[]{029, 442, 007}, }, //Cranidos + new EncounterStatic { Species=206, Level = 10, Moves = new[]{111, 277, 446}, }, //Dunsparce + new EncounterStatic { Species=410, Level = 10, Moves = new[]{182, 068, 090}, }, //Shieldon + // Dream Park + new EncounterStatic { Species=048, Level = 10, Moves = new[]{050, 226, 285}, }, //Venonat + new EncounterStatic { Species=088, Level = 10, Moves = new[]{139, 114, 425}, }, //Grimer + new EncounterStatic { Species=415, Level = 10, Moves = new[]{016, 366, 314}, }, //Combee + new EncounterStatic { Species=015, Level = 10, Moves = new[]{031, 314, 210}, }, //Beedrill + new EncounterStatic { Species=335, Level = 10, Moves = new[]{098, 458, 067}, }, //Zangoose + new EncounterStatic { Species=336, Level = 10, Moves = new[]{044, 034, 401}, }, //Seviper + // PGL + new EncounterStatic { Species=134, Level = 10, Gender = 0, }, //Vaporeon + new EncounterStatic { Species=135, Level = 10, Gender = 0, }, //Jolteon + new EncounterStatic { Species=136, Level = 10, Gender = 0, }, //Flareon + new EncounterStatic { Species=196, Level = 10, Gender = 0, }, //Espeon + new EncounterStatic { Species=197, Level = 10, Gender = 0, }, //Umbreon + new EncounterStatic { Species=470, Level = 10, Gender = 0, }, //Leafeon + new EncounterStatic { Species=471, Level = 10, Gender = 0, }, //Glaceon + new EncounterStatic { Species=001, Level = 10, Gender = 0, }, //Bulbasaur + new EncounterStatic { Species=004, Level = 10, Gender = 0, }, //Charmander + new EncounterStatic { Species=007, Level = 10, Gender = 0, }, //Squirtle + new EncounterStatic { Species=453, Level = 10, Gender = 0, }, //Croagunk + new EncounterStatic { Species=387, Level = 10, Gender = 0, }, //Turtwig + new EncounterStatic { Species=390, Level = 10, Gender = 0, }, //Chimchar + new EncounterStatic { Species=393, Level = 10, Gender = 0, }, //Piplup + new EncounterStatic { Species=493, Level = 100 }, //Arceus + new EncounterStatic { Species=252, Level = 10, Gender = 0, }, //Treecko + new EncounterStatic { Species=255, Level = 10, Gender = 0, }, //Torchic + new EncounterStatic { Species=258, Level = 10, Gender = 0, }, //Mudkip + new EncounterStatic { Species=468, Level = 10, Moves = new[]{217}, Gender = 0, }, //Togekiss + new EncounterStatic { Species=473, Level = 34, Gender = 0, }, //Mamoswine + new EncounterStatic { Species=137, Level = 10 }, //Porygon + new EncounterStatic { Species=384, Level = 50 }, //Rayquaza + new EncounterStatic { Species=354, Level = 37, Moves = new[]{538}, Gender = 1, }, //Banette + new EncounterStatic { Species=453, Level = 10, Moves = new[]{398}, Gender = 0, }, //Croagunk + new EncounterStatic { Species=334, Level = 35, Moves = new[]{206}, Gender = 0,}, //Altaria + new EncounterStatic { Species=242, Level = 10 }, //Blissey + new EncounterStatic { Species=448, Level = 10, Moves = new[]{418}, Gender = 0, }, //Lucario + new EncounterStatic { Species=189, Level = 27, Moves = new[]{206}, Gender = 0, }, //Jumpluff + }).ToArray(); + + private static readonly EncounterStatic[] B2W2_DreamWorld = DreamWorld_Common.Concat(new[] + { + // Pleasant forest + new EncounterStatic { Species=535, Level = 10, Moves = new[]{496, 414, 352}, }, //Tympole + new EncounterStatic { Species=546, Level = 10, Moves = new[]{073, 227, 388}, }, //Cottonee + new EncounterStatic { Species=548, Level = 10, Moves = new[]{079, 204, 230}, }, //Petilil + new EncounterStatic { Species=588, Level = 10, Moves = new[]{203, 224, 450}, }, //Karrablast + new EncounterStatic { Species=616, Level = 10, Moves = new[]{051, 226, 227}, }, //Shelmet + new EncounterStatic { Species=545, Level = 30, Moves = new[]{342, 390, 276}, }, //Scolipede + // Windskept Sky + new EncounterStatic { Species=519, Level = 10, Moves = new[]{016, 095, 234}, }, //Pidove + new EncounterStatic { Species=561, Level = 10, Moves = new[]{095, 500, 257}, }, //Sigilyph + new EncounterStatic { Species=580, Level = 10, Moves = new[]{432, 362, 382}, }, //Ducklett + new EncounterStatic { Species=587, Level = 10, Moves = new[]{098, 403, 204}, }, //Emolga + // Sparkling Sea + new EncounterStatic { Species=550, Level = 10, Moves = new[]{029, 097, 428}, Form = 0 },//Basculin + new EncounterStatic { Species=550, Level = 10, Moves = new[]{029, 097, 428}, Form = 1 }, + new EncounterStatic { Species=594, Level = 10, Moves = new[]{392, 243, 220}, }, //Alomomola + new EncounterStatic { Species=618, Level = 10, Moves = new[]{189, 174, 281}, }, //Stunfisk + new EncounterStatic { Species=564, Level = 10, Moves = new[]{205, 175, 334}, }, //Tirtouga + // Spooky Mannor + new EncounterStatic { Species=605, Level = 10, Moves = new[]{377, 112, 417}, }, //Elgyem + new EncounterStatic { Species=624, Level = 10, Moves = new[]{210, 427, 389}, }, //Pawniard + new EncounterStatic { Species=596, Level = 36, Moves = new[]{486, 050, 228}, }, //Galvantula + new EncounterStatic { Species=578, Level = 32, Moves = new[]{105, 286, 271}, }, //Duosion + new EncounterStatic { Species=622, Level = 10, Moves = new[]{205, 007, 009}, }, //Golett + // Rugged Mountain + new EncounterStatic { Species=631, Level = 10, Moves = new[]{510, 257, 202}, }, //Heatmor + new EncounterStatic { Species=632, Level = 10, Moves = new[]{210, 203, 422}, }, //Durant + new EncounterStatic { Species=556, Level = 10, Moves = new[]{042, 073, 191}, }, //Maractus + new EncounterStatic { Species=558, Level = 34, Moves = new[]{157, 068, 400}, }, //Crustle + new EncounterStatic { Species=553, Level = 40, Moves = new[]{242, 068, 212}, }, //Krookodile + // Icy Cave + new EncounterStatic { Species=529, Level = 10, Moves = new[]{229, 319, 431}, }, //Drilbur + new EncounterStatic { Species=621, Level = 10, Moves = new[]{044, 424, 389}, }, //Druddigon + new EncounterStatic { Species=525, Level = 25, Moves = new[]{479, 174, 484}, }, //Boldore + new EncounterStatic { Species=583, Level = 35, Moves = new[]{429, 420, 286}, }, //Vanillish + new EncounterStatic { Species=600, Level = 38, Moves = new[]{451, 356, 393}, }, //Klang + new EncounterStatic { Species=610, Level = 10, Moves = new[]{082, 068, 400}, }, //Axew + // Dream Park + new EncounterStatic { Species=531, Level = 10, Moves = new[]{270, 227, 281}, }, //Audino + new EncounterStatic { Species=538, Level = 10, Moves = new[]{020, 008, 276}, }, //Throh + new EncounterStatic { Species=539, Level = 10, Moves = new[]{249, 009, 530}, }, //Sawk + new EncounterStatic { Species=559, Level = 10, Moves = new[]{067, 252, 409}, }, //Scraggy + new EncounterStatic { Species=533, Level = 25, Moves = new[]{067, 183, 409}, }, //Gurdurr + // PGL + new EncounterStatic { Species=575, Level = 32, Moves = new[]{243}, Gender = 0, }, //Gothorita + new EncounterStatic { Species=025, Level = 10, Moves = new[]{029}, Gender = 0, }, //Pikachu + new EncounterStatic { Species=511, Level = 10, Moves = new[]{437}, Gender = 0, }, //Pansage + new EncounterStatic { Species=513, Level = 10, Moves = new[]{257}, Gender = 0, }, //Pansear + new EncounterStatic { Species=515, Level = 10, Moves = new[]{056}, Gender = 0, }, //Panpour + new EncounterStatic { Species=387, Level = 10, Moves = new[]{254}, Gender = 0, }, //Turtwig + new EncounterStatic { Species=390, Level = 10, Moves = new[]{252}, Gender = 0, }, //Chimchar + new EncounterStatic { Species=393, Level = 10, Moves = new[]{297}, Gender = 0, }, //Piplup + new EncounterStatic { Species=575, Level = 32, Moves = new[]{286}, Gender = 0, }, //Gothorita + }).ToArray(); + + #endregion + #region Static Encounter/Gift Tables + + private static readonly int[] Roaming_MetLocation_BW = + { + 25,26,27,28, // Route 12,13,14,15 Night latter half + 15,16,31, // Route 2,3,18 Morning + 17,18,29, // Route 4,5,16 Daytime + 19,20,21, // Route 6,7,8 Evening + 22,23,24, // Route 9,10,11 Night former half + }; + + private static readonly EncounterStatic[] Encounter_BW_Roam = + { + new EncounterStatic { Species = 641, Level = 40, Version = GameVersion.B, Roaming = true }, //Tornadus + new EncounterStatic { Species = 642, Level = 40, Version = GameVersion.W, Roaming = true }, //Thundurus + }; + + private static readonly EncounterStatic[] Encounter_BW_Regular = + { + //Starters @ Nuvema Town + new EncounterStatic { Gift = true, Species = 495, Level = 5, Location = 4, }, // Snivys + new EncounterStatic { Gift = true, Species = 498, Level = 5, Location = 4, }, // Tepig + new EncounterStatic { Gift = true, Species = 501, Level = 5, Location = 4, }, // Oshawott + //Fossil @ Nacrene City + new EncounterStatic { Gift = true, Species = 138, Level = 25, Location = 7, }, // Omanyte + new EncounterStatic { Gift = true, Species = 140, Level = 25, Location = 7, }, // Kabuto + new EncounterStatic { Gift = true, Species = 142, Level = 25, Location = 7, }, // Aerodactyl + new EncounterStatic { Gift = true, Species = 345, Level = 25, Location = 7, }, // Lileep + new EncounterStatic { Gift = true, Species = 347, Level = 25, Location = 7, }, // Anorith + new EncounterStatic { Gift = true, Species = 408, Level = 25, Location = 7, }, // Cranidos + new EncounterStatic { Gift = true, Species = 410, Level = 25, Location = 7, }, // Shieldon + new EncounterStatic { Gift = true, Species = 564, Level = 25, Location = 7, }, // Tirtouga + new EncounterStatic { Gift = true, Species = 566, Level = 25, Location = 7, }, // Archen + //Gift + new EncounterStatic { Gift = true, Species = 511, Level = 10, Location = 32, }, // Pansage @ Dreamyard + new EncounterStatic { Gift = true, Species = 513, Level = 10, Location = 32, }, // Pansear + new EncounterStatic { Gift = true, Species = 515, Level = 10, Location = 32, }, // Panpour + new EncounterStatic { Gift = true, Species = 129, Level = 05, Location = 68, }, // Magikarp @ Marvelous Bridge + new EncounterStatic { Gift = true, Species = 636, Level = 01, EggLocation = 60003, }, // Larvesta Egg from Treasure Hunter + //Stationary + new EncounterStatic { Species = 518, Level = 50, Location = 32, Ability = 4, }, //Musharna @ Dreamyard Friday Only + new EncounterStatic { Species = 590, Level = 20, Location = 19, }, //Foongus @ Route 6 + new EncounterStatic { Species = 590, Level = 30, Location = 23, }, //Foongus @ Route 10 + new EncounterStatic { Species = 591, Level = 40, Location = 23, }, //Amoonguss @ Route 10 + new EncounterStatic { Species = 555, Level = 35, Location = 34, Ability = 4, }, //Darmanitan @ Desert Resort + new EncounterStatic { Species = 637, Level = 70, Location = 35, }, //Volcarona @ Relic Castle + //Stationary Legendary + new EncounterStatic { Species = 638, Level = 42, Location = 74,}, //Cobalion @ Guidance Chamber + new EncounterStatic { Species = 639, Level = 42, Location = 73,}, //Terrakion @ Trial Chamber + new EncounterStatic { Species = 640, Level = 42, Location = 55,}, //Virizion @ Rumination Field + new EncounterStatic { Species = 643, Level = 50, Location = 45, Shiny = false, Version = GameVersion.B, }, //Reshiram @ N'Castle + new EncounterStatic { Species = 643, Level = 50, Location = 39, Shiny = false, Version = GameVersion.B, }, //Reshiram @ Dragonspiral Tower + new EncounterStatic { Species = 644, Level = 50, Location = 45, Shiny = false, Version = GameVersion.W, }, //Zekrom @ N'Castle + new EncounterStatic { Species = 644, Level = 50, Location = 39, Shiny = false, Version = GameVersion.W, }, //Zekrom @ Dragonspiral Tower + new EncounterStatic { Species = 645, Level = 70, Location = 70,}, //Landorus @ Abundant Shrine + new EncounterStatic { Species = 646, Level = 75, Location = 61,}, //Kyurem @ Giant Chasm + //Event + new EncounterStatic { Species = 494, Level = 15, Location = 62, Shiny = false}, // Victini @ Liberty Garden + new EncounterStatic { Species = 570, Level = 10, Location = 08, Gender = 0, }, // Zorua @ Castelia City + new EncounterStatic { Species = 571, Level = 25, Location = 72, Gender = 1, }, // Zoroark @ Lostlorn Forest + }; + + private static readonly EncounterStatic[] Encounter_BW = Encounter_BW_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_BW)).Concat(Encounter_BW_Regular).ToArray(); + + private static readonly EncounterStatic[] Encounter_B2W2_Regular = + { + //Starters @ Aspertia City + new EncounterStatic { Gift = true, Species = 495, Level = 5, Location = 117, }, // Snivy + new EncounterStatic { Gift = true, Species = 498, Level = 5, Location = 117, }, // Tepig + new EncounterStatic { Gift = true, Species = 501, Level = 5, Location = 117, }, // Oshawott + //Fossil @ Nacrene City + new EncounterStatic { Gift = true, Species = 138, Level = 25, Location = 7, }, // Omanyte + new EncounterStatic { Gift = true, Species = 140, Level = 25, Location = 7, }, // Kabuto + new EncounterStatic { Gift = true, Species = 142, Level = 25, Location = 7, }, // Aerodactyl + new EncounterStatic { Gift = true, Species = 345, Level = 25, Location = 7, }, // Lileep + new EncounterStatic { Gift = true, Species = 347, Level = 25, Location = 7, }, // Anorith + new EncounterStatic { Gift = true, Species = 408, Level = 25, Location = 7, }, // Cranidos + new EncounterStatic { Gift = true, Species = 410, Level = 25, Location = 7, }, // Shieldon + new EncounterStatic { Gift = true, Species = 564, Level = 25, Location = 7, }, // Tirtouga + new EncounterStatic { Gift = true, Species = 566, Level = 25, Location = 7, }, // Archen + //Gift + new EncounterStatic { Gift = true, Species = 133, Level = 10, Ability = 4, Location = 8, }, //HA Eevee @ Castelia City + new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 0, }, //HA Deerling @ Route 6 + new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 1, }, //HA Deerling @ Route 6 + new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 2, }, //HA Deerling @ Route 6 + new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 3, }, //HA Deerling @ Route 6 + new EncounterStatic { Gift = true, Species = 443, Level = 01, Shiny = true, Location = 122, Gender = 0, Version = GameVersion.B2, }, //Shiny Gible @ Floccesy Town + new EncounterStatic { Gift = true, Species = 147, Level = 01, Shiny = true, Location = 122, Gender = 0, Version = GameVersion.W2, }, //Shiny Dratini @ Floccesy Town + new EncounterStatic { Gift = true, Species = 129, Level = 05, Location = 68, }, // Magikarp @ Marvelous Bridge + new EncounterStatic { Gift = true, Species = 440, Level = 01, EggLocation = 60003, }, // Happiny Egg from PKMN Breeder + //Stationary + new EncounterStatic { Species = 590, Level = 29, Location = 19, }, // Foongus @ Route 6 + new EncounterStatic { Species = 591, Level = 43, Location = 24, }, // Amoonguss @ Route 11 + new EncounterStatic { Species = 593, Level = 40, Location = 71, Ability = 4, Version = GameVersion.B2, Gender = 0,}, // HA Jellicent @ Undella Bay Mon Only + new EncounterStatic { Species = 593, Level = 40, Location = 71, Ability = 4, Version = GameVersion.W2, Gender = 1,}, // HA Jellicent @ Undella Bay Thurs Only + new EncounterStatic { Species = 628, Level = 25, Location = 17, Ability = 4, Version = GameVersion.W2, Gender = 0,}, // HA Braviary @ Route 4 Mon Only + new EncounterStatic { Species = 630, Level = 25, Location = 17, Ability = 4, Version = GameVersion.B2, Gender = 1,}, // HA Mandibuzz @ Route 4 Thurs Only + new EncounterStatic { Species = 637, Level = 35, Location = 35, }, // Volcarona @ Relic Castle + new EncounterStatic { Species = 637, Level = 65, Location = 35, }, // Volcarona @ Relic Castle + new EncounterStatic { Species = 558, Level = 42, Location = 141, }, // Crustle @ Seaside Cave + new EncounterStatic { Species = 612, Level = 60, Location = 147, Shiny = true}, // Haxorus @ Nature Preserve + //Stationary Lengerdary + new EncounterStatic { Species = 377, Level = 65, Location = 150,}, //Regirock @ Rock Peak Chamber + new EncounterStatic { Species = 378, Level = 65, Location = 151,}, //Regice @ Iceberg Chamber + new EncounterStatic { Species = 379, Level = 65, Location = 152,}, //Registeel @ Iron Chamber + new EncounterStatic { Species = 380, Level = 68, Location = 032, Version = GameVersion.W2, }, // Latias @ Dreamyard + new EncounterStatic { Species = 381, Level = 68, Location = 032, Version = GameVersion.B2, }, // Latios @ Dreamyard + new EncounterStatic { Species = 480, Level = 65, Location = 007,}, //Uxie @ Nacrene City + new EncounterStatic { Species = 481, Level = 65, Location = 056,}, //Mesprit @ Celestial Tower + new EncounterStatic { Species = 482, Level = 65, Location = 128,}, //Azelf @ Route 23 + new EncounterStatic { Species = 485, Level = 68, Location = 132,}, //Heatran @ Reversal Mountain + new EncounterStatic { Species = 486, Level = 68, Location = 038,}, //Regigigas @ Twist Mountain + new EncounterStatic { Species = 488, Level = 68, Location = 068,}, //Cresselia @ Marvelous Bridge + + new EncounterStatic { Species = 638, Level = 45, Location = 026,}, // Cobalion @ Route 13 + new EncounterStatic { Species = 638, Level = 65, Location = 026,}, // Cobalion @ Route 13 + new EncounterStatic { Species = 639, Level = 45, Location = 127,}, // Terrakion @ Route 22 + new EncounterStatic { Species = 639, Level = 65, Location = 127,}, // Terrakion @ Route 22 + new EncounterStatic { Species = 640, Level = 45, Location = 024,}, // Virizion @ Route 11 + new EncounterStatic { Species = 640, Level = 65, Location = 024,}, // Virizion @ Route 11 + new EncounterStatic { Species = 643, Level = 70, Location = 039, Shiny = false, Version = GameVersion.W2, }, // Reshiram @ Dragonspiral Tower + new EncounterStatic { Species = 644, Level = 70, Location = 039, Shiny = false, Version = GameVersion.B2, }, // Zekrom @ Dragonspiral Tower + new EncounterStatic { Species = 646, Level = 70, Location = 061, Form = 0}, // Kyurem @ Giant Chasm + //N's Pokemon + new EncounterStatic { Species = 509, Level = 07, Location = 15, NSparkle = true, Ability = 2, Nature = Nature.Timid }, //Purloin @ Route 2 + new EncounterStatic { Species = 519, Level = 13, Location = 33, NSparkle = true, Ability = 2, Nature = Nature.Sassy }, //Pidove @ Pinwheel Forest + new EncounterStatic { Species = 532, Level = 13, Location = 33, NSparkle = true, Ability = 1, Nature = Nature.Rash }, //Timburr @ Pinwheel Forest + new EncounterStatic { Species = 535, Level = 13, Location = 33, NSparkle = true, Ability = 2, Nature = Nature.Modest }, //Tympole @ Pinwheel Forest + new EncounterStatic { Species = 527, Level = 55, Location = 53, NSparkle = true, Ability = 1, Nature = Nature.Timid }, //Woobat @ Wellspring Cave + new EncounterStatic { Species = 551, Level = 22, Location = 34, NSparkle = true, Ability = 2, Nature = Nature.Docile }, //Sandile @ Desert Resort + new EncounterStatic { Species = 554, Level = 22, Location = 34, NSparkle = true, Ability = 1, Nature = Nature.Naive }, //Darumaka @ Desert Resort + new EncounterStatic { Species = 555, Level = 35, Location = 34, NSparkle = true, Ability = 4, Nature = Nature.Calm }, //Darmanitan @ Desert Resort + new EncounterStatic { Species = 559, Level = 22, Location = 34, NSparkle = true, Ability = 1, Nature = Nature.Lax }, //Scaggy @ Desert Resort + new EncounterStatic { Species = 561, Level = 22, Location = 34, NSparkle = true, Ability = 2, Nature = Nature.Gentle }, //Sigilyph @ Desert Resort + new EncounterStatic { Species = 525, Level = 28, Location = 37, NSparkle = true, Ability = 1, Nature = Nature.Naive }, //Boldore @ Chargestone Cave + new EncounterStatic { Species = 595, Level = 28, Location = 37, NSparkle = true, Ability = 2, Nature = Nature.Docile }, //Joltik @ Chargestone Cave + new EncounterStatic { Species = 597, Level = 28, Location = 37, NSparkle = true, Ability = 1, Nature = Nature.Bashful }, //Ferroseed @ Chargestone Cave + new EncounterStatic { Species = 599, Level = 28, Location = 37, NSparkle = true, Ability = 1, Nature = Nature.Rash }, //Klink @ Chargestone Cave + new EncounterStatic { Species = 570, Level = 25, Location = 10, NSparkle = true, Ability = 1, Nature = Nature.Hasty, Gift = true} //N's Zorua @ Driftveil City + }; + + private static readonly EncounterStatic[] Encounter_B2W2 = Encounter_DreamRadar.SelectMany(e => e.DreamRadarClone()).Concat(Encounter_B2W2_Regular).ToArray(); + + #endregion + #region Trade Tables + + internal static readonly EncounterTrade[] TradeGift_BW = + { + new EncounterTrade { Species = 548, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.B, }, // Petilil + new EncounterTrade { Species = 546, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.W, }, // Cottonee + new EncounterTrade { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, Version = GameVersion.B, Form = 0, }, // Basculin-Red + new EncounterTrade { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, Version = GameVersion.W, Form = 1, }, // Basculin-Blue + new EncounterTrade { Species = 587, Level = 30, Ability = 1, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,20,31,20,20,20}, Nature = Nature.Lax, }, // Emolga + new EncounterTrade { Species = 479, Level = 60, Ability = 1, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new[] {20,20,20,20,20,31}, Nature = Nature.Gentle, }, // Rotom + new EncounterTrade { Species = 446, Level = 60, Ability = 2, TID = 40217, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {31,20,20,20,20,20}, Nature = Nature.Serious, }, // Munchlax + }; + + internal static readonly EncounterTrade[] TradeGift_B2W2 = + { + new EncounterTrade { Species = 548, Level = 20, Ability = 2, TID = 65217, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Timid, Version = GameVersion.B2, }, // Petilil + new EncounterTrade { Species = 546, Level = 20, Ability = 1, TID = 05720, SID = 00001, OTGender = 0, Gender = 0, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.W2, }, // Cottonee + new EncounterTrade { Species = 526, Level = 35, Ability = 1, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, }, // Gigalith + new EncounterTrade { Species = 465, Level = 45, Ability = 1, TID = 27658, SID = 00001, OTGender = 0, Gender = 0, IVs = new[] {31,20,20,20,20,20}, Nature = Nature.Hardy, }, // Tangrowth + new EncounterTrade { Species = 479, Level = 60, Ability = 1, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new[] {20,20,20,20,20,31}, Nature = Nature.Calm, }, // Rotom + new EncounterTrade { Species = 424, Level = 40, Ability = 2, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {20,20,20,31,20,20}, Nature = Nature.Jolly, }, // Ambipom + new EncounterTrade { Species = 065, Level = 40, Ability = 1, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {20,20,20,31,20,20}, Nature = Nature.Timid, }, // Alakazam + // player is male + new EncounterTrade { Species = 052, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 202, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 280, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 410, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 111, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 422, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1, Form = 0, }, //Shellos-Red + new EncounterTrade { Species = 303, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 442, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 143, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 216, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 327, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + new EncounterTrade { Species = 175, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, + // player is female + new EncounterTrade { Species = 056, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 202, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 280, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 408, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 111, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 422, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0, Form = 1,}, //Shellos-Blue + new EncounterTrade { Species = 302, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 442, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 143, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 231, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 327, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + new EncounterTrade { Species = 175, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, + }; + + #endregion + #region Alt Slots + + // White forest white version only + + private static readonly int[] WhiteForest_GrassSpecies = + { + 016,029,032,043,063,066,069,081,092,111, + 137,175,179,187,239,240,265,270,273,280, + 287,293,298,304,328,371,396,403,406,440, + }; + + private static readonly int[] WhiteForest_SurfSpecies = + { + 194,270,283,341, + }; + + private static readonly EncounterArea[] WhiteForestSlot = EncounterArea.GetSimpleEncounterArea(WhiteForest_GrassSpecies, new[] { 5, 5 }, 51, SlotType.Grass).Concat( + EncounterArea.GetSimpleEncounterArea(WhiteForest_SurfSpecies, new[] { 5, 5 }, 51, SlotType.Surf)).ToArray(); + + private static readonly EncounterArea[] SlotsBW_Swarm = + { + //level range and Slottype will be marked later + new EncounterArea {Location = 14, Slots = new[]{new EncounterSlot {Species = 083},},},// Farfetch'd @ Route 1 + new EncounterArea {Location = 15, Slots = new[]{new EncounterSlot {Species = 360},},},// Wynant @ Route 2 + new EncounterArea {Location = 17, Slots = new[]{new EncounterSlot {Species = 449},},},// Hippopotas @ Route 4 + new EncounterArea {Location = 18, Slots = new[]{new EncounterSlot {Species = 235},},},// Smeargle @ Route 5 + new EncounterArea {Location = 20, Slots = new[]{new EncounterSlot {Species = 161},},},// Sentret @ Route 7 + new EncounterArea {Location = 21, Slots = new[]{new EncounterSlot {Species = 453},},},// Croagunk @ Route 8 + new EncounterArea {Location = 23, Slots = new[]{new EncounterSlot {Species = 236},},},// Tyrogue @ Route 10 + new EncounterArea {Location = 25, Slots = new[]{new EncounterSlot {Species = 084},},},// Doduo @ Route 12 + new EncounterArea {Location = 26, Slots = new[]{new EncounterSlot {Species = 353},},},// Shuppet @ Route 13 + new EncounterArea {Location = 27, Slots = new[]{new EncounterSlot {Species = 193},},},// Yanma @ Route 14 + new EncounterArea {Location = 28, Slots = new[]{new EncounterSlot {Species = 056},},},// Mankey @ Route 15 + new EncounterArea {Location = 29, Slots = new[]{new EncounterSlot {Species = 204},},},// Pineco @ Route 16 + new EncounterArea {Location = 30, Slots = new[]{new EncounterSlot {Species = 102},},},// Exeggcutes @ Route 18 + }; + + private static readonly EncounterArea[] SlotsB_Swarm = SlotsBW_Swarm.Concat(new[] { + new EncounterArea {Location = 16, Slots = new[]{new EncounterSlot {Species = 313},},},// Volbeat @ Route 3 + new EncounterArea {Location = 19, Slots = new[]{new EncounterSlot {Species = 311},},},// Plusle @ Route 6 + new EncounterArea {Location = 22, Slots = new[]{new EncounterSlot {Species = 228},},},// Houndour @ Route 9 + new EncounterArea {Location = 24, Slots = new[]{new EncounterSlot {Species = 285},},},// Shroomish @ Route 11 + }).ToArray(); + + private static readonly EncounterArea[] SlotsW_Swarm = SlotsBW_Swarm.Concat(new[] { + new EncounterArea {Location = 16, Slots = new[]{new EncounterSlot {Species = 314},},},// Illumise @ Route 3 + new EncounterArea {Location = 19, Slots = new[]{new EncounterSlot {Species = 312},},},// Minun @ Route 6 + new EncounterArea {Location = 22, Slots = new[]{new EncounterSlot {Species = 261},},},// Poochyena @ Route 9 + new EncounterArea {Location = 24, Slots = new[]{new EncounterSlot {Species = 046},},},// Paras @ Route 11 + }).ToArray(); + + private static readonly EncounterArea[] SlotsB2W2_Swarm = + { + //level range and Slottype will be marked later + new EncounterArea {Location = 014, Slots = new[]{new EncounterSlot {Species = 083},},},// Farfetch'd @ Route 1 + new EncounterArea {Location = 018, Slots = new[]{new EncounterSlot {Species = 177},},},// Natu @ Route 5 + new EncounterArea {Location = 020, Slots = new[]{new EncounterSlot {Species = 162},},},// Furret @ Route 7 + new EncounterArea {Location = 021, Slots = new[]{new EncounterSlot {Species = 195},},},// Quagsire @ Route 8 + new EncounterArea {Location = 022, Slots = new[]{new EncounterSlot {Species = 317},},},// Swalot @ Route 9 + new EncounterArea {Location = 024, Slots = new[]{new EncounterSlot {Species = 284},},},// Masquerain @ Route 11 + new EncounterArea {Location = 025, Slots = new[]{new EncounterSlot {Species = 084},},},// Doduo @ Route 12 + new EncounterArea {Location = 026, Slots = new[]{new EncounterSlot {Species = 277},},},// Swellow @ Route 13 + new EncounterArea {Location = 028, Slots = new[]{new EncounterSlot {Species = 022},},},// Fearow @ Route 15 + new EncounterArea {Location = 029, Slots = new[]{new EncounterSlot {Species = 204},},},// Pineco @ Route 16 + new EncounterArea {Location = 031, Slots = new[]{new EncounterSlot {Species = 187},},},// Hoppip @ Route 18 + new EncounterArea {Location = 032, Slots = new[]{new EncounterSlot {Species = 097},},},// Hypno @ Dreamyard + new EncounterArea {Location = 034, Slots = new[]{new EncounterSlot {Species = 450},},},// Hippowdon @ Desert Resort + new EncounterArea {Location = 070, Slots = new[]{new EncounterSlot {Species = 079},},},// Slowpoke @ Abundant shrine + new EncounterArea {Location = 132, Slots = new[]{new EncounterSlot {Species = 332},},},// Cacturne @ Reaversal Mountian + }; + + private static readonly EncounterArea[] SlotsB2_Swarm = SlotsB2W2_Swarm.Concat(new[] { + new EncounterArea {Location = 016, Slots = new[]{new EncounterSlot {Species = 313},},},// Volbeat @ Route 3 + new EncounterArea {Location = 019, Slots = new[]{new EncounterSlot {Species = 311},},},// Plusle @ Route 6 + new EncounterArea {Location = 125, Slots = new[]{new EncounterSlot {Species = 185},},},// Sudowoodo @ Route 20 + new EncounterArea {Location = 127, Slots = new[]{new EncounterSlot {Species = 168},},},// Ariados @ Route 22 + }).ToArray(); + + private static readonly EncounterArea[] SlotsW2_Swarm = SlotsB2W2_Swarm.Concat(new[] { + new EncounterArea {Location = 016, Slots = new[]{new EncounterSlot {Species = 314},},},// Illumise @ Route 3 + new EncounterArea {Location = 019, Slots = new[]{new EncounterSlot {Species = 312},},},// Minun @ Route 6 + new EncounterArea {Location = 125, Slots = new[]{new EncounterSlot {Species = 122},},},// Mr.Mime @ Route 20 + new EncounterArea {Location = 127, Slots = new[]{new EncounterSlot {Species = 166},},},// Ledian @ Route 22 + }).ToArray(); + + private static readonly EncounterSlot[] SlotsB2W2_HiddenGrottoEncounterSlots = + { + // reference http://bulbapedia.bulbagarden.net/wiki/Hidden_Grotto + // Route 2 + new EncounterSlot{ Species = 029, LevelMin = 55, LevelMax = 60, }, // Nidoran-f + new EncounterSlot{ Species = 032, LevelMin = 55, LevelMax = 60, }, // Nidoran-m + new EncounterSlot{ Species = 210, LevelMin = 55, LevelMax = 60, }, // Granbull + new EncounterSlot{ Species = 505, LevelMin = 55, LevelMax = 60, }, // Watchdog + // Route 3 + new EncounterSlot{ Species = 310, LevelMin = 55, LevelMax = 60, }, // Manectric @ Dark grass + new EncounterSlot{ Species = 417, LevelMin = 55, LevelMax = 60, }, // Pachirisu @ Dark grass + new EncounterSlot{ Species = 523, LevelMin = 55, LevelMax = 60, }, // Zebstrika @ Dark grass + new EncounterSlot{ Species = 048, LevelMin = 55, LevelMax = 60, }, // Venonat @ Pond + new EncounterSlot{ Species = 271, LevelMin = 55, LevelMax = 60, }, // Lombre @ Pond + new EncounterSlot{ Species = 400, LevelMin = 55, LevelMax = 60, }, // Bibarel @ Pond + // Route 5 + new EncounterSlot{ Species = 510, LevelMin = 20, LevelMax = 25, }, // Liepard + new EncounterSlot{ Species = 572, LevelMin = 20, LevelMax = 25, }, // Minccino + new EncounterSlot{ Species = 590, LevelMin = 20, LevelMax = 25, }, // Foongus + // Route 6 + new EncounterSlot{ Species = 206, LevelMin = 25, LevelMax = 30, }, // Dunsparce @ Near PKM Breeder + new EncounterSlot{ Species = 299, LevelMin = 25, LevelMax = 30, }, // Nospass @ Mistralton Cave + new EncounterSlot{ Species = 527, LevelMin = 25, LevelMax = 30, }, // Woobat @ Both + new EncounterSlot{ Species = 590, LevelMin = 25, LevelMax = 30, }, // Foongus @ Both + // Route 7 + new EncounterSlot{ Species = 335, LevelMin = 30, LevelMax = 35, }, // Zangoose + new EncounterSlot{ Species = 336, LevelMin = 30, LevelMax = 35, }, // Seviper + new EncounterSlot{ Species = 505, LevelMin = 30, LevelMax = 35, }, // Watechdog + new EncounterSlot{ Species = 613, LevelMin = 30, LevelMax = 35, }, // Cubchoo + // Route 9 + new EncounterSlot{ Species = 089, LevelMin = 35, LevelMax = 40, }, // Muk + new EncounterSlot{ Species = 510, LevelMin = 35, LevelMax = 40, }, // Liepard + new EncounterSlot{ Species = 569, LevelMin = 35, LevelMax = 40, }, // Garbodor + new EncounterSlot{ Species = 626, LevelMin = 35, LevelMax = 40, }, // Bouffalant + // Route 13 + new EncounterSlot{ Species = 114, LevelMin = 35, LevelMax = 40, }, // Tangela @ Gaint Chasm + new EncounterSlot{ Species = 363, LevelMin = 35, LevelMax = 40, }, // Spheal @ Stairs + new EncounterSlot{ Species = 425, LevelMin = 35, LevelMax = 40, }, // Drifloon @ Stairs + new EncounterSlot{ Species = 451, LevelMin = 35, LevelMax = 40, }, // Skorupi @ Gaint Chasm + new EncounterSlot{ Species = 590, LevelMin = 35, LevelMax = 40, }, // Foongus @ Both + // Route 18 + new EncounterSlot{ Species = 099, LevelMin = 55, LevelMax = 60, }, // Kingler + new EncounterSlot{ Species = 149, LevelMin = 55, LevelMax = 60, }, // Dragonite + new EncounterSlot{ Species = 222, LevelMin = 55, LevelMax = 60, }, // Corsola + new EncounterSlot{ Species = 441, LevelMin = 55, LevelMax = 60, }, // Chatot + // Pinwheel Forest + new EncounterSlot{ Species = 061, LevelMin = 55, LevelMax = 60, }, // Poliwhirl @ Outer + new EncounterSlot{ Species = 198, LevelMin = 55, LevelMax = 60, }, // Murkrow @ Inner + new EncounterSlot{ Species = 286, LevelMin = 55, LevelMax = 60, }, // Breloom @ Inner + new EncounterSlot{ Species = 297, LevelMin = 55, LevelMax = 60, }, // Hariyama @ Outer + new EncounterSlot{ Species = 308, LevelMin = 55, LevelMax = 60, }, // Medicham @ Outer + new EncounterSlot{ Species = 371, LevelMin = 55, LevelMax = 60, }, // Bagon @ Outer + new EncounterSlot{ Species = 591, LevelMin = 55, LevelMax = 60, }, // Amoonguss @ Inner + // Giant Chasm + new EncounterSlot{ Species = 035, LevelMin = 45, LevelMax = 50, }, // Clefairy + new EncounterSlot{ Species = 132, LevelMin = 45, LevelMax = 50, }, // Ditto + new EncounterSlot{ Species = 215, LevelMin = 45, LevelMax = 50, }, // Sneasel + new EncounterSlot{ Species = 375, LevelMin = 45, LevelMax = 50, }, // Metang + // Abundant Shrine + new EncounterSlot{ Species = 037, LevelMin = 35, LevelMax = 40, }, // Vulpix @ Near Youngster + new EncounterSlot{ Species = 055, LevelMin = 35, LevelMax = 40, }, // Golduck @ Shrine + new EncounterSlot{ Species = 333, LevelMin = 35, LevelMax = 40, }, // Swablu @ Shrine + new EncounterSlot{ Species = 436, LevelMin = 35, LevelMax = 40, }, // Bronzor @ Near Youngster + new EncounterSlot{ Species = 619, LevelMin = 35, LevelMax = 40, }, // Amoonguss @ Both + // Lostlorn Forest + new EncounterSlot{ Species = 127, LevelMin = 20, LevelMax = 25, }, // Pinsir + new EncounterSlot{ Species = 214, LevelMin = 20, LevelMax = 25, }, // Heracross + new EncounterSlot{ Species = 415, LevelMin = 20, LevelMax = 25, }, // Combee + new EncounterSlot{ Species = 542, LevelMin = 20, LevelMax = 25, }, // Leavanny + // Route 22 + new EncounterSlot{ Species = 279, LevelMin = 40, LevelMax = 45, }, // Peplipper + new EncounterSlot{ Species = 591, LevelMin = 40, LevelMax = 45, }, // Amoonguss + new EncounterSlot{ Species = 619, LevelMin = 50, LevelMax = 55, }, // Mienfoo + // Route 23 + new EncounterSlot{ Species = 055, LevelMin = 50, LevelMax = 55, }, // Golduck + new EncounterSlot{ Species = 207, LevelMin = 50, LevelMax = 55, }, // Gligar + new EncounterSlot{ Species = 335, LevelMin = 50, LevelMax = 55, }, // Zangoose + new EncounterSlot{ Species = 336, LevelMin = 50, LevelMax = 55, }, // Seviper + new EncounterSlot{ Species = 359, LevelMin = 50, LevelMax = 55, }, // Absol + // Floccesy Ranch + new EncounterSlot{ Species = 183, LevelMin = 10, LevelMax = 15, }, // Marill + new EncounterSlot{ Species = 206, LevelMin = 10, LevelMax = 15, }, // Dunsparce + new EncounterSlot{ Species = 507, LevelMin = 10, LevelMax = 15, }, // Herdier + // Funfest Missions + // todo : check the level + new EncounterSlot{Species = 133, LevelMin = 10, LevelMax = 60, }, //Eevee + new EncounterSlot{Species = 134, LevelMin = 10, LevelMax = 60, }, + new EncounterSlot{Species = 135, LevelMin = 10, LevelMax = 60, }, + new EncounterSlot{Species = 136, LevelMin = 10, LevelMax = 60, }, + new EncounterSlot{Species = 196, LevelMin = 10, LevelMax = 60, }, + new EncounterSlot{Species = 197, LevelMin = 10, LevelMax = 60, }, + new EncounterSlot{Species = 470, LevelMin = 10, LevelMax = 60, }, + new EncounterSlot{Species = 471, LevelMin = 10, LevelMax = 60, }, + }; + + private static readonly EncounterArea[] SlotsB2_HiddenGrotto = + { + new EncounterArea + { + Location = 143, // HiddenGrotto + Slots = SlotsB2W2_HiddenGrottoEncounterSlots.Concat(new[]{ + new EncounterSlot{Species = 015, LevelMin = 55, LevelMax = 60 }, // Beedrill @ Pinwheel Forest + new EncounterSlot{Species = 434, LevelMin = 10, LevelMax = 60 }, // Stunky from Funfest Missions + }).ToArray(), + } + }; + + private static readonly EncounterArea[] SlotsW2_HiddenGrotto = + { + new EncounterArea + { + Location = 143, // HiddenGrotto + Slots = SlotsB2W2_HiddenGrottoEncounterSlots.Concat(new[]{ + new EncounterSlot{Species = 012, LevelMin = 55, LevelMax = 60 }, // Butterfree @ Pinwheel Forest + new EncounterSlot{Species = 431, LevelMin = 10, LevelMax = 60 }, // Glameow from Funfest Missions + }).ToArray(), + } + }; + + #endregion + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters6.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters6.cs new file mode 100644 index 000000000..2d752fcf7 --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters6.cs @@ -0,0 +1,356 @@ +using static PKHeX.Core.EncounterUtil; + +namespace PKHeX.Core +{ + internal static class Encounters6 + { + internal static readonly EncounterArea[] SlotsX, SlotsY, SlotsA, SlotsO; + internal static readonly EncounterStatic[] StaticX, StaticY, StaticA, StaticO; + + static Encounters6() + { + StaticX = StaticY = Encounter_XY; + StaticA = StaticO = Encounter_AO; + + var XSlots = GetEncounterTables(GameVersion.X); + var YSlots = GetEncounterTables(GameVersion.Y); + MarkG6XYSlots(ref XSlots); + MarkG6XYSlots(ref YSlots); + SlotsX = AddExtraTableSlots(XSlots, SlotsXYAlt); + SlotsY = AddExtraTableSlots(YSlots, SlotsXYAlt); + + SlotsA = GetEncounterTables(GameVersion.AS); + SlotsO = GetEncounterTables(GameVersion.OR); + MarkG6AOSlots(ref SlotsA); + MarkG6AOSlots(ref SlotsO); + } + private static void MarkG6XYSlots(ref EncounterArea[] Areas) + { + foreach (var area in Areas) + { + int slotct = area.Slots.Length; + for (int i = slotct - 15; i < slotct; i++) + area.Slots[i].Type = SlotType.Horde; + } + ReduceAreasSize(ref Areas); + } + private static void MarkG6AOSlots(ref EncounterArea[] Areas) + { + foreach (var area in Areas) + { + for (int i = 32; i < 37; i++) + area.Slots[i].Type = SlotType.Rock_Smash; + int slotct = area.Slots.Length; + for (int i = slotct - 15; i < slotct; i++) + area.Slots[i].Type = SlotType.Horde; + + for (int i = 0; i < slotct; i++) + area.Slots[i].Permissions.AllowDexNav = area.Slots[i].Type != SlotType.Rock_Smash; + } + ReduceAreasSize(ref Areas); + } + + internal static readonly string[][] TradeXY = + { + new string[0], // 0 - None + Util.GetStringList("tradexy", "ja"), // 1 + Util.GetStringList("tradexy", "en"), // 2 + Util.GetStringList("tradexy", "fr"), // 3 + Util.GetStringList("tradexy", "it"), // 4 + Util.GetStringList("tradexy", "de"), // 5 + new string[0], // 6 - None + Util.GetStringList("tradexy", "es"), // 7 + Util.GetStringList("tradexy", "ko"), // 8 + }; + internal static readonly string[][] TradeAO = + { + new string[0], // 0 - None + Util.GetStringList("tradeao", "ja"), // 1 + Util.GetStringList("tradeao", "en"), // 2 + Util.GetStringList("tradeao", "fr"), // 3 + Util.GetStringList("tradeao", "it"), // 4 + Util.GetStringList("tradeao", "de"), // 5 + new string[0], // 6 - None + Util.GetStringList("tradeao", "es"), // 7 + Util.GetStringList("tradeao", "ko"), // 8 + }; + + #region XY Alt Slots + private static readonly EncounterArea[] SlotsXYAlt = + { + new EncounterArea { + Location = 104, // Victory Road + Slots = new[] + { + // Drops + new EncounterSlot { Species = 075, LevelMin = 57, LevelMax = 57, Form = 0 }, // Graveler + new EncounterSlot { Species = 168, LevelMin = 58, LevelMax = 59, Form = 0 }, // Ariados + new EncounterSlot { Species = 714, LevelMin = 57, LevelMax = 59, Form = 0 }, // Noibat + + // Swoops + new EncounterSlot { Species = 022, LevelMin = 57, LevelMax = 59, Form = 0 }, // Fearow + new EncounterSlot { Species = 227, LevelMin = 57, LevelMax = 59, Form = 0 }, // Skarmory + new EncounterSlot { Species = 635, LevelMin = 59, LevelMax = 59, Form = 0 }, // Hydreigon + },}, + new EncounterArea { + Location = 34, // Route 6 + Slots = new[] + { + // Rustling Bush + new EncounterSlot { Species = 543, LevelMin = 10, LevelMax = 12, Form = 0 }, // Venipede + new EncounterSlot { Species = 531, LevelMin = 10, LevelMax = 12, Form = 0 }, // Audino + },}, + + new EncounterArea { Location = 38, // Route 7 + Slots = new[] + { + // Berry Field + new EncounterSlot { Species = 165, LevelMin = 14, LevelMax = 15, Form = 0 }, // Ledyba + new EncounterSlot { Species = 313, LevelMin = 14, LevelMax = 15, Form = 0 }, // Volbeat + new EncounterSlot { Species = 314, LevelMin = 14, LevelMax = 15, Form = 0 }, // Illumise + new EncounterSlot { Species = 412, LevelMin = 14, LevelMax = 15, Form = 0 }, // Burmy + new EncounterSlot { Species = 415, LevelMin = 14, LevelMax = 15, Form = 0 }, // Combee + new EncounterSlot { Species = 665, LevelMin = 14, LevelMax = 15, Form = 0 }, // Spewpa + },}, + + new EncounterArea { Location = 88, // Route 18 + Slots = new[] + { + // Rustling Bush + new EncounterSlot { Species = 632, LevelMin = 44, LevelMax = 46, Form = 0 }, // Durant + new EncounterSlot { Species = 631, LevelMin = 45, LevelMax = 45, Form = 0 }, // Heatmor + },}, + + new EncounterArea { Location = 132, // Glittering Cave + Slots = new[] + { + // Drops + new EncounterSlot { Species = 527, LevelMin = 15, LevelMax = 17, Form = 0 }, // Woobat + new EncounterSlot { Species = 597, LevelMin = 15, LevelMax = 17, Form = 0 }, // Ferroseed + },}, + + new EncounterArea { Location = 56, // Reflection Cave + Slots = new[] + { + // Drops + new EncounterSlot { Species = 527, LevelMin = 21, LevelMax = 23, Form = 0 }, // Woobat + new EncounterSlot { Species = 597, LevelMin = 21, LevelMax = 23, Form = 0 }, // Ferroseed + },}, + + new EncounterArea { Location = 140, // Terminus Cave + Slots = new[] + { + // Drops + new EncounterSlot { Species = 168, LevelMin = 44, LevelMax = 46, Form = 0 }, // Ariados + new EncounterSlot { Species = 714, LevelMin = 44, LevelMax = 46, Form = 0 }, // Noibat + },}, + }; + #endregion + #region Static Encounter/Gift Tables + private static readonly EncounterStatic[] Encounter_XY = + { + new EncounterStatic { Gift = true, Species = 650, Level = 5, Location = 10, }, // Chespin + new EncounterStatic { Gift = true, Species = 653, Level = 5, Location = 10, }, // Fennekin + new EncounterStatic { Gift = true, Species = 656, Level = 5, Location = 10, }, // Froakie + + new EncounterStatic { Gift = true, Species = 1, Level = 10, Location = 22, }, // Bulbasaur + new EncounterStatic { Gift = true, Species = 4, Level = 10, Location = 22, }, // Charmander + new EncounterStatic { Gift = true, Species = 7, Level = 10, Location = 22, }, // Squirtle + + new EncounterStatic { Gift = true, Species = 138, Level = 20, Location = 44, }, // Omanyte + new EncounterStatic { Gift = true, Species = 140, Level = 20, Location = 44, }, // Kabuto + new EncounterStatic { Gift = true, Species = 142, Level = 20, Location = 44, }, // Aerodactyl + new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 44, }, // Lileep + new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 44, }, // Anorith + new EncounterStatic { Gift = true, Species = 408, Level = 20, Location = 44, }, // Cranidos + new EncounterStatic { Gift = true, Species = 410, Level = 20, Location = 44, }, // Shieldon + new EncounterStatic { Gift = true, Species = 564, Level = 20, Location = 44, }, // Tirtouga + new EncounterStatic { Gift = true, Species = 566, Level = 20, Location = 44, }, // Archen + new EncounterStatic { Gift = true, Species = 696, Level = 20, Location = 44, }, // Tyrunt + new EncounterStatic { Gift = true, Species = 698, Level = 20, Location = 44, }, // Amaura + + new EncounterStatic { Species = 448, Level = 32, Location = 60, Ability = 1, Nature = Nature.Hasty, Gender = 0, IVs = new[] {6, 25, 16, 31, 25, 19}, Gift = true, Shiny = false }, // Lucario + new EncounterStatic { Species = 131, Level = 30, Location = 62, Nature = Nature.Docile, IVs = new[] {31, 20, 20, 20, 20, 20}, Gift = true }, // Lapras + + new EncounterStatic { Species = 143, Level = 15, Location = 38 }, // Snorlax + new EncounterStatic { Species = 568, Level = 35, Location = 142 }, // Trubbish + new EncounterStatic { Species = 569, Level = 36, Location = 142 }, // Garbodor + new EncounterStatic { Species = 569, Level = 37, Location = 142 }, // Garbodor + new EncounterStatic { Species = 569, Level = 38, Location = 142 }, // Garbodor + new EncounterStatic { Species = 479, Level = 38, Location = 142 }, // Rotom + + new EncounterStatic { Species = 569, Level = 46, Location = 98 }, // Garbodor + new EncounterStatic { Species = 569, Level = 47, Location = 98 }, // Garbodor + new EncounterStatic { Species = 569, Level = 48, Location = 98 }, // Garbodor + new EncounterStatic { Species = 569, Level = 49, Location = 98 }, // Garbodor + new EncounterStatic { Species = 569, Level = 50, Location = 98 }, // Garbodor + new EncounterStatic { Species = 354, Level = 46, Location = 98 }, // Banette + new EncounterStatic { Species = 354, Level = 47, Location = 98 }, // Banette + new EncounterStatic { Species = 354, Level = 48, Location = 98 }, // Banette + new EncounterStatic { Species = 354, Level = 49, Location = 98 }, // Banette + new EncounterStatic { Species = 354, Level = 50, Location = 98 }, // Banette + + new EncounterStatic { Species = 716, Level = 50, Location = 138, Version = GameVersion.X, Shiny = false, IV3 = true }, // Xerneas + new EncounterStatic { Species = 717, Level = 50, Location = 138, Version = GameVersion.Y, Shiny = false, IV3 = true }, // Yveltal + new EncounterStatic { Species = 718, Level = 70, Location = 140, Shiny = false, IV3 = true }, // Zygarde + + new EncounterStatic { Species = 150, Level = 70, Location = 168, Shiny = false, IV3 = true }, // Mewtwo + + new EncounterStatic { Species = 144, Level = 70, Location = 146, Shiny = false, IV3 = true }, // Articuno + new EncounterStatic { Species = 145, Level = 70, Location = 146, Shiny = false, IV3 = true }, // Zapdos + new EncounterStatic { Species = 146, Level = 70, Location = 146, Shiny = false, IV3 = true }, // Moltres + }; + private static readonly EncounterStatic[] Encounter_AO = + { + new EncounterStatic { Gift = true, Species = 252, Level = 5, Location = 204, }, // Treeko + new EncounterStatic { Gift = true, Species = 255, Level = 5, Location = 204, }, // Torchic + new EncounterStatic { Gift = true, Species = 258, Level = 5, Location = 204, }, // Mudkip + + new EncounterStatic { Gift = true, Species = 152, Level = 5, Location = 204, }, // Chikorita + new EncounterStatic { Gift = true, Species = 155, Level = 5, Location = 204, }, // Cyndaquil + new EncounterStatic { Gift = true, Species = 158, Level = 5, Location = 204, }, // Totodile + + new EncounterStatic { Gift = true, Species = 387, Level = 5, Location = 204, }, // Turtwig + new EncounterStatic { Gift = true, Species = 390, Level = 5, Location = 204, }, // Chimchar + new EncounterStatic { Gift = true, Species = 393, Level = 5, Location = 204, }, // Piplup + + new EncounterStatic { Gift = true, Species = 495, Level = 5, Location = 204, }, // Snivy + new EncounterStatic { Gift = true, Species = 498, Level = 5, Location = 204, }, // Tepig + new EncounterStatic { Gift = true, Species = 501, Level = 5, Location = 204, }, // Oshawott + + // Fossil + new EncounterStatic { Gift = true, Species = 138, Level = 20, Location = 190, }, // Omanyte + new EncounterStatic { Gift = true, Species = 140, Level = 20, Location = 190, }, // Kabuto + new EncounterStatic { Gift = true, Species = 142, Level = 20, Location = 190, }, // Aerodactyl + new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 190, }, // Lileep + new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 190, }, // Anorith + new EncounterStatic { Gift = true, Species = 408, Level = 20, Location = 190, }, // Cranidos + new EncounterStatic { Gift = true, Species = 410, Level = 20, Location = 190, }, // Shieldon + new EncounterStatic { Gift = true, Species = 564, Level = 20, Location = 190, }, // Tirtouga + new EncounterStatic { Gift = true, Species = 566, Level = 20, Location = 190, }, // Archen + new EncounterStatic { Gift = true, Species = 696, Level = 20, Location = 190, }, // Tyrunt + new EncounterStatic { Gift = true, Species = 698, Level = 20, Location = 190, }, // Amaura + + new EncounterStatic { Species = 25, Level = 20, Location = 178, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu + new EncounterStatic { Species = 25, Level = 20, Location = 180, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu + new EncounterStatic { Species = 25, Level = 20, Location = 186, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu + new EncounterStatic { Species = 25, Level = 20, Location = 194, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu + + new EncounterStatic { Species = 360, Level = 1, EggLocation = 60004, Ability = 1, Gift = true, EggCycles = 70 }, // Wynaut + new EncounterStatic { Species = 175, Level = 1, EggLocation = 60004, Ability = 1, Gift = true, EggCycles = 70 }, // Togepi + new EncounterStatic { Species = 374, Level = 1, Location = 196, Ability = 1, IVs = new[] {-1, -1, 31, -1, -1, 31}, Gift = true }, // Beldum + + new EncounterStatic { Species = 351, Level = 30, Location = 240, Gender = 1, Ability = 1, Nature = Nature.Lax, IVs = new[] {-1, -1, -1, -1, 31, -1}, Contest = new[] {0,100,0,0,0,0}, Gift = true }, // Castform + new EncounterStatic { Species = 319, Level = 40, Location = 318, Gender = 1, Ability = 1, Nature = Nature.Adamant, Gift = true }, // Sharpedo + new EncounterStatic { Species = 323, Level = 40, Location = 318, Gender = 1, Ability = 1, Nature = Nature.Quiet, Gift = true }, // Camerupt + + new EncounterStatic { Species = 380, Level = 30, Location = 320, Version = GameVersion.AS, Ability = 1, Gift = true, IV3 = true }, // Latias + new EncounterStatic { Species = 381, Level = 30, Location = 320, Version = GameVersion.OR, Ability = 1, Gift = true, IV3 = true }, // Latios + + new EncounterStatic { Species = 382, Level = 45, Location = 296, Version = GameVersion.AS, Shiny = false, IV3 = true }, // Kyogre + new EncounterStatic { Species = 383, Level = 45, Location = 296, Version = GameVersion.OR, Shiny = false, IV3 = true }, // Groudon + new EncounterStatic { Species = 384, Level = 70, Location = 316, Shiny = false, IV3 = true }, // Rayquaza + new EncounterStatic { Species = 386, Level = 80, Location = 316, Shiny = false, IV3 = true, Fateful = true }, // Deoxys + + new EncounterStatic { Species = 377, Level = 40, Location = 278, IV3 = true }, // Regirock + new EncounterStatic { Species = 378, Level = 40, Location = 306, IV3 = true }, // Regice + new EncounterStatic { Species = 379, Level = 40, Location = 308, IV3 = true }, // Registeel + new EncounterStatic { Species = 486, Level = 50, Location = 306, IV3 = true }, // Regigigas + + new EncounterStatic { Species = 249, Level = 50, Location = 304, Version = GameVersion.AS, IV3 = true }, // Lugia + new EncounterStatic { Species = 250, Level = 50, Location = 304, Version = GameVersion.OR, IV3 = true }, // Ho-oh + + new EncounterStatic { Species = 483, Level = 50, Location = 348, Version = GameVersion.AS, IV3 = true }, // Dialga + new EncounterStatic { Species = 484, Level = 50, Location = 348, Version = GameVersion.OR, IV3 = true }, // Palkia + + new EncounterStatic { Species = 644, Level = 50, Location = 340, Version = GameVersion.AS, IV3 = true }, // Zekrom + new EncounterStatic { Species = 643, Level = 50, Location = 340, Version = GameVersion.OR, IV3 = true }, // Reshiram + + new EncounterStatic { Species = 642, Level = 50, Location = 348, Version = GameVersion.AS, IV3 = true }, // Thundurus + new EncounterStatic { Species = 641, Level = 50, Location = 348, Version = GameVersion.OR, IV3 = true }, // Tornadus + + new EncounterStatic { Species = 485, Level = 50, Location = 312, IV3 = true }, // Heatran + new EncounterStatic { Species = 487, Level = 50, Location = 348, IV3 = true }, // Giratina + new EncounterStatic { Species = 488, Level = 50, Location = 344, IV3 = true }, // Cresselia + new EncounterStatic { Species = 645, Level = 50, Location = 348, IV3 = true }, // Landorus + new EncounterStatic { Species = 646, Level = 50, Location = 342, IV3 = true }, // Kyurem + + new EncounterStatic { Species = 243, Level = 50, Location = 334, IV3 = true }, // Raikou + new EncounterStatic { Species = 244, Level = 50, Location = 334, IV3 = true }, // Entei + new EncounterStatic { Species = 245, Level = 50, Location = 334, IV3 = true }, // Suicune + + new EncounterStatic { Species = 480, Level = 50, Location = 338, IV3 = true }, // Uxie + new EncounterStatic { Species = 481, Level = 50, Location = 338, IV3 = true }, // Mesprit + new EncounterStatic { Species = 482, Level = 50, Location = 338, IV3 = true }, // Azelf + + new EncounterStatic { Species = 638, Level = 50, Location = 336, IV3 = true }, // Cobalion + new EncounterStatic { Species = 639, Level = 50, Location = 336, IV3 = true }, // Terrakion + new EncounterStatic { Species = 640, Level = 50, Location = 336, IV3 = true }, // Virizion + + new EncounterStatic { Species = 352, Level = 30, Location = 240 }, // Kecleon @ Route 119 + new EncounterStatic { Species = 352, Level = 30, Location = 242 }, // Kecleon @ Route 120 + new EncounterStatic { Species = 352, Level = 40, Location = 176, Gender = 1, }, // Kecleon @ Lavaridge + new EncounterStatic { Species = 352, Level = 45, Location = 196, Ability = 4, }, // Kecleon @ Mossdeep City + + new EncounterStatic { Species = 381, Level = 30, Location = 320, Version = GameVersion.AS, IV3 = true }, // Latios + new EncounterStatic { Species = 380, Level = 30, Location = 320, Version = GameVersion.OR, IV3 = true }, // Latias + + new EncounterStatic { Species = 101, Level = 40, Location = 292, Version = GameVersion.AS }, // Electrode + new EncounterStatic { Species = 101, Level = 40, Location = 314, Version = GameVersion.OR }, // Electrode + + new EncounterStatic { Species = 100, Level = 20, Location = 302 }, // Voltorb @ Route 119 + new EncounterStatic { Species = 442, Level = 50, Location = 304 }, // Spiritomb @ Route 120 + + // Soaring in the Sky + new EncounterStatic { Species = 198, Level = 45, Location = 348 }, // Murkrow + new EncounterStatic { Species = 276, Level = 40, Location = 348 }, // Taillow + new EncounterStatic { Species = 278, Level = 40, Location = 348 }, // Wingull + new EncounterStatic { Species = 279, Level = 40, Location = 348 }, // Pelipper + new EncounterStatic { Species = 333, Level = 40, Location = 348 }, // Swablu + new EncounterStatic { Species = 425, Level = 45, Location = 348 }, // Drifloon + new EncounterStatic { Species = 628, Level = 45, Location = 348 }, // Braviary + }; + #endregion + #region Trade Tables + internal static readonly EncounterTrade[] TradeGift_XY = + { + new EncounterTrade { Species = 129, Level = 5, Ability = 1, Gender = 0, TID = 44285, Nature = Nature.Adamant, }, // Magikarp + new EncounterTrade { Species = 133, Level = 5, Ability = 1, Gender = 1, TID = 29294, Nature = Nature.Docile, }, // Eevee + + new EncounterTrade { Species = 83, Level = 10, Ability = 1, Gender = 0, TID = 00185, Nature = Nature.Jolly, IVs = new[] {-1, -1, -1, 31, -1, -1}, }, // Farfetch'd + new EncounterTrade { Species = 208, Level = 20, Ability = 1, Gender = 1, TID = 19250, Nature = Nature.Impish, IVs = new[] {-1, -1, 31, -1, -1, -1}, }, // Steelix + new EncounterTrade { Species = 625, Level = 50, Ability = 1, Gender = 0, TID = 03447, Nature = Nature.Adamant, IVs = new[] {-1, 31, -1, -1, -1, -1}, }, // Bisharp + + new EncounterTrade { Species = 656, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Jolly, IVs = new[] {20, 20, 20, 31, 20, 20}, }, // Froakie + new EncounterTrade { Species = 650, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Adamant, IVs = new[] {20, 31, 20, 20, 20, 20}, }, // Chespin + new EncounterTrade { Species = 653, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Modest, IVs = new[] {20, 20, 20, 20, 31, 20}, }, // Fennekin + + new EncounterTrade { Species = 280, Level = 5, Ability = 1, Gender = 1, TID = 37110, Nature = Nature.Modest, IVs = new[] {20, 20, 20, 31, 31, 20}, }, // Ralts + }; + internal static readonly EncounterTrade[] TradeGift_AO = + { + new EncounterTrade { Species = 296, Level = 9, Ability = 2, Gender = 0, TID = 30724, Nature = Nature.Brave, IVs = new[] {-1, 31, -1, -1, -1, -1}, }, // Makuhita + new EncounterTrade { Species = 300, Level = 30, Ability = 1, Gender = 1, TID = 03239, Nature = Nature.Naughty, IVs = new[] {-1, -1, -1, 31, -1, -1}, }, // Skitty + new EncounterTrade { Species = 222, Level = 50, Ability = 4, Gender = 1, TID = 00325, Nature = Nature.Calm, IVs = new[] {31, -1, -1, -1, -1, 31}, }, // Corsola + }; + #endregion + #region Pokémon Link Gifts + + internal static readonly EncounterLink[] LinkGifts6 = + { + new EncounterLink { Species = 154, Level = 50, Ability = 4, XY = true, ORAS = true }, // Meganium + new EncounterLink { Species = 157, Level = 50, Ability = 4, XY = true, ORAS = true }, // Typhlosion + new EncounterLink { Species = 160, Level = 50, Ability = 4, XY = true, ORAS = true }, // Feraligatr + + new EncounterLink { Species = 251, Level = 10, Ability = 1, RelearnMoves = new[] {610, 0, 0, 0}, Ball = 11, XY = true }, // Celebi + + new EncounterLink { Species = 377, Level = 50, Ability = 4, RelearnMoves = new[] {153, 8, 444, 359}, XY = true, ORAS = true }, // Regirock + new EncounterLink { Species = 378, Level = 50, Ability = 4, RelearnMoves = new[] {85, 133, 58, 258}, XY = true, ORAS = true }, // Regice + new EncounterLink { Species = 379, Level = 50, Ability = 4, RelearnMoves = new[] {442, 157, 356, 334}, XY = true, ORAS = true }, // Registeel + + new EncounterLink { Species = 208, Level = 40, Ability = 1, RibbonClassic = false, ORAS = true, OT = false }, // Steelix + new EncounterLink { Species = 362, Level = 40, Ability = 1, RibbonClassic = false, ORAS = true, OT = false }, // Glalie + }; + #endregion + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters7.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters7.cs new file mode 100644 index 000000000..6e2fc3f04 --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters7.cs @@ -0,0 +1,193 @@ +using System.Linq; +using static PKHeX.Core.EncounterUtil; + +namespace PKHeX.Core +{ + internal static class Encounters7 + { + internal static readonly EncounterArea[] SlotsSN, SlotsMN; + internal static readonly EncounterStatic[] StaticSN, StaticMN; + + static Encounters7() + { + StaticSN = StaticMN = Encounter_SM; + var REG_SN = GetEncounterTables(GameVersion.SN); + var REG_MN = GetEncounterTables(GameVersion.MN); + var SOS_SN = GetEncounterTables("sm", "sn_sos"); + var SOS_MN = GetEncounterTables("sm", "mn_sos"); + MarkG7REGSlots(ref REG_SN); + MarkG7REGSlots(ref REG_MN); + MarkG7SMSlots(ref SOS_SN); + MarkG7SMSlots(ref SOS_MN); + SlotsSN = AddExtraTableSlots(REG_SN, SOS_SN, Encounter_Pelago_SM, Encounter_Pelago_SN); + SlotsMN = AddExtraTableSlots(REG_MN, SOS_MN, Encounter_Pelago_SM, Encounter_Pelago_MN); + } + private static void MarkG7REGSlots(ref EncounterArea[] Areas) + { + ReduceAreasSize(ref Areas); + } + private static void MarkG7SMSlots(ref EncounterArea[] Areas) + { + foreach (EncounterSlot s in Areas.SelectMany(area => area.Slots)) + s.Type = SlotType.SOS; + ReduceAreasSize(ref Areas); + } + + internal static readonly EncounterStatic[] Encounter_SM = // @ a\1\5\5 + { + // Gifts - 0.bin + new EncounterStatic { Gift = true, Species = 722, Level = 5, Location = 24, }, // Rowlet + new EncounterStatic { Gift = true, Species = 725, Level = 5, Location = 24, }, // Litten + new EncounterStatic { Gift = true, Species = 728, Level = 5, Location = 24, }, // Popplio + new EncounterStatic { Gift = true, Species = 138, Level = 15, Location = 58, }, // Omanyte + new EncounterStatic { Gift = true, Species = 140, Level = 15, Location = 58, }, // Kabuto + new EncounterStatic { Gift = true, Species = 142, Level = 15, Location = 58, }, // Aerodactyl + new EncounterStatic { Gift = true, Species = 345, Level = 15, Location = 58, }, // Lileep + new EncounterStatic { Gift = true, Species = 347, Level = 15, Location = 58, }, // Anorith + new EncounterStatic { Gift = true, Species = 408, Level = 15, Location = 58, }, // Cranidos + new EncounterStatic { Gift = true, Species = 410, Level = 15, Location = 58, }, // Shieldon + new EncounterStatic { Gift = true, Species = 564, Level = 15, Location = 58, }, // Tirtouga + new EncounterStatic { Gift = true, Species = 566, Level = 15, Location = 58, }, // Archen + new EncounterStatic { Gift = true, Species = 696, Level = 15, Location = 58, }, // Tyrunt + new EncounterStatic { Gift = true, Species = 698, Level = 15, Location = 58, }, // Amaura + new EncounterStatic { Gift = true, Species = 133, Level = 1, EggLocation = 60002, }, // Eevee @ Nursery helpers + new EncounterStatic { Gift = true, Species = 137, Level = 30, Location = 116, }, // Porygon @ Route 15 + new EncounterStatic { Gift = true, Species = 772, Level = 40, Location = 188, IV3 = true, }, // Type: Null + new EncounterStatic { Gift = true, Species = 789, Level = 5, Location = 142, Shiny = false, IV3 = true, Version = GameVersion.SN}, // Cosmog 00 FF + new EncounterStatic { Gift = true, Species = 789, Level = 5, Location = 144, Shiny = false, IV3 = true, Version = GameVersion.MN}, // Cosmog 00 FF + new EncounterStatic { Gift = true, Species = 142, Level = 40, Location = 172, }, // Aerodactyl @ Seafolk Village + + new EncounterStatic { Gift = true, Species = 718, Form = 0, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + new EncounterStatic { Gift = true, Species = 718, Form = 1, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + new EncounterStatic { Gift = true, Species = 718, Form = 2, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + new EncounterStatic { Gift = true, Species = 718, Form = 3, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + + new EncounterStatic { Gift = true, Species = 718, Form = 0, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + new EncounterStatic { Gift = true, Species = 718, Form = 1, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + new EncounterStatic { Gift = true, Species = 718, Form = 2, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + new EncounterStatic { Gift = true, Species = 718, Form = 3, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde + + new EncounterStatic // Magearna (Bottle Cap) 00 FF + { + Gift = true, Species = 801, Level = 50, Location = 40001, Shiny = false, IV3 = true, + Fateful = true, RibbonWishing = true, Relearn = new [] {705, 430, 381, 270}, Ball = 0x10, // Cherish + }, + + // Static Encounters - 1.bin + new EncounterStatic { Species = 791, Level = 55, Relearn = new[]{713, 322, 242, 428}, Shiny = false, Ability = 1, Location = 176, IV3 = true, Version = GameVersion.SN }, // Solgaleo + new EncounterStatic { Species = 792, Level = 55, Relearn = new[]{714, 322, 539, 247}, Shiny = false, Ability = 1, Location = 178, IV3 = true, Version = GameVersion.MN }, // Lunala + + new EncounterStatic { Species = 746, Level = 17, Shiny = false, Ability = 1, Location = 86, }, // Wishiwashi + new EncounterStatic { Species = 746, Level = 18, Shiny = false, Ability = 1, Location = 86, }, // Wishiwashi + + new EncounterStatic { Species = 793, Level = 55, Shiny = false, Ability = 1, Location = 082, IV3 = true, }, // Nihilego @ Wela Volcano Park + new EncounterStatic { Species = 793, Level = 55, Shiny = false, Ability = 1, Location = 100, IV3 = true, }, // Nihilego @ Diglett’s Tunnel + new EncounterStatic { Species = 794, Level = 65, Shiny = false, Ability = 1, Location = 040, IV3 = true, Version = GameVersion.SN }, // Buzzwole @ Melemele Meadow + new EncounterStatic { Species = 795, Level = 60, Shiny = false, Ability = 1, Location = 046, IV3 = true, Version = GameVersion.MN }, // Pheromosa @ Verdant Cavern (Trial Site) + new EncounterStatic { Species = 796, Level = 65, Shiny = false, Ability = 1, Location = 090, IV3 = true, }, // Xurkitree @ Lush Jungle + new EncounterStatic { Species = 796, Level = 65, Shiny = false, Ability = 1, Location = 076, IV3 = true, }, // Xurkitree @ Memorial Hill + new EncounterStatic { Species = 798, Level = 60, Shiny = false, Ability = 1, Location = 134, IV3 = true, Version = GameVersion.SN }, // Kartana @ Malie Garden + new EncounterStatic { Species = 798, Level = 60, Shiny = false, Ability = 1, Location = 120, IV3 = true, Version = GameVersion.SN }, // Kartana @ Route 17 + new EncounterStatic { Species = 797, Level = 65, Shiny = false, Ability = 1, Location = 124, IV3 = true, Version = GameVersion.MN }, // Celesteela @ Haina Desert + new EncounterStatic { Species = 797, Level = 65, Shiny = false, Ability = 1, Location = 134, IV3 = true, Version = GameVersion.MN }, // Celesteela @ Malie Garden + new EncounterStatic { Species = 799, Level = 70, Shiny = false, Ability = 1, Location = 182, IV3 = true, }, // Guzzlord @ Resolution Cave + new EncounterStatic { Species = 800, Level = 75, Shiny = false, Ability = 1, Location = 036, IV3 = true, }, // Necrozma @ Ten Carat Hill (Farthest Hollow) + + // QR Scan: Su/M/Tu/W/Th/F/Sa + // Melemele Island + new EncounterStatic { Species = 155, Level = 12, Relearn = new[]{024, 052, 108, 043}, Location = 010, }, // Cyndaquil @ Route 3 + new EncounterStatic { Species = 158, Level = 12, Relearn = new[]{232, 099, 055, 043}, Location = 042, }, // Totodile @ Seaward Cave + new EncounterStatic { Species = 633, Level = 13, Relearn = new[]{372, 029, 044, 116}, Location = 034, }, // Deino @ Ten Carat Hill + new EncounterStatic { Species = 116, Level = 18, Relearn = new[]{225, 239, 055, 043}, Location = 014, }, // Horsea @ Kala'e Bay + new EncounterStatic { Species = 599, Level = 08, Relearn = new[]{268, 011, 000, 000}, Location = 020, }, // Klink @ Hau'oli City + new EncounterStatic { Species = 152, Level = 10, Relearn = new[]{073, 077, 075, 045}, Location = 012, }, // Chikorita @ Route 2 + new EncounterStatic { Species = 607, Level = 10, Relearn = new[]{051, 109, 083, 123}, Location = 038, }, // Litwick @ Hau'oli Cemetery + + // Akala Island + new EncounterStatic { Species = 574, Level = 17, Relearn = new[]{399, 060, 003, 313}, Location = 054, }, // Gothita @ Route 6 + new EncounterStatic { Species = 363, Level = 19, Relearn = new[]{392, 362, 301, 227}, Location = 056, }, // Spheal @ Route 7 + new EncounterStatic { Species = 404, Level = 20, Relearn = new[]{598, 044, 209, 268}, Location = 058, }, // Luxio @ Route 8 + new EncounterStatic { Species = 679, Level = 23, Relearn = new[]{194, 332, 425, 475}, Location = 094, }, // Honedge @ Akala Outskirts + new EncounterStatic { Species = 543, Level = 14, Relearn = new[]{390, 228, 103, 040}, Location = 050, }, // Venipede @ Route 4 + new EncounterStatic { Species = 069, Level = 16, Relearn = new[]{491, 077, 079, 035}, Location = 052, }, // Bellsprout @ Route 5 + new EncounterStatic { Species = 183, Level = 17, Relearn = new[]{453, 270, 061, 205}, Location = 086, }, // Marill @ Brooklet Hill + + // Ula'ula Island + new EncounterStatic { Species = 111, Level = 30, Relearn = new[]{130, 350, 498, 523}, Location = 138, }, // Rhyhorn @ Blush Mountain + new EncounterStatic { Species = 220, Level = 31, Relearn = new[]{573, 036, 420, 196}, Location = 114, }, // Swinub @ Tapu Village + new EncounterStatic { Species = 578, Level = 33, Relearn = new[]{101, 248, 283, 473}, Location = 118, }, // Duosion @ Route 16 + new EncounterStatic { Species = 315, Level = 34, Relearn = new[]{437, 275, 230, 390}, Location = 128, }, // Roselia @ Ula'ula Meadow + new EncounterStatic { Species = 397, Level = 27, Relearn = new[]{355, 018, 283, 104}, Location = 106, }, // Staravia @ Route 10 + new EncounterStatic { Species = 288, Level = 27, Relearn = new[]{359, 498, 163, 203}, Location = 108, }, // Vigoroth @ Route 11 + new EncounterStatic { Species = 610, Level = 28, Relearn = new[]{231, 337, 206, 163}, Location = 136, }, // Axew @ Mount Hokulani + + // Poni Island + new EncounterStatic { Species = 604, Level = 55, Relearn = new[]{435, 051, 029, 306}, Location = 164, }, // Eelektross @ Poni Grove + new EncounterStatic { Species = 534, Level = 57, Relearn = new[]{409, 276, 264, 444}, Location = 166, }, // Conkeldurr @ Poni Plains + new EncounterStatic { Species = 468, Level = 59, Relearn = new[]{248, 403, 396, 245}, Location = 170, }, // Togekiss @ Poni Gauntlet + new EncounterStatic { Species = 542, Level = 57, Relearn = new[]{382, 437, 014, 494}, Location = 156, }, // Leavanny @ Poni Meadow + new EncounterStatic { Species = 497, Level = 43, Relearn = new[]{137, 489, 348, 021}, Location = 184, }, // Serperior @ Exeggutor Island + new EncounterStatic { Species = 503, Level = 43, Relearn = new[]{362, 227, 453, 279}, Location = 158, }, // Samurott @ Poni Wilds + new EncounterStatic { Species = 500, Level = 43, Relearn = new[]{276, 053, 372, 535}, Location = 160, }, // Emboar @ Ancient Poni Path + + new EncounterStatic { Species = 785, Level = 60, Shiny = false, Ability = 1, Location = 030, IV3 = true, }, // Tapu Koko + new EncounterStatic { Species = 786, Level = 60, Shiny = false, Ability = 1, Location = 092, IV3 = true, }, // Tapu Lele + new EncounterStatic { Species = 787, Level = 60, Shiny = false, Ability = 1, Location = 140, IV3 = true, }, // Tapu Bulu + new EncounterStatic { Species = 788, Level = 60, Shiny = false, Ability = 1, Location = 180, IV3 = true, }, // Tapu Fini + + new EncounterStatic { Species = 103, Form = 1, Level = 40, Ability = 1, Location = 184, }, // Exeggutor-1 @ Exeggutor Island + }; + internal static readonly EncounterTrade[] TradeGift_SM = // @ a\1\5\5 + { + // Trades - 4.bin + new EncounterTrade { Species = 066, Form = 0, Level = 09, Ability = 2, TID = 00410, SID = 00000, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 1, Gender = 0, Nature = Nature.Brave, }, // Machop + new EncounterTrade { Species = 761, Form = 0, Level = 16, Ability = 1, TID = 20683, SID = 00009, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 0, Gender = 1, Nature = Nature.Adamant, }, // Bounsweet + new EncounterTrade { Species = 061, Form = 0, Level = 22, Ability = 2, TID = 01092, SID = 00009, IVs = new[] {31,-1,-1,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Naughty, }, // Poliwhirl + new EncounterTrade { Species = 440, Form = 0, Level = 27, Ability = 2, TID = 10913, SID = 00000, IVs = new[] {-1,-1,-1,-1,31,-1}, OTGender = 1, Gender = 1, Nature = Nature.Calm, }, // Happiny + new EncounterTrade { Species = 075, Form = 1, Level = 32, Ability = 1, TID = 20778, SID = 00009, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Impish, EvolveOnTrade = true }, // Graveler-1 + new EncounterTrade { Species = 762, Form = 0, Level = 43, Ability = 1, TID = 20679, SID = 00009, IVs = new[] {-1,-1,-1,-1,-1,31}, OTGender = 1, Gender = 1, Nature = Nature.Careful, }, // Steenee + new EncounterTrade { Species = 663, Form = 0, Level = 59, Ability = 4, TID = 56734, SID = 00008, IVs = new[] {-1,-1,-1,31,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Jolly, }, // Talonflame + }; + + internal static readonly EncounterArea[] Encounter_Pelago_SM = + { + new EncounterArea + { + Location = 30016, // Poké Pelago + Slots = new[] + { + new EncounterSlot {Species = 021, LevelMin = 01, LevelMax = 55}, // Spearow + new EncounterSlot {Species = 041, LevelMin = 01, LevelMax = 55}, // Zubat + new EncounterSlot {Species = 090, LevelMin = 01, LevelMax = 55}, // Shellder + new EncounterSlot {Species = 278, LevelMin = 01, LevelMax = 55}, // Wingull + new EncounterSlot {Species = 731, LevelMin = 01, LevelMax = 55}, // Pikipek + + new EncounterSlot {Species = 064, LevelMin = 11, LevelMax = 55}, // Kadabra + new EncounterSlot {Species = 081, LevelMin = 11, LevelMax = 55}, // Magnemite + new EncounterSlot {Species = 092, LevelMin = 11, LevelMax = 55}, // Gastly + new EncounterSlot {Species = 198, LevelMin = 11, LevelMax = 55}, // Murkrow + new EncounterSlot {Species = 426, LevelMin = 11, LevelMax = 55}, // Drifblim + new EncounterSlot {Species = 703, LevelMin = 11, LevelMax = 55}, // Carbink + + new EncounterSlot {Species = 060, LevelMin = 21, LevelMax = 55}, // Poliwag + new EncounterSlot {Species = 120, LevelMin = 21, LevelMax = 55}, // Staryu + new EncounterSlot {Species = 127, LevelMin = 21, LevelMax = 55}, // Pinsir + new EncounterSlot {Species = 661, LevelMin = 21, LevelMax = 55}, // Fletchling + new EncounterSlot {Species = 709, LevelMin = 21, LevelMax = 55}, // Trevenant + new EncounterSlot {Species = 771, LevelMin = 21, LevelMax = 55}, // Pyukumuku + + new EncounterSlot {Species = 227, LevelMin = 37, LevelMax = 55}, // Skarmory + new EncounterSlot {Species = 375, LevelMin = 37, LevelMax = 55}, // Metang + new EncounterSlot {Species = 707, LevelMin = 37, LevelMax = 55}, // Klefki + + new EncounterSlot {Species = 123, LevelMin = 49, LevelMax = 55}, // Scyther + new EncounterSlot {Species = 131, LevelMin = 49, LevelMax = 55}, // Lapras + new EncounterSlot {Species = 429, LevelMin = 49, LevelMax = 55}, // Mismagius + new EncounterSlot {Species = 587, LevelMin = 49, LevelMax = 55}, // Emolga + }, + } + }; + internal static readonly EncounterArea[] Encounter_Pelago_SN = { new EncounterArea { Location = 30016, Slots = new[] { new EncounterSlot { Species = 627, LevelMin = 1, LevelMax = 55 }, /* Rufflet SUN */ } } }; + internal static readonly EncounterArea[] Encounter_Pelago_MN = { new EncounterArea { Location = 30016, Slots = new[] { new EncounterSlot { Species = 629, LevelMin = 1, LevelMax = 55 }, /* Vullaby MOON */ } } }; + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/EncountersWC3.cs b/PKHeX.Core/Legality/Encounters/Data/EncountersWC3.cs new file mode 100644 index 000000000..f55bc62ca --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/EncountersWC3.cs @@ -0,0 +1,248 @@ +using System.Linq; + +namespace PKHeX.Core +{ + internal static class EncountersWC3 + { + internal static readonly MysteryGift[] Encounter_Event3 = + { + new WC3 { Species = 251, Level = 10, TID = 31121, OT_Gender = 1, OT_Name = "アゲト", CardTitle = "Agate Celebi", Method = PIDType.CXD, Shiny = false, Language = 1 }, + new WC3 { Species = 025, Level = 10, TID = 31121, OT_Gender = 0, OT_Name = "コロシアム", CardTitle = "Colosseum Pikachu", Method = PIDType.CXD, Shiny = false, Language = 1 }, + + new WC3 { Species = 385, Level = 05, TID = 20043, OT_Gender = 0, OT_Name = "WISHMKR", CardTitle = "Wishmaker Jirachi", Method = PIDType.BACD_R, Language = 2 }, + new WC3 { Species = 251, Level = 10, TID = 31121, OT_Gender = 1, OT_Name = "AGATE", CardTitle = "Agate Celebi", Method = PIDType.CXD, Shiny = false, Language = 2, NotDistributed = true }, + new WC3 { Species = 025, Level = 10, TID = 31121, OT_Gender = 0, OT_Name = "COLOS", CardTitle = "Colosseum Pikachu", Method = PIDType.CXD, Shiny = false, Language = 2, NotDistributed = true }, + + new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "バトルやま", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 1 }, // JPN + new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MATTLE", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 2 }, // ENG + new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MT BATA", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 3 }, // FRE + new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "DUELLBE", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 5 }, // GER + new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MONTE L", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 4 }, // ITA + new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "ERNESTO", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 7 }, // SPA + + // CXD + new WC3 { Species = 239, Level = 20, Language = 2, Fateful = true, Met_Location = 164, TID = 41400, SID = -1, OT_Gender = 0, OT_Name = "HORDEL", CardTitle = "Trade Togepi", Method = PIDType.CXD, Moves = new[] {8,7,9,238} }, // Elekid @ Snagem Hideout + new WC3 { Species = 307, Level = 20, Language = 2, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Trade Trapinch", Method = PIDType.CXD, Moves = new[] {223,93,247,197} }, // Meditite @ Pyrite Town + new WC3 { Species = 213, Level = 20, Language = 2, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Trade Surskit", Method = PIDType.CXD, Moves = new[] {92,164,188,277} }, // Shuckle @ Pyrite Town + new WC3 { Species = 246, Level = 20, Language = 2, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Trade Wooper", Method = PIDType.CXD, Moves = new[] {201,349,44,200} }, // Larvitar @ Pyrite Town + new WC3 { Species = 311, Level = 13, Language = 2, Fateful = false, Met_Location = 254, TID = 37149, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Gift", Method = PIDType.CXD }, // Plusle @ Ingame Trade + + new WC3 { Species = 239, Level = 20, Language = 1, Fateful = true, Met_Location = 164, TID = 41400, SID = -1, OT_Gender = 0, OT_Name = "ダニー", CardTitle = "Trade Togepi", Method = PIDType.CXD, Moves = new[] {8,7,9,238} }, // Elekid @ Snagem Hideout + new WC3 { Species = 307, Level = 20, Language = 1, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Trade Trapinch", Method = PIDType.CXD, Moves = new[] {223,93,247,197} }, // Meditite @ Pyrite Town + new WC3 { Species = 213, Level = 20, Language = 1, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Trade Surskit", Method = PIDType.CXD, Moves = new[] {92,164,188,277} }, // Shuckle @ Pyrite Town + new WC3 { Species = 246, Level = 20, Language = 1, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Trade Wooper", Method = PIDType.CXD, Moves = new[] {201,349,44,200} }, // Larvitar @ Pyrite Town + new WC3 { Species = 311, Level = 13, Language = 1, Fateful = false, Met_Location = 254, TID = 37149, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Gift", Method = PIDType.CXD }, // Plusle @ Ingame Trade + }; + + internal static readonly MysteryGift[] Encounter_Event3_FRLG = + { + // PCJP - Egg Pokémon Present Eggs (March 21 to April 4, 2004) + new WC3 { Species = 043, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{073} }, // Oddish with Leech Seed + new WC3 { Species = 052, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{080} }, // Meowth with Petal Dance + new WC3 { Species = 060, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{186} }, // Poliwag with Sweet Kiss + new WC3 { Species = 069, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{298} }, // Bellsprout with Teeter Dance + + // PCNY - Wish Eggs (December 16, 2004, to January 2, 2005) + new WC3 { Species = 083, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 281} }, // Farfetch'd with Wish & Yawn + new WC3 { Species = 096, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 187} }, // Drowzee with Wish & Belly Drum + new WC3 { Species = 102, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 230} }, // Exeggcute with Wish & Sweet Scent + new WC3 { Species = 108, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 215} }, // Lickitung with Wish & Heal Bell + new WC3 { Species = 113, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 230} }, // Chansey with Wish & Sweet Scent + new WC3 { Species = 115, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 281} }, // Kangaskhan with Wish & Yawn + + // PokePark Eggs - Wondercard + new WC3 { Species = 054, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Psyduck with Mud Sport + new WC3 { Species = 172, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{266}, Method = PIDType.Method_2 }, // Pichu with Follow me + new WC3 { Species = 174, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{321}, Method = PIDType.Method_2 }, // Igglybuff with Tickle + new WC3 { Species = 222, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Corsola with Mud Sport + new WC3 { Species = 276, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{297}, Method = PIDType.Method_2 }, // Taillow with Feather Dance + new WC3 { Species = 283, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Surskit with Mud Sport + new WC3 { Species = 293, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{298}, Method = PIDType.Method_2 }, // Whismur with Teeter Dance + new WC3 { Species = 300, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{205}, Method = PIDType.Method_2 }, // Skitty with Rollout + new WC3 { Species = 311, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{346}, Method = PIDType.Method_2 }, // Plusle with Water Sport + new WC3 { Species = 312, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Minun with Mud Sport + new WC3 { Species = 325, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{253}, Method = PIDType.Method_2 }, // Spoink with Uproar + new WC3 { Species = 327, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{047}, Method = PIDType.Method_2 }, // Spinda with Sing + new WC3 { Species = 331, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{227}, Method = PIDType.Method_2 }, // Cacnea with Encore + new WC3 { Species = 341, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{346}, Method = PIDType.Method_2 }, // Corphish with Water Sport + new WC3 { Species = 360, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{321}, Method = PIDType.Method_2 }, // Wynaut with Tickle + }; + + internal static readonly MysteryGift[] Encounter_Event3_RS = + { + // PCJP - Pokémon Center 5th Anniversary Eggs (April 25 to May 18, 2003) + new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{298} }, // Pichu with Teeter Dance + new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Pichu with Wish + new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R_S, Moves = new[]{298} }, // Pichu with Teeter Dance + new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R_S, Moves = new[]{273} }, // Pichu with Wish + new WC3 { Species = 280, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{204 } }, // Ralts with Charm + new WC3 { Species = 280, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Ralts with Wish + new WC3 { Species = 359, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{180} }, // Absol with Spite + new WC3 { Species = 359, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Absol with Wish + new WC3 { Species = 371, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{334} }, // Bagon with Iron Defense + new WC3 { Species = 371, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Bagon with Wish + + // Negai Boshi Jirachi + new WC3 { Species = 385, Level = 05, TID = 30719, OT_Gender = 0, OT_Name = "ネガイボシ", Method = PIDType.BACD_R, Language = 1, Shiny = false }, + + // Berry Glitch Fix + // PCJP - (December 29, 2003 to March 31, 2004) + new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 1, Method = PIDType.BACD_R_S, TID = 21121, OT_Name = "ルビー", OT_Gender = 1, Shiny = true }, + new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 1, Method = PIDType.BACD_R_S, TID = 21121, OT_Name = "サファイア", OT_Gender = 0, Shiny = true }, + + // EBGames/GameStop (March 1, 2004 to April 22, 2007), also via multi-game discs + new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 2, Method = PIDType.BACD_R_S, TID = 30317, OT_Name = "RUBY", OT_Gender = 1 }, + new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 2, Method = PIDType.BACD_R_S, TID = 30317, OT_Name = "SAPHIRE", OT_Gender = 0 }, + + // Channel Jirachi + new WC3 { Species = 385, Level = 5, Version = (int)GameVersion.RS, Method = PIDType.Channel, TID = 40122, OT_Gender = 3,SID = -1, OT_Name = "CHANNEL", CardTitle = "Channel Jirachi", Met_Level = 0 }, + + // Aura Mew + new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 2, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew + new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 3, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew + new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 4, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew + new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 5, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew + new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 7, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew + + // English Events + new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Charizard + new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Pikachu + new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Articuno + new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Raikou + new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Entei + new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Suicune + new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Lugia + new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Ho-Oh + new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latias + new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latios + + // French + new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Charizard + new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Pikachu + new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Articuno + new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Raikou + new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Entei + new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Suicune + new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Lugia + new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Ho-Oh + new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latias + new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latios + + // Italian + new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Charizard + new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Pikachu + new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Articuno + new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Raikou + new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Entei + new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Suicune + new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Lugia + new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Ho-Oh + new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Latias + new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Latios + + // German + new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Charizard + new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Pikachu + new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Articuno + new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Raikou + new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Entei + new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Suicune + new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Lugia + new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Ho-Oh + new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Latias + new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Latios + + // Spanish + new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Charizard + new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Pikachu + new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Articuno + new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Raikou + new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Entei + new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Suicune + new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Lugia + new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Ho-Oh + new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Latias + new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Latios + + new WC3 { Species = 375, Level = 30, Version = (int)GameVersion.R, Moves = new[] {036,093,232,287}, Language = 2, Method = PIDType.BACD_R, TID = 02005, OT_Name = "ROCKS", OT_Gender = 0, RibbonNational = true, Shiny = false }, // Metang + new WC3 { Species = 386, Level = 70, Version = (int)GameVersion.R, Moves = new[] {322,105,354,063}, Language = 2, Method = PIDType.BACD_R, TID = 28606, OT_Name = "DOEL", Fateful = true, Shiny = false }, // Deoxys + new WC3 { Species = 386, Level = 70, Version = (int)GameVersion.R, Moves = new[] {322,105,354,063}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "SPACE C", Fateful = true, Shiny = false }, // Deoxys + new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 2, Method = PIDType.BACD_U, TID = 06930, OT_Name = "MYSTRY", Fateful = true, Shiny = false }, // Mew + new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 2, Method = PIDType.BACD_R, TID = 06930, OT_Name = "MYSTRY", Fateful = true, Shiny = false }, // Mew + + // Party of the Decade + new WC3 { Species = 001, Level = 70, Version = (int)GameVersion.R, Moves = new[] {230,074,076,235}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Bulbasaur + new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Charizard + new WC3 { Species = 009, Level = 70, Version = (int)GameVersion.R, Moves = new[] {182,240,130,056}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Blastoise + new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,087,113,019}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", HeldItem = 202, Shiny = false }, // Pikachu (Fly) + new WC3 { Species = 065, Level = 70, Version = (int)GameVersion.R, Moves = new[] {248,347,094,271}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Alakazam + new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Articuno + new WC3 { Species = 145, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,197,065,268}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Zapdos + new WC3 { Species = 146, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,203,053,219}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Moltres + new WC3 { Species = 149, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,219,017,200}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Dragonite + new WC3 { Species = 157, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,172,129,053}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Typhlosion + new WC3 { Species = 196, Level = 70, Version = (int)GameVersion.R, Moves = new[] {060,244,094,234}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Espeon + new WC3 { Species = 197, Level = 70, Version = (int)GameVersion.R, Moves = new[] {185,212,103,236}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Umbreon + new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Raikou + new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Entei + new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Suicune + new WC3 { Species = 248, Level = 70, Version = (int)GameVersion.R, Moves = new[] {037,184,242,089}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Tyranitar + new WC3 { Species = 257, Level = 70, Version = (int)GameVersion.R, Moves = new[] {299,163,119,327}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Blaziken + new WC3 { Species = 359, Level = 70, Version = (int)GameVersion.R, Moves = new[] {104,163,248,195}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Absol + new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latias + new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latios + + // Journey Across America + new WC3 { Species = 001, Level = 70, Version = (int)GameVersion.R, Moves = new[] {230,074,076,235}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Bulbasaur + new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Charizard + new WC3 { Species = 009, Level = 70, Version = (int)GameVersion.R, Moves = new[] {182,240,130,056}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Blastoise + new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", HeldItem = 202, Shiny = false }, // Pikachu (No Fly) + new WC3 { Species = 065, Level = 70, Version = (int)GameVersion.R, Moves = new[] {248,347,094,271}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Alakazam + new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Articuno + new WC3 { Species = 145, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,197,065,268}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Zapdos + new WC3 { Species = 146, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,203,053,219}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Moltres + new WC3 { Species = 149, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,219,017,200}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Dragonite + new WC3 { Species = 157, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,172,129,053}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Typhlosion + new WC3 { Species = 196, Level = 70, Version = (int)GameVersion.R, Moves = new[] {060,244,094,234}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Espeon + new WC3 { Species = 197, Level = 70, Version = (int)GameVersion.R, Moves = new[] {185,212,103,236}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Umbreon + new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Raikou + new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Entei + new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Suicune + new WC3 { Species = 248, Level = 70, Version = (int)GameVersion.R, Moves = new[] {037,184,242,089}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Tyranitar + new WC3 { Species = 251, Level = 70, Version = (int)GameVersion.R, Moves = new[] {246,248,226,195}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Celebi + new WC3 { Species = 257, Level = 70, Version = (int)GameVersion.R, Moves = new[] {299,163,119,327}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Blaziken + new WC3 { Species = 359, Level = 70, Version = (int)GameVersion.R, Moves = new[] {104,163,248,195}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Absol + new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latias + new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latios + }; + + internal static readonly MysteryGift[] Encounter_Event3_Common = + { + // Pokémon Box + new WC3 { Species = 333, IsEgg = true, Level = 05, Moves = new[]{206}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Swablu Egg with False Swipe + new WC3 { Species = 263, IsEgg = true, Level = 05, Moves = new[]{245}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Zigzagoon Egg with Extreme Speed + new WC3 { Species = 300, IsEgg = true, Level = 05, Moves = new[]{006}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Skitty Egg with Pay Day + new WC3 { Species = 172, IsEgg = true, Level = 05, Moves = new[]{057}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Pichu Egg with Surf + + // PokePark Eggs - DS Download Play + new WC3 { Species = 054, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Psyduck with Mud Sport + new WC3 { Species = 172, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{266}, Method = PIDType.BACD_R }, // Pichu with Follow me + new WC3 { Species = 174, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{321}, Method = PIDType.BACD_R }, // Igglybuff with Tickle + new WC3 { Species = 222, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Corsola with Mud Sport + new WC3 { Species = 276, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{297}, Method = PIDType.BACD_R }, // Taillow with Feather Dance + new WC3 { Species = 283, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Surskit with Mud Sport + new WC3 { Species = 293, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{298}, Method = PIDType.BACD_R }, // Whismur with Teeter Dance + new WC3 { Species = 300, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{205}, Method = PIDType.BACD_R }, // Skitty with Rollout + new WC3 { Species = 311, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{346}, Method = PIDType.BACD_R }, // Plusle with Water Sport + new WC3 { Species = 312, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Minun with Mud Sport + new WC3 { Species = 325, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{253}, Method = PIDType.BACD_R }, // Spoink with Uproar + new WC3 { Species = 327, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{047}, Method = PIDType.BACD_R }, // Spinda with Sing + new WC3 { Species = 331, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{227}, Method = PIDType.BACD_R }, // Cacnea with Encore + new WC3 { Species = 341, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{346}, Method = PIDType.BACD_R }, // Corphish with Water Sport + new WC3 { Species = 360, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{321}, Method = PIDType.BACD_R }, // Wynaut with Tickle + }; + + internal static readonly MysteryGift[] Encounter_WC3 = Encounter_Event3.Concat(Encounter_Event3_RS).Concat(Encounter_Event3_FRLG.Concat(Encounter_Event3_Common)).ToArray(); + + } +} diff --git a/PKHeX.Core/Legality/Encounters/EncounterGenerator.cs b/PKHeX.Core/Legality/Encounters/EncounterGenerator.cs index 54d824a6a..9dc6e9ea3 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterGenerator.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterGenerator.cs @@ -732,7 +732,7 @@ private static IEnumerable GetValidLinkGifts(PKM pkm) switch (pkm.GenNumber) { case 6: - return LinkGifts6.Where(g => g.Species == pkm.Species && g.Level == pkm.Met_Level); + return Encounters6.LinkGifts6.Where(g => g.Species == pkm.Species && g.Level == pkm.Met_Level); default: return new EncounterLink[0]; } @@ -744,15 +744,15 @@ private static EncounterTrade[] GetEncounterTradeTable(PKM pkm) switch (pkm.GenNumber) { case 3: - return pkm.FRLG ? TradeGift_FRLG : TradeGift_RSE; + return pkm.FRLG ? Encounters3.TradeGift_FRLG : Encounters3.TradeGift_RSE; case 4: - return pkm.HGSS ? TradeGift_HGSS : TradeGift_DPPt; + return pkm.HGSS ? Encounters4.TradeGift_HGSS : Encounters4.TradeGift_DPPt; case 5: - return pkm.B2W2 ? TradeGift_B2W2 : TradeGift_BW; + return pkm.B2W2 ? Encounters5.TradeGift_B2W2 : Encounters5.TradeGift_BW; case 6: - return pkm.XY ? TradeGift_XY : TradeGift_AO; + return pkm.XY ? Encounters6.TradeGift_XY : Encounters6.TradeGift_AO; case 7: - return pkm.SM ? TradeGift_SM : null; + return pkm.SM ? Encounters7.TradeGift_SM : null; } return null; } @@ -763,7 +763,7 @@ private static IEnumerable GetValidEncounterTradesVC(PKM pkm, Ga switch (gameSource) { case GameVersion.RBY: - var table = !AllowGen1Tradeback ? TradeGift_RBY_NoTradeback : TradeGift_RBY_Tradeback; + var table = !AllowGen1Tradeback ? Encounters1.TradeGift_RBY_NoTradeback : Encounters1.TradeGift_RBY_Tradeback; return GetValidEncounterTradesVC1(pkm, p, table); case GameVersion.GSC: case GameVersion.C: @@ -775,7 +775,7 @@ private static IEnumerable GetValidEncounterTradesVC(PKM pkm, Ga private static IEnumerable GetValidEncounterTradesVC2(PKM pkm, DexLevel[] p) { // Check GSC trades. Reuse generic table fetch-match - var possible = GetValidEncounterTradesVC1(pkm, p, TradeGift_GSC); + var possible = GetValidEncounterTradesVC1(pkm, p, Encounters2.TradeGift_GSC); foreach (var z in possible) { @@ -789,8 +789,8 @@ private static IEnumerable GetValidEncounterTradesVC2(PKM pkm, D if (pkm.Met_Location != 0 && pkm.Format == 2 && pkm.Met_Location != 126) continue; - int index = Array.IndexOf(TradeGift_GSC, z); - if (TradeGift_GSC_OTs[index].All(ot => ot != pkm.OT_Name)) + int index = Array.IndexOf(Encounters2.TradeGift_GSC, z); + if (Encounters2.TradeGift_GSC_OTs[index].All(ot => ot != pkm.OT_Name)) continue; yield return z; diff --git a/PKHeX.Core/Legality/Encounters/LegalInfo.cs b/PKHeX.Core/Legality/Encounters/LegalInfo.cs index ea3adb53f..e20fef715 100644 --- a/PKHeX.Core/Legality/Encounters/LegalInfo.cs +++ b/PKHeX.Core/Legality/Encounters/LegalInfo.cs @@ -27,7 +27,7 @@ public IEncounterable EncounterMatch } } - public bool WasXD => pkm?.Version == 15 && EncounterMatch != null && !Legal.Encounter_Colo.Contains(EncounterMatch); + public bool WasXD => pkm?.Version == 15 && EncounterMatch != null && !Encounters3.Encounter_Colo.Contains(EncounterMatch); public int[] RelearnBase { get; set; } public readonly List Parse = new List(); diff --git a/PKHeX.Core/Legality/RNG/MethodFinder.cs b/PKHeX.Core/Legality/RNG/MethodFinder.cs index cff19145f..d8ed231fe 100644 --- a/PKHeX.Core/Legality/RNG/MethodFinder.cs +++ b/PKHeX.Core/Legality/RNG/MethodFinder.cs @@ -593,7 +593,7 @@ public static bool IsCompatible4(this PIDType val, IEncounterable encounter, PKM switch (encounter) { case EncounterStatic s: - if (s == Legal.SpikyEaredPichu) // nonshiny forced nature, undocumented + if (s == Encounters4.SpikyEaredPichu) // nonshiny forced nature, undocumented return val == PIDType.None; if (s.Location == 233 && s.Gift) return val == PIDType.Pokewalker; @@ -609,7 +609,7 @@ public static bool IsCompatible4(this PIDType val, IEncounterable encounter, PKM // Chain shiny with poke radar is only possible in DPPt in tall grass, safari zone do not allow pokeradar // TypeEncounter TallGrass discard any cave or city var IsDPPt = GameVersion.DP.Contains((GameVersion)pkm.Version) || (GameVersion)pkm.Version == GameVersion.Pt; - return pkm.IsShiny && IsDPPt && sl.TypeEncounter == EncounterType.TallGrass && !Legal.SafariZoneLocation_4.Contains(sl.Location); + return pkm.IsShiny && IsDPPt && sl.TypeEncounter == EncounterType.TallGrass && !Encounters4.SafariZoneLocation_4.Contains(sl.Location); case PGT _: // manaphy return IsG4ManaphyPIDValid(val, pkm); default: diff --git a/PKHeX.Core/Legality/Tables1.cs b/PKHeX.Core/Legality/Tables1.cs index 69bc76a6e..8dc32f2af 100644 --- a/PKHeX.Core/Legality/Tables1.cs +++ b/PKHeX.Core/Legality/Tables1.cs @@ -50,144 +50,6 @@ public static partial class Legal internal static readonly int[] WildPokeBalls1 = {4}; - internal static readonly EncounterStatic[] Encounter_RBY = - { - // Gameversion is RBY for pokemon with the same catch rate and initial moves in all games - // If there are differents in moves or catch rate they will have different encounters defined - new EncounterStatic { Species = 001, Level = 05, Version = GameVersion.RBY }, // Bulbasaur - new EncounterStatic { Species = 004, Level = 05, Version = GameVersion.RBY }, // Charmander - new EncounterStatic { Species = 007, Level = 05, Version = GameVersion.RBY }, // Squirtle - new EncounterStatic { Species = 025, Level = 05, Version = GameVersion.YW }, // Pikachu - - // Game Corner - new EncounterStatic { Species = 030, Level = 17, Version = GameVersion.RB }, // Nidorina (Red Game Corner) - new EncounterStatic { Species = 033, Level = 17, Version = GameVersion.BU }, // Nidorino (Blue[EN] / Green[JP] Game Corner) - new EncounterStatic { Species = 035, Level = 08, Version = GameVersion.RBY }, // Clefairy (Red Game Corner) - new EncounterStatic { Species = 036, Level = 24, Version = GameVersion.RBY }, // Clefable (Blue[JP] Game Corner) - new EncounterStatic { Species = 037, Level = 18, Version = GameVersion.RBY }, // Vulpix (Yellow Game Corner) - new EncounterStatic { Species = 040, Level = 22, Version = GameVersion.RBY }, // Wigglytuff (Yellow Game Corner) - new EncounterStatic { Species = 063, Level = 06, Version = GameVersion.RBY }, // Abra (Blue[EN] / Green[JP] Game Corner) - new EncounterStatic { Species = 116, Level = 18, Version = GameVersion.RBY }, // Horsea (Blue[JP] Game Corner) - new EncounterStatic { Species = 123, Level = 25, Version = GameVersion.RBY }, // Scyther (Red Game Corner) - new EncounterStatic { Species = 127, Level = 20, Version = GameVersion.BU }, // Pinsir (Blue[EN] / Green[JP] Game Corner) - new EncounterStatic { Species = 127, Level = 30, Version = GameVersion.YW }, // Pinsir (Yellow Game Corner) (Different initial moves) - new EncounterStatic { Species = 137, Level = 18, Version = GameVersion.RBY }, // Porygon (Blue[EN] / Green[JP] Game Corner) - new EncounterStatic { Species = 147, Level = 18, Version = GameVersion.RBY }, // Dratini (Red Game Corner) - new EncounterStatic { Species = 148, Level = 30, Version = GameVersion.BU }, // Dragonair (Blue[JP] Game Corner) - new EncounterStatic { Species = 025, Level = 12, Version = GameVersion.BU }, // Pikachu (Blue[JP] Game Corner) (Different catch rate) - - - // Lower level less ideal matches; best match is from above. - // new EncounterStatic { Species = 035, Level = 12 }, // Clefairy (Blue[EN] / Green[JP] Game Corner) - // new EncounterStatic { Species = 063, Level = 09 }, // Abra (Red Game Corner) - // new EncounterStatic { Species = 063, Level = 08 }, // Abra (Blue[JP] Game Corner) - // new EncounterStatic { Species = 063, Level = 15 }, // Abra (Yellow Game Corner) - // new EncounterStatic { Species = 123, Level = 30 }, // Scyther (Yellow Game Corner) - // new EncounterStatic { Species = 137, Level = 22 }, // Porygon (Blue[JP] Game Corner) - // new EncounterStatic { Species = 137, Level = 26 }, // Porygon (Red Game Corner) - // new EncounterStatic { Species = 137, Level = 26 }, // Porygon (Yellow Game Corner) - // new EncounterStatic { Species = 147, Level = 24 }, // Dratini (Blue[EN] / Green[JP] Game Corner) - - new EncounterStatic { Species = 129, Level = 05, Version = GameVersion.RBY }, // Magikarp - new EncounterStatic { Species = 143, Level = 30, Version = GameVersion.RBY }, // Snorlax - new EncounterStatic { Species = 106, Level = 30, Version = GameVersion.RBY }, // Hitmonlee - new EncounterStatic { Species = 107, Level = 30, Version = GameVersion.RBY }, // Hitmonchan - - new EncounterStatic { Species = 131, Level = 15, Version = GameVersion.RBY }, // Lapras - new EncounterStatic { Species = 138, Level = 30, Version = GameVersion.RBY }, // Omanyte - new EncounterStatic { Species = 140, Level = 30, Version = GameVersion.RBY }, // Kabuto - new EncounterStatic { Species = 142, Level = 30, Version = GameVersion.RBY }, // Aerodactyl - - new EncounterStatic { Species = 144, Level = 50, Version = GameVersion.RBY }, // Articuno - new EncounterStatic { Species = 145, Level = 50, Version = GameVersion.RBY }, // Zapdos - new EncounterStatic { Species = 146, Level = 50, Version = GameVersion.RBY }, // Moltres - - new EncounterStatic { Species = 150, Level = 70, Version = GameVersion.RBY }, // Mewtwo - - new EncounterStatic { Species = 133, Level = 25, Version = GameVersion.RB }, // Eevee - new EncounterStatic { Species = 133, Level = 25, Version = GameVersion.YW }, // Eevee (Different initial moves) - - // Yellow Only -- duplicate encounters with a higher level - // new EncounterStatic { Species = 001, Level = 10, Version = GameVersion.YW }, // Bulbasaur (Cerulean City) - // new EncounterStatic { Species = 004, Level = 10, Version = GameVersion.YW }, // Charmander (Route 24) - // new EncounterStatic { Species = 007, Level = 10, Version = GameVersion.YW }, // Squirtle (Vermillion City) - - new EncounterStatic { Species = 054, Level = 15, Moves = new [] { 133, 10 }, Version = GameVersion.Stadium }, // Stadium Psyduck (Amnesia) - new EncounterStatic { Species = 001, Level = 05, Version = GameVersion.Stadium }, // Bulbasaur - new EncounterStatic { Species = 004, Level = 05, Version = GameVersion.Stadium }, // Charmander - new EncounterStatic { Species = 071, Level = 05, Version = GameVersion.Stadium }, // Squirtle - new EncounterStatic { Species = 106, Level = 20, Version = GameVersion.Stadium }, // Hitmonlee - new EncounterStatic { Species = 107, Level = 20, Version = GameVersion.Stadium }, // Hitmonchan - new EncounterStatic { Species = 133, Level = 25, Version = GameVersion.Stadium }, // Eevee - new EncounterStatic { Species = 138, Level = 20, Version = GameVersion.Stadium }, // Omanyte - new EncounterStatic { Species = 140, Level = 20, Version = GameVersion.Stadium }, // Kabuto - new EncounterStatic { Species = 151, Level = 5, IVs = new [] {15,15,15,15,15,15}, Version = GameVersion.VCEvents }, // Event Mew - }; - internal static readonly EncounterTrade[] TradeGift_RBY_Common = - { - // Species & Minimum level (legal) possible to acquire at. - //new EncounterTrade { Species = 122, Generation = 1, Level = 06 }, // Mr. Mime - Game Corner Abra - new EncounterTrade { Species = 032, Generation = 1, Level = 02, Version = GameVersion.RD }, // Nidoran♂ - Wild Nidoran♀ - new EncounterTrade { Species = 029, Generation = 1, Level = 02, Version = GameVersion.BU }, // Nidoran♀ - Wild Nidoran♂ - new EncounterTrade { Species = 030, Generation = 1, Level = 16, Version = GameVersion.RB }, // Nidorina - Evolve Nidorino - new EncounterTrade { Species = 030, Generation = 1, Level = 16, Version = GameVersion.YW }, // Nidorina - Evolve Nidorino (Different initial moves) - new EncounterTrade { Species = 108, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Lickitung - Surf Slowbro - new EncounterTrade { Species = 083, Generation = 1, Level = 02, Version = GameVersion.RBY }, // Farfetch’d - Wild Spearow - new EncounterTrade { Species = 101, Generation = 1, Level = 03, Version = GameVersion.RBY }, // Electrode - Wild Raichu - - new EncounterTrade { Species = 122, Generation = 1, Level = 03, Version = GameVersion.RBY }, // Mr. Mime - Wild Jigglypuff - new EncounterTrade { Species = 060, Generation = 1, Level = 02, Version = GameVersion.RBY }, // Poliwag - Wild Rattata - //new EncounterTrade { Species = 083, Generation = 1, Level = 02 }, // Farfetch’d - Wild Pidgey - new EncounterTrade { Species = 079, Generation = 1, Level = 22, Version = GameVersion.RBY }, // Slowpoke - Wild Seel - - new EncounterTrade { Species = 051, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Dugtrio - Trade Lickitung - new EncounterTrade { Species = 047, Generation = 1, Level = 13, Version = GameVersion.RBY }, // Parasect - Trade Tangela - }; - internal static readonly EncounterTrade[] TradeGift_RBY_NoTradeback = TradeGift_RBY_Common.Concat(new[] - { - // Species & Minimum level (legal) possible to acquire at. - new EncounterTrade { Species = 124, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Jynx - Fish Poliwhirl (GSC: 10) - new EncounterTrade { Species = 114, Generation = 1, Level = 13, Version = GameVersion.RBY }, // Tangela - Wild Venonat (GSC: 5) No different moves at level 13 - new EncounterTrade { Species = 086, Generation = 1, Level = 28, Version = GameVersion.RBY }, // Seel - Wild Ponyta (GSC: 6) - - new EncounterTrade { Species = 115, Generation = 1, Level = 42, Version = GameVersion.RBY }, // Kangaskhan - Evolve Rhydon (GSC: 30) - new EncounterTrade { Species = 128, Generation = 1, Level = 28, Version = GameVersion.RBY }, // Tauros - Evolve Persian (GSC: 18) - new EncounterTradeCatchRate { Species = 093, Generation = 1, Level = 20, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Haunter - Trade Machoke (GSC: 10) - new EncounterTradeCatchRate { Species = 075, Generation = 1, Level = 16, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Graveler - Evolve Kadabra (GSC: 15) - new EncounterTradeCatchRate { Species = 098, Generation = 1, Level = 15, Catch_Rate = 204, Version = GameVersion.RBY }, // Krabby - Wild Growlithe (GSC: 5) - - //new EncounterTrade { Species = 122, Generation = 1, Level = 08 }, // Mr. Mime - Wild Clefairy (GSC: 6) - new EncounterTradeCatchRate { Species = 067, Generation = 1, Level = 20, Catch_Rate = 180, EvolveOnTrade = true, Version = GameVersion.RBY }, // Machoke - Wild Cubone (GSC: 10) - new EncounterTrade { Species = 112, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Rhydon - Surf Golduck (GSC: 10) - new EncounterTrade { Species = 087, Generation = 1, Level = 15, Version = GameVersion.RBY }, // Dewgong - Wild Growlithe (GSC: 5) - new EncounterTrade { Species = 089, Generation = 1, Level = 25, Version = GameVersion.RBY }, // Muk - Wild Kangaskhan (GSC: 14) - }).ToArray(); - internal static readonly EncounterTrade[] TradeGift_RBY_Tradeback = TradeGift_RBY_Common.Concat(new[] - { - // Trade gifts that can be obtained at a lower level due to the requested Pokémon being a lower level in GSC - new EncounterTrade { Species = 124, Generation = 1, Level = 10, Version = GameVersion.RBY }, // Jynx - Fish Poliwhirl (RBY: 15) - new EncounterTrade { Species = 114, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Tangela - Wild Venonat (RBY: 13) - new EncounterTrade { Species = 086, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Seel - Egg Ponyta (RBY: 28) - - new EncounterTrade { Species = 115, Generation = 1, Level = 30, Version = GameVersion.RBY }, // Kangaskhan - Evolve Rhydon (RBY: 42) - new EncounterTrade { Species = 128, Generation = 1, Level = 18, Version = GameVersion.RBY }, // Tauros - Evolve Persian (RBY: 28) - new EncounterTradeCatchRate { Species = 093, Generation = 1, Level = 10, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Haunter - Trade Machoke (RBY: 20) - new EncounterTradeCatchRate { Species = 075, Generation = 1, Level = 15, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Graveler - Evolve Kadabra (RBY: 16) - new EncounterTradeCatchRate { Species = 098, Generation = 1, Level = 05, Catch_Rate = 204, Version = GameVersion.RBY }, // Krabby - Egg Growlithe (RBY: 15) - - //new EncounterTrade { Species = 122, Generation = 1, Level = 08 }, // Mr. Mime - Wild Clefairy (RBY: 6) - new EncounterTradeCatchRate { Species = 067, Generation = 1, Level = 05, Catch_Rate = 180, EvolveOnTrade = true, Version = GameVersion.RBY }, // Machoke - Egg Cubone (RBY: 20) - new EncounterTrade { Species = 112, Generation = 1, Level = 10, Version = GameVersion.RBY }, // Rhydon - Surf Golduck (RBY: 15) - new EncounterTrade { Species = 087, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Dewgong - Egg Growlithe (RBY: 15) - new EncounterTrade { Species = 089, Generation = 1, Level = 05, Version = GameVersion.RBY }, // Muk - Egg Kangaskhan (RBY: 25) - }).ToArray(); - internal static readonly EncounterArea FishOldGood_RBY = new EncounterArea { Location = -1, Slots = new EncounterSlot[] - { - new EncounterSlot1 {Species = 129, LevelMin = 05, LevelMax = 05, Type = SlotType.Old_Rod, Rate = -1, Version = GameVersion.RBY }, // Magikarp - new EncounterSlot1 {Species = 118, LevelMin = 10, LevelMax = 10, Type = SlotType.Good_Rod, Rate = -1, Version = GameVersion.RBY }, // Goldeen - new EncounterSlot1 {Species = 060, LevelMin = 10, LevelMax = 10, Type = SlotType.Good_Rod, Rate = -1, Version = GameVersion.RBY }, // Poliwag - }}; - internal static readonly int[] FutureEvolutionsGen1 = { 169,182,186,196,197,199,208,212,230,233,242,462,463,464,465,466,467,470,471,474,700 diff --git a/PKHeX.Core/Legality/Tables2.cs b/PKHeX.Core/Legality/Tables2.cs index a570cdfed..ec41d37d5 100644 --- a/PKHeX.Core/Legality/Tables2.cs +++ b/PKHeX.Core/Legality/Tables2.cs @@ -52,159 +52,6 @@ public static partial class Legal { 424,429,430,461,462,463,464,465,466,467,468,469,470,471,472,473,474,700 }; - internal static readonly int[] Roaming_MetLocation_GSC_Grass = - { - // Routes 29, 30-31, 33, 34, 35, 36-37, 38-39, 42, 43, 44, 45-46 can be encountered in grass - 2, 4, 5, 8, 11, 15, 18, 20, 21, - 25, 26, 34, 37, 39, 43, 45, - }; - - internal static readonly EncounterArea[] EncounterBCC_GSC = { new EncounterArea { - Location = 19, - Slots = new EncounterSlot[] - { - new EncounterSlot1 {Species = 010, LevelMin = 07, LevelMax = 18, Rate = 20, SlotNumber = 0}, // Caterpie - new EncounterSlot1 {Species = 013, LevelMin = 07, LevelMax = 18, Rate = 20, SlotNumber = 1}, // Weedle - new EncounterSlot1 {Species = 011, LevelMin = 09, LevelMax = 18, Rate = 10, SlotNumber = 2}, // Metapod - new EncounterSlot1 {Species = 014, LevelMin = 09, LevelMax = 18, Rate = 10, SlotNumber = 3}, // Kakuna - new EncounterSlot1 {Species = 012, LevelMin = 12, LevelMax = 15, Rate = 05, SlotNumber = 4}, // Butterfree - new EncounterSlot1 {Species = 015, LevelMin = 12, LevelMax = 15, Rate = 05, SlotNumber = 5}, // Beedrill - new EncounterSlot1 {Species = 048, LevelMin = 10, LevelMax = 16, Rate = 10, SlotNumber = 6}, // Venonat - new EncounterSlot1 {Species = 046, LevelMin = 10, LevelMax = 17, Rate = 10, SlotNumber = 7}, // Paras - new EncounterSlot1 {Species = 123, LevelMin = 13, LevelMax = 14, Rate = 05, SlotNumber = 8}, // Scyther - new EncounterSlot1 {Species = 127, LevelMin = 13, LevelMax = 14, Rate = 05, SlotNumber = 9}, // Pinsir - } - }}; - - internal static readonly EncounterArea[] EncounterSafari_GSC = { new EncounterArea { - Location = 81, - Slots = new EncounterSlot[] - { - new EncounterSlot1 {Species = 129, LevelMin = 10, LevelMax = 10, Type = SlotType.Old_Rod_Safari}, // Magikarp - new EncounterSlot1 {Species = 098, LevelMin = 10, LevelMax = 10, Type = SlotType.Old_Rod_Safari}, // Krabby - new EncounterSlot1 {Species = 098, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Krabby - new EncounterSlot1 {Species = 129, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Magikarp - new EncounterSlot1 {Species = 222, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Corsola - new EncounterSlot1 {Species = 120, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod_Safari}, // Staryu - new EncounterSlot1 {Species = 098, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Krabby - new EncounterSlot1 {Species = 222, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Corsola - new EncounterSlot1 {Species = 120, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Staryu - new EncounterSlot1 {Species = 121, LevelMin = 40, LevelMax = 40, Type = SlotType.Super_Rod_Safari}, // Kingler - } - }}; - - internal static readonly EncounterStatic[] Encounter_GSC_Common = - { - new EncounterStatic { Species = 152, Level = 05, Location = 001, Version = GameVersion.GSC }, // Chikorita @ New Bark Town - new EncounterStatic { Species = 155, Level = 05, Location = 001, Version = GameVersion.GSC }, // Cyndaquil @ New Bark Town - new EncounterStatic { Species = 158, Level = 05, Location = 001, Version = GameVersion.GSC }, // Totodile @ New Bark Town - - new EncounterStatic { Species = 175, Level = 05, Version = GameVersion.GSC, EggLocation = 256 }, // Togepi - new EncounterStatic { Species = 131, Level = 20, Location = 010, Version = GameVersion.GSC }, // Lapras @ Union Cave - new EncounterStatic { Species = 133, Level = 20, Location = 016, Version = GameVersion.GSC }, // Eevee @ Goldenrod City - - new EncounterStatic { Species = 185, Level = 20, Location = 020, Version = GameVersion.GSC }, // Sudowoodo @ Route 36 - new EncounterStatic { Species = 236, Level = 10, Location = 035, Version = GameVersion.GSC }, // Tyrogue @ Mt. Mortar - - new EncounterStatic { Species = 130, Level = 30, Location = 038, Version = GameVersion.GSC, Shiny = true, }, // Gyarados @ Lake of Rage - new EncounterStatic { Species = 074, Level = 21, Location = 036, Version = GameVersion.GSC }, // Geodude @ Rocket Hideout (Mahogany Town) - new EncounterStatic { Species = 109, Level = 21, Location = 036, Version = GameVersion.GSC }, // Koffing @ Rocket Hideout (Mahogany Town) - new EncounterStatic { Species = 100, Level = 23, Location = 036, Version = GameVersion.GSC }, // Voltorb @ Rocket Hideout (Mahogany Town) - new EncounterStatic { Species = 101, Level = 23, Location = 036, Version = GameVersion.GSC }, // Electrode @ Rocket Hideout (Mahogany Town) - new EncounterStatic { Species = 143, Level = 50, Location = 061, Version = GameVersion.GSC }, // Snorlax @ Vermillion City - - new EncounterStatic { Species = 083, Level = 05, Moves = new [] { 226, 14, 97, 37 }, Version = GameVersion.Stadium2 }, // Stadium 2 Baton Pass Farfetch'd - new EncounterStatic { Species = 207, Level = 05, Moves = new [] { 89, 68, 17 }, Version = GameVersion.Stadium2 }, // Stadium 2 Earthquake Gligar - }; - - internal static readonly EncounterStatic[] Encounter_GS_Exclusive = - { - new EncounterStatic { Species = 245, Level = 40, Version = GameVersion.GS }, // Suicune - - new EncounterStatic { Species = 249, Level = 70, Version = GameVersion.GD }, // Lugia @ Whirl Islands - new EncounterStatic { Species = 249, Level = 40, Version = GameVersion.SV }, // Lugia @ Whirl Islands - - new EncounterStatic { Species = 250, Level = 40, Version = GameVersion.GD }, // Ho-Oh @ Tin Tower - new EncounterStatic { Species = 250, Level = 70, Version = GameVersion.SV }, // Ho-Oh @ Tin Tower - - new EncounterStatic { Species = 137, Level = 15, Version = GameVersion.GS }, // Porygon @ Celadon Game Corner - new EncounterStatic { Species = 133, Level = 15, Version = GameVersion.GS }, // Eevee @ Celadon Game Corner - new EncounterStatic { Species = 122, Level = 15, Version = GameVersion.GS }, // Mr. Mime @ Celadon Game Corner - - new EncounterStatic { Species = 063, Level = 10, Version = GameVersion.GS }, // Abra @ Goldenrod City (Game Corner) - new EncounterStatic { Species = 147, Level = 10, Version = GameVersion.GS }, // Dratini @ Goldenrod City (Game Corner) - new EncounterStatic { Species = 023, Level = 10, Version = GameVersion.GS }, // Ekans @ Goldenrod City (Game Corner) (Gold) - new EncounterStatic { Species = 027, Level = 10, Version = GameVersion.GS }, // Sandshrew @ Goldenrod City (Game Corner) (Silver) - }; - - internal static readonly EncounterStatic[] Encounter_C_Exclusive = - { - new EncounterStatic { Species = 245, Level = 40, Location = 023, Version = GameVersion.C }, // Suicune @ Tin Tower - - new EncounterStatic { Species = 172, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Pichu Dizzy Punch - new EncounterStatic { Species = 173, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Cleffa Dizzy Punch - new EncounterStatic { Species = 174, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Igglybuff Dizzy Punch - new EncounterStatic { Species = 236, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Tyrogue Dizzy Punch - new EncounterStatic { Species = 238, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Smoochum Dizzy Punch - new EncounterStatic { Species = 239, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Elekid Dizzy Punch - new EncounterStatic { Species = 240, Level = 05, Version = GameVersion.C, Moves = new [] {146}, EggLocation = 256 }, // Magby Dizzy Punch - - new EncounterStatic { Species = 147, Level = 15, Location = 042, Version = GameVersion.C, Moves = new [] {245} }, // Dratini ExtremeSpeed - - new EncounterStatic { Species = 249, Level = 60, Location = 031, Version = GameVersion.C }, // Lugia @ Whirl Islands - new EncounterStatic { Species = 250, Level = 60, Location = 023, Version = GameVersion.C }, // Ho-Oh @ Tin Tower - new EncounterStatic { Species = 251, Level = 30, Location = 014, Version = GameVersion.EventsGBGen2 }, // Celebi @ Ilex Forest - - new EncounterStatic { Species = 137, Level = 15, Location = 071, Version = GameVersion.C }, // Porygon @ Celadon Game Corner - new EncounterStatic { Species = 025, Level = 25, Location = 071, Version = GameVersion.C }, // Pikachu @ Celadon Game Corner - new EncounterStatic { Species = 246, Level = 40, Location = 071, Version = GameVersion.C }, // Larvitar @ Celadon Game Corner - - new EncounterStatic { Species = 063, Level = 05, Location = 016, Version = GameVersion.C }, // Abra @ Goldenrod City (Game Corner) - new EncounterStatic { Species = 104, Level = 15, Location = 016, Version = GameVersion.C }, // Cubone @ Goldenrod City (Game Corner) - new EncounterStatic { Species = 202, Level = 15, Location = 016, Version = GameVersion.C }, // Wobbuffet @ Goldenrod City (Game Corner) - }; - - internal static readonly EncounterStatic[] Encounter_GSC_Roam = - { - new EncounterStatic { Species = 243, Level = 40, Roaming = true }, // Raikou - new EncounterStatic { Species = 244, Level = 40, Roaming = true }, // Entei - new EncounterStatic { Species = 245, Level = 40, Roaming = true, Version = GameVersion.GS }, // Suicune - }; - - internal static readonly EncounterStatic[] Encounter_GS = Encounter_GSC_Common.Concat(Encounter_GS_Exclusive).Concat(Encounter_GSC_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_GSC_Grass))).ToArray(); - internal static readonly EncounterStatic[] Encounter_C = Encounter_GSC_Common.Concat(Encounter_C_Exclusive).Concat(Encounter_GSC_Roam.Take(2).SelectMany(e => e.Clone(Roaming_MetLocation_GSC_Grass))).ToArray(); - internal static readonly EncounterStatic[] Encounter_GSC = Encounter_GSC_Common.Concat(Encounter_GS_Exclusive).Concat(Encounter_C_Exclusive).Concat(Encounter_GSC_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_GSC_Grass))).ToArray(); - - internal static readonly EncounterTrade[] TradeGift_GSC = - { - new EncounterTrade { Species = 095, Generation = 2, Level = 03, Gender = 0, TID = 48926, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Onix @ Violet City for Bellsprout [wild] - new EncounterTrade { Species = 066, Generation = 2, Level = 05, Gender = 1, TID = 37460, IVs = new[] {12, 03, 07, 06, 06, 06} }, // Machop @ Goldenrod City for Drowzee [wild 9, hatched egg 5] - new EncounterTrade { Species = 100, Generation = 2, Level = 05, Gender = 2, TID = 29189, IVs = new[] {08, 09, 08, 08, 08, 08} }, // Voltorb @ Olivine City for Krabby [egg] - new EncounterTrade { Species = 112, Generation = 2, Level = 30, Gender = 0, TID = 00283, IVs = new[] {12, 07, 07, 06, 06, 06} }, // Rhydon @ Blackthorn City for Dragonair [blue jp game corner] - new EncounterTrade { Species = 142, Generation = 2, Level = 05, Gender = 0, TID = 26491, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Aerodactyl @ Route 14 for Chansey [egg] - new EncounterTrade { Species = 078, Generation = 2, Level = 14, Gender = 0, TID = 15616, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Rapidash @ Pewter City for Gloom [wild] - - new EncounterTrade { Species = 085, Generation = 2, Level = 30, Gender = 0, TID = 00283, IVs = new[] {12, 07, 07, 06, 06, 06} }, // Dodrio @ Blackthorn City for Dragonair [blue jp game corner] - new EncounterTrade { Species = 178, Generation = 2, Level = 15, Gender = 0, TID = 15616, IVs = new[] {08, 09, 06, 08, 06, 06} }, // Xatu @ Pewter City for Haunter [wild] - new EncounterTrade { Species = 082, Generation = 2, Level = 16, Gender = 2, TID = 50082, IVs = new[] {08, 09, 06, 06, 06, 06} }, // Magneton @ Power Plant for Dugtrio [wild] - - new EncounterTrade { Species = 213, Generation = 2, Level = 15, TID = 00518 } // Shuckle @ Cianwood City for free - }; - internal static readonly string[][] TradeGift_GSC_OTs = - { - new[] { "コンタ", "KYLE" }, - new[] { "ナオキ", "MIKE" }, - new[] { "ゲン", "TIM" }, - new[] { "ミサコ", "EMY" }, - new[] { "キヨミ", "KIM" }, - new[] { "デンジ", "CHRIS" }, - - new[] { "ミサコ", "EMY" }, - new[] { "デンジ", "CHRIS" }, - new[] { "モリオ", "FOREST" }, - - new[] { "セイジ", "MANIA" }, - }; internal static readonly int[] UnreleasedItems_2 = { // todo diff --git a/PKHeX.Core/Legality/Tables3.cs b/PKHeX.Core/Legality/Tables3.cs index 718e599bf..1bb07ceee 100644 --- a/PKHeX.Core/Legality/Tables3.cs +++ b/PKHeX.Core/Legality/Tables3.cs @@ -220,557 +220,6 @@ public static partial class Legal 359, 385, 386 } }; - internal static readonly int[] Roaming_MetLocation_FRLG = - { - //Route 1-25 encounter is possible either in grass or on water - 101,102,103,104,105,106,107,108,109,110, - 111,112,113,114,115,116,117,118,119,120, - 121,122,123,124,125 - }; - - internal static readonly int[] Roaming_MetLocation_RSE = - { - //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 MysteryGift[] Encounter_Event3 = - { - new WC3 { Species = 251, Level = 10, TID = 31121, OT_Gender = 1, OT_Name = "アゲト", CardTitle = "Agate Celebi", Method = PIDType.CXD, Shiny = false, Language = 1 }, - new WC3 { Species = 025, Level = 10, TID = 31121, OT_Gender = 0, OT_Name = "コロシアム", CardTitle = "Colosseum Pikachu", Method = PIDType.CXD, Shiny = false, Language = 1 }, - - new WC3 { Species = 385, Level = 05, TID = 20043, OT_Gender = 0, OT_Name = "WISHMKR", CardTitle = "Wishmaker Jirachi", Method = PIDType.BACD_R, Language = 2 }, - new WC3 { Species = 251, Level = 10, TID = 31121, OT_Gender = 1, OT_Name = "AGATE", CardTitle = "Agate Celebi", Method = PIDType.CXD, Shiny = false, Language = 2, NotDistributed = true }, - new WC3 { Species = 025, Level = 10, TID = 31121, OT_Gender = 0, OT_Name = "COLOS", CardTitle = "Colosseum Pikachu", Method = PIDType.CXD, Shiny = false, Language = 2, NotDistributed = true }, - - new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "バトルやま", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 1 }, // JPN - new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MATTLE", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 2 }, // ENG - new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MT BATA", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 3 }, // FRE - new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "DUELLBE", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 5 }, // GER - new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MONTE L", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 4 }, // ITA - new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "ERNESTO", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 7 }, // SPA - - // CXD - new WC3 { Species = 239, Level = 20, Language = 2, Fateful = true, Met_Location = 164, TID = 41400, SID = -1, OT_Gender = 0, OT_Name = "HORDEL", CardTitle = "Trade Togepi", Method = PIDType.CXD, Moves = new[] {8,7,9,238} }, // Elekid @ Snagem Hideout - new WC3 { Species = 307, Level = 20, Language = 2, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Trade Trapinch", Method = PIDType.CXD, Moves = new[] {223,93,247,197} }, // Meditite @ Pyrite Town - new WC3 { Species = 213, Level = 20, Language = 2, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Trade Surskit", Method = PIDType.CXD, Moves = new[] {92,164,188,277} }, // Shuckle @ Pyrite Town - new WC3 { Species = 246, Level = 20, Language = 2, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Trade Wooper", Method = PIDType.CXD, Moves = new[] {201,349,44,200} }, // Larvitar @ Pyrite Town - new WC3 { Species = 311, Level = 13, Language = 2, Fateful = false, Met_Location = 254, TID = 37149, OT_Gender = 0, OT_Name = "DUKING", CardTitle = "Gift", Method = PIDType.CXD }, // Plusle @ Ingame Trade - - new WC3 { Species = 239, Level = 20, Language = 1, Fateful = true, Met_Location = 164, TID = 41400, SID = -1, OT_Gender = 0, OT_Name = "ダニー", CardTitle = "Trade Togepi", Method = PIDType.CXD, Moves = new[] {8,7,9,238} }, // Elekid @ Snagem Hideout - new WC3 { Species = 307, Level = 20, Language = 1, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Trade Trapinch", Method = PIDType.CXD, Moves = new[] {223,93,247,197} }, // Meditite @ Pyrite Town - new WC3 { Species = 213, Level = 20, Language = 1, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Trade Surskit", Method = PIDType.CXD, Moves = new[] {92,164,188,277} }, // Shuckle @ Pyrite Town - new WC3 { Species = 246, Level = 20, Language = 1, Fateful = true, Met_Location = 116, TID = 37149, SID = -1, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Trade Wooper", Method = PIDType.CXD, Moves = new[] {201,349,44,200} }, // Larvitar @ Pyrite Town - new WC3 { Species = 311, Level = 13, Language = 1, Fateful = false, Met_Location = 254, TID = 37149, OT_Gender = 0, OT_Name = "ギンザル", CardTitle = "Gift", Method = PIDType.CXD }, // Plusle @ Ingame Trade - }; - - internal static readonly MysteryGift[] Encounter_Event3_FRLG = - { - // PCJP - Egg Pokémon Present Eggs (March 21 to April 4, 2004) - new WC3 { Species = 043, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{073} }, // Oddish with Leech Seed - new WC3 { Species = 052, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{080} }, // Meowth with Petal Dance - new WC3 { Species = 060, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{186} }, // Poliwag with Sweet Kiss - new WC3 { Species = 069, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{298} }, // Bellsprout with Teeter Dance - - // PCNY - Wish Eggs (December 16, 2004, to January 2, 2005) - new WC3 { Species = 083, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 281} }, // Farfetch'd with Wish & Yawn - new WC3 { Species = 096, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 187} }, // Drowzee with Wish & Belly Drum - new WC3 { Species = 102, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 230} }, // Exeggcute with Wish & Sweet Scent - new WC3 { Species = 108, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 215} }, // Lickitung with Wish & Heal Bell - new WC3 { Species = 113, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 230} }, // Chansey with Wish & Sweet Scent - new WC3 { Species = 115, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Method = PIDType.Method_2, Moves = new[]{273, 281} }, // Kangaskhan with Wish & Yawn - - // PokePark Eggs - Wondercard - new WC3 { Species = 054, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Psyduck with Mud Sport - new WC3 { Species = 172, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{266}, Method = PIDType.Method_2 }, // Pichu with Follow me - new WC3 { Species = 174, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{321}, Method = PIDType.Method_2 }, // Igglybuff with Tickle - new WC3 { Species = 222, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Corsola with Mud Sport - new WC3 { Species = 276, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{297}, Method = PIDType.Method_2 }, // Taillow with Feather Dance - new WC3 { Species = 283, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Surskit with Mud Sport - new WC3 { Species = 293, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{298}, Method = PIDType.Method_2 }, // Whismur with Teeter Dance - new WC3 { Species = 300, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{205}, Method = PIDType.Method_2 }, // Skitty with Rollout - new WC3 { Species = 311, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{346}, Method = PIDType.Method_2 }, // Plusle with Water Sport - new WC3 { Species = 312, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{300}, Method = PIDType.Method_2 }, // Minun with Mud Sport - new WC3 { Species = 325, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{253}, Method = PIDType.Method_2 }, // Spoink with Uproar - new WC3 { Species = 327, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{047}, Method = PIDType.Method_2 }, // Spinda with Sing - new WC3 { Species = 331, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{227}, Method = PIDType.Method_2 }, // Cacnea with Encore - new WC3 { Species = 341, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{346}, Method = PIDType.Method_2 }, // Corphish with Water Sport - new WC3 { Species = 360, IsEgg = true, Fateful = true, Level = 05, TID = -1, SID = -1, Version = (int)GameVersion.FRLG, Moves = new[]{321}, Method = PIDType.Method_2 }, // Wynaut with Tickle - }; - - internal static readonly MysteryGift[] Encounter_Event3_RS = - { - // PCJP - Pokémon Center 5th Anniversary Eggs (April 25 to May 18, 2003) - new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{298} }, // Pichu with Teeter Dance - new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Pichu with Wish - new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R_S, Moves = new[]{298} }, // Pichu with Teeter Dance - new WC3 { Species = 172, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R_S, Moves = new[]{273} }, // Pichu with Wish - new WC3 { Species = 280, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{204 } }, // Ralts with Charm - new WC3 { Species = 280, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Ralts with Wish - new WC3 { Species = 359, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{180} }, // Absol with Spite - new WC3 { Species = 359, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Absol with Wish - new WC3 { Species = 371, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{334} }, // Bagon with Iron Defense - new WC3 { Species = 371, IsEgg = true, Level = 05, OT_Name = "オヤNAME", TID = -1, SID = -1, Version = (int)GameVersion.R, Method = PIDType.BACD_R, Moves = new[]{273} }, // Bagon with Wish - - // Negai Boshi Jirachi - new WC3 { Species = 385, Level = 05, TID = 30719, OT_Gender = 0, OT_Name = "ネガイボシ", Method = PIDType.BACD_R, Language = 1, Shiny = false }, - - // Berry Glitch Fix - // PCJP - (December 29, 2003 to March 31, 2004) - new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 1, Method = PIDType.BACD_R_S, TID = 21121, OT_Name = "ルビー", OT_Gender = 1, Shiny = true }, - new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 1, Method = PIDType.BACD_R_S, TID = 21121, OT_Name = "サファイア", OT_Gender = 0, Shiny = true }, - - // EBGames/GameStop (March 1, 2004 to April 22, 2007), also via multi-game discs - new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 2, Method = PIDType.BACD_R_S, TID = 30317, OT_Name = "RUBY", OT_Gender = 1 }, - new WC3 { Species = 263, Level = 5, Version = (int)GameVersion.S, Language = 2, Method = PIDType.BACD_R_S, TID = 30317, OT_Name = "SAPHIRE", OT_Gender = 0 }, - - // Channel Jirachi - new WC3 { Species = 385, Level = 5, Version = (int)GameVersion.RS, Method = PIDType.Channel, TID = 40122, OT_Gender = 3,SID = -1, OT_Name = "CHANNEL", CardTitle = "Channel Jirachi", Met_Level = 0 }, - - // Aura Mew - new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 2, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew - new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 3, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew - new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 4, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew - new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 5, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew - new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 7, Method = PIDType.BACD_R, TID = 20078, OT_Name = "Aura", Fateful = true }, // Mew - - // English Events - new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Charizard - new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Pikachu - new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Articuno - new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Raikou - new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Entei - new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Suicune - new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Lugia - new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Ho-Oh - new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latias - new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 2, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latios - - // French - new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Charizard - new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Pikachu - new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Articuno - new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Raikou - new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Entei - new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Suicune - new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Lugia - new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Ho-Oh - new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latias - new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 3, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNIV", Shiny = false }, // Latios - - // Italian - new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Charizard - new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Pikachu - new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Articuno - new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Raikou - new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Entei - new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Suicune - new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Lugia - new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Ho-Oh - new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Latias - new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 4, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANNI", Shiny = false }, // Latios - - // German - new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Charizard - new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Pikachu - new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Articuno - new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Raikou - new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Entei - new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Suicune - new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Lugia - new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Ho-Oh - new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Latias - new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 5, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10JAHRE", Shiny = false }, // Latios - - // Spanish - new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Charizard - new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Pikachu - new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Articuno - new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Raikou - new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Entei - new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Suicune - new WC3 { Species = 249, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,056,240,129}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Lugia - new WC3 { Species = 250, Level = 70, Version = (int)GameVersion.R, Moves = new[] {105,126,241,129}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Ho-Oh - new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Latias - new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 7, Method = PIDType.BACD_R, TID = 06227, OT_Name = "10ANIV", Shiny = false }, // Latios - - new WC3 { Species = 375, Level = 30, Version = (int)GameVersion.R, Moves = new[] {036,093,232,287}, Language = 2, Method = PIDType.BACD_R, TID = 02005, OT_Name = "ROCKS", OT_Gender = 0, RibbonNational = true, Shiny = false }, // Metang - new WC3 { Species = 386, Level = 70, Version = (int)GameVersion.R, Moves = new[] {322,105,354,063}, Language = 2, Method = PIDType.BACD_R, TID = 28606, OT_Name = "DOEL", Fateful = true, Shiny = false }, // Deoxys - new WC3 { Species = 386, Level = 70, Version = (int)GameVersion.R, Moves = new[] {322,105,354,063}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "SPACE C", Fateful = true, Shiny = false }, // Deoxys - new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 2, Method = PIDType.BACD_U, TID = 06930, OT_Name = "MYSTRY", Fateful = true, Shiny = false }, // Mew - new WC3 { Species = 151, Level = 10, Version = (int)GameVersion.R, Language = 2, Method = PIDType.BACD_R, TID = 06930, OT_Name = "MYSTRY", Fateful = true, Shiny = false }, // Mew - - // Party of the Decade - new WC3 { Species = 001, Level = 70, Version = (int)GameVersion.R, Moves = new[] {230,074,076,235}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Bulbasaur - new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Charizard - new WC3 { Species = 009, Level = 70, Version = (int)GameVersion.R, Moves = new[] {182,240,130,056}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Blastoise - new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,087,113,019}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", HeldItem = 202, Shiny = false }, // Pikachu (Fly) - new WC3 { Species = 065, Level = 70, Version = (int)GameVersion.R, Moves = new[] {248,347,094,271}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Alakazam - new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Articuno - new WC3 { Species = 145, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,197,065,268}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Zapdos - new WC3 { Species = 146, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,203,053,219}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Moltres - new WC3 { Species = 149, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,219,017,200}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Dragonite - new WC3 { Species = 157, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,172,129,053}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Typhlosion - new WC3 { Species = 196, Level = 70, Version = (int)GameVersion.R, Moves = new[] {060,244,094,234}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Espeon - new WC3 { Species = 197, Level = 70, Version = (int)GameVersion.R, Moves = new[] {185,212,103,236}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Umbreon - new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Raikou - new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Entei - new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Suicune - new WC3 { Species = 248, Level = 70, Version = (int)GameVersion.R, Moves = new[] {037,184,242,089}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Tyranitar - new WC3 { Species = 257, Level = 70, Version = (int)GameVersion.R, Moves = new[] {299,163,119,327}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Blaziken - new WC3 { Species = 359, Level = 70, Version = (int)GameVersion.R, Moves = new[] {104,163,248,195}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", Shiny = false }, // Absol - new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latias - new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 2, Method = PIDType.BACD_R, TID = 06808, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latios - - // Journey Across America - new WC3 { Species = 001, Level = 70, Version = (int)GameVersion.R, Moves = new[] {230,074,076,235}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Bulbasaur - new WC3 { Species = 006, Level = 70, Version = (int)GameVersion.R, Moves = new[] {017,163,082,083}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Charizard - new WC3 { Species = 009, Level = 70, Version = (int)GameVersion.R, Moves = new[] {182,240,130,056}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Blastoise - new WC3 { Species = 025, Level = 70, Version = (int)GameVersion.R, Moves = new[] {085,097,087,113}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", HeldItem = 202, Shiny = false }, // Pikachu (No Fly) - new WC3 { Species = 065, Level = 70, Version = (int)GameVersion.R, Moves = new[] {248,347,094,271}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Alakazam - new WC3 { Species = 144, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,170,058,115}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Articuno - new WC3 { Species = 145, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,197,065,268}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Zapdos - new WC3 { Species = 146, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,203,053,219}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Moltres - new WC3 { Species = 149, Level = 70, Version = (int)GameVersion.R, Moves = new[] {097,219,017,200}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Dragonite - new WC3 { Species = 157, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,172,129,053}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Typhlosion - new WC3 { Species = 196, Level = 70, Version = (int)GameVersion.R, Moves = new[] {060,244,094,234}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Espeon - new WC3 { Species = 197, Level = 70, Version = (int)GameVersion.R, Moves = new[] {185,212,103,236}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Umbreon - new WC3 { Species = 243, Level = 70, Version = (int)GameVersion.R, Moves = new[] {098,209,115,242}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Raikou - new WC3 { Species = 244, Level = 70, Version = (int)GameVersion.R, Moves = new[] {083,023,053,207}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Entei - new WC3 { Species = 245, Level = 70, Version = (int)GameVersion.R, Moves = new[] {016,062,054,243}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Suicune - new WC3 { Species = 248, Level = 70, Version = (int)GameVersion.R, Moves = new[] {037,184,242,089}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Tyranitar - new WC3 { Species = 251, Level = 70, Version = (int)GameVersion.R, Moves = new[] {246,248,226,195}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Celebi - new WC3 { Species = 257, Level = 70, Version = (int)GameVersion.R, Moves = new[] {299,163,119,327}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Blaziken - new WC3 { Species = 359, Level = 70, Version = (int)GameVersion.R, Moves = new[] {104,163,248,195}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", Shiny = false }, // Absol - new WC3 { Species = 380, Level = 70, Version = (int)GameVersion.R, Moves = new[] {296,094,105,204}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latias - new WC3 { Species = 381, Level = 70, Version = (int)GameVersion.R, Moves = new[] {295,094,105,349}, Language = 2, Method = PIDType.BACD_R, TID = 00010, OT_Name = "10 ANIV", HeldItem = 191, Shiny = false }, // Latios - }; - - internal static readonly MysteryGift[] Encounter_Event3_Common = - { - // Pokémon Box - new WC3 { Species = 333, IsEgg = true, Level = 05, Moves = new[]{206}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Swablu Egg with False Swipe - new WC3 { Species = 263, IsEgg = true, Level = 05, Moves = new[]{245}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Zigzagoon Egg with Extreme Speed - new WC3 { Species = 300, IsEgg = true, Level = 05, Moves = new[]{006}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Skitty Egg with Pay Day - new WC3 { Species = 172, IsEgg = true, Level = 05, Moves = new[]{057}, Method = PIDType.BACD_U, OT_Gender = 1, OT_Name = "AZUSA" }, // Pichu Egg with Surf - - // PokePark Eggs - DS Download Play - new WC3 { Species = 054, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Psyduck with Mud Sport - new WC3 { Species = 172, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{266}, Method = PIDType.BACD_R }, // Pichu with Follow me - new WC3 { Species = 174, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{321}, Method = PIDType.BACD_R }, // Igglybuff with Tickle - new WC3 { Species = 222, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Corsola with Mud Sport - new WC3 { Species = 276, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{297}, Method = PIDType.BACD_R }, // Taillow with Feather Dance - new WC3 { Species = 283, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Surskit with Mud Sport - new WC3 { Species = 293, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{298}, Method = PIDType.BACD_R }, // Whismur with Teeter Dance - new WC3 { Species = 300, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{205}, Method = PIDType.BACD_R }, // Skitty with Rollout - new WC3 { Species = 311, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{346}, Method = PIDType.BACD_R }, // Plusle with Water Sport - new WC3 { Species = 312, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{300}, Method = PIDType.BACD_R }, // Minun with Mud Sport - new WC3 { Species = 325, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{253}, Method = PIDType.BACD_R }, // Spoink with Uproar - new WC3 { Species = 327, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{047}, Method = PIDType.BACD_R }, // Spinda with Sing - new WC3 { Species = 331, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{227}, Method = PIDType.BACD_R }, // Cacnea with Encore - new WC3 { Species = 341, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{346}, Method = PIDType.BACD_R }, // Corphish with Water Sport - new WC3 { Species = 360, IsEgg = true, Level = 05, Met_Level = 05, TID = 50318, OT_Gender = 0, OT_Name = "ポケパーク", Version = (int)GameVersion.R, Moves = new[]{321}, Method = PIDType.BACD_R }, // Wynaut with Tickle - }; - - internal static readonly MysteryGift[] Encounter_WC3 = Encounter_Event3.Concat(Encounter_Event3_RS).Concat(Encounter_Event3_FRLG.Concat(Encounter_Event3_Common)).ToArray(); - - 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 - - // 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 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, Fateful = true }, // 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, Fateful = true }, // 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, Fateful = true }, // Mew @ Faraway Island (Unreleased outside of Japan) - new EncounterStatic { Species = 249, Level = 70, Location = 211, Version = GameVersion.E, Fateful = true }, // Lugia @ Navel Rock - new EncounterStatic { Species = 250, Level = 70, Location = 211, Version = GameVersion.E, Fateful = true }, // Ho-Oh @ Navel Rock - new EncounterStatic { Species = 386, Level = 30, Location = 200, Version = GameVersion.E, Fateful = true, Form = 3 }, // Deoxys @ Birth Island - }; - - 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 = 7, Level = 05, Location = 088, }, // Squirtle - - // 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 - - // 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 - - // Celadon City Game Corner - new EncounterStatic { Gift = true, Species = 063, Level = 09, Location = 94, Version = GameVersion.FR }, // Abra - new EncounterStatic { Gift = true, Species = 035, Level = 08, Location = 94, Version = GameVersion.FR }, // Clefairy - new EncounterStatic { Gift = true, Species = 123, Level = 25, Location = 94, Version = GameVersion.FR }, // Scyther - new EncounterStatic { Gift = true, Species = 147, Level = 18, Location = 94, Version = GameVersion.FR }, // Dratini - new EncounterStatic { Gift = true, Species = 137, Level = 26, Location = 94, Version = GameVersion.FR }, // Porygon - - new EncounterStatic { Gift = true, Species = 063, Level = 07, Location = 94, Version = GameVersion.LG }, // Abra - new EncounterStatic { Gift = true, Species = 035, Level = 12, Location = 94, Version = GameVersion.LG }, // Clefairy - new EncounterStatic { Gift = true, Species = 127, Level = 18, Location = 94, Version = GameVersion.LG }, // Pinsir - new EncounterStatic { Gift = true, Species = 147, Level = 24, Location = 94, Version = GameVersion.LG }, // Dratini - new EncounterStatic { Gift = true, Species = 137, Level = 18, Location = 94, Version = GameVersion.LG }, // Porygon - - // 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 - - // 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, Fateful = true }, // Lugia @ Navel Rock - new EncounterStatic { Species = 250, Level = 70, Location = 174, Fateful = true }, // Ho-Oh @ Navel Rock - new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.FR, Form = 1, Fateful = true }, // Deoxys @ Birth Island - new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.LG, Form = 2, Fateful = true }, // 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}; - private static readonly int[] TradeContest_Cute = {05, 05, 30, 05, 05, 10}; - private static readonly int[] TradeContest_Clever = {05, 05, 05, 30, 05, 10}; - private static readonly int[] TradeContest_Tough = {05, 05, 05, 05, 30, 10}; - internal static readonly EncounterTrade[] TradeGift_RSE = - { - new EncounterTrade { Species = 296, Ability = 2, TID = 49562, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {5,5,4,4,4,4}, Level = 05, Nature = Nature.Hardy, Contest = TradeContest_Tough, Version = GameVersion.RS, }, // Slakoth (Level 5 Breeding) -> Makuhita - new EncounterTrade { Species = 300, Ability = 1, TID = 02259, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {5,4,4,5,4,4}, Level = 03, Nature = Nature.Timid, Contest = TradeContest_Cute, Version = GameVersion.RS, }, // Pikachu (Level 3 Viridiam Forest) -> Skitty - new EncounterTrade { Species = 222, Ability = 2, TID = 50183, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {4,4,5,4,4,5}, Level = 21, Nature = Nature.Calm, Contest = TradeContest_Beauty, Version = GameVersion.RS, }, // Bellossom (Level 21 Odish -> Gloom -> Bellossom) -> Corsola - new EncounterTrade { Species = 273, Ability = 2, TID = 38726, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {5,4,5,4,4,4}, Level = 04, Nature = Nature.Relaxed, Contest = TradeContest_Cool, Version = GameVersion.E, }, // Ralts (Level 4 Route 102) -> Seedot - new EncounterTrade { Species = 311, Ability = 1, TID = 08460, SID = 00001, OTGender = 0, Gender = 1, IVs = new[] {4,4,4,5,5,4}, Level = 05, Nature = Nature.Hasty, Contest = TradeContest_Cute, Version = GameVersion.E, }, // Volbeat (Level 5 Breeding) -> Plusle - new EncounterTrade { Species = 116, Ability = 1, TID = 46285, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {5,4,4,4,5,4}, Level = 05, Nature = Nature.Brave, Contest = TradeContest_Tough, Version = GameVersion.E, }, // Bagon Bagon (Level 5 Breeding) -> Horsea* - new EncounterTrade { Species = 052, Ability = 1, TID = 25945, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {4,5,4,5,4,4}, Level = 03, Nature = Nature.Naive, Contest = TradeContest_Clever, Version = GameVersion.E, }, // Skitty (Level 3 Trade)-> Meowth* - // If Pokémon with * is evolved in a Generation IV or V game, its Ability will become its second Ability. - }; - internal static readonly EncounterTrade[] TradeGift_FRLG = - { - new EncounterTrade { Species = 122, Ability = 1, TID = 01985, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,15,17,24,23,22}, Nature = Nature.Timid, Contest = TradeContest_Clever,}, // Mr. Mime - new EncounterTrade { Species = 029, Ability = 1, TID = 63184, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {22,18,25,19,15,22}, Nature = Nature.Bold, Contest = TradeContest_Tough, Version = GameVersion.FR, }, // Nidoran♀ - new EncounterTrade { Species = 032, Ability = 1, TID = 63184, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {19,25,18,22,22,15}, Nature = Nature.Lonely, Contest = TradeContest_Cool, Version = GameVersion.LG, }, // Nidoran♂ * - new EncounterTrade { Species = 030, Ability = 1, TID = 13637, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {22,25,18,19,22,15}, Nature = Nature.Lonely, Contest = TradeContest_Cute, Version = GameVersion.FR,}, // Nidorina * - new EncounterTrade { Species = 033, Ability = 1, TID = 13637, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {19,18,25,22,15,22}, Nature = Nature.Bold, Contest = TradeContest_Tough, Version = GameVersion.LG,}, // Nidorino * - new EncounterTrade { Species = 108, Ability = 1, TID = 01239, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {24,19,21,15,23,21}, Nature = Nature.Relaxed, Contest = TradeContest_Tough, }, // Lickitung * - new EncounterTrade { Species = 124, Ability = 1, TID = 36728, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {18,17,18,22,25,21}, Nature = Nature.Mild, Contest = TradeContest_Beauty, }, // Jynx - new EncounterTrade { Species = 083, Ability = 1, TID = 08810, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,25,21,24,15,20}, Nature = Nature.Adamant, Contest = TradeContest_Cool, }, // Farfetch'd - new EncounterTrade { Species = 101, Ability = 2, TID = 50298, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {19,16,18,25,25,19}, Nature = Nature.Hasty, Contest = TradeContest_Cool, }, // Electrode - new EncounterTrade { Species = 114, Ability = 1, TID = 60042, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {22,17,25,16,23,20}, Nature = Nature.Sassy, Contest = TradeContest_Cute, }, // Tangela - new EncounterTrade { Species = 086, Ability = 1, TID = 09853, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {24,15,22,16,23,22}, Nature = Nature.Bold, Contest = TradeContest_Tough, }, // Seel * - // If Pokémon with * is evolved in a Generation IV or V game, its Ability will become its second Ability. - }; - - #region AltSlots - internal static readonly int[] SafariZoneLocation_3 = - { - 57, 136 - }; - private static readonly EncounterArea[] SlotsRSEAlt = - { - // Swarm can be passed from one game to another via mixing records, that means emerald swarms can occurs in r/s and r/s swarms in emerald - // Ruby and Sapphire Swarm - new EncounterArea { - Location = 17, // Route 102 - Slots = new[] - { - new EncounterSlot { Species = 283, LevelMin = 3, LevelMax = 3, Type = SlotType.Grass}, // Surskit - },}, - new EncounterArea { - Location = 29, // Route 114 - Slots = new[] - { - new EncounterSlot { Species = 283, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Surskit - },}, - new EncounterArea { - Location = 31, // Route 116 - Slots = new[] - { - new EncounterSlot { Species = 300, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Skitty - },}, - new EncounterArea { - Location = 32, // Route 117 - Slots = new[] - { - new EncounterSlot { Species = 283, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Surskit - },}, - new EncounterArea { - Location = 35, // Route 120 - Slots = new[] - { - new EncounterSlot { Species = 283, LevelMin = 28, LevelMax = 28, Type = SlotType.Grass}, // Surskit - },}, - - //Emerald Swarm - new EncounterArea { - Location = 17, // Route 102 - Slots = new[] - { - new EncounterSlot { Species = 273, LevelMin = 3, LevelMax = 3, Type = SlotType.Grass}, // Seedot - },}, - new EncounterArea { - Location = 29, // Route 114 - Slots = new[] - { - new EncounterSlot { Species = 274, LevelMin = 15, LevelMax = 15, Type = SlotType.Grass}, // Nuzleaf - },}, - new EncounterArea { - Location = 31, // Route 116 - Slots = new[] - { - new EncounterSlot { Species = 300, LevelMin = 8, LevelMax = 8, Type = SlotType.Grass}, // Skitty - },}, - new EncounterArea { - Location = 32, // Route 117 - Slots = new[] - { - new EncounterSlot { Species = 273, LevelMin = 13, LevelMax = 13, Type = SlotType.Grass}, // Seedot - },}, - new EncounterArea { - Location = 35, // Route 120 - Slots = new[] - { - new EncounterSlot { Species = 273, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass}, // Seedot - },}, - //Feebas fishing spot - new EncounterArea { - Location = 34, // Route 119 - Slots = new[] - { - new EncounterSlot { Species = 349, LevelMin = 20, LevelMax = 25, Type = SlotType.Super_Rod } // Feebas - },}, - }; - private static readonly EncounterArea[] SlotsFRLGAlt = - { - new EncounterArea { - Location = 188, // Monean Chamber - Slots = new[] - { - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 0 }, // Unown A - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 26 }, // Unown ? - },}, - new EncounterArea { - Location = 189, // Liptoo Chamber - Slots = new[] - { - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 2 }, // Unown C - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 3 }, // Unown D - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 7 }, // Unown H - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 14 }, // Unown O - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 20 }, // Unown U - },}, - new EncounterArea { - Location = 190, // Weepth Chamber - Slots = new[] - { - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 4 }, // Unown E - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 8 }, // Unown I - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 13 }, // Unown N - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 18 }, // Unown S - },}, - new EncounterArea { - Location = 191, // Dilford Chamber - Slots = new[] - { - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 9 }, // Unown J - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 11 }, // Unown L - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 15 }, // Unown P - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 16 }, // Unown Q - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 17 }, // Unown R - },}, - new EncounterArea { - Location = 192, // Scufib Chamber - Slots = new[] - { - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 5 }, // Unown F - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 6 }, // Unown G - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 10 }, // Unown K - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 19 }, // Unown T - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 24 }, // Unown Y - },}, - new EncounterArea { - Location = 193, // Rixy Chamber - Slots = new[] - { - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 1 }, // Unown B - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 12 }, // Unown M - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 21 }, // Unown V - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 22 }, // Unown W - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 23 }, // Unown X - },}, - new EncounterArea { - Location = 194, // Viapois Chamber - Slots = new[] - { - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 25 }, // Unown Z - new EncounterSlot { Species = 201, LevelMin = 25, LevelMax = 25, Type = SlotType.Grass, Form = 27 }, // Unown ! - },} - }; - #endregion internal static readonly int[] ValidEggMet_RSE = { 32, //Route 117 @@ -808,253 +257,5 @@ public static partial class Legal { 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, }).ToArray(); - - #region Colosseum - internal static readonly EncounterStatic[] Encounter_Colo = - { - new EncounterStatic { Gift = true, Species = 196, Level = 25, Location = 254 }, // Espeon - new EncounterStatic { Gift = true, Species = 197, Level = 26, Location = 254, Moves = new[] {044} }, // Umbreon (Bite) - - new EncounterStaticShadow { Species = 296, Level = 30, Gauge = 03000, Moves = new[] {193,116,233,238}, Location = 005 }, // Makuhita: Miror B.Peon Trudly @ Phenac City - - // missing locs: Realgam Tower - new EncounterStaticShadow { Species = 153, Level = 30, Gauge = 03000, Moves = new[] {241,235,075,034}, Location = 003 }, // Bayleef: Cipher Peon Verde @ Phenac City - new EncounterStaticShadow { Species = 156, Level = 30, Gauge = 03000, Moves = new[] {241,108,091,172}, Location = 003 }, // Quilava: Cipher Peon Rosso @ Phenac City - new EncounterStaticShadow { Species = 159, Level = 30, Gauge = 03000, Moves = new[] {240,184,044,057}, Location = 003 }, // Croconaw: Cipher Peon Bluno @ Phenac City - new EncounterStaticShadow { Species = 153, Level = 30, Gauge = 03000, Moves = new[] {241,235,075,034}, Location = 132 }, // Bayleef: Cipher Peon Verde @ Snagem Hideout - new EncounterStaticShadow { Species = 156, Level = 30, Gauge = 03000, Moves = new[] {241,108,091,172}, Location = 132 }, // Quilava: Cipher Peon Rosso @ Snagem Hideout - new EncounterStaticShadow { Species = 159, Level = 30, Gauge = 03000, Moves = new[] {240,184,044,057}, Location = 132 }, // Croconaw: Cipher Peon Bluno @ Snagem Hideout - new EncounterStaticShadow { Species = 153, Level = 30, Gauge = 03000, Moves = new[] {241,235,075,034}, Location = 069 }, // Bayleef: Cipher Peon Verde @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 156, Level = 30, Gauge = 03000, Moves = new[] {241,108,091,172}, Location = 069 }, // Quilava: Cipher Peon Rosso @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 159, Level = 30, Gauge = 03000, Moves = new[] {240,184,044,057}, Location = 069 }, // Croconaw: Cipher Peon Bluno @ Shadow PKMN Lab - - new EncounterStaticShadow { Species = 218, Level = 30, Gauge = 04000, Moves = new[] {241,281,088,053}, Location = 015 }, // Slugma: Roller Boy Lon @ Pyrite Town - new EncounterStaticShadow { Species = 164, Level = 30, Gauge = 03000, Moves = new[] {211,095,115,019}, Location = 015 }, // Noctowl: Rider Nover @ Pyrite Town - new EncounterStaticShadow { Species = 180, Level = 30, Gauge = 03000, Moves = new[] {085,086,178,084}, Location = 015 }, // Flaaffy: St.Performer Diogo @ Pyrite Town - new EncounterStaticShadow { Species = 188, Level = 30, Gauge = 03000, Moves = new[] {235,079,178,072}, Location = 015 }, // Skiploom: Rider Leba @ Pyrite Town - new EncounterStaticShadow { Species = 195, Level = 30, Gauge = 04000, Moves = new[] {341,133,021,057}, Location = 015 }, // Quagsire: Bandana Guy Divel @ Pyrite Town - new EncounterStaticShadow { Species = 200, Level = 30, Gauge = 04000, Moves = new[] {060,109,212,247}, Location = 015 }, // Misdreavus: Rider Vant @ Pyrite Town - new EncounterStaticShadow { Species = 162, Level = 33, Gauge = 05000, Moves = new[] {231,270,098,070}, Location = 015 }, // Furret: Rogue Cail @ Pyrite Town - - // missing loc: Snagem Hideout - new EncounterStaticShadow { Species = 193, Level = 33, Gauge = 05000, Moves = new[] {197,048,049,253}, Location = 025 }, // Yanma: Cipher Peon Nore @ Pyrite Bldg - - new EncounterStaticShadow { Species = 223, Level = 20, Gauge = 04000, Moves = new[] {061,199,060,062}, Location = 028 }, // Remoraid: Miror B.Peon Reath @ Pyrite Bldg - new EncounterStaticShadow { Species = 223, Level = 20, Gauge = 04000, Moves = new[] {061,199,060,062}, Location = 030 }, // Remoraid: Miror B.Peon Reath @ Pyrite Cave - new EncounterStaticShadow { Species = 226, Level = 33, Gauge = 05000, Moves = new[] {017,048,061,036}, Location = 028 }, // Mantine: Miror B.Peon Ferma @ Pyrite Bldg - new EncounterStaticShadow { Species = 226, Level = 33, Gauge = 05000, Moves = new[] {017,048,061,036}, Location = 030 }, // Mantine: Miror B.Peon Ferma @ Pyrite Cave - - new EncounterStaticShadow { Species = 211, Level = 33, Gauge = 05000, Moves = new[] {042,107,040,057}, Location = 015 }, // Qwilfish: Hunter Doken @ Pyrite Bldg - new EncounterStaticShadow { Species = 307, Level = 33, Gauge = 05000, Moves = new[] {197,347,093,136}, Location = 031 }, // Meditite: Rider Twan @ Pyrite Cave - new EncounterStaticShadow { Species = 206, Level = 33, Gauge = 05000, Moves = new[] {180,137,281,036}, Location = 029 }, // Dunsparce: Rider Sosh @ Pyrite Cave - new EncounterStaticShadow { Species = 333, Level = 33, Gauge = 05000, Moves = new[] {119,047,219,019}, Location = 032 }, // Swablu: Hunter Zalo @ Pyrite Cave - - new EncounterStaticShadow { Species = 185, Level = 35, Gauge = 10000, Moves = new[] {175,335,067,157}, Location = 125 }, // Sudowoodo: Cipher Admin Miror B. @ Deep Colosseum -- (Realgam Tower missing) - new EncounterStaticShadow { Species = 185, Level = 35, Gauge = 10000, Moves = new[] {175,335,067,157}, Location = 030 }, // Sudowoodo: Cipher Admin Miror B. @ Pyrite Cave - - // missing locs: Shadow PKMN Lab - new EncounterStaticShadow { Species = 237, Level = 38, Gauge = 06000, Moves = new[] {097,116,167,229}, Location = 039 }, // Hitmontop: Cipher Peon Skrub @ Agate Village - new EncounterStaticShadow { Species = 237, Level = 38, Gauge = 06000, Moves = new[] {097,116,167,229}, Location = 132 }, // Hitmontop: Cipher Peon Skrub @ Snagem Hideout - - new EncounterStaticShadow { Species = 166, Level = 40, Gauge = 06000, Moves = new[] {226,219,048,004}, Location = 047 }, // Ledian: Cipher Peon Kloak @ The Under - new EncounterStaticShadow { Species = 166, Level = 40, Gauge = 06000, Moves = new[] {226,219,048,004}, Location = 132 }, // Ledian: Cipher Peon Kloak @ Snagem Hideout - - // missing locs: Realgam Tower/Deep Colosseum - new EncounterStaticShadow { Species = 244, Level = 40, Gauge = 13000, Moves = new[] {241,043,044,126}, Location = 076 }, // Entei: Cipher Admin Dakim @ Mt. Battle - - // missing loc: Realgam Tower - new EncounterStaticShadow { Species = 245, Level = 40, Gauge = 13000, Moves = new[] {240,043,016,057}, Location = 055 }, // Suicune (Surf): Cipher Admin Venus @ The Under - new EncounterStaticShadow { Species = 245, Level = 40, Gauge = 13000, Moves = new[] {240,043,016,056}, Location = 000 }, // Suicune (Hydro Pump): Cipher Admin Venus @ Deep Colosseum - - // missing locs: Realgam Tower/Deep Colosseum - new EncounterStaticShadow { Species = 243, Level = 40, Gauge = 13000, Moves = new[] {240,043,098,087}, Location = 069 }, // Raikou: Cipher Admin Ein @ Shadow PKMN Lab - - new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 058 }, // Gligar: Hunter Frena @ The Under Subway - new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 133 }, // Gligar: Hunter Frena @ Snagem Hideout - new EncounterStaticShadow { Species = 234, Level = 43, Gauge = 06000, Moves = new[] {310,095,043,036}, Location = 058 }, // Stantler: Chaser Liaks @ The Under Subway - new EncounterStaticShadow { Species = 234, Level = 43, Gauge = 06000, Moves = new[] {310,095,043,036}, Location = 133 }, // Stantler: Chaser Liaks @ Snagem Hideout - new EncounterStaticShadow { Species = 221, Level = 43, Gauge = 06000, Moves = new[] {203,316,091,059}, Location = 058 }, // Piloswine: Bodybuilder Lonia @ The Under Subway - new EncounterStaticShadow { Species = 221, Level = 43, Gauge = 06000, Moves = new[] {203,316,091,059}, Location = 134 }, // Piloswine: Bodybuilder Lonia @ Snagem Hideout - new EncounterStaticShadow { Species = 215, Level = 43, Gauge = 06000, Moves = new[] {185,103,154,196}, Location = 058 }, // Sneasel: Rider Nelis @ The Under Subway - new EncounterStaticShadow { Species = 215, Level = 43, Gauge = 06000, Moves = new[] {185,103,154,196}, Location = 134 }, // Sneasel: Rider Nelis @ Snagem Hideout - new EncounterStaticShadow { Species = 190, Level = 43, Gauge = 06000, Moves = new[] {226,321,154,129}, Location = 067 }, // Aipom: Cipher Peon Cole @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 198, Level = 43, Gauge = 06000, Moves = new[] {185,212,101,019}, Location = 067 }, // Murkrow: Cipher Peon Lare @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 205, Level = 43, Gauge = 06000, Moves = new[] {153,182,117,229}, Location = 067 }, // Forretress: Cipher Peon Vana @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 168, Level = 43, Gauge = 06000, Moves = new[] {169,184,141,188}, Location = 069 }, // Ariados: Cipher Peon Lesar @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 210, Level = 43, Gauge = 06000, Moves = new[] {044,184,046,070}, Location = 069 }, // Granbull: Cipher Peon Tanie @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 329, Level = 43, Gauge = 06000, Moves = new[] {242,103,328,225}, Location = 068 }, // Vibrava: Cipher Peon Remil @ Shadow PKMN Lab - - new EncounterStaticShadow { Species = 192, Level = 45, Gauge = 07000, Moves = new[] {241,074,275,076}, Location = 109 }, // Sunflora: Cipher Peon Baila @ Realgam Tower - new EncounterStaticShadow { Species = 225, Level = 45, Gauge = 07000, Moves = new[] {059,213,217,019}, Location = 109 }, // Delibird: Cipher Peon Arton @ Realgam Tower - new EncounterStaticShadow { Species = 214, Level = 45, Gauge = 07000, Moves = new[] {179,203,068,280}, Location = 111 }, // Heracross: Cipher Peon Dioge @ Realgam Tower - new EncounterStaticShadow { Species = 227, Level = 47, Gauge = 13000, Moves = new[] {065,319,314,211}, Location = 117 }, // Skarmory: Snagem Head Gonzap @ Realgam Tower - new EncounterStaticShadow { Species = 192, Level = 45, Gauge = 07000, Moves = new[] {241,074,275,076}, Location = 132 }, // Sunflora: Cipher Peon Baila @ Snagem Hideout - new EncounterStaticShadow { Species = 225, Level = 45, Gauge = 07000, Moves = new[] {059,213,217,019}, Location = 132 }, // Delibird: Cipher Peon Arton @ Snagem Hideout - new EncounterStaticShadow { Species = 214, Level = 45, Gauge = 07000, Moves = new[] {179,203,068,280}, Location = 132 }, // Heracross: Cipher Peon Dioge @ Snagem Hideout - new EncounterStaticShadow { Species = 227, Level = 47, Gauge = 13000, Moves = new[] {065,319,314,211}, Location = 133 }, // Skarmory: Snagem Head Gonzap @ Snagem Hideout - - new EncounterStaticShadow { Species = 241, Level = 48, Gauge = 07000, Moves = new[] {208,111,205,034}, Location = 118 }, // Miltank: Bodybuilder Jomas @ Tower Colosseum - new EncounterStaticShadow { Species = 359, Level = 48, Gauge = 07000, Moves = new[] {195,014,163,185}, Location = 118 }, // Absol: Rider Delan @ Tower Colosseum - new EncounterStaticShadow { Species = 229, Level = 48, Gauge = 07000, Moves = new[] {185,336,123,053}, Location = 118 }, // Houndoom: Cipher Peon Nella @ Tower Colosseum - new EncounterStaticShadow { Species = 357, Level = 49, Gauge = 07000, Moves = new[] {076,235,345,019}, Location = 118 }, // Tropius: Cipher Peon Ston @ Tower Colosseum - new EncounterStaticShadow { Species = 376, Level = 50, Gauge = 15000, Moves = new[] {063,334,232,094}, Location = 118 }, // Metagross: Cipher Nascour @ Tower Colosseum - new EncounterStaticShadow { Species = 248, Level = 55, Gauge = 20000, Moves = new[] {242,087,157,059}, Location = 118 }, // Tyranitar: Cipher Head Evice @ Tower Colosseum - new EncounterStaticShadow { Species = 235, Level = 45, Gauge = 07000, Moves = new[] {166,039,003,231}, Location = 132 }, // Smeargle: Team Snagem Biden @ Snagem Hideout - new EncounterStaticShadow { Species = 217, Level = 45, Gauge = 07000, Moves = new[] {185,313,122,163}, Location = 132 }, // Ursaring: Team Snagem Agrev @ Snagem Hideout - new EncounterStaticShadow { Species = 213, Level = 45, Gauge = 07000, Moves = new[] {219,227,156,117}, Location = 125 }, // Shuckle: Deep King Agnol @ Deep Colosseum - new EncounterStaticShadow { Species = 176, Level = 20, Gauge = 05000, Moves = new[] {118,204,186,281}, Location = 001 }, // Togetic: Cipher Peon Fein @ Outskirt Stand - new EncounterStaticShadow { Species = 175, Level = 20, Gauge = 00000, Moves = new[] {118,204,186,281}, IVs = new[] {0,0,0,0,0,0}, EReader = true }, // Togepi: Chaser ボデス @ Card e Room (Japanese games only) - new EncounterStaticShadow { Species = 179, Level = 37, Gauge = 00000, Moves = new[] {087,084,086,178}, IVs = new[] {0,0,0,0,0,0}, EReader = true }, // Mareep: Hunter ホル @ Card e Room (Japanese games only) - new EncounterStaticShadow { Species = 212, Level = 50, Gauge = 00000, Moves = new[] {210,232,014,163}, IVs = new[] {0,0,0,0,0,0}, EReader = true }, // Scizor: Bodybuilder ワーバン @ Card e Room (Japanese games only) - }; - #endregion - - #region XD - - internal static readonly EncounterStatic[] Encounter_XD = - { - new EncounterStatic { Fateful = true, Gift = true, Species = 133, Level = 10, Location = 000, Moves = new[] {044} }, // Eevee (Bite) - new EncounterStatic { Fateful = true, Gift = true, Species = 152, Level = 05, Location = 016, Moves = new[] {246,033,045,338} }, // Chikorita - new EncounterStatic { Fateful = true, Gift = true, Species = 155, Level = 05, Location = 016, Moves = new[] {179,033,043,307} }, // Cyndaquil - new EncounterStatic { Fateful = true, Gift = true, Species = 158, Level = 05, Location = 016, Moves = new[] {242,010,043,308} }, // Totodile - - new EncounterStaticShadow { Fateful = true, Species = 216, Level = 11, Gauge = 03000, Moves = new[] {216,287,122,232}, Location = 143, }, // Teddiursa: Cipher Peon Naps @ Pokémon HQ Lab - new EncounterStaticShadow { Fateful = true, Species = 165, Level = 10, Gauge = 02500, Moves = new[] {060,287,332,048}, Location = 153, }, // Ledyba: Casual Guy Cyle @ Gateon Port - new EncounterStaticShadow { Fateful = true, Species = 261, Level = 10, Gauge = 02500, Moves = new[] {091,215,305,336}, Location = 162, }, // Poochyena: Bodybuilder Kilen @ Gateon Port - new EncounterStaticShadow { Fateful = true, Species = 228, Level = 17, Gauge = 01500, Moves = new[] {185,204,052,046}, Location = 011, }, // Houndour: Cipher Peon Resix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 343, Level = 17, Gauge = 01500, Moves = new[] {317,287,189,060}, Location = 011, }, // Baltoy: Cipher Peon Browsix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 179, Level = 17, Gauge = 01500, Moves = new[] {034,215,084,086}, Location = 011, }, // Mareep: Cipher Peon Yellosix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 273, Level = 17, Gauge = 01500, Moves = new[] {202,287,331,290}, Location = 011, }, // Seedot: Cipher Peon Greesix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 363, Level = 17, Gauge = 01500, Moves = new[] {062,204,055,189}, Location = 011, }, // Spheal: Cipher Peon Blusix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 316, Level = 17, Gauge = 01500, Moves = new[] {351,047,124,092}, Location = 011, }, // Gulpin: Cipher Peon Purpsix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 167, Level = 14, Gauge = 01500, Moves = new[] {091,287,324,101}, Location = 010, }, // Spinarak: Cipher Peon Nexir @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 322, Level = 14, Gauge = 01500, Moves = new[] {036,204,091,052}, Location = 009, }, // Numel: Cipher Peon Solox @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 318, Level = 15, Gauge = 01700, Moves = new[] {352,287,184,044}, Location = 008, }, // Carvanha: Cipher Peon Cabol @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 285, Level = 15, Gauge = 01800, Moves = new[] {206,287,072,078}, Location = 008, }, // Shroomish: Cipher R&D Klots @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 301, Level = 18, Gauge = 02500, Moves = new[] {290,186,213,351}, Location = 008, }, // Delcatty: Cipher Admin Lovrina @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 100, Level = 19, Gauge = 02500, Moves = new[] {243,287,209,129}, Location = 092, }, // Voltorb: Wanderer Miror B. @ Cave Poké Spot - new EncounterStaticShadow { Fateful = true, Species = 296, Level = 18, Gauge = 02000, Moves = new[] {280,287,292,317}, Location = 109, }, // Makuhita: Cipher Peon Torkin @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 037, Level = 18, Gauge = 02000, Moves = new[] {257,204,052,091}, Location = 109, }, // Vulpix: Cipher Peon Mesin @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 355, Level = 19, Gauge = 02200, Moves = new[] {247,270,310,109}, Location = 110, }, // Duskull: Cipher Peon Lobar @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 280, Level = 20, Gauge = 02200, Moves = new[] {351,047,115,093}, Location = 119, }, // Ralts: Cipher Peon Feldas @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 303, Level = 22, Gauge = 02500, Moves = new[] {206,047,011,334}, Location = 111, }, // Mawile: Cipher Cmdr Exol @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 361, Level = 20, Gauge = 02500, Moves = new[] {352,047,044,196}, Location = 097, }, // Snorunt: Cipher Peon Exinn @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 204, Level = 20, Gauge = 02500, Moves = new[] {042,287,191,068}, Location = 096, }, // Pineco: Cipher Peon Gonrap @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 177, Level = 22, Gauge = 02500, Moves = new[] {248,226,101,332}, Location = 094, }, // Natu: Cipher Peon Eloin @ Phenac City - - new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 113 }, // Roselia: Cipher Peon Fasin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 094 }, // Roselia: Cipher Peon Fasin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 113 }, // Meowth: Cipher Peon Fostin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 094 }, // Meowth: Cipher Peon Fostin @ Phenac City - - new EncounterStaticShadow { Fateful = true, Species = 220, Level = 22, Gauge = 02500, Moves = new[] {246,204,054,341}, Location = 100 }, // Swinub: Cipher Peon Greck @ Phenac City - - new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 059 }, // Spearow: Cipher Peon Ezin @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 107 }, // Spearow: Cipher Peon Ezin @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 059 }, // Grimer: Cipher Peon Faltly @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 107 }, // Grimer: Cipher Peon Faltly @ Phenac Stadium - - new EncounterStaticShadow { Fateful = true, Species = 086, Level = 23, Gauge = 03500, Moves = new[] {057,270,219,058}, Location = 107 }, // Seel: Cipher Peon Egrog @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 337, Level = 25, Gauge = 05000, Moves = new[] {094,226,240,317}, Location = 107 }, // Lunatone: Cipher Admin Snattle @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 175, Level = 25, Gauge = 04500, Moves = new[] {266,161,246,270}, Location = 164, Gift = true }, // Togepi: Pokémon Trainer Hordel @ Outskirt Stand - - new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 090 }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots - new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 113 }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots - - new EncounterStaticShadow { Fateful = true, Species = 335, Level = 28, Gauge = 05000, Moves = new[] {280,287,068,306}, Location = 071 }, // Zangoose: Thug Zook @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 335, Level = 28, Gauge = 05000, Moves = new[] {280,287,068,306}, Location = 090 }, // Zangoose: Thug Zook @ Cipher Key Lair - - new EncounterStaticShadow { Fateful = true, Species = 046, Level = 28, Gauge = 04000, Moves = new[] {147,287,163,206}, Location = 064 }, // Paras: Cipher Peon Humah @ Cipher Key Lair - - new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 064 }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 113 }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair - - new EncounterStaticShadow { Fateful = true, Species = 015, Level = 30, Gauge = 04500, Moves = new[] {188,226,041,014}, Location = 059 }, // Beedrill: Cipher Peon Lok @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 059 }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 059 }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 059 }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 059 }, // Banette: Cipher Peon Litnar @ Citadark Isle - - new EncounterStaticShadow { Fateful = true, Species = 090, Level = 29, Gauge = 04000, Moves = new[] {036,287,057,062}, Location = 065 }, // Shellder: Cipher Peon Gorog @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 015, Level = 30, Gauge = 04500, Moves = new[] {188,226,041,014}, Location = 066 }, // Beedrill: Cipher Peon Lok @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 017, Level = 30, Gauge = 04000, Moves = new[] {017,287,211,297}, Location = 066 }, // Pidgeotto: Cipher Peon Lok @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 114, Level = 30, Gauge = 04000, Moves = new[] {076,234,241,275}, Location = 067 }, // Tangela: Cipher Peon Targ @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 067 }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 082, Level = 30, Gauge = 04500, Moves = new[] {038,287,240,087}, Location = 067 }, // Magneton: Cipher Peon Snidle @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 070 }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 070, Level = 32, Gauge = 04000, Moves = new[] {345,234,188,230}, Location = 070 }, // Weepinbell: Cipher Peon Angic @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 024, Level = 33, Gauge = 05000, Moves = new[] {188,287,137,044}, Location = 070 }, // Arbok: Cipher Peon Smarton @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 057, Level = 34, Gauge = 06000, Moves = new[] {238,270,116,179}, Location = 069 }, // Primeape: Cipher Admin Gorigan @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 069 }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 055, Level = 33, Gauge = 06500, Moves = new[] {127,204,244,280}, Location = 088 }, // Golduck: Navigator Abson @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 302, Level = 33, Gauge = 07000, Moves = new[] {247,270,185,105}, Location = 088 }, // Sableye: Navigator Abson @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 085, Level = 34, Gauge = 08000, Moves = new[] {065,226,097,161}, Location = 076 }, // Dodrio: Chaser Furgy @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 020, Level = 34, Gauge = 06000, Moves = new[] {162,287,184,158}, Location = 076 }, // Raticate: Chaser Furgy @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 083, Level = 36, Gauge = 05500, Moves = new[] {163,226,014,332}, Location = 076 }, // Farfetch'd: Cipher Admin Lovrina @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 334, Level = 36, Gauge = 06500, Moves = new[] {225,215,076,332}, Location = 076 }, // Altaria: Cipher Admin Lovrina @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 115, Level = 35, Gauge = 06000, Moves = new[] {089,047,039,146}, Location = 085 }, // Kangaskhan: Cipher Peon Litnar @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 085 }, // Banette: Cipher Peon Litnar @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 126, Level = 36, Gauge = 07000, Moves = new[] {126,266,238,009}, Location = 077 }, // Magmar: Cipher Peon Grupel @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 127, Level = 35, Gauge = 07000, Moves = new[] {012,270,206,066}, Location = 077 }, // Pinsir: Cipher Peon Grupel @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 078, Level = 40, Gauge = 06000, Moves = new[] {076,226,241,053}, Location = 080 }, // Rapidash: Cipher Peon Kolest @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 219, Level = 38, Gauge = 05500, Moves = new[] {257,287,089,053}, Location = 080 }, // Magcargo: Cipher Peon Kolest @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 107, Level = 38, Gauge = 06000, Moves = new[] {005,270,170,327}, Location = 081 }, // Hitmonchan: Cipher Peon Karbon @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 106, Level = 38, Gauge = 07000, Moves = new[] {136,287,170,025}, Location = 081 }, // Hitmonlee: Cipher Peon Petro @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 108, Level = 38, Gauge = 05000, Moves = new[] {038,270,111,205}, Location = 084 }, // Lickitung: Cipher Peon Geftal @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 123, Level = 40, Gauge = 08000, Moves = new[] {013,234,318,163}, Location = 084 }, // Scyther: Cipher Peon Leden @ Citadark Isle - - new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 084 }, // Chansey: Cipher Peon Leden @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 087 }, // Chansey: Cipher Peon Leden @ Citadark Isle - - new EncounterStaticShadow { Fateful = true, Species = 338, Level = 41, Gauge = 07500, Moves = new[] {094,226,241,322}, Location = 087 }, // Solrock: Cipher Admin Snattle @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 121, Level = 41, Gauge = 07500, Moves = new[] {127,287,058,105}, Location = 087 }, // Starmie: Cipher Admin Snattle @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 277, Level = 43, Gauge = 07000, Moves = new[] {143,226,097,263}, Location = 087 }, // Swellow: Cipher Admin Ardos @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 125, Level = 43, Gauge = 07000, Moves = new[] {238,266,086,085}, Location = 087 }, // Electabuzz: Cipher Admin Ardos @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 143, Level = 43, Gauge = 09000, Moves = new[] {090,287,174,034}, Location = 087 }, // Snorlax: Cipher Admin Ardos @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 062, Level = 42, Gauge = 07500, Moves = new[] {056,270,240,280}, Location = 087 }, // Poliwrath: Cipher Admin Gorigan @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 122, Level = 42, Gauge = 06500, Moves = new[] {094,266,227,009}, Location = 087 }, // Mr. Mime: Cipher Admin Gorigan @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 051, Level = 40, Gauge = 05000, Moves = new[] {089,204,201,161}, Location = 075 }, // Dugtrio: Cipher Peon Kolax @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 310, Level = 44, Gauge = 07000, Moves = new[] {087,287,240,044}, Location = 073 }, // Manectric: Cipher Admin Eldes @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 373, Level = 50, Gauge = 09000, Moves = new[] {337,287,349,332}, Location = 073 }, // Salamence: Cipher Admin Eldes @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 105, Level = 44, Gauge = 06500, Moves = new[] {089,047,014,157}, Location = 073 }, // Marowak: Cipher Admin Eldes @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 131, Level = 44, Gauge = 06000, Moves = new[] {056,215,240,059}, Location = 073 }, // Lapras: Cipher Admin Eldes @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 249, Level = 50, Gauge = 12000, Moves = new[] {354,297,089,056}, Location = 074 }, // Lugia: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 112, Level = 46, Gauge = 07000, Moves = new[] {224,270,184,089}, Location = 074 }, // Rhydon: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 146, Level = 50, Gauge = 10000, Moves = new[] {326,234,261,053}, Location = 074 }, // Moltres: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 103, Level = 46, Gauge = 09000, Moves = new[] {094,287,095,246}, Location = 074 }, // Exeggutor: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 128, Level = 46, Gauge = 09000, Moves = new[] {089,287,039,034}, Location = 074 }, // Tauros: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 144, Level = 50, Gauge = 10000, Moves = new[] {326,215,114,058}, Location = 074 }, // Articuno: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 145, Level = 50, Gauge = 10000, Moves = new[] {326,226,319,085}, Location = 074 }, // Zapdos: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 149, Level = 55, Gauge = 09000, Moves = new[] {063,215,349,089}, Location = 162 }, // Dragonite: Wanderer Miror B. @ Gateon Port - }; - - internal static readonly EncounterArea[] SlotsXD = - { - new EncounterArea { Location = 090, Slots = new[] // Rock - { - new EncounterSlot {Species = 027, LevelMin = 10, LevelMax = 23, SlotNumber = 0}, // Sandshrew - new EncounterSlot {Species = 207, LevelMin = 10, LevelMax = 20, SlotNumber = 1}, // Gligar - new EncounterSlot {Species = 328, LevelMin = 10, LevelMax = 20, SlotNumber = 2}, // Trapinch - } - }, - new EncounterArea { Location = 091, Slots = new[] // Oasis - { - new EncounterSlot {Species = 187, LevelMin = 10, LevelMax = 20, SlotNumber = 0}, // Hoppip - new EncounterSlot {Species = 231, LevelMin = 10, LevelMax = 20, SlotNumber = 1}, // Phanpy - new EncounterSlot {Species = 283, LevelMin = 10, LevelMax = 20, SlotNumber = 2}, // Surskit - } - }, - new EncounterArea { Location = 092, Slots = new[] // Cave - { - new EncounterSlot {Species = 041, LevelMin = 10, LevelMax = 21, SlotNumber = 0}, // Zubat - new EncounterSlot {Species = 304, LevelMin = 10, LevelMax = 21, SlotNumber = 1}, // Aron - new EncounterSlot {Species = 194, LevelMin = 10, LevelMax = 21, SlotNumber = 2}, // Wooper - } - }, - }; - - internal static readonly EncounterStatic[] Encounter_CXD = Encounter_Colo.Concat(Encounter_XD).ToArray(); - - #endregion } } diff --git a/PKHeX.Core/Legality/Tables4.cs b/PKHeX.Core/Legality/Tables4.cs index dc3e7b60e..4f754e2ea 100644 --- a/PKHeX.Core/Legality/Tables4.cs +++ b/PKHeX.Core/Legality/Tables4.cs @@ -202,1128 +202,12 @@ public static partial class Legal new[] { 147, 148, 149, 230, 329, 330, 334, 371, 372, 373, 380, 381, 384, 443, 444, 445, 483, 484, 487 } }; - #region Encounter Types - internal static readonly int[] DPPt_CaveLocations = - { - 46, // Oreburgh Mine - 50, // Mt. Coronet - 53, // Solaceon Ruins - 54, // Sinnoh Victory Road - 57, // Ravaged Path - 59, // Oreburgh Gate - 62, // Turnback Cave - 64, // Snowpoint Temple - 65, // Wayward Cave - 66, // Ruin Maniac Cave - 67, // Maniac Tunnel - 66, // Ruin Maniac Cave - 69, // Iron Island - 84, // Stark Mountain - }; - internal static readonly int[] DPPt_MixInteriorExteriorLocations = - { - 24, // Route 209 (Lost Tower) - 50, // Mt Coronet - 84, // Stark Mountain - }; - internal static readonly int[] DPPt_MtCoronetExteriorEncounters = - { - 4, 5, 70 - }; - internal static readonly int[] HGSS_CaveLocations = - { - 197, // DIGLETT's Cave - 198, // Mt. Moon - 199, // Cerulean Cave - 200, // Rock Tunnel - 201, // Power Plant - 203, // Seafoam Islands - 204, // Sprout Tower - 205, // Bell Tower - 206, // Burned Tower - 209, // Ruins of Alph - 210, // Union Cave - 211, // SLOWPOKE Well - 214, // Ilex Forest - 216, // Mt. Mortar - 217, // Ice Path - 218, // Whirl Islands - 219, // Mt. Silver Cave - 220, // Dark Cave - 221, // Kanto Victory Road - 223, // Tohjo Falls - 228, // Cliff Cave - 234, // Cliff Edge Gate - }; - internal static readonly int[] HGSS_CityLocations = - { - 126, // New Bark Town - 127, // Cherrygrove City - 128, // Violet City - 129, // Azalea Town - 130, // Cianwood City - 131, // Goldenrod City - 132, // Olivine City - 133, // Ecruteak City - 134, // Mahogany Town - 136, // Blackthorn City - 138, // Pallet Town - 139, // Viridian City - 140, // Pewter City - 141, // Cerulean City - 142, // Lavender Town - 143, // Vermilion City - 144, // Celadon City - 145, // Fuchsia City - 146, // Cinnabar Island - 147, // Indigo Plateau - 148, // Saffron City - 227, // Safari Zone Gate - }; - internal static readonly int[] HGSS_SurfingHeadbutt_Locations = - { // Locations with headbutt trees adjacent to water tiles - 126, // New Bark Town - 127, // Cherrygrove City - 128, // Violet City - 133, // Ecruteak City - 135, // Lake of Rage - 138, // Pallet Town - 139, // Viridian City - 160, // Route 12 - 169, // Route 21 - 170, // Route 22 - 174, // Route 26 - 175, // Route 27 - 176, // Route 28 - 178, // Route 30 - 179, // Route 31 - 180, // Route 32 - 182, // Route 34 - 183, // Route 35 - 190, // Route 42 - 191, // Route 43 - 192, // Route 44 - 214, // Ilex Forest - }; - internal static readonly int[] HGSS_GrassHeadbutt_Locations = - { // Locations with headbutt trees adjacent to tall grass tiles - 137, // Mt. Silver - 149, // Route 1 - 150, // Route 2 - 151, // Route 3 - 152, // Route 4 - 153, // Route 5 - 154, // Route 6 - 155, // Route 7 - 159, // Route 11 - 161, // Route 13 - 163, // Route 15 - 164, // Route 16 - 169, // Route 21 - 170, // Route 22 - 174, // Route 26 - 175, // Route 27 - 176, // Route 28 - 177, // Route 29 - 178, // Route 30 - 179, // Route 31 - 180, // Route 32 - 181, // Route 33 - 182, // Route 34 - 183, // Route 35 - 184, // Route 36 - 185, // Route 37 - 186, // Route 38 - 187, // Route 39 - 191, // Route 43 - 192, // Route 44 - 194, // Route 46 - 195, // Route 47 - 196, // Route 48 - 219, // Mt. Silver Cave - 224, // Viridian Forest - }; - internal static readonly int[] HGSS_MtSilverCaveExteriorEncounters = - { - 2, 3 - }; - internal static readonly int[] HGSS_MixInteriorExteriorLocations = - { - 209, // Ruins of Alph - 219, // Mt. Silver Cave - }; - #endregion - #region Pokéwalker Encounter - // all pkm are in Poke Ball and have a met location of "PokeWalker" - internal static readonly EncounterStatic[] Encounter_PokeWalker = - { - // 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 - new EncounterStatic{ Species = 084, Gender = 1, Level = 08, }, // Doduo - new EncounterStatic{ Species = 115, Gender = 1, Level = 08, }, // Kangaskhan - new EncounterStatic{ Species = 029, Gender = 1, Level = 05, }, // Nidoran1 - new EncounterStatic{ Species = 032, Gender = 0, Level = 05, }, // Nidoran0 - new EncounterStatic{ Species = 016, Gender = 0, Level = 05, }, // Pidgey - new EncounterStatic{ Species = 161, Gender = 1, Level = 05, }, // Sentret - new EncounterStatic{ Species = 202, Gender = 1, Level = 15, }, // Wobbuffet - new EncounterStatic{ Species = 069, Gender = 1, Level = 08, }, // Bellsprout - new EncounterStatic{ Species = 046, Gender = 1, Level = 06, }, // Paras - new EncounterStatic{ Species = 048, Gender = 0, Level = 06, }, // Venonat - new EncounterStatic{ Species = 021, Gender = 0, Level = 05, }, // Spearow - new EncounterStatic{ Species = 043, Gender = 1, Level = 05, }, // Oddish - new EncounterStatic{ Species = 095, Gender = 0, Level = 09, }, // Onix - new EncounterStatic{ Species = 240, Gender = 0, Level = 09, Moves = new[]{241},}, // Magby: Sunny Day - new EncounterStatic{ Species = 066, Gender = 1, Level = 07, }, // Machop - new EncounterStatic{ Species = 077, Gender = 1, Level = 07, }, // Ponyta - new EncounterStatic{ Species = 074, Gender = 1, Level = 08, Moves = new[]{189},}, // Geodude: Mud-Slap - new EncounterStatic{ Species = 163, Gender = 1, Level = 06, }, // Hoothoot - new EncounterStatic{ Species = 054, Gender = 1, Level = 10, }, // Psyduck - new EncounterStatic{ Species = 120, Gender = 2, Level = 10, }, // Staryu - new EncounterStatic{ Species = 060, Gender = 0, Level = 08, }, // Poliwag - new EncounterStatic{ Species = 079, Gender = 0, Level = 08, }, // Slowpoke - new EncounterStatic{ Species = 191, Gender = 1, Level = 06, }, // Sunkern - new EncounterStatic{ Species = 194, Gender = 0, Level = 06, }, // Wooper - new EncounterStatic{ Species = 081, Gender = 2, Level = 11, }, // Magnemite - new EncounterStatic{ Species = 239, Gender = 0, Level = 11, Moves = new[]{009},}, // Elekid: Thunder Punch - new EncounterStatic{ Species = 081, Gender = 2, Level = 08, }, // Magnemite - new EncounterStatic{ Species = 198, Gender = 1, Level = 11, }, // Murkrow - new EncounterStatic{ Species = 019, Gender = 1, Level = 07, }, // Rattata - new EncounterStatic{ Species = 163, Gender = 1, Level = 07, }, // Hoothoot - new EncounterStatic{ Species = 092, Gender = 1, Level = 15, Moves = new[]{194},}, // Gastly: Destiny Bond - new EncounterStatic{ Species = 238, Gender = 1, Level = 12, Moves = new[]{419},}, // Smoochum: Avalanche - new EncounterStatic{ Species = 092, Gender = 1, Level = 10, }, // Gastly - new EncounterStatic{ Species = 095, Gender = 0, Level = 10, }, // Onix - new EncounterStatic{ Species = 041, Gender = 0, Level = 08, }, // Zubat - new EncounterStatic{ Species = 066, Gender = 0, Level = 08, }, // Machop - new EncounterStatic{ Species = 060, Gender = 1, Level = 15, Moves = new[]{187}, }, // Poliwag: Belly Drum - new EncounterStatic{ Species = 147, Gender = 1, Level = 10, }, // Dratini - new EncounterStatic{ Species = 090, Gender = 1, Level = 12, }, // Shellder - new EncounterStatic{ Species = 098, Gender = 0, Level = 12, Moves = new[]{152}, }, // Krabby: Crabhammer - new EncounterStatic{ Species = 072, Gender = 1, Level = 09, }, // Tentacool - new EncounterStatic{ Species = 118, Gender = 1, Level = 09, }, // Goldeen - new EncounterStatic{ Species = 063, Gender = 1, Level = 15, }, // Abra - new EncounterStatic{ Species = 100, Gender = 2, Level = 15, }, // Voltorb - new EncounterStatic{ Species = 088, Gender = 0, Level = 13, }, // Grimer - new EncounterStatic{ Species = 109, Gender = 1, Level = 13, Moves = new[]{120}, }, // Koffing: Self-Destruct - new EncounterStatic{ Species = 019, Gender = 1, Level = 16, }, // Rattata - new EncounterStatic{ Species = 162, Gender = 0, Level = 15, }, // Furret - // Hoenn Courses - new EncounterStatic{ Species = 264, Gender = 1, Level = 30, }, // Linoone - new EncounterStatic{ Species = 300, Gender = 1, Level = 30, }, // Skitty - new EncounterStatic{ Species = 313, Gender = 0, Level = 25, }, // Volbeat - new EncounterStatic{ Species = 314, Gender = 1, Level = 25, }, // Illumise - new EncounterStatic{ Species = 263, Gender = 1, Level = 17, }, // Zigzagoon - new EncounterStatic{ Species = 265, Gender = 1, Level = 15, }, // Wurmple - new EncounterStatic{ Species = 298, Gender = 1, Level = 20, }, // Azurill - new EncounterStatic{ Species = 320, Gender = 1, Level = 31, }, // Wailmer - new EncounterStatic{ Species = 116, Gender = 1, Level = 20, }, // Horsea - new EncounterStatic{ Species = 318, Gender = 1, Level = 26, }, // Carvanha - new EncounterStatic{ Species = 118, Gender = 1, Level = 22, Moves = new[]{401}, }, // Goldeen: Aqua Tail - new EncounterStatic{ Species = 129, Gender = 1, Level = 15, }, // Magikarp - new EncounterStatic{ Species = 218, Gender = 1, Level = 31, }, // Slugma - new EncounterStatic{ Species = 307, Gender = 0, Level = 32, }, // Meditite - new EncounterStatic{ Species = 111, Gender = 0, Level = 25, }, // Rhyhorn - new EncounterStatic{ Species = 228, Gender = 0, Level = 27, }, // Houndour - new EncounterStatic{ Species = 074, Gender = 0, Level = 29, }, // Geodude - new EncounterStatic{ Species = 077, Gender = 1, Level = 19, }, // Ponyta - new EncounterStatic{ Species = 351, Gender = 1, Level = 30, }, // Castform - new EncounterStatic{ Species = 352, Gender = 0, Level = 30, }, // Kecleon - new EncounterStatic{ Species = 203, Gender = 1, Level = 28, }, // Girafarig - new EncounterStatic{ Species = 234, Gender = 1, Level = 28, }, // Stantler - new EncounterStatic{ Species = 044, Gender = 1, Level = 14, }, // Gloom - new EncounterStatic{ Species = 070, Gender = 0, Level = 13, }, // Weepinbell - new EncounterStatic{ Species = 105, Gender = 1, Level = 30, Moves = new[]{037}, }, // Marowak: Tharsh - new EncounterStatic{ Species = 128, Gender = 0, Level = 30, }, // Tauros - new EncounterStatic{ Species = 042, Gender = 0, Level = 33, }, // Golbat - new EncounterStatic{ Species = 177, Gender = 1, Level = 24, }, // Natu - new EncounterStatic{ Species = 066, Gender = 0, Level = 13, Moves = new[]{418}, }, // Machop: Bullet Punch - new EncounterStatic{ Species = 092, Gender = 1, Level = 15, }, // Gastly - // Sinnoh Courses - new EncounterStatic{ Species = 415, Gender = 0, Level = 30, }, // Combee - new EncounterStatic{ Species = 439, Gender = 0, Level = 29, }, // Mime Jr. - new EncounterStatic{ Species = 403, Gender = 1, Level = 33, }, // Shinx - new EncounterStatic{ Species = 406, Gender = 0, Level = 30, }, // Budew - new EncounterStatic{ Species = 399, Gender = 1, Level = 13, }, // Bidoof - new EncounterStatic{ Species = 401, Gender = 0, Level = 15, }, // Kricketot - new EncounterStatic{ Species = 361, Gender = 1, Level = 28, }, // Snorunt - new EncounterStatic{ Species = 459, Gender = 0, Level = 31, Moves = new[]{452}, }, // Snover: Wood Hammer - new EncounterStatic{ Species = 215, Gender = 0, Level = 28, Moves = new[]{306}, }, // Sneasel: Crash Claw - new EncounterStatic{ Species = 436, Gender = 2, Level = 20, }, // Bronzor - new EncounterStatic{ Species = 179, Gender = 1, Level = 15, }, // Mareep - new EncounterStatic{ Species = 220, Gender = 1, Level = 16, }, // Swinub - new EncounterStatic{ Species = 357, Gender = 1, Level = 35, }, // Tropius - new EncounterStatic{ Species = 438, Gender = 0, Level = 30, }, // Bonsly - new EncounterStatic{ Species = 114, Gender = 1, Level = 30, }, // Tangela - new EncounterStatic{ Species = 400, Gender = 1, Level = 30, }, // Bibarel - new EncounterStatic{ Species = 102, Gender = 1, Level = 17, }, // Exeggcute - new EncounterStatic{ Species = 179, Gender = 0, Level = 19, }, // Mareep - new EncounterStatic{ Species = 200, Gender = 1, Level = 32, Moves = new[]{194},}, // Misdreavus: Destiny Bond - new EncounterStatic{ Species = 433, Gender = 0, Level = 22, Moves = new[]{105},}, // Chingling: Recover - new EncounterStatic{ Species = 093, Gender = 0, Level = 25, }, // Haunter - new EncounterStatic{ Species = 418, Gender = 0, Level = 28, Moves = new[]{226},}, // Buizel: Baton Pass - new EncounterStatic{ Species = 170, Gender = 1, Level = 17, }, // Chinchou - new EncounterStatic{ Species = 223, Gender = 1, Level = 19, }, // Remoraid - new EncounterStatic{ Species = 422, Gender = 1, Level = 30, }, // Shellos - new EncounterStatic{ Species = 456, Gender = 1, Level = 26, }, // Finneon - new EncounterStatic{ Species = 086, Gender = 1, Level = 27, }, // Seel - new EncounterStatic{ Species = 129, Gender = 1, Level = 30, }, // Magikarp - new EncounterStatic{ Species = 054, Gender = 1, Level = 22, }, // Psyduck - new EncounterStatic{ Species = 090, Gender = 0, Level = 20, }, // Shellder - new EncounterStatic{ Species = 025, Gender = 1, Level = 30, }, // Pikachu - new EncounterStatic{ Species = 417, Gender = 1, Level = 33, }, // Pachirisu - new EncounterStatic{ Species = 035, Gender = 1, Level = 31, }, // Clefairy - new EncounterStatic{ Species = 039, Gender = 1, Level = 30, }, // Jigglypuff - new EncounterStatic{ Species = 183, Gender = 1, Level = 25, }, // Marill - new EncounterStatic{ Species = 187, Gender = 1, Level = 25, }, // Hoppip - new EncounterStatic{ Species = 442, Gender = 0, Level = 31, }, // Spiritomb - new EncounterStatic{ Species = 446, Gender = 0, Level = 33, }, // Munchlax - new EncounterStatic{ Species = 349, Gender = 0, Level = 30, }, // Feebas - new EncounterStatic{ Species = 433, Gender = 1, Level = 26, }, // Chingling - new EncounterStatic{ Species = 042, Gender = 0, Level = 33, }, // Golbat - new EncounterStatic{ Species = 164, Gender = 1, Level = 30, }, // Noctowl - // Special Courses - new EncounterStatic{ Species = 120, Gender = 2, Level = 18, Moves = new[]{113}, }, // Staryu: Light Screen - new EncounterStatic{ Species = 224, Gender = 1, Level = 19, Moves = new[]{324}, }, // Octillery: Signal Beam - new EncounterStatic{ Species = 116, Gender = 0, Level = 15, }, // Horsea - new EncounterStatic{ Species = 222, Gender = 1, Level = 16, }, // Corsola - new EncounterStatic{ Species = 170, Gender = 1, Level = 12, }, // Chinchou - new EncounterStatic{ Species = 223, Gender = 0, Level = 14, }, // Remoraid - new EncounterStatic{ Species = 035, Gender = 0, Level = 08, Moves = new[]{236}, }, // Clefairy: Moonlight - new EncounterStatic{ Species = 039, Gender = 0, Level = 10, }, // Jigglypuff - new EncounterStatic{ Species = 041, Gender = 0, Level = 09, }, // Zubat - new EncounterStatic{ Species = 163, Gender = 1, Level = 06, }, // Hoothoot - new EncounterStatic{ Species = 074, Gender = 0, Level = 05, }, // Geodude - new EncounterStatic{ Species = 095, Gender = 1, Level = 05, Moves = new[]{088}, }, // Onix: Rock Throw - new EncounterStatic{ Species = 025, Gender = 0, Level = 15, Moves = new[]{019}, }, // Pikachu: Fly - new EncounterStatic{ Species = 025, Gender = 1, Level = 14, Moves = new[]{057}, }, // Pikachu: Surf - new EncounterStatic{ Species = 025, Gender = 1, Level = 12, Moves = new[]{344}, }, // Pikachu: Volt Tackle - new EncounterStatic{ Species = 025, Gender = 0, Level = 13, Moves = new[]{175}, }, // Pikachu: Flail - new EncounterStatic{ Species = 025, Gender = 0, Level = 10, }, // Pikachu - new EncounterStatic{ Species = 025, Gender = 1, Level = 10, }, // Pikachu - new EncounterStatic{ Species = 302, Gender = 1, Level = 15, }, // Sableye - new EncounterStatic{ Species = 441, Gender = 0, Level = 15, }, // Chatot - new EncounterStatic{ Species = 025, Gender = 1, Level = 10, }, // Pikachu - new EncounterStatic{ Species = 453, Gender = 0, Level = 10, }, // Croagunk - new EncounterStatic{ Species = 417, Gender = 0, Level = 05, }, // Pachirisu - new EncounterStatic{ Species = 427, Gender = 1, Level = 05, }, // Buneary - new EncounterStatic{ Species = 133, Gender = 0, Level = 10, }, // Eevee - new EncounterStatic{ Species = 255, Gender = 0, Level = 10, }, // Torchic - new EncounterStatic{ Species = 061, Gender = 1, Level = 15, Moves = new[]{003}, }, // Poliwhirl: Double Slap - new EncounterStatic{ Species = 279, Gender = 0, Level = 15, }, // Pelipper - new EncounterStatic{ Species = 025, Gender = 1, Level = 08, }, // Pikachu - new EncounterStatic{ Species = 052, Gender = 0, Level = 10, }, // Meowth - new EncounterStatic{ Species = 374, Gender = 2, Level = 05, Moves = new[]{428,334,442}, }, // Beldum: Zen Headbutt, Iron Defense & Iron Head. - new EncounterStatic{ Species = 446, Gender = 0, Level = 05, Moves = new[]{120}, }, // Munchlax: Self-Destruct - new EncounterStatic{ Species = 116, Gender = 0, Level = 05, Moves = new[]{330}, }, // Horsea: Muddy Water - new EncounterStatic{ Species = 355, Gender = 0, Level = 05, Moves = new[]{286}, }, // Duskull: Imprison - new EncounterStatic{ Species = 129, Gender = 0, Level = 05, Moves = new[]{340}, }, // Magikarp: Bounce - new EncounterStatic{ Species = 436, Gender = 2, Level = 05, Moves = new[]{433}, }, // Bronzor: Trick Room - new EncounterStatic{ Species = 239, Gender = 0, Level = 05, }, // Elekid - new EncounterStatic{ Species = 240, Gender = 0, Level = 05, }, // Magby - new EncounterStatic{ Species = 238, Gender = 1, Level = 05, }, // Smoochum - new EncounterStatic{ Species = 440, Gender = 1, Level = 05, }, // Happiny - new EncounterStatic{ Species = 173, Gender = 1, Level = 05, }, // Cleffa - new EncounterStatic{ Species = 174, Gender = 0, Level = 05, }, // Igglybuff - }; - #endregion - #region Static Encounter/Gift Tables - internal static readonly int[] Roaming_MetLocation_DPPt_Grass = - { - // Routes 201-218, 221-222 can be encountered in grass - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, - 47, // Valley Windworks - 49, // Fuego Ironworks - }; - internal static readonly int[] Roaming_MetLocation_DPPt_Surf = - { - // Routes 203-205, 208-210, 212-214, 218-222 can be encountered in water - 18, 19, 20, 23, 24, 25, 27, 28, 29, 33, - 34, 35, 36, 37, - 47, // Valley Windworks - 49, // Fuego Ironworks - }; - internal static readonly EncounterStaticTyped[] Encounter_DPPt_Roam_Grass = - { - new EncounterStaticTyped { Species = 481, Level = 50, Roaming = true, TypeEncounter = EncounterType.TallGrass }, // Mesprit - new EncounterStaticTyped { Species = 488, Level = 50, Roaming = true, TypeEncounter = EncounterType.TallGrass }, // Cresselia - new EncounterStaticTyped { Species = 144, Level = 60, Roaming = true, TypeEncounter = EncounterType.TallGrass, Version = GameVersion.Pt }, // Articuno - new EncounterStaticTyped { Species = 145, Level = 60, Roaming = true, TypeEncounter = EncounterType.TallGrass, Version = GameVersion.Pt }, // Zapdos - new EncounterStaticTyped { Species = 146, Level = 60, Roaming = true, TypeEncounter = EncounterType.TallGrass, Version = GameVersion.Pt }, // Moltres - }; - internal static readonly EncounterStaticTyped[] Encounter_DPPt_Roam_Surf = - { - new EncounterStaticTyped { Species = 481, Level = 50, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing }, // Mesprit - new EncounterStaticTyped { Species = 488, Level = 50, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing }, // Cresselia - new EncounterStaticTyped { Species = 144, Level = 60, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, Version = GameVersion.Pt }, // Articuno - new EncounterStaticTyped { Species = 145, Level = 60, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, Version = GameVersion.Pt }, // Zapdos - new EncounterStaticTyped { Species = 146, Level = 60, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, Version = GameVersion.Pt }, // Moltres - }; - internal static readonly EncounterStatic[] Encounter_DPPt_Regular = - { - //Starters - new EncounterStaticTyped { Gift = true, Species = 387, Level = 5, Location = 076, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Turtwig @ Lake Verity - new EncounterStaticTyped { Gift = true, Species = 390, Level = 5, Location = 076, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Chimchar - new EncounterStaticTyped { Gift = true, Species = 393, Level = 5, Location = 076, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Piplup - new EncounterStaticTyped { Gift = true, Species = 387, Level = 5, Location = 016, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Turtwig @ Route 201 - new EncounterStaticTyped { Gift = true, Species = 390, Level = 5, Location = 016, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Chimchar - new EncounterStaticTyped { Gift = true, Species = 393, Level = 5, Location = 016, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Piplup - //Fossil @ Mining Museum - new EncounterStaticTyped { Gift = true, Species = 138, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Omanyte - new EncounterStaticTyped { Gift = true, Species = 140, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Kabuto - new EncounterStaticTyped { Gift = true, Species = 142, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Aerodactyl - new EncounterStaticTyped { Gift = true, Species = 345, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Lileep - new EncounterStaticTyped { Gift = true, Species = 347, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP}, // Anorith - new EncounterStaticTyped { Gift = true, Species = 408, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Cranidos - new EncounterStaticTyped { Gift = true, Species = 410, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, Version = GameVersion.DP }, // Shieldon - new EncounterStaticTyped { Gift = true, Species = 138, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Omanyte - new EncounterStaticTyped { Gift = true, Species = 140, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Kabuto - new EncounterStaticTyped { Gift = true, Species = 142, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Aerodactyl - new EncounterStaticTyped { Gift = true, Species = 345, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Lileep - new EncounterStaticTyped { Gift = true, Species = 347, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt}, // Anorith - new EncounterStaticTyped { Gift = true, Species = 408, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Cranidos - new EncounterStaticTyped { Gift = true, Species = 410, Level = 20, Location = 094, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.Pt }, // Shieldon - //Gift - new EncounterStaticTyped { Gift = true, Species = 133, Level = 05, Location = 010, Version = GameVersion.DP, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP, }, //Eevee @ Hearthome City - new EncounterStaticTyped { Gift = true, Species = 133, Level = 20, Location = 010, Version = GameVersion.Pt, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, //Eevee @ Hearthome City - new EncounterStaticTyped { Gift = true, Species = 137, Level = 25, Location = 012, Version = GameVersion.Pt, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, //Porygon @ Veilstone City - new EncounterStatic { Gift = true, Species = 175, Level = 01, EggLocation = 2011, Version = GameVersion.Pt,}, //Togepi Egg from Cynthia - new EncounterStatic { Gift = true, Species = 440, Level = 01, EggLocation = 2009, Version = GameVersion.DP,}, //Happiny Egg from Traveling Man - new EncounterStatic { Gift = true, Species = 447, Level = 01, EggLocation = 2010, }, //Riolu Egg from Riley - //Stationary - new EncounterStatic { Species = 425, Level = 22, Location = 47, Version = GameVersion.DP },// Drifloon @ Valley Windworks - new EncounterStatic { Species = 425, Level = 15, Location = 47, Version = GameVersion.Pt },// Drifloon @ Valley Windworks - new EncounterStaticTyped { Species = 479, Level = 15, Location = 70, Version = GameVersion.DP, TypeEncounter = EncounterType.Building_EnigmaStone, },// Rotom @ Old Chateau - new EncounterStaticTyped { Species = 479, Level = 20, Location = 70, Version = GameVersion.Pt, TypeEncounter = EncounterType.Building_EnigmaStone, },// Rotom @ Old Chateau - new EncounterStatic { Species = 442, Level = 25, Location = 24 }, // Spiritomb @ Route 209 - //Stationary Lengerdary - new EncounterStaticTyped { Species = 377, Level = 30, Location = 125, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Regirock @ Rock Peak Ruins - new EncounterStaticTyped { Species = 378, Level = 30, Location = 124, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Regice @ Iceberg Ruins - new EncounterStaticTyped { Species = 379, Level = 30, Location = 123, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Registeel @ Iron Ruins - new EncounterStaticTyped { Species = 480, Level = 50, Location = 089, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Uxie @ Acuity Cavern - new EncounterStaticTyped { Species = 482, Level = 50, Location = 088, TypeEncounter = EncounterType.Cave_HallOfOrigin, }, //Azelf @ Valor Cavern - new EncounterStaticTyped { Species = 483, Level = 47, Location = 051, Version = GameVersion.D, TypeEncounter = EncounterType.DialgaPalkia }, //Dialga @ Spear Pillar - new EncounterStaticTyped { Species = 484, Level = 47, Location = 051, Version = GameVersion.P, TypeEncounter = EncounterType.DialgaPalkia }, //Palkia @ Spear Pillar - new EncounterStaticTyped { Species = 483, Level = 70, Location = 051, Version = GameVersion.Pt, TypeEncounter = EncounterType.DialgaPalkia }, //Dialga @ Spear Pillar - new EncounterStaticTyped { Species = 484, Level = 70, Location = 051, Version = GameVersion.Pt, TypeEncounter = EncounterType.DialgaPalkia }, //Palkia @ Spear Pillar - new EncounterStaticTyped { Species = 485, Level = 70, Location = 084, Version = GameVersion.DP, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Heatran @ Stark Mountain - new EncounterStaticTyped { Species = 485, Level = 50, Location = 084, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Heatran @ Stark Mountain - new EncounterStaticTyped { Species = 486, Level = 70, Location = 064, Version = GameVersion.DP, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Regigigas @ Snowpoint Temple - new EncounterStaticTyped { Species = 486, Level = 01, Location = 064, Version = GameVersion.Pt, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Regigigas @ Snowpoint Temple - new EncounterStaticTyped { Species = 487, Level = 70, Location = 062, Version = GameVersion.DP, Form = 0, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Giratina @ Turnback Cave - new EncounterStaticTyped { Species = 487, Level = 47, Location = 117, Version = GameVersion.Pt, Form = 1, TypeEncounter = EncounterType.DistortionWorld_Pt }, //Giratina @ Distortion World - new EncounterStaticTyped { Species = 487, Level = 47, Location = 062, Version = GameVersion.Pt, Form = 0, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Giratina @ Turnback Cave - //Event - new EncounterStaticTyped { Species = 491, Level = 40, Location = 079, Version = GameVersion.DP, TypeEncounter = EncounterType.TallGrass }, //Darkrai @ Newmoon Island (Unreleased in Diamond and Pearl) - new EncounterStaticTyped { Species = 491, Level = 50, Location = 079, Version = GameVersion.Pt, TypeEncounter = EncounterType.TallGrass }, //Darkrai @ Newmoon Island - new EncounterStatic { Species = 492, Form = 0, Level = 30, Location = 063, Fateful = true }, //Shaymin @ Flower Paradise (Unreleased in Diamond and Pearl) - new EncounterStaticTyped { Species = 493, Form = 0, Level = 80, Location = 086, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Arceus @ Hall of Origin (Unreleased) - }; - internal static readonly EncounterStatic[] Encounter_DPPt = Encounter_DPPt_Roam_Grass.SelectMany(e => e.Clone(Roaming_MetLocation_DPPt_Grass)).Concat( - Encounter_DPPt_Roam_Surf.SelectMany(e => e.Clone(Roaming_MetLocation_DPPt_Surf))).Concat( - Encounter_DPPt_Regular).ToArray(); - - // Grass 29-39, 42-46, 47, 48 - // Surf 30-32 34-35, 40-45, 47 - // Route 45 innacesible surf - internal static readonly int[] Roaming_MetLocation_HGSS_Johto_Grass = - { - // Routes 29-48 can be encountered in grass - // Won't go to routes 40,41,47,48 - 177,178,179,180,181,182,183,184,185,186, - 187, 190,191,192,193,194, - }; - internal static readonly int[] Roaming_MetLocation_HGSS_Johto_Surf = - { - // Routes 30-32,34-35,40-45 and 47 can be encountered in water - // Won't go to routes 40,41,47,48 - 178,179,180,182,183,190,191,192,193 - }; - internal static readonly EncounterStaticTyped[] Encounter_HGSS_JohtoRoam_Grass = - { - new EncounterStaticTyped { Species = 243, Level = 40, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, // Raikou - new EncounterStaticTyped { Species = 244, Level = 40, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, // Entei - }; - internal static readonly EncounterStaticTyped[] Encounter_HGSS_JohtoRoam_Surf = - { - new EncounterStaticTyped { Species = 243, Level = 40, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, // Raikou - new EncounterStaticTyped { Species = 244, Level = 40, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, // Entei - }; - internal static readonly int[] Roaming_MetLocation_HGSS_Kanto_Grass = - { - // Route 01-18,21,22,24,26 and 28 can be encountered in grass - // Won't go to route 23 25 27 - 149,150,151,152,153,154,155,156,157,158, - 159,160,161,162,163,164,165,166, - 169,170, 172, 174, 176, - }; - internal static readonly int[] Roaming_MetLocation_HGSS_Kanto_Surf = - { - // Route 4,6,9,10,12,13,19-22,24,26 and 28 can be encountered in water - // Won't go to route 23 25 27 - 152,154,157,158,160,161,167,168,169,170, - 172,174,176, - }; - internal static readonly EncounterStaticTyped[] Encounter_HGSS_KantoRoam_Grass = - { - new EncounterStaticTyped { Species = 380, Level = 35, Version = GameVersion.HG, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, //Latias - new EncounterStaticTyped { Species = 381, Level = 35, Version = GameVersion.SS, Roaming = true, TypeEncounter = EncounterType.TallGrass, }, //Latios - }; - internal static readonly EncounterStaticTyped[] Encounter_HGSS_KantoRoam_Surf = - { - new EncounterStaticTyped { Species = 380, Level = 35, Version = GameVersion.HG, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, //Latias - new EncounterStaticTyped { Species = 381, Level = 35, Version = GameVersion.SS, Roaming = true, TypeEncounter = EncounterType.Surfing_Fishing, }, //Latios - }; - internal static readonly EncounterStatic SpikyEaredPichu = new EncounterStaticTyped // 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 = false - }; - internal static readonly EncounterStatic[] Encounter_HGSS_Regular = - { - //Starters - new EncounterStaticTyped { Gift = true, Species = 001, Level = 05, Location = 138, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Bulbasaur @ Pallet Town - new EncounterStaticTyped { Gift = true, Species = 004, Level = 05, Location = 138, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Charmander - new EncounterStaticTyped { Gift = true, Species = 007, Level = 05, Location = 138, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Squirtle - new EncounterStaticTyped { Gift = true, Species = 152, Level = 05, Location = 126, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP }, // Chikorita @ New Bark Town - new EncounterStaticTyped { Gift = true, Species = 155, Level = 05, Location = 126, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP }, // Cyndaquil - new EncounterStaticTyped { Gift = true, Species = 158, Level = 05, Location = 126, TypeEncounter = EncounterType.Starter_Fossil_Gift_DP }, // Totodile - new EncounterStaticTyped { Gift = true, Species = 252, Level = 05, Location = 148, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Treecko @ Saffron City - new EncounterStaticTyped { Gift = true, Species = 255, Level = 05, Location = 148, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Torchic - new EncounterStaticTyped { Gift = true, Species = 258, Level = 05, Location = 148, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Mudkip - //Fossil @ Pewter City - new EncounterStaticTyped { Gift = true, Species = 138, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Omanyte - new EncounterStaticTyped { Gift = true, Species = 140, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Kabuto - new EncounterStaticTyped { Gift = true, Species = 142, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Aerodactyl - new EncounterStaticTyped { Gift = true, Species = 345, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Lileep - new EncounterStaticTyped { Gift = true, Species = 347, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Anorith - new EncounterStaticTyped { Gift = true, Species = 408, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Cranidos - new EncounterStaticTyped { Gift = true, Species = 410, Level = 20, Location = 140, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Shieldon - //Gift - new EncounterStaticTyped { Gift = true, Species = 133, Level = 05, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Eevee @ Goldenrod City - new EncounterStaticTyped { Gift = true, Species = 147, Level = 15, Location = 222, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Moves = new[] {245} }, // Dratini @ Dragon's Den (ExtremeSpeed) - new EncounterStaticTyped { Gift = true, Species = 236, Level = 10, Location = 216, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, }, // Tyrogue @ Mt. Mortar - new EncounterStatic { Gift = true, Species = 175, Level = 01, EggLocation = 2013, Moves = new[] {326} }, // Togepi Egg from Mr. Pokemon (Extrasensory as Egg move) - new EncounterStatic { Gift = true, Species = 179, Level = 01, EggLocation = 2014, }, // Mareep Egg from Primo - new EncounterStatic { Gift = true, Species = 194, Level = 01, EggLocation = 2014, }, // Wooper Egg from Primo - new EncounterStatic { Gift = true, Species = 218, Level = 01, EggLocation = 2014, }, // Slugma Egg from Primo - // Celadon City Game Corner - new EncounterStaticTyped { Gift = true, Species = 122, Level = 15, Location = 144, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Mr. Mime - new EncounterStaticTyped { Gift = true, Species = 133, Level = 15, Location = 144, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Eevee - new EncounterStaticTyped { Gift = true, Species = 137, Level = 15, Location = 144, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Porygon - // Goldenrod City Game Corner - new EncounterStaticTyped { Gift = true, Species = 063, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Abra - new EncounterStaticTyped { Gift = true, Species = 023, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.HG }, // Ekans - new EncounterStaticTyped { Gift = true, Species = 027, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Version = GameVersion.SS }, // Sandshrew - new EncounterStaticTyped { Gift = true, Species = 147, Level = 15, Location = 131, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, // Dratini - // Team Rocket HQ Trap Floor - new EncounterStaticTyped { Species = 100, Level = 23, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, // Voltorb - new EncounterStaticTyped { Species = 074, Level = 21, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, // Geodude - new EncounterStaticTyped { Species = 109, Level = 21, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, // Koffing - - //Stationary - new EncounterStaticTyped { Species = 130, Level = 30, Location = 135, TypeEncounter = EncounterType.Surfing_Fishing, Shiny = true }, //Gyarados @ Lake of Rage - new EncounterStaticTyped { Species = 131, Level = 20, Location = 210, TypeEncounter = EncounterType.Surfing_Fishing, }, //Lapras @ Union Cave Friday Only - new EncounterStaticTyped { Species = 101, Level = 23, Location = 213, TypeEncounter = EncounterType.Building_EnigmaStone, }, //Electrode @ Team Rocket HQ - new EncounterStatic { Species = 143, Level = 50, Location = 159, }, //Snorlax @ Route 11 - new EncounterStatic { Species = 143, Level = 50, Location = 160, }, //Snorlax @ Route 12 - new EncounterStatic { Species = 185, Level = 20, Location = 184, }, //Sudowoodo @ Route 36, Encounter does not have type - SpikyEaredPichu, - //Stationary Lengerdary - new EncounterStaticTyped { Species = 144, Level = 50, Location = 203, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Articuno @ Seafoam Islands - new EncounterStatic { Species = 145, Level = 50, Location = 158, }, //Zapdos @ Route 10 - new EncounterStaticTyped { Species = 146, Level = 50, Location = 219, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Moltres @ Mt. Silver Cave - new EncounterStaticTyped { Species = 150, Level = 70, Location = 199, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Mewtwo @ Cerulean Cave - new EncounterStatic { Species = 245, Level = 40, Location = 173, }, //Suicune @ Route 25 - new EncounterStaticTyped { Species = 245, Level = 40, Location = 206, TypeEncounter = EncounterType.Building_EnigmaStone }, //Suicune @ Burned Tower - new EncounterStaticTyped { Species = 249, Level = 45, Location = 218, Version = GameVersion.SS, TypeEncounter = EncounterType.Surfing_Fishing }, //Lugia @ Whirl Islands - new EncounterStaticTyped { Species = 249, Level = 70, Location = 218, Version = GameVersion.HG, TypeEncounter = EncounterType.Surfing_Fishing }, //Lugia @ Whirl Islands - new EncounterStaticTyped { Species = 250, Level = 45, Location = 205, Version = GameVersion.HG, TypeEncounter = EncounterType.Building_EnigmaStone }, //Ho-Oh @ Bell Tower - new EncounterStaticTyped { Species = 250, Level = 70, Location = 205, Version = GameVersion.SS, TypeEncounter = EncounterType.Building_EnigmaStone }, //Ho-Oh @ Bell Tower - new EncounterStaticTyped { Species = 380, Level = 40, Location = 140, Version = GameVersion.SS, TypeEncounter = EncounterType.Building_EnigmaStone }, //Latias @ Pewter City - new EncounterStaticTyped { Species = 381, Level = 40, Location = 140, Version = GameVersion.HG, TypeEncounter = EncounterType.Building_EnigmaStone }, //Latios @ Pewter City - new EncounterStaticTyped { Species = 382, Level = 50, Location = 232, Version = GameVersion.HG, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Kyogre @ Embedded Tower - new EncounterStaticTyped { Species = 383, Level = 50, Location = 232, Version = GameVersion.SS, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Groudon @ Embedded Tower - new EncounterStaticTyped { Species = 384, Level = 50, Location = 232, TypeEncounter = EncounterType.Cave_HallOfOrigin }, //Rayquaza @ Embedded Tower - new EncounterStaticTyped { Species = 483, Level = 01, Location = 231, Gift = true, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, //Dialga @ Sinjoh Ruins - new EncounterStaticTyped { Species = 484, Level = 01, Location = 231, Gift = true, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio }, //Palkia @ Sinjoh Ruins - new EncounterStaticTyped { Species = 487, Level = 01, Location = 231, Gift = true, TypeEncounter = EncounterType.Starter_Fossil_Gift_Pt_DPTrio, Form = 1 }, //Giratina @ Sinjoh Ruins - }; - internal static readonly EncounterStatic[] Encounter_HGSS = Encounter_HGSS_KantoRoam_Grass.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Kanto_Grass)).Concat( - Encounter_HGSS_KantoRoam_Surf.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Kanto_Surf))).Concat( - Encounter_HGSS_JohtoRoam_Grass.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Johto_Grass))).Concat( - Encounter_HGSS_JohtoRoam_Surf.SelectMany(e => e.Clone(Roaming_MetLocation_HGSS_Johto_Surf))).Concat( - Encounter_HGSS_Regular).ToArray(); - #endregion - #region Trade Tables - internal static readonly EncounterTrade[] TradeGift_DPPt = - { - new EncounterTrade { Species = 063, Ability = 1, TID = 25643, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {15,15,15,20,25,25}, Nature = Nature.Quiet,}, // Abra - new EncounterTrade { Species = 441, Ability = 2, TID = 44142, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {15,20,15,25,25,15}, Nature = Nature.Lonely, Contest = new[] {20,20,20,20,20,0} }, // Chatot - new EncounterTrade { Species = 093, Ability = 1, TID = 19248, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {20,25,15,25,15,15}, Nature = Nature.Hasty,}, // Haunter - new EncounterTrade { Species = 129, Ability = 1, TID = 53277, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {15,25,15,20,25,15}, Nature = Nature.Mild}, // Magikarp - }; - internal static readonly EncounterTrade[] TradeGift_HGSS = - { - new EncounterTrade { Species = 095, Ability = 2, TID = 48926, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {25,20,25,15,15,15}, Nature = Nature.Hasty,}, // Onix - new EncounterTrade { Species = 066, Ability = 1, TID = 37460, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {15,25,20,20,15,15}, Nature = Nature.Lonely,}, // Machop - new EncounterTrade { Species = 100, Ability = 2, TID = 29189, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {15,20,15,25,25,15}, Nature = Nature.Hardy,}, // Voltorb - new EncounterTrade { Species = 085, Ability = 1, TID = 00283, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,15,15,15}, Nature = Nature.Impish,}, // Dodrio - new EncounterTrade { Species = 082, Ability = 1, TID = 50082, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {15,20,15,20,20,20}, Nature = Nature.Impish,}, // Magneton - new EncounterTrade { Species = 178, Ability = 1, TID = 15616, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {15,20,15,20,20,20}, Nature = Nature.Modest,}, // Xatu - new EncounterTrade { Species = 025, Ability = 1, TID = 33038, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {20,25,18,31,25,13}, Nature = Nature.Jolly,}, // Pikachu - new EncounterTrade { Species = 374, Ability = 1, TID = 23478, SID = 00000, OTGender = 0, Gender = 2, IVs = new[] {28,29,24,23,24,25}, Nature = Nature.Brave,}, // Beldum - new EncounterTrade { Species = 111, Ability = 1, TID = 06845, SID = 00000, OTGender = 0, Gender = 1, IVs = new[] {22,31,13,00,22,09}, Nature = Nature.Relaxed, Moves= new[]{422} }, // Rhyhorn - new EncounterTrade { Species = 208, Ability = 1, TID = 26491, SID = 00000, OTGender = 1, Gender = 0, IVs = new[] {08,30,28,06,18,20}, Nature = Nature.Brave,}, // Steelix - //Gift - new EncounterTrade { Species = 021, Ability = 1, TID = 01001, SID = 00000, OTGender = 0, Gender = 1, Nature = Nature.Hasty, Level = 20, Location = 183, Moves= new[]{043,031,228,332}},//Webster's Spearow - new EncounterTrade { Species = 213, Ability = 2, TID = 04336, SID = 00001, OTGender = 0, Gender = 0, Nature = Nature.Relaxed, Level = 20, Location = 130, Moves= new[]{132,117,227,219}},//Kirk's Shuckle - }; - #endregion - // Encounter Slots that are replaced - internal static readonly int[] Slot4_Swarm = {0, 1}; - internal static readonly int[] Slot4_Time = {2, 3}; - internal static readonly int[] Slot4_Sound = {2, 3, 4, 5}; - internal static readonly int[] Slot4_Radar = {4, 5, 10, 11}; - internal static readonly int[] Slot4_Dual = {8, 9}; - #region Alt Slots - internal static readonly int[] SafariZoneLocation_4 = - { - 52, 202 - }; - - private static readonly EncounterArea[] SlotsDPPPtAlt = - { - new EncounterArea { - Location = 50, // Mount Coronet - Slots = new[] - { - new EncounterSlot { Species = 349, LevelMin = 10, LevelMax = 20, Type = SlotType.Old_Rod }, // Feebas - new EncounterSlot { Species = 349, LevelMin = 10, LevelMax = 20, Type = SlotType.Good_Rod }, // Feebas - new EncounterSlot { Species = 349, LevelMin = 10, LevelMax = 20, Type = SlotType.Super_Rod }, // Feebas - },}, - new EncounterArea { - Location = 53, // Solaceon Ruins - Slots = new int[25].Select((s, i) => new EncounterSlot { Species = 201, LevelMin = 14, LevelMax = 30, Type = SlotType.Grass, Form = i+1 }).ToArray() // B->?, Unown A is loaded from encounters raw file - }, - }; - private static readonly EncounterArea[] SlotsHGSSAlt = - { - new EncounterArea { - Location = 209, // Ruins of Alph - Slots = new int[25].Select((s, i) => new EncounterSlot { Species = 201, LevelMin = 5, LevelMax = 5, Type = SlotType.Grass, Form = i+1 }).ToArray() // B->?, Unown A is loaded from encounters raw file - }, - new EncounterArea - { - // Source http://bulbapedia.bulbagarden.net/wiki/Bug-Catching_Contest#Generation_IV - Location = 207, // National Park Catching Contest - Slots = new[] - { - // Bug Contest Pre-National Pokédex - new EncounterSlot { Species = 010, LevelMin = 07, LevelMax = 18, Type = SlotType.BugContest }, // Caterpie - new EncounterSlot { Species = 011, LevelMin = 09, LevelMax = 18, Type = SlotType.BugContest }, // Metapod - new EncounterSlot { Species = 012, LevelMin = 12, LevelMax = 15, Type = SlotType.BugContest }, // Butterfree - new EncounterSlot { Species = 013, LevelMin = 07, LevelMax = 18, Type = SlotType.BugContest }, // Weedle - new EncounterSlot { Species = 014, LevelMin = 09, LevelMax = 18, Type = SlotType.BugContest }, // Kakuna - new EncounterSlot { Species = 015, LevelMin = 12, LevelMax = 15, Type = SlotType.BugContest }, // Beedrill - new EncounterSlot { Species = 046, LevelMin = 10, LevelMax = 17, Type = SlotType.BugContest }, // Paras - new EncounterSlot { Species = 048, LevelMin = 10, LevelMax = 16, Type = SlotType.BugContest }, // Venonat - new EncounterSlot { Species = 123, LevelMin = 13, LevelMax = 14, Type = SlotType.BugContest }, // Scyther - new EncounterSlot { Species = 127, LevelMin = 13, LevelMax = 14, Type = SlotType.BugContest }, // Pinsir - // Bug Contest Tuesday Post-National Pokédex - new EncounterSlot { Species = 010, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Caterpie - new EncounterSlot { Species = 011, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Metapod - new EncounterSlot { Species = 012, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Butterfree - new EncounterSlot { Species = 013, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Weedle - new EncounterSlot { Species = 014, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Kakuna - new EncounterSlot { Species = 015, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Beedrill - new EncounterSlot { Species = 046, LevelMin = 27, LevelMax = 34, Type = SlotType.BugContest }, // Paras - new EncounterSlot { Species = 048, LevelMin = 25, LevelMax = 32, Type = SlotType.BugContest }, // Venonat - new EncounterSlot { Species = 123, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Scyther - new EncounterSlot { Species = 127, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Pinsir - // Bug Contest Thursday and Saturday Post-National Pokédex - new EncounterSlot { Species = 123, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Scyther - new EncounterSlot { Species = 127, LevelMin = 27, LevelMax = 28, Type = SlotType.BugContest }, // Pinsir - new EncounterSlot { Species = 265, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Wurmple - new EncounterSlot { Species = 401, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Kricketot - new EncounterSlot { Species = 402, LevelMin = 27, LevelMax = 30, Type = SlotType.BugContest }, // Kricketune - new EncounterSlot { Species = 415, LevelMin = 27, LevelMax = 34, Type = SlotType.BugContest }, // Combee - new EncounterSlot { Species = 290, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Nincada - // Bug Contest Thursday Post-National Pokédex - new EncounterSlot { Species = 266, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Silcoon - new EncounterSlot { Species = 269, LevelMin = 25, LevelMax = 32, Type = SlotType.BugContest }, // Dustox - new EncounterSlot { Species = 313, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Volbear - // Bug Contest Saturday Post-National Pokédex - new EncounterSlot { Species = 268, LevelMin = 24, LevelMax = 36, Type = SlotType.BugContest }, // Cascoon - new EncounterSlot { Species = 267, LevelMin = 25, LevelMax = 32, Type = SlotType.BugContest }, // Beautifly - new EncounterSlot { Species = 314, LevelMin = 26, LevelMax = 36, Type = SlotType.BugContest }, // Illumise - } - }, - new EncounterArea - { - // Source http://bulbapedia.bulbagarden.net/wiki/Johto_Safari_Zone#Pok.C3.A9mon - // Supplement http://www.psypokes.com/hgss/safari_areas.php - // Duplicate/overlapped slots are commented - Location = 202, // Johto Safari Zone - Slots = new[] - { - // Peak Zone - new EncounterSlot { Species = 022, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Fearow - new EncounterSlot { Species = 046, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Paras - new EncounterSlot { Species = 074, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Geodude - new EncounterSlot { Species = 075, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Graveler - new EncounterSlot { Species = 080, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Slowbro - // new EncounterSlot { Species = 081, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Magnemite - new EncounterSlot { Species = 082, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magneton - new EncounterSlot { Species = 126, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magmar - new EncounterSlot { Species = 126, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Magmar - new EncounterSlot { Species = 202, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wobbuffet - new EncounterSlot { Species = 202, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Wobbuffet - new EncounterSlot { Species = 264, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Linoone - new EncounterSlot { Species = 288, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Vigoroth - new EncounterSlot { Species = 305, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Lairon - new EncounterSlot { Species = 335, LevelMin = 43, LevelMax = 45, Type = SlotType.Grass_Safari }, // Zangoose - new EncounterSlot { Species = 363, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Spheal - new EncounterSlot { Species = 436, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Bronzor - // Desert Zone - new EncounterSlot { Species = 022, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Fearow - new EncounterSlot { Species = 022, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Fearow - new EncounterSlot { Species = 022, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Fearow - new EncounterSlot { Species = 027, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sandshrew - new EncounterSlot { Species = 028, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sandslash - new EncounterSlot { Species = 104, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Cubone - new EncounterSlot { Species = 105, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Marowak - new EncounterSlot { Species = 105, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Marowak - new EncounterSlot { Species = 270, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Lotad - new EncounterSlot { Species = 327, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Spinda - new EncounterSlot { Species = 328, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Trapinch - new EncounterSlot { Species = 329, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Vibrava - new EncounterSlot { Species = 331, LevelMin = 35, LevelMax = 35, Type = SlotType.Grass_Safari }, // Cacnea - new EncounterSlot { Species = 332, LevelMin = 48, LevelMax = 48, Type = SlotType.Grass_Safari }, // Cacturne - new EncounterSlot { Species = 449, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Hippopotas - new EncounterSlot { Species = 455, LevelMin = 48, LevelMax = 48, Type = SlotType.Grass_Safari }, // Carnivine - // Plains Zone - new EncounterSlot { Species = 019, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Rattata - new EncounterSlot { Species = 020, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Raticate - new EncounterSlot { Species = 063, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Abra - new EncounterSlot { Species = 077, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Ponyta - new EncounterSlot { Species = 203, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Girafarig - new EncounterSlot { Species = 203, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Girafarig - new EncounterSlot { Species = 229, LevelMin = 43, LevelMax = 44, Type = SlotType.Grass_Safari }, // Houndoom - new EncounterSlot { Species = 234, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Stantler - new EncounterSlot { Species = 234, LevelMin = 40, LevelMax = 41, Type = SlotType.Grass_Safari }, // Stantler - new EncounterSlot { Species = 235, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Smeargle - new EncounterSlot { Species = 235, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Smeargle - new EncounterSlot { Species = 263, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Zigzagoon - new EncounterSlot { Species = 270, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Lotad - new EncounterSlot { Species = 283, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Surskit - new EncounterSlot { Species = 310, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Manectric - // new EncounterSlot { Species = 335, LevelMin = 43, LevelMax = 45, Type = SlotType.Grass_Safari }, // Zangoose - new EncounterSlot { Species = 403, LevelMin = 43, LevelMax = 44, Type = SlotType.Grass_Safari }, // Shinx - // Meadow Zone - new EncounterSlot { Species = 020, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Raticate - new EncounterSlot { Species = 035, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Clefairy - new EncounterSlot { Species = 035, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Clefairy - new EncounterSlot { Species = 039, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Jigglypuff - new EncounterSlot { Species = 060, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Poliwag - new EncounterSlot { Species = 060, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Poliwag - // new EncounterSlot { Species = 060, LevelMin = 35, LevelMax = 36, Type = SlotType.Super_Rod_Safari }, // Poliwag - new EncounterSlot { Species = 061, LevelMin = 15, LevelMax = 16, Type = SlotType.Old_Rod_Safari }, // Poliwhirl - new EncounterSlot { Species = 061, LevelMin = 24, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Poliwhirl - new EncounterSlot { Species = 061, LevelMin = 27, LevelMax = 27, Type = SlotType.Good_Rod_Safari }, // Poliwhirl - new EncounterSlot { Species = 061, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Poliwhirl - new EncounterSlot { Species = 074, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Geodude - new EncounterSlot { Species = 113, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Chansey - new EncounterSlot { Species = 129, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Magikarp - new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp - new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Magikarp - new EncounterSlot { Species = 130, LevelMin = 28, LevelMax = 28, Type = SlotType.Good_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 130, LevelMin = 42, LevelMax = 42, Type = SlotType.Super_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 130, LevelMin = 45, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 183, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Marill - new EncounterSlot { Species = 183, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Marill - new EncounterSlot { Species = 187, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Hoppip - new EncounterSlot { Species = 188, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Skiploom - new EncounterSlot { Species = 188, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Skiploom - new EncounterSlot { Species = 188, LevelMin = 47, LevelMax = 47, Type = SlotType.Surf_Safari }, // Skiploom - new EncounterSlot { Species = 191, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sunkern - new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wooper - new EncounterSlot { Species = 194, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Wooper - new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Wooper - new EncounterSlot { Species = 273, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Seedot - new EncounterSlot { Species = 274, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Nuzleaf - new EncounterSlot { Species = 274, LevelMin = 47, LevelMax = 48, Type = SlotType.Grass_Safari }, // Nuzleaf - new EncounterSlot { Species = 284, LevelMin = 42, LevelMax = 42, Type = SlotType.Surf_Safari }, // Masquerain - new EncounterSlot { Species = 284, LevelMin = 46, LevelMax = 46, Type = SlotType.Surf_Safari }, // Masquerain - new EncounterSlot { Species = 299, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Nosepass - new EncounterSlot { Species = 447, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Riolu - // Forest Zone - new EncounterSlot { Species = 016, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Pidgey - new EncounterSlot { Species = 069, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Bellsprout - new EncounterSlot { Species = 092, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Gastly - new EncounterSlot { Species = 093, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Haunter - new EncounterSlot { Species = 108, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Lickitung - new EncounterSlot { Species = 122, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Mr. Mime - new EncounterSlot { Species = 122, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Mr. Mime - new EncounterSlot { Species = 125, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Electabuzz - new EncounterSlot { Species = 200, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Misdreavus - new EncounterSlot { Species = 200, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Misdreavus - new EncounterSlot { Species = 283, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Surskit - new EncounterSlot { Species = 353, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Shuppet - new EncounterSlot { Species = 374, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Beldum - new EncounterSlot { Species = 399, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Bidoof - new EncounterSlot { Species = 406, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Budew - new EncounterSlot { Species = 437, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Bronzong - // Swamp Zone - // new EncounterSlot { Species = 039, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Jigglypuff - new EncounterSlot { Species = 046, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Paras - new EncounterSlot { Species = 047, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Parasect - new EncounterSlot { Species = 070, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Weepinbell - new EncounterSlot { Species = 096, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Drowzee - new EncounterSlot { Species = 097, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Hypno - new EncounterSlot { Species = 097, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Hypno - new EncounterSlot { Species = 100, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Voltorb - new EncounterSlot { Species = 118, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Goldeen - new EncounterSlot { Species = 118, LevelMin = 17, LevelMax = 17, Type = SlotType.Old_Rod_Safari }, // Goldeen - new EncounterSlot { Species = 118, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Goldeen - // new EncounterSlot { Species = 118, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Goldeen - new EncounterSlot { Species = 119, LevelMin = 17, LevelMax = 17, Type = SlotType.Old_Rod_Safari }, // Seaking - new EncounterSlot { Species = 119, LevelMin = 24, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Seaking - new EncounterSlot { Species = 119, LevelMin = 27, LevelMax = 27, Type = SlotType.Good_Rod_Safari }, // Seaking - // new EncounterSlot { Species = 119, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Seaking - new EncounterSlot { Species = 119, LevelMin = 42, LevelMax = 42, Type = SlotType.Surf_Safari }, // Seaking - // new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp - // new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Magikarp - // new EncounterSlot { Species = 129, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Magikarp - new EncounterSlot { Species = 147, LevelMin = 36, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Dratini - new EncounterSlot { Species = 147, LevelMin = 29, LevelMax = 29, Type = SlotType.Good_Rod_Safari }, // Dratini - new EncounterSlot { Species = 148, LevelMin = 42, LevelMax = 42, Type = SlotType.Super_Rod_Safari }, // Dragonair - new EncounterSlot { Species = 148, LevelMin = 45, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Dragonair - new EncounterSlot { Species = 161, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sentret - new EncounterSlot { Species = 162, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Furret - new EncounterSlot { Species = 198, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Murkrow - new EncounterSlot { Species = 198, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Murkrow - new EncounterSlot { Species = 198, LevelMin = 47, LevelMax = 47, Type = SlotType.Surf_Safari }, // Murkrow - new EncounterSlot { Species = 355, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Duskull - new EncounterSlot { Species = 355, LevelMin = 48, LevelMax = 48, Type = SlotType.Surf_Safari }, // Duskull - new EncounterSlot { Species = 358, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Chimecho - new EncounterSlot { Species = 371, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Bagon - new EncounterSlot { Species = 417, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Pachirisu - new EncounterSlot { Species = 419, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Floatzel - // Marshland Zone - new EncounterSlot { Species = 023, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Ekans - new EncounterSlot { Species = 024, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Arbok - new EncounterSlot { Species = 043, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Oddish - new EncounterSlot { Species = 044, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Gloom - new EncounterSlot { Species = 044, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Gloom - new EncounterSlot { Species = 050, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Diglett - // new EncounterSlot { Species = 060, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Poliwag - new EncounterSlot { Species = 060, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Poliwag - new EncounterSlot { Species = 060, LevelMin = 16, LevelMax = 16, Type = SlotType.Old_Rod_Safari }, // Poliwag - new EncounterSlot { Species = 060, LevelMin = 18, LevelMax = 18, Type = SlotType.Old_Rod_Safari }, // Poliwag - new EncounterSlot { Species = 061, LevelMin = 22, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Poliwhirl - // new EncounterSlot { Species = 061, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Poliwhirl - new EncounterSlot { Species = 088, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Grimer - new EncounterSlot { Species = 088, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Grimer - new EncounterSlot { Species = 089, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Muk - new EncounterSlot { Species = 089, LevelMin = 48, LevelMax = 48, Type = SlotType.Surf_Safari }, // Muk - new EncounterSlot { Species = 109, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Koffing - new EncounterSlot { Species = 110, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Weezing - // new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp - // new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Magikarp - new EncounterSlot { Species = 130, LevelMin = 36, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 130, LevelMin = 26, LevelMax = 26, Type = SlotType.Good_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 130, LevelMin = 29, LevelMax = 29, Type = SlotType.Good_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 189, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Jumpluff - new EncounterSlot { Species = 189, LevelMin = 47, LevelMax = 47, Type = SlotType.Surf_Safari }, // Jumpluff - // new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wooper - // new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Surf_Safari }, // Wooper - new EncounterSlot { Species = 195, LevelMin = 43, LevelMax = 43, Type = SlotType.Surf_Safari }, // Quagsire - new EncounterSlot { Species = 213, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Shuckle - new EncounterSlot { Species = 315, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Roselia - new EncounterSlot { Species = 336, LevelMin = 47, LevelMax = 48, Type = SlotType.Grass_Safari }, // Seviper - new EncounterSlot { Species = 339, LevelMin = 42, LevelMax = 42, Type = SlotType.Super_Rod_Safari }, // Barboach - new EncounterSlot { Species = 339, LevelMin = 45, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Barboach - new EncounterSlot { Species = 354, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Banette - new EncounterSlot { Species = 453, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Croagunk - new EncounterSlot { Species = 455, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Carnivine - // Mountain Zone - // new EncounterSlot { Species = 019, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Rattata - // new EncounterSlot { Species = 020, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Raticate - new EncounterSlot { Species = 041, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Zubat - new EncounterSlot { Species = 042, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Golbat - // new EncounterSlot { Species = 082, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magneton - new EncounterSlot { Species = 082, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Magneton - new EncounterSlot { Species = 098, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Krabby - new EncounterSlot { Species = 108, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Lickitung - new EncounterSlot { Species = 246, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Larvitar - new EncounterSlot { Species = 246, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Larvitar - new EncounterSlot { Species = 307, LevelMin = 43, LevelMax = 44, Type = SlotType.Grass_Safari }, // Meditite - new EncounterSlot { Species = 313, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Volbeat - new EncounterSlot { Species = 337, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Lunatone - new EncounterSlot { Species = 356, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Dusclops - new EncounterSlot { Species = 364, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Sealeo - new EncounterSlot { Species = 375, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Metang - new EncounterSlot { Species = 433, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Chingling - // Rockey Beach Zone - new EncounterSlot { Species = 041, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Zubat - // new EncounterSlot { Species = 060, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Poliwag - new EncounterSlot { Species = 061, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Poliwhirl - new EncounterSlot { Species = 079, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Slowpoke - new EncounterSlot { Species = 080, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Slowbro - new EncounterSlot { Species = 080, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Slowbro - new EncounterSlot { Species = 080, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Slowbro - new EncounterSlot { Species = 084, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Doduo - new EncounterSlot { Species = 085, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Dodrio - new EncounterSlot { Species = 098, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Krabby - new EncounterSlot { Species = 098, LevelMin = 13, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Krabby - new EncounterSlot { Species = 098, LevelMin = 22, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Krabby - new EncounterSlot { Species = 098, LevelMin = 17, LevelMax = 17, Type = SlotType.Old_Rod_Safari }, // Krabby - new EncounterSlot { Species = 098, LevelMin = 18, LevelMax = 18, Type = SlotType.Old_Rod_Safari }, // Krabby - new EncounterSlot { Species = 099, LevelMin = 26, LevelMax = 27, Type = SlotType.Good_Rod_Safari }, // Kingler - new EncounterSlot { Species = 099, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Kingler - new EncounterSlot { Species = 099, LevelMin = 38, LevelMax = 39, Type = SlotType.Super_Rod_Safari }, // Kingler - new EncounterSlot { Species = 118, LevelMin = 13, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Goldeen - // new EncounterSlot { Species = 118, LevelMin = 22, LevelMax = 23, Type = SlotType.Good_Rod_Safari }, // Goldeen - new EncounterSlot { Species = 118, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Goldeen - new EncounterSlot { Species = 119, LevelMin = 35, LevelMax = 38, Type = SlotType.Super_Rod_Safari }, // Seaking - // new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 14, Type = SlotType.Old_Rod_Safari }, // Magikarp - // new EncounterSlot { Species = 129, LevelMin = 22, LevelMax = 23, Type = SlotType.Good_Rod_Safari }, // Magikarp - // new EncounterSlot { Species = 129, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Magikarp - new EncounterSlot { Species = 131, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Lapras - new EncounterSlot { Species = 131, LevelMin = 36, LevelMax = 37, Type = SlotType.Surf_Safari }, // Lapras - new EncounterSlot { Species = 131, LevelMin = 41, LevelMax = 42, Type = SlotType.Surf_Safari }, // Lapras - new EncounterSlot { Species = 131, LevelMin = 46, LevelMax = 47, Type = SlotType.Surf_Safari }, // Lapras - new EncounterSlot { Species = 179, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Mareep - new EncounterSlot { Species = 304, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Aron - new EncounterSlot { Species = 309, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Electrike - new EncounterSlot { Species = 310, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Manectric - new EncounterSlot { Species = 341, LevelMin = 46, LevelMax = 46, Type = SlotType.Super_Rod_Safari }, // Corphish - new EncounterSlot { Species = 341, LevelMin = 48, LevelMax = 48, Type = SlotType.Super_Rod_Safari }, // Corphish - new EncounterSlot { Species = 406, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Budew - new EncounterSlot { Species = 443, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Gible - // Wasteland Zone - // new EncounterSlot { Species = 022, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Fearow - new EncounterSlot { Species = 055, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Golduck - new EncounterSlot { Species = 066, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Machop - new EncounterSlot { Species = 067, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Machoke - new EncounterSlot { Species = 067, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Machoke - new EncounterSlot { Species = 069, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Bellsprout - new EncounterSlot { Species = 081, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Magnemite - new EncounterSlot { Species = 095, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Onix - new EncounterSlot { Species = 099, LevelMin = 48, LevelMax = 48, Type = SlotType.Grass_Safari }, // Kingler - new EncounterSlot { Species = 115, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Kangaskhan - new EncounterSlot { Species = 286, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Breloom - new EncounterSlot { Species = 308, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Medicham - new EncounterSlot { Species = 310, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Manectric - new EncounterSlot { Species = 314, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Illumise - new EncounterSlot { Species = 338, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Solrock - new EncounterSlot { Species = 451, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Skorupi - // Savannah Zone - new EncounterSlot { Species = 029, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidoran♀ - new EncounterSlot { Species = 030, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidorina - new EncounterSlot { Species = 032, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidoran♂ - new EncounterSlot { Species = 033, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Nidorino - new EncounterSlot { Species = 041, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Zubat - new EncounterSlot { Species = 042, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Golbat - new EncounterSlot { Species = 111, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Rhyhorn - new EncounterSlot { Species = 111, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Rhyhorn - new EncounterSlot { Species = 112, LevelMin = 44, LevelMax = 44, Type = SlotType.Grass_Safari }, // Rhydon - new EncounterSlot { Species = 128, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Tauros - new EncounterSlot { Species = 128, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Tauros - new EncounterSlot { Species = 228, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Houndour - new EncounterSlot { Species = 263, LevelMin = 38, LevelMax = 38, Type = SlotType.Grass_Safari }, // Zigzagoon - new EncounterSlot { Species = 285, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Shroomish - new EncounterSlot { Species = 298, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Azurill - new EncounterSlot { Species = 324, LevelMin = 46, LevelMax = 47, Type = SlotType.Grass_Safari }, // Torkoal - new EncounterSlot { Species = 332, LevelMin = 42, LevelMax = 42, Type = SlotType.Grass_Safari }, // Cacturne - new EncounterSlot { Species = 404, LevelMin = 45, LevelMax = 46, Type = SlotType.Grass_Safari }, // Luxio - // Wetland Zone - new EncounterSlot { Species = 021, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Spearow - new EncounterSlot { Species = 054, LevelMin = 15, LevelMax = 16, Type = SlotType.Grass_Safari }, // Psyduck - new EncounterSlot { Species = 054, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Psyduck - new EncounterSlot { Species = 055, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Golduck - new EncounterSlot { Species = 055, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Golduck - new EncounterSlot { Species = 055, LevelMin = 37, LevelMax = 37, Type = SlotType.Surf_Safari }, // Golduck - new EncounterSlot { Species = 055, LevelMin = 45, LevelMax = 45, Type = SlotType.Surf_Safari }, // Golduck - // new EncounterSlot { Species = 060, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Poliwag - // new EncounterSlot { Species = 060, LevelMin = 22, LevelMax = 24, Type = SlotType.Good_Rod_Safari }, // Poliwag - new EncounterSlot { Species = 060, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Poliwag - // new EncounterSlot { Species = 060, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Poliwag - new EncounterSlot { Species = 061, LevelMin = 17, LevelMax = 18, Type = SlotType.Old_Rod_Safari }, // Poliwhirl - // new EncounterSlot { Species = 061, LevelMin = 23, LevelMax = 25, Type = SlotType.Good_Rod_Safari }, // Poliwhirl - // new EncounterSlot { Species = 061, LevelMin = 35, LevelMax = 37, Type = SlotType.Super_Rod_Safari }, // Poliwhirl - new EncounterSlot { Species = 083, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Farfetch'd - new EncounterSlot { Species = 083, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Farfetch'd - new EncounterSlot { Species = 084, LevelMin = 45, LevelMax = 45, Type = SlotType.Grass_Safari }, // Doduo - // new EncounterSlot { Species = 129, LevelMin = 12, LevelMax = 15, Type = SlotType.Old_Rod_Safari }, // Magikarp - new EncounterSlot { Species = 130, LevelMin = 44, LevelMax = 45, Type = SlotType.Super_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 130, LevelMin = 47, LevelMax = 48, Type = SlotType.Super_Rod_Safari }, // Gyarados - new EncounterSlot { Species = 132, LevelMin = 17, LevelMax = 17, Type = SlotType.Grass_Safari }, // Ditto - new EncounterSlot { Species = 132, LevelMin = 41, LevelMax = 41, Type = SlotType.Grass_Safari }, // Ditto - // new EncounterSlot { Species = 161, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Sentret - new EncounterSlot { Species = 162, LevelMin = 37, LevelMax = 37, Type = SlotType.Grass_Safari }, // Furret - // new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 17, Type = SlotType.Grass_Safari }, // Wooper - // new EncounterSlot { Species = 194, LevelMin = 15, LevelMax = 16, Type = SlotType.Surf_Safari }, // Wooper - new EncounterSlot { Species = 195, LevelMin = 16, LevelMax = 17, Type = SlotType.Grass_Safari }, // Quagsire - new EncounterSlot { Species = 195, LevelMin = 16, LevelMax = 17, Type = SlotType.Surf_Safari }, // Quagsire - new EncounterSlot { Species = 195, LevelMin = 37, LevelMax = 37, Type = SlotType.Surf_Safari }, // Quagsire - new EncounterSlot { Species = 271, LevelMin = 47, LevelMax = 47, Type = SlotType.Grass_Safari }, // Lombre - new EncounterSlot { Species = 283, LevelMin = 40, LevelMax = 40, Type = SlotType.Grass_Safari }, // Surskit - new EncounterSlot { Species = 341, LevelMin = 26, LevelMax = 26, Type = SlotType.Good_Rod_Safari }, // Corphish - new EncounterSlot { Species = 341, LevelMin = 28, LevelMax = 28, Type = SlotType.Good_Rod_Safari }, // Corphish - new EncounterSlot { Species = 372, LevelMin = 46, LevelMax = 46, Type = SlotType.Grass_Safari }, // Shelgon - new EncounterSlot { Species = 417, LevelMin = 43, LevelMax = 43, Type = SlotType.Grass_Safari }, // Pachirisu - new EncounterSlot { Species = 418, LevelMin = 44, LevelMax = 45, Type = SlotType.Grass_Safari }, // Buizel - } - }, - //Some edge cases - new EncounterArea - { - Location = 219, // Mt. Silver Cave 1F - Slots = new[]{new EncounterSlot { Species = 130, LevelMin = 20, LevelMax = 20, Type = SlotType.Good_Rod },}, // Gyarados at night - }, - }; - - private static readonly EncounterArea SlotsPt_HoneyTree = - new EncounterArea - { - Slots = new[] - { - new EncounterSlot { Species = 190, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Aipom - new EncounterSlot { Species = 214, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Heracross - new EncounterSlot { Species = 265, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Wurmple - new EncounterSlot { Species = 412, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree, Form = 0, }, // Burmy Plant Cloak - new EncounterSlot { Species = 415, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Combee - new EncounterSlot { Species = 420, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Cheruby - new EncounterSlot { Species = 446, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Munchlax - }, - }; - - private static readonly EncounterArea SlotsD_HoneyTree = - new EncounterArea { - Slots = SlotsPt_HoneyTree.Slots.Concat(new[] - { - new EncounterSlot { Species = 266, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Silcoon - }).ToArray() - }; - - private static readonly EncounterArea SlotsP_HoneyTree = - new EncounterArea - { - Slots = SlotsPt_HoneyTree.Slots.Concat(new[] - { - new EncounterSlot { Species = 268, LevelMin = 5, LevelMax = 15, Type = SlotType.HoneyTree }, // Cascoon - }).ToArray() - }; - - private static readonly int[] TrophyDP = {035, 039, 052, 113, 133, 137, 173, 174, 183, 298, 311, 312, 351, 438, 439, 440}; // Porygon - private static readonly int[] TrophyPt = {035, 039, 052, 113, 133, 132, 173, 174, 183, 298, 311, 312, 351, 438, 439, 440}; // Ditto - - private static readonly int[] DP_GreatMarshAlt_Species = - { - // Daily changing Pokemon are not in the raw data http://bulbapedia.bulbagarden.net/wiki/Great_Marsh - 055,315,397,451,453,455, - 183,194,195,298,399,400, // Pre-National Pokédex - 046,102,115,193,285,316,452,454 // Post-National Pokédex - }; - private static readonly EncounterArea[] DP_GreatMarshAlt = EncounterArea.GetSimpleEncounterArea(DP_GreatMarshAlt_Species, new[] { 22, 22, 24, 24, 26, 26 }, 52, SlotType.Grass_Safari); - - private static readonly int[] Pt_GreatMarshAlt_Species = - { - 114,193,195,357,451,453,455, - 194, // Pre-National Pokédex - 046,102,115,285,316,352,452,454 // Post-National Pokédex - }; - private static readonly EncounterArea[] Pt_GreatMarshAlt = EncounterArea.GetSimpleEncounterArea(Pt_GreatMarshAlt_Species, new[] { 27, 30 }, 52, SlotType.Grass_Safari); - - private static readonly int[] Shellos_EastSeaLocation_DP = - { - 28, // Route 213 - 39, // Route 224 - }; - - private static readonly int[] Shellos_EastSeaLocation_Pt = - { - 11, // Pastoria City - 27, // Route 212 - 28, // Route 213 - }; - - private static readonly int[] Gastrodon_EastSeaLocation_DP = - { - 37, // Route 222 - 39, // Route 224 - 45, // Route 230 - }; - - private static readonly int[] Gastrodon_EastSeaLocation_Pt = - { - 11, // Pastoria City - 27, // Route 212 - 28, // Route 213 - 39, // Route 224 - 45, // Route 230 - }; - - private static readonly int[] HoneyTreesLocation = - { - 20, // Route 205 - 21, // Route 206 - 22, // Route 207 - 23, // Route 208 - 24, // Route 209 - 25, // Route 210 - 26, // Route 211 - 27, // Route 212 - 28, // Route 213 - 29, // Route 214 - 30, // Route 215 - 33, // Route 218 - 36, // Route 221 - 37, // Route 222 - 47, // Valley Windworks - 49, // Fuego Ironworks - 58, // Floaroma Meadow - }; - - private static readonly EncounterArea[] SlotsHGSS_Swarm = - { - new EncounterArea {Location = 128, Slots = new[]{new EncounterSlot {Species = 340, Type = SlotType.Old_Rod }, - new EncounterSlot {Species = 340, Type = SlotType.Good_Rod }, - new EncounterSlot {Species = 340, Type = SlotType.Super_Rod },},}, // Whiscash @ Violet City - new EncounterArea {Location = 143, Slots = new[]{new EncounterSlot {Species = 278, Type = SlotType.Surf },},}, // Wingull @ Vermillion City - new EncounterArea {Location = 149, Slots = new[]{new EncounterSlot {Species = 261, Type = SlotType.Grass },},}, // Poochyena @ Route 1 - new EncounterArea {Location = 160, Slots = new[]{new EncounterSlot {Species = 369, Type = SlotType.Super_Rod },},}, // Relicanth @ Route 12 - new EncounterArea {Location = 161, Slots = new[]{new EncounterSlot {Species = 113, Type = SlotType.Grass },},}, // Chansey @ Route 13 - new EncounterArea {Location = 167, Slots = new[]{new EncounterSlot {Species = 366, Type = SlotType.Surf },},}, // Clamperl @ Route 19 - new EncounterArea {Location = 173, Slots = new[]{new EncounterSlot {Species = 427, Type = SlotType.Grass },},}, // Buneary @ Route 25 - new EncounterArea {Location = 175, Slots = new[]{new EncounterSlot {Species = 370, Type = SlotType.Surf },},}, // Luvdisc @ Route 27 - new EncounterArea {Location = 180, Slots = new[]{new EncounterSlot {Species = 211, Type = SlotType.Super_Rod },},}, // Qwilfish @ Route 32 - new EncounterArea {Location = 182, Slots = new[]{new EncounterSlot {Species = 280, Type = SlotType.Grass },},}, // Ralts @ Route 34 - new EncounterArea {Location = 183, Slots = new[]{new EncounterSlot {Species = 193, Type = SlotType.Grass },},}, // Yanma @ Route 35 - new EncounterArea {Location = 186, Slots = new[]{new EncounterSlot {Species = 209, Type = SlotType.Grass },},}, // Snubbull @ Route 38 - new EncounterArea {Location = 192, Slots = new[]{new EncounterSlot {Species = 223, Type = SlotType.Good_Rod }, - new EncounterSlot {Species = 223, Type = SlotType.Super_Rod },},}, // Remoraid @ Route 44 - new EncounterArea {Location = 193, Slots = new[]{new EncounterSlot {Species = 333, Type = SlotType.Grass },},}, // Swablu @ Route 45 - new EncounterArea {Location = 195, Slots = new[]{new EncounterSlot {Species = 132, Type = SlotType.Grass },},}, // Ditto @ Route 47 - new EncounterArea {Location = 216, Slots = new[]{new EncounterSlot {Species = 183, Type = SlotType.Grass },},}, // Marill @ Mt. Mortar - new EncounterArea {Location = 220, Slots = new[]{new EncounterSlot {Species = 206, Type = SlotType.Grass },},}, // Dunsparce @ Dark Cave - new EncounterArea {Location = 224, Slots = new[]{new EncounterSlot {Species = 401, Type = SlotType.Grass },},}, // Kricketot @ Viridian Forest - }; - private static readonly EncounterArea[] SlotsHG_Swarm = SlotsHGSS_Swarm.Concat(new[] { - new EncounterArea {Location = 151, Slots = new[]{new EncounterSlot {Species = 343, Type = SlotType.Grass },},}, // Baltoy @ Route 3 - new EncounterArea {Location = 157, Slots = new[]{new EncounterSlot {Species = 302, Type = SlotType.Grass },},}, // Sableye @ Route 9 - }).ToArray(); - private static readonly EncounterArea[] SlotsSS_Swarm = SlotsHGSS_Swarm.Concat(new[] { - new EncounterArea {Location = 151, Slots = new[]{new EncounterSlot {Species = 316, Type = SlotType.Grass },},}, // Gulpin @ Route 3 - new EncounterArea {Location = 157, Slots = new[]{new EncounterSlot {Species = 303, Type = SlotType.Grass },},}, // Mawile @ Route 9 - }).ToArray(); - - #endregion + internal static readonly int[] Slot4_Swarm = { 0, 1 }; + internal static readonly int[] Slot4_Time = { 2, 3 }; + internal static readonly int[] Slot4_Sound = { 2, 3, 4, 5 }; + internal static readonly int[] Slot4_Radar = { 4, 5, 10, 11 }; + internal static readonly int[] Slot4_Dual = { 8, 9 }; internal static readonly int[] ValidMet_DP = { diff --git a/PKHeX.Core/Legality/Tables5.cs b/PKHeX.Core/Legality/Tables5.cs index d53f26b73..11d39fa05 100644 --- a/PKHeX.Core/Legality/Tables5.cs +++ b/PKHeX.Core/Legality/Tables5.cs @@ -141,737 +141,6 @@ public static partial class Legal new[] { 380, 388, 180, 495, 270, 271, 478, 472, 283, 200, 278, 289, 446, 214, 285 } // Nacrene City }; - #region Dream Radar Tables - internal static readonly EncounterStatic[] Encounter_DreamRadar = - { - new EncounterStatic { Shiny=false, Species=120, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=137, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=174, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=175, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=213, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=238, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=280, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=333, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=425, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=436, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=442, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=447, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=479,}, // Rotom has no HA - new EncounterStatic { Shiny=false, Species=517, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=561, Ability = 4 }, - new EncounterStatic { Shiny=false, Species=641, Ability = 4, Form = 1}, //Tornadus-T - new EncounterStatic { Shiny=false, Species=642, Ability = 4, Form = 1}, //Thundurus-T - new EncounterStatic { Shiny=false, Species=645, Ability = 4, Form = 1}, //Landorus-T - new EncounterStatic { Shiny=false, Species=249, Ability = 4 }, //SS - new EncounterStatic { Shiny=false, Species=250, Ability = 4 }, //HG - new EncounterStatic { Shiny=false, Species=483, Ability = 4 }, //D - new EncounterStatic { Shiny=false, Species=484, Ability = 4 }, //P - new EncounterStatic { Shiny=false, Species=487, Ability = 4 }, //Pt - new EncounterStatic { Shiny=false, Species=079, Ability = 4 }, //Slowpoke - new EncounterStatic { Shiny=false, Species=163, Ability = 4 }, //Hoothoot - new EncounterStatic { Shiny=false, Species=374, Ability = 4 }, //Beldum - }; - #endregion - #region DreamWorld Encounter - internal static readonly EncounterStatic[] DreamWorld_Common = - { - // Pleasant forest - new EncounterStatic { Species=019, Level = 10, Moves = new[]{098, 382, 231}, }, //Rattata - new EncounterStatic { Species=043, Level = 10, Moves = new[]{230, 298, 202}, }, //Oddish - new EncounterStatic { Species=069, Level = 10, Moves = new[]{022, 235, 402}, }, //Bellsprout - new EncounterStatic { Species=077, Level = 10, Moves = new[]{033, 037, 257}, }, //Ponyta - new EncounterStatic { Species=083, Level = 10, Moves = new[]{210, 355, 348}, }, //Farfetch'd - new EncounterStatic { Species=084, Level = 10, Moves = new[]{045, 175, 355}, }, //Doduo - new EncounterStatic { Species=102, Level = 10, Moves = new[]{140, 235, 202}, }, //Exeggcute - new EncounterStatic { Species=108, Level = 10, Moves = new[]{122, 214, 431}, }, //Lickitung - new EncounterStatic { Species=114, Level = 10, Moves = new[]{079, 073, 402}, }, //Tangela - new EncounterStatic { Species=115, Level = 10, Moves = new[]{252, 068, 409}, }, //Kangaskhan - new EncounterStatic { Species=161, Level = 10, Moves = new[]{010, 203, 343}, }, //Sentret - new EncounterStatic { Species=179, Level = 10, Moves = new[]{084, 115, 351}, }, //Mareep - new EncounterStatic { Species=191, Level = 10, Moves = new[]{072, 230, 414}, }, //Sunkern - new EncounterStatic { Species=234, Level = 10, Moves = new[]{033, 050, 285}, }, //Stantler - new EncounterStatic { Species=261, Level = 10, Moves = new[]{336, 305, 399}, }, //Poochyena - new EncounterStatic { Species=283, Level = 10, Moves = new[]{145, 056, 202}, }, //Surskit - new EncounterStatic { Species=399, Level = 10, Moves = new[]{033, 401, 290}, }, //Bidoof - new EncounterStatic { Species=403, Level = 10, Moves = new[]{268, 393, 400}, }, //Shinx - new EncounterStatic { Species=431, Level = 10, Moves = new[]{252, 372, 290}, }, //Glameow - new EncounterStatic { Species=054, Level = 10, Moves = new[]{346, 227, 362}, }, //Psyduck - new EncounterStatic { Species=058, Level = 10, Moves = new[]{044, 034, 203}, }, //Growlithe - new EncounterStatic { Species=123, Level = 10, Moves = new[]{098, 226, 366}, }, //Scyther - new EncounterStatic { Species=128, Level = 10, Moves = new[]{099, 231, 431}, }, //Tauros - new EncounterStatic { Species=183, Level = 10, Moves = new[]{111, 453, 008}, }, //Marill - new EncounterStatic { Species=185, Level = 10, Moves = new[]{175, 205, 272}, }, //Sudowoodo - new EncounterStatic { Species=203, Level = 10, Moves = new[]{093, 243, 285}, }, //Girafarig - new EncounterStatic { Species=241, Level = 10, Moves = new[]{111, 174, 231}, }, //Miltank - new EncounterStatic { Species=263, Level = 10, Moves = new[]{033, 271, 387}, }, //Zigzagoon - new EncounterStatic { Species=427, Level = 10, Moves = new[]{193, 252, 409}, }, //Buneary - new EncounterStatic { Species=037, Level = 10, Moves = new[]{046, 257, 399}, }, //Vulpix - new EncounterStatic { Species=060, Level = 10, Moves = new[]{095, 054, 214}, }, //Poliwag - new EncounterStatic { Species=177, Level = 10, Moves = new[]{101, 297, 202}, }, //Natu - new EncounterStatic { Species=239, Level = 10, Moves = new[]{084, 238, 393}, }, //Elekid - new EncounterStatic { Species=300, Level = 10, Moves = new[]{193, 321, 445}, }, //Skitty - // Windskept Sky - new EncounterStatic { Species=016, Level = 10, Moves = new[]{016, 211, 290}, }, //Pidgey - new EncounterStatic { Species=021, Level = 10, Moves = new[]{064, 185, 211}, }, //Spearow - new EncounterStatic { Species=041, Level = 10, Moves = new[]{048, 095, 162}, }, //Zubat - new EncounterStatic { Species=142, Level = 10, Moves = new[]{044, 372, 446}, }, //Aerodactyl - new EncounterStatic { Species=165, Level = 10, Moves = new[]{004, 450, 009}, }, //Ledyba - new EncounterStatic { Species=187, Level = 10, Moves = new[]{235, 227, 340}, }, //Hoppip - new EncounterStatic { Species=193, Level = 10, Moves = new[]{098, 364, 202}, }, //Yanma - new EncounterStatic { Species=198, Level = 10, Moves = new[]{064, 109, 355}, }, //Murkrow - new EncounterStatic { Species=207, Level = 10, Moves = new[]{028, 364, 366}, }, //Gligar - new EncounterStatic { Species=225, Level = 10, Moves = new[]{217, 420, 264}, }, //Delibird - new EncounterStatic { Species=276, Level = 10, Moves = new[]{064, 203, 413}, }, //Taillow - new EncounterStatic { Species=397, Level = 14, Moves = new[]{017, 297, 366}, }, //Staravia - new EncounterStatic { Species=227, Level = 10, Moves = new[]{064, 065, 355}, }, //Skarmory - new EncounterStatic { Species=357, Level = 10, Moves = new[]{016, 073, 318}, }, //Tropius - // Sparkling Sea - new EncounterStatic { Species=086, Level = 10, Moves = new[]{029, 333, 214}, }, //Seel - new EncounterStatic { Species=090, Level = 10, Moves = new[]{110, 112, 196}, }, //Shellder - new EncounterStatic { Species=116, Level = 10, Moves = new[]{145, 190, 362}, }, //Horsea - new EncounterStatic { Species=118, Level = 10, Moves = new[]{064, 060, 352}, }, //Goldeen - new EncounterStatic { Species=129, Level = 10, Moves = new[]{150, 175, 340}, }, //Magikarp - new EncounterStatic { Species=138, Level = 10, Moves = new[]{044, 330, 196}, }, //Omanyte - new EncounterStatic { Species=140, Level = 10, Moves = new[]{071, 175, 446}, }, //Kabuto - new EncounterStatic { Species=170, Level = 10, Moves = new[]{086, 133, 351}, }, //Chinchou - new EncounterStatic { Species=194, Level = 10, Moves = new[]{055, 034, 401}, }, //Wooper - new EncounterStatic { Species=211, Level = 10, Moves = new[]{040, 453, 290}, }, //Qwilfish - new EncounterStatic { Species=223, Level = 10, Moves = new[]{199, 350, 362}, }, //Remoraid - new EncounterStatic { Species=226, Level = 10, Moves = new[]{048, 243, 314}, }, //Mantine - new EncounterStatic { Species=320, Level = 10, Moves = new[]{055, 214, 340}, }, //Wailmer - new EncounterStatic { Species=339, Level = 10, Moves = new[]{189, 214, 209}, }, //Barboach - new EncounterStatic { Species=366, Level = 10, Moves = new[]{250, 445, 392}, }, //Clamperl - new EncounterStatic { Species=369, Level = 10, Moves = new[]{055, 214, 414}, }, //Relicanth - new EncounterStatic { Species=370, Level = 10, Moves = new[]{204, 300, 196}, }, //Luvdisc - new EncounterStatic { Species=418, Level = 10, Moves = new[]{346, 163, 352}, }, //Buizel - new EncounterStatic { Species=456, Level = 10, Moves = new[]{213, 186, 352}, }, //Finneon - new EncounterStatic { Species=072, Level = 10, Moves = new[]{048, 367, 202}, }, //Tentacool - new EncounterStatic { Species=318, Level = 10, Moves = new[]{044, 037, 399}, }, //Carvanha - new EncounterStatic { Species=341, Level = 10, Moves = new[]{106, 232, 283}, }, //Corphish - new EncounterStatic { Species=345, Level = 10, Moves = new[]{051, 243, 202}, }, //Lileep - new EncounterStatic { Species=347, Level = 10, Moves = new[]{010, 446, 440}, }, //Anorith - new EncounterStatic { Species=349, Level = 10, Moves = new[]{150, 445, 243}, }, //Feebas - new EncounterStatic { Species=131, Level = 10, Moves = new[]{109, 032, 196}, }, //Lapras - new EncounterStatic { Species=147, Level = 10, Moves = new[]{086, 352, 225}, }, //Dratini - // Spooky Mannor - new EncounterStatic { Species=092, Level = 10, Moves = new[]{095, 050, 482}, }, //Gastly - new EncounterStatic { Species=096, Level = 10, Moves = new[]{095, 427, 409}, }, //Drowzee - new EncounterStatic { Species=122, Level = 10, Moves = new[]{112, 298, 285}, }, //Mr. Mime - new EncounterStatic { Species=167, Level = 10, Moves = new[]{040, 527, 450}, }, //Spinarak - new EncounterStatic { Species=200, Level = 10, Moves = new[]{149, 194, 517}, }, //Misdreavus - new EncounterStatic { Species=228, Level = 10, Moves = new[]{336, 364, 399}, }, //Houndour - new EncounterStatic { Species=325, Level = 10, Moves = new[]{149, 285, 278}, }, //Spoink - new EncounterStatic { Species=353, Level = 10, Moves = new[]{101, 194, 220}, }, //Shuppet - new EncounterStatic { Species=355, Level = 10, Moves = new[]{050, 220, 271}, }, //Duskull - new EncounterStatic { Species=358, Level = 10, Moves = new[]{035, 095, 304}, }, //Chimecho - new EncounterStatic { Species=434, Level = 10, Moves = new[]{103, 492, 389}, }, //Stunky - new EncounterStatic { Species=209, Level = 10, Moves = new[]{204, 370, 038}, }, //Snubbull - new EncounterStatic { Species=235, Level = 10, Moves = new[]{166, 445, 214}, }, //Smeargle - new EncounterStatic { Species=313, Level = 10, Moves = new[]{148, 271, 366}, }, //Volbeat - new EncounterStatic { Species=314, Level = 10, Moves = new[]{204, 313, 366}, }, //Illumise - new EncounterStatic { Species=063, Level = 10, Moves = new[]{100, 285, 356}, }, //Abra - // Rugged Mountain - new EncounterStatic { Species=066, Level = 10, Moves = new[]{067, 418, 270}, }, //Machop - new EncounterStatic { Species=081, Level = 10, Moves = new[]{319, 278, 356}, }, //Magnemite - new EncounterStatic { Species=109, Level = 10, Moves = new[]{123, 399, 482}, }, //Koffing - new EncounterStatic { Species=218, Level = 10, Moves = new[]{052, 517, 257}, }, //Slugma - new EncounterStatic { Species=246, Level = 10, Moves = new[]{044, 399, 446}, }, //Larvitar - new EncounterStatic { Species=324, Level = 10, Moves = new[]{052, 090, 446}, }, //Torkoal - new EncounterStatic { Species=328, Level = 10, Moves = new[]{044, 324, 202}, }, //Trapinch - new EncounterStatic { Species=331, Level = 10, Moves = new[]{071, 298, 009}, }, //Cacnea - new EncounterStatic { Species=412, Level = 10, Moves = new[]{182, 450, 173}, }, //Burmy - new EncounterStatic { Species=449, Level = 10, Moves = new[]{044, 254, 276}, }, //Hippopotas - new EncounterStatic { Species=240, Level = 10, Moves = new[]{052, 009, 257}, }, //Magby - new EncounterStatic { Species=322, Level = 10, Moves = new[]{052, 034, 257}, }, //Numel - new EncounterStatic { Species=359, Level = 10, Moves = new[]{364, 224, 276}, }, //Absol - new EncounterStatic { Species=453, Level = 10, Moves = new[]{040, 409, 441}, }, //Croagunk - new EncounterStatic { Species=236, Level = 10, Moves = new[]{252, 364, 183}, }, //Tyrogue - new EncounterStatic { Species=371, Level = 10, Moves = new[]{044, 349, 200}, }, //Bagon - // Icy Cave - new EncounterStatic { Species=027, Level = 10, Moves = new[]{028, 068, 162}, }, //Sandshrew - new EncounterStatic { Species=074, Level = 10, Moves = new[]{111, 446, 431}, }, //Geodude - new EncounterStatic { Species=095, Level = 10, Moves = new[]{020, 446, 431}, }, //Onix - new EncounterStatic { Species=100, Level = 10, Moves = new[]{268, 324, 363}, }, //Voltorb - new EncounterStatic { Species=104, Level = 10, Moves = new[]{125, 195, 067}, }, //Cubone - new EncounterStatic { Species=293, Level = 10, Moves = new[]{253, 283, 428}, }, //Whismur - new EncounterStatic { Species=304, Level = 10, Moves = new[]{106, 283, 457}, }, //Aron - new EncounterStatic { Species=337, Level = 10, Moves = new[]{093, 414, 236}, }, //Lunatone - new EncounterStatic { Species=338, Level = 10, Moves = new[]{093, 428, 234}, }, //Solrock - new EncounterStatic { Species=343, Level = 10, Moves = new[]{229, 356, 428}, }, //Baltoy - new EncounterStatic { Species=459, Level = 10, Moves = new[]{075, 419, 202}, }, //Snover - new EncounterStatic { Species=050, Level = 10, Moves = new[]{028, 251, 446}, }, //Diglett - new EncounterStatic { Species=215, Level = 10, Moves = new[]{269, 008, 067}, }, //Sneasel - new EncounterStatic { Species=361, Level = 10, Moves = new[]{181, 311, 352}, }, //Snorunt - new EncounterStatic { Species=220, Level = 10, Moves = new[]{316, 246, 333}, }, //Swinub - new EncounterStatic { Species=443, Level = 10, Moves = new[]{082, 200, 203}, }, //Gible - // Dream Park - new EncounterStatic { Species=046, Level = 10, Moves = new[]{078, 440, 235}, }, //Paras - new EncounterStatic { Species=204, Level = 10, Moves = new[]{120, 390, 356}, }, //Pineco - new EncounterStatic { Species=265, Level = 10, Moves = new[]{040, 450, 173}, }, //Wurmple - new EncounterStatic { Species=273, Level = 10, Moves = new[]{074, 331, 492}, }, //Seedot - new EncounterStatic { Species=287, Level = 10, Moves = new[]{281, 400, 389}, }, //Slakoth - new EncounterStatic { Species=290, Level = 10, Moves = new[]{141, 203, 400}, }, //Nincada - new EncounterStatic { Species=311, Level = 10, Moves = new[]{086, 435, 324}, }, //Plusle - new EncounterStatic { Species=312, Level = 10, Moves = new[]{086, 435, 324}, }, //Minun - new EncounterStatic { Species=316, Level = 10, Moves = new[]{139, 151, 202}, }, //Gulpin - new EncounterStatic { Species=352, Level = 10, Moves = new[]{185, 285, 513}, }, //Kecleon - new EncounterStatic { Species=401, Level = 10, Moves = new[]{522, 283, 253}, }, //Kricketot - new EncounterStatic { Species=420, Level = 10, Moves = new[]{073, 505, 331}, }, //Cherubi - new EncounterStatic { Species=455, Level = 10, Moves = new[]{044, 476, 380}, }, //Carnivine - new EncounterStatic { Species=023, Level = 10, Moves = new[]{040, 251, 399}, }, //Ekans - new EncounterStatic { Species=175, Level = 10, Moves = new[]{118, 381, 253}, }, //Togepi - new EncounterStatic { Species=190, Level = 10, Moves = new[]{010, 252, 007}, }, //Aipom - new EncounterStatic { Species=285, Level = 10, Moves = new[]{078, 331, 264}, }, //Shroomish - new EncounterStatic { Species=315, Level = 10, Moves = new[]{074, 079, 129}, }, //Roselia - new EncounterStatic { Species=113, Level = 10, Moves = new[]{045, 068, 270}, }, //Chansey - new EncounterStatic { Species=127, Level = 10, Moves = new[]{011, 370, 382}, }, //Pinsir - new EncounterStatic { Species=133, Level = 10, Moves = new[]{028, 204, 129}, }, //Eevee - new EncounterStatic { Species=143, Level = 10, Moves = new[]{133, 007, 278}, }, //Snorlax - new EncounterStatic { Species=214, Level = 10, Moves = new[]{030, 175, 264}, }, //Heracross - // Pokémon Café Forest - new EncounterStatic { Species=061, Level = 25, Moves = new[]{240, 114, 352}, }, //Poliwhirl - new EncounterStatic { Species=133, Level = 10, Moves = new[]{270, 204, 129}, }, //Eevee - new EncounterStatic { Species=235, Level = 10, Moves = new[]{166, 445, 214}, }, //Smeargle - new EncounterStatic { Species=412, Level = 10, Moves = new[]{182, 450, 173}, }, //Burmy - //PGL - new EncounterStatic { Species=212, Level = 10, Moves = new[]{211}, Gender = 0, }, //Scizor - new EncounterStatic { Species=445, Level = 48, Gender = 0, }, //Garchomp - new EncounterStatic { Species=149, Level = 55, Moves = new[]{245}, Gender = 0, }, //Dragonite - new EncounterStatic { Species=248, Level = 55, Moves = new[]{069}, Gender = 0, }, //Tyranitar - new EncounterStatic { Species=376, Level = 45, Moves = new[]{038}, Gender = 2, }, //Metagross - }; - - internal static readonly EncounterStatic[] BW_DreamWorld = DreamWorld_Common.Concat(new[] - { - // Pleasant forest - new EncounterStatic { Species=029, Level = 10, Moves = new[]{010, 389, 162}, }, //Nidoran (F) - new EncounterStatic { Species=032, Level = 10, Moves = new[]{064, 068, 162}, }, //Nidoran (M) - new EncounterStatic { Species=174, Level = 10, Moves = new[]{047, 313, 270}, }, //Igglybuff - new EncounterStatic { Species=187, Level = 10, Moves = new[]{235, 270, 331}, }, //Hoppip - new EncounterStatic { Species=270, Level = 10, Moves = new[]{071, 073, 352}, }, //Lotad - new EncounterStatic { Species=276, Level = 10, Moves = new[]{064, 119, 366}, }, //Taillow - new EncounterStatic { Species=309, Level = 10, Moves = new[]{086, 423, 324}, }, //Electrike - new EncounterStatic { Species=351, Level = 10, Moves = new[]{052, 466, 352}, }, //Castform - new EncounterStatic { Species=417, Level = 10, Moves = new[]{098, 343, 351}, }, //Pachirisu - // Windskept Sky - new EncounterStatic { Species=012, Level = 10, Moves = new[]{093, 355, 314}, }, //Butterfree - new EncounterStatic { Species=163, Level = 10, Moves = new[]{193, 101, 278}, }, //Hoothoot - new EncounterStatic { Species=278, Level = 10, Moves = new[]{055, 239, 351}, }, //Wingull - new EncounterStatic { Species=333, Level = 10, Moves = new[]{064, 297, 355}, }, //Swablu - new EncounterStatic { Species=425, Level = 10, Moves = new[]{107, 095, 285}, }, //Drifloon - new EncounterStatic { Species=441, Level = 10, Moves = new[]{119, 417, 272}, }, //Chatot - // Sparkling Sea - new EncounterStatic { Species=079, Level = 10, Moves = new[]{281, 335, 362}, }, //Slowpoke - new EncounterStatic { Species=098, Level = 10, Moves = new[]{011, 133, 290}, }, //Krabby - new EncounterStatic { Species=119, Level = 33, Moves = new[]{352, 214, 203}, }, //Seaking - new EncounterStatic { Species=120, Level = 10, Moves = new[]{055, 278, 196}, }, //Staryu - new EncounterStatic { Species=222, Level = 10, Moves = new[]{145, 109, 446}, }, //Corsola - new EncounterStatic { Species=422, Level = 10, Moves = new[]{189, 281, 290}, Form = 0 }, //Shellos - new EncounterStatic { Species=422, Level = 10, Moves = new[]{189, 281, 290}, Form = 1 }, - // Spooky Mannor - new EncounterStatic { Species=202, Level = 15, Moves = new[]{243, 204, 227}, }, //Wobbuffet - new EncounterStatic { Species=238, Level = 10, Moves = new[]{186, 445, 285}, }, //Smoochum - new EncounterStatic { Species=303, Level = 10, Moves = new[]{313, 424, 008}, }, //Mawile - new EncounterStatic { Species=307, Level = 10, Moves = new[]{096, 409, 203}, }, //Meditite - new EncounterStatic { Species=436, Level = 10, Moves = new[]{095, 285, 356}, }, //Bronzor - new EncounterStatic { Species=052, Level = 10, Moves = new[]{010, 095, 290}, }, //Meowth - new EncounterStatic { Species=479, Level = 10, Moves = new[]{086, 351, 324}, }, //Rotom - new EncounterStatic { Species=280, Level = 10, Moves = new[]{093, 194, 270}, }, //Ralts - new EncounterStatic { Species=302, Level = 10, Moves = new[]{193, 389, 180}, }, //Sableye - new EncounterStatic { Species=442, Level = 10, Moves = new[]{180, 220, 196}, }, //Spiritomb - // Rugged Mountain - new EncounterStatic { Species=056, Level = 10, Moves = new[]{067, 179, 009}, }, //Mankey - new EncounterStatic { Species=111, Level = 10, Moves = new[]{030, 068, 038}, }, //Rhyhorn - new EncounterStatic { Species=231, Level = 10, Moves = new[]{175, 484, 402}, }, //Phanpy - new EncounterStatic { Species=451, Level = 10, Moves = new[]{044, 097, 401}, }, //Skorupi - new EncounterStatic { Species=216, Level = 10, Moves = new[]{313, 242, 264}, }, //Teddiursa - new EncounterStatic { Species=296, Level = 10, Moves = new[]{292, 270, 008}, }, //Makuhita - new EncounterStatic { Species=327, Level = 10, Moves = new[]{383, 252, 276}, }, //Spinda - new EncounterStatic { Species=374, Level = 10, Moves = new[]{036, 428, 442}, }, //Beldum - new EncounterStatic { Species=447, Level = 10, Moves = new[]{203, 418, 264}, }, //Riolu - // Icy Cave - new EncounterStatic { Species=173, Level = 10, Moves = new[]{227, 312, 214}, }, //Cleffa - new EncounterStatic { Species=213, Level = 10, Moves = new[]{227, 270, 504}, }, //Shuckle - new EncounterStatic { Species=299, Level = 10, Moves = new[]{033, 446, 246}, }, //Nosepass - new EncounterStatic { Species=363, Level = 10, Moves = new[]{181, 090, 401}, }, //Spheal - new EncounterStatic { Species=408, Level = 10, Moves = new[]{029, 442, 007}, }, //Cranidos - new EncounterStatic { Species=206, Level = 10, Moves = new[]{111, 277, 446}, }, //Dunsparce - new EncounterStatic { Species=410, Level = 10, Moves = new[]{182, 068, 090}, }, //Shieldon - // Dream Park - new EncounterStatic { Species=048, Level = 10, Moves = new[]{050, 226, 285}, }, //Venonat - new EncounterStatic { Species=088, Level = 10, Moves = new[]{139, 114, 425}, }, //Grimer - new EncounterStatic { Species=415, Level = 10, Moves = new[]{016, 366, 314}, }, //Combee - new EncounterStatic { Species=015, Level = 10, Moves = new[]{031, 314, 210}, }, //Beedrill - new EncounterStatic { Species=335, Level = 10, Moves = new[]{098, 458, 067}, }, //Zangoose - new EncounterStatic { Species=336, Level = 10, Moves = new[]{044, 034, 401}, }, //Seviper - // PGL - new EncounterStatic { Species=134, Level = 10, Gender = 0, }, //Vaporeon - new EncounterStatic { Species=135, Level = 10, Gender = 0, }, //Jolteon - new EncounterStatic { Species=136, Level = 10, Gender = 0, }, //Flareon - new EncounterStatic { Species=196, Level = 10, Gender = 0, }, //Espeon - new EncounterStatic { Species=197, Level = 10, Gender = 0, }, //Umbreon - new EncounterStatic { Species=470, Level = 10, Gender = 0, }, //Leafeon - new EncounterStatic { Species=471, Level = 10, Gender = 0, }, //Glaceon - new EncounterStatic { Species=001, Level = 10, Gender = 0, }, //Bulbasaur - new EncounterStatic { Species=004, Level = 10, Gender = 0, }, //Charmander - new EncounterStatic { Species=007, Level = 10, Gender = 0, }, //Squirtle - new EncounterStatic { Species=453, Level = 10, Gender = 0, }, //Croagunk - new EncounterStatic { Species=387, Level = 10, Gender = 0, }, //Turtwig - new EncounterStatic { Species=390, Level = 10, Gender = 0, }, //Chimchar - new EncounterStatic { Species=393, Level = 10, Gender = 0, }, //Piplup - new EncounterStatic { Species=493, Level = 100 }, //Arceus - new EncounterStatic { Species=252, Level = 10, Gender = 0, }, //Treecko - new EncounterStatic { Species=255, Level = 10, Gender = 0, }, //Torchic - new EncounterStatic { Species=258, Level = 10, Gender = 0, }, //Mudkip - new EncounterStatic { Species=468, Level = 10, Moves = new[]{217}, Gender = 0, }, //Togekiss - new EncounterStatic { Species=473, Level = 34, Gender = 0, }, //Mamoswine - new EncounterStatic { Species=137, Level = 10 }, //Porygon - new EncounterStatic { Species=384, Level = 50 }, //Rayquaza - new EncounterStatic { Species=354, Level = 37, Moves = new[]{538}, Gender = 1, }, //Banette - new EncounterStatic { Species=453, Level = 10, Moves = new[]{398}, Gender = 0, }, //Croagunk - new EncounterStatic { Species=334, Level = 35, Moves = new[]{206}, Gender = 0,}, //Altaria - new EncounterStatic { Species=242, Level = 10 }, //Blissey - new EncounterStatic { Species=448, Level = 10, Moves = new[]{418}, Gender = 0, }, //Lucario - new EncounterStatic { Species=189, Level = 27, Moves = new[]{206}, Gender = 0, }, //Jumpluff - }).ToArray(); - - internal static readonly EncounterStatic[] B2W2_DreamWorld = DreamWorld_Common.Concat(new[] - { - // Pleasant forest - new EncounterStatic { Species=535, Level = 10, Moves = new[]{496, 414, 352}, }, //Tympole - new EncounterStatic { Species=546, Level = 10, Moves = new[]{073, 227, 388}, }, //Cottonee - new EncounterStatic { Species=548, Level = 10, Moves = new[]{079, 204, 230}, }, //Petilil - new EncounterStatic { Species=588, Level = 10, Moves = new[]{203, 224, 450}, }, //Karrablast - new EncounterStatic { Species=616, Level = 10, Moves = new[]{051, 226, 227}, }, //Shelmet - new EncounterStatic { Species=545, Level = 30, Moves = new[]{342, 390, 276}, }, //Scolipede - // Windskept Sky - new EncounterStatic { Species=519, Level = 10, Moves = new[]{016, 095, 234}, }, //Pidove - new EncounterStatic { Species=561, Level = 10, Moves = new[]{095, 500, 257}, }, //Sigilyph - new EncounterStatic { Species=580, Level = 10, Moves = new[]{432, 362, 382}, }, //Ducklett - new EncounterStatic { Species=587, Level = 10, Moves = new[]{098, 403, 204}, }, //Emolga - // Sparkling Sea - new EncounterStatic { Species=550, Level = 10, Moves = new[]{029, 097, 428}, Form = 0 },//Basculin - new EncounterStatic { Species=550, Level = 10, Moves = new[]{029, 097, 428}, Form = 1 }, - new EncounterStatic { Species=594, Level = 10, Moves = new[]{392, 243, 220}, }, //Alomomola - new EncounterStatic { Species=618, Level = 10, Moves = new[]{189, 174, 281}, }, //Stunfisk - new EncounterStatic { Species=564, Level = 10, Moves = new[]{205, 175, 334}, }, //Tirtouga - // Spooky Mannor - new EncounterStatic { Species=605, Level = 10, Moves = new[]{377, 112, 417}, }, //Elgyem - new EncounterStatic { Species=624, Level = 10, Moves = new[]{210, 427, 389}, }, //Pawniard - new EncounterStatic { Species=596, Level = 36, Moves = new[]{486, 050, 228}, }, //Galvantula - new EncounterStatic { Species=578, Level = 32, Moves = new[]{105, 286, 271}, }, //Duosion - new EncounterStatic { Species=622, Level = 10, Moves = new[]{205, 007, 009}, }, //Golett - // Rugged Mountain - new EncounterStatic { Species=631, Level = 10, Moves = new[]{510, 257, 202}, }, //Heatmor - new EncounterStatic { Species=632, Level = 10, Moves = new[]{210, 203, 422}, }, //Durant - new EncounterStatic { Species=556, Level = 10, Moves = new[]{042, 073, 191}, }, //Maractus - new EncounterStatic { Species=558, Level = 34, Moves = new[]{157, 068, 400}, }, //Crustle - new EncounterStatic { Species=553, Level = 40, Moves = new[]{242, 068, 212}, }, //Krookodile - // Icy Cave - new EncounterStatic { Species=529, Level = 10, Moves = new[]{229, 319, 431}, }, //Drilbur - new EncounterStatic { Species=621, Level = 10, Moves = new[]{044, 424, 389}, }, //Druddigon - new EncounterStatic { Species=525, Level = 25, Moves = new[]{479, 174, 484}, }, //Boldore - new EncounterStatic { Species=583, Level = 35, Moves = new[]{429, 420, 286}, }, //Vanillish - new EncounterStatic { Species=600, Level = 38, Moves = new[]{451, 356, 393}, }, //Klang - new EncounterStatic { Species=610, Level = 10, Moves = new[]{082, 068, 400}, }, //Axew - // Dream Park - new EncounterStatic { Species=531, Level = 10, Moves = new[]{270, 227, 281}, }, //Audino - new EncounterStatic { Species=538, Level = 10, Moves = new[]{020, 008, 276}, }, //Throh - new EncounterStatic { Species=539, Level = 10, Moves = new[]{249, 009, 530}, }, //Sawk - new EncounterStatic { Species=559, Level = 10, Moves = new[]{067, 252, 409}, }, //Scraggy - new EncounterStatic { Species=533, Level = 25, Moves = new[]{067, 183, 409}, }, //Gurdurr - // PGL - new EncounterStatic { Species=575, Level = 32, Moves = new[]{243}, Gender = 0, }, //Gothorita - new EncounterStatic { Species=025, Level = 10, Moves = new[]{029}, Gender = 0, }, //Pikachu - new EncounterStatic { Species=511, Level = 10, Moves = new[]{437}, Gender = 0, }, //Pansage - new EncounterStatic { Species=513, Level = 10, Moves = new[]{257}, Gender = 0, }, //Pansear - new EncounterStatic { Species=515, Level = 10, Moves = new[]{056}, Gender = 0, }, //Panpour - new EncounterStatic { Species=387, Level = 10, Moves = new[]{254}, Gender = 0, }, //Turtwig - new EncounterStatic { Species=390, Level = 10, Moves = new[]{252}, Gender = 0, }, //Chimchar - new EncounterStatic { Species=393, Level = 10, Moves = new[]{297}, Gender = 0, }, //Piplup - new EncounterStatic { Species=575, Level = 32, Moves = new[]{286}, Gender = 0, }, //Gothorita - }).ToArray(); - #endregion - #region Static Encounter/Gift Tables - internal static readonly int[] Roaming_MetLocation_BW = - { - 25,26,27,28, // Route 12,13,14,15 Night latter half - 15,16,31, // Route 2,3,18 Morning - 17,18,29, // Route 4,5,16 Daytime - 19,20,21, // Route 6,7,8 Evening - 22,23,24, // Route 9,10,11 Night former half - }; - internal static readonly EncounterStatic[] Encounter_BW_Roam = - { - new EncounterStatic { Species = 641, Level = 40, Version = GameVersion.B, Roaming = true }, //Tornadus - new EncounterStatic { Species = 642, Level = 40, Version = GameVersion.W, Roaming = true }, //Thundurus - }; - internal static readonly EncounterStatic[] Encounter_BW_Regular = - { - //Starters @ Nuvema Town - new EncounterStatic { Gift = true, Species = 495, Level = 5, Location = 4, }, // Snivys - new EncounterStatic { Gift = true, Species = 498, Level = 5, Location = 4, }, // Tepig - new EncounterStatic { Gift = true, Species = 501, Level = 5, Location = 4, }, // Oshawott - //Fossil @ Nacrene City - new EncounterStatic { Gift = true, Species = 138, Level = 25, Location = 7, }, // Omanyte - new EncounterStatic { Gift = true, Species = 140, Level = 25, Location = 7, }, // Kabuto - new EncounterStatic { Gift = true, Species = 142, Level = 25, Location = 7, }, // Aerodactyl - new EncounterStatic { Gift = true, Species = 345, Level = 25, Location = 7, }, // Lileep - new EncounterStatic { Gift = true, Species = 347, Level = 25, Location = 7, }, // Anorith - new EncounterStatic { Gift = true, Species = 408, Level = 25, Location = 7, }, // Cranidos - new EncounterStatic { Gift = true, Species = 410, Level = 25, Location = 7, }, // Shieldon - new EncounterStatic { Gift = true, Species = 564, Level = 25, Location = 7, }, // Tirtouga - new EncounterStatic { Gift = true, Species = 566, Level = 25, Location = 7, }, // Archen - //Gift - new EncounterStatic { Gift = true, Species = 511, Level = 10, Location = 32, }, // Pansage @ Dreamyard - new EncounterStatic { Gift = true, Species = 513, Level = 10, Location = 32, }, // Pansear - new EncounterStatic { Gift = true, Species = 515, Level = 10, Location = 32, }, // Panpour - new EncounterStatic { Gift = true, Species = 129, Level = 05, Location = 68, }, // Magikarp @ Marvelous Bridge - new EncounterStatic { Gift = true, Species = 636, Level = 01, EggLocation = 60003, }, // Larvesta Egg from Treasure Hunter - //Stationary - new EncounterStatic { Species = 518, Level = 50, Location = 32, Ability = 4, }, //Musharna @ Dreamyard Friday Only - new EncounterStatic { Species = 590, Level = 20, Location = 19, }, //Foongus @ Route 6 - new EncounterStatic { Species = 590, Level = 30, Location = 23, }, //Foongus @ Route 10 - new EncounterStatic { Species = 591, Level = 40, Location = 23, }, //Amoonguss @ Route 10 - new EncounterStatic { Species = 555, Level = 35, Location = 34, Ability = 4, }, //Darmanitan @ Desert Resort - new EncounterStatic { Species = 637, Level = 70, Location = 35, }, //Volcarona @ Relic Castle - //Stationary Lengerdary - new EncounterStatic { Species = 638, Level = 42, Location = 74,}, //Cobalion @ Guidance Chamber - new EncounterStatic { Species = 639, Level = 42, Location = 73,}, //Terrakion @ Trial Chamber - new EncounterStatic { Species = 640, Level = 42, Location = 55,}, //Virizion @ Rumination Field - new EncounterStatic { Species = 643, Level = 50, Location = 45, Shiny = false, Version = GameVersion.B, }, //Reshiram @ N'Castle - new EncounterStatic { Species = 643, Level = 50, Location = 39, Shiny = false, Version = GameVersion.B, }, //Reshiram @ Dragonspiral Tower - new EncounterStatic { Species = 644, Level = 50, Location = 45, Shiny = false, Version = GameVersion.W, }, //Zekrom @ N'Castle - new EncounterStatic { Species = 644, Level = 50, Location = 39, Shiny = false, Version = GameVersion.W, }, //Zekrom @ Dragonspiral Tower - new EncounterStatic { Species = 645, Level = 70, Location = 70,}, //Landorus @ Abundant Shrine - new EncounterStatic { Species = 646, Level = 75, Location = 61,}, //Kyurem @ Giant Chasm - //Event - new EncounterStatic { Species = 494, Level = 15, Location = 62, Shiny = false}, // Victini @ Liberty Garden - new EncounterStatic { Species = 570, Level = 10, Location = 08, Gender = 0, }, // Zorua @ Castelia City - new EncounterStatic { Species = 571, Level = 25, Location = 72, Gender = 1, }, // Zoroark @ Lostlorn Forest - }; - internal static readonly EncounterStatic[] Encounter_BW = Encounter_BW_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_BW)).Concat(Encounter_BW_Regular).ToArray(); - internal static readonly EncounterStatic[] Encounter_B2W2_Regular = - { - //Starters @ Aspertia City - new EncounterStatic { Gift = true, Species = 495, Level = 5, Location = 117, }, // Snivy - new EncounterStatic { Gift = true, Species = 498, Level = 5, Location = 117, }, // Tepig - new EncounterStatic { Gift = true, Species = 501, Level = 5, Location = 117, }, // Oshawott - //Fossil @ Nacrene City - new EncounterStatic { Gift = true, Species = 138, Level = 25, Location = 7, }, // Omanyte - new EncounterStatic { Gift = true, Species = 140, Level = 25, Location = 7, }, // Kabuto - new EncounterStatic { Gift = true, Species = 142, Level = 25, Location = 7, }, // Aerodactyl - new EncounterStatic { Gift = true, Species = 345, Level = 25, Location = 7, }, // Lileep - new EncounterStatic { Gift = true, Species = 347, Level = 25, Location = 7, }, // Anorith - new EncounterStatic { Gift = true, Species = 408, Level = 25, Location = 7, }, // Cranidos - new EncounterStatic { Gift = true, Species = 410, Level = 25, Location = 7, }, // Shieldon - new EncounterStatic { Gift = true, Species = 564, Level = 25, Location = 7, }, // Tirtouga - new EncounterStatic { Gift = true, Species = 566, Level = 25, Location = 7, }, // Archen - //Gift - new EncounterStatic { Gift = true, Species = 133, Level = 10, Ability = 4, Location = 8, }, //HA Eevee @ Castelia City - new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 0, }, //HA Deerling @ Route 6 - new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 1, }, //HA Deerling @ Route 6 - new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 2, }, //HA Deerling @ Route 6 - new EncounterStatic { Gift = true, Species = 585, Level = 30, Ability = 4, Location = 19, Form = 3, }, //HA Deerling @ Route 6 - new EncounterStatic { Gift = true, Species = 443, Level = 01, Shiny = true, Location = 122, Gender = 0, Version = GameVersion.B2, }, //Shiny Gible @ Floccesy Town - new EncounterStatic { Gift = true, Species = 147, Level = 01, Shiny = true, Location = 122, Gender = 0, Version = GameVersion.W2, }, //Shiny Dratini @ Floccesy Town - new EncounterStatic { Gift = true, Species = 129, Level = 05, Location = 68, }, // Magikarp @ Marvelous Bridge - new EncounterStatic { Gift = true, Species = 440, Level = 01, EggLocation = 60003, }, // Happiny Egg from PKMN Breeder - //Stationary - new EncounterStatic { Species = 590, Level = 29, Location = 19, }, // Foongus @ Route 6 - new EncounterStatic { Species = 591, Level = 43, Location = 24, }, // Amoonguss @ Route 11 - new EncounterStatic { Species = 593, Level = 40, Location = 71, Ability = 4, Version = GameVersion.B2, Gender = 0,}, // HA Jellicent @ Undella Bay Mon Only - new EncounterStatic { Species = 593, Level = 40, Location = 71, Ability = 4, Version = GameVersion.W2, Gender = 1,}, // HA Jellicent @ Undella Bay Thurs Only - new EncounterStatic { Species = 628, Level = 25, Location = 17, Ability = 4, Version = GameVersion.W2, Gender = 0,}, // HA Braviary @ Route 4 Mon Only - new EncounterStatic { Species = 630, Level = 25, Location = 17, Ability = 4, Version = GameVersion.B2, Gender = 1,}, // HA Mandibuzz @ Route 4 Thurs Only - new EncounterStatic { Species = 637, Level = 35, Location = 35, }, // Volcarona @ Relic Castle - new EncounterStatic { Species = 637, Level = 65, Location = 35, }, // Volcarona @ Relic Castle - new EncounterStatic { Species = 558, Level = 42, Location = 141, }, // Crustle @ Seaside Cave - new EncounterStatic { Species = 612, Level = 60, Location = 147, Shiny = true}, // Haxorus @ Nature Preserve - //Stationary Lengerdary - new EncounterStatic { Species = 377, Level = 65, Location = 150,}, //Regirock @ Rock Peak Chamber - new EncounterStatic { Species = 378, Level = 65, Location = 151,}, //Regice @ Iceberg Chamber - new EncounterStatic { Species = 379, Level = 65, Location = 152,}, //Registeel @ Iron Chamber - new EncounterStatic { Species = 380, Level = 68, Location = 032, Version = GameVersion.W2, }, // Latias @ Dreamyard - new EncounterStatic { Species = 381, Level = 68, Location = 032, Version = GameVersion.B2, }, // Latios @ Dreamyard - new EncounterStatic { Species = 480, Level = 65, Location = 007,}, //Uxie @ Nacrene City - new EncounterStatic { Species = 481, Level = 65, Location = 056,}, //Mesprit @ Celestial Tower - new EncounterStatic { Species = 482, Level = 65, Location = 128,}, //Azelf @ Route 23 - new EncounterStatic { Species = 485, Level = 68, Location = 132,}, //Heatran @ Reversal Mountain - new EncounterStatic { Species = 486, Level = 68, Location = 038,}, //Regigigas @ Twist Mountain - new EncounterStatic { Species = 488, Level = 68, Location = 068,}, //Cresselia @ Marvelous Bridge - - new EncounterStatic { Species = 638, Level = 45, Location = 026,}, // Cobalion @ Route 13 - new EncounterStatic { Species = 638, Level = 65, Location = 026,}, // Cobalion @ Route 13 - new EncounterStatic { Species = 639, Level = 45, Location = 127,}, // Terrakion @ Route 22 - new EncounterStatic { Species = 639, Level = 65, Location = 127,}, // Terrakion @ Route 22 - new EncounterStatic { Species = 640, Level = 45, Location = 024,}, // Virizion @ Route 11 - new EncounterStatic { Species = 640, Level = 65, Location = 024,}, // Virizion @ Route 11 - new EncounterStatic { Species = 643, Level = 70, Location = 039, Shiny = false, Version = GameVersion.W2, }, // Reshiram @ Dragonspiral Tower - new EncounterStatic { Species = 644, Level = 70, Location = 039, Shiny = false, Version = GameVersion.B2, }, // Zekrom @ Dragonspiral Tower - new EncounterStatic { Species = 646, Level = 70, Location = 061, Form = 0}, // Kyurem @ Giant Chasm - //N's Pokemon - new EncounterStatic { Species = 509, Level = 07, Location = 15, NSparkle = true, Ability = 2, Nature = Nature.Timid }, //Purloin @ Route 2 - new EncounterStatic { Species = 519, Level = 13, Location = 33, NSparkle = true, Ability = 2, Nature = Nature.Sassy }, //Pidove @ Pinwheel Forest - new EncounterStatic { Species = 532, Level = 13, Location = 33, NSparkle = true, Ability = 1, Nature = Nature.Rash }, //Timburr @ Pinwheel Forest - new EncounterStatic { Species = 535, Level = 13, Location = 33, NSparkle = true, Ability = 2, Nature = Nature.Modest }, //Tympole @ Pinwheel Forest - new EncounterStatic { Species = 527, Level = 55, Location = 53, NSparkle = true, Ability = 1, Nature = Nature.Timid }, //Woobat @ Wellspring Cave - new EncounterStatic { Species = 551, Level = 22, Location = 34, NSparkle = true, Ability = 2, Nature = Nature.Docile }, //Sandile @ Desert Resort - new EncounterStatic { Species = 554, Level = 22, Location = 34, NSparkle = true, Ability = 1, Nature = Nature.Naive }, //Darumaka @ Desert Resort - new EncounterStatic { Species = 555, Level = 35, Location = 34, NSparkle = true, Ability = 4, Nature = Nature.Calm }, //Darmanitan @ Desert Resort - new EncounterStatic { Species = 559, Level = 22, Location = 34, NSparkle = true, Ability = 1, Nature = Nature.Lax }, //Scaggy @ Desert Resort - new EncounterStatic { Species = 561, Level = 22, Location = 34, NSparkle = true, Ability = 2, Nature = Nature.Gentle }, //Sigilyph @ Desert Resort - new EncounterStatic { Species = 525, Level = 28, Location = 37, NSparkle = true, Ability = 1, Nature = Nature.Naive }, //Boldore @ Chargestone Cave - new EncounterStatic { Species = 595, Level = 28, Location = 37, NSparkle = true, Ability = 2, Nature = Nature.Docile }, //Joltik @ Chargestone Cave - new EncounterStatic { Species = 597, Level = 28, Location = 37, NSparkle = true, Ability = 1, Nature = Nature.Bashful }, //Ferroseed @ Chargestone Cave - new EncounterStatic { Species = 599, Level = 28, Location = 37, NSparkle = true, Ability = 1, Nature = Nature.Rash }, //Klink @ Chargestone Cave - new EncounterStatic { Species = 570, Level = 25, Location = 10, NSparkle = true, Ability = 1, Nature = Nature.Hasty, Gift = true} //N's Zorua @ Driftveil City - }; - internal static readonly EncounterStatic[] Encounter_B2W2 = Encounter_DreamRadar.SelectMany(e => e.DreamRadarClone()).Concat(Encounter_B2W2_Regular).ToArray(); - #endregion - #region Trade Tables - internal static readonly EncounterTrade[] TradeGift_BW = - { - new EncounterTrade { Species = 548, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.B, }, // Petilil - new EncounterTrade { Species = 546, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.W, }, // Cottonee - new EncounterTrade { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, Version = GameVersion.B, Form = 0, }, // Basculin-Red - new EncounterTrade { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, Version = GameVersion.W, Form = 1, }, // Basculin-Blue - new EncounterTrade { Species = 587, Level = 30, Ability = 1, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,20,31,20,20,20}, Nature = Nature.Lax, }, // Emolga - new EncounterTrade { Species = 479, Level = 60, Ability = 1, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new[] {20,20,20,20,20,31}, Nature = Nature.Gentle, }, // Rotom - new EncounterTrade { Species = 446, Level = 60, Ability = 2, TID = 40217, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {31,20,20,20,20,20}, Nature = Nature.Serious, }, // Munchlax - }; - internal static readonly EncounterTrade[] TradeGift_B2W2 = - { - new EncounterTrade { Species = 548, Level = 20, Ability = 2, TID = 65217, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Timid, Version = GameVersion.B2, }, // Petilil - new EncounterTrade { Species = 546, Level = 20, Ability = 1, TID = 05720, SID = 00001, OTGender = 0, Gender = 0, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.W2, }, // Cottonee - new EncounterTrade { Species = 526, Level = 35, Ability = 1, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, }, // Gigalith - new EncounterTrade { Species = 465, Level = 45, Ability = 1, TID = 27658, SID = 00001, OTGender = 0, Gender = 0, IVs = new[] {31,20,20,20,20,20}, Nature = Nature.Hardy, }, // Tangrowth - new EncounterTrade { Species = 479, Level = 60, Ability = 1, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new[] {20,20,20,20,20,31}, Nature = Nature.Calm, }, // Rotom - new EncounterTrade { Species = 424, Level = 40, Ability = 2, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {20,20,20,31,20,20}, Nature = Nature.Jolly, }, // Ambipom - new EncounterTrade { Species = 065, Level = 40, Ability = 1, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {20,20,20,31,20,20}, Nature = Nature.Timid, }, // Alakazam - // player is male - new EncounterTrade { Species = 052, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 202, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 280, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 410, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 111, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 422, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1, Form = 0, }, //Shellos-Red - new EncounterTrade { Species = 303, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 442, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 143, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 216, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 327, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - new EncounterTrade { Species = 175, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,}, - // player is female - new EncounterTrade { Species = 056, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 202, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 280, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 408, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 111, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 422, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0, Form = 1,}, //Shellos-Blue - new EncounterTrade { Species = 302, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 442, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 143, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 231, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 327, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - new EncounterTrade { Species = 175, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,}, - }; - #endregion - #region Alt Slots - - // White forest white version only - private static readonly int[] WhiteForest_GrassSpecies = - { - 016,029,032,043,063,066,069,081,092,111, - 137,175,179,187,239,240,265,270,273,280, - 287,293,298,304,328,371,396,403,406,440, - }; - private static readonly int[] WhiteForest_SurfSpecies = - { - 194,270,283,341, - }; - private static readonly EncounterArea[] WhiteForestSlot = EncounterArea.GetSimpleEncounterArea(WhiteForest_GrassSpecies, new[] { 5, 5 }, 51, SlotType.Grass).Concat( - EncounterArea.GetSimpleEncounterArea(WhiteForest_SurfSpecies, new[] { 5, 5 }, 51, SlotType.Surf)).ToArray(); - private static readonly EncounterArea[] SlotsBW_Swarm = - { - //level range and Slottype will be marked later - new EncounterArea {Location = 14, Slots = new[]{new EncounterSlot {Species = 083},},},// Farfetch'd @ Route 1 - new EncounterArea {Location = 15, Slots = new[]{new EncounterSlot {Species = 360},},},// Wynant @ Route 2 - new EncounterArea {Location = 17, Slots = new[]{new EncounterSlot {Species = 449},},},// Hippopotas @ Route 4 - new EncounterArea {Location = 18, Slots = new[]{new EncounterSlot {Species = 235},},},// Smeargle @ Route 5 - new EncounterArea {Location = 20, Slots = new[]{new EncounterSlot {Species = 161},},},// Sentret @ Route 7 - new EncounterArea {Location = 21, Slots = new[]{new EncounterSlot {Species = 453},},},// Croagunk @ Route 8 - new EncounterArea {Location = 23, Slots = new[]{new EncounterSlot {Species = 236},},},// Tyrogue @ Route 10 - new EncounterArea {Location = 25, Slots = new[]{new EncounterSlot {Species = 084},},},// Doduo @ Route 12 - new EncounterArea {Location = 26, Slots = new[]{new EncounterSlot {Species = 353},},},// Shuppet @ Route 13 - new EncounterArea {Location = 27, Slots = new[]{new EncounterSlot {Species = 193},},},// Yanma @ Route 14 - new EncounterArea {Location = 28, Slots = new[]{new EncounterSlot {Species = 056},},},// Mankey @ Route 15 - new EncounterArea {Location = 29, Slots = new[]{new EncounterSlot {Species = 204},},},// Pineco @ Route 16 - new EncounterArea {Location = 30, Slots = new[]{new EncounterSlot {Species = 102},},},// Exeggcutes @ Route 18 - }; - private static readonly EncounterArea[] SlotsB_Swarm = SlotsBW_Swarm.Concat(new[] { - new EncounterArea {Location = 16, Slots = new[]{new EncounterSlot {Species = 313},},},// Volbeat @ Route 3 - new EncounterArea {Location = 19, Slots = new[]{new EncounterSlot {Species = 311},},},// Plusle @ Route 6 - new EncounterArea {Location = 22, Slots = new[]{new EncounterSlot {Species = 228},},},// Houndour @ Route 9 - new EncounterArea {Location = 24, Slots = new[]{new EncounterSlot {Species = 285},},},// Shroomish @ Route 11 - }).ToArray(); - private static readonly EncounterArea[] SlotsW_Swarm = SlotsBW_Swarm.Concat(new[] { - new EncounterArea {Location = 16, Slots = new[]{new EncounterSlot {Species = 314},},},// Illumise @ Route 3 - new EncounterArea {Location = 19, Slots = new[]{new EncounterSlot {Species = 312},},},// Minun @ Route 6 - new EncounterArea {Location = 22, Slots = new[]{new EncounterSlot {Species = 261},},},// Poochyena @ Route 9 - new EncounterArea {Location = 24, Slots = new[]{new EncounterSlot {Species = 046},},},// Paras @ Route 11 - }).ToArray(); - - private static readonly EncounterArea[] SlotsB2W2_Swarm = - { - //level range and Slottype will be marked later - new EncounterArea {Location = 014, Slots = new[]{new EncounterSlot {Species = 083},},},// Farfetch'd @ Route 1 - new EncounterArea {Location = 018, Slots = new[]{new EncounterSlot {Species = 177},},},// Natu @ Route 5 - new EncounterArea {Location = 020, Slots = new[]{new EncounterSlot {Species = 162},},},// Furret @ Route 7 - new EncounterArea {Location = 021, Slots = new[]{new EncounterSlot {Species = 195},},},// Quagsire @ Route 8 - new EncounterArea {Location = 022, Slots = new[]{new EncounterSlot {Species = 317},},},// Swalot @ Route 9 - new EncounterArea {Location = 024, Slots = new[]{new EncounterSlot {Species = 284},},},// Masquerain @ Route 11 - new EncounterArea {Location = 025, Slots = new[]{new EncounterSlot {Species = 084},},},// Doduo @ Route 12 - new EncounterArea {Location = 026, Slots = new[]{new EncounterSlot {Species = 277},},},// Swellow @ Route 13 - new EncounterArea {Location = 028, Slots = new[]{new EncounterSlot {Species = 022},},},// Fearow @ Route 15 - new EncounterArea {Location = 029, Slots = new[]{new EncounterSlot {Species = 204},},},// Pineco @ Route 16 - new EncounterArea {Location = 031, Slots = new[]{new EncounterSlot {Species = 187},},},// Hoppip @ Route 18 - new EncounterArea {Location = 032, Slots = new[]{new EncounterSlot {Species = 097},},},// Hypno @ Dreamyard - new EncounterArea {Location = 034, Slots = new[]{new EncounterSlot {Species = 450},},},// Hippowdon @ Desert Resort - new EncounterArea {Location = 070, Slots = new[]{new EncounterSlot {Species = 079},},},// Slowpoke @ Abundant shrine - new EncounterArea {Location = 132, Slots = new[]{new EncounterSlot {Species = 332},},},// Cacturne @ Reaversal Mountian - }; - private static readonly EncounterArea[] SlotsB2_Swarm = SlotsB2W2_Swarm.Concat(new[] { - new EncounterArea {Location = 016, Slots = new[]{new EncounterSlot {Species = 313},},},// Volbeat @ Route 3 - new EncounterArea {Location = 019, Slots = new[]{new EncounterSlot {Species = 311},},},// Plusle @ Route 6 - new EncounterArea {Location = 125, Slots = new[]{new EncounterSlot {Species = 185},},},// Sudowoodo @ Route 20 - new EncounterArea {Location = 127, Slots = new[]{new EncounterSlot {Species = 168},},},// Ariados @ Route 22 - }).ToArray(); - private static readonly EncounterArea[] SlotsW2_Swarm = SlotsB2W2_Swarm.Concat(new[] { - new EncounterArea {Location = 016, Slots = new[]{new EncounterSlot {Species = 314},},},// Illumise @ Route 3 - new EncounterArea {Location = 019, Slots = new[]{new EncounterSlot {Species = 312},},},// Minun @ Route 6 - new EncounterArea {Location = 125, Slots = new[]{new EncounterSlot {Species = 122},},},// Mr.Mime @ Route 20 - new EncounterArea {Location = 127, Slots = new[]{new EncounterSlot {Species = 166},},},// Ledian @ Route 22 - }).ToArray(); - - private static readonly EncounterSlot[] SlotsB2W2_HiddenGrottoEncounterSlots = - { - // reference http://bulbapedia.bulbagarden.net/wiki/Hidden_Grotto - // Route 2 - new EncounterSlot{ Species = 029, LevelMin = 55, LevelMax = 60, }, // Nidoran-f - new EncounterSlot{ Species = 032, LevelMin = 55, LevelMax = 60, }, // Nidoran-m - new EncounterSlot{ Species = 210, LevelMin = 55, LevelMax = 60, }, // Granbull - new EncounterSlot{ Species = 505, LevelMin = 55, LevelMax = 60, }, // Watchdog - // Route 3 - new EncounterSlot{ Species = 310, LevelMin = 55, LevelMax = 60, }, // Manectric @ Dark grass - new EncounterSlot{ Species = 417, LevelMin = 55, LevelMax = 60, }, // Pachirisu @ Dark grass - new EncounterSlot{ Species = 523, LevelMin = 55, LevelMax = 60, }, // Zebstrika @ Dark grass - new EncounterSlot{ Species = 048, LevelMin = 55, LevelMax = 60, }, // Venonat @ Pond - new EncounterSlot{ Species = 271, LevelMin = 55, LevelMax = 60, }, // Lombre @ Pond - new EncounterSlot{ Species = 400, LevelMin = 55, LevelMax = 60, }, // Bibarel @ Pond - // Route 5 - new EncounterSlot{ Species = 510, LevelMin = 20, LevelMax = 25, }, // Liepard - new EncounterSlot{ Species = 572, LevelMin = 20, LevelMax = 25, }, // Minccino - new EncounterSlot{ Species = 590, LevelMin = 20, LevelMax = 25, }, // Foongus - // Route 6 - new EncounterSlot{ Species = 206, LevelMin = 25, LevelMax = 30, }, // Dunsparce @ Near PKM Breeder - new EncounterSlot{ Species = 299, LevelMin = 25, LevelMax = 30, }, // Nospass @ Mistralton Cave - new EncounterSlot{ Species = 527, LevelMin = 25, LevelMax = 30, }, // Woobat @ Both - new EncounterSlot{ Species = 590, LevelMin = 25, LevelMax = 30, }, // Foongus @ Both - // Route 7 - new EncounterSlot{ Species = 335, LevelMin = 30, LevelMax = 35, }, // Zangoose - new EncounterSlot{ Species = 336, LevelMin = 30, LevelMax = 35, }, // Seviper - new EncounterSlot{ Species = 505, LevelMin = 30, LevelMax = 35, }, // Watechdog - new EncounterSlot{ Species = 613, LevelMin = 30, LevelMax = 35, }, // Cubchoo - // Route 9 - new EncounterSlot{ Species = 089, LevelMin = 35, LevelMax = 40, }, // Muk - new EncounterSlot{ Species = 510, LevelMin = 35, LevelMax = 40, }, // Liepard - new EncounterSlot{ Species = 569, LevelMin = 35, LevelMax = 40, }, // Garbodor - new EncounterSlot{ Species = 626, LevelMin = 35, LevelMax = 40, }, // Bouffalant - // Route 13 - new EncounterSlot{ Species = 114, LevelMin = 35, LevelMax = 40, }, // Tangela @ Gaint Chasm - new EncounterSlot{ Species = 363, LevelMin = 35, LevelMax = 40, }, // Spheal @ Stairs - new EncounterSlot{ Species = 425, LevelMin = 35, LevelMax = 40, }, // Drifloon @ Stairs - new EncounterSlot{ Species = 451, LevelMin = 35, LevelMax = 40, }, // Skorupi @ Gaint Chasm - new EncounterSlot{ Species = 590, LevelMin = 35, LevelMax = 40, }, // Foongus @ Both - // Route 18 - new EncounterSlot{ Species = 099, LevelMin = 55, LevelMax = 60, }, // Kingler - new EncounterSlot{ Species = 149, LevelMin = 55, LevelMax = 60, }, // Dragonite - new EncounterSlot{ Species = 222, LevelMin = 55, LevelMax = 60, }, // Corsola - new EncounterSlot{ Species = 441, LevelMin = 55, LevelMax = 60, }, // Chatot - // Pinwheel Forest - new EncounterSlot{ Species = 061, LevelMin = 55, LevelMax = 60, }, // Poliwhirl @ Outer - new EncounterSlot{ Species = 198, LevelMin = 55, LevelMax = 60, }, // Murkrow @ Inner - new EncounterSlot{ Species = 286, LevelMin = 55, LevelMax = 60, }, // Breloom @ Inner - new EncounterSlot{ Species = 297, LevelMin = 55, LevelMax = 60, }, // Hariyama @ Outer - new EncounterSlot{ Species = 308, LevelMin = 55, LevelMax = 60, }, // Medicham @ Outer - new EncounterSlot{ Species = 371, LevelMin = 55, LevelMax = 60, }, // Bagon @ Outer - new EncounterSlot{ Species = 591, LevelMin = 55, LevelMax = 60, }, // Amoonguss @ Inner - // Giant Chasm - new EncounterSlot{ Species = 035, LevelMin = 45, LevelMax = 50, }, // Clefairy - new EncounterSlot{ Species = 132, LevelMin = 45, LevelMax = 50, }, // Ditto - new EncounterSlot{ Species = 215, LevelMin = 45, LevelMax = 50, }, // Sneasel - new EncounterSlot{ Species = 375, LevelMin = 45, LevelMax = 50, }, // Metang - // Abundant Shrine - new EncounterSlot{ Species = 037, LevelMin = 35, LevelMax = 40, }, // Vulpix @ Near Youngster - new EncounterSlot{ Species = 055, LevelMin = 35, LevelMax = 40, }, // Golduck @ Shrine - new EncounterSlot{ Species = 333, LevelMin = 35, LevelMax = 40, }, // Swablu @ Shrine - new EncounterSlot{ Species = 436, LevelMin = 35, LevelMax = 40, }, // Bronzor @ Near Youngster - new EncounterSlot{ Species = 619, LevelMin = 35, LevelMax = 40, }, // Amoonguss @ Both - // Lostlorn Forest - new EncounterSlot{ Species = 127, LevelMin = 20, LevelMax = 25, }, // Pinsir - new EncounterSlot{ Species = 214, LevelMin = 20, LevelMax = 25, }, // Heracross - new EncounterSlot{ Species = 415, LevelMin = 20, LevelMax = 25, }, // Combee - new EncounterSlot{ Species = 542, LevelMin = 20, LevelMax = 25, }, // Leavanny - // Route 22 - new EncounterSlot{ Species = 279, LevelMin = 40, LevelMax = 45, }, // Peplipper - new EncounterSlot{ Species = 591, LevelMin = 40, LevelMax = 45, }, // Amoonguss - new EncounterSlot{ Species = 619, LevelMin = 50, LevelMax = 55, }, // Mienfoo - // Route 23 - new EncounterSlot{ Species = 055, LevelMin = 50, LevelMax = 55, }, // Golduck - new EncounterSlot{ Species = 207, LevelMin = 50, LevelMax = 55, }, // Gligar - new EncounterSlot{ Species = 335, LevelMin = 50, LevelMax = 55, }, // Zangoose - new EncounterSlot{ Species = 336, LevelMin = 50, LevelMax = 55, }, // Seviper - new EncounterSlot{ Species = 359, LevelMin = 50, LevelMax = 55, }, // Absol - // Floccesy Ranch - new EncounterSlot{ Species = 183, LevelMin = 10, LevelMax = 15, }, // Marill - new EncounterSlot{ Species = 206, LevelMin = 10, LevelMax = 15, }, // Dunsparce - new EncounterSlot{ Species = 507, LevelMin = 10, LevelMax = 15, }, // Herdier - // Funfest Missions - // todo : check the level - new EncounterSlot{Species = 133, LevelMin = 10, LevelMax = 60, }, //Eevee - new EncounterSlot{Species = 134, LevelMin = 10, LevelMax = 60, }, - new EncounterSlot{Species = 135, LevelMin = 10, LevelMax = 60, }, - new EncounterSlot{Species = 136, LevelMin = 10, LevelMax = 60, }, - new EncounterSlot{Species = 196, LevelMin = 10, LevelMax = 60, }, - new EncounterSlot{Species = 197, LevelMin = 10, LevelMax = 60, }, - new EncounterSlot{Species = 470, LevelMin = 10, LevelMax = 60, }, - new EncounterSlot{Species = 471, LevelMin = 10, LevelMax = 60, }, - }; - private static readonly EncounterArea[] SlotsB2_HiddenGrotto = - { - new EncounterArea - { - Location = 143, // HiddenGrotto - Slots = SlotsB2W2_HiddenGrottoEncounterSlots.Concat(new[]{ - new EncounterSlot{Species = 015, LevelMin = 55, LevelMax = 60 }, // Beedrill @ Pinwheel Forest - new EncounterSlot{Species = 434, LevelMin = 10, LevelMax = 60 }, // Stunky from Funfest Missions - }).ToArray(), - } - }; - private static readonly EncounterArea[] SlotsW2_HiddenGrotto = - { - new EncounterArea - { - Location = 143, // HiddenGrotto - Slots = SlotsB2W2_HiddenGrottoEncounterSlots.Concat(new[]{ - new EncounterSlot{Species = 012, LevelMin = 55, LevelMax = 60 }, // Butterfree @ Pinwheel Forest - new EncounterSlot{Species = 431, LevelMin = 10, LevelMax = 60 }, // Glameow from Funfest Missions - }).ToArray(), - } - }; - #endregion - internal static readonly int[] ValidMet_BW = { 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 017, 018, 019, 020, diff --git a/PKHeX.Core/Legality/Tables6.cs b/PKHeX.Core/Legality/Tables6.cs index 7392259ad..36128ec99 100644 --- a/PKHeX.Core/Legality/Tables6.cs +++ b/PKHeX.Core/Legality/Tables6.cs @@ -266,309 +266,7 @@ public static partial class Legal }; internal static readonly int[] CosplayPikachuMoves = { 309, 556, 577, 604, 560, 0 }; internal static readonly int[] WildPokeballs6 = { 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; - internal static readonly string[][] TradeXY = - { - new string[0], // 0 - None - Util.GetStringList("tradexy", "ja"), // 1 - Util.GetStringList("tradexy", "en"), // 2 - Util.GetStringList("tradexy", "fr"), // 3 - Util.GetStringList("tradexy", "it"), // 4 - Util.GetStringList("tradexy", "de"), // 5 - new string[0], // 6 - None - Util.GetStringList("tradexy", "es"), // 7 - Util.GetStringList("tradexy", "ko"), // 8 - }; - internal static readonly string[][] TradeAO = - { - new string[0], // 0 - None - Util.GetStringList("tradeao", "ja"), // 1 - Util.GetStringList("tradeao", "en"), // 2 - Util.GetStringList("tradeao", "fr"), // 3 - Util.GetStringList("tradeao", "it"), // 4 - Util.GetStringList("tradeao", "de"), // 5 - new string[0], // 6 - None - Util.GetStringList("tradeao", "es"), // 7 - Util.GetStringList("tradeao", "ko"), // 8 - }; - #region XY Alt Slots - private static readonly EncounterArea[] SlotsXYAlt = - { - new EncounterArea { - Location = 104, // Victory Road - Slots = new[] - { - // Drops - new EncounterSlot { Species = 075, LevelMin = 57, LevelMax = 57, Form = 0 }, // Graveler - new EncounterSlot { Species = 168, LevelMin = 58, LevelMax = 59, Form = 0 }, // Ariados - new EncounterSlot { Species = 714, LevelMin = 57, LevelMax = 59, Form = 0 }, // Noibat - - // Swoops - new EncounterSlot { Species = 022, LevelMin = 57, LevelMax = 59, Form = 0 }, // Fearow - new EncounterSlot { Species = 227, LevelMin = 57, LevelMax = 59, Form = 0 }, // Skarmory - new EncounterSlot { Species = 635, LevelMin = 59, LevelMax = 59, Form = 0 }, // Hydreigon - },}, - new EncounterArea { - Location = 34, // Route 6 - Slots = new[] - { - // Rustling Bush - new EncounterSlot { Species = 543, LevelMin = 10, LevelMax = 12, Form = 0 }, // Venipede - new EncounterSlot { Species = 531, LevelMin = 10, LevelMax = 12, Form = 0 }, // Audino - },}, - - new EncounterArea { Location = 38, // Route 7 - Slots = new[] - { - // Berry Field - new EncounterSlot { Species = 165, LevelMin = 14, LevelMax = 15, Form = 0 }, // Ledyba - new EncounterSlot { Species = 313, LevelMin = 14, LevelMax = 15, Form = 0 }, // Volbeat - new EncounterSlot { Species = 314, LevelMin = 14, LevelMax = 15, Form = 0 }, // Illumise - new EncounterSlot { Species = 412, LevelMin = 14, LevelMax = 15, Form = 0 }, // Burmy - new EncounterSlot { Species = 415, LevelMin = 14, LevelMax = 15, Form = 0 }, // Combee - new EncounterSlot { Species = 665, LevelMin = 14, LevelMax = 15, Form = 0 }, // Spewpa - },}, - - new EncounterArea { Location = 88, // Route 18 - Slots = new[] - { - // Rustling Bush - new EncounterSlot { Species = 632, LevelMin = 44, LevelMax = 46, Form = 0 }, // Durant - new EncounterSlot { Species = 631, LevelMin = 45, LevelMax = 45, Form = 0 }, // Heatmor - },}, - - new EncounterArea { Location = 132, // Glittering Cave - Slots = new[] - { - // Drops - new EncounterSlot { Species = 527, LevelMin = 15, LevelMax = 17, Form = 0 }, // Woobat - new EncounterSlot { Species = 597, LevelMin = 15, LevelMax = 17, Form = 0 }, // Ferroseed - },}, - - new EncounterArea { Location = 56, // Reflection Cave - Slots = new[] - { - // Drops - new EncounterSlot { Species = 527, LevelMin = 21, LevelMax = 23, Form = 0 }, // Woobat - new EncounterSlot { Species = 597, LevelMin = 21, LevelMax = 23, Form = 0 }, // Ferroseed - },}, - - new EncounterArea { Location = 140, // Terminus Cave - Slots = new[] - { - // Drops - new EncounterSlot { Species = 168, LevelMin = 44, LevelMax = 46, Form = 0 }, // Ariados - new EncounterSlot { Species = 714, LevelMin = 44, LevelMax = 46, Form = 0 }, // Noibat - },}, - }; - #endregion - #region Static Encounter/Gift Tables - private static readonly EncounterStatic[] Encounter_XY = - { - new EncounterStatic { Gift = true, Species = 650, Level = 5, Location = 10, }, // Chespin - new EncounterStatic { Gift = true, Species = 653, Level = 5, Location = 10, }, // Fennekin - new EncounterStatic { Gift = true, Species = 656, Level = 5, Location = 10, }, // Froakie - - new EncounterStatic { Gift = true, Species = 1, Level = 10, Location = 22, }, // Bulbasaur - new EncounterStatic { Gift = true, Species = 4, Level = 10, Location = 22, }, // Charmander - new EncounterStatic { Gift = true, Species = 7, Level = 10, Location = 22, }, // Squirtle - - new EncounterStatic { Gift = true, Species = 138, Level = 20, Location = 44, }, // Omanyte - new EncounterStatic { Gift = true, Species = 140, Level = 20, Location = 44, }, // Kabuto - new EncounterStatic { Gift = true, Species = 142, Level = 20, Location = 44, }, // Aerodactyl - new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 44, }, // Lileep - new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 44, }, // Anorith - new EncounterStatic { Gift = true, Species = 408, Level = 20, Location = 44, }, // Cranidos - new EncounterStatic { Gift = true, Species = 410, Level = 20, Location = 44, }, // Shieldon - new EncounterStatic { Gift = true, Species = 564, Level = 20, Location = 44, }, // Tirtouga - new EncounterStatic { Gift = true, Species = 566, Level = 20, Location = 44, }, // Archen - new EncounterStatic { Gift = true, Species = 696, Level = 20, Location = 44, }, // Tyrunt - new EncounterStatic { Gift = true, Species = 698, Level = 20, Location = 44, }, // Amaura - - new EncounterStatic { Species = 448, Level = 32, Location = 60, Ability = 1, Nature = Nature.Hasty, Gender = 0, IVs = new[] {6, 25, 16, 31, 25, 19}, Gift = true, Shiny = false }, // Lucario - new EncounterStatic { Species = 131, Level = 30, Location = 62, Nature = Nature.Docile, IVs = new[] {31, 20, 20, 20, 20, 20}, Gift = true }, // Lapras - - new EncounterStatic { Species = 143, Level = 15, Location = 38 }, // Snorlax - new EncounterStatic { Species = 568, Level = 35, Location = 142 }, // Trubbish - new EncounterStatic { Species = 569, Level = 36, Location = 142 }, // Garbodor - new EncounterStatic { Species = 569, Level = 37, Location = 142 }, // Garbodor - new EncounterStatic { Species = 569, Level = 38, Location = 142 }, // Garbodor - new EncounterStatic { Species = 479, Level = 38, Location = 142 }, // Rotom - - new EncounterStatic { Species = 569, Level = 46, Location = 98 }, // Garbodor - new EncounterStatic { Species = 569, Level = 47, Location = 98 }, // Garbodor - new EncounterStatic { Species = 569, Level = 48, Location = 98 }, // Garbodor - new EncounterStatic { Species = 569, Level = 49, Location = 98 }, // Garbodor - new EncounterStatic { Species = 569, Level = 50, Location = 98 }, // Garbodor - new EncounterStatic { Species = 354, Level = 46, Location = 98 }, // Banette - new EncounterStatic { Species = 354, Level = 47, Location = 98 }, // Banette - new EncounterStatic { Species = 354, Level = 48, Location = 98 }, // Banette - new EncounterStatic { Species = 354, Level = 49, Location = 98 }, // Banette - new EncounterStatic { Species = 354, Level = 50, Location = 98 }, // Banette - - new EncounterStatic { Species = 716, Level = 50, Location = 138, Version = GameVersion.X, Shiny = false, IV3 = true }, // Xerneas - new EncounterStatic { Species = 717, Level = 50, Location = 138, Version = GameVersion.Y, Shiny = false, IV3 = true }, // Yveltal - new EncounterStatic { Species = 718, Level = 70, Location = 140, Shiny = false, IV3 = true }, // Zygarde - - new EncounterStatic { Species = 150, Level = 70, Location = 168, Shiny = false, IV3 = true }, // Mewtwo - - new EncounterStatic { Species = 144, Level = 70, Location = 146, Shiny = false, IV3 = true }, // Articuno - new EncounterStatic { Species = 145, Level = 70, Location = 146, Shiny = false, IV3 = true }, // Zapdos - new EncounterStatic { Species = 146, Level = 70, Location = 146, Shiny = false, IV3 = true }, // Moltres - }; - private static readonly EncounterStatic[] Encounter_AO = - { - new EncounterStatic { Gift = true, Species = 252, Level = 5, Location = 204, }, // Treeko - new EncounterStatic { Gift = true, Species = 255, Level = 5, Location = 204, }, // Torchic - new EncounterStatic { Gift = true, Species = 258, Level = 5, Location = 204, }, // Mudkip - - new EncounterStatic { Gift = true, Species = 152, Level = 5, Location = 204, }, // Chikorita - new EncounterStatic { Gift = true, Species = 155, Level = 5, Location = 204, }, // Cyndaquil - new EncounterStatic { Gift = true, Species = 158, Level = 5, Location = 204, }, // Totodile - - new EncounterStatic { Gift = true, Species = 387, Level = 5, Location = 204, }, // Turtwig - new EncounterStatic { Gift = true, Species = 390, Level = 5, Location = 204, }, // Chimchar - new EncounterStatic { Gift = true, Species = 393, Level = 5, Location = 204, }, // Piplup - - new EncounterStatic { Gift = true, Species = 495, Level = 5, Location = 204, }, // Snivy - new EncounterStatic { Gift = true, Species = 498, Level = 5, Location = 204, }, // Tepig - new EncounterStatic { Gift = true, Species = 501, Level = 5, Location = 204, }, // Oshawott - - // Fossil - new EncounterStatic { Gift = true, Species = 138, Level = 20, Location = 190, }, // Omanyte - new EncounterStatic { Gift = true, Species = 140, Level = 20, Location = 190, }, // Kabuto - new EncounterStatic { Gift = true, Species = 142, Level = 20, Location = 190, }, // Aerodactyl - new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 190, }, // Lileep - new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 190, }, // Anorith - new EncounterStatic { Gift = true, Species = 408, Level = 20, Location = 190, }, // Cranidos - new EncounterStatic { Gift = true, Species = 410, Level = 20, Location = 190, }, // Shieldon - new EncounterStatic { Gift = true, Species = 564, Level = 20, Location = 190, }, // Tirtouga - new EncounterStatic { Gift = true, Species = 566, Level = 20, Location = 190, }, // Archen - new EncounterStatic { Gift = true, Species = 696, Level = 20, Location = 190, }, // Tyrunt - new EncounterStatic { Gift = true, Species = 698, Level = 20, Location = 190, }, // Amaura - - new EncounterStatic { Species = 25, Level = 20, Location = 178, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu - new EncounterStatic { Species = 25, Level = 20, Location = 180, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu - new EncounterStatic { Species = 25, Level = 20, Location = 186, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu - new EncounterStatic { Species = 25, Level = 20, Location = 194, Gender = 1, Ability = 4, IVs = new[] {-1, -1, -1, 31, -1, -1}, Contest = new[] {70,70,70,70,70,0}, Gift = true, Shiny = false, SkipFormCheck = true }, // Pikachu - - new EncounterStatic { Species = 360, Level = 1, EggLocation = 60004, Ability = 1, Gift = true, EggCycles = 70 }, // Wynaut - new EncounterStatic { Species = 175, Level = 1, EggLocation = 60004, Ability = 1, Gift = true, EggCycles = 70 }, // Togepi - new EncounterStatic { Species = 374, Level = 1, Location = 196, Ability = 1, IVs = new[] {-1, -1, 31, -1, -1, 31}, Gift = true }, // Beldum - - new EncounterStatic { Species = 351, Level = 30, Location = 240, Gender = 1, Ability = 1, Nature = Nature.Lax, IVs = new[] {-1, -1, -1, -1, 31, -1}, Contest = new[] {0,100,0,0,0,0}, Gift = true }, // Castform - new EncounterStatic { Species = 319, Level = 40, Location = 318, Gender = 1, Ability = 1, Nature = Nature.Adamant, Gift = true }, // Sharpedo - new EncounterStatic { Species = 323, Level = 40, Location = 318, Gender = 1, Ability = 1, Nature = Nature.Quiet, Gift = true }, // Camerupt - - new EncounterStatic { Species = 380, Level = 30, Location = 320, Version = GameVersion.AS, Ability = 1, Gift = true, IV3 = true }, // Latias - new EncounterStatic { Species = 381, Level = 30, Location = 320, Version = GameVersion.OR, Ability = 1, Gift = true, IV3 = true }, // Latios - - new EncounterStatic { Species = 382, Level = 45, Location = 296, Version = GameVersion.AS, Shiny = false, IV3 = true }, // Kyogre - new EncounterStatic { Species = 383, Level = 45, Location = 296, Version = GameVersion.OR, Shiny = false, IV3 = true }, // Groudon - new EncounterStatic { Species = 384, Level = 70, Location = 316, Shiny = false, IV3 = true }, // Rayquaza - new EncounterStatic { Species = 386, Level = 80, Location = 316, Shiny = false, IV3 = true, Fateful = true }, // Deoxys - - new EncounterStatic { Species = 377, Level = 40, Location = 278, IV3 = true }, // Regirock - new EncounterStatic { Species = 378, Level = 40, Location = 306, IV3 = true }, // Regice - new EncounterStatic { Species = 379, Level = 40, Location = 308, IV3 = true }, // Registeel - new EncounterStatic { Species = 486, Level = 50, Location = 306, IV3 = true }, // Regigigas - - new EncounterStatic { Species = 249, Level = 50, Location = 304, Version = GameVersion.AS, IV3 = true }, // Lugia - new EncounterStatic { Species = 250, Level = 50, Location = 304, Version = GameVersion.OR, IV3 = true }, // Ho-oh - - new EncounterStatic { Species = 483, Level = 50, Location = 348, Version = GameVersion.AS, IV3 = true }, // Dialga - new EncounterStatic { Species = 484, Level = 50, Location = 348, Version = GameVersion.OR, IV3 = true }, // Palkia - - new EncounterStatic { Species = 644, Level = 50, Location = 340, Version = GameVersion.AS, IV3 = true }, // Zekrom - new EncounterStatic { Species = 643, Level = 50, Location = 340, Version = GameVersion.OR, IV3 = true }, // Reshiram - - new EncounterStatic { Species = 642, Level = 50, Location = 348, Version = GameVersion.AS, IV3 = true }, // Thundurus - new EncounterStatic { Species = 641, Level = 50, Location = 348, Version = GameVersion.OR, IV3 = true }, // Tornadus - - new EncounterStatic { Species = 485, Level = 50, Location = 312, IV3 = true }, // Heatran - new EncounterStatic { Species = 487, Level = 50, Location = 348, IV3 = true }, // Giratina - new EncounterStatic { Species = 488, Level = 50, Location = 344, IV3 = true }, // Cresselia - new EncounterStatic { Species = 645, Level = 50, Location = 348, IV3 = true }, // Landorus - new EncounterStatic { Species = 646, Level = 50, Location = 342, IV3 = true }, // Kyurem - - new EncounterStatic { Species = 243, Level = 50, Location = 334, IV3 = true }, // Raikou - new EncounterStatic { Species = 244, Level = 50, Location = 334, IV3 = true }, // Entei - new EncounterStatic { Species = 245, Level = 50, Location = 334, IV3 = true }, // Suicune - - new EncounterStatic { Species = 480, Level = 50, Location = 338, IV3 = true }, // Uxie - new EncounterStatic { Species = 481, Level = 50, Location = 338, IV3 = true }, // Mesprit - new EncounterStatic { Species = 482, Level = 50, Location = 338, IV3 = true }, // Azelf - - new EncounterStatic { Species = 638, Level = 50, Location = 336, IV3 = true }, // Cobalion - new EncounterStatic { Species = 639, Level = 50, Location = 336, IV3 = true }, // Terrakion - new EncounterStatic { Species = 640, Level = 50, Location = 336, IV3 = true }, // Virizion - - new EncounterStatic { Species = 352, Level = 30, Location = 240 }, // Kecleon @ Route 119 - new EncounterStatic { Species = 352, Level = 30, Location = 242 }, // Kecleon @ Route 120 - new EncounterStatic { Species = 352, Level = 40, Location = 176, Gender = 1, }, // Kecleon @ Lavaridge - new EncounterStatic { Species = 352, Level = 45, Location = 196, Ability = 4, }, // Kecleon @ Mossdeep City - - new EncounterStatic { Species = 381, Level = 30, Location = 320, Version = GameVersion.AS, IV3 = true }, // Latios - new EncounterStatic { Species = 380, Level = 30, Location = 320, Version = GameVersion.OR, IV3 = true }, // Latias - - new EncounterStatic { Species = 101, Level = 40, Location = 292, Version = GameVersion.AS }, // Electrode - new EncounterStatic { Species = 101, Level = 40, Location = 314, Version = GameVersion.OR }, // Electrode - - new EncounterStatic { Species = 100, Level = 20, Location = 302 }, // Voltorb @ Route 119 - new EncounterStatic { Species = 442, Level = 50, Location = 304 }, // Spiritomb @ Route 120 - - // Soaring in the Sky - new EncounterStatic { Species = 198, Level = 45, Location = 348 }, // Murkrow - new EncounterStatic { Species = 276, Level = 40, Location = 348 }, // Taillow - new EncounterStatic { Species = 278, Level = 40, Location = 348 }, // Wingull - new EncounterStatic { Species = 279, Level = 40, Location = 348 }, // Pelipper - new EncounterStatic { Species = 333, Level = 40, Location = 348 }, // Swablu - new EncounterStatic { Species = 425, Level = 45, Location = 348 }, // Drifloon - new EncounterStatic { Species = 628, Level = 45, Location = 348 }, // Braviary - }; - #endregion - #region Trade Tables - internal static readonly EncounterTrade[] TradeGift_XY = - { - new EncounterTrade { Species = 129, Level = 5, Ability = 1, Gender = 0, TID = 44285, Nature = Nature.Adamant, }, // Magikarp - new EncounterTrade { Species = 133, Level = 5, Ability = 1, Gender = 1, TID = 29294, Nature = Nature.Docile, }, // Eevee - - new EncounterTrade { Species = 83, Level = 10, Ability = 1, Gender = 0, TID = 00185, Nature = Nature.Jolly, IVs = new[] {-1, -1, -1, 31, -1, -1}, }, // Farfetch'd - new EncounterTrade { Species = 208, Level = 20, Ability = 1, Gender = 1, TID = 19250, Nature = Nature.Impish, IVs = new[] {-1, -1, 31, -1, -1, -1}, }, // Steelix - new EncounterTrade { Species = 625, Level = 50, Ability = 1, Gender = 0, TID = 03447, Nature = Nature.Adamant, IVs = new[] {-1, 31, -1, -1, -1, -1}, }, // Bisharp - - new EncounterTrade { Species = 656, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Jolly, IVs = new[] {20, 20, 20, 31, 20, 20}, }, // Froakie - new EncounterTrade { Species = 650, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Adamant, IVs = new[] {20, 31, 20, 20, 20, 20}, }, // Chespin - new EncounterTrade { Species = 653, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Modest, IVs = new[] {20, 20, 20, 20, 31, 20}, }, // Fennekin - - new EncounterTrade { Species = 280, Level = 5, Ability = 1, Gender = 1, TID = 37110, Nature = Nature.Modest, IVs = new[] {20, 20, 20, 31, 31, 20}, }, // Ralts - }; - internal static readonly EncounterTrade[] TradeGift_AO = - { - new EncounterTrade { Species = 296, Level = 9, Ability = 2, Gender = 0, TID = 30724, Nature = Nature.Brave, IVs = new[] {-1, 31, -1, -1, -1, -1}, }, // Makuhita - new EncounterTrade { Species = 300, Level = 30, Ability = 1, Gender = 1, TID = 03239, Nature = Nature.Naughty, IVs = new[] {-1, -1, -1, 31, -1, -1}, }, // Skitty - new EncounterTrade { Species = 222, Level = 50, Ability = 4, Gender = 1, TID = 00325, Nature = Nature.Calm, IVs = new[] {31, -1, -1, -1, -1, 31}, }, // Corsola - }; - #endregion - #region Pokémon Link Gifts - - internal static readonly EncounterLink[] LinkGifts6 = - { - new EncounterLink { Species = 154, Level = 50, Ability = 4, XY = true, ORAS = true }, // Meganium - new EncounterLink { Species = 157, Level = 50, Ability = 4, XY = true, ORAS = true }, // Typhlosion - new EncounterLink { Species = 160, Level = 50, Ability = 4, XY = true, ORAS = true }, // Feraligatr - - new EncounterLink { Species = 251, Level = 10, Ability = 1, RelearnMoves = new[] {610, 0, 0, 0}, Ball = 11, XY = true }, // Celebi - - new EncounterLink { Species = 377, Level = 50, Ability = 4, RelearnMoves = new[] {153, 8, 444, 359}, XY = true, ORAS = true }, // Regirock - new EncounterLink { Species = 378, Level = 50, Ability = 4, RelearnMoves = new[] {85, 133, 58, 258}, XY = true, ORAS = true }, // Regice - new EncounterLink { Species = 379, Level = 50, Ability = 4, RelearnMoves = new[] {442, 157, 356, 334}, XY = true, ORAS = true }, // Registeel - - new EncounterLink { Species = 208, Level = 40, Ability = 1, RibbonClassic = false, ORAS = true, OT = false }, // Steelix - new EncounterLink { Species = 362, Level = 40, Ability = 1, RibbonClassic = false, ORAS = true, OT = false }, // Glalie - }; - - #endregion internal static readonly int[] Ban_NoHidden6 = { //Not avaliable at Friend Safari or Horde Encounter diff --git a/PKHeX.Core/Legality/Tables7.cs b/PKHeX.Core/Legality/Tables7.cs index acc51b6e6..fd9bb8bde 100644 --- a/PKHeX.Core/Legality/Tables7.cs +++ b/PKHeX.Core/Legality/Tables7.cs @@ -103,165 +103,6 @@ public static partial class Legal }; internal static readonly ushort[] HeldItems_SM = new ushort[1].Concat(Pouch_Items_SM).Concat(Pouch_Berries_SM).Concat(Pouch_Medicine_SM).Concat(Pouch_ZCrystalHeld_SM).ToArray(); - #region Encounters - private static readonly EncounterStatic[] Encounter_SM = // @ a\1\5\5 - { - // Gifts - 0.bin - new EncounterStatic { Gift = true, Species = 722, Level = 5, Location = 24, }, // Rowlet - new EncounterStatic { Gift = true, Species = 725, Level = 5, Location = 24, }, // Litten - new EncounterStatic { Gift = true, Species = 728, Level = 5, Location = 24, }, // Popplio - new EncounterStatic { Gift = true, Species = 138, Level = 15, Location = 58, }, // Omanyte - new EncounterStatic { Gift = true, Species = 140, Level = 15, Location = 58, }, // Kabuto - new EncounterStatic { Gift = true, Species = 142, Level = 15, Location = 58, }, // Aerodactyl - new EncounterStatic { Gift = true, Species = 345, Level = 15, Location = 58, }, // Lileep - new EncounterStatic { Gift = true, Species = 347, Level = 15, Location = 58, }, // Anorith - new EncounterStatic { Gift = true, Species = 408, Level = 15, Location = 58, }, // Cranidos - new EncounterStatic { Gift = true, Species = 410, Level = 15, Location = 58, }, // Shieldon - new EncounterStatic { Gift = true, Species = 564, Level = 15, Location = 58, }, // Tirtouga - new EncounterStatic { Gift = true, Species = 566, Level = 15, Location = 58, }, // Archen - new EncounterStatic { Gift = true, Species = 696, Level = 15, Location = 58, }, // Tyrunt - new EncounterStatic { Gift = true, Species = 698, Level = 15, Location = 58, }, // Amaura - new EncounterStatic { Gift = true, Species = 133, Level = 1, EggLocation = 60002, }, // Eevee @ Nursery helpers - new EncounterStatic { Gift = true, Species = 137, Level = 30, Location = 116, }, // Porygon @ Route 15 - new EncounterStatic { Gift = true, Species = 772, Level = 40, Location = 188, IV3 = true, }, // Type: Null - new EncounterStatic { Gift = true, Species = 789, Level = 5, Location = 142, Shiny = false, IV3 = true, Version = GameVersion.SN}, // Cosmog 00 FF - new EncounterStatic { Gift = true, Species = 789, Level = 5, Location = 144, Shiny = false, IV3 = true, Version = GameVersion.MN}, // Cosmog 00 FF - new EncounterStatic { Gift = true, Species = 142, Level = 40, Location = 172, }, // Aerodactyl @ Seafolk Village - - new EncounterStatic { Gift = true, Species = 718, Form = 0, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - new EncounterStatic { Gift = true, Species = 718, Form = 1, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - new EncounterStatic { Gift = true, Species = 718, Form = 2, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - new EncounterStatic { Gift = true, Species = 718, Form = 3, Level = 30, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - - new EncounterStatic { Gift = true, Species = 718, Form = 0, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - new EncounterStatic { Gift = true, Species = 718, Form = 1, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - new EncounterStatic { Gift = true, Species = 718, Form = 2, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - new EncounterStatic { Gift = true, Species = 718, Form = 3, Level = 50, Shiny = false, Location = 118, IV3 = true, }, // Zygarde - - new EncounterStatic // Magearna (Bottle Cap) 00 FF - { - Gift = true, Species = 801, Level = 50, Location = 40001, Shiny = false, IV3 = true, - Fateful = true, RibbonWishing = true, Relearn = new [] {705, 430, 381, 270}, Ball = 0x10, // Cherish - }, - - // Static Encounters - 1.bin - new EncounterStatic { Species = 791, Level = 55, Relearn = new[]{713, 322, 242, 428}, Shiny = false, Ability = 1, Location = 176, IV3 = true, Version = GameVersion.SN }, // Solgaleo - new EncounterStatic { Species = 792, Level = 55, Relearn = new[]{714, 322, 539, 247}, Shiny = false, Ability = 1, Location = 178, IV3 = true, Version = GameVersion.MN }, // Lunala - - new EncounterStatic { Species = 746, Level = 17, Shiny = false, Ability = 1, Location = 86, }, // Wishiwashi - new EncounterStatic { Species = 746, Level = 18, Shiny = false, Ability = 1, Location = 86, }, // Wishiwashi - - new EncounterStatic { Species = 793, Level = 55, Shiny = false, Ability = 1, Location = 082, IV3 = true, }, // Nihilego @ Wela Volcano Park - new EncounterStatic { Species = 793, Level = 55, Shiny = false, Ability = 1, Location = 100, IV3 = true, }, // Nihilego @ Diglett’s Tunnel - new EncounterStatic { Species = 794, Level = 65, Shiny = false, Ability = 1, Location = 040, IV3 = true, Version = GameVersion.SN }, // Buzzwole @ Melemele Meadow - new EncounterStatic { Species = 795, Level = 60, Shiny = false, Ability = 1, Location = 046, IV3 = true, Version = GameVersion.MN }, // Pheromosa @ Verdant Cavern (Trial Site) - new EncounterStatic { Species = 796, Level = 65, Shiny = false, Ability = 1, Location = 090, IV3 = true, }, // Xurkitree @ Lush Jungle - new EncounterStatic { Species = 796, Level = 65, Shiny = false, Ability = 1, Location = 076, IV3 = true, }, // Xurkitree @ Memorial Hill - new EncounterStatic { Species = 798, Level = 60, Shiny = false, Ability = 1, Location = 134, IV3 = true, Version = GameVersion.SN }, // Kartana @ Malie Garden - new EncounterStatic { Species = 798, Level = 60, Shiny = false, Ability = 1, Location = 120, IV3 = true, Version = GameVersion.SN }, // Kartana @ Route 17 - new EncounterStatic { Species = 797, Level = 65, Shiny = false, Ability = 1, Location = 124, IV3 = true, Version = GameVersion.MN }, // Celesteela @ Haina Desert - new EncounterStatic { Species = 797, Level = 65, Shiny = false, Ability = 1, Location = 134, IV3 = true, Version = GameVersion.MN }, // Celesteela @ Malie Garden - new EncounterStatic { Species = 799, Level = 70, Shiny = false, Ability = 1, Location = 182, IV3 = true, }, // Guzzlord @ Resolution Cave - new EncounterStatic { Species = 800, Level = 75, Shiny = false, Ability = 1, Location = 036, IV3 = true, }, // Necrozma @ Ten Carat Hill (Farthest Hollow) - - // QR Scan: Su/M/Tu/W/Th/F/Sa - // Melemele Island - new EncounterStatic { Species = 155, Level = 12, Relearn = new[]{024, 052, 108, 043}, Location = 010, }, // Cyndaquil @ Route 3 - new EncounterStatic { Species = 158, Level = 12, Relearn = new[]{232, 099, 055, 043}, Location = 042, }, // Totodile @ Seaward Cave - new EncounterStatic { Species = 633, Level = 13, Relearn = new[]{372, 029, 044, 116}, Location = 034, }, // Deino @ Ten Carat Hill - new EncounterStatic { Species = 116, Level = 18, Relearn = new[]{225, 239, 055, 043}, Location = 014, }, // Horsea @ Kala'e Bay - new EncounterStatic { Species = 599, Level = 08, Relearn = new[]{268, 011, 000, 000}, Location = 020, }, // Klink @ Hau'oli City - new EncounterStatic { Species = 152, Level = 10, Relearn = new[]{073, 077, 075, 045}, Location = 012, }, // Chikorita @ Route 2 - new EncounterStatic { Species = 607, Level = 10, Relearn = new[]{051, 109, 083, 123}, Location = 038, }, // Litwick @ Hau'oli Cemetery - - // Akala Island - new EncounterStatic { Species = 574, Level = 17, Relearn = new[]{399, 060, 003, 313}, Location = 054, }, // Gothita @ Route 6 - new EncounterStatic { Species = 363, Level = 19, Relearn = new[]{392, 362, 301, 227}, Location = 056, }, // Spheal @ Route 7 - new EncounterStatic { Species = 404, Level = 20, Relearn = new[]{598, 044, 209, 268}, Location = 058, }, // Luxio @ Route 8 - new EncounterStatic { Species = 679, Level = 23, Relearn = new[]{194, 332, 425, 475}, Location = 094, }, // Honedge @ Akala Outskirts - new EncounterStatic { Species = 543, Level = 14, Relearn = new[]{390, 228, 103, 040}, Location = 050, }, // Venipede @ Route 4 - new EncounterStatic { Species = 069, Level = 16, Relearn = new[]{491, 077, 079, 035}, Location = 052, }, // Bellsprout @ Route 5 - new EncounterStatic { Species = 183, Level = 17, Relearn = new[]{453, 270, 061, 205}, Location = 086, }, // Marill @ Brooklet Hill - - // Ula'ula Island - new EncounterStatic { Species = 111, Level = 30, Relearn = new[]{130, 350, 498, 523}, Location = 138, }, // Rhyhorn @ Blush Mountain - new EncounterStatic { Species = 220, Level = 31, Relearn = new[]{573, 036, 420, 196}, Location = 114, }, // Swinub @ Tapu Village - new EncounterStatic { Species = 578, Level = 33, Relearn = new[]{101, 248, 283, 473}, Location = 118, }, // Duosion @ Route 16 - new EncounterStatic { Species = 315, Level = 34, Relearn = new[]{437, 275, 230, 390}, Location = 128, }, // Roselia @ Ula'ula Meadow - new EncounterStatic { Species = 397, Level = 27, Relearn = new[]{355, 018, 283, 104}, Location = 106, }, // Staravia @ Route 10 - new EncounterStatic { Species = 288, Level = 27, Relearn = new[]{359, 498, 163, 203}, Location = 108, }, // Vigoroth @ Route 11 - new EncounterStatic { Species = 610, Level = 28, Relearn = new[]{231, 337, 206, 163}, Location = 136, }, // Axew @ Mount Hokulani - - // Poni Island - new EncounterStatic { Species = 604, Level = 55, Relearn = new[]{435, 051, 029, 306}, Location = 164, }, // Eelektross @ Poni Grove - new EncounterStatic { Species = 534, Level = 57, Relearn = new[]{409, 276, 264, 444}, Location = 166, }, // Conkeldurr @ Poni Plains - new EncounterStatic { Species = 468, Level = 59, Relearn = new[]{248, 403, 396, 245}, Location = 170, }, // Togekiss @ Poni Gauntlet - new EncounterStatic { Species = 542, Level = 57, Relearn = new[]{382, 437, 014, 494}, Location = 156, }, // Leavanny @ Poni Meadow - new EncounterStatic { Species = 497, Level = 43, Relearn = new[]{137, 489, 348, 021}, Location = 184, }, // Serperior @ Exeggutor Island - new EncounterStatic { Species = 503, Level = 43, Relearn = new[]{362, 227, 453, 279}, Location = 158, }, // Samurott @ Poni Wilds - new EncounterStatic { Species = 500, Level = 43, Relearn = new[]{276, 053, 372, 535}, Location = 160, }, // Emboar @ Ancient Poni Path - - new EncounterStatic { Species = 785, Level = 60, Shiny = false, Ability = 1, Location = 030, IV3 = true, }, // Tapu Koko - new EncounterStatic { Species = 786, Level = 60, Shiny = false, Ability = 1, Location = 092, IV3 = true, }, // Tapu Lele - new EncounterStatic { Species = 787, Level = 60, Shiny = false, Ability = 1, Location = 140, IV3 = true, }, // Tapu Bulu - new EncounterStatic { Species = 788, Level = 60, Shiny = false, Ability = 1, Location = 180, IV3 = true, }, // Tapu Fini - - new EncounterStatic { Species = 103, Form = 1, Level = 40, Ability = 1, Location = 184, }, // Exeggutor-1 @ Exeggutor Island - }; - - private static readonly EncounterArea[] Encounter_Pelago_SM = - { - new EncounterArea - { - Location = 30016, // Poké Pelago - Slots = new[] - { - new EncounterSlot {Species = 021, LevelMin = 01, LevelMax = 55}, // Spearow - new EncounterSlot {Species = 041, LevelMin = 01, LevelMax = 55}, // Zubat - new EncounterSlot {Species = 090, LevelMin = 01, LevelMax = 55}, // Shellder - new EncounterSlot {Species = 278, LevelMin = 01, LevelMax = 55}, // Wingull - new EncounterSlot {Species = 731, LevelMin = 01, LevelMax = 55}, // Pikipek - - new EncounterSlot {Species = 064, LevelMin = 11, LevelMax = 55}, // Kadabra - new EncounterSlot {Species = 081, LevelMin = 11, LevelMax = 55}, // Magnemite - new EncounterSlot {Species = 092, LevelMin = 11, LevelMax = 55}, // Gastly - new EncounterSlot {Species = 198, LevelMin = 11, LevelMax = 55}, // Murkrow - new EncounterSlot {Species = 426, LevelMin = 11, LevelMax = 55}, // Drifblim - new EncounterSlot {Species = 703, LevelMin = 11, LevelMax = 55}, // Carbink - - new EncounterSlot {Species = 060, LevelMin = 21, LevelMax = 55}, // Poliwag - new EncounterSlot {Species = 120, LevelMin = 21, LevelMax = 55}, // Staryu - new EncounterSlot {Species = 127, LevelMin = 21, LevelMax = 55}, // Pinsir - new EncounterSlot {Species = 661, LevelMin = 21, LevelMax = 55}, // Fletchling - new EncounterSlot {Species = 709, LevelMin = 21, LevelMax = 55}, // Trevenant - new EncounterSlot {Species = 771, LevelMin = 21, LevelMax = 55}, // Pyukumuku - - new EncounterSlot {Species = 227, LevelMin = 37, LevelMax = 55}, // Skarmory - new EncounterSlot {Species = 375, LevelMin = 37, LevelMax = 55}, // Metang - new EncounterSlot {Species = 707, LevelMin = 37, LevelMax = 55}, // Klefki - - new EncounterSlot {Species = 123, LevelMin = 49, LevelMax = 55}, // Scyther - new EncounterSlot {Species = 131, LevelMin = 49, LevelMax = 55}, // Lapras - new EncounterSlot {Species = 429, LevelMin = 49, LevelMax = 55}, // Mismagius - new EncounterSlot {Species = 587, LevelMin = 49, LevelMax = 55}, // Emolga - }, - } - }; - private static readonly EncounterArea[] Encounter_Pelago_SN = { new EncounterArea { Location = 30016, Slots = new[] { new EncounterSlot {Species = 627, LevelMin = 1, LevelMax = 55}, /* Rufflet SUN */ } } }; - private static readonly EncounterArea[] Encounter_Pelago_MN = { new EncounterArea { Location = 30016, Slots = new[] { new EncounterSlot {Species = 629, LevelMin = 1, LevelMax = 55}, /* Vullaby MOON */ } } }; - internal static readonly EncounterTrade[] TradeGift_SM = // @ a\1\5\5 - { - // Trades - 4.bin - new EncounterTrade { Species = 066, Form = 0, Level = 09, Ability = 2, TID = 00410, SID = 00000, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 1, Gender = 0, Nature = Nature.Brave, }, // Machop - new EncounterTrade { Species = 761, Form = 0, Level = 16, Ability = 1, TID = 20683, SID = 00009, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 0, Gender = 1, Nature = Nature.Adamant, }, // Bounsweet - new EncounterTrade { Species = 061, Form = 0, Level = 22, Ability = 2, TID = 01092, SID = 00009, IVs = new[] {31,-1,-1,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Naughty, }, // Poliwhirl - new EncounterTrade { Species = 440, Form = 0, Level = 27, Ability = 2, TID = 10913, SID = 00000, IVs = new[] {-1,-1,-1,-1,31,-1}, OTGender = 1, Gender = 1, Nature = Nature.Calm, }, // Happiny - new EncounterTrade { Species = 075, Form = 1, Level = 32, Ability = 1, TID = 20778, SID = 00009, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Impish, EvolveOnTrade = true }, // Graveler-1 - new EncounterTrade { Species = 762, Form = 0, Level = 43, Ability = 1, TID = 20679, SID = 00009, IVs = new[] {-1,-1,-1,-1,-1,31}, OTGender = 1, Gender = 1, Nature = Nature.Careful, }, // Steenee - new EncounterTrade { Species = 663, Form = 0, Level = 59, Ability = 4, TID = 56734, SID = 00008, IVs = new[] {-1,-1,-1,31,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Jolly, }, // Talonflame - }; - #endregion - private static readonly int[] WildPokeballs7 = { 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, // Johto Balls diff --git a/PKHeX.Core/PKHeX.Core.csproj b/PKHeX.Core/PKHeX.Core.csproj index 53768f62d..446ec845d 100644 --- a/PKHeX.Core/PKHeX.Core.csproj +++ b/PKHeX.Core/PKHeX.Core.csproj @@ -52,8 +52,8 @@ - - + + @@ -149,8 +149,8 @@ - - + + diff --git a/PKHeX.Core/Resources/byte/encunters_hb_hg.pkl b/PKHeX.Core/Resources/byte/encounter_hb_hg.pkl similarity index 100% rename from PKHeX.Core/Resources/byte/encunters_hb_hg.pkl rename to PKHeX.Core/Resources/byte/encounter_hb_hg.pkl diff --git a/PKHeX.Core/Resources/byte/encunters_hb_ss.pkl b/PKHeX.Core/Resources/byte/encounter_hb_ss.pkl similarity index 100% rename from PKHeX.Core/Resources/byte/encunters_hb_ss.pkl rename to PKHeX.Core/Resources/byte/encounter_hb_ss.pkl