Misc changes

Fixes #954
Incorporates changes from #955
TMHM info was loaded to Emerald personal table

Static encounter table reformatted to separate arrays which are then
combined later (reduces indentation, possible to further separate into
other tables if need be).
This commit is contained in:
Kurt 2017-03-20 15:50:23 -07:00
parent d6aa9ec059
commit 24ef01b5c1
2 changed files with 138 additions and 146 deletions

View File

@ -174,7 +174,6 @@ private static void MarkG3Slots_FRLG(ref EncounterArea[] Areas)
new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }).
ToArray();
}
private static void MarkG3Slots_RSE(ref EncounterArea[] Areas)
{
// Group areas by location id, the raw data have areas with different slots but the same location id
@ -183,7 +182,6 @@ private static void MarkG3Slots_RSE(ref EncounterArea[] Areas)
new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }).
ToArray();
}
private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[] SwarmAreas)
{
// Swarm slots replace slots 0 and 1 from encounters data
@ -194,13 +192,13 @@ private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[]
foreach(EncounterSlot SwarmSlot in SwarmSlots)
{
var OutputSlots = new List<EncounterSlot>();
var ReplacedSlots = Area.Slots.Where(s => s.Type == SwarmSlot.Type);
var ReplacedSlots = Area.Slots.Where(s => s.Type == SwarmSlot.Type).ToArray();
var SwarmOutputSlot0 = ReplacedSlots.First().Clone();
var SwarmOutputSlot0 = ReplacedSlots[0].Clone();
SwarmOutputSlot0.Species = SwarmSlot.Species;
OutputSlots.Add(SwarmOutputSlot0);
var SwarmOutputSlot1 = ReplacedSlots.Skip(1).First().Clone();
var SwarmOutputSlot1 = ReplacedSlots[1].Clone();
SwarmOutputSlot1.Species = SwarmSlot.Species;
OutputSlots.Add(SwarmOutputSlot1);
@ -210,14 +208,14 @@ private static void MarkG4SwarmSlots(ref EncounterArea[] Areas, EncounterArea[]
Area.Slots = Area.Slots.Where(a => a.Species > 0).ToArray();
}
}
private static void MarkG4Slots(ref EncounterArea[] Areas)
{
// Group areas by location id, the raw data have areas with different slots but the same location id
Areas = Areas.GroupBy(a => a.Location).
Select(a =>
new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }).
ToArray();
Areas = Areas.GroupBy(a => a.Location).Select(a => new EncounterArea
{
Location = a.First().Location,
Slots = a.SelectMany(m => m.Slots).ToArray()
}).ToArray();
}
private static void MarkG5Slots(ref EncounterArea[] Areas)
{
@ -250,10 +248,11 @@ private static void MarkG5Slots(ref EncounterArea[] Areas)
area.Slots = area.Slots.Where(slot => slot.Species != 0).ToArray();
}
// Group areas by location id, the raw data have areas with different slots but the same location id
Areas = Areas.GroupBy(a => a.Location).
Select(a =>
new EncounterArea { Location = a.First().Location, Slots = a.SelectMany(m => m.Slots).ToArray() }).
ToArray();
Areas = Areas.GroupBy(a => a.Location).Select(a => new EncounterArea
{
Location = a.First().Location,
Slots = a.SelectMany(m => m.Slots).ToArray()
}).ToArray();
}
private static void MarkG6XYSlots(ref EncounterArea[] Areas)
{
@ -362,7 +361,7 @@ private static EncounterArea[] getTables2()
// Update Personal Entries with TM/Tutor Data
var TMHM = Data.unpackMini(Resources.hmtm_g3, "g3");
for (int i = 0; i <= MaxSpeciesID_3; i++)
PersonalTable.RS[i].AddTMHM(TMHM[i]);
PersonalTable.E[i].AddTMHM(TMHM[i]);
// Tutors g3 contains tutor compatiblity data extracted from emerald,
// fire red and leaf green tutors data is a subset of emerald data
var tutors = Data.unpackMini(Resources.tutors_g3, "g3");
@ -2033,7 +2032,7 @@ private static IEnumerable<int> getMoves(PKM pkm, int species, int lvl, int form
}
case 3:
{
int index = PersonalTable.RS.getFormeIndex(species, 0);
int index = PersonalTable.E.getFormeIndex(species, 0);
if (index == 0)
return r;
if (LVL)
@ -2054,7 +2053,7 @@ private static IEnumerable<int> getMoves(PKM pkm, int species, int lvl, int form
}
if (Machine)
{
var pi_c = PersonalTable.RS[index];
var pi_c = PersonalTable.E[index];
r.AddRange(TM_3.Where((t, m) => pi_c.TMHM[m]));
if (pkm.Format == 3) // HM moves must be removed for 3->4, only give if current format.
r.AddRange(HM_3.Where((t, m) => pi_c.TMHM[m+50]));
@ -2251,17 +2250,19 @@ private static IEnumerable<int> getTutorMoves(PKM pkm, int species, int form, bo
moves.Add(57);
break;
case 2:
moves.AddRange(Tutors_GSC.Where((t, i) => PersonalTable.C[species].TMHM[57 + i]));
info = PersonalTable.C[species];
moves.AddRange(Tutors_GSC.Where((t, i) => info.TMHM[57 + i]));
goto case 1;
case 3:
// E Tutors (Free)
// E Tutors (BP)
moves.AddRange(Tutor_E.Where((t, i) => PersonalTable.E[species].TMHM[58 + i]));
info = PersonalTable.E[species];
moves.AddRange(Tutor_E.Where((t, i) => info.TypeTutors[i]));
// FRLG Tutors
// Only special tutor moves, normal tutor moves are already included in Emerald data
moves.AddRange(SpecialTutors_FRLG.Where(t => SpecialTutors_Compatibility_FRLG[t].Any(e => e == species)));
moves.AddRange(SpecialTutors_FRLG.Where((t, i) => SpecialTutors_Compatibility_FRLG[i].Any(e => e == species)));
// XD
moves.AddRange(SpecialTutors_XD_Exclusive.Where(t => SpecialTutors_Compatibility_XD_Exclusive[t].Any(e => e == species)));
moves.AddRange(SpecialTutors_XD_Exclusive.Where((t, i) => SpecialTutors_Compatibility_XD_Exclusive[i].Any(e => e == species)));
// XD (Mew)
if (species == 151)
moves.AddRange(Tutor_3Mew);
@ -2270,7 +2271,7 @@ private static IEnumerable<int> getTutorMoves(PKM pkm, int species, int form, bo
case 4:
info = PersonalTable.HGSS[species];
moves.AddRange(Tutors_4.Where((t, i) => info.TypeTutors[i]));
moves.AddRange(SpecialTutors_4.Where(t => SpecialTutors_Compatibility_4[t].Any(e => e == species)));
moves.AddRange(SpecialTutors_4.Where((t, i) => SpecialTutors_Compatibility_4[i].Any(e => e == species)));
break;
case 5:
info = PersonalTable.B2W2[species];

View File

@ -161,9 +161,9 @@ public static partial class Legal
internal static readonly int[][] SpecialTutors_Compatibility_FRLG =
{
new int[] { 6 },
new int[] { 9 },
new int[] { 3 },
new[] { 6 },
new[] { 9 },
new[] { 3 },
};
// Tutor moves from XD that can be learned as tutor moves in emerald
@ -182,23 +182,23 @@ public static partial class Legal
internal static readonly int[][] SpecialTutors_Compatibility_XD_Exclusive =
{
new int[] { 074, 075, 076, 088, 089, 090, 091, 092, 093, 094, 095,
100, 101, 102, 103, 109, 110, 143, 150, 151, 185, 204,
205, 208, 211, 218, 219, 222, 273, 274, 275, 299, 316,
317, 320, 321, 323, 324, 337, 338, 343, 344, 362, 375,
376, 377, 378, 379 },
new[] { 074, 075, 076, 088, 089, 090, 091, 092, 093, 094, 095,
100, 101, 102, 103, 109, 110, 143, 150, 151, 185, 204,
205, 208, 211, 218, 219, 222, 273, 274, 275, 299, 316,
317, 320, 321, 323, 324, 337, 338, 343, 344, 362, 375,
376, 377, 378, 379 },
new int[] { 016, 017, 018, 021, 022, 084, 085, 142, 144, 145, 146,
151, 163, 164, 176, 177, 178, 198, 225, 227, 250, 276,
277, 278, 279, 333, 334 },
new[] { 016, 017, 018, 021, 022, 084, 085, 142, 144, 145, 146,
151, 163, 164, 176, 177, 178, 198, 225, 227, 250, 276,
277, 278, 279, 333, 334 },
new int[] { 012, 035, 036, 039, 040, 052, 053, 063, 064, 065, 079,
080, 092, 093, 094, 096, 097, 102, 103, 108, 121, 122,
124, 131, 137, 150, 151, 163, 164, 173, 174, 177, 178,
190, 196, 197, 198, 199, 200, 203, 206, 215, 228, 229,
233, 234, 238, 248, 249, 250, 251, 280, 281, 282, 284,
292, 302, 315, 316, 317, 327, 353, 354, 355, 356, 358,
359, 385, 386 }
new[] { 012, 035, 036, 039, 040, 052, 053, 063, 064, 065, 079,
080, 092, 093, 094, 096, 097, 102, 103, 108, 121, 122,
124, 131, 137, 150, 151, 163, 164, 173, 174, 177, 178,
190, 196, 197, 198, 199, 200, 203, 206, 215, 228, 229,
233, 234, 238, 248, 249, 250, 251, 280, 281, 282, 284,
292, 302, 315, 316, 317, 327, 353, 354, 355, 356, 358,
359, 385, 386 }
};
internal static readonly int[] Roaming_MetLocation_FRLG =
@ -233,125 +233,116 @@ public static partial class Legal
internal static readonly int[] Roaming_MetLocation_RSE =
{
// TODO: Check if roaming encounter is possible in routes 11, 119 and 120
16, // Route 101
17, // Route 102
18, // Route 103
19, // Route 104
// Routes 105 to 109 only have surf encounters
25, // Route 110
26, // Route 111 Deep sand
27, // Route 112
28, // Route 113
29, // Route 114
30, // Route 115
31, // Route 116
32, // Route 117
33, // Route 118
34, // Route 119 Long grass
35, // Route 120 Long grass
36, // Route 121
// Routes 122 only have surf encounters
38, // Route 123
// Routes 124 to 129 only have surf encounters
// Route 130 only have grass inMirage Island
// Routes 132 to 134 only have surf encounters
//Roaming encounter is possible in tall grass and on water
//Route 101-138
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49,
};
internal static readonly EncounterStatic[] Encounter_RSE =
(new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.S, Roaming = true, }).Clone(Roaming_MetLocation_RSE).Concat( //Latias
(new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.E, Roaming = true, }).Clone(Roaming_MetLocation_RSE)).Concat( //Latias
(new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.R, Roaming = true, }).Clone(Roaming_MetLocation_RSE)).Concat( //Latios
(new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.E, Roaming = true, }).Clone(Roaming_MetLocation_RSE)).Concat( //Latios
new EncounterStatic[]
{
//Starters
new EncounterStatic { Gift = true, Species = 152, Level = 5, Location = 000, Version = GameVersion.E, }, // Chikorita @ Littleroot Town
new EncounterStatic { Gift = true, Species = 155, Level = 5, Location = 000, Version = GameVersion.E, }, // Cyndaquil
new EncounterStatic { Gift = true, Species = 158, Level = 5, Location = 000, Version = GameVersion.E, }, // Totodile
new EncounterStatic { Gift = true, Species = 252, Level = 5, Location = 016, }, // Treecko @ Route 101
new EncounterStatic { Gift = true, Species = 255, Level = 5, Location = 016, }, // Torchic
new EncounterStatic { Gift = true, Species = 258, Level = 5, Location = 016, }, // Mudkip
internal static readonly EncounterStatic[] Encounter_RSE_Roam =
{
new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.S, Roaming = true }, // Latias
new EncounterStatic { Species = 380, Level = 40, Version = GameVersion.E, Roaming = true }, // Latias
new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.R, Roaming = true }, // Latios
new EncounterStatic { Species = 381, Level = 40, Version = GameVersion.E, Roaming = true }, // Latios
};
internal static readonly EncounterStatic[] Encounter_RSE_Regular =
{
// Starters
new EncounterStatic { Gift = true, Species = 152, Level = 05, Location = 000, Version = GameVersion.E, }, // Chikorita @ Littleroot Town
new EncounterStatic { Gift = true, Species = 155, Level = 05, Location = 000, Version = GameVersion.E, }, // Cyndaquil
new EncounterStatic { Gift = true, Species = 158, Level = 05, Location = 000, Version = GameVersion.E, }, // Totodile
new EncounterStatic { Gift = true, Species = 252, Level = 05, Location = 016, }, // Treecko @ Route 101
new EncounterStatic { Gift = true, Species = 255, Level = 05, Location = 016, }, // Torchic
new EncounterStatic { Gift = true, Species = 258, Level = 05, Location = 016, }, // Mudkip
//Fossil @ Rustboro City
new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 010, }, // Lileep
new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 010, }, // Anorith
// Fossil @ Rustboro City
new EncounterStatic { Gift = true, Species = 345, Level = 20, Location = 010, }, // Lileep
new EncounterStatic { Gift = true, Species = 347, Level = 20, Location = 010, }, // Anorith
//Gift
new EncounterStatic { Gift = true, Species = 351, Level = 25, Location = 034, }, // Castform @ Weather Institute
new EncounterStatic { Gift = true, Species = 374, Level = 5, Location = 013, }, // Beldum @ Mossdeep City
new EncounterStatic { Gift = true, Species = 360, Level = 5, EggLocation = 253}, // Wynaut Egg
// Gift
new EncounterStatic { Gift = true, Species = 351, Level = 25, Location = 034, }, // Castform @ Weather Institute
new EncounterStatic { Gift = true, Species = 374, Level = 05, Location = 013, }, // Beldum @ Mossdeep City
new EncounterStatic { Gift = true, Species = 360, Level = 05, EggLocation = 253}, // Wynaut Egg
//Stationary
new EncounterStatic { Species = 352, Level = 30, Location = 034, }, //Kecleon @ Route 119
new EncounterStatic { Species = 352, Level = 30, Location = 035, }, //Kecleon @ Route 120
new EncounterStatic { Species = 101, Level = 30, Location = 066, Version = GameVersion.RS, }, //Electrode @ Hideout (R:Magma Hideout/S:Aqua Hideout)
new EncounterStatic { Species = 101, Level = 30, Location = 197, Version = GameVersion.E, }, //Electrode @ Aqua Hideout
new EncounterStatic { Species = 185, Level = 40, Location = 058, Version = GameVersion.E, }, //Sudowoodo @ Battle Frontier
// Stationary
new EncounterStatic { Species = 352, Level = 30, Location = 034, }, // Kecleon @ Route 119
new EncounterStatic { Species = 352, Level = 30, Location = 035, }, // Kecleon @ Route 120
new EncounterStatic { Species = 101, Level = 30, Location = 066, Version = GameVersion.RS, }, // Electrode @ Hideout (R:Magma Hideout/S:Aqua Hideout)
new EncounterStatic { Species = 101, Level = 30, Location = 197, Version = GameVersion.E, }, // Electrode @ Aqua Hideout
new EncounterStatic { Species = 185, Level = 40, Location = 058, Version = GameVersion.E, }, // Sudowoodo @ Battle Frontier
//Stationary Lengendary
new EncounterStatic { Species = 377, Level = 40, Location = 082, }, //Regirock @ Desert Ruins
new EncounterStatic { Species = 378, Level = 40, Location = 081, }, //Regice @ Island Cave
new EncounterStatic { Species = 379, Level = 40, Location = 083, }, //Registeel @ Ancient Tomb
new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.R, }, //Latias @ Southern Island
new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.E, }, //Latias @ Southern Island
new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.S, }, //Latios @ Southern Island
new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.E, }, //Latios @ Southern Island
new EncounterStatic { Species = 382, Level = 45, Location = 072, Version = GameVersion.S, }, //Kyogre @ Cave of Origin
new EncounterStatic { Species = 382, Level = 70, Location = 203, Version = GameVersion.E, }, //Kyogre @ Marine Cave
new EncounterStatic { Species = 383, Level = 45, Location = 072, Version = GameVersion.R, }, //Groudon @ Cave of Origin
new EncounterStatic { Species = 383, Level = 70, Location = 205, Version = GameVersion.E, }, //Groudon @ Terra Cave
new EncounterStatic { Species = 384, Level = 70, Location = 085, }, //Rayquaza @ Sky Pillar
// Stationary Lengendary
new EncounterStatic { Species = 377, Level = 40, Location = 082, }, // Regirock @ Desert Ruins
new EncounterStatic { Species = 378, Level = 40, Location = 081, }, // Regice @ Island Cave
new EncounterStatic { Species = 379, Level = 40, Location = 083, }, // Registeel @ Ancient Tomb
new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.R, }, // Latias @ Southern Island
new EncounterStatic { Species = 380, Level = 50, Location = 073, Version = GameVersion.E, }, // Latias @ Southern Island
new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.S, }, // Latios @ Southern Island
new EncounterStatic { Species = 381, Level = 50, Location = 073, Version = GameVersion.E, }, // Latios @ Southern Island
new EncounterStatic { Species = 382, Level = 45, Location = 072, Version = GameVersion.S, }, // Kyogre @ Cave of Origin
new EncounterStatic { Species = 382, Level = 70, Location = 203, Version = GameVersion.E, }, // Kyogre @ Marine Cave
new EncounterStatic { Species = 383, Level = 45, Location = 072, Version = GameVersion.R, }, // Groudon @ Cave of Origin
new EncounterStatic { Species = 383, Level = 70, Location = 205, Version = GameVersion.E, }, // Groudon @ Terra Cave
new EncounterStatic { Species = 384, Level = 70, Location = 085, }, // Rayquaza @ Sky Pillar
//Event
new EncounterStatic { Species = 151, Level = 30, Location = 201, Version = GameVersion.E, }, //Mew @ Faraway Island
new EncounterStatic { Species = 249, Level = 70, Location = 211, Version = GameVersion.E, }, //Lugia @ Navel Rock
new EncounterStatic { Species = 250, Level = 70, Location = 211, Version = GameVersion.E, }, //Ho-Oh @ Navel Rock
new EncounterStatic { Species = 386, Form = 3, Level = 30, Location = 200, Version = GameVersion.E, }, //Deoxys @ Birth Island
}).ToArray();
// Event
new EncounterStatic { Species = 151, Level = 30, Location = 201, Version = GameVersion.E, }, // Mew @ Faraway Island
new EncounterStatic { Species = 249, Level = 70, Location = 211, Version = GameVersion.E, }, // Lugia @ Navel Rock
new EncounterStatic { Species = 250, Level = 70, Location = 211, Version = GameVersion.E, }, // Ho-Oh @ Navel Rock
new EncounterStatic { Species = 386, Level = 30, Location = 200, Version = GameVersion.E, Form = 3 }, // Deoxys @ Birth Island
};
internal static readonly EncounterStatic[] Encounter_FRLG =
(new EncounterStatic { Species = 243, Level = 50, Roaming = true, }).Clone(Roaming_MetLocation_FRLG).Concat( //Raikou
(new EncounterStatic { Species = 244, Level = 50, Roaming = true, }).Clone(Roaming_MetLocation_FRLG)).Concat( //Entei
(new EncounterStatic { Species = 245, Level = 50, Roaming = true, }).Clone(Roaming_MetLocation_FRLG)).Concat( //Suicune
new EncounterStatic[]
{
//Starters @ Pallet Town
new EncounterStatic { Gift = true, Species = 1, Level = 5, Location = 088, }, // Bulbasaur
new EncounterStatic { Gift = true, Species = 4, Level = 5, Location = 088, }, // Charmander
new EncounterStatic { Gift = true, Species = 9, Level = 5, Location = 088, }, // Squirtle
//Fossil @ Cinnabar Island
new EncounterStatic { Gift = true, Species = 138, Level = 30, Location = 096, }, // Omanyte
new EncounterStatic { Gift = true, Species = 140, Level = 30, Location = 096, }, // Kabuto
new EncounterStatic { Gift = true, Species = 142, Level = 30, Location = 096, }, // Aerodactyl
internal static readonly EncounterStatic[] Encounter_FRLG_Roam =
{
new EncounterStatic { Species = 243, Level = 50, Roaming = true, }, // Raikou
new EncounterStatic { Species = 244, Level = 50, Roaming = true, }, // Entei
new EncounterStatic { Species = 245, Level = 50, Roaming = true, }, // Suicune
};
internal static readonly EncounterStatic[] Encounter_FRLG_Stationary =
{
// Starters @ Pallet Town
new EncounterStatic { Gift = true, Species = 1, Level = 05, Location = 088, }, // Bulbasaur
new EncounterStatic { Gift = true, Species = 4, Level = 05, Location = 088, }, // Charmander
new EncounterStatic { Gift = true, Species = 9, Level = 05, Location = 088, }, // Squirtle
//Gift
new EncounterStatic { Gift = true, Species = 106, Level = 25, Location = 098, }, // Hitmonlee @ Saffron City
new EncounterStatic { Gift = true, Species = 107, Level = 25, Location = 098, }, // Hitmonchan @ Saffron City
new EncounterStatic { Gift = true, Species = 129, Level = 5, Location = 099, }, // Magikarp @ Route 4
new EncounterStatic { Gift = true, Species = 131, Level = 25, Location = 134, }, // Lapras @ Silph Co.
new EncounterStatic { Gift = true, Species = 133, Level = 25, Location = 094, }, // Eevee @ Celadon City
new EncounterStatic { Gift = true, Species = 175, Level = 5, EggLocation = 253 }, // Togepi Egg
// Fossil @ Cinnabar Island
new EncounterStatic { Gift = true, Species = 138, Level = 05, Location = 096, }, // Omanyte
new EncounterStatic { Gift = true, Species = 140, Level = 05, Location = 096, }, // Kabuto
new EncounterStatic { Gift = true, Species = 142, Level = 05, Location = 096, }, // Aerodactyl
//Stationary
new EncounterStatic { Species = 143, Level = 30, Location = 112, }, //Snorlax @ Route 12
new EncounterStatic { Species = 143, Level = 30, Location = 116, }, //Snorlax @ Route 16
new EncounterStatic { Species = 101, Level = 34, Location = 142, }, //Electrode @ Power Plant
new EncounterStatic { Species = 097, Level = 30, Location = 176, }, //Hypno @ Berry Forest
// Gift
new EncounterStatic { Gift = true, Species = 106, Level = 25, Location = 098, }, // Hitmonlee @ Saffron City
new EncounterStatic { Gift = true, Species = 107, Level = 25, Location = 098, }, // Hitmonchan @ Saffron City
new EncounterStatic { Gift = true, Species = 129, Level = 05, Location = 099, }, // Magikarp @ Route 4
new EncounterStatic { Gift = true, Species = 131, Level = 25, Location = 134, }, // Lapras @ Silph Co.
new EncounterStatic { Gift = true, Species = 133, Level = 25, Location = 094, }, // Eevee @ Celadon City
new EncounterStatic { Gift = true, Species = 175, Level = 05, EggLocation = 253 }, // Togepi Egg
//Stationary Lengerdary
new EncounterStatic { Species = 144, Level = 50, Location = 139, }, //Articuno @ Seafoam Islands
new EncounterStatic { Species = 145, Level = 50, Location = 142, }, //Zapdos @ Power Plant
new EncounterStatic { Species = 146, Level = 50, Location = 175, }, //Moltres @ Mt. Ember.
new EncounterStatic { Species = 150, Level = 70, Location = 141, }, //Mewtwo @ Cerulean Cave
// Stationary
new EncounterStatic { Species = 143, Level = 30, Location = 112, }, // Snorlax @ Route 12
new EncounterStatic { Species = 143, Level = 30, Location = 116, }, // Snorlax @ Route 16
new EncounterStatic { Species = 101, Level = 34, Location = 142, }, // Electrode @ Power Plant
new EncounterStatic { Species = 097, Level = 30, Location = 176, }, // Hypno @ Berry Forest
//Event
new EncounterStatic { Species = 249, Level = 70, Location = 174, }, //Lugia @ Navel Rock
new EncounterStatic { Species = 250, Level = 70, Location = 174, }, //Ho-Oh @ Navel Rock
new EncounterStatic { Species = 386, Form = 1, Level = 30, Location = 187, Version = GameVersion.FR, }, //Deoxys @ Birth Island
new EncounterStatic { Species = 386, Form = 2, Level = 30, Location = 187, Version = GameVersion.LG, }, //Deoxys @ Birth Island
}).ToArray();
// Stationary Lengerdary
new EncounterStatic { Species = 144, Level = 50, Location = 139, }, // Articuno @ Seafoam Islands
new EncounterStatic { Species = 145, Level = 50, Location = 142, }, // Zapdos @ Power Plant
new EncounterStatic { Species = 146, Level = 50, Location = 175, }, // Moltres @ Mt. Ember.
new EncounterStatic { Species = 150, Level = 70, Location = 141, }, // Mewtwo @ Cerulean Cave
// Event
new EncounterStatic { Species = 249, Level = 70, Location = 174, }, // Lugia @ Navel Rock
new EncounterStatic { Species = 250, Level = 70, Location = 174, }, // Ho-Oh @ Navel Rock
new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.FR, Form = 1 }, // Deoxys @ Birth Island
new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.LG, Form = 2 }, // Deoxys @ Birth Island
};
internal static readonly EncounterStatic[] Encounter_RSE = Encounter_RSE_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_RSE)).Concat(Encounter_RSE_Regular).ToArray();
internal static readonly EncounterStatic[] Encounter_FRLG = Encounter_FRLG_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_FRLG)).Concat(Encounter_FRLG_Stationary).ToArray();
private static readonly int[] TradeContest_Cool = {30, 05, 05, 05, 05, 10};
private static readonly int[] TradeContest_Beauty = {05, 30, 05, 05, 05, 10};