mirror of
https://github.com/kwsch/PKHeX
synced 2025-02-17 05:48:44 +00:00
* Uses LearnSource more throughout the codebase when appropriate, rather than loosely coupled pivot methods. * Hides Learnset/EggMove data inside the LearnSource classes. * Extracts functionality from the large Legal class & partial Table*.cs files into better performing helper classes. * Cleans up some code from prior LearnSource commits.
87 lines
4.4 KiB
C#
87 lines
4.4 KiB
C#
using System;
|
|
|
|
namespace PKHeX.Core;
|
|
|
|
public static class EggHatchLocation8b
|
|
{
|
|
private const byte MaskBD = 1 << 0; // 1
|
|
private const byte MaskSP = 1 << 1; // 2
|
|
|
|
public static bool IsValidMet8BD(int location)
|
|
{
|
|
if (HasLocationFlag(LocationPermitted8b, MaskBD, location))
|
|
return true;
|
|
return location == Locations.Pelago7; // 30016
|
|
}
|
|
|
|
public static bool IsValidMet8SP(int location)
|
|
{
|
|
if (HasLocationFlag(LocationPermitted8b, MaskSP, location))
|
|
return true;
|
|
return location == Locations.Pelago7; // 30016
|
|
}
|
|
|
|
private static bool HasLocationFlag(ReadOnlySpan<byte> arr, byte mask, int location)
|
|
{
|
|
if ((uint)location >= arr.Length)
|
|
return false;
|
|
var flags = arr[location];
|
|
return (flags & mask) != 0;
|
|
}
|
|
|
|
// BD Exclusive
|
|
// 216, // Spear Pillar
|
|
// 218, // Hall of Origin
|
|
// 498, // Ramanas Park (Johto Room)
|
|
// 503, // Ramanas Park (Rainbow Room)
|
|
// 650, // Ramanas Park (Johto Room)
|
|
// 655, // Ramanas Park (Rainbow Room)
|
|
|
|
// SP Exclusive
|
|
// 217, // Spear Pillar
|
|
// 497, // Ramanas Park (Kanto Room)
|
|
// 504, // Ramanas Park (Squall Room)
|
|
// 618, // Hall of Origin
|
|
// 649, // Ramanas Park (Kanto Room)
|
|
// 656, // Ramanas Park (Squall Room)
|
|
|
|
// Unobtainable
|
|
// 094, 103, 107, // Hearthome City
|
|
// 154, 155, 158, // Sunyshore City
|
|
// 181, 182, 183, // Pokémon League
|
|
// 329, // Lake Acuity
|
|
// 337, 338, // Battle Park
|
|
// 339, 340, 341, 342, 343, 344, // Battle Tower
|
|
// 345, 353, 421, // Mystery Zone
|
|
// 474, // Resort Area
|
|
// 483, 484, // Mystery Zone
|
|
// 491, 492, 493, // Mystery Zone
|
|
// 495, // Ramanas Park
|
|
// 620, 621, 622, 623, // Grand Underground (Secret Base)
|
|
// 625, // Sea (sailing animation)
|
|
// 627, 628, 629, 630, 631, 632, // Grand Underground (Secret Base)
|
|
// 633, 634, 635, 636, 637, 638, // Grand Underground (Secret Base)
|
|
// 639, 640, 641, 642, 643, 644, // Grand Underground (Secret Base)
|
|
// 645, 646, 647, // Grand Underground (Secret Base)
|
|
|
|
private static ReadOnlySpan<byte> LocationPermitted8b => new byte[]
|
|
{
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 1, 3, 1, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 3, 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 3, 3, 3, 3, 3, 3, 2, 3,
|
|
};
|
|
}
|