2
0
Fork 0
mirror of https://github.com/kwsch/PKHeX synced 2024-12-23 19:03:11 +00:00
PKHeX/PKHeX.Core/Legality/Encounters/Data/Encounters1.cs
Kurt cd12962a50 Remove Tradeback state caching in PKM data
Since we have more metadata with move learn sourcing, we can check if it was traded to gen2 to get new moves / deleted.

Adjust call sites appropriately
might have some issues, to be ironed out maybe
2021-08-20 15:59:54 -07:00

165 lines
9.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using static PKHeX.Core.GameVersion;
using static PKHeX.Core.EncounterGBLanguage;
namespace PKHeX.Core
{
/// <summary>
/// Generation 1 Encounters
/// </summary>
internal static class Encounters1
{
internal static readonly EncounterArea1[] SlotsRD = Get("red", "g1", RD);
internal static readonly EncounterArea1[] SlotsGN = Get("blue", "g1", GN);
internal static readonly EncounterArea1[] SlotsYW = Get("yellow", "g1", YW);
internal static readonly EncounterArea1[] SlotsBU = Get("blue_jp", "g1", BU);
internal static readonly EncounterArea1[] SlotsRBY = ArrayUtil.ConcatAll(SlotsRD, SlotsGN, SlotsYW);
internal static readonly EncounterArea1[] SlotsRGBY = ArrayUtil.ConcatAll(SlotsRBY, SlotsBU);
private static EncounterArea1[] Get(string name, string ident, GameVersion game) =>
EncounterArea1.GetAreas(BinLinker.Unpack(Util.GetBinaryResource($"encounter_{name}.pkl"), ident), game);
static Encounters1() => EncounterUtil.MarkEncounterTradeNicknames(TradeGift_RBY, TradeGift_RBY_OTs);
internal static readonly EncounterStatic1[] StaticRBY =
{
// GameVersion is RBY for Pokemon with the same catch rate and initial moves in all games
// If there are any differences in moves or catch rate, they will be defined as different encounters (GameVersion)
new(001, 05, RBY), // Bulbasaur
new(004, 05, RBY), // Charmander
new(007, 05, RBY), // Squirtle
new(025, 05, YW), // Pikachu
// Game Corner
new(030, 17, RB), // Nidorina (Red Game Corner)
new(033, 17, RB), // Nidorino (Blue[EN] / Green[JP] Game Corner)
new(035, 08, RBY), // Clefairy (Red Game Corner)
new(036, 24, BU), // Clefable (Blue[JP] Game Corner)
new(037, 18, RBY), // Vulpix (Yellow Game Corner)
new(040, 22, RBY), // Wigglytuff (Yellow Game Corner)
new(063, 06, RB), // Abra (Blue[EN] / Green[JP] Game Corner)
new(116, 18, BU), // Horsea (Blue[JP] Game Corner)
new(123, 25, RBY), // Scyther (Red Game Corner)
new(127, 20, RB), // Pinsir (Blue[EN] / Green[JP] Game Corner)
new(127, 30, YW), // Pinsir (Yellow Game Corner) (Different initial moves)
new(137, 18, RB), // Porygon (Blue[EN] / Green[JP] Game Corner)
new(147, 18, RBY), // Dratini (Red Game Corner)
new(148, 30, BU), // Dragonair (Blue[JP] Game Corner)
new(025, 12, BU), // Pikachu (Blue[JP] Game Corner) (Different catch rate)
// Lower level less ideal matches; best match is from above.
// new(035, 12), // Clefairy (Blue[EN] / Green[JP] Game Corner)
// new(063, 09), // Abra (Red Game Corner)
// new(063, 08), // Abra (Blue[JP] Game Corner)
// new(063, 15), // Abra (Yellow Game Corner)
// new(123, 30), // Scyther (Yellow Game Corner)
// new(137, 22), // Porygon (Blue[JP] Game Corner)
// new(137, 26), // Porygon (Red Game Corner)
// new(137, 26), // Porygon (Yellow Game Corner)
// new(147, 24), // Dratini (Blue[EN] / Green[JP] Game Corner)
new(129, 05, RBY), // Magikarp
new(143, 30, RBY), // Snorlax
new(106, 30, RBY), // Hitmonlee
new(107, 30, RBY), // Hitmonchan
new(131, 15, RBY), // Lapras
new(138, 30, RBY), // Omanyte
new(140, 30, RBY), // Kabuto
new(142, 30, RBY), // Aerodactyl
new(144, 50, RBY), // Articuno
new(145, 50, RBY), // Zapdos
new(146, 50, RBY), // Moltres
new(150, 70, RBY), // Mewtwo
new(133, 25, RB) {Moves = new [] {(int)Move.Tackle, (int)Move.SandAttack}}, // Eevee
new(133, 25, YW) {Moves = new [] {(int)Move.TailWhip, (int)Move.SandAttack, (int)Move.Growl, (int)Move.QuickAttack}}, // Eevee (Different initial moves)
new(100, 40, RBY), // Voltorb (Power Plant)
new(101, 43, RBY), // Electrode (Power Plant)
// Yellow Only -- duplicate encounters with a higher level
// new(001, 10, YW), // Bulbasaur (Cerulean City)
// new(004, 10, YW), // Charmander (Route 24)
// new(007, 10, YW), // Squirtle (Vermillion City)
};
internal static readonly EncounterTrade1[] TradeGift_RBY =
{
new(122, RB, 06, 05), // Mr. Mime - Abra
new(032, RB, 02 ), // Nidoran♂ - Nidoran♀
new(030, RB, 16 ), // Nidorina - Nidorino
new(108, RB, 15 ), // Lickitung - Slowbro
new(124, RB, 15, 10), // Jynx - Poliwhirl
new(083, RB, 02 ), // Farfetchd - Spearow
new(101, RB, 03 ), // Electrode - Raichu
new(114, RB, 13, 05), // Tangela - Venonat
new(086, RB, 28, 05), // Seel - Ponyta
new(122, YW, 08, 06), // Mr. Mime - Clefairy
new(067, YW, 16, 05) { EvolveOnTrade = true }, // Machoke - Cubone
new(051, YW, 15, 05), // Dugtrio - Lickitung
new(047, YW, 13, 05), // Parasect - Tangel
new(112, YW, 15, 10), // Rhydon - Golduck
new(087, YW, 15, 05), // Dewgong - Growlithe
new(089, YW, 25, 05), // Muk - Kangaskhan
new(122, BU, 03 ), // Mr. Mime - Jigglypuff
new(029, BU, 02 ), // Nidoran♀ - Nidoran♂
new(060, BU, 02 ), // Poliwag - Rattata
new(115, BU, 15, 10), // Kangaskhan - Rhydon
new(128, BU, 28, 18), // Tauros - Persian
new(093, BU, 28, 14) { EvolveOnTrade = true }, // Haunter - Machop->Machoke
new(083, BU, 02 ), // Farfetchd - Wild Pidgey
new(075, BU, 16, 15) { EvolveOnTrade = true }, // Graveler - Abra->Kadabra
new(079, BU, 22, 05), // Slowpoke - Seel
new(098, BU, 15, 05), // Krabby - Growlithe
};
private const string tradeRBY = "traderby";
private static readonly string[][] TradeGift_RBY_OTs = Util.GetLanguageStrings7(tradeRBY);
private static readonly int[] Flawless15 = { 15, 15, 15, 15, 15, 15 };
private static readonly int[] Yoshira = { 5, 10, 1, 12, 5, 5 };
private static readonly string[] YoshiOT = { "YOSHIRA", "YOSHIRB", "YOSHIBA", "YOSHIBB" };
private static readonly string[] TourOT = { "LINKE", "LINKW", "LUIGE", "LUIGW", "LUIGIC", "YOSHIC" };
private static readonly string[] StadiumOT_Int = { "STADIUM", "STADE", "STADIO", "ESTADIO" };
private const string StadiumOT_JPN = "スタジアム";
internal static readonly EncounterStatic1E[] StaticEventsVC =
{
// Event Mew
new(151, 5, RBY) { IVs = Flawless15, TID = 22796, OT_Name = "GF", Language = International },
new(151, 5, RBY) { IVs = Flawless15, TID = 22796, OT_Name = "ゲーフリ" },
};
internal static readonly EncounterStatic1E[] StaticEventsGB =
{
// Stadium 1 (International)
new(001, 05, Stadium) {Moves = new[] {033, 045}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Bulbasaur
new(004, 05, Stadium) {Moves = new[] {010, 043}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Charmander
new(007, 05, Stadium) {Moves = new[] {033, 045}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Squirtle
new(106, 20, Stadium) {Moves = new[] {024, 096}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Hitmonlee
new(107, 20, Stadium) {Moves = new[] {004, 097}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Hitmonchan
new(133, 25, Stadium) {Moves = new[] {033, 039}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Eevee
new(138, 20, Stadium) {Moves = new[] {055, 110}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Omanyte
new(140, 20, Stadium) {Moves = new[] {010, 106}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Kabuto
new(054, 15, Stadium) {Moves = new[] {133, 010}, TID = 2000, OT_Names = StadiumOT_Int, Language = International}, // Psyduck (Amnesia)
// Stadium 2 (Japan)
new(001, 05, Stadium) {Moves = new[] {033, 045}, TID = 1999, OT_Name = StadiumOT_JPN}, // Bulbasaur
new(004, 05, Stadium) {Moves = new[] {010, 043}, TID = 1999, OT_Name = StadiumOT_JPN}, // Charmander
new(007, 05, Stadium) {Moves = new[] {033, 045}, TID = 1999, OT_Name = StadiumOT_JPN}, // Squirtle
new(106, 20, Stadium) {Moves = new[] {024, 096}, TID = 1999, OT_Name = StadiumOT_JPN}, // Hitmonlee
new(107, 20, Stadium) {Moves = new[] {004, 097}, TID = 1999, OT_Name = StadiumOT_JPN}, // Hitmonchan
new(133, 25, Stadium) {Moves = new[] {033, 039}, TID = 1999, OT_Name = StadiumOT_JPN}, // Eevee
new(138, 20, Stadium) {Moves = new[] {055, 110}, TID = 1999, OT_Name = StadiumOT_JPN}, // Omanyte
new(140, 20, Stadium) {Moves = new[] {010, 106}, TID = 1999, OT_Name = StadiumOT_JPN}, // Kabuto
new(054, 15, Stadium) {Moves = new[] {133, 010}, TID = 1999, OT_Name = StadiumOT_JPN}, // Psyduck (Amnesia)
new(151, 5, RB) {IVs = Yoshira, OT_Names = YoshiOT, Language = International }, // Yoshira Mew Events
new(151, 5, RB) {IVs = Yoshira, OT_Names = TourOT, Language = International }, // Pokémon 2000 Stadium Tour Mew
};
}
}