PKHeX/PKHeX.Core/Legality/Encounters/Data/Encounters8a.cs
Kurt 9deafa851a
Create initial movesets for Alpha entities correctly, verify initial mastery (#3489)
* Draft checks for encounter slot mastery

* Check encounter mastery flags

* Add moves for LA static encounters that don't follow learnset

* Add moves on crossover LA static encounters

* add alpha moveset population method

Now generates and applies moves as the game does
Updates some handling of other methods to use Span

* Show better message for bad mastery init flags

* Insert descending if candidates have same level

Level 78 Yanmega:
- [01] [10] Quick Attack
- [06] [15] Gust
- [11] [20] Silver Wind
- [18] [28] Hypnosis
- [25] [35] Air Slash
- [34] [45] Ancient Power
- [43] [54] Crunch
- [43] [54] Bug Buzz

Yields:
AlphaMove
Crunch*
Bug Buzz*
Ancient Power

* Descending order due to iteration

Co-authored-by: Lusamine <30205550+Lusamine@users.noreply.github.com>
2022-05-06 15:43:23 -07:00

116 lines
8.9 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.EncounterUtil;
using static PKHeX.Core.Shiny;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.EncounterStatic8aCorrelation;
namespace PKHeX.Core;
internal static class Encounters8a
{
internal static readonly EncounterArea8a[] SlotsLA = EncounterArea8a.GetAreas(Get("la", "la"), PLA);
private const byte M = 127; // Middle Height/Weight
private const byte A = 255; // Max Height/Weight for Alphas
private const byte U = 128; // Middle Height - Unown
internal static readonly EncounterStatic8a[] StaticLA =
{
// Gifts
new(722,000,05,M,M) { Location = 006, Gift = true, Method = Fixed, Ball = (int)Ball.LAPoke }, // Rowlet
new(155,000,05,M,M) { Location = 006, Gift = true, Method = Fixed, Ball = (int)Ball.LAPoke }, // Cyndaquil
new(501,000,05,M,M) { Location = 006, Gift = true, Method = Fixed, Ball = (int)Ball.LAPoke }, // Oshawott
new(037,001,40,M,M) { Location = 088, Gift = true, Method = Fixed, Ball = (int)Ball.LAPoke }, // Vulpix-1
new(483,000,65,M,M) { Location = 109, FlawlessIVCount = 3, Gift = true, Method = Fixed, Ball = (int)Ball.LAOrigin }, // Dialga
new(484,000,65,M,M) { Location = 109, FlawlessIVCount = 3, Gift = true, Method = Fixed, Ball = (int)Ball.LAOrigin }, // Palkia
new(493,000,75,M,M) { Location = 109, FlawlessIVCount = 3, Gift = true, Method = Fixed, Ball = (int)Ball.LAPoke, Fateful = true }, // Arceus
// Static Encounters - Scripted Table Slots
new(480,000,70,M,M) { Location = 111, FlawlessIVCount = 3, Moves = new[] {129,326,832,095} }, // Uxie
new(481,000,70,M,M) { Location = 104, FlawlessIVCount = 3, Moves = new[] {129,326,832,105} }, // Mesprit
new(482,000,70,M,M) { Location = 105, FlawlessIVCount = 3, Moves = new[] {129,458,326,832} }, // Azelf
new(485,000,70,M,M) { Location = 068, FlawlessIVCount = 3, Moves = new[] {442,242,414,463} }, // Heatran
new(488,000,70,M,M) { Location = 082, FlawlessIVCount = 3, Moves = new[] {427,094,585,849} }, // Cresselia
new(641,000,70,M,M) { Location = 090, FlawlessIVCount = 3, Moves = new[] {326,242,542,846} }, // Tornadus
new(642,000,70,M,M) { Location = 009, FlawlessIVCount = 3, Moves = new[] {326,242,087,847} }, // Thundurus
new(645,000,70,M,M) { Location = 027, FlawlessIVCount = 3, Moves = new[] {326,242,414,848} }, // Landorus
new(905,000,70,M,M) { Location = 038, FlawlessIVCount = 3, Moves = new[] {326,242,585,831} }, // Enamorus
new(077,000,15 ) { Location = 014, Shiny = Always}, // Ponyta*
new(442,000,60,M,M) { Location = 043, FlawlessIVCount = 3 }, // Spiritomb
new(570,001,27 ) { Location = 027 }, // Zorua
new(570,001,28 ) { Location = 027 }, // Zorua
new(570,001,29 ) { Location = 027 }, // Zorua
new(489,000,33 ) { Location = 064, Fateful = true, Moves = new[] {145,352,151,428} }, // Phione
new(489,000,34 ) { Location = 064, Fateful = true, Moves = new[] {145,352,151,428} }, // Phione
new(489,000,35 ) { Location = 064, Fateful = true, Moves = new[] {145,352,151,428} }, // Phione
new(489,000,36 ) { Location = 064, Fateful = true, Moves = new[] {145,352,151,428} }, // Phione
new(490,000,50,M,M) { Location = 064, FlawlessIVCount = 3, Fateful = true, Moves = new[] {352,428,585,145} }, // Manaphy
new(491,000,70,M,M) { Location = 010, FlawlessIVCount = 3, Fateful = true, Moves = new[] {506,399,094,464} }, // Darkrai
new(492,000,70,M,M) { Location = 026, FlawlessIVCount = 3, Fateful = true, Moves = new[] {403,412,414,465} }, // Shaymin
// Unown Notes
new(201,000,25,U) { Location = 040, Method = Fixed }, // Unown A
new(201,001,25,U) { Location = 056, Method = Fixed }, // Unown B
new(201,002,25,U) { Location = 081, Method = Fixed }, // Unown C
new(201,003,25,U) { Location = 008, Method = Fixed }, // Unown D
new(201,004,25,U) { Location = 022, Method = Fixed }, // Unown E
new(201,005,25,U) { Location = 010, Method = Fixed }, // Unown F
new(201,006,25,U) { Location = 017, Method = Fixed }, // Unown G
new(201,007,25,U) { Location = 006, Method = Fixed }, // Unown H
new(201,008,25,U) { Location = 023, Method = Fixed }, // Unown I
new(201,009,25,U) { Location = 072, Method = Fixed }, // Unown J
new(201,010,25,U) { Location = 043, Method = Fixed }, // Unown K
new(201,011,25,U) { Location = 086, Method = Fixed }, // Unown L
new(201,012,25,U) { Location = 037, Method = Fixed }, // Unown M
new(201,013,25,U) { Location = 009, Method = Fixed }, // Unown N
new(201,014,25,U) { Location = 102, Method = Fixed }, // Unown O
new(201,015,25,U) { Location = 075, Method = Fixed }, // Unown P
new(201,016,25,U) { Location = 058, Method = Fixed }, // Unown Q
new(201,017,25,U) { Location = 059, Method = Fixed }, // Unown R
new(201,018,25,U) { Location = 025, Method = Fixed }, // Unown S
new(201,019,25,U) { Location = 092, Method = Fixed }, // Unown T
new(201,020,25,U) { Location = 011, Method = Fixed }, // Unown U
new(201,021,25,U) { Location = 038, Method = Fixed }, // Unown V
new(201,022,25,U) { Location = 006, Method = Fixed }, // Unown W
new(201,023,25,U) { Location = 021, Method = Fixed }, // Unown X
new(201,024,25,U) { Location = 097, Method = Fixed }, // Unown Y
new(201,025,25,U) { Location = 051, Method = Fixed }, // Unown Z
new(201,026,25,U) { Location = 142, Method = Fixed }, // Unown ! at Snowfall Hot Spring
new(201,027,25,U) { Location = 006, Method = Fixed }, // Unown ?
// Future updates will handle crossovers better.
new(201,017,25,U) { Location = 009, Method = Fixed }, // Unown R (Cobalt Coastlands)
new(201,026,25,U) { Location = 099, Method = Fixed }, // Unown ! (Arenas Approach)
new(201,026,25,U) { Location = 141, Method = Fixed }, // Unown ! (Icepeak Arena)
new(201,023,25,U) { Location = 007, Method = Fixed }, // Unown X
new(201,024,25,U) { Location = 097, Method = Fixed }, // Unown Y
new(201,006,25,U) { Location = 007, Method = Fixed }, // Unown G
new(642,000,70,M,M) { Location = 059, FlawlessIVCount = 3, Moves = new[] {326,242,087,847} }, // Thundurus (Lunkers Lair)
new(642,000,70,M,M) { Location = 129, FlawlessIVCount = 3, Moves = new[] {326,242,087,847} }, // Thundurus (Sands Reach)
new(488,000,70,M,M) { Location = 010, FlawlessIVCount = 3, Moves = new[] {427,094,585,849} }, // Cresselia (Coronet Highlands)
new(491,000,70,M,M) { Location = 074, FlawlessIVCount = 3, Fateful = true, Moves = new[] {506,399,094,464} }, // Darkrai (Lonely Spring)
// Static Encounters
new(046,000,50,M,M) { Location = 019, Method = Fixed }, // paras01: Paras
new(390,000,12,M,M) { Location = 007, Method = Fixed }, // hikozaru_01: Chimchar
new(434,000,20,M,M) { Location = 008, Method = Fixed }, // skunpuu01: Stunky
new(441,000,34,M,M) { Location = 129, Method = Fixed }, // perap01: Chatot
new(450,000,34,M,M) { Location = 036, Method = Fixed, Gender = 0 }, // kabaldon01: Hippowdon
new(459,000,50,M,M) { Location = 101, Method = Fixed, Gender = 1 }, // yukikaburi01: Snover
new(483,000,65,M,M) { Location = 109, Method = Fixed, FlawlessIVCount = 3 }, // dialga01: Dialga
new(484,000,65,M,M) { Location = 109, Method = Fixed, FlawlessIVCount = 3 }, // palkia01: Palkia
new(486,000,70,M,M) { Location = 095, Method = Fixed, FlawlessIVCount = 3 }, // regigigas01: Regigigas
new(487,001,70,M,M) { Location = 067, Method = Fixed, FlawlessIVCount = 3 }, // giratina02: Giratina-1
new(362,000,64,A,A) { Location = 011, Method = Fixed, IsAlpha = true, Moves = new[] {442,059,556,242} }, // onigohri01: Glalie
new(402,000,12,A,A) { Location = 007, Method = Fixed, IsAlpha = true, Gender = 0, Moves = new[] {206,071,033,332} }, // mev002: Kricketune
new(416,000,60,A,A) { Location = 022, Method = Fixed, IsAlpha = true, Gender = 1, FlawlessIVCount = 3, Moves = new[] {188,403,408,405} }, // beequen01: Vespiquen
new(571,001,58,M,M) { Location = 111, Method = Fixed, IsAlpha = true, Moves = new[] {555,421,841,417} }, // zoroark01: Zoroark-1
new(706,001,58,M,M) { Location = 104, Method = Fixed, IsAlpha = true, Moves = new[] {231,406,842,056} }, // numelgon01: Goodra-1
new(904,000,58,M,M) { Location = 105, Method = Fixed, IsAlpha = true, Moves = new[] {301,398,401,038} }, // harysen01: Overqwil
};
}