Update 22.11.24

Adds support for Scarlet & Violet.

Co-Authored-By: SciresM <8676005+SciresM@users.noreply.github.com>
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
This commit is contained in:
Kurt 2022-11-24 17:42:17 -08:00
parent 313f32a0d0
commit 03182ebd3d
2111 changed files with 55130 additions and 16970 deletions

View file

@ -24,7 +24,7 @@ PKHeX erwartet entschlüsselte Spielstände. Da diese konsolenspezifisch verschl
## Screenshots
![Main Window](https://i.imgur.com/5421hUR.png)
![Main Window](https://i.imgur.com/uXdJfRj.png)
## Erstellen

View file

@ -24,7 +24,7 @@ PKHeX espera archivos de guardado que no estén cifrados con las claves específ
## Capturas de Pantalla
![Pantalla principal](https://i.imgur.com/umit9S2.png)
![Pantalla principal](https://i.imgur.com/hN1pwQa.png)
## Building

View file

@ -23,7 +23,7 @@ PKHeX attend des fichiers de sauvegarde qui ne sont pas chiffrés avec des clés
## Captures d'écran
![Main Window](https://i.imgur.com/EhtQ14x.png)
![Main Window](https://i.imgur.com/d63DD3I.png)
## Construction

View file

@ -24,7 +24,7 @@ PKHeX si aspetta file di salvataggio non criptati con le chiavi specifiche della
## Screenshots
![Main Window](https://i.imgur.com/RBcUanJ.png)
![Main Window](https://i.imgur.com/QyQYtFg.png)
## Building

View file

@ -24,7 +24,7 @@ PKHeX 所讀取檔案須未經主機唯一密鑰加密,因而請使用儲存
## 螢幕擷取截圖
![主介面](https://i.imgur.com/RBcUanJ.png)
![主介面](https://i.imgur.com/CHgFTXb.png)
## 構建

View file

@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>22.09.13</Version>
<Version>22.11.24</Version>
<LangVersion>10</LangVersion>
<Nullable>enable</Nullable>
<NeutralLanguage>en</NeutralLanguage>

View file

@ -62,7 +62,7 @@ public static class RibbonApplicator
// Skip Marks, don't set them.
for (RibbonIndex r = 0; r <= RibbonIndex.MasterRank; r++)
r.Fix(args, desiredState);
for (RibbonIndex r = RibbonIndex.Pioneer; r < RibbonIndex.MAX_COUNT; r++)
for (RibbonIndex r = RibbonIndex.Hisui; r < RibbonIndex.MAX_COUNT; r++)
r.Fix(args, desiredState);
}
else

View file

@ -13,7 +13,7 @@ public static class TechnicalRecordApplicator
/// <param name="pk">Pokémon to modify.</param>
/// <param name="value">Value to set for the record.</param>
/// <param name="max">Max record to set.</param>
public static void SetRecordFlags(this ITechRecord8 pk, bool value, int max = 100)
public static void SetRecordFlags(this ITechRecord pk, bool value, int max)
{
for (int i = 0; i < max; i++)
pk.SetMoveRecordFlag(i, value);
@ -23,14 +23,14 @@ public static class TechnicalRecordApplicator
/// Clears the Technical Record flags for the <see cref="pk"/>.
/// </summary>
/// <param name="pk">Pokémon to modify.</param>
public static void ClearRecordFlags(this ITechRecord8 pk) => pk.SetRecordFlags(false, 112);
public static void ClearRecordFlags(this ITechRecord pk) => pk.SetRecordFlags(false, pk.RecordCountTotal);
/// <summary>
/// Sets the Technical Record flags for the <see cref="pk"/> based on the current moves.
/// </summary>
/// <param name="pk">Pokémon to modify.</param>
/// <param name="moves">Moves to set flags for. If a move is not a Technical Record, it is skipped.</param>
public static void SetRecordFlags(this ITechRecord8 pk, ReadOnlySpan<ushort> moves)
public static void SetRecordFlags(this ITechRecord pk, ReadOnlySpan<ushort> moves)
{
var permit = pk.TechRecordPermitFlags;
var moveIDs = pk.TechRecordPermitIndexes;
@ -43,7 +43,7 @@ public static class TechnicalRecordApplicator
if (index == -1)
continue;
if (permit[index])
pk.SetMoveRecordFlag(index, true);
pk.SetMoveRecordFlag(index);
}
}
@ -51,13 +51,13 @@ public static class TechnicalRecordApplicator
/// Sets all the Technical Record flags for the <see cref="pk"/> if they are permitted to be learned in-game.
/// </summary>
/// <param name="pk">Pokémon to modify.</param>
public static void SetRecordFlags(this ITechRecord8 pk)
public static void SetRecordFlags(this ITechRecord pk)
{
var permit = pk.TechRecordPermitFlags;
for (int i = 0; i < permit.Length; i++)
{
if (permit[i])
pk.SetMoveRecordFlag(i, true);
pk.SetMoveRecordFlag(i);
}
}
}

View file

@ -17,6 +17,7 @@ public static class BatchEditing
{
public static readonly Type[] Types =
{
typeof (PK9),
typeof (PK8), typeof (PA8), typeof (PB8),
typeof (PB7),
typeof (PK7), typeof (PK6), typeof (PK5), typeof (PK4), typeof(BK4), typeof(RK4),

View file

@ -46,7 +46,7 @@ public static class BatchMods
new ComplexSuggestion(PROP_RIBBONS, (_, value, info) => BatchModifications.SetSuggestedRibbons(info, value)),
new ComplexSuggestion(nameof(PKM.Met_Location), (_, _, info) => BatchModifications.SetSuggestedMetData(info)),
new ComplexSuggestion(nameof(PKM.CurrentLevel), (_, _, info) => BatchModifications.SetMinimumCurrentLevel(info)),
new ComplexSuggestion(PROP_CONTESTSTATS, p => p is IContestStatsMutable, (_, value, info) => BatchModifications.SetContestStats(info.Entity, info.Legality, value)),
new ComplexSuggestion(PROP_CONTESTSTATS, p => p is IContestStats, (_, value, info) => BatchModifications.SetContestStats(info.Entity, info.Legality, value)),
new ComplexSuggestion(PROP_MOVEMASTERY, (_, value, info) => BatchModifications.SetSuggestedMasteryData(info, value)),
};

View file

@ -13,7 +13,7 @@ internal static class BatchModifications
public static ModifyResult SetSuggestedRelearnData(BatchInfo info, string propValue)
{
var pk = info.Entity;
if (pk is ITechRecord8 t)
if (pk is ITechRecord t)
{
t.ClearRecordFlags();
if (IsAll(propValue))

View file

@ -237,8 +237,10 @@ public static class CommonEdits
c.CanGigantamax = Set.CanGigantamax;
if (pk is IDynamaxLevel d)
d.DynamaxLevel = d.GetSuggestedDynamaxLevel(pk, requested: Set.DynamaxLevel);
if (pk is ITeraType tera)
tera.SetTeraType(Set.TeraType);
if (pk is ITechRecord8 t)
if (pk is ITechRecord t)
{
t.ClearRecordFlags();
t.SetRecordFlags(Set.Moves);

View file

@ -3,7 +3,7 @@ namespace PKHeX.Core;
/// <summary>
/// Interface containing details relevant for battling.
/// </summary>
public interface IBattleTemplate : ISpeciesForm, IGigantamax, IDynamaxLevel, INature
public interface IBattleTemplate : ISpeciesForm, IGigantamaxReadOnly, IDynamaxLevelReadOnly, INatureReadOnly, ITeraTypeReadOnly
{
/// <summary>
/// <see cref="PKM.Context"/> of the Set entity it is specific to.

View file

@ -58,12 +58,12 @@ public class EntitySummary // do NOT seal, allow inheritance
public int SPA_EV => pk.EV_SPA;
public int SPD_EV => pk.EV_SPD;
public int SPE_EV => pk.EV_SPE;
public int Cool => pk is IContestStats s ? s.CNT_Cool : 0;
public int Beauty => pk is IContestStats s ? s.CNT_Beauty : 0;
public int Cute => pk is IContestStats s ? s.CNT_Cute : 0;
public int Smart => pk is IContestStats s ? s.CNT_Smart : 0;
public int Tough => pk is IContestStats s ? s.CNT_Tough : 0;
public int Sheen => pk is IContestStats s ? s.CNT_Sheen : 0;
public int Cool => pk is IContestStatsReadOnly s ? s.CNT_Cool : 0;
public int Beauty => pk is IContestStatsReadOnly s ? s.CNT_Beauty : 0;
public int Cute => pk is IContestStatsReadOnly s ? s.CNT_Cute : 0;
public int Smart => pk is IContestStatsReadOnly s ? s.CNT_Smart : 0;
public int Tough => pk is IContestStatsReadOnly s ? s.CNT_Tough : 0;
public int Sheen => pk is IContestStatsReadOnly s ? s.CNT_Sheen : 0;
public int Markings => pk.MarkValue;
public string NotOT => pk.Format > 5 ? pk.HT_Name : "N/A";

View file

@ -21,6 +21,7 @@ public static class Pokerus
{
PA8 pa8 => HasVisitedAnother(pa8),
PB7 => false,
PK9 => false,
_ => true,
};

View file

@ -20,7 +20,7 @@ public static class BoxManipDefaults
new BoxManipSort(SortLevelReverse, EntitySorting.OrderByDescendingLevel),
new BoxManipSort(SortDate, EntitySorting.OrderByDateObtained, s => s.Generation >= 4),
new BoxManipSort(SortName, list => list.OrderBySpeciesName(GameInfo.Strings.Species)),
new BoxManipSort(SortFavorite, list => list.OrderByCustom(pk => pk is IFavorite {Favorite: true}), s => s.BlankPKM is IFavorite),
new BoxManipSort(SortFavorite, list => list.OrderByCustom(pk => pk is IFavorite {IsFavorite: true}), s => s.BlankPKM is IFavorite),
new BoxManipSortComplex(SortParty, (list, sav, start) => list.BubbleUp(sav, i => ((SAV7b)sav).Blocks.Storage.IsParty(i), start), s => s is SAV7b),
new BoxManipSort(SortShiny, list => list.OrderByCustom(pk => !pk.IsShiny)),
new BoxManipSort(SortRandom, list => list.OrderByCustom(_ => Util.Rand32())),
@ -36,9 +36,11 @@ public static class BoxManipDefaults
new BoxManipSort(SortTraining, list => list.OrderByCustom(pk => (pk.MaxEV * 6) - pk.EVTotal)),
new BoxManipSortComplex(SortOwner, (list, sav) => list.OrderByOwnership(sav)),
new BoxManipSort(SortType, list => list.OrderByCustom(pk => pk.PersonalInfo.Type1, pk => pk.PersonalInfo.Type2)),
new BoxManipSort(SortTypeTera, list => list.OrderByCustom(pk => ((ITeraTypeReadOnly)pk).TeraType, pk => pk is ITeraTypeReadOnly)),
new BoxManipSort(SortVersion, list => list.OrderByCustom(pk => pk.Generation, pk => pk.Version, pk => pk.Met_Location), s => s.Generation >= 3),
new BoxManipSort(SortBST, list => list.OrderByCustom(pk => pk.PersonalInfo.GetBaseStatTotal())),
new BoxManipSort(SortCP, list => list.OrderByCustom(pk => pk is PB7 pb7 ? pb7.Stat_CP : 0), s => s is SAV7b),
new BoxManipSort(SortScale, list => list.OrderByCustom(pk => pk is IScaledSize3 s3 ? s3.Scale : -1), s => s.BlankPKM is IScaledSize3),
new BoxManipSort(SortLegal, list => list.OrderByCustom(pk => !new LegalityAnalysis(pk).Valid)),
new BoxManipSort(SortEncounterType, list => list.OrderByCustom(pk => new LegalityAnalysis(pk).Info.EncounterMatch.LongName)),
};

View file

@ -30,9 +30,11 @@ public enum BoxManipType
SortTraining,
SortOwner,
SortType,
SortTypeTera,
SortVersion,
SortBST,
SortCP,
SortScale,
SortLegal,
SortEncounterType,

View file

@ -20,8 +20,8 @@ public sealed class FakeSaveFile : SaveFile
public override int GetBoxOffset(int box) => -1;
public override string GetBoxName(int box) => $"Box {box:00}";
public override void SetBoxName(int box, string value) { }
public override int OTLength => 5;
public override int NickLength => 5;
public override int MaxStringLengthOT => 5;
public override int MaxStringLengthNickname => 5;
public override ushort MaxMoveID => 5;
public override ushort MaxSpeciesID => 1;
public override int MaxItemID => 5;

View file

@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
namespace PKHeX.Core;
@ -56,6 +56,7 @@ public static partial class Extensions
SAV8SWSH ss => GetExtraSlots8(ss),
SAV8BS bs => GetExtraSlots8b(bs),
SAV8LA la => GetExtraSlots8a(la),
SAV9SV sv => GetExtraSlots9(sv),
_ => None,
};
@ -220,8 +221,17 @@ public static partial class Extensions
};
}
private static List<SlotInfoMisc> GetExtraSlots8a(SAV8LA sav)
private static List<SlotInfoMisc> GetExtraSlots8a(SAV8LA _)
{
return new List<SlotInfoMisc>();
}
private static List<SlotInfoMisc> GetExtraSlots9(SAV9SV sav)
{
var list = new List<SlotInfoMisc>();
var block = sav.Blocks.GetBlockSafe(SaveBlockAccessor9SV.KFusedCalyrex);
var c = new SlotInfoMisc(block.Data, 3, 0, true) { Type = StorageSlotType.Fused };
list.Add(c);
return list;
}
}

View file

@ -77,16 +77,19 @@ public static class ShowdownParsing
return species switch
{
(int)Basculin when form is "Blue" => "Blue-Striped",
(int)Vivillon when form is "Poké Ball" => "Pokeball",
(int)Zygarde => form.Replace("-C", string.Empty).Replace("50%", string.Empty),
(int)Basculin when form is "Blue" => "Blue-Striped",
(int)Vivillon when form is "Poké Ball" => "Pokeball",
(int)Zygarde => form.Replace("-C", string.Empty).Replace("50%", string.Empty),
(int)Minior when form.StartsWith("M-", StringComparison.OrdinalIgnoreCase) => MiniorFormName,
(int)Minior => form.Replace("C-", string.Empty),
(int)Necrozma when form is "Dusk" => $"{form}-Mane",
(int)Necrozma when form is "Dawn" => $"{form}-Wings",
(int)Polteageist or (int)Sinistea => form == "Antique" ? form : string.Empty,
(int)Minior => form.Replace("C-", string.Empty),
(int)Necrozma when form is "Dusk" => $"{form}-Mane",
(int)Necrozma when form is "Dawn" => $"{form}-Wings",
(int)Polteageist or (int)Sinistea => form == "Antique" ? form : string.Empty,
(int)Tauros when form is "Paldea (Fire)" => "Paldea-Fire",
(int)Tauros when form is "Paldea (Water)" => "Paldea-Water",
(int)Maushold when form is "Family of Four" => "Four",
(int)Furfrou or (int)Greninja or (int)Rockruff => string.Empty,
(int)Furfrou or (int)Greninja or (int)Rockruff or (int)Tatsugiri or (int)Koraidon or (int)Miraidon => string.Empty,
_ => Legal.Totem_USUM.Contains(species) && form == "Large"
? Legal.Totem_Alolan.Contains(species) && species != (int)Mimikyu ? "Alola-Totem" : "Totem"
@ -118,6 +121,9 @@ public static class ShowdownParsing
(int)Zygarde when ability == 211 => $"{(string.IsNullOrWhiteSpace(form) ? "50%" : "10%")}-C",
(int)Greninja when ability == 210 => "Ash", // Battle Bond
(int)Rockruff when ability == 020 => "Dusk", // Rockruff-1
(int)Tauros when form == "Paldea-Fire" => "Paldea (Fire)",
(int)Tauros when form == "Paldea-Water" => "Paldea (Water)",
(int)Maushold when form == "Four" => "Family of Four",
(int)Urshifu or (int)Pikachu or (int)Alcremie => form.Replace('-', ' '), // Strike and Cosplay
_ => Legal.Totem_USUM.Contains(species) && form.EndsWith("Totem", StringComparison.OrdinalIgnoreCase) ? "Large" : form,
@ -207,8 +213,7 @@ public static class ShowdownParsing
public static string GetLocalizedPreviewText(PKM pk, string language)
{
var set = new ShowdownSet(pk);
if (pk.Format <= 2) // Nature preview from IVs
set.Nature = Experience.GetNatureVC(pk.EXP);
set.InterpretAsPreview(pk);
return set.LocalizedText(language);
}
}

View file

@ -15,11 +15,18 @@ public sealed class ShowdownSet : IBattleTemplate
private const string LineSplit = ": ";
private const string ItemSplit = " @ ";
private static readonly char[] ParenJunk = { '(', ')', '[', ']' };
private static readonly ushort[] DashedSpecies = {782, 783, 784, 250, 032, 029}; // Kommo-o, Ho-Oh, Nidoran-M, Nidoran-F
private const int MAX_SPECIES = (int)MAX_COUNT - 1;
internal const string DefaultLanguage = GameLanguage.DefaultLanguage;
private static readonly GameStrings DefaultStrings = GameInfo.GetStrings(DefaultLanguage);
private static readonly ushort[] DashedSpecies =
{
(int)NidoranF, (int)NidoranM,
(int)HoOh,
(int)Jangmoo, (int)Hakamoo, (int)Kommoo,
(int)TingLu, (int)ChienPao, (int)WoChien, (int)ChiYu,
};
/// <inheritdoc/>
public ushort Species { get; private set; }
@ -48,7 +55,7 @@ public sealed class ShowdownSet : IBattleTemplate
public int Friendship { get; private set; } = 255;
/// <inheritdoc/>
public int Nature { get; set; } = -1;
public int Nature { get; private set; } = -1;
/// <inheritdoc/>
public string FormName { get; private set; } = string.Empty;
@ -63,16 +70,18 @@ public sealed class ShowdownSet : IBattleTemplate
public int[] IVs { get; } = {31, 31, 31, 31, 31, 31};
/// <inheritdoc/>
public int HiddenPowerType { get; set; } = -1;
public int HiddenPowerType { get; private set; } = -1;
public MoveType TeraType { get; private set; } = MoveType.Any;
/// <inheritdoc/>
public ushort[] Moves { get; } = {0, 0, 0, 0};
/// <inheritdoc/>
public bool CanGigantamax { get; set; }
public bool CanGigantamax { get; private set; }
/// <inheritdoc/>
public byte DynamaxLevel { get; set; } = 10;
public byte DynamaxLevel { get; private set; } = 10;
/// <summary>
/// Any lines that failed to be parsed.
@ -101,7 +110,7 @@ public sealed class ShowdownSet : IBattleTemplate
Form = ShowdownParsing.GetFormFromString(FormName, Strings, Species, Context);
// Handle edge case with fixed-gender forms.
if (Species is (int)Meowstic or (int)Indeedee or (int)Basculegion)
if (Species is (int)Meowstic or (int)Indeedee or (int)Basculegion or (int)Oinkologne)
ReviseGenderedForms();
}
@ -211,6 +220,7 @@ public sealed class ShowdownSet : IBattleTemplate
"IVs" => ParseLineIVs(value),
"Level" => ParseLevel(value),
"Dynamax Level" => ParseDynamax(value),
"Tera Type" => ParseTeraType(value),
_ => false,
};
@ -243,6 +253,17 @@ public sealed class ShowdownSet : IBattleTemplate
return (DynamaxLevel = (byte)val) is (>= 0 and <= 10);
}
private bool ParseTeraType(string value)
{
Context = EntityContext.Gen9;
var types = Strings.types;
var val = StringUtil.FindIndexIgnoreCase(types, value);
if (val < 0)
return false;
TeraType = (MoveType)val;
return true;
}
/// <summary>
/// Gets the standard Text representation of the set details.
/// </summary>
@ -297,6 +318,8 @@ public sealed class ShowdownSet : IBattleTemplate
// Secondary Stats
if ((uint)Ability < Strings.Ability.Count)
result.Add($"Ability: {Strings.Ability[Ability]}");
if (TeraType != MoveType.Any)
result.Add($"Tera Type: {Strings.Types[(int)TeraType]}");
if (Level != 100)
result.Add($"Level: {Level}");
if (Shiny)
@ -399,6 +422,16 @@ public sealed class ShowdownSet : IBattleTemplate
_ => displayIndex,
};
/// <summary>
/// Forces some properties to indicate the set for future display values.
/// </summary>
/// <param name="pk">PKM to convert to string</param>
public void InterpretAsPreview(PKM pk)
{
if (pk.Format <= 2) // Nature preview from IVs
Nature = Experience.GetNatureVC(pk.EXP);
}
/// <summary>
/// Converts the <see cref="PKM"/> data into an importable set format for Pokémon Showdown.
/// </summary>
@ -431,6 +464,8 @@ public sealed class ShowdownSet : IBattleTemplate
if (Array.IndexOf(Moves, (ushort)Move.HiddenPower) != -1)
HiddenPowerType = HiddenPower.GetType(IVs, Context);
if (pk is ITeraType t)
TeraType = t.TeraType;
if (pk is IHyperTrain h)
{
for (int i = 0; i < 6; i++)

View file

@ -273,5 +273,36 @@ public enum Ability
GrimNeigh,
AsOneI,
AsOneG,
LingeringAroma,
SeedSower,
ThermalExchange,
AngerShell,
PurifyingSalt,
WellBakedBody,
WindRider,
GuardDog,
RockyPayload,
WindPower,
ZerotoHero,
Commander,
Electromorphosis,
Protosynthesis,
QuarkDrive,
GoodasGold,
VesselofRuin,
SwordofRuin,
TabletsofRuin,
BeadsofRuin,
OrichalcumPulse,
HadronEngine,
Opportunist,
CudChew,
Sharpness,
SupremeOverlord,
Costar,
ToxicDebris,
ArmorTail,
EarthEater,
MyceliumMight,
MAX_COUNT,
}

View file

@ -219,6 +219,16 @@ public enum GameVersion : byte
/// Pokémon Shining Pearl (NX)
/// </summary>
SP = 49,
/// <summary>
/// Pokémon Scarlet (NX)
/// </summary>
SL = 50,
/// <summary>
/// Pokémon Violet (NX)
/// </summary>
VL = 51,
#endregion
// The following values are not actually stored values in pk data,
@ -404,6 +414,14 @@ public enum GameVersion : byte
/// <see cref="SP"/>
BDSP,
/// <summary>
/// Pokémon Scarlet &amp; Violet
/// </summary>
/// <remarks>Used to lump data from the associated games as data assets are shared.</remarks>
/// <see cref="SL"/>
/// <see cref="VL"/>
SV,
/// <summary>
/// Generation 1 Games
/// </summary>
@ -466,6 +484,12 @@ public enum GameVersion : byte
/// <see cref="PLA"/>
Gen8,
/// <summary>
/// Generation 9 Games
/// </summary>
/// <see cref="SV"/>
Gen9,
/// <summary>
/// Pocket Monsters Stadium data origin identifier
/// </summary>

View file

@ -1,4 +1,4 @@
namespace PKHeX.Core;
namespace PKHeX.Core;
/// <summary>
/// Move IDs for the corresponding English move name.
@ -856,5 +856,55 @@ public enum Move
SandsearStorm,
LunarBlessing,
TakeHeart,
TeraBlast,
SilkTrap,
AxeKick,
LastRespects,
LuminaCrash,
OrderUp,
JetPunch,
SpicyExtract,
SpinOut,
PopulationBomb,
IceSpinner,
GlaiveRush,
RevivalBlessing,
SaltCure,
TripleDive,
MortalSpin,
Doodle,
FilletAway,
KowtowCleave,
FlowerTrick,
TorchSong,
AquaStep,
RagingBull,
MakeItRain,
_875,
_876,
Ruination,
CollisionCourse,
ElectroDrift,
ShedTail,
ChillyReception,
TidyUp,
Snowscape,
Pounce,
Trailblaze,
ChillingWater,
HyperDrill,
TwinBeam,
RageFist,
ArmorCannon,
BitterBlade,
DoubleShock,
GigatonHammer,
Comeuppance,
AquaCutter,
BlazingTorque,
WickedTorque,
NoxiousTorque,
CombatTorque,
MagicalTorque,
MAX_COUNT,
}

View file

@ -1,4 +1,4 @@
namespace PKHeX.Core;
namespace PKHeX.Core;
/// <summary>
/// Species IDs for the corresponding English species name.
@ -911,5 +911,110 @@ public enum Species : ushort
Sneasler,
Overqwil,
Enamorus,
Sprigatito,
Floragato,
Meowscarada,
Fuecoco,
Crocalor,
Skeledirge,
Quaxly,
Quaxwell,
Quaquaval,
Lechonk,
Oinkologne,
Dudunsparce,
Tarountula,
Spidops,
Nymble,
Lokix,
Rellor,
Rabsca,
Greavard,
Houndstone,
Flittle,
Espathra,
Farigiraf,
Wiglett,
Wugtrio,
Dondozo,
Veluza,
Finizen,
Palafin,
Smoliv,
Dolliv,
Arboliva,
Capsakid,
Scovillain,
Tadbulb,
Bellibolt,
Varoom,
Revavroom,
Orthworm,
Tandemaus,
Maushold,
Cetoddle,
Cetitan,
Frigibax,
Arctibax,
Baxcalibur,
Tatsugiri,
Cyclizar,
Pawmi,
Pawmo,
Pawmot,
Wattrel,
Kilowattrel,
Bombirdier,
Squawkabilly,
Flamigo,
Klawf,
Nacli,
Naclstack,
Garganacl,
Glimmet,
Glimmora,
Shroodle,
Grafaiai,
Fidough,
Dachsbun,
Maschiff,
Mabosstiff,
Bramblin,
Brambleghast,
Gimmighoul,
Gholdengo,
GreatTusk,
BruteBonnet,
_980,
SandyShocks,
ScreamTail,
FlutterMane,
SlitherWing,
RoaringMoon,
IronTreads,
_987,
IronMoth,
IronHands,
IronJugulis,
IronThorns,
IronBundle,
IronValiant,
TingLu,
ChienPao,
WoChien,
ChiYu,
Koraidon,
Miraidon,
Tinkatink,
Tinkatuff,
Tinkaton,
Charcadet,
Armarouge,
Ceruledge,
Toedscool,
Toedscruel,
Kingambit,
Clodsire,
Annihilape,
MAX_COUNT,
}

View file

@ -26,7 +26,7 @@ public sealed class FilteredGameDataSource
}
var gamelist = GameUtil.GetVersionsWithinRange(sav, sav.Generation).ToList();
Games = Source.VersionDataSource.Where(g => gamelist.Contains((GameVersion)g.Value)).ToList();
Games = Source.VersionDataSource.Where(g => gamelist.Contains((GameVersion)g.Value) || g.Value == 0).ToList();
Languages = GameDataSource.LanguageDataSource(sav.Generation);
Balls = Source.BallDataSource.Where(b => b.Value <= sav.MaxBallID).ToList();
@ -38,18 +38,40 @@ public sealed class FilteredGameDataSource
private static IEnumerable<ComboItem> GetFilteredSpecies(IGameValueLimit sav, GameDataSource source, bool HaX = false)
{
var all = source.SpeciesDataSource;
if (HaX)
return source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID);
return FilterAbove(all, sav.MaxSpeciesID);
// Some games cannot acquire every Species that exists. Some can only acquire a subset.
return sav switch
{
SAV7b => source.SpeciesDataSource // LGPE: Kanto 151, Meltan/Melmetal
.Where(s => s.Value is <= (int)Core.Species.Mew or (int)Core.Species.Meltan or (int)Core.Species.Melmetal),
SAV8LA => source.SpeciesDataSource
.Where(s => PersonalTable.LA.IsSpeciesInGame((ushort)s.Value)),
_ => source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID),
SAV7b gg => FilterUnavailable(all, gg.Personal),
SAV8LA la => FilterUnavailable(all, la.Personal),
#if !DEBUG // Mainline games can be useful to show all for testing. Only filter out unavailable species in release builds.
SAV8SWSH swsh => FilterUnavailable(all, swsh.Personal),
SAV9SV sv => FilterUnavailable(all, sv.Personal),
#endif
_ => FilterAbove(all, sav.MaxSpeciesID),
};
static IEnumerable<ComboItem> FilterAbove(IReadOnlyList<ComboItem> species, int limit)
{
foreach (var s in species)
{
if (s.Value <= limit)
yield return s;
}
}
static IEnumerable<ComboItem> FilterUnavailable<T>(IReadOnlyList<ComboItem> source, T table) where T : IPersonalTable
{
foreach (var s in source)
{
var species = s.Value;
if (table.IsSpeciesInGame((ushort)species))
yield return s;
}
}
}
private static IEnumerable<ComboItem> GetFilteredMoves(IGameValueLimit sav, GameDataSource source, bool HaX = false)
@ -80,10 +102,10 @@ public sealed class FilteredGameDataSource
public IReadOnlyList<ComboItem> GetAbilityList(PKM pk)
{
return GetAbilityList(pk.PersonalInfo, pk.Format);
return GetAbilityList(pk.PersonalInfo);
}
public IReadOnlyList<ComboItem> GetAbilityList(IPersonalAbility pi, int format)
public IReadOnlyList<ComboItem> GetAbilityList(IPersonalAbility pi)
{
var list = new ComboItem[pi.AbilityCount];
@ -92,7 +114,8 @@ public sealed class FilteredGameDataSource
for (int i = 0; i < list.Length; i++)
{
var ability = pi.GetAbilityAtIndex(i);
list[i] = new ComboItem(alist[ability] + suffix[i], ability);
var display = alist[ability] + suffix[i];
list[i] = new ComboItem(display, ability);
}
return list;

View file

@ -50,11 +50,13 @@ public sealed class GameDataSource
}
LegalMoveDataSource = legal;
VersionDataSource = GetVersionList(s);
var games = GetVersionList(s);
VersionDataSource = games;
Met = new MetDataSource(s);
Empty = new ComboItem(s.itemlist[0], 0);
games[^1] = Empty;
}
/// <summary> Strings that this object's lists were generated with. </summary>
@ -83,11 +85,12 @@ public sealed class GameDataSource
return Util.GetVariedCBListBall(itemList, ball_nums, ball_vals);
}
private static IReadOnlyList<ComboItem> GetVersionList(GameStrings s)
private static ComboItem[] GetVersionList(GameStrings s)
{
var list = s.gamelist;
ReadOnlySpan<byte> games = stackalloc byte[]
{
50, 51, // 9 sv
47, // 8 legends arceus
48, 49, // 8 bdsp
44, 45, // 8 swsh
@ -107,6 +110,8 @@ public sealed class GameDataSource
39, 40, 41, // 7vc2
35, 36, 37, 38, // 7vc1
34, // 7go
00,
};
return Util.GetUnsortedCBList(list, games);

View file

@ -17,15 +17,9 @@ public sealed class GameStrings : IBasicStrings
private readonly string[] g4items, g3coloitems, g3xditems, g3items, g2items, g1items;
// Met Locations
public readonly string[] metGSC_00000, metRSEFRLG_00000, metCXD_00000;
public readonly string[] metHGSS_00000, metHGSS_02000, metHGSS_03000;
public readonly string[] metBW2_00000, metBW2_30000, metBW2_40000, metBW2_60000;
public readonly string[] metXY_00000, metXY_30000, metXY_40000, metXY_60000;
public readonly string[] metSM_00000, metSM_30000, metSM_40000, metSM_60000;
public readonly string[] metGG_00000, metGG_30000, metGG_40000, metGG_60000;
public readonly string[] metSWSH_00000, metSWSH_30000, metSWSH_40000, metSWSH_60000;
public readonly string[] metBDSP_00000, metBDSP_30000, metBDSP_40000, metBDSP_60000;
public readonly string[] metLA_00000, metLA_30000, metLA_40000, metLA_60000;
public readonly LocationSet0 Gen2, Gen3, CXD;
public readonly LocationSet4 Gen4;
public readonly LocationSet6 Gen5, Gen6, Gen7, Gen7b, Gen8, Gen8a, Gen8b, Gen9;
// Misc
public readonly string[] wallpapernames, puffs, walkercourses;
@ -57,7 +51,7 @@ public sealed class GameStrings : IBasicStrings
1712, 1713, 1746, 1747, 1748, 1749, 1750, 1771,
};
public GameStrings(string l)
internal GameStrings(string l)
{
lang = l;
LanguageIndex = GameLanguage.GetLanguageIndex(l);
@ -70,11 +64,10 @@ public sealed class GameStrings : IBasicStrings
g2items = Get("ItemsG2");
g1items = Get("ItemsG1");
metRSEFRLG_00000 = Get("rsefrlg_00000");
metGSC_00000 = Get("gsc_00000");
metCXD_00000 = Get("cxd_00000");
SanitizeMetStringsCXD(metCXD_00000);
Gen2 = new(Get("gsc_00000"));
Gen3 = new(Get("rsefrlg_00000"));
CXD = new(Get("cxd_00000"));
SanitizeMetStringsCXD(CXD.Met0);
// Current Generation strings
natures = Util.GetNaturesList(l);
@ -121,41 +114,16 @@ public sealed class GameStrings : IBasicStrings
ugtreasures = Get("dppt_ugtreasures");
EggName = specieslist[0];
metHGSS_00000 = Get("hgss_00000");
metHGSS_02000 = Get("hgss_02000");
metHGSS_03000 = Get("hgss_03000");
metBW2_00000 = Get("bw2_00000");
metBW2_30000 = Get("bw2_30000");
metBW2_40000 = Get("bw2_40000");
metBW2_60000 = Get("bw2_60000");
metXY_00000 = Get("xy_00000");
metXY_30000 = Get("xy_30000");
metXY_40000 = Get("xy_40000");
metXY_60000 = Get("xy_60000");
metSM_00000 = Get("sm_00000");
metSM_30000 = Get("sm_30000");
metSM_40000 = Get("sm_40000");
metSM_60000 = Get("sm_60000");
Gen4 = Get4("hgss");
Gen5 = Get6("bw2");
Gen6 = Get6("xy");
Gen7 = Get6("sm");
metGG_00000 = Get("gg_00000");
metGG_30000 = metSM_30000;
metGG_40000 = Get("gg_40000");
metGG_60000 = metSM_60000;
metSWSH_00000 = Get("swsh_00000");
metSWSH_30000 = Get("swsh_30000");
metSWSH_40000 = Get("swsh_40000");
metSWSH_60000 = Get("swsh_60000");
metLA_00000 = Get("la_00000");
metLA_30000 = Get("la_30000");
metLA_40000 = Get("la_40000");
metLA_60000 = Get("la_60000");
metBDSP_00000 = Get("bdsp_00000");
metBDSP_30000 = Get("bdsp_30000");
metBDSP_40000 = Get("bdsp_40000");
metBDSP_60000 = Get("bdsp_60000");
Gen7b = Get6("gg", Gen7.Met3, Gen7.Met6);
Gen8 = Get6("swsh");
Gen8a = Get6("la");
Gen8b = Get6("bdsp");
Gen9 = Get6("sv");
Sanitize();
@ -163,11 +131,35 @@ public sealed class GameStrings : IBasicStrings
Get("mail4").CopyTo(g4items, 137);
}
private LocationSet4 Get4(string ident)
{
var met0 = Get($"{ident}_00000");
var met2 = Get($"{ident}_02000");
var met3 = Get($"{ident}_03000");
return new LocationSet4(met0, met2, met3);
}
private LocationSet6 Get6(string ident)
{
var met0 = Get($"{ident}_00000");
var met3 = Get($"{ident}_30000");
var met4 = Get($"{ident}_40000");
var met6 = Get($"{ident}_60000");
return new LocationSet6(met0,met3, met4, met6);
}
private LocationSet6 Get6(string ident, string[] met3, string[] met6)
{
var met0 = Get($"{ident}_00000");
var met4 = Get($"{ident}_40000");
return new LocationSet6(met0, met3, met4, met6);
}
private string[] GetG3CXD(string[] arr, string fileName)
{
// Concatenate the Gen3 Item list with the CXD item array; CXD items starting at index 500.
// Empty slots between the two lists are marked as unused.
string[] item500 = Get(fileName);
var item500 = Get(fileName);
var result = new string[500 + item500.Length];
for (int i = arr.Length; i < result.Length; i++)
result[i] = $"UNUSED {i}";
@ -178,13 +170,13 @@ public sealed class GameStrings : IBasicStrings
private static void SanitizeMetStringsCXD(string[] cxd)
{
// Less than 10% of met location values are unique.
// Less than 10% of location values are unique.
// Just mark them with the ID if they aren't empty.
for (int i = 0; i < 227; i++)
{
var str = cxd[i];
ref var str = ref cxd[i];
if (str.Length != 0)
cxd[i] = $"{str} [{i:000}]";
str = $"{str} [{i:000}]";
}
}
@ -201,7 +193,7 @@ public sealed class GameStrings : IBasicStrings
specieslist[0] = EmptyIndex;
// Fix (None) tags
var none = $"({itemlist[0]})";
abilitylist[0] = itemlist[0] = movelist[0] = metXY_00000[0] = metBW2_00000[0] = metHGSS_00000[0] = metCXD_00000[0] = puffs[0] = none;
abilitylist[0] = itemlist[0] = movelist[0] = Gen6.Met0[0] = Gen5.Met0[0] = Gen4.Met0[0] = CXD.Met0[0] = puffs[0] = none;
}
private void SanitizeItemNames()
@ -268,10 +260,13 @@ public sealed class GameStrings : IBasicStrings
g3coloitems[500 + 10] += " (COLO)";
SanitizeItemsLA(itemlist);
SanitizeItemsSV(itemlist);
if (lang is "fr")
{
itemlist[1681] += " (LA)"; // Galet Noir dup with 617 (Dark Stone | Black Tumblestone)
itemlist[1262] += " (G8)"; // Nouilles dup with 1934 (Instant Noodles | Rice)
itemlist[1263] += " (G8)"; // Steak Haché dup with 1925 (Precooked Burger | Herbed Sausage)
}
else if (lang is "ja")
{
@ -284,6 +279,19 @@ public sealed class GameStrings : IBasicStrings
itemlist[1763] += " (LA)"; // Secret Medicine
}
private static void SanitizeItemsSV(string[] items)
{
items[2313] += " (1)"; // Academy Bottle
items[2314] += " (2)"; // Academy Bottle
items[2318] += " (1)"; // Academy Cup
items[2319] += " (2)"; // Academy Cup
items[2323] += " (1)"; // Academy Tablecloth
items[2324] += " (2)"; // Academy Tablecloth
items[2329] += " (1)"; // Academy Ball
items[2330] += " (2)"; // Academy Ball
items[0694] += " (G6-8)"; // TM100, not held.
}
private static void SanitizeItemsLA(string[] items)
{
// Recipes
@ -351,209 +359,257 @@ public sealed class GameStrings : IBasicStrings
private void SanitizeMetLocations()
{
// Fix up some of the Location strings to make them more descriptive
SanitizeMetG4HGSS();
SanitizeMetG5BW();
SanitizeMetG6XY();
SanitizeMetG7SM();
SanitizeMetG8SWSH();
SanitizeMetG8BDSP();
SanitizeMetG8PLA();
SanitizeMetGen4(Gen4);
SanitizeMetGen5(Gen5);
SanitizeMetGen6(Gen6);
SanitizeMetGen7(Gen7);
SanitizeMetGen7b(Gen7b);
SanitizeMetGen8(Gen8);
SanitizeMetGen8a(Gen8a);
SanitizeMetGen8b(Gen8b);
SanitizeMetGen9(Gen9);
if (lang is "es" or "it")
{
// Campeonato Mundial duplicates
for (int i = 28; i < 35; i++)
metXY_40000[i] += " (-)";
Gen6.Met4[i] += " (-)";
// Evento de Videojuegos -- first as duplicate
metXY_40000[35] += " (-)";
metSM_40000[38] += " (-)";
metGG_40000[27] += " (-)";
Gen6.Met4[35] += " (-)";
Gen7.Met4[38] += " (-)";
Gen7b.Met4[27] += " (-)";
}
if (lang == "ko")
{
// Pokémon Ranger duplicate (should be Ranger Union)
metBW2_40000[71] += " (-)";
Gen5.Met4[71] += " (-)";
}
}
private void SanitizeMetG4HGSS()
private void SanitizeMetGen4(LocationSet4 set)
{
metHGSS_00000[054] += " (DP/Pt)"; // Victory Road
metHGSS_00000[221] += " (HG/SS)"; // Victory Road
set.Met0[054] += " (DP/Pt)"; // Victory Road
set.Met0[221] += " (HG/SS)"; // Victory Road
// German language duplicate; handle for all since it can be confused.
metHGSS_00000[104] += " (DP/Pt)"; // Vista Lighthouse
metHGSS_00000[212] += " (HG/SS)"; // Lighthouse
set.Met0[104] += " (DP/Pt)"; // Vista Lighthouse
set.Met0[212] += " (HG/SS)"; // Lighthouse
metHGSS_02000[1] += $" ({NPC})"; // Anything from an NPC
metHGSS_02000[2] += $" ({EggName})"; // Egg From Link Trade
set.Met2[1] += $" ({NPC})"; // Anything from an NPC
set.Met2[2] += $" ({EggName})"; // Egg From Link Trade
}
private void SanitizeMetG5BW()
private void SanitizeMetGen5(LocationSet6 set)
{
metBW2_00000[36] = $"{metBW2_00000[84]}/{metBW2_00000[36]}"; // Cold Storage in BW = PWT in BW2
metBW2_00000[40] += " (B/W)"; // Victory Road in BW
metBW2_00000[134] += " (B2/W2)"; // Victory Road in B2W2
set.Met0[36] = $"{set.Met0[84]}/{set.Met0[36]}"; // Cold Storage in BW = PWT in BW2
set.Met0[40] += " (B/W)"; // Victory Road in BW
set.Met0[134] += " (B2/W2)"; // Victory Road in B2W2
// BW2 Entries from 76 to 105 are for Entralink in BW
for (int i = 76; i < 106; i++)
metBW2_00000[i] += "●";
set.Met0[i] += "●";
// Collision between 40002 (legal) and 00002 (illegal) "Faraway place"
if (metBW2_00000[2] == metBW2_40000[2])
metBW2_00000[2] += " (2)";
if (set.Met0[2] == set.Met4[2])
set.Met0[2] += " (2)";
for (int i = 97; i < 109; i++)
metBW2_40000[i] += $" ({i - 97})";
set.Met4[i] += $" ({i - 97})";
// Localize the Poketransfer to the language (30001)
metBW2_30000[1] = GameLanguage.GetTransporterName(LanguageIndex);
metBW2_30000[2] += $" ({NPC})"; // Anything from an NPC
metBW2_30000[3] += $" ({EggName})"; // Link Trade (Egg)
set.Met3[1] = GameLanguage.GetTransporterName(LanguageIndex);
set.Met3[2] += $" ({NPC})"; // Anything from an NPC
set.Met3[3] += $" ({EggName})"; // Link Trade (Egg)
// Zorua/Zoroark events
metBW2_30000[10] = $"{specieslist[251]} ({specieslist[570]} 1)"; // Celebi's Zorua Event
metBW2_30000[11] = $"{specieslist[251]} ({specieslist[570]} 2)"; // Celebi's Zorua Event
metBW2_30000[12] = $"{specieslist[571]} (1)"; // Zoroark
metBW2_30000[13] = $"{specieslist[571]} (2)"; // Zoroark
set.Met3[10] = $"{specieslist[251]} ({specieslist[570]} 1)"; // Celebi's Zorua Event
set.Met3[11] = $"{specieslist[251]} ({specieslist[570]} 2)"; // Celebi's Zorua Event
set.Met3[12] = $"{specieslist[571]} (1)"; // Zoroark
set.Met3[13] = $"{specieslist[571]} (2)"; // Zoroark
metBW2_60000[3] += $" ({EggName})"; // Egg Treasure Hunter/Breeder, whatever...
set.Met6[3] += $" ({EggName})"; // Egg Treasure Hunter/Breeder, whatever...
}
private void SanitizeMetG6XY()
private void SanitizeMetGen6(LocationSet6 set)
{
// Add in the sub-location if available.
for (int i = 8; i <= 136; i += 2)
{
var nextLoc = metXY_00000[i + 1];
var nextLoc = set.Met0[i + 1];
if (nextLoc.Length == 0)
continue;
metXY_00000[i + 1] = string.Empty;
metXY_00000[i] += $" ({nextLoc})";
set.Met0[i + 1] = string.Empty;
set.Met0[i] += $" ({nextLoc})";
}
metXY_00000[104] += " (X/Y)"; // Victory Road
metXY_00000[106] += " (X/Y)"; // Pokémon League
metXY_00000[202] += " (OR/AS)"; // Pokémon League
metXY_00000[298] += " (OR/AS)"; // Victory Road
metXY_30000[1] += $" ({NPC})"; // Anything from an NPC
metXY_30000[2] += $" ({EggName})"; // Egg From Link Trade
set.Met0[104] += " (X/Y)"; // Victory Road
set.Met0[106] += " (X/Y)"; // Pokémon League
set.Met0[202] += " (OR/AS)"; // Pokémon League
set.Met0[298] += " (OR/AS)"; // Victory Road
set.Met3[1] += $" ({NPC})"; // Anything from an NPC
set.Met3[2] += $" ({EggName})"; // Egg From Link Trade
for (int i = 63; i <= 69; i++)
metXY_40000[i] += $" ({i - 62})";
set.Met4[i] += $" ({i - 62})";
}
private void SanitizeMetG7SM()
private void SanitizeMetGen7(LocationSet6 set)
{
// Sun/Moon duplicates -- elaborate!
for (int i = 6; i < metSM_00000.Length; i += 2)
for (int i = 6; i < set.Met0.Length; i += 2)
{
if (i is >= 194 and < 198)
continue; // Skip Island Names (unused)
var nextLoc = metSM_00000[i + 1];
var nextLoc = set.Met0[i + 1];
if (nextLoc.Length == 0)
continue;
metSM_00000[i + 1] = string.Empty;
metSM_00000[i] += $" ({nextLoc})";
set.Met0[i + 1] = string.Empty;
set.Met0[i] += $" ({nextLoc})";
}
metSM_00000[32] += " (2)";
metSM_00000[102] += " (2)";
set.Met0[32] += " (2)";
set.Met0[102] += " (2)";
metSM_30000[1] += $" ({NPC})"; // Anything from an NPC
metSM_30000[2] += $" ({EggName})"; // Egg From Link Trade
set.Met3[1] += $" ({NPC})"; // Anything from an NPC
set.Met3[2] += $" ({EggName})"; // Egg From Link Trade
for (int i = 3; i <= 6; i++) // distinguish first set of regions (unused) from second (used)
metSM_30000[i] += " (-)";
set.Met3[i] += " (-)";
for (int i = 59; i < 66; i++) // distinguish Event year duplicates
metSM_40000[i] += " (-)";
for (int i = 48; i < 55; i++) // distinguish Event year duplicates
metGG_40000[i] += " (-)";
set.Met4[i] += " (-)";
}
private void SanitizeMetG8SWSH()
private void SanitizeMetGen7b(LocationSet6 set)
{
for (int i = 48; i < 55; i++) // distinguish Event year duplicates
set.Met4[i] += " (-)";
}
private void SanitizeMetGen8(LocationSet6 set)
{
// SW/SH duplicates -- elaborate!
for (int i = 88; i < metSWSH_00000.Length; i += 2)
for (int i = 88; i < set.Met0.Length; i += 2)
{
var nextLoc = metSWSH_00000[i + 1];
var nextLoc = set.Met0[i + 1];
if (nextLoc.Length == 0)
continue;
metSWSH_00000[i + 1] = string.Empty;
metSWSH_00000[i] += $" ({nextLoc})";
set.Met0[i + 1] = string.Empty;
set.Met0[i] += $" ({nextLoc})";
}
metSWSH_30000[1] += $" ({NPC})"; // Anything from an NPC
metSWSH_30000[2] += $" ({EggName})"; // Egg From Link Trade
set.Met3[1] += $" ({NPC})"; // Anything from an NPC
set.Met3[2] += $" ({EggName})"; // Egg From Link Trade
for (int i = 3; i <= 6; i++) // distinguish first set of regions (unused) from second (used)
metSWSH_30000[i] += " (-)";
metSWSH_30000[19] += " (?)"; // Kanto for the third time
set.Met3[i] += " (-)";
set.Met3[19] += " (?)"; // Kanto for the third time
for (int i = 55; i < 61; i++) // distinguish Event year duplicates
metSWSH_40000[i] += " (-)";
metSWSH_40000[30] += " (-)"; // a Video game Event (in spanish etc) -- duplicate with line 39
metSWSH_40000[53] += " (-)"; // a Pokémon event -- duplicate with line 37
set.Met4[i] += " (-)";
set.Met4[30] += " (-)"; // a Video game Event (in spanish etc) -- duplicate with line 39
set.Met4[53] += " (-)"; // a Pokémon event -- duplicate with line 37
metSWSH_40000[81] += " (-)"; // Pokémon GO -- duplicate with 30000's entry
metSWSH_40000[86] += " (-)"; // Pokémon HOME -- duplicate with 30000's entry
// metSWSH_30000[12] += " (-)"; // Pokémon GO -- duplicate with 40000's entry
// metSWSH_30000[18] += " (-)"; // Pokémon HOME -- duplicate with 40000's entry
set.Met4[81] += " (-)"; // Pokémon GO -- duplicate with 30000's entry
set.Met4[86] += " (-)"; // Pokémon HOME -- duplicate with 30000's entry
// set.Met3[12] += " (-)"; // Pokémon GO -- duplicate with 40000's entry
// set.Met3[18] += " (-)"; // Pokémon HOME -- duplicate with 40000's entry
}
private void SanitizeMetG8BDSP()
private void SanitizeMetGen8b(LocationSet6 set)
{
metBDSP_30000[1] += $" ({NPC})"; // Anything from an NPC
metBDSP_30000[2] += $" ({EggName})"; // Egg From Link Trade
set.Met3[1] += $" ({NPC})"; // Anything from an NPC
set.Met3[2] += $" ({EggName})"; // Egg From Link Trade
Deduplicate(metBDSP_00000, 00000);
Deduplicate(metBDSP_30000, 30000);
Deduplicate(metBDSP_40000, 40000);
Deduplicate(metBDSP_60000, 60000);
Deduplicate(set.Met0, 00000);
Deduplicate(set.Met3, 30000);
Deduplicate(set.Met4, 40000);
Deduplicate(set.Met6, 60000);
}
private void SanitizeMetG8PLA()
private void SanitizeMetGen8a(LocationSet6 set)
{
metLA_00000[31] += " (2)"; // in Floaro Gardens
metLA_30000[1] += $" ({NPC})"; // Anything from an NPC
metLA_30000[2] += $" ({EggName})"; // Egg From Link Trade
set.Met0[31] += " (2)"; // in Floaro Gardens
set.Met3[1] += $" ({NPC})"; // Anything from an NPC
set.Met3[2] += $" ({EggName})"; // Egg From Link Trade
for (int i = 3; i <= 6; i++) // distinguish first set of regions (unused) from second (used)
metLA_30000[i] += " (-)";
metLA_30000[19] += " (?)"; // Kanto for the third time
set.Met3[i] += " (-)";
set.Met3[19] += " (?)"; // Kanto for the third time
metLA_40000[30] += " (-)"; // a Video game Event (in spanish etc) -- duplicate with line 39
metLA_40000[53] += " (-)"; // a Pokémon event -- duplicate with line 37
set.Met4[30] += " (-)"; // a Video game Event (in spanish etc) -- duplicate with line 39
set.Met4[53] += " (-)"; // a Pokémon event -- duplicate with line 37
metLA_40000[81] += " (-)"; // Pokémon GO -- duplicate with 30000's entry
metLA_40000[86] += " (-)"; // Pokémon HOME -- duplicate with 30000's entry
// metLA_30000[12] += " (-)"; // Pokémon GO -- duplicate with 40000's entry
// metLA_30000[18] += " (-)"; // Pokémon HOME -- duplicate with 40000's entry
set.Met4[81] += " (-)"; // Pokémon GO -- duplicate with 30000's entry
set.Met4[86] += " (-)"; // Pokémon HOME -- duplicate with 30000's entry
// set.Met3[12] += " (-)"; // Pokémon GO -- duplicate with 40000's entry
// set.Met3[18] += " (-)"; // Pokémon HOME -- duplicate with 40000's entry
for (int i = 55; i <= 60; i++) // distinguish second set of YYYY Event from the first
metLA_40000[i] += " (-)";
set.Met4[i] += " (-)";
if (lang is "es")
{
// en un lugar misterioso
metLA_00000[2] += " (2)"; // in a mystery zone
metLA_00000[4] += " (4)"; // in a faraway place
}
else if (lang is "ja")
{
// ひょうざんのいくさば
metLA_00000[099] += " (099)"; // along the Arenas Approach
metLA_00000[142] += " (142)"; // at Icepeak Arena
}
else if (lang is "fr" or "it")
if (lang is "en" or "es" or "de" or "it" or "fr")
{
// Final four locations are not nouns, rather the same location reference (at the...) as prior entries.
metLA_00000[152] += " (152)"; // Galaxy Hall
metLA_00000[153] += " (153)"; // Front Gate
metLA_00000[154] += " (154)"; // Farm
metLA_00000[155] += " (155)"; // Training Grounds
set.Met0[152] += " (152)"; // Galaxy Hall
set.Met0[153] += " (153)"; // Front Gate
set.Met0[154] += " (154)"; // Farm
set.Met0[155] += " (155)"; // Training Grounds
}
}
private void SanitizeMetGen9(LocationSet6 set)
{
var m = set.Met0;
m[110] += " (1)"; // Area Zero
m[112] += " (2)"; // Area Zero
m[114] += " (3)"; // Area Zero
m[116] += " (4)"; // Area Zero
m[124] += " (5)"; // Area Zero
m[126] += " (6)"; // Area Zero
m[128] += " (7)"; // Area Zero
m[040] += " (1)"; // Casseroya Lake
m[108] += " (2)"; // Casseroya Lake
m[034] += " (1)"; // East Province (Area One)
m[104] += " (2)"; // East Province (Area One)
m[038] += " (1)"; // Glaseado Mountain
m[042] += " (2)"; // Glaseado Mountain
m[068] += " (3)"; // Glaseado Mountain
m[008] += " (1)"; // Mesagoza
m[072] += " (2)"; // Mesagoza
m[074] += " (3)"; // Mesagoza
m[044] += " (1)"; // North Province (Area Three)
m[102] += " (2)"; // North Province (Area Three)
m[047] += " (1)"; // North Province (Area Two)
m[098] += " (2)"; // North Province (Area Two)
m[016] += " (1)"; // South Province (Area Six)
m[066] += " (2)"; // South Province (Area Six)
m[030] += " (1)"; // Tagtree Thicket
m[106] += " (2)"; // Tagtree Thicket
m[022] += " (1)"; // West Province (Area One)
m[100] += " (2)"; // West Province (Area One)
m[052] += " (1)"; // Zero Gate
m[054] += " (2)"; // Zero Gate
m[118] += " (1)"; // Zero Lab
m[120] += " (2)"; // Zero Lab
m[122] += " (3)"; // Zero Lab
set.Met3[1] += $" ({NPC})"; // Anything from an NPC
set.Met3[2] += $" ({EggName})"; // Egg From Link Trade
for (int i = 3; i <= 6; i++) // distinguish first set of regions (unused) from second (used)
set.Met3[i] += " (-)";
set.Met3[19] += " (?)"; // Kanto for the third time
for (int i = 49; i <= 54; i++) // distinguish Event year duplicates
set.Met4[i] += " (-)";
set.Met4[27] += " (-)"; // a Video game Event (in spanish etc) -- duplicate with line 36
set.Met4[48] += " (-)"; // a Pokémon event -- duplicate with line 34
set.Met4[73] += " (-)"; // Pokémon GO -- duplicate with 30000's entry
set.Met4[78] += " (-)"; // Pokémon HOME -- duplicate with 30000's entry
// set.Met3[12] += " (-)"; // Pokémon GO -- duplicate with 40000's entry
// set.Met3[18] += " (-)"; // Pokémon HOME -- duplicate with 40000's entry
}
private static void Deduplicate(string[] arr, int group)
{
var counts = new Dictionary<string, int>();
@ -565,40 +621,37 @@ public sealed class GameStrings : IBasicStrings
}
#if !DEBUG
var maxCounts = new Dictionary<string, int>(counts);
var maxCounts = new Dictionary<string, int>(counts);
#endif
for (var i = arr.Length - 1; i >= 0; i--)
{
#if DEBUG
arr[i] += $" ({group + i:00000})";
#else
var s = arr[i];
var count = counts[s]--;
if (count == 1)
continue;
var format = maxCounts[s] switch
{
>= 100 => " ({0:000})",
>= 10 => " ({0:00})",
_ => " ({0})",
};
arr[i] += string.Format(format, count);
var s = arr[i];
var count = counts[s]--;
if (count == 1)
continue;
var format = maxCounts[s] switch
{
>= 100 => " ({0:000})",
>= 10 => " ({0:00})",
_ => " ({0})",
};
arr[i] += string.Format(format, count);
#endif
}
}
public string[] GetItemStrings(EntityContext context, GameVersion game = GameVersion.Any) => context switch
{
EntityContext.Gen1 => g1items,
EntityContext.Gen2 => g2items,
EntityContext.Gen3 => GetItemStrings3(game),
EntityContext.Gen4 => g4items, // mail names changed 4->5
EntityContext.Gen8b => GetItemStrings8b(),
_ => context.Generation() switch
{
0 => Array.Empty<string>(),
1 => g1items,
2 => g2items,
3 => GetItemStrings3(game),
4 => g4items, // mail names changed 4->5
_ => itemlist,
},
EntityContext.Gen9 => GetItemStrings9(),
_ => itemlist,
};
private string[] GetItemStrings8b()
@ -620,6 +673,22 @@ public sealed class GameStrings : IBasicStrings
return clone;
}
private string[] GetItemStrings9()
{
// in Generation 9, TMs are padded to 3 digits; format them appropriately here
var clone = (string[])itemlist.Clone();
var zero = lang is "ja" or "zh" or "zh2" ? "" : "0";
for (int i = 328; i <= 419; i++)
clone[i] = clone[i].Insert(clone[i].Length - 2, zero);
for (int i = 618; i <= 620; i++)
clone[i] = clone[i].Insert(clone[i].Length - 2, zero);
for (int i = 690; i <= 693; i++)
clone[i] = clone[i].Insert(clone[i].Length - 2, zero);
return clone;
}
private string[] GetItemStrings3(GameVersion game)
{
switch (game)
@ -649,51 +718,59 @@ public sealed class GameStrings : IBasicStrings
/// <returns>Location name. May be an empty string if no location name is known for that location value.</returns>
public string GetLocationName(bool isEggLocation, int location, int format, int generation, GameVersion version)
{
int gen = -1;
int bankID = 0;
if (format == 1)
{
// Legality binaries have Location IDs that were manually remapped to Gen3 location IDs.
if (location == 0)
return string.Empty;
format = 3; // Legality binaries have Location IDs that were manually remapped to Gen3 location IDs.
return Gen3.GetLocationName(location);
}
if (format == 2)
{
gen = 2;
}
else if (format == 3)
{
gen = 3;
}
else if (generation == 4 && (isEggLocation || format == 4)) // 4
{
const int size = 1000;
bankID = location / size;
gen = 4;
location %= size;
}
else // 5-7+
{
const int size = 10000;
bankID = location / size;
int g = generation;
if (g >= 5)
gen = g;
else if (format >= 5)
gen = format;
location %= size;
}
var bank = GetLocationNames(gen, version, bankID);
if ((uint)location >= bank.Count)
generation = GetGeneration(generation, isEggLocation, format);
var set = GetLocations(generation, version);
if (set is null)
return string.Empty;
return bank[location];
return set.GetLocationName(location);
}
private static int GetGeneration(int generation, bool isEggLocation, int format)
{
if (format == 2)
return 2;
if (format == 3)
return 3;
if (generation == 4 && (isEggLocation || format == 4))
return 4;
if (generation >= 5)
return generation;
if (format >= 5)
return format;
return -1; // Nonsensical inputs.
}
/// <summary>
/// Gets the location names array for a specified generation.
/// </summary>
/// <param name="gen">Generation to get location names for.</param>
/// <param name="version">Version of origin</param>
/// <returns>List of location names.</returns>
public ILocationSet? GetLocations(int gen, GameVersion version) => gen switch
{
2 => Gen2,
3 => GameVersion.CXD.Contains(version) ? CXD : Gen3,
4 => Gen4,
5 => Gen5,
6 => Gen6,
7 => GameVersion.Gen7b.Contains(version) ? Gen7b : Gen7,
8 when version is GameVersion.PLA => Gen8,
8 when GameVersion.BDSP.Contains(version) => Gen8b,
8 => Gen8,
9 => Gen9,
_ => null,
};
/// <summary>
/// Gets the location names array for a specified generation.
/// </summary>
@ -701,90 +778,11 @@ public sealed class GameStrings : IBasicStrings
/// <param name="version">Version of origin</param>
/// <param name="bankID">BankID used to choose the text bank.</param>
/// <returns>List of location names.</returns>
public IReadOnlyList<string> GetLocationNames(int gen, GameVersion version, int bankID = 0) => gen switch
public ReadOnlySpan<string> GetLocationNames(int gen, GameVersion version, int bankID = 0)
{
2 => metGSC_00000,
3 => GameVersion.CXD.Contains(version) ? metCXD_00000 : metRSEFRLG_00000,
4 => GetLocationNames4(bankID),
5 => GetLocationNames5(bankID),
6 => GetLocationNames6(bankID),
7 => GameVersion.Gen7b.Contains(version) ? GetLocationNames7GG(bankID) : GetLocationNames7(bankID),
8 when version is GameVersion.PLA => GetLocationNames8a(bankID),
8 when GameVersion.BDSP.Contains(version) => GetLocationNames8b(bankID),
8 => GetLocationNames8(bankID),
_ => Array.Empty<string>(),
};
private IReadOnlyList<string> GetLocationNames4(int bankID) => bankID switch
{
0 => metHGSS_00000,
2 => metHGSS_02000,
3 => metHGSS_03000,
_ => Array.Empty<string>(),
};
public IReadOnlyList<string> GetLocationNames5(int bankID) => bankID switch
{
0 => metBW2_00000,
3 => metBW2_30000,
4 => metBW2_40000,
6 => metBW2_60000,
_ => Array.Empty<string>(),
};
public IReadOnlyList<string> GetLocationNames6(int bankID) => bankID switch
{
0 => metXY_00000,
3 => metXY_30000,
4 => metXY_40000,
6 => metXY_60000,
_ => Array.Empty<string>(),
};
public IReadOnlyList<string> GetLocationNames7(int bankID) => bankID switch
{
0 => metSM_00000,
3 => metSM_30000,
4 => metSM_40000,
6 => metSM_60000,
_ => Array.Empty<string>(),
};
public IReadOnlyList<string> GetLocationNames7GG(int bankID) => bankID switch
{
0 => metGG_00000,
3 => metGG_30000,
4 => metGG_40000,
6 => metGG_60000,
_ => Array.Empty<string>(),
};
public IReadOnlyList<string> GetLocationNames8(int bankID) => bankID switch
{
0 => metSWSH_00000,
3 => metSWSH_30000,
4 => metSWSH_40000,
6 => metSWSH_60000,
_ => Array.Empty<string>(),
};
public IReadOnlyList<string> GetLocationNames8a(int bankID) => bankID switch
{
0 => metLA_00000,
3 => metLA_30000,
4 => metLA_40000,
6 => metLA_60000,
_ => Array.Empty<string>(),
};
public IReadOnlyList<string> GetLocationNames8b(int bankID) => bankID switch
{
0 => metBDSP_00000,
3 => metBDSP_30000,
4 => metBDSP_40000,
6 => metBDSP_60000,
_ => Array.Empty<string>(),
};
var set = GetLocations(gen, version);
if (set is null)
return Array.Empty<string>();
return set.GetLocationNames(bankID);
}
}

View file

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace PKHeX.Core;
/// <summary>
/// Stores location names for a given game group.
/// </summary>
public interface ILocationSet
{
/// <summary>
/// Gets the location name group for the requested location bank group ID.
/// </summary>
ReadOnlySpan<string> GetLocationNames(int bankID);
/// <summary>
/// Gets the location name for the requested location ID.
/// </summary>
string GetLocationName(int locationID);
/// <summary>
/// Gets all groups -- ONLY USE FOR UNIT TESTING.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
IEnumerable<(int Bank, string[] Names)> GetAll();
}

View file

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace PKHeX.Core;
public sealed record LocationSet0(string[] Met0) : ILocationSet
{
public ReadOnlySpan<string> GetLocationNames(int bankID) => bankID switch
{
0 => Met0,
_ => Array.Empty<string>(),
};
public string GetLocationName(int locationID)
{
if ((uint)locationID >= Met0.Length)
return string.Empty;
return Met0[locationID];
}
public IEnumerable<(int Bank, string[] Names)> GetAll()
{
yield return (0, Met0);
}
}

View file

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
namespace PKHeX.Core;
public sealed record LocationSet4(string[] Met0, string[] Met2, string[] Met3) : ILocationSet
{
public ReadOnlySpan<string> GetLocationNames(int bankID) => bankID switch
{
0 => Met0,
2 => Met2,
3 => Met3,
_ => Array.Empty<string>(),
};
public string GetLocationName(int locationID) => locationID switch
{
>= 3000 => Get(Met3, locationID - 3000),
>= 2000 => Get(Met2, locationID - 2000),
_ => Get(Met0, locationID),
};
private static string Get(string[] names, int index)
{
if ((uint)index >= names.Length)
return string.Empty;
return names[index];
}
public IEnumerable<(int Bank, string[] Names)> GetAll()
{
yield return (0, Met0);
yield return (2, Met2);
yield return (3, Met3);
}
}

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
namespace PKHeX.Core;
public sealed record LocationSet6(string[] Met0, string[] Met3, string[] Met4, string[] Met6) : ILocationSet
{
public ReadOnlySpan<string> GetLocationNames(int bankID) => bankID switch
{
0 => Met0,
3 => Met3,
4 => Met4,
6 => Met6,
_ => Array.Empty<string>(),
};
public string GetLocationName(int locationID) => locationID switch
{
>= 60000 => Get(Met6, locationID - 60000),
>= 40000 => Get(Met4, locationID - 40000),
>= 30000 => Get(Met3, locationID - 30000),
_ => Get(Met0, locationID),
};
private static string Get(string[] names, int index)
{
if ((uint)index >= names.Length)
return string.Empty;
return names[index];
}
public IEnumerable<(int Bank, string[] Names)> GetAll()
{
yield return (0, Met0);
yield return (3, Met3);
yield return (4, Met4);
yield return (6, Met6);
}
}

View file

@ -24,7 +24,7 @@ public sealed class MemoryStrings
item8 = new Lazy<List<ComboItem>>(() => GetItems(EntityContext.Gen8));
genloc = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.genloc));
moves = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.movelist));
specific = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.metXY_00000, Locations6.Met0));
specific = new Lazy<List<ComboItem>>(() => Util.GetCBList(s.Gen6.Met0, Locations6.Met0));
}
private List<ComboItem> GetItems(EntityContext context)

View file

@ -21,6 +21,7 @@ public sealed class MetDataSource
private readonly List<ComboItem> MetGen8;
private readonly List<ComboItem> MetGen8a;
private readonly List<ComboItem> MetGen8b;
private readonly List<ComboItem> MetGen9;
private IReadOnlyList<ComboItem>? MetGen4Transfer;
private IReadOnlyList<ComboItem>? MetGen5Transfer;
@ -38,38 +39,39 @@ public sealed class MetDataSource
MetGen8 = CreateGen8(s);
MetGen8a = CreateGen8a(s);
MetGen8b = CreateGen8b(s);
MetGen9 = CreateGen9(s);
}
private static List<ComboItem> CreateGen2(GameStrings s)
{
var locations = Util.GetCBList(s.metGSC_00000.AsSpan(0, 0x5F));
Util.AddCBWithOffset(locations, s.metGSC_00000.AsSpan(0x7E, 2), 0x7E);
var locations = Util.GetCBList(s.Gen2.Met0.AsSpan(0, 0x5F));
Util.AddCBWithOffset(locations, s.Gen2.Met0.AsSpan(0x7E, 2), 0x7E);
return locations;
}
private static List<ComboItem> CreateGen3(GameStrings s)
{
var locations = Util.GetCBList(s.metRSEFRLG_00000.AsSpan(0, 213));
Util.AddCBWithOffset(locations, s.metRSEFRLG_00000.AsSpan(253, 3), 253);
var locations = Util.GetCBList(s.Gen3.Met0.AsSpan(0, 213));
Util.AddCBWithOffset(locations, s.Gen3.Met0.AsSpan(253, 3), 253);
return locations;
}
private static List<ComboItem> CreateGen3CXD(GameStrings s)
{
var list = Util.GetCBList(s.metCXD_00000);
var list = Util.GetCBList(s.CXD.Met0);
list.RemoveAll(z => z.Text.Length == 0);
return list;
}
private static List<ComboItem> CreateGen4(GameStrings s)
{
var locations = Util.GetCBList(s.metHGSS_00000, 0);
Util.AddCBWithOffset(locations, s.metHGSS_02000, 2000, Locations.Daycare4);
Util.AddCBWithOffset(locations, s.metHGSS_02000, 2000, Locations.LinkTrade4);
Util.AddCBWithOffset(locations, s.metHGSS_03000, 3000, Locations.Ranger4);
Util.AddCBWithOffset(locations, s.metHGSS_00000, 0000, Locations4.Met0);
Util.AddCBWithOffset(locations, s.metHGSS_02000, 2000, Locations4.Met2);
Util.AddCBWithOffset(locations, s.metHGSS_03000, 3000, Locations4.Met3);
var locations = Util.GetCBList(s.Gen4.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen4.Met2, 2000, Locations.Daycare4);
Util.AddCBWithOffset(locations, s.Gen4.Met2, 2000, Locations.LinkTrade4);
Util.AddCBWithOffset(locations, s.Gen4.Met3, 3000, Locations.Ranger4);
Util.AddCBWithOffset(locations, s.Gen4.Met0, 0000, Locations4.Met0);
Util.AddCBWithOffset(locations, s.Gen4.Met2, 2000, Locations4.Met2);
Util.AddCBWithOffset(locations, s.Gen4.Met3, 3000, Locations4.Met3);
return locations;
}
@ -86,13 +88,13 @@ public sealed class MetDataSource
private static List<ComboItem> CreateGen5(GameStrings s)
{
var locations = Util.GetCBList(s.metBW2_00000, 0);
Util.AddCBWithOffset(locations, s.metBW2_60000, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.metBW2_30000, 30000, Locations.LinkTrade5);
Util.AddCBWithOffset(locations, s.metBW2_00000, 00000, Locations5.Met0);
Util.AddCBWithOffset(locations, s.metBW2_30000, 30000, Locations5.Met3);
Util.AddCBWithOffset(locations, s.metBW2_40000, 40000, Locations5.Met4);
Util.AddCBWithOffset(locations, s.metBW2_60000, 60000, Locations5.Met6);
var locations = Util.GetCBList(s.Gen5.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen5.Met6, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.Gen5.Met3, 30000, Locations.LinkTrade5);
Util.AddCBWithOffset(locations, s.Gen5.Met0, 00000, Locations5.Met0);
Util.AddCBWithOffset(locations, s.Gen5.Met3, 30000, Locations5.Met3);
Util.AddCBWithOffset(locations, s.Gen5.Met4, 40000, Locations5.Met4);
Util.AddCBWithOffset(locations, s.Gen5.Met6, 60000, Locations5.Met6);
return locations;
}
@ -109,49 +111,49 @@ public sealed class MetDataSource
private static List<ComboItem> CreateGen6(GameStrings s)
{
var locations = Util.GetCBList(s.metXY_00000, 0);
Util.AddCBWithOffset(locations, s.metXY_60000, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.metXY_30000, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.metXY_00000, 00000, Locations6.Met0);
Util.AddCBWithOffset(locations, s.metXY_30000, 30000, Locations6.Met3);
Util.AddCBWithOffset(locations, s.metXY_40000, 40000, Locations6.Met4);
Util.AddCBWithOffset(locations, s.metXY_60000, 60000, Locations6.Met6);
var locations = Util.GetCBList(s.Gen6.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen6.Met6, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.Gen6.Met3, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.Gen6.Met0, 00000, Locations6.Met0);
Util.AddCBWithOffset(locations, s.Gen6.Met3, 30000, Locations6.Met3);
Util.AddCBWithOffset(locations, s.Gen6.Met4, 40000, Locations6.Met4);
Util.AddCBWithOffset(locations, s.Gen6.Met6, 60000, Locations6.Met6);
return locations;
}
private static List<ComboItem> CreateGen7(GameStrings s)
{
var locations = Util.GetCBList(s.metSM_00000, 0);
Util.AddCBWithOffset(locations, s.metSM_60000, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.metSM_30000, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.metSM_00000, 00000, Locations7.Met0);
Util.AddCBWithOffset(locations, s.metSM_30000, 30000, Locations7.Met3);
Util.AddCBWithOffset(locations, s.metSM_40000, 40000, Locations7.Met4);
Util.AddCBWithOffset(locations, s.metSM_60000, 60000, Locations7.Met6);
var locations = Util.GetCBList(s.Gen7.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen7.Met6, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.Gen7.Met3, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.Gen7.Met0, 00000, Locations7.Met0);
Util.AddCBWithOffset(locations, s.Gen7.Met3, 30000, Locations7.Met3);
Util.AddCBWithOffset(locations, s.Gen7.Met4, 40000, Locations7.Met4);
Util.AddCBWithOffset(locations, s.Gen7.Met6, 60000, Locations7.Met6);
return locations;
}
private static List<ComboItem> CreateGen7GG(GameStrings s)
{
var locations = Util.GetCBList(s.metGG_00000, 0);
Util.AddCBWithOffset(locations, s.metGG_60000, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.metGG_30000, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.metGG_00000, 00000, Locations7b.Met0);
Util.AddCBWithOffset(locations, s.metGG_30000, 30000, Locations7b.Met3);
Util.AddCBWithOffset(locations, s.metGG_40000, 40000, Locations7b.Met4);
Util.AddCBWithOffset(locations, s.metGG_60000, 60000, Locations7b.Met6);
var locations = Util.GetCBList(s.Gen7b.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen7b.Met6, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.Gen7b.Met3, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.Gen7b.Met0, 00000, Locations7b.Met0);
Util.AddCBWithOffset(locations, s.Gen7b.Met3, 30000, Locations7b.Met3);
Util.AddCBWithOffset(locations, s.Gen7b.Met4, 40000, Locations7b.Met4);
Util.AddCBWithOffset(locations, s.Gen7b.Met6, 60000, Locations7b.Met6);
return locations;
}
private static List<ComboItem> CreateGen8(GameStrings s)
{
var locations = Util.GetCBList(s.metSWSH_00000, 0);
Util.AddCBWithOffset(locations, s.metSWSH_60000, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.metSWSH_30000, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.metSWSH_00000, 00000, Locations8.Met0);
Util.AddCBWithOffset(locations, s.metSWSH_30000, 30000, Locations8.Met3);
Util.AddCBWithOffset(locations, s.metSWSH_40000, 40000, Locations8.Met4);
Util.AddCBWithOffset(locations, s.metSWSH_60000, 60000, Locations8.Met6);
var locations = Util.GetCBList(s.Gen8.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen8.Met6, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.Gen8.Met3, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.Gen8.Met0, 00000, Locations8.Met0);
Util.AddCBWithOffset(locations, s.Gen8.Met3, 30000, Locations8.Met3);
Util.AddCBWithOffset(locations, s.Gen8.Met4, 40000, Locations8.Met4);
Util.AddCBWithOffset(locations, s.Gen8.Met6, 60000, Locations8.Met6);
// Add in the BDSP+PLA magic met locations.
locations.Add(new ComboItem($"{s.EggName} (BD/SP)", Locations.HOME_SWSHBDSPEgg));
@ -164,12 +166,12 @@ public sealed class MetDataSource
private static List<ComboItem> CreateGen8a(GameStrings s)
{
var locations = Util.GetCBList(s.metLA_00000, 0);
Util.AddCBWithOffset(locations, s.metLA_30000, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.metLA_00000, 00000, Locations8a.Met0);
Util.AddCBWithOffset(locations, s.metLA_30000, 30000, Locations8a.Met3);
Util.AddCBWithOffset(locations, s.metLA_40000, 40000, Locations8a.Met4);
Util.AddCBWithOffset(locations, s.metLA_60000, 60000, Locations8a.Met6);
var locations = Util.GetCBList(s.Gen8a.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen8a.Met3, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.Gen8a.Met0, 00000, Locations8a.Met0);
Util.AddCBWithOffset(locations, s.Gen8a.Met3, 30000, Locations8a.Met3);
Util.AddCBWithOffset(locations, s.Gen8a.Met4, 40000, Locations8a.Met4);
Util.AddCBWithOffset(locations, s.Gen8a.Met6, 60000, Locations8a.Met6);
// Add in the BDSP+PLA magic met locations.
locations.Add(new ComboItem($"{s.EggName} (BD/SP)", Locations.HOME_SWSHBDSPEgg));
@ -183,13 +185,25 @@ public sealed class MetDataSource
private static List<ComboItem> CreateGen8b(GameStrings s)
{
// Manually add invalid (-1) location from SWSH as ID 65535
var locations = new List<ComboItem> { new(s.metSWSH_00000[0], Locations.Default8bNone) };
Util.AddCBWithOffset(locations, s.metBDSP_60000, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.metBDSP_30000, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.metBDSP_00000, 00000, Locations8b.Met0);
Util.AddCBWithOffset(locations, s.metBDSP_30000, 30000, Locations8b.Met3);
Util.AddCBWithOffset(locations, s.metBDSP_40000, 40000, Locations8b.Met4);
Util.AddCBWithOffset(locations, s.metBDSP_60000, 60000, Locations8b.Met6);
var locations = new List<ComboItem> { new(s.Gen8.Met0[0], Locations.Default8bNone) };
Util.AddCBWithOffset(locations, s.Gen8b.Met6, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.Gen8b.Met3, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.Gen8b.Met0, 00000, Locations8b.Met0);
Util.AddCBWithOffset(locations, s.Gen8b.Met3, 30000, Locations8b.Met3);
Util.AddCBWithOffset(locations, s.Gen8b.Met4, 40000, Locations8b.Met4);
Util.AddCBWithOffset(locations, s.Gen8b.Met6, 60000, Locations8b.Met6);
return locations;
}
private static List<ComboItem> CreateGen9(GameStrings s)
{
var locations = Util.GetCBList(s.Gen9.Met0, 0);
Util.AddCBWithOffset(locations, s.Gen9.Met6, 60000, Locations.Daycare5);
Util.AddCBWithOffset(locations, s.Gen9.Met3, 30000, Locations.LinkTrade6);
Util.AddCBWithOffset(locations, s.Gen9.Met0, 00000, Locations9.Met0);
Util.AddCBWithOffset(locations, s.Gen9.Met3, 30000, Locations9.Met3);
Util.AddCBWithOffset(locations, s.Gen9.Met4, 40000, Locations9.Met4);
Util.AddCBWithOffset(locations, s.Gen9.Met6, 60000, Locations9.Met6);
return locations;
}
@ -247,6 +261,7 @@ public sealed class MetDataSource
SW or SH => Partition2(MetGen8, IsMetLocation8SWSH),
BD or SP => Partition2(MetGen8b, IsMetLocation8BDSP),
PLA => Partition2(MetGen8a, IsMetLocation8LA),
SL or VL => Partition2(MetGen9, IsMetLocation9SV),
_ => new List<ComboItem>(GetLocationListModified(version, context)),
};

View file

@ -77,6 +77,9 @@ public static class GameUtil
SW or SH => SWSH,
BD or SP => BDSP,
PLA => PLA,
// Gen9
SL or VL => SV,
_ => Invalid,
};
@ -95,6 +98,7 @@ public static class GameUtil
6 => AS,
7 => UM,
8 => SH,
9 => VL,
_ => Invalid,
};
@ -114,6 +118,7 @@ public static class GameUtil
if (Gen7.Contains(game)) return 7;
if (Gen7b.Contains(game)) return 7;
if (Gen8.Contains(game)) return 8;
if (Gen9.Contains(game)) return 9;
return -1;
}
@ -142,6 +147,7 @@ public static class GameUtil
if (PLA == game) return Legal.MaxSpeciesID_8a;
if (BDSP.Contains(game)) return Legal.MaxSpeciesID_8b;
if (Gen8.Contains(game)) return Legal.MaxSpeciesID_8;
if (Gen9.Contains(game)) return Legal.MaxSpeciesID_9;
return 0;
}
@ -203,6 +209,9 @@ public static class GameUtil
SWSH => g2 is SW or SH,
BDSP => g2 is BD or SP,
Gen8 => SWSH.Contains(g2) || BDSP.Contains(g2) || PLA == g2,
SV => g2 is SL or VL,
Gen9 => SV.Contains(g2),
_ => false,
};
}

View file

@ -12,6 +12,8 @@ public static class Locations
public const ushort Daycare4 = 2000;
public const ushort Daycare5 = 60002;
public const ushort Daycare8b = 60010;
public const ushort Picnic9 = 30023;
public const ushort TeraCavern9 = 30024;
public const ushort LinkTrade2NPC = 126;
public const ushort LinkTrade3NPC = 254;
@ -59,6 +61,9 @@ public static class Locations
/// <summary> Solaceon Town in <see cref="GameVersion.BDSP"/> </summary>
public const ushort HatchLocation8b = 446;
/// <summary> South Province (Area One) in <see cref="GameVersion.SV"/> </summary>
public const ushort HatchLocation9 = 6;
/// <summary> Generation 1 -> Generation 7 Transfer Location (Kanto) </summary>
public const ushort Transfer1 = 30013;
@ -169,6 +174,7 @@ public static class Locations
public static bool IsEggLocationBred5(int loc) => loc is Daycare5 or LinkTrade5;
public static bool IsEggLocationBred6(int loc) => loc is Daycare5 or LinkTrade6;
public static bool IsEggLocationBred8b(int loc) => loc is Daycare8b or LinkTrade6NPC;
public static bool IsEggLocationBred9(int loc) => loc is Picnic9 or LinkTrade6;
public static int GetDaycareLocation(int generation, GameVersion version) => generation switch
{
@ -176,6 +182,7 @@ public static class Locations
4 => Daycare4,
5 => Daycare5,
8 when version is GameVersion.BD or GameVersion.SP => Daycare8b,
9 => Picnic9,
_ => Daycare5,
};
@ -194,4 +201,5 @@ public static class Locations
public static bool IsMetLocation8SWSH(ushort z) => z <= 246; // at the Crown Tundra Station
public static bool IsMetLocation8BDSP(ushort z) => z <= 657; // Ramanas Park (Genome Room)
public static bool IsMetLocation8LA(ushort z) => z <= 155; // Training Grounds
public static bool IsMetLocation9SV(ushort z) => z <= 131; // Uva Academy
}

View file

@ -2,7 +2,7 @@ namespace PKHeX.Core;
internal static class Locations4
{
internal static readonly ushort[] Met0 =
internal static readonly byte[] Met0 =
{
000, 001, 002, 003, 004, 005, 006, 007, 008, 009,
010, 011, 012, 013, 014, 015, 016, 017, 018, 019,

View file

@ -2,7 +2,7 @@ namespace PKHeX.Core;
internal static class Locations5
{
internal static readonly ushort[] Met0 =
internal static readonly byte[] Met0 =
{
001, 002, 004, 005, 006, 007, 008, 009,
010, 011, 012, 013, 014, 015, 016, 017, 018, 019,

View file

@ -2,7 +2,7 @@ namespace PKHeX.Core;
internal static class Locations7
{
internal static readonly ushort[] Met0 =
internal static readonly byte[] Met0 =
{
002, 004, 006, 008,
010, 012, 014, 016, 018,

View file

@ -2,7 +2,7 @@ namespace PKHeX.Core;
internal static class Locations7b
{
internal static readonly ushort[] Met0 =
internal static readonly byte[] Met0 =
{
002, 003, 004, 005, 006, 007, 008, 009,
010, 011, 012, 013, 014, 015, 016, 017, 018, 019,

View file

@ -2,14 +2,14 @@ namespace PKHeX.Core;
internal static class Locations8
{
internal static readonly ushort[] Met0 =
internal static readonly byte[] Met0 =
{
002, 004, 006, 008,
012, 014, 016, 018,
020, 022, 024, 028,
030, 032, 034, 036,
040, 044, 046, 048,
052, 054, 056, 058,
052, 054, 056, 058,
060, 064, 066, 068,
070, 072, 076, 078,
080, 084, 086, 088,

View file

@ -2,7 +2,7 @@ namespace PKHeX.Core;
internal static class Locations8a
{
internal static readonly ushort[] Met0 =
internal static readonly byte[] Met0 =
{
000, 002, 004, 006, 007, 008, 009,
010, 011, 012, 013, 014, 015, 016, 017, 018, 019,

View file

@ -0,0 +1,47 @@
namespace PKHeX.Core;
internal static class Locations9
{
internal static readonly byte[] Met0 =
{
002, 004, 006, 008,
010, 012, 014, 016, 018,
020, 022, 024, 026, 028,
030, 032, 034, 036, 038,
040, 042, 044, 046, 048,
050, 052, 054, 056, 058,
060, 062, 064, 066, 068,
070, 072, 074, 076, 078,
080, 082, 084, 086, 088,
090, 092, 094, 096, 098,
102, 104, 106, 108, 110,
110, 112, 114, 116, 118,
120, 122, 124, 126, 128,
067, 069,
099, 101, 103, 105, 107, 109,
111, 113, 115, 117,
130, 131,
};
internal static readonly ushort[] Met3 =
{
30001, 30003, 30004, 30005, 30006, 30007, 30008, 30009,
30010, 30011, 30012, 30013, 30014, 30015, 30016, 30017, 30018, 30019,
30020, 30021, 30022, 30023, 30024,
};
internal static readonly ushort[] Met4 =
{
40001, 40002, 40003, 40004, 40005, 40006, 40007, 40008, 40009,
40010, 40011, 40012, 40013, 40014, 40015, 40016, 40017, 40018, 40019,
40020, 40021, 40022, 40024, 40024, 40025, 40026, 40027, 40028, 40029,
40030, 40032, 40033, 40034, 40035, 40036, 40037, 40038, 40039, 40039,
40040, 40041, 40042, 40043, 40044, 40045, 40047, 40047, 40048, 40049,
40050, 40051, 40052, 40053, 40054, 40055, 40056, 40057, 40058, 40059,
40060, 40061, 40062, 40063, 40064, 40065, 40066, 40067, 40068, 40069,
40070, 40071, 40072, 40073, 40074, 40075, 40076, 40077, 40078,
};
internal static readonly ushort[] Met6 = {/* XY */ 60001, 60003, /* ORAS */ 60004 };
}

View file

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using static System.Buffers.Binary.BinaryPrimitives;
namespace PKHeX.Core;
/// <inheritdoc cref="EncounterArea" />
/// <summary>
/// <see cref="GameVersion.SWSH"/> encounter area
/// </summary>
public sealed record EncounterArea9 : EncounterArea
{
public readonly EncounterSlot9[] Slots;
protected override IReadOnlyList<EncounterSlot> Raw => Slots;
public static EncounterArea9[] GetAreas(BinLinkerAccessor input, GameVersion game)
{
var result = new EncounterArea9[input.Length];
for (int i = 0; i < result.Length; i++)
result[i] = new EncounterArea9(input[i], game);
return result;
}
private EncounterArea9(ReadOnlySpan<byte> areaData, GameVersion game) : base(game)
{
Location = areaData[0];
Slots = ReadSlots(areaData[2..]);
}
private EncounterSlot9[] ReadSlots(ReadOnlySpan<byte> areaData)
{
const int size = 6;
var result = new EncounterSlot9[areaData.Length / size];
for (int i = 0; i < result.Length; i++)
{
var slot = areaData[(i * size)..];
var species = ReadUInt16LittleEndian(slot);
var form = slot[2];
var gender = (sbyte)slot[3];
var min = slot[4];
var max = slot[5];
result[i] = new EncounterSlot9(this, species, form, min, max, gender);
}
return result;
}
public override IEnumerable<EncounterSlot> GetMatchingSlots(PKM pk, EvoCriteria[] chain)
{
var lvl = pk.Met_Level;
foreach (var slot in Slots)
{
foreach (var evo in chain)
{
if (slot.Species != evo.Species)
continue;
if (slot.Form != evo.Form && slot.Species is not ((int)Species.Rotom or (int)Species.Deerling or (int)Species.Sawsbuck or (int)Species.Oricorio))
break;
if (slot.Gender != -1 && pk.Gender != slot.Gender)
break;
if (!slot.IsLevelWithinRange(lvl))
break;
yield return slot;
break;
}
}
}
}

View file

@ -25,6 +25,7 @@ public static class Breeding
X, Y, OR, AS,
SN, MN, US, UM,
SW, SH, BD, SP,
SL, VL,
GS,
};
@ -86,6 +87,7 @@ public static class Breeding
{
3 => SplitBreed_3,
4 or 5 or 6 or 7 or 8 => SplitBreed,
// Gen9 does not have split-breed egg generation.
_ => Array.Empty<ushort>(),
};
@ -205,5 +207,12 @@ public static class Breeding
(int)Regieleki, (int)Regidrago,
(int)Glastrier, (int)Spectrier, (int)Calyrex,
(int)Enamorus,
// Gen9
(int)Gimmighoul, (int)Gholdengo,
(int)GreatTusk, (int)BruteBonnet, (int)_980, (int)SandyShocks, (int)ScreamTail, (int)FlutterMane, (int)SlitherWing, (int)RoaringMoon,
(int)IronTreads, (int)_987, (int)IronMoth, (int)IronHands, (int)IronJugulis, (int)IronThorns, (int)IronBundle, (int)IronValiant,
(int)TingLu, (int)ChienPao, (int)WoChien, (int)ChiYu,
(int)Koraidon, (int)Miraidon,
};
}

View file

@ -203,6 +203,8 @@ public sealed class BulkAnalysis
var withOT = tr.IsFromTrainer(pk);
var flag = pk.CurrentHandler;
var expect = withOT ? 0 : 1;
if (pk.Version == 0)
expect = 0;
if (flag != expect)
AddLine(cs, LegalityCheckStrings.LTransferCurrentHandlerInvalid, CheckIdentifier.Trainer);
@ -352,7 +354,7 @@ public sealed class BulkAnalysis
private static bool IsSharedVersion(PKM pp, LegalityAnalysis pa, PKM cp, LegalityAnalysis ca)
{
if (pp.Version == cp.Version)
if (pp.Version == cp.Version || pp.Version == 0 || cp.Version == 0)
return false;
// Traded eggs retain the original version ID, only on the same generation

View file

@ -58,6 +58,11 @@ public static partial class Legal
internal static readonly Learnset[] LevelUpLA = LearnsetReader.GetArray(Get(Util.GetBinaryResource("lvlmove_la.pkl"), "la"));
internal static readonly Learnset[] MasteryLA = LearnsetReader.GetArray(Get(Util.GetBinaryResource("mastery_la.pkl"), "la"));
// Gen 9
internal static readonly ushort[][] EggMovesSV = EggMoves9.GetArray(Get(Util.GetBinaryResource("eggmove_sv.pkl"), "sv"));
internal static readonly ushort[][] ReminderSV = EggMoves9.GetArray(Get(Util.GetBinaryResource("reminder_sv.pkl"), "sv"));
internal static readonly Learnset[] LevelUpSV = LearnsetReader.GetArray(Get(Util.GetBinaryResource("lvlmove_sv.pkl"), "sv"));
internal static int GetMaxSpeciesOrigin(PKM pk)
{
if (pk.Format == 1)
@ -77,6 +82,7 @@ public static partial class Legal
6 => MaxSpeciesID_6,
7 => MaxSpeciesID_7b,
8 => MaxSpeciesID_8a,
9 => MaxSpeciesID_9,
_ => -1,
};
@ -90,6 +96,7 @@ public static partial class Legal
6 => (int) LanguageID.Korean,
7 => (int) LanguageID.ChineseT,
8 => (int) LanguageID.ChineseT,
9 => (int) LanguageID.ChineseT,
_ => -1,
};

View file

@ -32,28 +32,34 @@ public static class EncounterEvent
/// <summary>Event Database for Generation 8</summary>
public static IReadOnlyList<WC8> MGDB_G8 { get; private set; } = Array.Empty<WC8>();
/// <summary>Event Database for Generation 8 <see cref="GameVersion.BDSP"/></summary>
/// <summary>Event Database for Generation 8 <see cref="GameVersion.PLA"/></summary>
public static IReadOnlyList<WA8> MGDB_G8A { get; private set; } = Array.Empty<WA8>();
/// <summary>Event Database for Generation 8 <see cref="GameVersion.BDSP"/></summary>
public static IReadOnlyList<WB8> MGDB_G8B { get; private set; } = Array.Empty<WB8>();
/// <summary>Event Database for Generation 9 <see cref="GameVersion.SV"/></summary>
public static IReadOnlyList<WC9> MGDB_G9 { get; private set; } = Array.Empty<WC9>();
/// <summary>Indicates if the databases are initialized.</summary>
public static bool Initialized => MGDB_G3.Count != 0;
private static PCD[] GetPCDDB(ReadOnlySpan<byte> bin) => Get(bin, PCD.Size, d => new PCD(d));
private static PGF[] GetPGFDB(ReadOnlySpan<byte> bin) => Get(bin, PGF.Size, d => new PGF(d));
private static PCD[] GetPCDDB(ReadOnlySpan<byte> bin) => Get(bin, PCD.Size, static d => new PCD(d));
private static PGF[] GetPGFDB(ReadOnlySpan<byte> bin) => Get(bin, PGF.Size, static d => new PGF(d));
private static WC6[] GetWC6DB(ReadOnlySpan<byte> wc6bin, ReadOnlySpan<byte> wc6full) => WC6Full.GetArray(wc6full, wc6bin);
private static WC7[] GetWC7DB(ReadOnlySpan<byte> wc7bin, ReadOnlySpan<byte> wc7full) => WC7Full.GetArray(wc7full, wc7bin);
private static WB7[] GetWB7DB(ReadOnlySpan<byte> bin) => Get(bin, WB7.SizeFull, d => new WB7(d));
private static WC8[] GetWC8DB(ReadOnlySpan<byte> bin) => Get(bin, WC8.Size, d => new WC8(d));
private static WB8[] GetWB8DB(ReadOnlySpan<byte> bin) => Get(bin, WB8.Size, d => new WB8(d));
private static WA8[] GetWA8DB(ReadOnlySpan<byte> bin) => Get(bin, WA8.Size, d => new WA8(d));
private static WB7[] GetWB7DB(ReadOnlySpan<byte> bin) => Get(bin, WB7.SizeFull, static d => new WB7(d));
private static WC8[] GetWC8DB(ReadOnlySpan<byte> bin) => Get(bin, WC8.Size, static d => new WC8(d));
private static WB8[] GetWB8DB(ReadOnlySpan<byte> bin) => Get(bin, WB8.Size, static d => new WB8(d));
private static WA8[] GetWA8DB(ReadOnlySpan<byte> bin) => Get(bin, WA8.Size, static d => new WA8(d));
private static WC9[] GetWC9DB(ReadOnlySpan<byte> bin) => Get(bin, WC9.Size, static d => new WC9(d));
private static T[] Get<T>(ReadOnlySpan<byte> bin, int size, Func<byte[], T> ctor)
{
// bin is a multiple of size
// bin.Length % size == 0
var result = new T[bin.Length / size];
System.Diagnostics.Debug.Assert(result.Length * size == bin.Length);
for (int i = 0; i < result.Length; i++)
@ -79,7 +85,10 @@ public static class EncounterEvent
ICollection<WC8> g8 = GetWC8DB(Util.GetBinaryResource("wc8.pkl"));
ICollection<WB8> b8 = GetWB8DB(Util.GetBinaryResource("wb8.pkl"));
ICollection<WA8> a8 = GetWA8DB(Util.GetBinaryResource("wa8.pkl"));
ICollection<WC9> g9 = GetWC9DB(Util.GetBinaryResource("wc9.pkl"));
// Load external files
// For each file, load the gift object into the appropriate list.
var gifts = GetGifts(paths);
foreach (var gift in gifts)
{
@ -100,6 +109,7 @@ public static class EncounterEvent
case WC8 wc8: AddOrExpand(ref g8, wc8); continue;
case WB8 wb8: AddOrExpand(ref b8, wb8); continue;
case WA8 wa8: AddOrExpand(ref a8, wa8); continue;
case WC9 wc9: AddOrExpand(ref g9, wc9); continue;
}
}
@ -123,6 +133,7 @@ public static class EncounterEvent
MGDB_G8 = SetArray(g8);
MGDB_G8A = SetArray(a8);
MGDB_G8B = SetArray(b8);
MGDB_G9 = SetArray(g9);
}
private static IEnumerable<MysteryGift> GetGifts(IEnumerable<string> paths)
@ -137,6 +148,10 @@ public static class EncounterEvent
}
}
/// <summary>
/// Gets all event gifts.
/// </summary>
/// <param name="sorted">If true, the result will be sorted by ascending species ID. Otherwise, will be ordered by generation ascending.</param>
public static IEnumerable<MysteryGift> GetAllEvents(bool sorted = true)
{
var regular = new IReadOnlyList<MysteryGift>[]
@ -149,6 +164,7 @@ public static class EncounterEvent
MGDB_G8,
MGDB_G8A,
MGDB_G8B,
MGDB_G9,
}.SelectMany(z => z);
regular = regular.Where(mg => !mg.IsItem && mg.IsEntity && mg.Species > 0);
var result = MGDB_G3.Concat(regular);

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
namespace PKHeX.Core;
@ -8,7 +8,8 @@ namespace PKHeX.Core;
/// </summary>
internal static class EncounterUtil
{
internal static BinLinkerAccessor Get(string resource, string ident) => BinLinkerAccessor.Get(Util.GetBinaryResource($"encounter_{resource}.pkl"), ident);
internal static ReadOnlySpan<byte> Get(string resource) => Util.GetBinaryResource($"encounter_{resource}.pkl");
internal static BinLinkerAccessor Get(string resource, string ident) => BinLinkerAccessor.Get(Get(resource), ident);
/// <summary>
/// Gets the relevant <see cref="EncounterStatic"/> objects that appear in the relevant game.
@ -16,11 +17,37 @@ internal static class EncounterUtil
/// <param name="source">Table of valid encounters that appear for the game pairing</param>
/// <param name="game">Game to filter for</param>
/// <returns>Array of encounter objects that can be encountered in the input game</returns>
internal static T[] GetEncounters<T>(T[] source, GameVersion game) where T : EncounterStatic
internal static T[] GetEncounters<T>(T[] source, GameVersion game) where T : IVersion
{
return Array.FindAll(source, s => s.Version.Contains(game));
}
/// <summary>
/// Gets the relevant <see cref="EncounterStatic"/> objects that appear in the relevant game.
/// </summary>
/// <param name="source">Table of valid encounters that appear for the game pairing</param>
/// <param name="exclude">Game to filter out</param>
/// <returns>Array of encounter objects that can be encountered in the input game</returns>
internal static T[] GetEncounters<T>(T[][] source, GameVersion exclude) where T : EncounterStatic
{
var count = 0;
foreach (T[] arr in source)
count += arr.Length;
var temp = new T[count];
count = 0;
foreach (var arr in source)
{
foreach (var enc in arr)
{
if (enc.Version != exclude)
temp[count++] = enc;
}
}
Array.Resize(ref temp, count);
return temp;
}
internal static T? GetMinByLevel<T>(EvoCriteria[] chain, IEnumerable<T> possible) where T : class, IEncounterTemplate
{
// MinBy grading: prefer species-form match, select lowest min level encounter.

View file

@ -1,618 +0,0 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.AbilityPermission;
namespace PKHeX.Core;
/// <summary>
/// Generation 5 Encounters
/// </summary>
public static class Encounters5
{
internal static readonly EncounterArea5[] SlotsB = EncounterArea5.GetAreas(Get("b", "51"), B);
internal static readonly EncounterArea5[] SlotsW = EncounterArea5.GetAreas(Get("w", "51"), W);
internal static readonly EncounterArea5[] SlotsB2 = EncounterArea5.GetAreas(Get("b2", "52"), B2);
internal static readonly EncounterArea5[] SlotsW2 = EncounterArea5.GetAreas(Get("w2", "52"), W2);
static Encounters5()
{
MarkEncounterTradeStrings(TradeGift_BW, TradeBW);
MarkEncounterTradeStrings(TradeGift_B2W2_Regular, TradeB2W2);
}
#region Dream Radar Tables
private static readonly EncounterStatic5DR[] Encounter_DreamRadar =
{
new(079, 0), // Slowpoke
new(120, 0), // Staryu
new(137, 0), // Porygon
new(163, 0), // Hoothoot
new(174, 0), // Igglybuff
new(175, 0), // Togepi
new(213, 0), // Shuckle
new(238, 0), // Smoochum
new(249, 0), // Lugia (SoulSilver cart)
new(250, 0), // Ho-Oh (HeartGold cart)
new(280, 0), // Ralts
new(333, 0), // Swablu
new(374, 0), // Beldum
new(425, 0), // Drifloon
new(436, 0), // Bronzor
new(442, 0), // Spiritomb
new(447, 0), // Riolu
new(479, 0, Any12), // Rotom (no HA)
new(483, 0), // Dialga (Diamond cart)
new(484, 0), // Palkia (Pearl cart)
new(487, 0), // Giratina (Platinum cart)
new(517, 0), // Munna
new(561, 0), // Sigilyph
new(641, 1), // Therian Tornadus
new(642, 1), // Therian Thundurus
new(645, 1), // Therian Landorus
};
#endregion
#region DreamWorld Encounter
public static readonly EncounterStatic5[] DreamWorld_Common = DreamWorldEntry.GetArray(Gen5, new DreamWorldEntry[]
{
// Pleasant Forest
new(019, 10, 098, 382, 231), // Rattata
new(043, 10, 230, 298, 202), // Oddish
new(069, 10, 022, 235, 402), // Bellsprout
new(077, 10, 033, 037, 257), // Ponyta
new(083, 10, 210, 355, 348), // Farfetch'd
new(084, 10, 045, 175, 355), // Doduo
new(102, 10, 140, 235, 202), // Exeggcute
new(108, 10, 122, 214, 431), // Lickitung
new(114, 10, 079, 073, 402), // Tangela
new(115, 10, 252, 068, 409), // Kangaskhan
new(161, 10, 010, 203, 343), // Sentret
new(179, 10, 084, 115, 351), // Mareep
new(191, 10, 072, 230, 414), // Sunkern
new(234, 10, 033, 050, 285), // Stantler
new(261, 10, 336, 305, 399), // Poochyena
new(283, 10, 145, 056, 202), // Surskit
new(399, 10, 033, 401, 290), // Bidoof
new(403, 10, 268, 393, 400), // Shinx
new(431, 10, 252, 372, 290), // Glameow
new(054, 10, 346, 227, 362), // Psyduck
new(058, 10, 044, 034, 203), // Growlithe
new(123, 10, 098, 226, 366), // Scyther
new(128, 10, 099, 231, 431), // Tauros
new(183, 10, 111, 453, 008), // Marill
new(185, 10, 175, 205, 272), // Sudowoodo
new(203, 10, 093, 243, 285), // Girafarig
new(241, 10, 111, 174, 231), // Miltank
new(263, 10, 033, 271, 387), // Zigzagoon
new(427, 10, 193, 252, 409), // Buneary
new(037, 10, 046, 257, 399), // Vulpix
new(060, 10, 095, 054, 214), // Poliwag
new(177, 10, 101, 297, 202), // Natu
new(239, 10, 084, 238, 393), // Elekid
new(300, 10, 193, 321, 445), // Skitty
// Windswept Sky
new(016, 10, 016, 211, 290), // Pidgey
new(021, 10, 064, 185, 211), // Spearow
new(041, 10, 048, 095, 162), // Zubat
new(142, 10, 044, 372, 446), // Aerodactyl
new(165, 10, 004, 450, 009), // Ledyba
new(187, 10, 235, 227, 340), // Hoppip
new(193, 10, 098, 364, 202), // Yanma
new(198, 10, 064, 109, 355), // Murkrow
new(207, 10, 028, 364, 366), // Gligar
new(225, 10, 217, 420, 264), // Delibird
new(276, 10, 064, 203, 413), // Taillow
new(397, 14, 017, 297, 366), // Staravia
new(227, 10, 064, 065, 355), // Skarmory
new(357, 10, 016, 073, 318), // Tropius
// Sparkling Sea
new(086, 10, 029, 333, 214), // Seel
new(090, 10, 110, 112, 196), // Shellder
new(116, 10, 145, 190, 362), // Horsea
new(118, 10, 064, 060, 352), // Goldeen
new(129, 10, 150, 175, 340), // Magikarp
new(138, 10, 044, 330, 196), // Omanyte
new(140, 10, 071, 175, 446), // Kabuto
new(170, 10, 086, 133, 351), // Chinchou
new(194, 10, 055, 034, 401), // Wooper
new(211, 10, 040, 453, 290), // Qwilfish
new(223, 10, 199, 350, 362), // Remoraid
new(226, 10, 048, 243, 314), // Mantine
new(320, 10, 055, 214, 340), // Wailmer
new(339, 10, 189, 214, 209), // Barboach
new(366, 10, 250, 445, 392), // Clamperl
new(369, 10, 055, 214, 414), // Relicanth
new(370, 10, 204, 300, 196), // Luvdisc
new(418, 10, 346, 163, 352), // Buizel
new(456, 10, 213, 186, 352), // Finneon
new(072, 10, 048, 367, 202), // Tentacool
new(318, 10, 044, 037, 399), // Carvanha
new(341, 10, 106, 232, 283), // Corphish
new(345, 10, 051, 243, 202), // Lileep
new(347, 10, 010, 446, 440), // Anorith
new(349, 10, 150, 445, 243), // Feebas
new(131, 10, 109, 032, 196), // Lapras
new(147, 10, 086, 352, 225), // Dratini
// Spooky Manor
new(092, 10, 095, 050, 482), // Gastly
new(096, 10, 095, 427, 409), // Drowzee
new(122, 10, 112, 298, 285), // Mr. Mime
new(167, 10, 040, 527, 450), // Spinarak
new(200, 10, 149, 194, 517), // Misdreavus
new(228, 10, 336, 364, 399), // Houndour
new(325, 10, 149, 285, 278), // Spoink
new(353, 10, 101, 194, 220), // Shuppet
new(355, 10, 050, 220, 271), // Duskull
new(358, 10, 035, 095, 304), // Chimecho
new(434, 10, 103, 492, 389), // Stunky
new(209, 10, 204, 370, 038), // Snubbull
new(235, 10, 166, 445, 214), // Smeargle
new(313, 10, 148, 271, 366), // Volbeat
new(314, 10, 204, 313, 366), // Illumise
new(063, 10, 100, 285, 356), // Abra
// Rugged Mountain
new(066, 10, 067, 418, 270), // Machop
new(081, 10, 319, 278, 356), // Magnemite
new(109, 10, 123, 399, 482), // Koffing
new(218, 10, 052, 517, 257), // Slugma
new(246, 10, 044, 399, 446), // Larvitar
new(324, 10, 052, 090, 446), // Torkoal
new(328, 10, 044, 324, 202), // Trapinch
new(331, 10, 071, 298, 009), // Cacnea
new(412, 10, 182, 450, 173), // Burmy
new(449, 10, 044, 254, 276), // Hippopotas
new(240, 10, 052, 009, 257), // Magby
new(322, 10, 052, 034, 257), // Numel
new(359, 10, 364, 224, 276), // Absol
new(453, 10, 040, 409, 441), // Croagunk
new(236, 10, 252, 364, 183), // Tyrogue
new(371, 10, 044, 349, 200), // Bagon
// Icy Cave
new(027, 10, 028, 068, 162), // Sandshrew
new(074, 10, 111, 446, 431), // Geodude
new(095, 10, 020, 446, 431), // Onix
new(100, 10, 268, 324, 363), // Voltorb
new(104, 10, 125, 195, 067), // Cubone
new(293, 10, 253, 283, 428), // Whismur
new(304, 10, 106, 283, 457), // Aron
new(337, 10, 093, 414, 236), // Lunatone
new(338, 10, 093, 428, 234), // Solrock
new(343, 10, 229, 356, 428), // Baltoy
new(459, 10, 075, 419, 202), // Snover
new(050, 10, 028, 251, 446), // Diglett
new(215, 10, 269, 008, 067), // Sneasel
new(361, 10, 181, 311, 352), // Snorunt
new(220, 10, 316, 246, 333), // Swinub
new(443, 10, 082, 200, 203), // Gible
// Dream Park
new(046, 10, 078, 440, 235), // Paras
new(204, 10, 120, 390, 356), // Pineco
new(265, 10, 040, 450, 173), // Wurmple
new(273, 10, 074, 331, 492), // Seedot
new(287, 10, 281, 400, 389), // Slakoth
new(290, 10, 141, 203, 400), // Nincada
new(311, 10, 086, 435, 324), // Plusle
new(312, 10, 086, 435, 324), // Minun
new(316, 10, 139, 151, 202), // Gulpin
new(352, 10, 185, 285, 513), // Kecleon
new(401, 10, 522, 283, 253), // Kricketot
new(420, 10, 073, 505, 331), // Cherubi
new(455, 10, 044, 476, 380), // Carnivine
new(023, 10, 040, 251, 399), // Ekans
new(175, 10, 118, 381, 253), // Togepi
new(190, 10, 010, 252, 007), // Aipom
new(285, 10, 078, 331, 264), // Shroomish
new(315, 10, 074, 079, 129), // Roselia
new(113, 10, 045, 068, 270), // Chansey
new(127, 10, 011, 370, 382), // Pinsir
new(133, 10, 028, 204, 129), // Eevee
new(143, 10, 133, 007, 278), // Snorlax
new(214, 10, 030, 175, 264), // Heracross
// Pokémon Café Forest
new(061, 25, 240, 114, 352), // Poliwhirl
new(133, 10, 270, 204, 129), // Eevee
new(235, 10, 166, 445, 214), // Smeargle
new(412, 10, 182, 450, 173), // Burmy
// PGL
new(212, 10, 211, Gender: 0), // Scizor
new(445, 48, Gender: 0), // Garchomp
new(149, 55, 245, Gender: 0), // Dragonite
new(248, 55, 069, Gender: 0), // Tyranitar
new(376, 45, 038, Gender: 2), // Metagross
});
public static readonly EncounterStatic5[] DreamWorld_BW = DreamWorldEntry.GetArray(BW, new DreamWorldEntry[]
{
// Pleasant Forest
new(029, 10, 010, 389, 162), // Nidoran♀
new(032, 10, 064, 068, 162), // Nidoran♂
new(174, 10, 047, 313, 270), // Igglybuff
new(187, 10, 235, 270, 331), // Hoppip
new(270, 10, 071, 073, 352), // Lotad
new(276, 10, 064, 119, 366), // Taillow
new(309, 10, 086, 423, 324), // Electrike
new(351, 10, 052, 466, 352), // Castform
new(417, 10, 098, 343, 351), // Pachirisu
// Windswept Sky
new(012, 10, 093, 355, 314), // Butterfree
new(163, 10, 193, 101, 278), // Hoothoot
new(278, 10, 055, 239, 351), // Wingull
new(333, 10, 064, 297, 355), // Swablu
new(425, 10, 107, 095, 285), // Drifloon
new(441, 10, 119, 417, 272), // Chatot
// Sparkling Sea
new(079, 10, 281, 335, 362), // Slowpoke
new(098, 10, 011, 133, 290), // Krabby
new(119, 33, 352, 214, 203), // Seaking
new(120, 10, 055, 278, 196), // Staryu
new(222, 10, 145, 109, 446), // Corsola
new(422, 10, 189, 281, 290, Form: 0), // Shellos-West
new(422, 10, 189, 281, 290, Form: 1), // Shellos-East
// Spooky Manor
new(202, 15, 243, 204, 227), // Wobbuffet
new(238, 10, 186, 445, 285), // Smoochum
new(303, 10, 313, 424, 008), // Mawile
new(307, 10, 096, 409, 203), // Meditite
new(436, 10, 095, 285, 356), // Bronzor
new(052, 10, 010, 095, 290), // Meowth
new(479, 10, 086, 351, 324), // Rotom
new(280, 10, 093, 194, 270), // Ralts
new(302, 10, 193, 389, 180), // Sableye
new(442, 10, 180, 220, 196), // Spiritomb
// Rugged Mountain
new(056, 10, 067, 179, 009), // Mankey
new(111, 10, 030, 068, 038), // Rhyhorn
new(231, 10, 175, 484, 402), // Phanpy
new(451, 10, 044, 097, 401), // Skorupi
new(216, 10, 313, 242, 264), // Teddiursa
new(296, 10, 292, 270, 008), // Makuhita
new(327, 10, 383, 252, 276), // Spinda
new(374, 10, 036, 428, 442), // Beldum
new(447, 10, 203, 418, 264), // Riolu
// Icy Cave
new(173, 10, 227, 312, 214), // Cleffa
new(213, 10, 227, 270, 504), // Shuckle
new(299, 10, 033, 446, 246), // Nosepass
new(363, 10, 181, 090, 401), // Spheal
new(408, 10, 029, 442, 007), // Cranidos
new(206, 10, 111, 277, 446), // Dunsparce
new(410, 10, 182, 068, 090), // Shieldon
// Dream Park
new(048, 10, 050, 226, 285), // Venonat
new(088, 10, 139, 114, 425), // Grimer
new(415, 10, 016, 366, 314), // Combee
new(015, 10, 031, 314, 210), // Beedrill
new(335, 10, 098, 458, 067), // Zangoose
new(336, 10, 044, 034, 401), // Seviper
// PGL
new(134, 10, Gender: 0), // Vaporeon
new(135, 10, Gender: 0), // Jolteon
new(136, 10, Gender: 0), // Flareon
new(196, 10, Gender: 0), // Espeon
new(197, 10, Gender: 0), // Umbreon
new(470, 10, Gender: 0), // Leafeon
new(471, 10, Gender: 0), // Glaceon
new(001, 10, Gender: 0), // Bulbasaur
new(004, 10, Gender: 0), // Charmander
new(007, 10, Gender: 0), // Squirtle
new(453, 10, Gender: 0), // Croagunk
new(387, 10, Gender: 0), // Turtwig
new(390, 10, Gender: 0), // Chimchar
new(393, 10, Gender: 0), // Piplup
new(493, 100), // Arceus
new(252, 10, Gender: 0), // Treecko
new(255, 10, Gender: 0), // Torchic
new(258, 10, Gender: 0), // Mudkip
new(468, 10, 217, Gender: 0), // Togekiss
new(473, 34, Gender: 0), // Mamoswine
new(137, 10), // Porygon
new(384, 50), // Rayquaza
new(354, 37, 538, Gender: 1), // Banette
new(453, 10, 398, Gender: 0), // Croagunk
new(334, 35, 206, Gender: 0), // Altaria
new(242, 10), // Blissey
new(448, 10, 418, Gender: 0), // Lucario
new(189, 27, 206, Gender: 0), // Jumpluff
});
public static readonly EncounterStatic5[] DreamWorld_B2W2 = DreamWorldEntry.GetArray(B2W2, new DreamWorldEntry[]
{
// Pleasant Forest
new(535, 10, 496, 414, 352), // Tympole
new(546, 10, 073, 227, 388), // Cottonee
new(548, 10, 079, 204, 230), // Petilil
new(588, 10, 203, 224, 450), // Karrablast
new(616, 10, 051, 226, 227), // Shelmet
new(545, 30, 342, 390, 276), // Scolipede
// Windswept Sky
new(519, 10, 016, 095, 234), // Pidove
new(561, 10, 095, 500, 257), // Sigilyph
new(580, 10, 432, 362, 382), // Ducklett
new(587, 10, 098, 403, 204), // Emolga
// Sparkling Sea
new(550, 10, 029, 097, 428, Form: 0), // Basculin-Red
new(550, 10, 029, 097, 428, Form: 1), // Basculin-Blue
new(594, 10, 392, 243, 220), // Alomomola
new(618, 10, 189, 174, 281), // Stunfisk
new(564, 10, 205, 175, 334), // Tirtouga
// Spooky Manor
new(605, 10, 377, 112, 417), // Elgyem
new(624, 10, 210, 427, 389), // Pawniard
new(596, 36, 486, 050, 228), // Galvantula
new(578, 32, 105, 286, 271), // Duosion
new(622, 10, 205, 007, 009), // Golett
// Rugged Mountain
new(631, 10, 510, 257, 202), // Heatmor
new(632, 10, 210, 203, 422), // Durant
new(556, 10, 042, 073, 191), // Maractus
new(558, 34, 157, 068, 400), // Crustle
new(553, 40, 242, 068, 212), // Krookodile
// Icy Cave
new(529, 10, 229, 319, 431), // Drilbur
new(621, 10, 044, 424, 389), // Druddigon
new(525, 25, 479, 174, 484), // Boldore
new(583, 35, 429, 420, 286), // Vanillish
new(600, 38, 451, 356, 393), // Klang
new(610, 10, 082, 068, 400), // Axew
// Dream Park
new(531, 10, 270, 227, 281), // Audino
new(538, 10, 020, 008, 276), // Throh
new(539, 10, 249, 009, 530), // Sawk
new(559, 10, 067, 252, 409), // Scraggy
new(533, 25, 067, 183, 409), // Gurdurr
// PGL
new(575, 32, 243, Gender: 0), // Gothorita
new(025, 10, 029, Gender: 0), // Pikachu
new(511, 10, 437, Gender: 0), // Pansage
new(513, 10, 257, Gender: 0), // Pansear
new(515, 10, 056, Gender: 0), // Panpour
new(387, 10, 254, Gender: 0), // Turtwig
new(390, 10, 252, Gender: 0), // Chimchar
new(393, 10, 297, Gender: 0), // Piplup
new(575, 32, 286, Gender: 0), // Gothorita
});
#endregion
#region Static Encounter/Gift Tables
private static readonly EncounterStatic5[] Encounter_BW =
{
// Starters @ Nuvema Town
new(BW) { Gift = true, Species = 495, Level = 05, Location = 004 }, // Snivy
new(BW) { Gift = true, Species = 498, Level = 05, Location = 004 }, // Tepig
new(BW) { Gift = true, Species = 501, Level = 05, Location = 004 }, // Oshawott
// Fossils @ Nacrene City
new(BW) { Gift = true, Species = 138, Level = 25, Location = 007 }, // Omanyte
new(BW) { Gift = true, Species = 140, Level = 25, Location = 007 }, // Kabuto
new(BW) { Gift = true, Species = 142, Level = 25, Location = 007 }, // Aerodactyl
new(BW) { Gift = true, Species = 345, Level = 25, Location = 007 }, // Lileep
new(BW) { Gift = true, Species = 347, Level = 25, Location = 007 }, // Anorith
new(BW) { Gift = true, Species = 408, Level = 25, Location = 007 }, // Cranidos
new(BW) { Gift = true, Species = 410, Level = 25, Location = 007 }, // Shieldon
new(BW) { Gift = true, Species = 564, Level = 25, Location = 007 }, // Tirtouga
new(BW) { Gift = true, Species = 566, Level = 25, Location = 007 }, // Archen
// Gift
new(BW) { Gift = true, Species = 511, Level = 10, Location = 032 }, // Pansage @ Dreamyard
new(BW) { Gift = true, Species = 513, Level = 10, Location = 032 }, // Pansear
new(BW) { Gift = true, Species = 515, Level = 10, Location = 032 }, // Panpour
new(BW) { Gift = true, Species = 129, Level = 05, Location = 068 }, // Magikarp @ Marvelous Bridge
new(BW) { Gift = true, Species = 636, Level = 01, EggLocation = 60003 }, // Larvesta Egg from Treasure Hunter
// Stationary
new(BW) { Species = 518, Level = 50, Location = 032, Ability = OnlyHidden }, // Musharna @ Dreamyard Friday Only
new(BW) { Species = 590, Level = 20, Location = 019 }, // Foongus @ Route 6
new(BW) { Species = 590, Level = 30, Location = 023 }, // Foongus @ Route 10
new(BW) { Species = 591, Level = 40, Location = 023 }, // Amoonguss @ Route 10
new(BW) { Species = 555, Level = 35, Location = 034, Ability = OnlyHidden }, // HA Darmanitan @ Desert Resort
new(BW) { Species = 637, Level = 70, Location = 035 }, // Volcarona @ Relic Castle
// Stationary Legendary
new(BW) { Species = 638, Level = 42, Location = 074 }, // Cobalion @ Guidance Chamber
new(BW) { Species = 639, Level = 42, Location = 073 }, // Terrakion @ Trial Chamber
new(BW) { Species = 640, Level = 42, Location = 055 }, // Virizion @ Rumination Field
new(B ) { Species = 643, Level = 50, Location = 045, Shiny = Shiny.Never }, // Reshiram @ N's Castle
new(B ) { Species = 643, Level = 50, Location = 039, Shiny = Shiny.Never }, // Reshiram @ Dragonspiral Tower
new( W) { Species = 644, Level = 50, Location = 045, Shiny = Shiny.Never }, // Zekrom @ N's Castle
new( W) { Species = 644, Level = 50, Location = 039, Shiny = Shiny.Never }, // Zekrom @ Dragonspiral Tower
new(BW) { Species = 645, Level = 70, Location = 070 }, // Landorus @ Abundant Shrine
new(BW) { Species = 646, Level = 75, Location = 061 }, // Kyurem @ Giant Chasm
// Event
new(BW) { Species = 494, Level = 15, Location = 062, Shiny = Shiny.Never}, // Victini @ Liberty Garden
new(BW) { Species = 570, Level = 10, Location = 008, Shiny = Shiny.Never, Gender = 0 }, // Zorua @ Castelia City
new(BW) { Species = 571, Level = 25, Location = 072, Shiny = Shiny.Never, Gender = 1 }, // Zoroark @ Lostlorn Forest
// Roamer
new(B ) { Roaming = true, Species = 641, Level = 40, Location = 25 }, // Tornadus
new( W) { Roaming = true, Species = 642, Level = 40, Location = 25 }, // Thundurus
};
private static readonly EncounterStatic5[] Encounter_B2W2_Regular =
{
// Starters @ Aspertia City
new(B2W2) { Gift = true, Species = 495, Level = 05, Location = 117 }, // Snivy
new(B2W2) { Gift = true, Species = 498, Level = 05, Location = 117 }, // Tepig
new(B2W2) { Gift = true, Species = 501, Level = 05, Location = 117 }, // Oshawott
// Fossils @ Nacrene City
new(B2W2) { Gift = true, Species = 138, Level = 25, Location = 007 }, // Omanyte
new(B2W2) { Gift = true, Species = 140, Level = 25, Location = 007 }, // Kabuto
new(B2W2) { Gift = true, Species = 142, Level = 25, Location = 007 }, // Aerodactyl
new(B2W2) { Gift = true, Species = 345, Level = 25, Location = 007 }, // Lileep
new(B2W2) { Gift = true, Species = 347, Level = 25, Location = 007 }, // Anorith
new(B2W2) { Gift = true, Species = 408, Level = 25, Location = 007 }, // Cranidos
new(B2W2) { Gift = true, Species = 410, Level = 25, Location = 007 }, // Shieldon
new(B2W2) { Gift = true, Species = 564, Level = 25, Location = 007 }, // Tirtouga
new(B2W2) { Gift = true, Species = 566, Level = 25, Location = 007 }, // Archen
// Gift
new(B2W2) { Gift = true, Species = 133, Level = 10, Location = 008, Ability = OnlyHidden }, // HA Eevee @ Castelia City
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 0 }, // HA Deerling @ Route 6
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 1 }, // HA Deerling @ Route 6
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 2 }, // HA Deerling @ Route 6
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 3 }, // HA Deerling @ Route 6
new(B2 ) { Gift = true, Species = 443, Level = 01, Location = 122, Shiny = Shiny.Always, Gender = 0 }, // Shiny Gible @ Floccesy Town
new( W2) { Gift = true, Species = 147, Level = 01, Location = 122, Shiny = Shiny.Always, Gender = 0 }, // Shiny Dratini @ Floccesy Town
new(B2W2) { Gift = true, Species = 129, Level = 05, Location = 068 } , // Magikarp @ Marvelous Bridge
new(B2W2) { Gift = true, Species = 440, Level = 01, EggLocation = 60003 }, // Happiny Egg from PKMN Breeder
// Stationary
new(B2W2) { Species = 590, Level = 29, Location = 019 }, // Foongus @ Route 6
new(B2W2) { Species = 591, Level = 43, Location = 024 }, // Amoonguss @ Route 11
new(B2W2) { Species = 591, Level = 47, Location = 127 }, // Amoonguss @ Route 22
new(B2W2) { Species = 591, Level = 56, Location = 128 }, // Amoonguss @ Route 23
new(B2 ) { Species = 593, Level = 40, Location = 071, Ability = OnlyHidden, Gender = 0 }, // HA Jellicent @ Undella Bay Mon Only
new( W2) { Species = 593, Level = 40, Location = 071, Ability = OnlyHidden, Gender = 1 }, // HA Jellicent @ Undella Bay Thurs Only
new(B2W2) { Species = 593, Level = 40, Location = 071 }, // HA Jellicent @ Undella Bay EncounterSlot collision
new( W2) { Species = 628, Level = 25, Location = 017, Ability = OnlyHidden, Gender = 0 }, // HA Braviary @ Route 4 Mon Only
new(B2 ) { Species = 630, Level = 25, Location = 017, Ability = OnlyHidden, Gender = 1 }, // HA Mandibuzz @ Route 4 Thurs Only
new(B2W2) { Species = 637, Level = 35, Location = 035 }, // Volcarona @ Relic Castle
new(B2W2) { Species = 637, Level = 65, Location = 035 }, // Volcarona @ Relic Castle
new(B2W2) { Species = 558, Level = 42, Location = 141 }, // Crustle @ Seaside Cave
new(B2W2) { Species = 612, Level = 60, Location = 147, Shiny = Shiny.Always}, // Haxorus @ Nature Preserve
// Stationary Legendary
new(B2W2) { Species = 377, Level = 65, Location = 150 }, // Regirock @ Rock Peak Chamber
new(B2W2) { Species = 378, Level = 65, Location = 151 }, // Regice @ Iceberg Chamber
new(B2W2) { Species = 379, Level = 65, Location = 152 }, // Registeel @ Iron Chamber
new( W2) { Species = 380, Level = 68, Location = 032 }, // Latias @ Dreamyard
new(B2 ) { Species = 381, Level = 68, Location = 032 }, // Latios @ Dreamyard
new(B2W2) { Species = 480, Level = 65, Location = 007 }, // Uxie @ Nacrene City
new(B2W2) { Species = 481, Level = 65, Location = 056 }, // Mesprit @ Celestial Tower
new(B2W2) { Species = 482, Level = 65, Location = 128 }, // Azelf @ Route 23
new(B2W2) { Species = 485, Level = 68, Location = 132 }, // Heatran @ Reversal Mountain
new(B2W2) { Species = 486, Level = 68, Location = 038 }, // Regigigas @ Twist Mountain
new(B2W2) { Species = 488, Level = 68, Location = 068 }, // Cresselia @ Marvelous Bridge
new(B2W2) { Species = 638, Level = 45, Location = 026 }, // Cobalion @ Route 13
new(B2W2) { Species = 638, Level = 65, Location = 026 }, // Cobalion @ Route 13
new(B2W2) { Species = 639, Level = 45, Location = 127 }, // Terrakion @ Route 22
new(B2W2) { Species = 639, Level = 65, Location = 127 }, // Terrakion @ Route 22
new(B2W2) { Species = 640, Level = 45, Location = 024 }, // Virizion @ Route 11
new(B2W2) { Species = 640, Level = 65, Location = 024 }, // Virizion @ Route 11
new( W2) { Species = 643, Level = 70, Location = 039, Shiny = Shiny.Never }, // Reshiram @ Dragonspiral Tower
new(B2 ) { Species = 644, Level = 70, Location = 039, Shiny = Shiny.Never }, // Zekrom @ Dragonspiral Tower
new(B2W2) { Species = 646, Level = 70, Location = 061, Form = 0 }, // Kyurem @ Giant Chasm
};
private static readonly EncounterStatic5N[] Encounter_B2W2_N =
{
// N's Pokemon
new(0xFF01007F) { Species = 509, Level = 07, Location = 015, Ability = OnlySecond, Nature = Nature.Timid }, // Purloin @ Route 2
new(0xFF01007F) { Species = 519, Level = 13, Location = 033, Ability = OnlySecond, Nature = Nature.Sassy }, // Pidove @ Pinwheel Forest
new(0xFF00003F) { Species = 532, Level = 13, Location = 033, Ability = OnlyFirst, Nature = Nature.Rash }, // Timburr @ Pinwheel Forest
new(0xFF01007F) { Species = 535, Level = 13, Location = 033, Ability = OnlySecond, Nature = Nature.Modest }, // Tympole @ Pinwheel Forest
new(0xFF00007F) { Species = 527, Level = 55, Location = 053, Ability = OnlyFirst, Nature = Nature.Timid }, // Woobat @ Wellspring Cave
new(0xFF01007F) { Species = 551, Level = 22, Location = 034, Ability = OnlySecond, Nature = Nature.Docile }, // Sandile @ Desert Resort
new(0xFF00007F) { Species = 554, Level = 22, Location = 034, Ability = OnlyFirst, Nature = Nature.Naive }, // Darumaka @ Desert Resort
new(0xFF00007F) { Species = 555, Level = 35, Location = 034, Ability = OnlyHidden, Nature = Nature.Calm }, // Darmanitan @ Desert Resort
new(0xFF00007F) { Species = 559, Level = 22, Location = 034, Ability = OnlyFirst, Nature = Nature.Lax }, // Scraggy @ Desert Resort
new(0xFF01007F) { Species = 561, Level = 22, Location = 034, Ability = OnlySecond, Nature = Nature.Gentle }, // Sigilyph @ Desert Resort
new(0xFF00007F) { Species = 525, Level = 28, Location = 037, Ability = OnlyFirst, Nature = Nature.Naive }, // Boldore @ Chargestone Cave
new(0xFF01007F) { Species = 595, Level = 28, Location = 037, Ability = OnlySecond, Nature = Nature.Docile }, // Joltik @ Chargestone Cave
new(0xFF00007F) { Species = 597, Level = 28, Location = 037, Ability = OnlyFirst, Nature = Nature.Bashful }, // Ferroseed @ Chargestone Cave
new(0xFF000000) { Species = 599, Level = 28, Location = 037, Ability = OnlyFirst, Nature = Nature.Rash }, // Klink @ Chargestone Cave
new(0xFF00001F) { Species = 570, Level = 25, Location = 010, Ability = OnlyFirst, Nature = Nature.Hasty, Gift = true }, // N's Zorua @ Driftveil City
};
private static readonly EncounterStatic5[] Encounter_B2W2 = ArrayUtil.ConcatAll(Encounter_B2W2_Regular, Encounter_B2W2_N, Encounter_DreamRadar);
#endregion
#region Trade Tables
internal static readonly EncounterTrade5PID[] TradeGift_BW =
{
new(B , 0x64000000) { Species = 548, Level = 15, Ability = OnlyFirst, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,20,31,20), Nature = Nature.Modest }, // Petilil
new( W, 0x6400007E) { Species = 546, Level = 15, Ability = OnlyFirst, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,20,31,20), Nature = Nature.Modest }, // Cottonee
new(B , 0x9400007F) { Species = 550, Level = 25, Ability = OnlyFirst, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,31,20,20,20,20), Nature = Nature.Adamant, Form = 0 }, // Basculin-Red
new( W, 0x9400007F) { Species = 550, Level = 25, Ability = OnlyFirst, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,31,20,20,20,20), Nature = Nature.Adamant, Form = 1 }, // Basculin-Blue
new(BW, 0xD400007F) { Species = 587, Level = 30, Ability = OnlyFirst, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,20,31,20,20,20), Nature = Nature.Lax }, // Emolga
new(BW, 0x2A000000) { Species = 479, Level = 60, Ability = OnlyFirst, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new(20,20,20,20,20,31), Nature = Nature.Gentle }, // Rotom
new(BW, 0x6200001F) { Species = 446, Level = 60, Ability = OnlySecond, TID = 40217, SID = 00000, OTGender = 0, Gender = 0, IVs = new(31,20,20,20,20,20), Nature = Nature.Serious }, // Munchlax
};
internal static readonly EncounterTrade5[] TradeGift_B2W2_Regular =
{
new(B2 ) { Species = 548, Level = 20, Ability = OnlySecond, TID = 65217, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,20,31,20), Nature = Nature.Timid }, // Petilil
new( W2) { Species = 546, Level = 20, Ability = OnlyFirst, TID = 05720, SID = 00001, OTGender = 0, Gender = 0, IVs = new(20,20,20,20,31,20), Nature = Nature.Modest }, // Cottonee
new(B2W2) { Species = 526, Level = 35, Ability = OnlyFirst, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,31,20,20,20,20), Nature = Nature.Adamant, IsNicknamed = false }, // Gigalith
new(B2W2) { Species = 465, Level = 45, Ability = OnlyFirst, TID = 27658, SID = 00001, OTGender = 0, Gender = 0, IVs = new(31,20,20,20,20,20), Nature = Nature.Hardy }, // Tangrowth
new(B2W2) { Species = 479, Level = 60, Ability = OnlyFirst, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new(20,20,20,20,20,31), Nature = Nature.Calm }, // Rotom
new(B2W2) { Species = 424, Level = 40, Ability = OnlySecond, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new(20,20,20,31,20,20), Nature = Nature.Jolly }, // Ambipom
new(B2W2) { Species = 065, Level = 40, Ability = OnlyFirst, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new(20,20,20,31,20,20), Nature = Nature.Timid }, // Alakazam
};
internal const int YancyTID = 10303;
internal const int CurtisTID = 54118;
private static readonly string[] TradeOT_B2W2_F = { string.Empty, "ルリ", "Yancy", "Brenda", "Lilì", "Sabine", string.Empty, "Belinda", "루리" };
private static readonly string[] TradeOT_B2W2_M = { string.Empty, "テツ", "Curtis", "Julien", "Dadi", "Markus", string.Empty, "Julián", "철권" };
private static readonly EncounterTrade5[] TradeGift_B2W2_YancyCurtis =
{
// Player is Male
new(B2W2) { Species = 052, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Meowth
new(B2W2) { Species = 202, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Wobbuffet
new(B2W2) { Species = 280, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Ralts
new(B2W2) { Species = 410, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Shieldon
new(B2W2) { Species = 111, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Rhyhorn
new(B2W2) { Species = 422, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F, Form = 0 }, // Shellos-West
new(B2W2) { Species = 303, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Mawile
new(B2W2) { Species = 442, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Spiritomb
new(B2W2) { Species = 143, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Snorlax
new(B2W2) { Species = 216, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Teddiursa
new(B2W2) { Species = 327, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Spinda
new(B2W2) { Species = 175, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Togepi
// Player is Female
new(B2W2) { Species = 056, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Mankey
new(B2W2) { Species = 202, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Wobbuffet
new(B2W2) { Species = 280, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Ralts
new(B2W2) { Species = 408, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Cranidos
new(B2W2) { Species = 111, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Rhyhorn
new(B2W2) { Species = 422, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M, Form = 1 }, // Shellos-East
new(B2W2) { Species = 302, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Sableye
new(B2W2) { Species = 442, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Spiritomb
new(B2W2) { Species = 143, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Snorlax
new(B2W2) { Species = 231, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Phanpy
new(B2W2) { Species = 327, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Spinda
new(B2W2) { Species = 175, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Togepi
};
private const string tradeBW = "tradebw";
private const string tradeB2W2 = "tradeb2w2";
private static readonly string[][] TradeBW = Util.GetLanguageStrings8(tradeBW);
private static readonly string[][] TradeB2W2 = Util.GetLanguageStrings8(tradeB2W2);
internal static readonly EncounterTrade5[] TradeGift_B2W2 = ArrayUtil.ConcatAll(TradeGift_B2W2_Regular, TradeGift_B2W2_YancyCurtis);
#endregion
internal static readonly EncounterStatic5[] StaticB = ArrayUtil.ConcatAll(GetEncounters(Encounter_BW, B), DreamWorld_Common, DreamWorld_BW);
internal static readonly EncounterStatic5[] StaticW = ArrayUtil.ConcatAll(GetEncounters(Encounter_BW, W), DreamWorld_Common, DreamWorld_BW);
internal static readonly EncounterStatic5[] StaticB2 = ArrayUtil.ConcatAll(GetEncounters(Encounter_B2W2, B2), DreamWorld_Common, DreamWorld_B2W2);
internal static readonly EncounterStatic5[] StaticW2 = ArrayUtil.ConcatAll(GetEncounters(Encounter_B2W2, W2), DreamWorld_Common, DreamWorld_B2W2);
}

File diff suppressed because it is too large Load diff

View file

@ -1,26 +0,0 @@
using static PKHeX.Core.GameVersion;
namespace PKHeX.Core;
// Dynamax Crystal Distribution Nest Encounters (BCAT)
internal static partial class Encounters8Nest
{
#region Dynamax Crystal Distributions
internal static readonly EncounterStatic8NC[] Crystal_SWSH =
{
new(SWSH) { Species = 782, Level = 16, Ability = A3, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 2, Moves = new(033,029,525,043) }, // ★And458 Jangmo-o
new(SWSH) { Species = 246, Level = 16, Ability = A3, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 2, Moves = new(033,157,371,044) }, // ★And15 Larvitar
new(SWSH) { Species = 823, Level = 50, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,31), DynamaxLevel = 5, Moves = new(065,442,034,796), CanGigantamax = true }, // ★And337 Gigantamax Corviknight
new(SWSH) { Species = 875, Level = 15, Ability = A3, Location = 126, IVs = new(31,31,-1,31,-1,-1), DynamaxLevel = 2, Moves = new(181,311,054,556) }, // ★And603 Eiscue
new(SWSH) { Species = 874, Level = 15, Ability = A3, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 2, Moves = new(397,317,335,157) }, // ★And390 Stonjourner
new(SWSH) { Species = 879, Level = 35, Ability = A3, Location = 126, IVs = new(31,31,-1, 0,31,-1), DynamaxLevel = 4, Moves = new(484,174,776,583), CanGigantamax = true }, // ★Sgr6879 Gigantamax Copperajah
new(SWSH) { Species = 851, Level = 35, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(680,679,489,438), CanGigantamax = true }, // ★Sgr6859 Gigantamax Centiskorch
new(SW ) { Species = 842, Level = 40, Ability = A0, Location = 126, IVs = new(31,-1,31,-1,31,-1), DynamaxLevel = 5, Moves = new(787,412,406,076), CanGigantamax = true }, // ★Sgr6913 Gigantamax Appletun
new( SH) { Species = 841, Level = 40, Ability = A0, Location = 126, IVs = new(31,31,-1,31,-1,-1), DynamaxLevel = 5, Moves = new(788,491,412,406), CanGigantamax = true }, // ★Sgr6913 Gigantamax Flapple
new(SWSH) { Species = 844, Level = 40, Ability = A0, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(523,776,489,157), CanGigantamax = true }, // ★Sgr7348 Gigantamax Sandaconda
new(SWSH) { Species = 884, Level = 40, Ability = A2, Location = 126, IVs = new(31,-1,-1,31,31,-1), DynamaxLevel = 5, Moves = new(796,063,784,319), CanGigantamax = true }, // ★Sgr7121 Gigantamax Duraludon
new(SWSH) { Species = 025, Level = 25, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(606,273,104,085), CanGigantamax = true }, // ★Sgr6746 Gigantamax Pikachu
new(SWSH) { Species = 133, Level = 25, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(606,273,038,129), CanGigantamax = true }, // ★Sgr7194 Gigantamax Eevee
};
#endregion
}

View file

@ -1,664 +0,0 @@
using static PKHeX.Core.GameVersion;
namespace PKHeX.Core;
// Distribution Nest Encounters (BCAT)
internal static partial class Encounters8Nest
{
/// <summary>
/// Nest distribution raids for <see cref="GameVersion.SWSH"/> available during base game era.
/// </summary>
internal static readonly EncounterStatic8ND[] Dist_Base =
{
new(17,01,1) { Species = 052, Ability = A4, Moves = new(252, 044, 010, 364), Index = 23, CanGigantamax = true }, // Meowth
new(17,01,1) { Species = 052, Ability = A4, Moves = new(006, 044, 010, 364), Index = 23, CanGigantamax = true }, // Meowth
new(30,03,2) { Species = 052, Ability = A4, Moves = new(252, 044, 269, 154), Index = 23, CanGigantamax = true }, // Meowth
new(30,03,2) { Species = 052, Ability = A4, Moves = new(006, 044, 269, 154), Index = 23, CanGigantamax = true }, // Meowth
new(40,05,3) { Species = 052, Ability = A4, Moves = new(252, 044, 417, 163), Index = 23, CanGigantamax = true }, // Meowth
new(40,05,3) { Species = 052, Ability = A4, Moves = new(006, 044, 417, 163), Index = 23, CanGigantamax = true }, // Meowth
new(50,08,4) { Species = 052, Ability = A4, Moves = new(252, 583, 417, 163), Index = 23, CanGigantamax = true }, // Meowth
new(50,08,4) { Species = 052, Ability = A4, Moves = new(006, 583, 417, 163), Index = 23, CanGigantamax = true }, // Meowth
new(60,10,5) { Species = 052, Ability = A4, Moves = new(252, 583, 417, 034), Index = 23, CanGigantamax = true }, // Meowth
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 583, 417, 034), Index = 23, CanGigantamax = true }, // Meowth
new(17,01,1) { Species = 133, Ability = A4, Moves = new(098, 270, 608, 028), Index = 22, CanGigantamax = true }, // Eevee
new(30,03,2) { Species = 133, Ability = A4, Moves = new(129, 270, 608, 044), Index = 22, CanGigantamax = true }, // Eevee
new(40,05,3) { Species = 133, Ability = A4, Moves = new(036, 270, 608, 044), Index = 22, CanGigantamax = true }, // Eevee
new(40,05,3) { Species = 133, Ability = A4, Moves = new(036, 270, 608, 231), Index = 22, CanGigantamax = true }, // Eevee
new(50,08,4) { Species = 133, Ability = A4, Moves = new(038, 270, 204, 044), Index = 22, CanGigantamax = true }, // Eevee
new(50,08,4) { Species = 133, Ability = A4, Moves = new(038, 203, 204, 231), Index = 22, CanGigantamax = true }, // Eevee
new(60,10,5) { Species = 133, Ability = A4, Moves = new(038, 270, 204, 231), Index = 22, CanGigantamax = true }, // Eevee
new(60,10,5) { Species = 133, Ability = A4, Moves = new(387, 203, 204, 231), Index = 22, CanGigantamax = true }, // Eevee
new(17,01,1) { Species = 025, Ability = A4, Moves = new(084, 104, 486, 364), Index = 21, CanGigantamax = true }, // Pikachu
new(30,03,2) { Species = 025, Ability = A4, Moves = new(021, 209, 097, 364), Index = 21, CanGigantamax = true }, // Pikachu
new(40,05,3) { Species = 025, Ability = A4, Moves = new(021, 113, 085, 364), Index = 21, CanGigantamax = true }, // Pikachu
new(50,08,4) { Species = 025, Ability = A4, Moves = new(087, 113, 085, 364), Index = 21, CanGigantamax = true }, // Pikachu
new(50,08,4) { Species = 025, Ability = A4, Moves = new(087, 113, 057, 085), Index = 21, CanGigantamax = true }, // Pikachu
new(60,10,5) { Species = 025, Ability = A4, Moves = new(087, 113, 057, 364), Index = 21, CanGigantamax = true }, // Pikachu
new(60,10,5) { Species = 025, Ability = A4, Moves = new(087, 113, 057, 344), Index = 21, CanGigantamax = true }, // Pikachu
new(17,01,1) { Species = 246, Ability = A4, Moves = new(157, 044, 184, 033), Index = 20 }, // Larvitar
new(17,01,1) { Species = 529, Ability = A4, Moves = new(189, 232, 010, 468), Index = 20 }, // Drilbur
new(17,01,1) { Species = 546, Ability = A4, Moves = new(584, 078, 075, 071), Index = 20 }, // Cottonee
new(17,01,1) { Species = 885, Ability = A4, Moves = new(611, 098, 310, 044), Index = 20 }, // Dreepy
new(17,01,1) { Species = 175, Ability = A4, Moves = new(204, 577, 113, 791), Index = 20 }, // Togepi
new(30,03,2) { Species = 247, Ability = A4, Moves = new(157, 242, 334, 707), Index = 20 }, // Pupitar
new(30,03,2) { Species = 529, Ability = A4, Moves = new(189, 232, 157, 306), Index = 20 }, // Drilbur
new(30,03,2) { Species = 546, Ability = A4, Moves = new(202, 075, 204, 077), Index = 20 }, // Cottonee
new(30,03,2) { Species = 886, Ability = A4, Moves = new(097, 506, 372, 458), Index = 20 }, // Drakloak
new(30,03,2) { Species = 176, Ability = A4, Moves = new(584, 038, 113, 791), Index = 20 }, // Togetic
new(40,05,3) { Species = 248, Ability = A4, Moves = new(444, 242, 334, 089), Index = 20 }, // Tyranitar
new(40,05,3) { Species = 530, Ability = A4, Moves = new(529, 232, 157, 032), Index = 20 }, // Excadrill
new(40,05,3) { Species = 547, Ability = A4, Moves = new(283, 585, 077, 366), Index = 20 }, // Whimsicott
new(40,05,3) { Species = 887, Ability = A4, Moves = new(751, 506, 349, 458), Index = 20 }, // Dragapult
new(40,05,3) { Species = 468, Ability = A4, Moves = new(605, 038, 246, 403), Index = 20 }, // Togekiss
new(50,08,4) { Species = 248, Ability = A4, Moves = new(444, 242, 442, 089), Index = 20 }, // Tyranitar
new(50,08,4) { Species = 530, Ability = A4, Moves = new(529, 442, 157, 032), Index = 20 }, // Excadrill
new(50,08,4) { Species = 547, Ability = A4, Moves = new(283, 585, 073, 366), Index = 20 }, // Whimsicott
new(50,08,4) { Species = 887, Ability = A4, Moves = new(751, 506, 349, 211), Index = 20 }, // Dragapult
new(50,08,4) { Species = 468, Ability = A4, Moves = new(605, 219, 246, 403), Index = 20 }, // Togekiss
new(60,10,5) { Species = 248, Ability = A4, Moves = new(444, 242, 442, 276), Index = 20 }, // Tyranitar
new(60,10,5) { Species = 530, Ability = A4, Moves = new(089, 442, 157, 032), Index = 20 }, // Excadrill
new(60,10,5) { Species = 547, Ability = A4, Moves = new(538, 585, 073, 366), Index = 20 }, // Whimsicott
new(60,10,5) { Species = 887, Ability = A4, Moves = new(751, 566, 349, 211), Index = 20 }, // Dragapult
new(60,10,5) { Species = 468, Ability = A4, Moves = new(605, 219, 246, 053), Index = 20 }, // Togekiss
new(17,01,1,SW) { Species = 479, Ability = A4, Moves = new(104, 315, 084, 109), Index = 20, Form = 1 }, // Rotom-1
new(30,03,2,SW) { Species = 479, Ability = A4, Moves = new(104, 315, 085, 109), Index = 20, Form = 1 }, // Rotom-1
new(40,05,3,SW) { Species = 479, Ability = A4, Moves = new(521, 315, 085, 506), Index = 20, Form = 1 }, // Rotom-1
new(50,08,4,SW) { Species = 479, Ability = A4, Moves = new(521, 315, 085, 261), Index = 20, Form = 1 }, // Rotom-1
new(60,10,5,SW) { Species = 479, Ability = A4, Moves = new(521, 315, 435, 261), Index = 20, Form = 1 }, // Rotom-1
new(17,01,1,SH) { Species = 479, Ability = A4, Moves = new(104, 056, 084, 109), Index = 20, Form = 2 }, // Rotom-2
new(30,03,2,SH) { Species = 479, Ability = A4, Moves = new(104, 056, 085, 109), Index = 20, Form = 2 }, // Rotom-2
new(40,05,3,SH) { Species = 479, Ability = A4, Moves = new(521, 435, 085, 056), Index = 20, Form = 2 }, // Rotom-2
new(50,08,4,SH) { Species = 479, Ability = A4, Moves = new(521, 435, 247, 056), Index = 20, Form = 2 }, // Rotom-2
new(60,10,5,SH) { Species = 479, Ability = A4, Moves = new(521, 056, 247, 261), Index = 20, Form = 2 }, // Rotom-2
new(17,01,1) { Species = 246, Ability = A4, Moves = new(157, 044, 184, 033), Index = 19 }, // Larvitar
new(17,01,1) { Species = 546, Ability = A4, Moves = new(584, 078, 075, 071), Index = 19 }, // Cottonee
new(17,01,1) { Species = 885, Ability = A4, Moves = new(611, 098, 310, 044), Index = 19 }, // Dreepy
new(17,01,1) { Species = 175, Ability = A4, Moves = new(204, 577, 113, 791), Index = 19 }, // Togepi
new(30,03,2) { Species = 247, Ability = A4, Moves = new(157, 242, 334, 707), Index = 19 }, // Pupitar
new(30,03,2) { Species = 529, Ability = A4, Moves = new(189, 232, 157, 306), Index = 19 }, // Drilbur
new(30,03,2) { Species = 546, Ability = A4, Moves = new(202, 075, 204, 077), Index = 19 }, // Cottonee
new(30,03,2) { Species = 886, Ability = A4, Moves = new(097, 506, 372, 458), Index = 19 }, // Drakloak
new(30,03,2) { Species = 176, Ability = A4, Moves = new(584, 038, 113, 791), Index = 19 }, // Togetic
new(40,05,3) { Species = 248, Ability = A4, Moves = new(444, 242, 334, 089), Index = 19 }, // Tyranitar
new(40,05,3) { Species = 530, Ability = A4, Moves = new(529, 232, 157, 032), Index = 19 }, // Excadrill
new(40,05,3) { Species = 547, Ability = A4, Moves = new(283, 585, 077, 366), Index = 19 }, // Whimsicott
new(40,05,3) { Species = 887, Ability = A4, Moves = new(751, 506, 349, 458), Index = 19 }, // Dragapult
new(40,05,3) { Species = 468, Ability = A4, Moves = new(605, 038, 246, 403), Index = 19 }, // Togekiss
new(50,08,4) { Species = 248, Ability = A4, Moves = new(444, 242, 442, 089), Index = 19 }, // Tyranitar
new(50,08,4) { Species = 530, Ability = A4, Moves = new(529, 442, 157, 032), Index = 19 }, // Excadrill
new(50,08,4) { Species = 547, Ability = A4, Moves = new(283, 585, 073, 366), Index = 19 }, // Whimsicott
new(50,08,4) { Species = 887, Ability = A4, Moves = new(751, 506, 349, 211), Index = 19 }, // Dragapult
new(50,08,4) { Species = 468, Ability = A4, Moves = new(605, 219, 246, 403), Index = 19 }, // Togekiss
new(60,10,5) { Species = 248, Ability = A4, Moves = new(444, 242, 442, 276), Index = 19 }, // Tyranitar
new(60,10,5) { Species = 530, Ability = A4, Moves = new(089, 442, 157, 032), Index = 19 }, // Excadrill
new(60,10,5) { Species = 547, Ability = A4, Moves = new(538, 585, 073, 366), Index = 19 }, // Whimsicott
new(60,10,5) { Species = 887, Ability = A4, Moves = new(751, 566, 349, 211), Index = 19 }, // Dragapult
new(60,10,5) { Species = 468, Ability = A4, Moves = new(605, 219, 246, 053), Index = 19 }, // Togekiss
new(17,01,1,SW) { Species = 479, Ability = A4, Moves = new(104, 315, 084, 109), Index = 19, Form = 1 }, // Rotom-1
new(17,01,1,SW) { Species = 529, Ability = A4, Moves = new(189, 232, 010, 468), Index = 19 }, // Drilbur
new(30,03,2,SW) { Species = 479, Ability = A4, Moves = new(104, 315, 085, 109), Index = 19, Form = 1 }, // Rotom-1
new(40,05,3,SW) { Species = 479, Ability = A4, Moves = new(521, 315, 085, 506), Index = 19, Form = 1 }, // Rotom-1
new(50,08,4,SW) { Species = 479, Ability = A4, Moves = new(521, 315, 085, 261), Index = 19, Form = 1 }, // Rotom-1
new(60,10,5,SW) { Species = 479, Ability = A4, Moves = new(521, 315, 435, 261), Index = 19, Form = 1 }, // Rotom-1
new(17,01,1,SH) { Species = 479, Ability = A4, Moves = new(104, 435, 084, 109), Index = 19, Form = 2 }, // Rotom-2
//new(17,01,1,SH) { Species = 529, Ability = A4, Moves = new(189, 232, 056, 468), Index = 19 }, // Drilbur - From initial revision: treat this as illegal.
new(30,03,2,SH) { Species = 479, Ability = A4, Moves = new(104, 056, 085, 109), Index = 19, Form = 2 }, // Rotom-2
new(40,05,3,SH) { Species = 479, Ability = A4, Moves = new(521, 435, 085, 056), Index = 19, Form = 2 }, // Rotom-2
new(50,08,4,SH) { Species = 479, Ability = A4, Moves = new(521, 435, 247, 056), Index = 19, Form = 2 }, // Rotom-2
new(60,10,5,SH) { Species = 479, Ability = A4, Moves = new(521, 056, 247, 261), Index = 19, Form = 2 }, // Rotom-2
new(17,01,1) { Species = 878, Ability = A4, Moves = new(091, 249, 205, 523), Index = 17 }, // Cufant
new(17,01,1) { Species = 568, Ability = A4, Moves = new(001, 499, 491, 133), Index = 17 }, // Trubbish
new(17,01,1) { Species = 004, Ability = A4, Moves = new(424, 052, 108, 225), Index = 17 }, // Charmander
new(17,01,1) { Species = 884, Ability = A4, Moves = new(468, 249, 043, 232), Index = 17 }, // Duraludon
new(30,03,2) { Species = 878, Ability = A4, Moves = new(334, 091, 205, 523), Index = 17 }, // Cufant
new(30,03,2) { Species = 568, Ability = A4, Moves = new(036, 499, 124, 133), Index = 17 }, // Trubbish
new(30,03,2) { Species = 884, Ability = A4, Moves = new(468, 249, 784, 232), Index = 17 }, // Duraludon
new(30,03,2) { Species = 005, Ability = A4, Moves = new(053, 163, 108, 225), Index = 17 }, // Charmeleon
new(40,05,2) { Species = 848, Ability = A4, Moves = new(609, 051, 175, 715), Index = 17 }, // Toxel
new(40,05,2) { Species = 458, Ability = A4, Moves = new(403, 061, 469, 503), Index = 17 }, // Mantyke
new(40,05,3) { Species = 406, Ability = A4, Moves = new(071, 074, 078, 188), Index = 17 }, // Budew
new(40,05,3) { Species = 236, Ability = A4, Moves = new(280, 157, 252, 116), Index = 17 }, // Tyrogue
new(40,05,3) { Species = 438, Ability = A4, Moves = new(317, 389, 157, 313), Index = 17 }, // Bonsly
new(40,05,3) { Species = 447, Ability = A4, Moves = new(014, 009, 232, 249), Index = 17 }, // Riolu
new(40,05,3) { Species = 446, Ability = A4, Moves = new(034, 089, 044, 122), Index = 17 }, // Munchlax
new(40,05,3) { Species = 439, Ability = A4, Moves = new(389, 060, 182, 085), Index = 17 }, // Mime Jr.
new(50,08,4) { Species = 175, Ability = A4, Moves = new(605, 219, 246, 053), Index = 17 }, // Togepi
new(50,08,4) { Species = 360, Ability = A4, Moves = new(068, 243, 204, 133), Index = 17 }, // Wynaut
new(50,08,4) { Species = 173, Ability = A4, Moves = new(574, 005, 113, 034), Index = 17 }, // Cleffa
new(50,08,4) { Species = 006, Ability = A4, Moves = new(053, 403, 076, 257), Index = 17, CanGigantamax = true }, // Charizard
new(50,08,4) { Species = 172, Ability = A4, Moves = new(583, 417, 085, 186), Index = 17 }, // Pichu
new(50,08,4) { Species = 884, Ability = A4, Moves = new(337, 430, 784, 776), Index = 17, CanGigantamax = true }, // Duraludon
new(60,10,5) { Species = 132, Ability = A4, Moves = new(144, 000, 000, 000), Index = 17 }, // Ditto
new(60,10,5,SW) { Species = 879, Ability = A4, Moves = new(442, 583, 438, 089), Index = 17, CanGigantamax = true }, // Copperajah
new(60,10,5,SW) { Species = 884, Ability = A4, Moves = new(430, 406, 085, 334), Index = 17, CanGigantamax = true }, // Duraludon
new(60,10,5,SH) { Species = 569, Ability = A4, Moves = new(441, 499, 402, 707), Index = 17, CanGigantamax = true }, // Garbodor
new(60,10,5,SH) { Species = 006, Ability = A4, Moves = new(053, 403, 019, 411), Index = 17, CanGigantamax = true }, // Charizard
new(17,01,1) { Species = 878, Ability = A4, Moves = new(091, 249, 205, 523), Index = 16 }, // Cufant
new(17,01,1) { Species = 568, Ability = A4, Moves = new(001, 499, 491, 133), Index = 16 }, // Trubbish
new(17,01,1) { Species = 004, Ability = A4, Moves = new(424, 052, 108, 225), Index = 16 }, // Charmander
new(17,01,1) { Species = 884, Ability = A4, Moves = new(468, 249, 043, 232), Index = 16 }, // Duraludon
new(30,03,2) { Species = 878, Ability = A4, Moves = new(334, 091, 205, 523), Index = 16 }, // Cufant
new(30,03,2) { Species = 568, Ability = A4, Moves = new(036, 499, 124, 133), Index = 16 }, // Trubbish
new(30,03,2) { Species = 005, Ability = A4, Moves = new(053, 163, 108, 225), Index = 16 }, // Charmeleon
new(30,03,2) { Species = 884, Ability = A4, Moves = new(468, 249, 784, 232), Index = 16 }, // Duraludon
new(40,05,3) { Species = 879, Ability = A4, Moves = new(334, 070, 442, 523), Index = 16, CanGigantamax = true }, // Copperajah
new(40,05,3) { Species = 569, Ability = A4, Moves = new(188, 499, 034, 707), Index = 16, CanGigantamax = true }, // Garbodor
new(40,05,3) { Species = 006, Ability = A4, Moves = new(053, 403, 108, 225), Index = 16, CanGigantamax = true }, // Charizard
new(40,05,3) { Species = 884, Ability = A4, Moves = new(442, 555, 784, 334), Index = 16, CanGigantamax = true }, // Duraludon
new(50,08,4) { Species = 879, Ability = A4, Moves = new(667, 442, 438, 523), Index = 16, CanGigantamax = true }, // Copperajah
new(50,08,4) { Species = 569, Ability = A4, Moves = new(441, 499, 402, 707), Index = 16, CanGigantamax = true }, // Garbodor
new(50,08,4) { Species = 006, Ability = A4, Moves = new(053, 403, 076, 257), Index = 16, CanGigantamax = true }, // Charizard
new(50,08,4) { Species = 884, Ability = A4, Moves = new(337, 430, 784, 776), Index = 16, CanGigantamax = true }, // Duraludon
new(60,10,5,SW) { Species = 879, Ability = A4, Moves = new(442, 583, 438, 089), Index = 16, CanGigantamax = true }, // Copperajah
new(60,10,5,SW) { Species = 884, Ability = A4, Moves = new(430, 406, 085, 334), Index = 16, CanGigantamax = true }, // Duraludon
new(60,10,5,SH) { Species = 569, Ability = A4, Moves = new(441, 409, 402, 707), Index = 16, CanGigantamax = true }, // Garbodor
new(60,10,5,SH) { Species = 006, Ability = A4, Moves = new(257, 403, 406, 411), Index = 16, CanGigantamax = true, Shiny = Shiny.Never }, // Charizard
new(17,01,1) { Species = 588, Ability = A4, Moves = new(064, 043, 210, 491), Index = 15 }, // Karrablast
new(17,01,1) { Species = 616, Ability = A4, Moves = new(071, 051, 174, 522), Index = 15 }, // Shelmet
new(17,01,1) { Species = 092, Ability = A4, Moves = new(122, 109, 095, 371), Index = 15 }, // Gastly
new(17,01,1) { Species = 871, Ability = A4, Moves = new(084, 064, 055, 031), Index = 15 }, // Pincurchin
new(17,01,1) { Species = 066, Ability = A4, Moves = new(067, 043, 116, 279), Index = 15 }, // Machop
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 242, 118, 111), Index = 15 }, // Snorlax
new(30,03,2) { Species = 093, Ability = A4, Moves = new(325, 095, 122, 101), Index = 15 }, // Haunter
new(30,03,2) { Species = 871, Ability = A4, Moves = new(209, 061, 086, 506), Index = 15 }, // Pincurchin
new(30,03,2) { Species = 067, Ability = A4, Moves = new(067, 490, 282, 233), Index = 15 }, // Machoke
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 15, CanGigantamax = true }, // Snorlax
new(40,05,3) { Species = 094, Ability = A4, Moves = new(506, 188, 085, 261), Index = 15, CanGigantamax = true }, // Gengar
new(40,05,3) { Species = 871, Ability = A2, Moves = new(085, 503, 398, 716), Index = 15 }, // Pincurchin
new(40,05,3) { Species = 068, Ability = A4, Moves = new(279, 667, 008, 157), Index = 15, CanGigantamax = true }, // Machamp
new(50,08,4) { Species = 617, Ability = A2, Moves = new(405, 522, 188, 202), Index = 15 }, // Accelgor
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 15, CanGigantamax = true }, // Snorlax
new(50,08,4) { Species = 589, Ability = A2, Moves = new(442, 224, 529, 398), Index = 15 }, // Escavalier
new(50,08,4) { Species = 094, Ability = A4, Moves = new(247, 482, 411, 605), Index = 15, CanGigantamax = true }, // Gengar
new(50,08,4) { Species = 871, Ability = A2, Moves = new(435, 330, 474, 367), Index = 15 }, // Pincurchin
new(50,08,4) { Species = 068, Ability = A4, Moves = new(280, 444, 371, 523), Index = 15, CanGigantamax = true }, // Machamp
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 15, CanGigantamax = true }, // Snorlax
new(17,01,1,SW) { Species = 222, Ability = A4, Moves = new(033, 106, 310, 050), Index = 15, Form = 1 }, // Corsola-1
new(30,03,2,SW) { Species = 077, Ability = A4, Moves = new(093, 584, 060, 023), Index = 15, Form = 1 }, // Ponyta-1
new(30,03,2,SW) { Species = 222, Ability = A4, Moves = new(310, 050, 246, 506), Index = 15, Form = 1 }, // Corsola-1
new(40,05,3,SW) { Species = 077, Ability = A2, Moves = new(340, 023, 428, 583), Index = 15, Form = 1 }, // Ponyta-1
new(40,05,3,SW) { Species = 222, Ability = A2, Moves = new(506, 408, 503, 261), Index = 15, Form = 1 }, // Corsola-1
new(60,10,5,SW) { Species = 765, Ability = A2, Moves = new(492, 094, 085, 247), Index = 15 }, // Oranguru
new(60,10,5,SW) { Species = 876, Ability = A2, Moves = new(094, 595, 605, 304), Index = 15, Form = 1 }, // Indeedee-1
new(60,10,5,SW) { Species = 630, Ability = A2, Moves = new(403, 555, 492, 211), Index = 15 }, // Mandibuzz
new(60,10,5,SW) { Species = 078, Ability = A2, Moves = new(428, 583, 224, 340), Index = 15, Form = 1 }, // Rapidash-1
new(60,10,5,SW) { Species = 068, Ability = A4, Moves = new(238, 007, 008, 089), Index = 15, CanGigantamax = true }, // Machamp
new(17,01,1,SH) { Species = 554, Ability = A4, Moves = new(033, 181, 044, 419), Index = 15, Form = 1 }, // Darumaka-1
new(30,03,2,SH) { Species = 083, Ability = A4, Moves = new(064, 028, 249, 693), Index = 15, Form = 1 }, // Farfetchd-1
new(30,03,2,SH) { Species = 554, Ability = A4, Moves = new(423, 029, 424, 280), Index = 15, Form = 1 }, // Darumaka-1
new(40,05,3,SH) { Species = 083, Ability = A2, Moves = new(280, 693, 348, 413), Index = 15, Form = 1 }, // Farfetchd-1
new(40,05,3,SH) { Species = 554, Ability = A2, Moves = new(008, 007, 428, 276), Index = 15, Form = 1 }, // Darumaka-1
new(60,10,5,SH) { Species = 766, Ability = A2, Moves = new(370, 157, 523, 231), Index = 15 }, // Passimian
new(60,10,5,SH) { Species = 876, Ability = A2, Moves = new(094, 595, 605, 247), Index = 15 }, // Indeedee
new(60,10,5,SH) { Species = 628, Ability = A2, Moves = new(413, 276, 442, 157), Index = 15 }, // Braviary
new(60,10,5,SH) { Species = 865, Ability = A2, Moves = new(370, 413, 211, 675), Index = 15 }, // Sirfetchd
new(60,10,5,SH) { Species = 094, Ability = A4, Moves = new(247, 482, 094, 196), Index = 15, CanGigantamax = true }, // Gengar
new(17,01,1) { Species = 446, Ability = A4, Moves = new(033, 044, 122, 111), Index = 14 }, // Munchlax
new(17,01,1) { Species = 092, Ability = A4, Moves = new(122, 109, 095, 371), Index = 14 }, // Gastly
new(17,01,1) { Species = 066, Ability = A4, Moves = new(067, 043, 116, 279), Index = 14 }, // Machop
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 242, 118, 111), Index = 14 }, // Snorlax
new(30,03,2) { Species = 093, Ability = A4, Moves = new(325, 095, 122, 101), Index = 14 }, // Haunter
new(30,03,2) { Species = 067, Ability = A4, Moves = new(067, 490, 282, 233), Index = 14 }, // Machoke
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 14 }, // Snorlax
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 14, CanGigantamax = true }, // Snorlax
new(40,05,3) { Species = 094, Ability = A4, Moves = new(506, 188, 085, 261), Index = 14 }, // Gengar
new(40,05,3) { Species = 094, Ability = A4, Moves = new(506, 188, 085, 261), Index = 14, CanGigantamax = true }, // Gengar
new(40,05,3) { Species = 068, Ability = A4, Moves = new(279, 667, 008, 157), Index = 14 }, // Machamp
new(40,05,3) { Species = 068, Ability = A4, Moves = new(279, 667, 008, 157), Index = 14, CanGigantamax = true }, // Machamp
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 14 }, // Snorlax
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 14, CanGigantamax = true }, // Snorlax
new(50,08,4) { Species = 094, Ability = A4, Moves = new(247, 482, 411, 605), Index = 14 }, // Gengar
new(50,08,4) { Species = 094, Ability = A4, Moves = new(247, 482, 411, 605), Index = 14, CanGigantamax = true }, // Gengar
new(50,08,4) { Species = 068, Ability = A4, Moves = new(280, 444, 371, 523), Index = 14 }, // Machamp
new(50,08,4) { Species = 068, Ability = A4, Moves = new(280, 444, 371, 523), Index = 14, CanGigantamax = true }, // Machamp
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 14 }, // Snorlax
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 14, CanGigantamax = true }, // Snorlax
new(60,10,5,SW) { Species = 068, Ability = A4, Moves = new(238, 007, 008, 089), Index = 14 }, // Machamp
new(60,10,5,SW) { Species = 068, Ability = A4, Moves = new(238, 007, 008, 089), Index = 14, CanGigantamax = true }, // Machamp
new(60,10,5,SH) { Species = 094, Ability = A4, Moves = new(247, 482, 094, 196), Index = 14 }, // Gengar
new(60,10,5,SH) { Species = 094, Ability = A4, Moves = new(247, 482, 094, 196), Index = 14, CanGigantamax = true }, // Gengar
new(17,01,1) { Species = 001, Ability = A4, Moves = new(033, 045, 022, 074), Index = 12 }, // Bulbasaur
new(17,01,1) { Species = 004, Ability = A4, Moves = new(010, 045, 052, 108), Index = 12 }, // Charmander
new(17,01,1) { Species = 007, Ability = A4, Moves = new(033, 039, 055, 110), Index = 12 }, // Squirtle
new(17,01,1) { Species = 848, Ability = A4, Moves = new(609, 051, 496, 715), Index = 12 }, // Toxel
new(30,03,2) { Species = 001, Ability = A4, Moves = new(033, 022, 073, 075), Index = 12 }, // Bulbasaur
new(30,03,2) { Species = 004, Ability = A4, Moves = new(010, 052, 225, 424), Index = 12 }, // Charmander
new(30,03,2) { Species = 007, Ability = A4, Moves = new(033, 055, 044, 352), Index = 12 }, // Squirtle
new(40,05,3) { Species = 001, Ability = A4, Moves = new(073, 075, 077, 402), Index = 12 }, // Bulbasaur
new(40,05,3) { Species = 004, Ability = A4, Moves = new(424, 225, 163, 108), Index = 12 }, // Charmander
new(40,05,3) { Species = 007, Ability = A4, Moves = new(055, 229, 044, 352), Index = 12 }, // Squirtle
new(50,08,4) { Species = 002, Ability = A4, Moves = new(188, 412, 075, 034), Index = 12 }, // Ivysaur
new(50,08,4) { Species = 005, Ability = A4, Moves = new(257, 242, 009, 053), Index = 12 }, // Charmeleon
new(50,08,4) { Species = 008, Ability = A4, Moves = new(330, 396, 503, 428), Index = 12 }, // Wartortle
//new(100,10,6) { Species = 150, Ability = A0, Moves = new(540, 053, 396, 059), Index = 12, Shiny = Shiny.Never }, // Mewtwo
//new(100,10,6) { Species = 150, Ability = A0, Moves = new(428, 007, 089, 280), Index = 12, Shiny = Shiny.Never }, // Mewtwo
//new(100,10,6) { Species = 150, Ability = A0, Moves = new(540, 126, 411, 059), Index = 12, Shiny = Shiny.Never }, // Mewtwo
new(17,01,1,SW) { Species = 098, Ability = A4, Moves = new(055, 043, 106, 232), Index = 12 }, // Krabby
new(17,01,1,SW) { Species = 859, Ability = A4, Moves = new(044, 260, 590, 372), Index = 12 }, // Impidimp
new(30,03,2,SW) { Species = 099, Ability = A4, Moves = new(232, 341, 061, 023), Index = 12, CanGigantamax = true }, // Kingler
new(30,03,2,SW) { Species = 859, Ability = A4, Moves = new(389, 577, 260, 279), Index = 12 }, // Impidimp
new(30,03,2,SW) { Species = 849, Ability = A4, Moves = new(084, 209, 268, 175), Index = 12 }, // Toxtricity
new(40,05,3,SW) { Species = 099, Ability = A4, Moves = new(534, 232, 023, 106), Index = 12, CanGigantamax = true }, // Kingler
new(40,05,3,SW) { Species = 860, Ability = A4, Moves = new(492, 577, 421, 141), Index = 12 }, // Morgrem
new(40,05,3,SW) { Species = 849, Ability = A4, Moves = new(085, 474, 496, 103), Index = 12, CanGigantamax = true }, // Toxtricity
new(50,08,4,SW) { Species = 099, Ability = A4, Moves = new(359, 667, 157, 534), Index = 12, CanGigantamax = true }, // Kingler
new(50,08,4,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 280, 409), Index = 12, CanGigantamax = true }, // Grimmsnarl
new(50,08,4,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 409), Index = 12, CanGigantamax = true }, // Toxtricity
new(60,10,5,SW) { Species = 099, Ability = A4, Moves = new(152, 667, 157, 404), Index = 12, CanGigantamax = true }, // Kingler
new(60,10,5,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 409, 007), Index = 12, CanGigantamax = true }, // Grimmsnarl
new(60,10,5,SW) { Species = 849, Ability = A4, Moves = new(786, 586, 188, 506), Index = 12, CanGigantamax = true }, // Toxtricity
new(17,01,1,SH) { Species = 825, Ability = A4, Moves = new(093, 522, 113, 115), Index = 12 }, // Dottler
new(17,01,1,SH) { Species = 856, Ability = A4, Moves = new(093, 589, 791, 574), Index = 12 }, // Hatenna
new(30,03,2,SH) { Species = 826, Ability = A4, Moves = new(405, 060, 496, 095), Index = 12, CanGigantamax = true }, // Orbeetle
new(30,03,2,SH) { Species = 856, Ability = A4, Moves = new(605, 060, 345, 347), Index = 12 }, // Hatenna
new(30,03,2,SH) { Species = 849, Ability = A4, Moves = new(599, 209, 268, 175), Index = 12, Form = 1 }, // Toxtricity-1
new(40,05,3,SH) { Species = 826, Ability = A4, Moves = new(405, 060, 202, 109), Index = 12, CanGigantamax = true }, // Orbeetle
new(40,05,3,SH) { Species = 857, Ability = A4, Moves = new(605, 345, 399, 500), Index = 12 }, // Hattrem
new(40,05,3,SH) { Species = 849, Ability = A4, Moves = new(085, 599, 496, 103), Index = 12, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(50,08,4,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 202, 247), Index = 12, CanGigantamax = true }, // Orbeetle
new(50,08,4,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 12, CanGigantamax = true }, // Hatterene
new(50,08,4,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 409), Index = 12, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(60,10,5,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 247, 347), Index = 12, CanGigantamax = true }, // Orbeetle
new(60,10,5,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 500), Index = 12, CanGigantamax = true }, // Hatterene
new(60,10,5,SH) { Species = 849, Ability = A4, Moves = new(786, 586, 188, 506), Index = 12, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(17,01,1) { Species = 848, Ability = A4, Moves = new(609, 051, 496, 715), Index = 11 }, // Toxel
new(17,01,1,SW) { Species = 098, Ability = A4, Moves = new(055, 043, 106, 232), Index = 11 }, // Krabby
new(17,01,1,SW) { Species = 859, Ability = A4, Moves = new(044, 260, 590, 372), Index = 11 }, // Impidimp
new(30,03,2,SW) { Species = 099, Ability = A4, Moves = new(232, 341, 061, 023), Index = 11 }, // Kingler
new(30,03,2,SW) { Species = 099, Ability = A4, Moves = new(232, 341, 061, 023), Index = 11, CanGigantamax = true }, // Kingler
new(30,03,2,SW) { Species = 859, Ability = A4, Moves = new(389, 577, 260, 279), Index = 11 }, // Impidimp
new(30,03,2,SW) { Species = 849, Ability = A4, Moves = new(474, 209, 268, 175), Index = 11 }, // Toxtricity
new(40,05,3,SW) { Species = 099, Ability = A4, Moves = new(534, 232, 023, 106), Index = 11 }, // Kingler
new(40,05,3,SW) { Species = 099, Ability = A4, Moves = new(534, 232, 023, 106), Index = 11, CanGigantamax = true }, // Kingler
new(40,05,3,SW) { Species = 860, Ability = A4, Moves = new(492, 577, 421, 141), Index = 11 }, // Morgrem
new(40,05,3,SW) { Species = 849, Ability = A4, Moves = new(085, 474, 496, 103), Index = 11 }, // Toxtricity
new(40,05,3,SW) { Species = 849, Ability = A4, Moves = new(085, 474, 496, 103), Index = 11, CanGigantamax = true }, // Toxtricity
new(50,08,4,SW) { Species = 099, Ability = A4, Moves = new(359, 667, 157, 534), Index = 11 }, // Kingler
new(50,08,4,SW) { Species = 099, Ability = A4, Moves = new(359, 667, 157, 534), Index = 11, CanGigantamax = true }, // Kingler
new(50,08,4,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 280, 409), Index = 11 }, // Grimmsnarl
new(50,08,4,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 280, 409), Index = 11, CanGigantamax = true }, // Grimmsnarl
new(50,08,4,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 409), Index = 11 }, // Toxtricity
new(50,08,4,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 409), Index = 11, CanGigantamax = true }, // Toxtricity
new(60,10,5,SW) { Species = 099, Ability = A4, Moves = new(152, 667, 157, 404), Index = 11 }, // Kingler
new(60,10,5,SW) { Species = 099, Ability = A4, Moves = new(152, 667, 157, 404), Index = 11, CanGigantamax = true }, // Kingler
new(60,10,5,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 409, 007), Index = 11 }, // Grimmsnarl
new(60,10,5,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 409, 007), Index = 11, CanGigantamax = true }, // Grimmsnarl
new(60,10,5,SW) { Species = 849, Ability = A4, Moves = new(786, 586, 188, 506), Index = 11 }, // Toxtricity
new(60,10,5,SW) { Species = 849, Ability = A4, Moves = new(786, 586, 188, 506), Index = 11, CanGigantamax = true }, // Toxtricity
new(17,01,1,SH) { Species = 825, Ability = A4, Moves = new(093, 522, 113, 115), Index = 11 }, // Dottler
new(17,01,1,SH) { Species = 856, Ability = A4, Moves = new(093, 589, 791, 574), Index = 11 }, // Hatenna
new(30,03,2,SH) { Species = 826, Ability = A4, Moves = new(405, 060, 496, 095), Index = 11 }, // Orbeetle
new(30,03,2,SH) { Species = 826, Ability = A4, Moves = new(405, 060, 496, 095), Index = 11, CanGigantamax = true }, // Orbeetle
new(30,03,2,SH) { Species = 856, Ability = A4, Moves = new(605, 060, 345, 347), Index = 11 }, // Hatenna
new(30,03,2,SH) { Species = 849, Ability = A4, Moves = new(599, 209, 268, 175), Index = 11, Form = 1 }, // Toxtricity-1
new(40,05,3,SH) { Species = 826, Ability = A4, Moves = new(405, 060, 202, 109), Index = 11 }, // Orbeetle
new(40,05,3,SH) { Species = 826, Ability = A4, Moves = new(405, 060, 202, 109), Index = 11, CanGigantamax = true }, // Orbeetle
new(40,05,3,SH) { Species = 857, Ability = A4, Moves = new(605, 345, 399, 500), Index = 11 }, // Hattrem
new(40,05,3,SH) { Species = 849, Ability = A4, Moves = new(085, 599, 496, 103), Index = 11, Form = 1 }, // Toxtricity-1
new(40,05,3,SH) { Species = 849, Ability = A4, Moves = new(085, 599, 496, 103), Index = 11, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(50,08,4,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 202, 247), Index = 11 }, // Orbeetle
new(50,08,4,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 202, 247), Index = 11, CanGigantamax = true }, // Orbeetle
new(50,08,4,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 11 }, // Hatterene
new(50,08,4,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 11, CanGigantamax = true }, // Hatterene
new(50,08,4,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 409), Index = 11, Form = 1 }, // Toxtricity-1
new(50,08,4,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 409), Index = 11, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(60,10,5,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 247, 347), Index = 11 }, // Orbeetle
new(60,10,5,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 247, 347), Index = 11, CanGigantamax = true }, // Orbeetle
new(60,10,5,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 500), Index = 11 }, // Hatterene
new(60,10,5,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 500), Index = 11, CanGigantamax = true }, // Hatterene
new(60,10,5,SH) { Species = 849, Ability = A4, Moves = new(786, 586, 188, 506), Index = 11, Form = 1 }, // Toxtricity-1
new(60,10,5,SH) { Species = 849, Ability = A4, Moves = new(786, 586, 188, 506), Index = 11, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(17,01,1) { Species = 868, Ability = A4, Moves = new(033, 186, 577, 496), Index = 10, CanGigantamax = true }, // Milcery
new(30,03,2) { Species = 868, Ability = A4, Moves = new(577, 186, 263, 500), Index = 10, CanGigantamax = true }, // Milcery
new(40,05,3) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 213), Index = 10, CanGigantamax = true }, // Milcery
new(50,08,4) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 10, CanGigantamax = true }, // Milcery
new(60,10,5) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 10, CanGigantamax = true }, // Milcery
new(40,05,3,SW) { Species = 099, Ability = A4, Moves = new(534, 232, 023, 106), Index = 10, CanGigantamax = true }, // Kingler
new(40,05,3,SW) { Species = 860, Ability = A4, Moves = new(492, 577, 421, 141), Index = 10 }, // Morgrem
new(40,05,3,SW) { Species = 849, Ability = A4, Moves = new(085, 474, 496, 103), Index = 10, CanGigantamax = true }, // Toxtricity
new(50,08,4,SW) { Species = 099, Ability = A4, Moves = new(359, 667, 157, 534), Index = 10, CanGigantamax = true }, // Kingler
new(50,08,4,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 280, 409), Index = 10, CanGigantamax = true }, // Grimmsnarl
new(50,08,4,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 409), Index = 10, CanGigantamax = true }, // Toxtricity
new(60,10,5,SW) { Species = 099, Ability = A4, Moves = new(152, 667, 157, 404), Index = 10, CanGigantamax = true }, // Kingler
new(60,10,5,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 409, 007), Index = 10, CanGigantamax = true }, // Grimmsnarl
new(60,10,5,SW) { Species = 849, Ability = A4, Moves = new(786, 586, 482, 506), Index = 10, CanGigantamax = true }, // Toxtricity
new(40,05,3,SH) { Species = 826, Ability = A4, Moves = new(522, 060, 109, 202), Index = 10, CanGigantamax = true }, // Orbeetle
new(40,05,3,SH) { Species = 857, Ability = A4, Moves = new(605, 345, 399, 500), Index = 10 }, // Hattrem
new(40,05,3,SH) { Species = 849, Ability = A4, Moves = new(085, 599, 496, 103), Index = 10, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(50,08,4,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 202, 247), Index = 10, CanGigantamax = true }, // Orbeetle
new(50,08,4,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 10, CanGigantamax = true }, // Hatterene
new(50,08,4,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 409), Index = 10, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(60,10,5,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 247, 347), Index = 10, CanGigantamax = true }, // Orbeetle
new(60,10,5,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 500), Index = 10, CanGigantamax = true }, // Hatterene
new(60,10,5,SH) { Species = 849, Ability = A4, Moves = new(786, 586, 482, 506), Index = 10, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(17,01,1) { Species = 868, Ability = A4, Moves = new(033, 186, 577, 496), Index = 9, CanGigantamax = true }, // Milcery
new(30,03,2) { Species = 868, Ability = A4, Moves = new(577, 186, 263, 500), Index = 9, CanGigantamax = true }, // Milcery
new(40,05,3) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 213), Index = 9, CanGigantamax = true }, // Milcery
new(50,08,4) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 9, CanGigantamax = true }, // Milcery
new(60,10,5) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 9, CanGigantamax = true }, // Milcery
new(40,05,3,SW) { Species = 841, Ability = A4, Moves = new(788, 406, 512, 491), Index = 9, CanGigantamax = true }, // Flapple
new(40,05,3,SW) { Species = 839, Ability = A4, Moves = new(246, 510, 479, 488), Index = 9, CanGigantamax = true }, // Coalossal
new(50,08,4,SW) { Species = 841, Ability = A4, Moves = new(788, 407, 491, 334), Index = 9, CanGigantamax = true }, // Flapple
new(50,08,4,SW) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 261), Index = 9, CanGigantamax = true }, // Coalossal
new(60,10,5,SW) { Species = 841, Ability = A4, Moves = new(407, 788, 512, 349), Index = 9, CanGigantamax = true }, // Flapple
new(60,10,5,SW) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 523), Index = 9, CanGigantamax = true }, // Coalossal
new(40,05,3,SH) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 523), Index = 9, CanGigantamax = true }, // Appletun
new(40,05,3,SH) { Species = 131, Ability = A4, Moves = new(352, 420, 109, 034), Index = 9, CanGigantamax = true }, // Lapras
new(50,08,4,SH) { Species = 842, Ability = A4, Moves = new(787, 202, 406, 089), Index = 9, CanGigantamax = true }, // Appletun
new(50,08,4,SH) { Species = 131, Ability = A4, Moves = new(057, 058, 246, 523), Index = 9, CanGigantamax = true }, // Lapras
new(60,10,5,SH) { Species = 842, Ability = A4, Moves = new(787, 406, 412, 089), Index = 9, CanGigantamax = true }, // Appletun
new(60,10,5,SH) { Species = 131, Ability = A4, Moves = new(057, 196, 573, 329), Index = 9, CanGigantamax = true }, // Lapras
new(17,01,1) { Species = 840, Ability = A4, Moves = new(110, 310, 389, 213), Index = 8 }, // Applin
new(17,01,1) { Species = 840, Ability = A2, Moves = new(110, 310, 389, 213), Index = 8 }, // Applin
new(17,01,1) { Species = 868, Ability = A4, Moves = new(577, 033, 186, 263), Index = 8 }, // Milcery
new(17,01,1) { Species = 868, Ability = A2, Moves = new(577, 033, 186, 263), Index = 8 }, // Milcery
new(30,03,2) { Species = 869, Ability = A4, Moves = new(577, 213, 033, 186), Index = 8, CanGigantamax = true }, // Alcremie
new(17,01,1,SW) { Species = 837, Ability = A4, Moves = new(479, 033, 108, 189), Index = 8 }, // Rolycoly
new(17,01,1,SW) { Species = 837, Ability = A2, Moves = new(479, 033, 108, 189), Index = 8 }, // Rolycoly
new(30,03,2,SW) { Species = 841, Ability = A4, Moves = new(406, 491, 017, 225), Index = 8 }, // Flapple
new(30,03,2,SW) { Species = 841, Ability = A2, Moves = new(406, 491, 017, 225), Index = 8 }, // Flapple
new(30,03,2,SW) { Species = 838, Ability = A4, Moves = new(246, 510, 479, 189), Index = 8 }, // Carkol
new(30,03,2,SW) { Species = 838, Ability = A2, Moves = new(246, 510, 479, 189), Index = 8 }, // Carkol
new(40,05,3,SW) { Species = 841, Ability = A4, Moves = new(788, 406, 512, 491), Index = 8 }, // Flapple
new(40,05,3,SW) { Species = 841, Ability = A4, Moves = new(788, 406, 512, 491), Index = 8, CanGigantamax = true }, // Flapple
new(40,05,3,SW) { Species = 869, Ability = A4, Moves = new(577, 605, 202, 186), Index = 8, Form = 3, CanGigantamax = true }, // Alcremie-3
new(40,05,3,SW) { Species = 869, Ability = A4, Moves = new(577, 605, 202, 186), Index = 8, Form = 4, CanGigantamax = true }, // Alcremie-4
new(40,05,3,SW) { Species = 839, Ability = A4, Moves = new(246, 510, 479, 488), Index = 8 }, // Coalossal
new(40,05,3,SW) { Species = 839, Ability = A4, Moves = new(246, 510, 479, 488), Index = 8, CanGigantamax = true }, // Coalossal
new(50,08,4,SW) { Species = 841, Ability = A4, Moves = new(407, 788, 491, 334), Index = 8 }, // Flapple
new(50,08,4,SW) { Species = 841, Ability = A4, Moves = new(407, 788, 491, 334), Index = 8, CanGigantamax = true }, // Flapple
new(50,08,4,SW) { Species = 869, Ability = A4, Moves = new(605, 202, 094, 151), Index = 8, Form = 1, CanGigantamax = true }, // Alcremie-1
new(50,08,4,SW) { Species = 869, Ability = A4, Moves = new(605, 202, 094, 151), Index = 8, Form = 2, CanGigantamax = true }, // Alcremie-2
new(50,08,4,SW) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 261), Index = 8 }, // Coalossal
new(50,08,4,SW) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 261), Index = 8, CanGigantamax = true }, // Coalossal
new(60,10,5,SW) { Species = 841, Ability = A4, Moves = new(407, 788, 512, 349), Index = 8 }, // Flapple
new(60,10,5,SW) { Species = 841, Ability = A4, Moves = new(407, 788, 512, 349), Index = 8, CanGigantamax = true }, // Flapple
new(60,10,5,SW) { Species = 869, Ability = A4, Moves = new(605, 202, 595, 500), Index = 8, Form = 5, CanGigantamax = true }, // Alcremie-5
new(60,10,5,SW) { Species = 869, Ability = A4, Moves = new(605, 202, 595, 500), Index = 8, Form = 6, CanGigantamax = true }, // Alcremie-6
new(60,10,5,SW) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 523), Index = 8 }, // Coalossal
new(60,10,5,SW) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 523), Index = 8, CanGigantamax = true }, // Coalossal
new(17,01,1,SH) { Species = 131, Ability = A4, Moves = new(055, 496, 045, 047), Index = 8 }, // Lapras
new(17,01,1,SH) { Species = 131, Ability = A2, Moves = new(055, 496, 045, 047), Index = 8 }, // Lapras
new(30,03,2,SH) { Species = 842, Ability = A4, Moves = new(787, 029, 389, 073), Index = 8 }, // Appletun
new(30,03,2,SH) { Species = 842, Ability = A2, Moves = new(787, 029, 389, 073), Index = 8 }, // Appletun
new(30,03,2,SH) { Species = 131, Ability = A4, Moves = new(352, 420, 109, 047), Index = 8 }, // Lapras
new(30,03,2,SH) { Species = 131, Ability = A2, Moves = new(352, 420, 109, 047), Index = 8 }, // Lapras
new(40,05,3,SH) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 523), Index = 8 }, // Appletun
new(40,05,3,SH) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 523), Index = 8, CanGigantamax = true }, // Appletun
new(40,05,3,SH) { Species = 869, Ability = A4, Moves = new(577, 605, 202, 186), Index = 8, Form = 1, CanGigantamax = true }, // Alcremie-1
new(40,05,3,SH) { Species = 869, Ability = A4, Moves = new(577, 605, 202, 186), Index = 8, Form = 2, CanGigantamax = true }, // Alcremie-2
new(40,05,3,SH) { Species = 131, Ability = A4, Moves = new(352, 420, 109, 034), Index = 8 }, // Lapras
new(40,05,3,SH) { Species = 131, Ability = A4, Moves = new(352, 420, 109, 034), Index = 8, CanGigantamax = true }, // Lapras
new(50,08,4,SH) { Species = 842, Ability = A4, Moves = new(787, 202, 406, 089), Index = 8 }, // Appletun
new(50,08,4,SH) { Species = 842, Ability = A4, Moves = new(787, 202, 406, 089), Index = 8, CanGigantamax = true }, // Appletun
new(50,08,4,SH) { Species = 869, Ability = A4, Moves = new(605, 202, 094, 151), Index = 8, Form = 7, CanGigantamax = true }, // Alcremie-7
new(50,08,4,SH) { Species = 869, Ability = A4, Moves = new(605, 202, 094, 151), Index = 8, Form = 8, CanGigantamax = true }, // Alcremie-8
new(50,08,4,SH) { Species = 131, Ability = A4, Moves = new(057, 058, 246, 523), Index = 8 }, // Lapras
new(50,08,4,SH) { Species = 131, Ability = A4, Moves = new(057, 058, 246, 523), Index = 8, CanGigantamax = true }, // Lapras
new(60,10,5,SH) { Species = 842, Ability = A4, Moves = new(787, 406, 412, 089), Index = 8 }, // Appletun
new(60,10,5,SH) { Species = 842, Ability = A4, Moves = new(787, 406, 412, 089), Index = 8, CanGigantamax = true }, // Appletun
new(60,10,5,SH) { Species = 869, Ability = A4, Moves = new(605, 202, 595, 500), Index = 8, Form = 3, CanGigantamax = true }, // Alcremie-3
new(60,10,5,SH) { Species = 869, Ability = A4, Moves = new(605, 202, 595, 500), Index = 8, Form = 4, CanGigantamax = true }, // Alcremie-4
new(60,10,5,SH) { Species = 131, Ability = A4, Moves = new(057, 196, 573, 329), Index = 8 }, // Lapras
new(60,10,5,SH) { Species = 131, Ability = A4, Moves = new(057, 196, 573, 329), Index = 8, CanGigantamax = true }, // Lapras
new(17,01,1) { Species = 129, Ability = A4, Moves = new(150, 033, 000, 000), Index = 6, Shiny = Shiny.Always }, // Magikarp
new(17,01,1) { Species = 446, Ability = A4, Moves = new(033, 044, 122, 111), Index = 6 }, // Munchlax
new(17,01,1) { Species = 129, Ability = A4, Moves = new(150, 033, 000, 000), Index = 6 }, // Magikarp
new(30,03,2) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 6, Shiny = Shiny.Always }, // Magikarp
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 242, 118, 111), Index = 6 }, // Snorlax
new(30,03,2) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 6 }, // Magikarp
new(40,05,3) { Species = 012, Ability = A4, Moves = new(676, 403, 202, 527), Index = 6, CanGigantamax = true }, // Butterfree
new(40,05,3) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 6, Shiny = Shiny.Always }, // Magikarp
new(40,05,3) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 6 }, // Magikarp
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 6, CanGigantamax = true }, // Snorlax
new(50,08,4) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 6, CanGigantamax = true }, // Butterfree
new(50,08,4) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 6, Shiny = Shiny.Always }, // Magikarp
new(50,08,4) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 6 }, // Magikarp
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 6, CanGigantamax = true }, // Snorlax
new(60,10,5) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 340), Index = 6, Shiny = Shiny.Always }, // Magikarp
new(70,10,5) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 340), Index = 6 }, // Magikarp
new(70,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 6, CanGigantamax = true }, // Snorlax
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 6, CanGigantamax = true }, // Butterfree
new(17,01,1,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 189, 103), Index = 6 }, // Silicobra
new(17,01,1,SW) { Species = 833, Ability = A4, Moves = new(055, 044, 033, 213), Index = 6 }, // Chewtle
new(30,03,2,SW) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 079), Index = 6, CanGigantamax = true }, // Butterfree
new(30,03,2,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 029, 137), Index = 6 }, // Silicobra
new(30,03,2,SW) { Species = 834, Ability = A4, Moves = new(317, 242, 055, 334), Index = 6 }, // Drednaw
new(40,05,3,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 407, 424), Index = 6, CanGigantamax = true }, // Sandaconda
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 6, CanGigantamax = true }, // Drednaw
new(50,08,4,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 6, CanGigantamax = true }, // Sandaconda
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 6, CanGigantamax = true }, // Drednaw
new(60,10,5,SW) { Species = 012, Ability = A4, Moves = new(405, 094, 542, 202), Index = 6, CanGigantamax = true }, // Butterfree
new(70,10,5,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 6, CanGigantamax = true }, // Sandaconda
new(70,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 6, CanGigantamax = true }, // Drednaw
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 6, CanGigantamax = true }, // Butterfree
new(17,01,1,SH) { Species = 821, Ability = A4, Moves = new(403, 031, 116, 064), Index = 6 }, // Rookidee
new(17,01,1,SH) { Species = 850, Ability = A4, Moves = new(044, 172, 141, 693), Index = 6 }, // Sizzlipede
new(30,03,2,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 077), Index = 6, CanGigantamax = true }, // Butterfree
new(30,03,2,SH) { Species = 822, Ability = A4, Moves = new(403, 263, 179, 468), Index = 6 }, // Corvisquire
new(30,03,2,SH) { Species = 851, Ability = A4, Moves = new(172, 242, 404, 257), Index = 6 }, // Centiskorch
new(40,05,3,SH) { Species = 823, Ability = A4, Moves = new(065, 211, 034, 103), Index = 6, CanGigantamax = true }, // Corviknight
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 6, CanGigantamax = true }, // Centiskorch
new(50,08,4,SH) { Species = 823, Ability = A4, Moves = new(065, 442, 034, 334), Index = 6, CanGigantamax = true }, // Corviknight
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 6, CanGigantamax = true }, // Centiskorch
new(60,10,5,SH) { Species = 012, Ability = A4, Moves = new(405, 094, 403, 079), Index = 6, CanGigantamax = true }, // Butterfree
new(70,10,5,SH) { Species = 823, Ability = A4, Moves = new(413, 442, 249, 103), Index = 6, CanGigantamax = true }, // Corviknight
new(70,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 6, CanGigantamax = true }, // Centiskorch
new(17,01,1) { Species = 446, Ability = A4, Moves = new(033, 044, 122, 111), Index = 5 }, // Munchlax
new(17,01,1) { Species = 446, Ability = A2, Moves = new(033, 044, 122, 111), Index = 5 }, // Munchlax
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 242, 118, 111), Index = 5 }, // Snorlax
new(30,03,2) { Species = 143, Ability = A2, Moves = new(034, 242, 118, 111), Index = 5 }, // Snorlax
new(40,05,3) { Species = 012, Ability = A4, Moves = new(676, 403, 202, 527), Index = 5, CanGigantamax = true }, // Butterfree
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 5 }, // Snorlax
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 5, CanGigantamax = true }, // Snorlax
new(50,08,4) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 5, CanGigantamax = true }, // Butterfree
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 5 }, // Snorlax
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 5, CanGigantamax = true }, // Snorlax
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 5 }, // Snorlax
new(70,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 5, CanGigantamax = true }, // Snorlax
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 5 }, // Butterfree
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 5, CanGigantamax = true }, // Butterfree
new(17,01,1,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 189, 103), Index = 5 }, // Silicobra
new(17,01,1,SW) { Species = 833, Ability = A4, Moves = new(055, 044, 033, 213), Index = 5 }, // Chewtle
new(30,03,2,SW) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 079), Index = 5, CanGigantamax = true }, // Butterfree
new(30,03,2,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 029, 137), Index = 5 }, // Silicobra
new(30,03,2,SW) { Species = 834, Ability = A4, Moves = new(317, 242, 055, 334), Index = 5 }, // Drednaw
new(30,03,2,SW) { Species = 834, Ability = A2, Moves = new(317, 242, 055, 334), Index = 5 }, // Drednaw
new(40,05,3,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 407, 424), Index = 5, CanGigantamax = true }, // Sandaconda
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 5 }, // Drednaw
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 5, CanGigantamax = true }, // Drednaw
new(50,08,4,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 5, CanGigantamax = true }, // Sandaconda
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 5 }, // Drednaw
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 5, CanGigantamax = true }, // Drednaw
new(60,10,5,SW) { Species = 012, Ability = A4, Moves = new(405, 094, 542, 202), Index = 5, CanGigantamax = true }, // Butterfree
new(70,10,5,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 5, CanGigantamax = true }, // Sandaconda
new(60,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 5 }, // Drednaw
new(70,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 5, CanGigantamax = true }, // Drednaw
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 5 }, // Butterfree
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 5, CanGigantamax = true }, // Butterfree
new(17,01,1,SH) { Species = 821, Ability = A4, Moves = new(403, 031, 116, 064), Index = 5 }, // Rookidee
new(17,01,1,SH) { Species = 850, Ability = A4, Moves = new(044, 172, 141, 693), Index = 5 }, // Sizzlipede
new(30,03,2,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 077), Index = 5, CanGigantamax = true }, // Butterfree
new(30,03,2,SH) { Species = 822, Ability = A4, Moves = new(403, 263, 179, 468), Index = 5 }, // Corvisquire
new(30,03,2,SH) { Species = 851, Ability = A4, Moves = new(172, 242, 404, 257), Index = 5 }, // Centiskorch
new(30,03,2,SH) { Species = 851, Ability = A2, Moves = new(172, 242, 404, 257), Index = 5 }, // Centiskorch
new(40,05,3,SH) { Species = 823, Ability = A4, Moves = new(065, 211, 034, 103), Index = 5, CanGigantamax = true }, // Corviknight
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 5 }, // Centiskorch
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 5, CanGigantamax = true }, // Centiskorch
new(50,08,4,SH) { Species = 823, Ability = A4, Moves = new(065, 442, 034, 334), Index = 5, CanGigantamax = true }, // Corviknight
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 5 }, // Centiskorch
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 5, CanGigantamax = true }, // Centiskorch
new(60,10,5,SH) { Species = 012, Ability = A4, Moves = new(405, 094, 403, 079), Index = 5, CanGigantamax = true }, // Butterfree
new(70,10,5,SH) { Species = 823, Ability = A4, Moves = new(413, 442, 249, 103), Index = 5, CanGigantamax = true }, // Corviknight
new(60,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 5 }, // Centiskorch
new(70,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 5, CanGigantamax = true }, // Centiskorch
new(17,01,1) { Species = 446, Ability = A4, Moves = new(033, 044, 122, 111), Index = 3 }, // Munchlax
new(17,01,1) { Species = 225, Ability = A4, Moves = new(217, 229, 098, 420), Index = 3 }, // Delibird
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 242, 118, 111), Index = 3 }, // Snorlax
new(30,03,2) { Species = 225, Ability = A4, Moves = new(217, 065, 034, 693), Index = 3 }, // Delibird
new(40,05,3) { Species = 012, Ability = A4, Moves = new(676, 403, 202, 527), Index = 3, CanGigantamax = true }, // Butterfree
new(40,05,3) { Species = 225, Ability = A4, Moves = new(217, 065, 280, 196), Index = 3 }, // Delibird
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 3, CanGigantamax = true }, // Snorlax
new(50,08,4) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 3, CanGigantamax = true }, // Butterfree
new(50,08,4) { Species = 225, Ability = A4, Moves = new(217, 059, 034, 280), Index = 3 }, // Delibird
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 3, CanGigantamax = true }, // Snorlax
new(70,10,5) { Species = 225, Ability = A4, Moves = new(217, 059, 065, 280), Index = 3 }, // Delibird
new(70,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 3, CanGigantamax = true }, // Snorlax
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 3 }, // Butterfree
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 3, CanGigantamax = true }, // Butterfree
new(17,01,1,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 189, 103), Index = 3 }, // Silicobra
new(17,01,1,SW) { Species = 833, Ability = A4, Moves = new(055, 044, 033, 213), Index = 3 }, // Chewtle
new(30,03,2,SW) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 079), Index = 3, CanGigantamax = true }, // Butterfree
new(30,03,2,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 029, 137), Index = 3 }, // Silicobra
new(30,03,2,SW) { Species = 834, Ability = A4, Moves = new(317, 242, 055, 334), Index = 3 }, // Drednaw
new(40,05,3,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 407, 424), Index = 3, CanGigantamax = true }, // Sandaconda
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 3 }, // Drednaw
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 3, CanGigantamax = true }, // Drednaw
new(50,08,3,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 407, 424), Index = 3, CanGigantamax = true }, // Sandaconda
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 3 }, // Drednaw
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 3, CanGigantamax = true }, // Drednaw
new(60,10,5,SW) { Species = 012, Ability = A4, Moves = new(405, 094, 542, 202), Index = 3, CanGigantamax = true }, // Butterfree
new(70,10,5,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 3, CanGigantamax = true }, // Sandaconda
new(60,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 3 }, // Drednaw
new(70,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 3, CanGigantamax = true }, // Drednaw
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 3 }, // Butterfree
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 3, CanGigantamax = true }, // Butterfree
new(17,01,1,SH) { Species = 821, Ability = A4, Moves = new(403, 031, 116, 064), Index = 3 }, // Rookidee
new(17,01,1,SH) { Species = 850, Ability = A4, Moves = new(044, 172, 141, 693), Index = 3 }, // Sizzlipede
new(30,03,2,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 077), Index = 3, CanGigantamax = true }, // Butterfree
new(30,03,2,SH) { Species = 822, Ability = A4, Moves = new(403, 263, 179, 468), Index = 3 }, // Corvisquire
new(30,03,2,SH) { Species = 851, Ability = A4, Moves = new(172, 242, 404, 257), Index = 3 }, // Centiskorch
new(40,05,3,SH) { Species = 823, Ability = A4, Moves = new(065, 211, 034, 103), Index = 3, CanGigantamax = true }, // Corviknight
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 3 }, // Centiskorch
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 3, CanGigantamax = true }, // Centiskorch
new(50,08,4,SH) { Species = 823, Ability = A4, Moves = new(065, 442, 034, 334), Index = 3, CanGigantamax = true }, // Corviknight
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 3 }, // Centiskorch
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 3, CanGigantamax = true }, // Centiskorch
new(60,10,5,SH) { Species = 012, Ability = A4, Moves = new(405, 094, 403, 079), Index = 3, CanGigantamax = true }, // Butterfree
new(70,10,5,SH) { Species = 823, Ability = A4, Moves = new(413, 442, 249, 103), Index = 3, CanGigantamax = true }, // Corviknight
new(60,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 3 }, // Centiskorch
new(70,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 3, CanGigantamax = true }, // Centiskorch
new(17,01,1) { Species = 446, Ability = A4, Moves = new(033, 044, 122, 111), Index = 2 }, // Munchlax
new(17,01,1) { Species = 446, Ability = A2, Moves = new(033, 044, 122, 111), Index = 2 }, // Munchlax
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 242, 118, 111), Index = 2 }, // Snorlax
new(30,03,2) { Species = 143, Ability = A2, Moves = new(034, 242, 118, 111), Index = 2 }, // Snorlax
new(40,05,3) { Species = 012, Ability = A4, Moves = new(676, 403, 202, 527), Index = 2, CanGigantamax = true }, // Butterfree
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 2 }, // Snorlax
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 2, CanGigantamax = true }, // Snorlax
new(50,08,4) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 2, CanGigantamax = true }, // Butterfree
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 2 }, // Snorlax
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 2, CanGigantamax = true }, // Snorlax
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 2 }, // Snorlax
new(70,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 2, CanGigantamax = true }, // Snorlax
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 2 }, // Butterfree
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 2, CanGigantamax = true }, // Butterfree
new(17,01,1,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 189, 103), Index = 2 }, // Silicobra
new(17,01,1,SW) { Species = 833, Ability = A4, Moves = new(055, 044, 033, 213), Index = 2 }, // Chewtle
new(30,03,2,SW) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 079), Index = 2, CanGigantamax = true }, // Butterfree
new(30,03,2,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 029, 137), Index = 2 }, // Silicobra
new(30,03,2,SW) { Species = 834, Ability = A4, Moves = new(317, 242, 055, 334), Index = 2 }, // Drednaw
new(30,03,2,SW) { Species = 834, Ability = A2, Moves = new(317, 242, 055, 334), Index = 2 }, // Drednaw
new(40,05,3,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 407, 424), Index = 2, CanGigantamax = true }, // Sandaconda
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 2 }, // Drednaw
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 2, CanGigantamax = true }, // Drednaw
new(50,08,4,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 2, CanGigantamax = true }, // Sandaconda
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 2 }, // Drednaw
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 2, CanGigantamax = true }, // Drednaw
new(60,10,5,SW) { Species = 012, Ability = A4, Moves = new(405, 094, 542, 202), Index = 2, CanGigantamax = true }, // Butterfree
new(70,10,5,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 2, CanGigantamax = true }, // Sandaconda
new(60,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 2 }, // Drednaw
new(70,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 2, CanGigantamax = true }, // Drednaw
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 2 }, // Butterfree
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 2, CanGigantamax = true }, // Butterfree
new(17,01,1,SH) { Species = 821, Ability = A4, Moves = new(403, 031, 116, 064), Index = 2 }, // Rookidee
new(17,01,1,SH) { Species = 850, Ability = A4, Moves = new(044, 172, 404, 693), Index = 2 }, // Sizzlipede
new(30,03,2,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 077), Index = 2, CanGigantamax = true }, // Butterfree
new(30,03,2,SH) { Species = 822, Ability = A4, Moves = new(403, 263, 179, 468), Index = 2 }, // Corvisquire
new(30,03,2,SH) { Species = 851, Ability = A4, Moves = new(172, 242, 404, 257), Index = 2 }, // Centiskorch
new(30,03,2,SH) { Species = 851, Ability = A2, Moves = new(172, 242, 404, 257), Index = 2 }, // Centiskorch
new(40,05,3,SH) { Species = 823, Ability = A4, Moves = new(065, 211, 034, 103), Index = 2, CanGigantamax = true }, // Corviknight
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 2 }, // Centiskorch
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 2, CanGigantamax = true }, // Centiskorch
new(50,08,4,SH) { Species = 823, Ability = A4, Moves = new(065, 442, 034, 334), Index = 2, CanGigantamax = true }, // Corviknight
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 2 }, // Centiskorch
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 2, CanGigantamax = true }, // Centiskorch
new(60,10,5,SH) { Species = 012, Ability = A4, Moves = new(405, 094, 403, 079), Index = 2, CanGigantamax = true }, // Butterfree
new(70,10,5,SH) { Species = 823, Ability = A4, Moves = new(413, 442, 249, 103), Index = 2, CanGigantamax = true }, // Corviknight
new(60,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 2 }, // Centiskorch
new(70,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 2, CanGigantamax = true }, // Centiskorch
new(40,05,3) { Species = 012, Ability = A4, Moves = new(676, 403, 202, 527), Index = 1 }, // Butterfree
new(40,05,3) { Species = 012, Ability = A4, Moves = new(676, 403, 202, 527), Index = 1, CanGigantamax = true }, // Butterfree
new(50,08,4) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 1 }, // Butterfree
new(50,08,4) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 1, CanGigantamax = true }, // Butterfree
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 1 }, // Butterfree
new(17,01,1,SW) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 1, CanGigantamax = true }, // Butterfree
new(17,01,1,SW) { Species = 843, Ability = A2, Moves = new(693, 523, 189, 103), Index = 1 }, // Silicobra
new(17,01,1,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 189, 103), Index = 1 }, // Silicobra
new(17,01,1,SW) { Species = 833, Ability = A2, Moves = new(055, 044, 033, 213), Index = 1 }, // Chewtle
new(17,01,1,SW) { Species = 833, Ability = A4, Moves = new(055, 044, 033, 213), Index = 1 }, // Chewtle
new(30,03,2,SW) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 079), Index = 1 }, // Butterfree
new(30,03,2,SW) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 079), Index = 1, CanGigantamax = true }, // Butterfree
new(30,03,2,SW) { Species = 843, Ability = A2, Moves = new(693, 523, 029, 137), Index = 1 }, // Silicobra
new(30,03,2,SW) { Species = 843, Ability = A4, Moves = new(693, 523, 029, 137), Index = 1 }, // Silicobra
new(30,03,2,SW) { Species = 834, Ability = A2, Moves = new(317, 242, 055, 334), Index = 1 }, // Drednaw
new(30,03,2,SW) { Species = 834, Ability = A4, Moves = new(317, 242, 055, 334), Index = 1 }, // Drednaw
new(40,05,3,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 407, 424), Index = 1 }, // Sandaconda
new(40,05,3,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 407, 424), Index = 1, CanGigantamax = true }, // Sandaconda
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 1 }, // Drednaw
new(40,05,3,SW) { Species = 834, Ability = A4, Moves = new(157, 534, 034, 317), Index = 1, CanGigantamax = true }, // Drednaw
new(50,08,4,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 1 }, // Sandaconda
new(50,08,4,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 1, CanGigantamax = true }, // Sandaconda
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 1 }, // Drednaw
new(50,08,4,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 350, 523), Index = 1, CanGigantamax = true }, // Drednaw
new(60,10,5,SW) { Species = 012, Ability = A4, Moves = new(405, 094, 542, 202), Index = 1 }, // Butterfree
new(70,10,5,SW) { Species = 012, Ability = A4, Moves = new(405, 094, 542, 202), Index = 1, CanGigantamax = true }, // Butterfree
new(60,10,5,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 1 }, // Sandaconda
new(70,10,5,SW) { Species = 844, Ability = A4, Moves = new(693, 529, 342, 328), Index = 1, CanGigantamax = true }, // Sandaconda
new(60,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 1 }, // Drednaw
new(70,10,5,SW) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 1, CanGigantamax = true }, // Drednaw
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 1 }, // Butterfree
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 1, CanGigantamax = true }, // Butterfree
new(17,01,1,SH) { Species = 821, Ability = A2, Moves = new(365, 031, 526, 064), Index = 1 }, // Rookidee
new(17,01,1,SH) { Species = 821, Ability = A4, Moves = new(365, 031, 526, 064), Index = 1 }, // Rookidee
new(17,01,1,SH) { Species = 850, Ability = A2, Moves = new(044, 172, 450, 693), Index = 1 }, // Sizzlipede
new(17,01,1,SH) { Species = 850, Ability = A4, Moves = new(044, 172, 450, 693), Index = 1 }, // Sizzlipede
new(30,03,2,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 077), Index = 1 }, // Butterfree
new(30,03,2,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 081, 077), Index = 1, CanGigantamax = true }, // Butterfree
new(30,03,2,SH) { Species = 822, Ability = A2, Moves = new(365, 263, 179, 468), Index = 1 }, // Corvisquire
new(30,03,2,SH) { Species = 822, Ability = A4, Moves = new(365, 263, 179, 468), Index = 1 }, // Corvisquire
new(30,03,2,SH) { Species = 851, Ability = A2, Moves = new(172, 242, 450, 257), Index = 1 }, // Centiskorch
new(30,03,2,SH) { Species = 851, Ability = A4, Moves = new(172, 242, 450, 257), Index = 1 }, // Centiskorch
new(40,05,3,SH) { Species = 823, Ability = A4, Moves = new(065, 211, 034, 103), Index = 1 }, // Corviknight
new(40,05,3,SH) { Species = 823, Ability = A4, Moves = new(065, 211, 034, 103), Index = 1, CanGigantamax = true }, // Corviknight
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 1 }, // Centiskorch
new(40,05,3,SH) { Species = 851, Ability = A4, Moves = new(141, 438, 053, 489), Index = 1, CanGigantamax = true }, // Centiskorch
new(50,08,4,SH) { Species = 823, Ability = A4, Moves = new(065, 442, 034, 334), Index = 1 }, // Corviknight
new(50,08,4,SH) { Species = 823, Ability = A4, Moves = new(065, 442, 034, 334), Index = 1, CanGigantamax = true }, // Corviknight
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 1 }, // Centiskorch
new(50,08,4,SH) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 242), Index = 1, CanGigantamax = true }, // Centiskorch
new(60,10,5,SH) { Species = 012, Ability = A4, Moves = new(405, 094, 403, 079), Index = 1 }, // Butterfree
new(70,10,5,SH) { Species = 012, Ability = A4, Moves = new(405, 094, 403, 079), Index = 1, CanGigantamax = true }, // Butterfree
new(60,10,5,SH) { Species = 823, Ability = A4, Moves = new(413, 442, 249, 103), Index = 1 }, // Corviknight
new(70,10,5,SH) { Species = 823, Ability = A4, Moves = new(413, 442, 249, 103), Index = 1, CanGigantamax = true }, // Corviknight
new(60,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 1 }, // Centiskorch
new(70,10,5,SH) { Species = 851, Ability = A4, Moves = new(679, 257, 083, 438), Index = 1, CanGigantamax = true }, // Centiskorch
};
}

View file

@ -1,296 +0,0 @@
using static PKHeX.Core.GameVersion;
namespace PKHeX.Core;
// Distribution Nest Encounters (BCAT)
internal static partial class Encounters8Nest
{
/// <summary>
/// Nest distribution raids for <see cref="GameVersion.SWSH"/> available after Isle of Armor expansion and before Crown Tundra.
/// </summary>
internal static readonly EncounterStatic8ND[] Dist_DLC1 =
{
new(17,01,1) { Species = 093, Ability = A4, Moves = new(371, 122, 095, 325), Index = 39}, // Haunter
new(17,01,1) { Species = 425, Ability = A4, Moves = new(016, 506, 310, 371), Index = 39}, // Drifloon
new(17,01,1) { Species = 355, Ability = A4, Moves = new(310, 425, 043, 506), Index = 39}, // Duskull
new(17,01,1) { Species = 859, Ability = A4, Moves = new(372, 313, 260, 044), Index = 39}, // Impidimp
new(17,01,1) { Species = 633, Ability = A4, Moves = new(225, 033, 399, 044), Index = 39}, // Deino
new(17,01,1) { Species = 877, Ability = A4, Moves = new(084, 098, 681, 043), Index = 39}, // Morpeko
new(30,03,2) { Species = 094, Ability = A4, Moves = new(371, 389, 095, 325), Index = 39, CanGigantamax = true}, // Gengar
new(30,03,2) { Species = 426, Ability = A4, Moves = new(016, 247, 310, 371), Index = 39}, // Drifblim
new(30,03,2) { Species = 355, Ability = A4, Moves = new(310, 425, 371, 506), Index = 39}, // Duskull
new(30,03,2) { Species = 859, Ability = A4, Moves = new(259, 389, 207, 044), Index = 39}, // Impidimp
new(30,03,2) { Species = 633, Ability = A4, Moves = new(225, 021, 399, 029), Index = 39}, // Deino
new(30,03,2) { Species = 877, Ability = A4, Moves = new(209, 098, 044, 043), Index = 39}, // Morpeko
new(40,05,3) { Species = 094, Ability = A4, Moves = new(506, 389, 095, 325), Index = 39, CanGigantamax = true}, // Gengar
new(40,05,3) { Species = 426, Ability = A4, Moves = new(016, 247, 360, 371), Index = 39}, // Drifblim
new(40,05,3) { Species = 477, Ability = A4, Moves = new(247, 009, 371, 157), Index = 39}, // Dusknoir
new(40,05,3) { Species = 860, Ability = A4, Moves = new(417, 793, 421, 399), Index = 39}, // Morgrem
new(40,05,3) { Species = 633, Ability = A4, Moves = new(406, 021, 399, 423), Index = 39}, // Deino
new(40,05,3) { Species = 877, Ability = A4, Moves = new(209, 098, 044, 402), Index = 39}, // Morpeko
new(50,08,4) { Species = 094, Ability = A4, Moves = new(247, 399, 094, 085), Index = 39, CanGigantamax = true}, // Gengar
new(50,08,4) { Species = 426, Ability = A4, Moves = new(366, 247, 360, 371), Index = 39}, // Drifblim
new(50,08,4) { Species = 477, Ability = A4, Moves = new(247, 009, 280, 157), Index = 39}, // Dusknoir
new(50,08,4) { Species = 861, Ability = A4, Moves = new(789, 492, 421, 399), Index = 39, CanGigantamax = true}, // Grimmsnarl
new(50,08,4) { Species = 634, Ability = A4, Moves = new(406, 304, 399, 423), Index = 39}, // Zweilous
new(50,08,4) { Species = 877, Ability = A4, Moves = new(783, 098, 242, 402), Index = 39}, // Morpeko
new(60,10,5) { Species = 094, Ability = A4, Moves = new(247, 399, 605, 085), Index = 39, CanGigantamax = true}, // Gengar
new(60,10,5) { Species = 426, Ability = A4, Moves = new(366, 247, 360, 693), Index = 39}, // Drifblim
new(60,10,5) { Species = 477, Ability = A4, Moves = new(247, 009, 280, 089), Index = 39}, // Dusknoir
new(60,10,5) { Species = 861, Ability = A4, Moves = new(789, 492, 421, 417), Index = 39, CanGigantamax = true}, // Grimmsnarl
new(60,10,5) { Species = 635, Ability = A4, Moves = new(406, 304, 399, 056), Index = 39}, // Hydreigon
new(60,10,5) { Species = 877, Ability = A4, Moves = new(783, 037, 242, 402), Index = 39}, // Morpeko
new(17,01,1) { Species = 036, Ability = A4, Moves = new(574, 001, 204, 045), Index = 37}, // Clefable
new(17,01,1) { Species = 040, Ability = A4, Moves = new(497, 574, 001, 111), Index = 37}, // Wigglytuff
new(17,01,1) { Species = 044, Ability = A4, Moves = new(078, 079, 230, 051), Index = 37}, // Gloom
new(17,01,1) { Species = 518, Ability = A4, Moves = new(060, 236, 111, 000), Index = 37}, // Musharna
new(17,01,1) { Species = 547, Ability = A4, Moves = new(412, 585, 073, 178), Index = 37}, // Whimsicott
new(17,01,1) { Species = 549, Ability = A4, Moves = new(412, 241, 437, 263), Index = 37}, // Lilligant
new(30,03,2) { Species = 036, Ability = A4, Moves = new(574, 001, 236, 045), Index = 37}, // Clefable
new(30,03,2) { Species = 040, Ability = A4, Moves = new(497, 574, 001, 034), Index = 37}, // Wigglytuff
new(30,03,2) { Species = 182, Ability = A4, Moves = new(585, 572, 236, 051), Index = 37}, // Bellossom
new(30,03,2) { Species = 518, Ability = A4, Moves = new(428, 060, 236, 111), Index = 37}, // Musharna
new(30,03,2) { Species = 547, Ability = A4, Moves = new(412, 585, 073, 178), Index = 37}, // Whimsicott
new(30,03,2) { Species = 549, Ability = A4, Moves = new(412, 241, 437, 263), Index = 37}, // Lilligant
new(40,05,3) { Species = 036, Ability = A4, Moves = new(585, 309, 236, 345), Index = 37}, // Clefable
new(40,05,3) { Species = 040, Ability = A4, Moves = new(304, 583, 360, 034), Index = 37}, // Wigglytuff
new(40,05,3) { Species = 182, Ability = A4, Moves = new(585, 572, 236, 051), Index = 37}, // Bellossom
new(40,05,3) { Species = 518, Ability = A4, Moves = new(585, 094, 236, 360), Index = 37}, // Musharna
new(40,05,3) { Species = 547, Ability = A4, Moves = new(412, 585, 073, 366), Index = 37}, // Whimsicott
new(40,05,3) { Species = 549, Ability = A4, Moves = new(412, 241, 437, 263), Index = 37}, // Lilligant
new(50,08,4) { Species = 036, Ability = A4, Moves = new(585, 309, 236, 345), Index = 37}, // Clefable
new(50,08,4) { Species = 040, Ability = A4, Moves = new(304, 583, 360, 034), Index = 37}, // Wigglytuff
new(50,08,4) { Species = 182, Ability = A4, Moves = new(585, 572, 236, 051), Index = 37}, // Bellossom
new(50,08,4) { Species = 518, Ability = A4, Moves = new(585, 094, 236, 360), Index = 37}, // Musharna
new(50,08,4) { Species = 547, Ability = A4, Moves = new(538, 585, 073, 366), Index = 37}, // Whimsicott
new(50,08,4) { Species = 549, Ability = A4, Moves = new(412, 241, 437, 263), Index = 37}, // Lilligant
new(60,10,5) { Species = 036, Ability = A4, Moves = new(585, 309, 236, 345), Index = 37}, // Clefable
new(60,10,5) { Species = 040, Ability = A4, Moves = new(304, 583, 360, 034), Index = 37}, // Wigglytuff
new(60,10,5) { Species = 182, Ability = A4, Moves = new(585, 572, 236, 051), Index = 37}, // Bellossom
new(60,10,5) { Species = 518, Ability = A4, Moves = new(585, 094, 236, 360), Index = 37}, // Musharna
new(60,10,5) { Species = 036, Ability = A4, Moves = new(585, 309, 236, 345), Index = 37, Shiny = Shiny.Always}, // Clefable
new(60,10,5) { Species = 549, Ability = A4, Moves = new(412, 241, 437, 263), Index = 37}, // Lilligant
new(17,01,1) { Species = 848, Ability = A4, Moves = new(609, 051, 496, 715), Index = 36}, // Toxel
new(17,01,1) { Species = 835, Ability = A4, Moves = new(609, 033, 044, 046), Index = 36}, // Yamper
new(17,01,1) { Species = 695, Ability = A4, Moves = new(085, 098, 001, 189), Index = 36}, // Heliolisk
new(17,01,1) { Species = 840, Ability = A4, Moves = new(110, 310, 000, 000), Index = 36}, // Applin
new(17,01,1) { Species = 597, Ability = A4, Moves = new(033, 042, 232, 106), Index = 36}, // Ferroseed
new(17,01,1) { Species = 829, Ability = A4, Moves = new(075, 496, 229, 670), Index = 36}, // Gossifleur
new(30,03,2) { Species = 836, Ability = A4, Moves = new(609, 209, 204, 706), Index = 36}, // Boltund
new(30,03,2) { Species = 695, Ability = A4, Moves = new(085, 098, 001, 189), Index = 36}, // Heliolisk
new(30,03,2) { Species = 597, Ability = A4, Moves = new(442, 042, 232, 106), Index = 36}, // Ferroseed
new(30,03,2) { Species = 830, Ability = A4, Moves = new(536, 496, 229, 670), Index = 36}, // Eldegoss
new(40,05,3) { Species = 836, Ability = A4, Moves = new(609, 209, 424, 706), Index = 36}, // Boltund
new(40,05,3) { Species = 695, Ability = A4, Moves = new(085, 098, 447, 189), Index = 36}, // Heliolisk
new(40,05,3) { Species = 598, Ability = A4, Moves = new(442, 438, 398, 106), Index = 36}, // Ferrothorn
new(40,05,3) { Species = 830, Ability = A4, Moves = new(536, 304, 229, 670), Index = 36}, // Eldegoss
new(50,08,4) { Species = 836, Ability = A4, Moves = new(609, 528, 424, 706), Index = 36}, // Boltund
new(50,08,4) { Species = 695, Ability = A4, Moves = new(085, 304, 447, 523), Index = 36}, // Heliolisk
new(50,08,4) { Species = 598, Ability = A4, Moves = new(360, 438, 398, 014), Index = 36}, // Ferrothorn
new(50,08,4) { Species = 830, Ability = A4, Moves = new(536, 304, 229, 437), Index = 36}, // Eldegoss
new(60,10,5) { Species = 836, Ability = A4, Moves = new(609, 528, 424, 706), Index = 36}, // Boltund
new(60,10,5) { Species = 695, Ability = A4, Moves = new(085, 304, 447, 523), Index = 36}, // Heliolisk
new(60,10,5) { Species = 598, Ability = A4, Moves = new(360, 438, 398, 014), Index = 36}, // Ferrothorn
new(60,10,5) { Species = 830, Ability = A4, Moves = new(536, 304, 063, 437), Index = 36}, // Eldegoss
new(30,03,2,SW) { Species = 849, Ability = A4, Moves = new(351, 506, 491, 103), Index = 36, Form = 1, CanGigantamax = true}, // Toxtricity-1
new(30,03,2,SW) { Species = 842, Ability = A4, Moves = new(787, 496, 310, 029), Index = 36, CanGigantamax = true}, // Appletun
new(40,05,3,SW) { Species = 849, Ability = A4, Moves = new(435, 506, 398, 103), Index = 36, Form = 1, CanGigantamax = true}, // Toxtricity-1
new(40,05,3,SW) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 029), Index = 36, CanGigantamax = true}, // Appletun
new(50,08,4,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 398, 586), Index = 36, Form = 1, CanGigantamax = true}, // Toxtricity-1
new(50,08,4,SW) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 523), Index = 36, CanGigantamax = true}, // Appletun
new(60,10,5,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 586), Index = 36, Form = 1, CanGigantamax = true}, // Toxtricity-1
new(60,10,5,SW) { Species = 842, Ability = A4, Moves = new(787, 034, 406, 523), Index = 36, CanGigantamax = true}, // Appletun
new(30,03,2,SH) { Species = 849, Ability = A4, Moves = new(351, 506, 491, 103), Index = 36, CanGigantamax = true}, // Toxtricity
new(30,03,2,SH) { Species = 841, Ability = A4, Moves = new(406, 073, 491, 184), Index = 36, CanGigantamax = true}, // Flapple
new(40,05,3,SH) { Species = 849, Ability = A4, Moves = new(435, 506, 474, 103), Index = 36, CanGigantamax = true}, // Toxtricity
new(40,05,3,SH) { Species = 841, Ability = A4, Moves = new(406, 788, 491, 184), Index = 36, CanGigantamax = true}, // Flapple
new(50,08,4,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 586), Index = 36, CanGigantamax = true}, // Toxtricity
new(50,08,4,SH) { Species = 841, Ability = A4, Moves = new(406, 788, 491, 263), Index = 36, CanGigantamax = true}, // Flapple
new(60,10,5,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 586), Index = 36, CanGigantamax = true}, // Toxtricity
new(60,10,5,SH) { Species = 841, Ability = A4, Moves = new(406, 788, 491, 263), Index = 36, CanGigantamax = true}, // Flapple
new(17,01,1) { Species = 025, Ability = A4, Moves = new(084, 098, 204, 086), Index = 34}, // Pikachu
new(17,01,1) { Species = 026, Ability = A4, Moves = new(009, 129, 280, 204), Index = 34}, // Raichu
new(17,01,1) { Species = 026, Ability = A4, Moves = new(009, 129, 280, 204), Index = 34, Form = 1}, // Raichu-1
new(17,01,1) { Species = 172, Ability = A4, Moves = new(589, 609, 085, 186), Index = 34}, // Pichu
new(17,01,1) { Species = 778, Ability = A4, Moves = new(086, 452, 425, 010), Index = 34}, // Mimikyu
new(30,03,2) { Species = 025, Ability = A4, Moves = new(209, 097, 204, 086), Index = 34}, // Pikachu
new(30,03,2) { Species = 026, Ability = A4, Moves = new(009, 129, 280, 204), Index = 34}, // Raichu
new(30,03,2) { Species = 026, Ability = A4, Moves = new(009, 129, 280, 204), Index = 34, Form = 1}, // Raichu-1
new(30,03,2) { Species = 172, Ability = A4, Moves = new(204, 609, 085, 186), Index = 34}, // Pichu
new(30,03,2) { Species = 778, Ability = A4, Moves = new(086, 452, 425, 608), Index = 34}, // Mimikyu
new(40,05,3) { Species = 025, Ability = A4, Moves = new(085, 231, 583, 086), Index = 34}, // Pikachu
new(40,05,3) { Species = 026, Ability = A4, Moves = new(085, 034, 411, 583), Index = 34}, // Raichu
new(40,05,3) { Species = 026, Ability = A4, Moves = new(085, 034, 057, 583), Index = 34, Form = 1}, // Raichu-1
new(40,05,3) { Species = 172, Ability = A4, Moves = new(204, 609, 085, 583), Index = 34}, // Pichu
new(40,05,3) { Species = 778, Ability = A4, Moves = new(085, 452, 421, 608), Index = 34}, // Mimikyu
new(50,08,4) { Species = 025, Ability = A4, Moves = new(087, 231, 583, 086), Index = 34}, // Pikachu
new(50,08,4) { Species = 026, Ability = A4, Moves = new(087, 034, 411, 583), Index = 34}, // Raichu
new(50,08,4) { Species = 026, Ability = A4, Moves = new(087, 034, 057, 583), Index = 34, Form = 1}, // Raichu-1
new(50,08,4) { Species = 172, Ability = A4, Moves = new(253, 609, 085, 583), Index = 34}, // Pichu
new(50,08,4) { Species = 778, Ability = A4, Moves = new(085, 452, 261, 204), Index = 34}, // Mimikyu
new(60,10,5) { Species = 025, Ability = A4, Moves = new(344, 231, 583, 086), Index = 34}, // Pikachu
new(60,10,5) { Species = 025, Ability = A4, Moves = new(344, 231, 583, 086), Index = 34, Shiny = Shiny.Always}, // Pikachu
new(60,10,5) { Species = 026, Ability = A4, Moves = new(087, 034, 411, 583), Index = 34}, // Raichu
new(60,10,5) { Species = 026, Ability = A4, Moves = new(087, 034, 057, 583), Index = 34, Form = 1}, // Raichu-1
new(60,10,5) { Species = 172, Ability = A4, Moves = new(253, 609, 085, 583), Index = 34}, // Pichu
new(60,10,5) { Species = 778, Ability = A4, Moves = new(087, 452, 261, 583), Index = 34}, // Mimikyu
new(17,01,1) { Species = 833, Ability = A4, Moves = new(055, 033, 044, 240), Index = 33}, // Chewtle
new(17,01,1) { Species = 349, Ability = A4, Moves = new(150, 033, 175, 057), Index = 33}, // Feebas
new(17,01,1) { Species = 194, Ability = A4, Moves = new(341, 021, 039, 055), Index = 33}, // Wooper
new(17,01,1) { Species = 843, Ability = A4, Moves = new(028, 035, 523, 693), Index = 33}, // Silicobra
new(17,01,1) { Species = 449, Ability = A4, Moves = new(341, 328, 044, 033), Index = 33}, // Hippopotas
new(17,01,1) { Species = 422, Ability = A4, Moves = new(352, 106, 189, 055), Index = 33, Form = 1}, // Shellos-1
new(30,03,2) { Species = 834, Ability = A4, Moves = new(157, 534, 317, 055), Index = 33, CanGigantamax = true}, // Drednaw
new(30,03,2) { Species = 349, Ability = A4, Moves = new(057, 033, 175, 150), Index = 33}, // Feebas
new(30,03,2) { Species = 195, Ability = A4, Moves = new(341, 021, 401, 055), Index = 33}, // Quagsire
new(30,03,2) { Species = 843, Ability = A4, Moves = new(091, 029, 523, 693), Index = 33}, // Silicobra
new(30,03,2) { Species = 449, Ability = A4, Moves = new(341, 036, 044, 242), Index = 33}, // Hippopotas
new(30,03,2) { Species = 423, Ability = A4, Moves = new(189, 352, 246, 106), Index = 33, Form = 1}, // Gastrodon-1
new(40,05,3) { Species = 834, Ability = A4, Moves = new(157, 534, 317, 055), Index = 33, CanGigantamax = true}, // Drednaw
new(40,05,3) { Species = 350, Ability = A4, Moves = new(057, 239, 034, 574), Index = 33}, // Milotic
new(40,05,3) { Species = 195, Ability = A4, Moves = new(341, 021, 401, 005), Index = 33}, // Quagsire
new(40,05,3) { Species = 844, Ability = A4, Moves = new(693, 523, 201, 091), Index = 33, CanGigantamax = true}, // Sandaconda
new(40,05,3) { Species = 450, Ability = A4, Moves = new(341, 422, 036, 242), Index = 33}, // Hippowdon
new(40,05,3) { Species = 423, Ability = A4, Moves = new(414, 352, 246, 106), Index = 33, Form = 1}, // Gastrodon-1
new(50,08,4) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 33, CanGigantamax = true}, // Drednaw
new(50,08,4) { Species = 350, Ability = A4, Moves = new(057, 231, 034, 574), Index = 33}, // Milotic
new(50,08,4) { Species = 195, Ability = A4, Moves = new(341, 280, 401, 005), Index = 33}, // Quagsire
new(50,08,4) { Species = 844, Ability = A4, Moves = new(693, 529, 201, 091), Index = 33, CanGigantamax = true}, // Sandaconda
new(50,08,4) { Species = 450, Ability = A4, Moves = new(089, 422, 036, 242), Index = 33}, // Hippowdon
new(50,08,4) { Species = 423, Ability = A4, Moves = new(414, 503, 311, 106), Index = 33, Form = 1}, // Gastrodon-1
new(60,10,5) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 33, CanGigantamax = true}, // Drednaw
new(60,10,5) { Species = 350, Ability = A4, Moves = new(503, 231, 034, 574), Index = 33}, // Milotic
new(60,10,5) { Species = 195, Ability = A4, Moves = new(089, 280, 401, 005), Index = 33}, // Quagsire
new(60,10,5) { Species = 844, Ability = A4, Moves = new(693, 529, 201, 091), Index = 33, CanGigantamax = true}, // Sandaconda
new(60,10,5) { Species = 450, Ability = A4, Moves = new(089, 422, 231, 242), Index = 33}, // Hippowdon
new(60,10,5) { Species = 423, Ability = A4, Moves = new(414, 503, 311, 352), Index = 33, Form = 1}, // Gastrodon-1
new(17,01,1) { Species = 320, Ability = A4, Moves = new(362, 034, 310, 054), Index = 31}, // Wailmer
new(17,01,1) { Species = 098, Ability = A4, Moves = new(055, 341, 043, 232), Index = 31}, // Krabby
new(17,01,1) { Species = 771, Ability = A4, Moves = new(240, 219, 213, 269), Index = 31}, // Pyukumuku
new(17,01,1) { Species = 592, Ability = A4, Moves = new(352, 101, 071, 240), Index = 31}, // Frillish
new(17,01,1) { Species = 458, Ability = A4, Moves = new(033, 017, 352, 469), Index = 31}, // Mantyke
new(17,01,1) { Species = 318, Ability = A4, Moves = new(453, 305, 116, 044), Index = 31}, // Carvanha
new(30,03,2) { Species = 320, Ability = A4, Moves = new(362, 034, 310, 054), Index = 31}, // Wailmer
new(30,03,2) { Species = 098, Ability = A4, Moves = new(061, 341, 023, 232), Index = 31}, // Krabby
new(30,03,2) { Species = 771, Ability = A4, Moves = new(240, 219, 213, 174), Index = 31}, // Pyukumuku
new(30,03,2) { Species = 592, Ability = A4, Moves = new(362, 101, 071, 240), Index = 31}, // Frillish
new(30,03,2) { Species = 458, Ability = A4, Moves = new(029, 017, 061, 469), Index = 31}, // Mantyke
new(30,03,2) { Species = 319, Ability = A4, Moves = new(453, 400, 423, 044), Index = 31}, // Sharpedo
new(40,05,3) { Species = 321, Ability = A4, Moves = new(362, 034, 340, 568), Index = 31}, // Wailord
new(40,05,3) { Species = 099, Ability = A4, Moves = new(534, 341, 021, 014), Index = 31}, // Kingler
new(40,05,3) { Species = 771, Ability = A4, Moves = new(240, 219, 213, 174), Index = 31}, // Pyukumuku
new(40,05,3) { Species = 593, Ability = A4, Moves = new(362, 247, 071, 151), Index = 31}, // Jellicent
new(40,05,3) { Species = 226, Ability = A4, Moves = new(029, 403, 060, 331), Index = 31}, // Mantine
new(40,05,3) { Species = 319, Ability = A4, Moves = new(453, 242, 423, 044), Index = 31}, // Sharpedo
new(50,08,4) { Species = 321, Ability = A4, Moves = new(056, 034, 340, 133), Index = 31}, // Wailord
new(50,08,4) { Species = 099, Ability = A4, Moves = new(534, 341, 359, 014), Index = 31, CanGigantamax = true}, // Kingler
new(50,08,4) { Species = 771, Ability = A4, Moves = new(240, 219, 213, 174), Index = 31}, // Pyukumuku
new(50,08,4) { Species = 593, Ability = A4, Moves = new(056, 247, 071, 151), Index = 31}, // Jellicent
new(50,08,4) { Species = 226, Ability = A4, Moves = new(036, 403, 060, 331), Index = 31}, // Mantine
new(50,08,4) { Species = 319, Ability = A4, Moves = new(057, 242, 423, 044), Index = 31}, // Sharpedo
new(60,10,5) { Species = 321, Ability = A4, Moves = new(503, 034, 340, 133), Index = 31, Shiny = Shiny.Always}, // Wailord
new(60,10,5) { Species = 321, Ability = A4, Moves = new(056, 034, 340, 133), Index = 31}, // Wailord
new(60,10,5) { Species = 771, Ability = A4, Moves = new(092, 599, 213, 174), Index = 31}, // Pyukumuku
new(60,10,5) { Species = 593, Ability = A4, Moves = new(056, 058, 605, 433), Index = 31}, // Jellicent
new(60,10,5) { Species = 226, Ability = A4, Moves = new(036, 403, 060, 331), Index = 31}, // Mantine
new(60,10,5) { Species = 319, Ability = A4, Moves = new(057, 242, 423, 305), Index = 31}, // Sharpedo
new(17,01,1) { Species = 878, Ability = A4, Moves = new(523, 205, 045, 249), Index = 27}, // Cufant
new(17,01,1) { Species = 208, Ability = A4, Moves = new(242, 442, 106, 422), Index = 27}, // Steelix
new(17,01,1) { Species = 052, Ability = A4, Moves = new(232, 006, 242, 045), Index = 27, Form = 2}, // Meowth-2
new(17,01,1) { Species = 837, Ability = A4, Moves = new(229, 261, 479, 108), Index = 27}, // Rolycoly
new(17,01,1) { Species = 111, Ability = A4, Moves = new(479, 523, 196, 182), Index = 27}, // Rhyhorn
new(17,01,1) { Species = 095, Ability = A4, Moves = new(174, 225, 034, 106), Index = 27}, // Onix
new(30,03,2) { Species = 878, Ability = A4, Moves = new(523, 023, 334, 249), Index = 27}, // Cufant
new(30,03,2) { Species = 208, Ability = A4, Moves = new(157, 442, 328, 422), Index = 27}, // Steelix
new(30,03,2) { Species = 863, Ability = A4, Moves = new(442, 006, 242, 269), Index = 27}, // Perrserker
new(30,03,2) { Species = 838, Ability = A4, Moves = new(229, 488, 157, 108), Index = 27}, // Carkol
new(30,03,2) { Species = 111, Ability = A4, Moves = new(350, 523, 196, 182), Index = 27}, // Rhyhorn
new(30,03,2) { Species = 095, Ability = A4, Moves = new(776, 225, 034, 106), Index = 27}, // Onix
new(40,05,3) { Species = 879, Ability = A4, Moves = new(070, 523, 334, 442), Index = 27, CanGigantamax = true}, // Copperajah
new(40,05,3) { Species = 208, Ability = A4, Moves = new(157, 442, 328, 422), Index = 27}, // Steelix
new(40,05,3) { Species = 863, Ability = A4, Moves = new(442, 006, 154, 269), Index = 27}, // Perrserker
new(40,05,3) { Species = 839, Ability = A4, Moves = new(025, 488, 157, 108), Index = 27, CanGigantamax = true}, // Coalossal
new(40,05,3) { Species = 112, Ability = A4, Moves = new(036, 529, 008, 182), Index = 27}, // Rhydon
new(40,05,3) { Species = 095, Ability = A4, Moves = new(776, 225, 021, 201), Index = 27}, // Onix
new(50,08,4) { Species = 879, Ability = A4, Moves = new(070, 523, 334, 442), Index = 27, CanGigantamax = true}, // Copperajah
new(50,08,4) { Species = 208, Ability = A4, Moves = new(157, 231, 328, 422), Index = 27}, // Steelix
new(50,08,4) { Species = 863, Ability = A4, Moves = new(442, 583, 154, 269), Index = 27}, // Perrserker
new(50,08,4) { Species = 839, Ability = A4, Moves = new(025, 488, 157, 115), Index = 27, CanGigantamax = true}, // Coalossal
new(50,08,4) { Species = 464, Ability = A4, Moves = new(350, 089, 008, 182), Index = 27}, // Rhyperior
new(50,08,4) { Species = 095, Ability = A4, Moves = new(776, 225, 784, 201), Index = 27}, // Onix
new(60,10,5) { Species = 879, Ability = A4, Moves = new(276, 089, 583, 442), Index = 27, CanGigantamax = true}, // Copperajah
new(60,10,5) { Species = 208, Ability = A4, Moves = new(038, 231, 529, 422), Index = 27}, // Steelix
new(60,10,5) { Species = 863, Ability = A4, Moves = new(442, 583, 370, 269), Index = 27}, // Perrserker
new(60,10,5) { Species = 839, Ability = A4, Moves = new(076, 682, 157, 115), Index = 27, CanGigantamax = true}, // Coalossal
new(60,10,5) { Species = 464, Ability = A4, Moves = new(444, 089, 008, 224), Index = 27}, // Rhyperior
new(60,10,5) { Species = 095, Ability = A4, Moves = new(776, 444, 784, 201), Index = 27}, // Onix
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 044, 280, 523), Index = 26, CanGigantamax = true}, // Snorlax
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 26, CanGigantamax = true}, // Snorlax
new(17,01,1,SW) { Species = 869, Ability = A4, Moves = new(033, 186, 577, 230), Index = 26, CanGigantamax = true}, // Alcremie
new(30,03,2,SW) { Species = 851, Ability = A4, Moves = new(044, 172, 489, 693), Index = 26, CanGigantamax = true}, // Centiskorch
new(30,03,2,SW) { Species = 131, Ability = A4, Moves = new(352, 420, 109, 047), Index = 26, CanGigantamax = true}, // Lapras
new(40,05,3,SW) { Species = 099, Ability = A4, Moves = new(534, 232, 023, 106), Index = 26, CanGigantamax = true}, // Kingler
new(40,05,3,SW) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 523), Index = 26, CanGigantamax = true}, // Appletun
new(40,05,3,SW) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 044), Index = 26, CanGigantamax = true}, // Centiskorch
new(50,08,4,SW) { Species = 823, Ability = A4, Moves = new(413, 442, 269, 103), Index = 26, CanGigantamax = true}, // Corviknight
new(50,08,4,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 280, 409), Index = 26, CanGigantamax = true}, // Grimmsnarl
new(50,08,4,SW) { Species = 569, Ability = A4, Moves = new(188, 499, 034, 707), Index = 26, CanGigantamax = true}, // Garbodor
new(50,08,4,SW) { Species = 869, Ability = A4, Moves = new(577, 605, 105, 500), Index = 26, CanGigantamax = true}, // Alcremie
new(60,10,5,SW) { Species = 131, Ability = A4, Moves = new(057, 196, 058, 329), Index = 26, CanGigantamax = true}, // Lapras
new(60,10,5,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 409), Index = 26, CanGigantamax = true}, // Toxtricity
new(60,10,5,SW) { Species = 094, Ability = A4, Moves = new(247, 482, 094, 196), Index = 26, CanGigantamax = true}, // Gengar
new(60,10,5,SW) { Species = 884, Ability = A4, Moves = new(430, 406, 085, 334), Index = 26, CanGigantamax = true}, // Duraludon
new(17,01,1,SH) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 26, CanGigantamax = true}, // Butterfree
new(30,03,2,SH) { Species = 826, Ability = A4, Moves = new(405, 060, 496, 095), Index = 26, CanGigantamax = true}, // Orbeetle
new(30,03,2,SH) { Species = 068, Ability = A4, Moves = new(523, 490, 279, 233), Index = 26, CanGigantamax = true}, // Machamp
new(40,05,3,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 202, 247), Index = 26, CanGigantamax = true}, // Orbeetle
new(40,05,3,SH) { Species = 841, Ability = A4, Moves = new(406, 788, 491, 334), Index = 26, CanGigantamax = true}, // Flapple
new(40,05,3,SH) { Species = 844, Ability = A4, Moves = new(693, 529, 201, 091), Index = 26, CanGigantamax = true}, // Sandaconda
new(50,08,4,SH) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 26, CanGigantamax = true}, // Drednaw
new(50,08,4,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 26, CanGigantamax = true}, // Hatterene
new(50,08,4,SH) { Species = 006, Ability = A4, Moves = new(053, 403, 076, 257), Index = 26, CanGigantamax = true}, // Charizard
new(50,08,4,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 26, CanGigantamax = true}, // Butterfree
new(60,10,5,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 409), Index = 26, Form = 1, CanGigantamax = true}, // Toxtricity-1
new(60,10,5,SH) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 523), Index = 26, CanGigantamax = true}, // Coalossal
new(60,10,5,SH) { Species = 068, Ability = A4, Moves = new(238, 007, 008, 089), Index = 26, CanGigantamax = true}, // Machamp
new(60,10,5,SH) { Species = 879, Ability = A4, Moves = new(442, 583, 438, 089), Index = 26, CanGigantamax = true}, // Copperajah
new(17,01,1) { Species = 143, Ability = A4, Moves = new(033, 044, 122, 111), Index = 25, CanGigantamax = true}, // Snorlax
//new(40,05,3) { Species = 807, Ability = A0, Moves = new(085, 007, 512, 280), Index = 25, Shiny = Shiny.Never}, // Zeraora
//new(50,08,4) { Species = 807, Ability = A0, Moves = new(085, 007, 200, 370), Index = 25, Shiny = Shiny.Never}, // Zeraora
//new(60,10,5) { Species = 807, Ability = A0, Moves = new(009, 299, 200, 370), Index = 25, Shiny = Shiny.Never}, // Zeraora
//new(100,10,6) { Species = 807, Ability = A0, Moves = new(435, 299, 200, 370), Index = 25, Shiny = Shiny.Always}, // Zeraora
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 25, CanGigantamax = true}, // Snorlax
new(30,03,2,SW) { Species = 131, Ability = A4, Moves = new(352, 420, 109, 047), Index = 25, CanGigantamax = true}, // Lapras
new(40,05,3,SW) { Species = 099, Ability = A4, Moves = new(534, 232, 023, 106), Index = 25, CanGigantamax = true}, // Kingler
new(40,05,3,SW) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 523), Index = 25, CanGigantamax = true}, // Appletun
new(40,05,3,SW) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 044), Index = 25, CanGigantamax = true}, // Centiskorch
new(50,08,4,SW) { Species = 823, Ability = A4, Moves = new(413, 442, 269, 103), Index = 25, CanGigantamax = true}, // Corviknight
new(50,08,4,SW) { Species = 861, Ability = A4, Moves = new(789, 793, 280, 409), Index = 25, CanGigantamax = true}, // Grimmsnarl
new(50,08,4,SW) { Species = 569, Ability = A4, Moves = new(188, 499, 034, 707), Index = 25, CanGigantamax = true}, // Garbodor
new(50,08,4,SW) { Species = 869, Ability = A4, Moves = new(577, 605, 105, 500), Index = 25, CanGigantamax = true}, // Alcremie
new(60,10,5,SW) { Species = 131, Ability = A4, Moves = new(057, 196, 058, 329), Index = 25, CanGigantamax = true}, // Lapras
new(60,10,5,SW) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 409), Index = 25, CanGigantamax = true}, // Toxtricity
new(60,10,5,SW) { Species = 094, Ability = A4, Moves = new(247, 482, 094, 196), Index = 25, CanGigantamax = true}, // Gengar
new(60,10,5,SW) { Species = 884, Ability = A4, Moves = new(430, 406, 085, 334), Index = 25, CanGigantamax = true}, // Duraludon
new(30,03,2,SH) { Species = 068, Ability = A4, Moves = new(523, 490, 279, 233), Index = 25, CanGigantamax = true}, // Machamp
new(40,05,3,SH) { Species = 826, Ability = A4, Moves = new(405, 094, 202, 247), Index = 25, CanGigantamax = true}, // Orbeetle
new(40,05,3,SH) { Species = 841, Ability = A4, Moves = new(406, 788, 491, 334), Index = 25, CanGigantamax = true}, // Flapple
new(40,05,3,SH) { Species = 844, Ability = A4, Moves = new(693, 529, 201, 091), Index = 25, CanGigantamax = true}, // Sandaconda
new(50,08,4,SH) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 25, CanGigantamax = true}, // Drednaw
new(50,08,4,SH) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 25, CanGigantamax = true}, // Hatterene
new(50,08,4,SH) { Species = 006, Ability = A4, Moves = new(053, 403, 076, 257), Index = 25, CanGigantamax = true}, // Charizard
new(50,08,4,SH) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 25, CanGigantamax = true}, // Butterfree
new(60,10,5,SH) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 409), Index = 25, Form = 1, CanGigantamax = true}, // Toxtricity-1
new(60,10,5,SH) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 523), Index = 25, CanGigantamax = true}, // Coalossal
new(60,10,5,SH) { Species = 068, Ability = A4, Moves = new(238, 007, 008, 089), Index = 25, CanGigantamax = true}, // Machamp
new(60,10,5,SH) { Species = 879, Ability = A4, Moves = new(442, 583, 438, 089), Index = 25, CanGigantamax = true}, // Copperajah
};
}

View file

@ -1,936 +0,0 @@
namespace PKHeX.Core;
// Distribution Nest Encounters (BCAT)
internal static partial class Encounters8Nest
{
/// <summary>
/// Nest distribution raids for <see cref="GameVersion.SWSH"/> available after Crown Tundra expansion.
/// </summary>
internal static readonly EncounterStatic8ND[] Dist_DLC2 =
{
new(17,01,1) { Species = 824, Ability = A4, Moves = new(522, 000, 000, 000), Index = 117 }, // Blipbug
new(30,03,2) { Species = 833, Ability = A4, Moves = new(055, 033, 044, 029), Index = 117 }, // Chewtle
new(40,05,3) { Species = 832, Ability = A4, Moves = new(036, 024, 428, 086), Index = 117 }, // Dubwool
new(50,08,4) { Species = 823, Ability = A4, Moves = new(413, 442, 034, 681), Index = 117 }, // Corviknight
new(17,01,1) { Species = 850, Ability = A4, Moves = new(172, 044, 035, 052), Index = 117 }, // Sizzlipede
new(30,03,2) { Species = 831, Ability = A4, Moves = new(036, 024, 029, 086), Index = 117 }, // Wooloo
new(40,05,3) { Species = 826, Ability = A4, Moves = new(405, 277, 371, 247), Index = 117 }, // Orbeetle
new(50,08,4) { Species = 132, Ability = A4, Moves = new(144, 000, 000, 000), Index = 117 }, // Ditto
new(60,10,5) { Species = 099, Ability = A4, Moves = new(534, 232, 023, 106), Index = 117, CanGigantamax = true }, // Kingler
new(60,10,5) { Species = 842, Ability = A4, Moves = new(787, 496, 406, 523), Index = 117, CanGigantamax = true }, // Appletun
new(60,10,5) { Species = 851, Ability = A4, Moves = new(141, 424, 422, 044), Index = 117, CanGigantamax = true }, // Centiskorch
new(60,10,5) { Species = 826, Ability = A4, Moves = new(405, 094, 202, 247), Index = 117, CanGigantamax = true }, // Orbeetle
new(60,10,5) { Species = 841, Ability = A4, Moves = new(406, 788, 491, 334), Index = 117, CanGigantamax = true }, // Flapple
new(60,10,5) { Species = 844, Ability = A4, Moves = new(693, 529, 201, 091), Index = 117, CanGigantamax = true }, // Sandaconda
new(60,10,5) { Species = 823, Ability = A4, Moves = new(413, 442, 269, 103), Index = 117, CanGigantamax = true }, // Corviknight
new(60,10,5) { Species = 861, Ability = A4, Moves = new(789, 793, 280, 409), Index = 117, CanGigantamax = true }, // Grimmsnarl
new(60,10,5) { Species = 569, Ability = A4, Moves = new(188, 499, 034, 707), Index = 117, CanGigantamax = true }, // Garbodor
new(60,10,5) { Species = 869, Ability = A4, Moves = new(577, 605, 105, 500), Index = 117, CanGigantamax = true }, // Alcremie
new(60,10,5) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 117, CanGigantamax = true }, // Drednaw
new(60,10,5) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 117, CanGigantamax = true }, // Hatterene
new(60,10,5) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 117, CanGigantamax = true }, // Butterfree
new(60,10,5) { Species = 131, Ability = A4, Moves = new(057, 196, 058, 329), Index = 117, CanGigantamax = true }, // Lapras
new(60,10,5) { Species = 849, Ability = A4, Moves = new(786, 506, 474, 409), Index = 117, CanGigantamax = true }, // Toxtricity
new(60,10,5) { Species = 094, Ability = A4, Moves = new(247, 482, 094, 196), Index = 117, CanGigantamax = true }, // Gengar
new(60,10,5) { Species = 884, Ability = A4, Moves = new(430, 406, 085, 334), Index = 117, CanGigantamax = true }, // Duraludon
new(60,10,5) { Species = 849, Ability = A4, Moves = new(786, 506, 599, 409), Index = 117, Form = 1, CanGigantamax = true }, // Toxtricity-1
new(60,10,5) { Species = 839, Ability = A4, Moves = new(246, 053, 157, 523), Index = 117, CanGigantamax = true }, // Coalossal
new(60,10,5) { Species = 068, Ability = A4, Moves = new(238, 007, 008, 089), Index = 117, CanGigantamax = true }, // Machamp
new(60,10,5) { Species = 879, Ability = A4, Moves = new(442, 583, 438, 089), Index = 117, CanGigantamax = true }, // Copperajah
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 117, CanGigantamax = true }, // Snorlax
new(17,01,1) { Species = 824, Ability = A4, Moves = new(522, 000, 000, 000), Index = 115 }, // Blipbug
new(30,03,2) { Species = 833, Ability = A4, Moves = new(055, 033, 044, 029), Index = 115 }, // Chewtle
new(40,05,3) { Species = 832, Ability = A4, Moves = new(036, 024, 428, 086), Index = 115 }, // Dubwool
new(50,08,4) { Species = 823, Ability = A4, Moves = new(413, 442, 034, 681), Index = 115 }, // Corviknight
//new(60,10,5) { Species = 896, Ability = A0, Moves = new(556, 667, 370, 684), Index = 115, Shiny = Shiny.Never }, // Glastrier
//new(60,10,5) { Species = 897, Ability = A0, Moves = new(247, 261, 506, 555), Index = 115, Shiny = Shiny.Never }, // Spectrier
new(17,01,1) { Species = 872, Ability = A4, Moves = new(496, 196, 263, 181), Index = 113 }, // Snom
new(17,01,1) { Species = 771, Ability = A4, Moves = new(092, 220, 599, 000), Index = 113 }, // Pyukumuku
new(17,01,1) { Species = 871, Ability = A4, Moves = new(084, 061, 064, 031), Index = 113 }, // Pincurchin
new(30,03,2) { Species = 872, Ability = A4, Moves = new(496, 196, 263, 181), Index = 113 }, // Snom
new(30,03,2) { Species = 771, Ability = A4, Moves = new(092, 220, 599, 000), Index = 113 }, // Pyukumuku
new(30,03,2) { Species = 871, Ability = A4, Moves = new(716, 061, 398, 675), Index = 113 }, // Pincurchin
new(40,05,3) { Species = 872, Ability = A4, Moves = new(405, 196, 263, 181), Index = 113 }, // Snom
new(40,05,3) { Species = 771, Ability = A4, Moves = new(092, 220, 599, 000), Index = 113 }, // Pyukumuku
new(40,05,3) { Species = 871, Ability = A4, Moves = new(716, 710, 398, 675), Index = 113 }, // Pincurchin
new(50,08,4) { Species = 872, Ability = A4, Moves = new(405, 196, 263, 522), Index = 113 }, // Snom
new(50,08,4) { Species = 771, Ability = A4, Moves = new(092, 220, 599, 000), Index = 113 }, // Pyukumuku
new(50,08,4) { Species = 871, Ability = A4, Moves = new(716, 056, 398, 675), Index = 113 }, // Pincurchin
new(60,10,5) { Species = 872, Ability = A4, Moves = new(405, 196, 263, 522), Index = 113, Shiny = Shiny.Always }, // Snom
new(60,10,5) { Species = 872, Ability = A4, Moves = new(405, 196, 263, 522), Index = 113 }, // Snom
new(60,10,5) { Species = 771, Ability = A4, Moves = new(092, 220, 599, 213), Index = 113 }, // Pyukumuku
new(60,10,5) { Species = 871, Ability = A4, Moves = new(435, 056, 398, 675), Index = 113 }, // Pincurchin
new(17,01,1) { Species = 859, Ability = A4, Moves = new(372, 044, 252, 590), Index = 111 }, // Impidimp
new(30,03,2) { Species = 859, Ability = A4, Moves = new(399, 583, 252, 005), Index = 111 }, // Impidimp
new(40,05,3) { Species = 860, Ability = A4, Moves = new(793, 583, 421, 025), Index = 111 }, // Morgrem
new(40,05,3) { Species = 859, Ability = A4, Moves = new(399, 583, 252, 005), Index = 111 }, // Impidimp
new(50,08,4) { Species = 861, Ability = A4, Moves = new(789, 492, 359, 025), Index = 111 }, // Grimmsnarl
new(50,08,4) { Species = 860, Ability = A4, Moves = new(793, 583, 421, 025), Index = 111 }, // Morgrem
new(50,08,4) { Species = 859, Ability = A4, Moves = new(399, 583, 252, 005), Index = 111 }, // Impidimp
new(60,10,5) { Species = 861, Ability = A4, Moves = new(789, 663, 359, 025), Index = 111, Shiny = Shiny.Always }, // Grimmsnarl
new(60,10,5) { Species = 861, Ability = A4, Moves = new(789, 663, 359, 025), Index = 111 }, // Grimmsnarl
new(17,01,1) { Species = 183, Ability = A4, Moves = new(583, 392, 205, 021), Index = 109 }, // Marill
new(17,01,1) { Species = 060, Ability = A4, Moves = new(055, 001, 341, 061), Index = 109 }, // Poliwag
new(17,01,1) { Species = 363, Ability = A4, Moves = new(181, 055, 205, 111), Index = 109 }, // Spheal
new(30,03,2) { Species = 183, Ability = A4, Moves = new(583, 392, 231, 021), Index = 109 }, // Marill
new(30,03,2) { Species = 060, Ability = A4, Moves = new(061, 001, 341, 094), Index = 109 }, // Poliwag
new(30,03,2) { Species = 363, Ability = A4, Moves = new(062, 362, 205, 231), Index = 109 }, // Spheal
new(40,05,3) { Species = 183, Ability = A4, Moves = new(583, 056, 231, 021), Index = 109 }, // Marill
new(40,05,3) { Species = 060, Ability = A4, Moves = new(056, 058, 341, 094), Index = 109 }, // Poliwag
new(40,05,3) { Species = 363, Ability = A4, Moves = new(062, 057, 523, 231), Index = 109 }, // Spheal
new(50,08,4) { Species = 183, Ability = A4, Moves = new(583, 056, 276, 021), Index = 109 }, // Marill
new(50,08,4) { Species = 060, Ability = A4, Moves = new(056, 058, 414, 094), Index = 109 }, // Poliwag
new(50,08,4) { Species = 363, Ability = A4, Moves = new(058, 057, 523, 231), Index = 109 }, // Spheal
new(60,10,5) { Species = 183, Ability = A4, Moves = new(583, 056, 276, 059), Index = 109, Shiny = Shiny.Always }, // Marill
new(60,10,5) { Species = 183, Ability = A4, Moves = new(583, 056, 276, 059), Index = 109 }, // Marill
new(60,10,5) { Species = 060, Ability = A4, Moves = new(503, 058, 414, 094), Index = 109 }, // Poliwag
new(60,10,5) { Species = 363, Ability = A4, Moves = new(329, 057, 523, 231), Index = 109 }, // Spheal
new(17,01,1) { Species = 824, Ability = A4, Moves = new(522, 000, 000, 000), Index = 106 }, // Blipbug
new(30,03,2) { Species = 833, Ability = A4, Moves = new(055, 033, 044, 029), Index = 106 }, // Chewtle
new(40,05,3) { Species = 832, Ability = A4, Moves = new(036, 024, 428, 086), Index = 106 }, // Dubwool
new(50,08,4) { Species = 823, Ability = A4, Moves = new(413, 442, 034, 681), Index = 106 }, // Corviknight
//new(60,10,5) { Species = 892, Ability = A0, Moves = new(555, 370, 389, 398), Index = 106, CanGigantamax = true }, // Urshifu
//new(60,10,5) { Species = 892, Ability = A0, Moves = new(710, 370, 009, 512), Index = 106, Form = 1, CanGigantamax = true }, // Urshifu-1
new(17,01,1) { Species = 090, Ability = A4, Moves = new(420, 056, 033, 250), Index = 104 }, // Shellder
new(17,01,1) { Species = 090, Ability = A4, Moves = new(420, 057, 033, 710), Index = 104 }, // Shellder
new(30,03,2) { Species = 090, Ability = A4, Moves = new(062, 056, 033, 250), Index = 104 }, // Shellder
new(30,03,2) { Species = 090, Ability = A4, Moves = new(062, 057, 033, 710), Index = 104 }, // Shellder
new(40,05,3) { Species = 090, Ability = A4, Moves = new(062, 056, 504, 534), Index = 104 }, // Shellder
new(40,05,3) { Species = 090, Ability = A4, Moves = new(062, 057, 161, 710), Index = 104 }, // Shellder
new(50,08,4) { Species = 090, Ability = A4, Moves = new(058, 057, 504, 534), Index = 104 }, // Shellder
new(50,08,4) { Species = 090, Ability = A4, Moves = new(058, 057, 161, 710), Index = 104 }, // Shellder
new(60,10,5) { Species = 090, Ability = A4, Moves = new(058, 057, 504, 534), Index = 104, Shiny = Shiny.Always }, // Shellder
new(60,10,5) { Species = 090, Ability = A4, Moves = new(058, 057, 161, 710), Index = 104 }, // Shellder
new(60,10,5) { Species = 090, Ability = A4, Moves = new(058, 057, 504, 534), Index = 104 }, // Shellder
new(17,01,1) { Species = 438, Ability = A4, Moves = new(088, 383, 175, 313), Index = 102 }, // Bonsly
new(30,03,2) { Species = 438, Ability = A4, Moves = new(088, 317, 175, 313), Index = 102 }, // Bonsly
new(40,05,3) { Species = 438, Ability = A4, Moves = new(317, 389, 157, 313), Index = 102 }, // Bonsly
new(50,08,4) { Species = 185, Ability = A4, Moves = new(452, 359, 157, 389), Index = 102 }, // Sudowoodo
new(60,10,5) { Species = 185, Ability = A4, Moves = new(452, 444, 038, 389), Index = 102, Shiny = Shiny.Always }, // Sudowoodo
new(60,10,5) { Species = 185, Ability = A4, Moves = new(452, 444, 038, 389), Index = 102 }, // Sudowoodo
new(17,01,1) { Species = 696, Ability = A4, Moves = new(246, 033, 525, 046), Index = 100 }, // Tyrunt
new(17,01,1) { Species = 564, Ability = A4, Moves = new(453, 414, 246, 044), Index = 100 }, // Tirtouga
new(17,01,1) { Species = 566, Ability = A4, Moves = new(017, 246, 225, 414), Index = 100 }, // Archen
new(17,01,1) { Species = 698, Ability = A4, Moves = new(181, 086, 246, 196), Index = 100 }, // Amaura
new(30,03,2) { Species = 696, Ability = A4, Moves = new(246, 523, 525, 044), Index = 100 }, // Tyrunt
new(30,03,2) { Species = 564, Ability = A4, Moves = new(453, 414, 246, 242), Index = 100 }, // Tirtouga
new(30,03,2) { Species = 566, Ability = A4, Moves = new(017, 246, 225, 414), Index = 100 }, // Archen
new(30,03,2) { Species = 698, Ability = A4, Moves = new(062, 086, 246, 196), Index = 100 }, // Amaura
new(40,05,3) { Species = 697, Ability = A4, Moves = new(444, 523, 337, 231), Index = 100 }, // Tyrantrum
new(40,05,3) { Species = 565, Ability = A4, Moves = new(453, 414, 246, 231), Index = 100 }, // Carracosta
new(40,05,3) { Species = 567, Ability = A4, Moves = new(403, 157, 337, 414), Index = 100 }, // Archeops
new(40,05,3) { Species = 699, Ability = A4, Moves = new(059, 086, 444, 304), Index = 100 }, // Aurorus
new(50,08,4) { Species = 697, Ability = A4, Moves = new(444, 089, 337, 231), Index = 100 }, // Tyrantrum
new(50,08,4) { Species = 565, Ability = A4, Moves = new(056, 414, 246, 231), Index = 100 }, // Carracosta
new(50,08,4) { Species = 567, Ability = A4, Moves = new(403, 444, 337, 414), Index = 100 }, // Archeops
new(50,08,4) { Species = 699, Ability = A4, Moves = new(059, 094, 444, 304), Index = 100 }, // Aurorus
new(60,10,5) { Species = 697, Ability = A4, Moves = new(457, 089, 406, 231), Index = 100, Shiny = Shiny.Always }, // Tyrantrum
new(60,10,5) { Species = 697, Ability = A4, Moves = new(444, 089, 406, 231), Index = 100 }, // Tyrantrum
new(60,10,5) { Species = 565, Ability = A4, Moves = new(056, 444, 089, 231), Index = 100 }, // Carracosta
new(60,10,5) { Species = 567, Ability = A4, Moves = new(403, 444, 406, 414), Index = 100 }, // Archeops
new(60,10,5) { Species = 699, Ability = A4, Moves = new(059, 573, 444, 304), Index = 100 }, // Aurorus
new(50,08,4) { Species = 003, Ability = A4, Moves = new(572, 188, 414, 200), Index = 98, CanGigantamax = true }, // Venusaur
new(50,08,4) { Species = 006, Ability = A4, Moves = new(257, 076, 542, 406), Index = 98, CanGigantamax = true }, // Charizard
new(50,08,4) { Species = 009, Ability = A4, Moves = new(057, 059, 430, 089), Index = 98, CanGigantamax = true }, // Blastoise
new(80,10,5) { Species = 003, Ability = A4, Moves = new(572, 188, 414, 200), Index = 98, CanGigantamax = true }, // Venusaur
new(80,10,5) { Species = 006, Ability = A4, Moves = new(257, 076, 542, 406), Index = 98, CanGigantamax = true }, // Charizard
new(80,10,5) { Species = 009, Ability = A4, Moves = new(057, 059, 430, 089), Index = 98, CanGigantamax = true }, // Blastoise
new(17,01,1) { Species = 129, Ability = A4, Moves = new(150, 033, 000, 000), Index = 95 }, // Magikarp
new(17,01,1) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 95 }, // Meowth
new(17,01,1) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 95 }, // Meowth
new(17,01,1) { Species = 438, Ability = A4, Moves = new(088, 383, 175, 313), Index = 95 }, // Bonsly
new(17,01,1) { Species = 554, Ability = A4, Moves = new(052, 044, 033, 526), Index = 95 }, // Darumaka
new(30,03,2) { Species = 129, Ability = A4, Moves = new(150, 033, 000, 000), Index = 95 }, // Magikarp
new(30,03,2) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 95 }, // Meowth
new(30,03,2) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 95 }, // Meowth
new(30,03,2) { Species = 438, Ability = A4, Moves = new(088, 317, 175, 313), Index = 95 }, // Bonsly
new(30,03,2) { Species = 554, Ability = A4, Moves = new(007, 044, 157, 029), Index = 95 }, // Darumaka
new(40,05,3) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 95 }, // Magikarp
new(40,05,3) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 95 }, // Meowth
new(40,05,3) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 95 }, // Meowth
new(40,05,3) { Species = 438, Ability = A4, Moves = new(317, 389, 157, 313), Index = 95 }, // Bonsly
new(40,05,3) { Species = 555, Ability = A4, Moves = new(359, 276, 157, 442), Index = 95 }, // Darmanitan
new(50,08,4) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 000), Index = 95 }, // Magikarp
new(50,08,4) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 95 }, // Meowth
new(50,08,4) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 95 }, // Meowth
new(50,08,4) { Species = 185, Ability = A4, Moves = new(452, 359, 157, 389), Index = 95 }, // Sudowoodo
new(50,08,4) { Species = 555, Ability = A4, Moves = new(394, 276, 157, 442), Index = 95 }, // Darmanitan
new(60,10,5) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 340), Index = 95, Shiny = Shiny.Always }, // Magikarp
new(60,10,5) { Species = 129, Ability = A4, Moves = new(150, 033, 175, 340), Index = 95 }, // Magikarp
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 95 }, // Meowth
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 95 }, // Meowth
new(60,10,5) { Species = 185, Ability = A4, Moves = new(452, 444, 038, 389), Index = 95 }, // Sudowoodo
new(60,10,5) { Species = 555, Ability = A4, Moves = new(394, 276, 089, 442), Index = 95 }, // Darmanitan
new(17,01,1) { Species = 225, Ability = A4, Moves = new(217, 065, 034, 372), Index = 93 }, // Delibird
new(17,01,1) { Species = 121, Ability = A4, Moves = new(057, 408, 055, 129), Index = 93 }, // Starmie
new(17,01,1) { Species = 615, Ability = A4, Moves = new(196, 020, 229, 420), Index = 93 }, // Cryogonal
new(30,03,2) { Species = 225, Ability = A4, Moves = new(217, 065, 034, 693), Index = 93 }, // Delibird
new(30,03,2) { Species = 121, Ability = A4, Moves = new(057, 408, 094, 129), Index = 93 }, // Starmie
new(30,03,2) { Species = 615, Ability = A4, Moves = new(400, 062, 229, 246), Index = 93 }, // Cryogonal
new(40,05,3) { Species = 225, Ability = A4, Moves = new(217, 065, 280, 196), Index = 93 }, // Delibird
new(40,05,3) { Species = 121, Ability = A4, Moves = new(056, 408, 094, 129), Index = 93 }, // Starmie
new(40,05,3) { Species = 615, Ability = A4, Moves = new(400, 062, 573, 246), Index = 93 }, // Cryogonal
new(50,08,4) { Species = 225, Ability = A4, Moves = new(217, 059, 034, 280), Index = 93 }, // Delibird
new(50,08,4) { Species = 121, Ability = A4, Moves = new(056, 408, 094, 605), Index = 93 }, // Starmie
new(50,08,4) { Species = 615, Ability = A4, Moves = new(400, 058, 573, 430), Index = 93 }, // Cryogonal
new(60,10,5) { Species = 225, Ability = A4, Moves = new(217, 059, 065, 280), Index = 93, Shiny = Shiny.Always }, // Delibird
new(60,10,5) { Species = 225, Ability = A4, Moves = new(217, 059, 065, 280), Index = 93 }, // Delibird
new(60,10,5) { Species = 121, Ability = A4, Moves = new(056, 800, 094, 605), Index = 93 }, // Starmie
new(60,10,5) { Species = 615, Ability = A4, Moves = new(400, 329, 573, 430), Index = 93 }, // Cryogonal
new(17,01,1) { Species = 133, Ability = A4, Moves = new(033, 098, 039, 608), Index = 91 }, // Eevee
new(30,03,2) { Species = 133, Ability = A4, Moves = new(129, 098, 039, 608), Index = 91 }, // Eevee
new(40,05,3) { Species = 133, Ability = A4, Moves = new(129, 098, 231, 608), Index = 91 }, // Eevee
new(40,05,3) { Species = 134, Ability = A4, Moves = new(352, 058, 330, 304), Index = 91 }, // Vaporeon
new(40,05,3) { Species = 135, Ability = A4, Moves = new(422, 086, 247, 129), Index = 91 }, // Jolteon
new(40,05,3) { Species = 136, Ability = A4, Moves = new(436, 098, 276, 044), Index = 91 }, // Flareon
new(40,05,3) { Species = 196, Ability = A4, Moves = new(060, 605, 231, 098), Index = 91 }, // Espeon
new(40,05,3) { Species = 197, Ability = A4, Moves = new(555, 044, 247, 098), Index = 91 }, // Umbreon
new(40,05,3) { Species = 470, Ability = A4, Moves = new(202, 098, 073, 231), Index = 91 }, // Leafeon
new(40,05,3) { Species = 471, Ability = A4, Moves = new(573, 059, 247, 129), Index = 91 }, // Glaceon
new(40,05,3) { Species = 700, Ability = A4, Moves = new(574, 595, 129, 605), Index = 91 }, // Sylveon
new(50,08,4) { Species = 133, Ability = A4, Moves = new(129, 500, 231, 204), Index = 91 }, // Eevee
new(50,08,4) { Species = 134, Ability = A4, Moves = new(056, 058, 330, 304), Index = 91 }, // Vaporeon
new(50,08,4) { Species = 135, Ability = A4, Moves = new(087, 086, 247, 129), Index = 91 }, // Jolteon
new(50,08,4) { Species = 136, Ability = A4, Moves = new(394, 098, 276, 044), Index = 91 }, // Flareon
new(50,08,4) { Species = 196, Ability = A4, Moves = new(094, 605, 231, 098), Index = 91 }, // Espeon
new(50,08,4) { Species = 197, Ability = A4, Moves = new(555, 492, 247, 098), Index = 91 }, // Umbreon
new(50,08,4) { Species = 470, Ability = A4, Moves = new(348, 098, 073, 231), Index = 91 }, // Leafeon
new(50,08,4) { Species = 471, Ability = A4, Moves = new(573, 059, 247, 311), Index = 91 }, // Glaceon
new(50,08,4) { Species = 700, Ability = A4, Moves = new(585, 595, 129, 605), Index = 91 }, // Sylveon
new(60,10,5) { Species = 133, Ability = A4, Moves = new(387, 500, 231, 204), Index = 91, Shiny = Shiny.Always }, // Eevee
new(60,10,5) { Species = 134, Ability = A4, Moves = new(056, 058, 503, 304), Index = 91 }, // Vaporeon
new(60,10,5) { Species = 135, Ability = A4, Moves = new(087, 085, 247, 129), Index = 91 }, // Jolteon
new(60,10,5) { Species = 136, Ability = A4, Moves = new(394, 231, 276, 044), Index = 91 }, // Flareon
new(60,10,5) { Species = 196, Ability = A4, Moves = new(094, 605, 231, 129), Index = 91 }, // Espeon
new(60,10,5) { Species = 197, Ability = A4, Moves = new(555, 492, 247, 304), Index = 91 }, // Umbreon
new(60,10,5) { Species = 470, Ability = A4, Moves = new(348, 311, 073, 231), Index = 91 }, // Leafeon
new(60,10,5) { Species = 471, Ability = A4, Moves = new(573, 059, 247, 304), Index = 91 }, // Glaceon
new(60,10,5) { Species = 700, Ability = A4, Moves = new(585, 595, 304, 605), Index = 91 }, // Sylveon
new(60,10,5) { Species = 133, Ability = A4, Moves = new(387, 500, 231, 204), Index = 91, CanGigantamax = true }, // Eevee
new(17,01,1) { Species = 570, Ability = A4, Moves = new(468, 247, 010, 043), Index = 89 }, // Zorua
new(17,01,1) { Species = 302, Ability = A4, Moves = new(252, 010, 425, 555), Index = 89 }, // Sableye
new(17,01,1) { Species = 355, Ability = A4, Moves = new(310, 425, 043, 506), Index = 89 }, // Duskull
new(17,01,1) { Species = 821, Ability = A4, Moves = new(403, 031, 043, 681), Index = 89 }, // Rookidee
new(17,01,1) { Species = 827, Ability = A4, Moves = new(555, 098, 251, 468), Index = 89 }, // Nickit
new(30,03,2) { Species = 571, Ability = A4, Moves = new(400, 247, 279, 304), Index = 89 }, // Zoroark
new(30,03,2) { Species = 302, Ability = A4, Moves = new(252, 094, 425, 555), Index = 89 }, // Sableye
new(30,03,2) { Species = 355, Ability = A4, Moves = new(310, 425, 371, 506), Index = 89 }, // Duskull
new(30,03,2) { Species = 822, Ability = A4, Moves = new(403, 263, 279, 681), Index = 89 }, // Corvisquire
new(30,03,2) { Species = 828, Ability = A4, Moves = new(555, 098, 251, 583), Index = 89 }, // Thievul
new(40,05,3) { Species = 571, Ability = A4, Moves = new(400, 247, 411, 304), Index = 89 }, // Zoroark
new(40,05,3) { Species = 302, Ability = A4, Moves = new(252, 261, 247, 555), Index = 89 }, // Sableye
new(40,05,3) { Species = 477, Ability = A4, Moves = new(247, 009, 371, 157), Index = 89 }, // Dusknoir
new(40,05,3) { Species = 823, Ability = A4, Moves = new(403, 442, 034, 681), Index = 89 }, // Corviknight
new(40,05,3) { Species = 828, Ability = A4, Moves = new(555, 098, 094, 583), Index = 89 }, // Thievul
new(50,08,4) { Species = 571, Ability = A4, Moves = new(539, 247, 411, 304), Index = 89 }, // Zoroark
new(50,08,4) { Species = 302, Ability = A4, Moves = new(605, 261, 247, 555), Index = 89 }, // Sableye
new(50,08,4) { Species = 477, Ability = A4, Moves = new(247, 009, 280, 157), Index = 89 }, // Dusknoir
new(50,08,4) { Species = 823, Ability = A4, Moves = new(413, 442, 034, 681), Index = 89 }, // Corviknight
new(50,08,4) { Species = 828, Ability = A4, Moves = new(555, 341, 094, 583), Index = 89 }, // Thievul
new(60,10,5) { Species = 571, Ability = A4, Moves = new(539, 247, 411, 492), Index = 89, Shiny = Shiny.Always }, // Zoroark
new(60,10,5) { Species = 571, Ability = A4, Moves = new(539, 247, 411, 492), Index = 89 }, // Zoroark
new(60,10,5) { Species = 302, Ability = A4, Moves = new(605, 261, 247, 492), Index = 89 }, // Sableye
new(60,10,5) { Species = 477, Ability = A4, Moves = new(247, 009, 280, 089), Index = 89 }, // Dusknoir
new(60,10,5) { Species = 823, Ability = A4, Moves = new(413, 442, 776, 372), Index = 89 }, // Corviknight
new(60,10,5) { Species = 828, Ability = A4, Moves = new(555, 492, 094, 583), Index = 89 }, // Thievul
new(17,01,1) { Species = 722, Ability = A4, Moves = new(064, 075, 389, 129), Index = 87 }, // Rowlet
new(17,01,1) { Species = 725, Ability = A4, Moves = new(052, 006, 044, 421), Index = 87 }, // Litten
new(17,01,1) { Species = 728, Ability = A4, Moves = new(574, 001, 453, 196), Index = 87 }, // Popplio
new(30,03,2) { Species = 722, Ability = A4, Moves = new(064, 348, 389, 129), Index = 87 }, // Rowlet
new(30,03,2) { Species = 725, Ability = A4, Moves = new(053, 006, 044, 421), Index = 87 }, // Litten
new(30,03,2) { Species = 728, Ability = A4, Moves = new(574, 061, 453, 196), Index = 87 }, // Popplio
new(40,05,3) { Species = 722, Ability = A4, Moves = new(413, 348, 389, 129), Index = 87 }, // Rowlet
new(40,05,3) { Species = 725, Ability = A4, Moves = new(394, 006, 044, 421), Index = 87 }, // Litten
new(40,05,3) { Species = 728, Ability = A4, Moves = new(585, 056, 453, 196), Index = 87 }, // Popplio
new(50,08,4) { Species = 722, Ability = A4, Moves = new(413, 348, 389, 412), Index = 87 }, // Rowlet
new(50,08,4) { Species = 725, Ability = A4, Moves = new(394, 006, 279, 421), Index = 87 }, // Litten
new(50,08,4) { Species = 728, Ability = A4, Moves = new(585, 056, 453, 059), Index = 87 }, // Popplio
new(60,10,5) { Species = 722, Ability = A4, Moves = new(413, 348, 421, 412), Index = 87 }, // Rowlet
new(60,10,5) { Species = 725, Ability = A4, Moves = new(394, 006, 279, 242), Index = 87 }, // Litten
new(60,10,5) { Species = 728, Ability = A4, Moves = new(585, 056, 453, 058), Index = 87 }, // Popplio
new(17,01,1) { Species = 337, Ability = A4, Moves = new(585, 033, 093, 088), Index = 85 }, // Lunatone
new(17,01,1) { Species = 338, Ability = A4, Moves = new(394, 033, 093, 088), Index = 85 }, // Solrock
new(30,03,2) { Species = 337, Ability = A4, Moves = new(585, 129, 094, 088), Index = 85 }, // Lunatone
new(30,03,2) { Species = 338, Ability = A4, Moves = new(394, 129, 094, 088), Index = 85 }, // Solrock
new(40,05,3) { Species = 337, Ability = A4, Moves = new(585, 129, 094, 157), Index = 85 }, // Lunatone
new(40,05,3) { Species = 338, Ability = A4, Moves = new(394, 129, 094, 157), Index = 85 }, // Solrock
new(50,08,4) { Species = 337, Ability = A4, Moves = new(585, 058, 094, 157), Index = 85 }, // Lunatone
new(50,08,4) { Species = 338, Ability = A4, Moves = new(394, 076, 094, 157), Index = 85 }, // Solrock
new(60,10,5) { Species = 337, Ability = A4, Moves = new(585, 058, 094, 444), Index = 85, Shiny = Shiny.Always }, // Lunatone
new(60,10,5) { Species = 337, Ability = A4, Moves = new(585, 058, 094, 444), Index = 85 }, // Lunatone
new(60,10,5) { Species = 338, Ability = A4, Moves = new(394, 076, 094, 444), Index = 85, Shiny = Shiny.Always }, // Solrock
new(60,10,5) { Species = 338, Ability = A4, Moves = new(394, 076, 094, 444), Index = 85 }, // Solrock
new(17,01,1) { Species = 573, Ability = A4, Moves = new(350, 541, 331, 001), Index = 83 }, // Cinccino
new(17,01,1) { Species = 333, Ability = A4, Moves = new(574, 064, 257, 031), Index = 83 }, // Swablu
new(17,01,1) { Species = 479, Ability = A4, Moves = new(437, 104, 310, 084), Index = 83, Form = 5 }, // Rotom-5
new(17,01,1) { Species = 767, Ability = A4, Moves = new(522, 057, 111, 028), Index = 83 }, // Wimpod
new(30,03,2) { Species = 573, Ability = A4, Moves = new(350, 541, 331, 583), Index = 83 }, // Cinccino
new(30,03,2) { Species = 333, Ability = A4, Moves = new(583, 225, 257, 058), Index = 83 }, // Swablu
new(30,03,2) { Species = 479, Ability = A4, Moves = new(437, 399, 310, 084), Index = 83, Form = 5 }, // Rotom-5
new(30,03,2) { Species = 767, Ability = A4, Moves = new(522, 057, 111, 028), Index = 83 }, // Wimpod
new(40,05,3) { Species = 573, Ability = A4, Moves = new(350, 541, 331, 441), Index = 83 }, // Cinccino
new(40,05,3) { Species = 334, Ability = A4, Moves = new(583, 784, 083, 058), Index = 83 }, // Altaria
new(40,05,3) { Species = 479, Ability = A4, Moves = new(437, 399, 506, 351), Index = 83, Form = 5 }, // Rotom-5
new(40,05,3) { Species = 767, Ability = A4, Moves = new(522, 057, 372, 028), Index = 83 }, // Wimpod
new(50,08,4) { Species = 573, Ability = A4, Moves = new(350, 541, 331, 086), Index = 83 }, // Cinccino
new(50,08,4) { Species = 334, Ability = A4, Moves = new(585, 784, 083, 058), Index = 83 }, // Altaria
new(50,08,4) { Species = 479, Ability = A4, Moves = new(437, 399, 247, 085), Index = 83, Form = 5 }, // Rotom-5
new(50,08,4) { Species = 767, Ability = A4, Moves = new(522, 057, 372, 341), Index = 83 }, // Wimpod
new(60,10,5) { Species = 573, Ability = A4, Moves = new(350, 541, 331, 813), Index = 83, Shiny = Shiny.Always }, // Cinccino
new(60,10,5) { Species = 573, Ability = A4, Moves = new(350, 541, 331, 813), Index = 83 }, // Cinccino
new(60,10,5) { Species = 334, Ability = A4, Moves = new(585, 784, 542, 058), Index = 83 }, // Altaria
new(60,10,5) { Species = 479, Ability = A4, Moves = new(437, 399, 261, 085), Index = 83, Form = 5 }, // Rotom-5
new(60,10,5) { Species = 767, Ability = A4, Moves = new(806, 057, 372, 341), Index = 83 }, // Wimpod
new(17,01,1) { Species = 092, Ability = A4, Moves = new(122, 605, 474, 009), Index = 81 }, // Gastly
new(17,01,1) { Species = 607, Ability = A4, Moves = new(052, 506, 123, 109), Index = 81 }, // Litwick
new(17,01,1) { Species = 425, Ability = A4, Moves = new(310, 016, 107, 506), Index = 81 }, // Drifloon
new(30,03,2) { Species = 093, Ability = A4, Moves = new(325, 605, 474, 009), Index = 81 }, // Haunter
new(30,03,2) { Species = 607, Ability = A4, Moves = new(083, 506, 123, 261), Index = 81 }, // Litwick
new(30,03,2) { Species = 426, Ability = A4, Moves = new(668, 016, 261, 506), Index = 81 }, // Drifblim
new(40,05,3) { Species = 094, Ability = A4, Moves = new(325, 605, 474, 087), Index = 81 }, // Gengar
new(40,05,3) { Species = 607, Ability = A4, Moves = new(517, 247, 123, 094), Index = 81 }, // Litwick
new(40,05,3) { Species = 426, Ability = A4, Moves = new(668, 086, 261, 506), Index = 81 }, // Drifblim
new(50,08,4) { Species = 094, Ability = A4, Moves = new(247, 605, 482, 087), Index = 81 }, // Gengar
new(50,08,4) { Species = 609, Ability = A4, Moves = new(315, 247, 123, 094), Index = 81 }, // Chandelure
new(50,08,4) { Species = 426, Ability = A4, Moves = new(668, 086, 261, 247), Index = 81 }, // Drifblim
new(60,10,5) { Species = 094, Ability = A4, Moves = new(247, 605, 482, 261), Index = 81, CanGigantamax = true }, // Gengar
new(60,10,5) { Species = 094, Ability = A4, Moves = new(247, 605, 482, 261), Index = 81 }, // Gengar
new(60,10,5) { Species = 609, Ability = A4, Moves = new(315, 247, 399, 094), Index = 81, Shiny = Shiny.Always }, // Chandelure
new(60,10,5) { Species = 609, Ability = A4, Moves = new(315, 247, 399, 094), Index = 81 }, // Chandelure
new(60,10,5) { Species = 426, Ability = A4, Moves = new(668, 371, 261, 247), Index = 81 }, // Drifblim
new(17,01,1) { Species = 582, Ability = A4, Moves = new(419, 106, 263, 310), Index = 79 }, // Vanillite
new(17,01,1) { Species = 118, Ability = A4, Moves = new(030, 039, 352, 064), Index = 79 }, // Goldeen
new(17,01,1) { Species = 127, Ability = A4, Moves = new(458, 693, 157, 069), Index = 79 }, // Pinsir
new(17,01,1) { Species = 214, Ability = A4, Moves = new(280, 031, 089, 332), Index = 79 }, // Heracross
new(17,01,1) { Species = 290, Ability = A4, Moves = new(189, 206, 028, 010), Index = 79 }, // Nincada
new(17,01,1) { Species = 479, Ability = A4, Moves = new(403, 084, 310, 104), Index = 79, Form = 4 }, // Rotom-4
new(30,03,2) { Species = 582, Ability = A4, Moves = new(419, 430, 263, 310), Index = 79 }, // Vanillite
new(30,03,2) { Species = 118, Ability = A4, Moves = new(030, 398, 352, 064), Index = 79 }, // Goldeen
new(30,03,2) { Species = 127, Ability = A4, Moves = new(458, 675, 157, 069), Index = 79 }, // Pinsir
new(30,03,2) { Species = 214, Ability = A4, Moves = new(280, 030, 089, 332), Index = 79 }, // Heracross
new(30,03,2) { Species = 291, Ability = A4, Moves = new(232, 210, 403, 010), Index = 79 }, // Ninjask
new(30,03,2) { Species = 479, Ability = A4, Moves = new(403, 351, 310, 104), Index = 79, Form = 4 }, // Rotom-4
new(40,05,3) { Species = 583, Ability = A4, Moves = new(419, 430, 304, 310), Index = 79 }, // Vanillish
new(40,05,3) { Species = 119, Ability = A4, Moves = new(030, 224, 352, 529), Index = 79 }, // Seaking
new(40,05,3) { Species = 127, Ability = A4, Moves = new(404, 675, 157, 280), Index = 79 }, // Pinsir
new(40,05,3) { Species = 214, Ability = A4, Moves = new(280, 042, 089, 157), Index = 79 }, // Heracross
new(40,05,3) { Species = 291, Ability = A4, Moves = new(232, 210, 403, 104), Index = 79 }, // Ninjask
new(40,05,3) { Species = 479, Ability = A4, Moves = new(403, 085, 310, 399), Index = 79, Form = 4 }, // Rotom-4
new(50,08,4) { Species = 584, Ability = A4, Moves = new(573, 430, 304, 058), Index = 79 }, // Vanilluxe
new(50,08,4) { Species = 119, Ability = A4, Moves = new(030, 224, 503, 529), Index = 79 }, // Seaking
new(50,08,4) { Species = 127, Ability = A4, Moves = new(404, 675, 157, 276), Index = 79 }, // Pinsir
new(50,08,4) { Species = 214, Ability = A4, Moves = new(280, 331, 089, 157), Index = 79 }, // Heracross
new(50,08,4) { Species = 291, Ability = A4, Moves = new(232, 210, 403, 163), Index = 79 }, // Ninjask
new(50,08,4) { Species = 479, Ability = A4, Moves = new(403, 085, 506, 399), Index = 79, Form = 4 }, // Rotom-4
new(60,10,5) { Species = 584, Ability = A4, Moves = new(573, 430, 304, 059), Index = 79, Shiny = Shiny.Always }, // Vanilluxe
new(60,10,5) { Species = 119, Ability = A4, Moves = new(032, 224, 503, 529), Index = 79 }, // Seaking
new(60,10,5) { Species = 127, Ability = A4, Moves = new(404, 675, 317, 276), Index = 79 }, // Pinsir
new(60,10,5) { Species = 214, Ability = A4, Moves = new(370, 331, 089, 157), Index = 79 }, // Heracross
new(60,10,5) { Species = 291, Ability = A4, Moves = new(232, 404, 403, 163), Index = 79 }, // Ninjask
new(60,10,5) { Species = 479, Ability = A4, Moves = new(403, 085, 247, 399), Index = 79, Form = 4 }, // Rotom-4
new(17,01,1) { Species = 138, Ability = A4, Moves = new(055, 028, 205, 020), Index = 77 }, // Omanyte
new(17,01,1) { Species = 140, Ability = A4, Moves = new(453, 028, 263, 010), Index = 77 }, // Kabuto
new(17,01,1) { Species = 142, Ability = A4, Moves = new(246, 414, 044, 017), Index = 77 }, // Aerodactyl
new(30,03,2) { Species = 138, Ability = A4, Moves = new(055, 341, 246, 020), Index = 77 }, // Omanyte
new(30,03,2) { Species = 140, Ability = A4, Moves = new(453, 246, 263, 058), Index = 77 }, // Kabuto
new(30,03,2) { Species = 142, Ability = A4, Moves = new(157, 414, 242, 017), Index = 77 }, // Aerodactyl
new(40,05,3) { Species = 138, Ability = A4, Moves = new(362, 414, 246, 196), Index = 77 }, // Omanyte
new(40,05,3) { Species = 140, Ability = A4, Moves = new(362, 246, 263, 059), Index = 77 }, // Kabuto
new(40,05,3) { Species = 142, Ability = A4, Moves = new(157, 414, 422, 017), Index = 77 }, // Aerodactyl
new(50,08,4) { Species = 138, Ability = A4, Moves = new(057, 414, 246, 058), Index = 77 }, // Omanyte
new(50,08,4) { Species = 140, Ability = A4, Moves = new(710, 246, 141, 059), Index = 77 }, // Kabuto
new(50,08,4) { Species = 142, Ability = A4, Moves = new(444, 414, 422, 542), Index = 77 }, // Aerodactyl
new(60,10,5) { Species = 138, Ability = A4, Moves = new(056, 414, 246, 058), Index = 77, Shiny = Shiny.Always }, // Omanyte
new(60,10,5) { Species = 138, Ability = A4, Moves = new(056, 414, 246, 058), Index = 77 }, // Omanyte
new(60,10,5) { Species = 140, Ability = A4, Moves = new(710, 444, 141, 059), Index = 77 }, // Kabuto
new(60,10,5) { Species = 142, Ability = A4, Moves = new(444, 089, 422, 542), Index = 77 }, // Aerodactyl
new(17,01,1) { Species = 878, Ability = A4, Moves = new(523, 249, 033, 045), Index = 75 }, // Cufant
new(17,01,1) { Species = 109, Ability = A4, Moves = new(188, 372, 139, 108), Index = 75 }, // Koffing
new(17,01,1) { Species = 202, Ability = A4, Moves = new(243, 227, 068, 204), Index = 75 }, // Wobbuffet
new(17,01,1) { Species = 868, Ability = A4, Moves = new(033, 186, 577, 496), Index = 75 }, // Milcery
new(17,01,1) { Species = 004, Ability = A4, Moves = new(052, 225, 010, 108), Index = 75 }, // Charmander
new(30,03,2) { Species = 878, Ability = A4, Moves = new(523, 249, 023, 045), Index = 75 }, // Cufant
new(30,03,2) { Species = 109, Ability = A4, Moves = new(188, 372, 123, 108), Index = 75 }, // Koffing
new(30,03,2) { Species = 202, Ability = A4, Moves = new(243, 227, 068, 204), Index = 75 }, // Wobbuffet
new(30,03,2) { Species = 868, Ability = A4, Moves = new(577, 186, 263, 500), Index = 75 }, // Milcery
new(30,03,2) { Species = 005, Ability = A4, Moves = new(225, 512, 242, 053), Index = 75 }, // Charmeleon
new(40,05,3) { Species = 879, Ability = A4, Moves = new(484, 583, 070, 249), Index = 75, CanGigantamax = true }, // Copperajah
new(40,05,3) { Species = 109, Ability = A4, Moves = new(482, 372, 053, 085), Index = 75 }, // Koffing
new(40,05,3) { Species = 202, Ability = A4, Moves = new(243, 227, 068, 204), Index = 75 }, // Wobbuffet
new(40,05,3) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 213), Index = 75 }, // Milcery
new(40,05,3) { Species = 006, Ability = A4, Moves = new(337, 403, 280, 257), Index = 75, CanGigantamax = true }, // Charizard
new(50,08,4) { Species = 879, Ability = A4, Moves = new(484, 583, 070, 438), Index = 75, CanGigantamax = true }, // Copperajah
new(50,08,4) { Species = 109, Ability = A4, Moves = new(482, 399, 053, 085), Index = 75 }, // Koffing
new(50,08,4) { Species = 202, Ability = A4, Moves = new(243, 227, 068, 204), Index = 75 }, // Wobbuffet
new(50,08,4) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 75 }, // Milcery
new(50,08,4) { Species = 006, Ability = A4, Moves = new(337, 403, 411, 257), Index = 75, CanGigantamax = true }, // Charizard
new(60,10,5) { Species = 879, Ability = A4, Moves = new(484, 583, 089, 438), Index = 75, CanGigantamax = true, Shiny = Shiny.Always }, // Copperajah
new(60,10,5) { Species = 879, Ability = A4, Moves = new(484, 583, 089, 438), Index = 75, CanGigantamax = true }, // Copperajah
new(60,10,5) { Species = 109, Ability = A4, Moves = new(482, 399, 053, 087), Index = 75 }, // Koffing
new(60,10,5) { Species = 202, Ability = A4, Moves = new(243, 227, 068, 204), Index = 75 }, // Wobbuffet
new(60,10,5) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 75 }, // Milcery
new(60,10,5) { Species = 006, Ability = A4, Moves = new(406, 403, 411, 257), Index = 75, CanGigantamax = true }, // Charizard
new(17,01,1) { Species = 852, Ability = A4, Moves = new(371, 249, 362, 364), Index = 73 }, // Clobbopus
new(17,01,1) { Species = 223, Ability = A4, Moves = new(055, 062, 060, 129), Index = 73 }, // Remoraid
new(17,01,1) { Species = 686, Ability = A4, Moves = new(371, 060, 035, 095), Index = 73 }, // Inkay
new(30,03,2) { Species = 852, Ability = A4, Moves = new(371, 066, 362, 364), Index = 73 }, // Clobbopus
new(30,03,2) { Species = 223, Ability = A4, Moves = new(061, 062, 060, 129), Index = 73 }, // Remoraid
new(30,03,2) { Species = 686, Ability = A4, Moves = new(400, 060, 035, 095), Index = 73 }, // Inkay
new(40,05,3) { Species = 853, Ability = A4, Moves = new(693, 276, 190, 034), Index = 73 }, // Grapploct
new(40,05,3) { Species = 224, Ability = A4, Moves = new(503, 058, 086, 129), Index = 73 }, // Octillery
new(40,05,3) { Species = 687, Ability = A4, Moves = new(492, 060, 035, 095), Index = 73 }, // Malamar
new(50,08,4) { Species = 853, Ability = A4, Moves = new(576, 276, 008, 034), Index = 73 }, // Grapploct
new(50,08,4) { Species = 224, Ability = A4, Moves = new(056, 058, 086, 129), Index = 73 }, // Octillery
new(50,08,4) { Species = 687, Ability = A4, Moves = new(492, 427, 163, 085), Index = 73 }, // Malamar
new(60,10,5) { Species = 853, Ability = A4, Moves = new(576, 276, 008, 707), Index = 73, Shiny = Shiny.Always }, // Grapploct
new(60,10,5) { Species = 853, Ability = A4, Moves = new(576, 276, 008, 707), Index = 73 }, // Grapploct
new(60,10,5) { Species = 224, Ability = A4, Moves = new(056, 058, 086, 053), Index = 73 }, // Octillery
new(60,10,5) { Species = 687, Ability = A4, Moves = new(492, 094, 157, 085), Index = 73 }, // Malamar
new(17,01,1) { Species = 002, Ability = A4, Moves = new(075, 077, 033, 079), Index = 71 }, // Ivysaur
new(17,01,1) { Species = 060, Ability = A4, Moves = new(055, 095, 001, 341), Index = 71 }, // Poliwag
new(17,01,1) { Species = 453, Ability = A4, Moves = new(040, 279, 189, 372), Index = 71 }, // Croagunk
new(17,01,1) { Species = 535, Ability = A4, Moves = new(497, 341, 045, 051), Index = 71 }, // Tympole
new(30,03,2) { Species = 002, Ability = A4, Moves = new(402, 077, 033, 036), Index = 71 }, // Ivysaur
new(30,03,2) { Species = 061, Ability = A4, Moves = new(061, 095, 001, 341), Index = 71 }, // Poliwhirl
new(30,03,2) { Species = 453, Ability = A4, Moves = new(474, 279, 189, 372), Index = 71 }, // Croagunk
new(30,03,2) { Species = 536, Ability = A4, Moves = new(061, 341, 175, 051), Index = 71 }, // Palpitoad
new(40,05,3) { Species = 003, Ability = A4, Moves = new(402, 188, 414, 036), Index = 71 }, // Venusaur
new(40,05,3) { Species = 186, Ability = A4, Moves = new(056, 411, 034, 341), Index = 71 }, // Politoed
new(40,05,3) { Species = 453, Ability = A4, Moves = new(092, 279, 404, 372), Index = 71 }, // Croagunk
new(40,05,3) { Species = 537, Ability = A4, Moves = new(503, 341, 438, 051), Index = 71 }, // Seismitoad
new(50,08,4) { Species = 003, Ability = A4, Moves = new(438, 188, 414, 036), Index = 71 }, // Venusaur
new(50,08,4) { Species = 186, Ability = A4, Moves = new(056, 411, 034, 414), Index = 71 }, // Politoed
new(50,08,4) { Species = 453, Ability = A4, Moves = new(188, 067, 404, 372), Index = 71 }, // Croagunk
new(50,08,4) { Species = 537, Ability = A4, Moves = new(503, 341, 438, 398), Index = 71 }, // Seismitoad
new(60,10,5) { Species = 003, Ability = A4, Moves = new(438, 188, 414, 034), Index = 71, CanGigantamax = true }, // Venusaur
new(60,10,5) { Species = 003, Ability = A4, Moves = new(438, 188, 414, 034), Index = 71 }, // Venusaur
new(60,10,5) { Species = 186, Ability = A4, Moves = new(056, 311, 034, 414), Index = 71, Shiny = Shiny.Always }, // Politoed
new(60,10,5) { Species = 186, Ability = A4, Moves = new(056, 311, 034, 414), Index = 71 }, // Politoed
new(60,10,5) { Species = 453, Ability = A4, Moves = new(188, 067, 404, 247), Index = 71 }, // Croagunk
new(60,10,5) { Species = 537, Ability = A4, Moves = new(503, 089, 438, 398), Index = 71 }, // Seismitoad
new(17,01,1) { Species = 831, Ability = A4, Moves = new(029, 024, 045, 033), Index = 69 }, // Wooloo
new(30,03,2) { Species = 831, Ability = A4, Moves = new(029, 024, 528, 033), Index = 69 }, // Wooloo
new(30,03,2) { Species = 832, Ability = A4, Moves = new(036, 024, 528, 371), Index = 69 }, // Dubwool
new(40,05,3) { Species = 831, Ability = A4, Moves = new(029, 179, 528, 024), Index = 69 }, // Wooloo
new(40,05,3) { Species = 832, Ability = A4, Moves = new(036, 179, 528, 371), Index = 69 }, // Dubwool
new(50,08,4) { Species = 831, Ability = A4, Moves = new(029, 179, 528, 371), Index = 69 }, // Wooloo
new(50,08,4) { Species = 832, Ability = A4, Moves = new(036, 179, 528, 024), Index = 69 }, // Dubwool
new(60,10,5) { Species = 831, Ability = A4, Moves = new(038, 179, 086, 371), Index = 69, Shiny = Shiny.Always }, // Wooloo
new(60,10,5) { Species = 831, Ability = A4, Moves = new(038, 179, 086, 371), Index = 69 }, // Wooloo
new(60,10,5) { Species = 832, Ability = A4, Moves = new(776, 038, 086, 371), Index = 69 }, // Dubwool
new(17,01,1) { Species = 052, Ability = A4, Moves = new(006, 232, 442, 583), Index = 67, Form = 2 }, // Meowth-2
new(17,01,1) { Species = 052, Ability = A4, Moves = new(006, 583, 196, 675), Index = 67, Form = 1 }, // Meowth-1
new(17,01,1) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 67 }, // Meowth
new(17,01,1) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 67 }, // Meowth
new(30,03,2) { Species = 052, Ability = A4, Moves = new(006, 232, 442, 583), Index = 67, Form = 2 }, // Meowth-2
new(30,03,2) { Species = 052, Ability = A4, Moves = new(006, 583, 196, 675), Index = 67, Form = 1 }, // Meowth-1
new(30,03,2) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 67 }, // Meowth
new(30,03,2) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 67 }, // Meowth
new(40,05,3) { Species = 052, Ability = A4, Moves = new(006, 232, 442, 583), Index = 67, Form = 2 }, // Meowth-2
new(40,05,3) { Species = 052, Ability = A4, Moves = new(006, 583, 196, 675), Index = 67, Form = 1 }, // Meowth-1
new(40,05,3) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 67 }, // Meowth
new(40,05,3) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 67 }, // Meowth
new(50,08,4) { Species = 052, Ability = A4, Moves = new(006, 232, 442, 583), Index = 67, Form = 2 }, // Meowth-2
new(50,08,4) { Species = 052, Ability = A4, Moves = new(006, 583, 196, 675), Index = 67, Form = 1 }, // Meowth-1
new(50,08,4) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 67 }, // Meowth
new(50,08,4) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 67 }, // Meowth
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 232, 442, 583), Index = 67, Form = 2, Shiny = Shiny.Always }, // Meowth-2
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 232, 442, 583), Index = 67, Form = 2 }, // Meowth-2
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 583, 196, 675), Index = 67, Form = 1 }, // Meowth-1
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 492, 402, 247), Index = 67 }, // Meowth
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 441, 087, 231), Index = 67 }, // Meowth
new(60,10,5) { Species = 052, Ability = A4, Moves = new(006, 583, 421, 034), Index = 67, CanGigantamax = true }, // Meowth
new(17,01,1) { Species = 875, Ability = A4, Moves = new(181, 362, 033, 311), Index = 65 }, // Eiscue
new(30,03,2) { Species = 875, Ability = A4, Moves = new(196, 362, 033, 029), Index = 65 }, // Eiscue
new(40,05,3) { Species = 875, Ability = A4, Moves = new(008, 057, 263, 029), Index = 65 }, // Eiscue
new(50,08,4) { Species = 875, Ability = A4, Moves = new(333, 057, 428, 029), Index = 65 }, // Eiscue
new(60,10,5) { Species = 875, Ability = A4, Moves = new(333, 710, 442, 029), Index = 65, Shiny = Shiny.Always }, // Eiscue
new(60,10,5) { Species = 875, Ability = A4, Moves = new(333, 710, 442, 029), Index = 65 }, // Eiscue
new(17,01,1) { Species = 132, Ability = A4, Moves = new(144, 000, 000, 000), Index = 64 }, // Ditto
new(17,01,1) { Species = 821, Ability = A4, Moves = new(403, 031, 043, 681), Index = 64 }, // Rookidee
new(17,01,1) { Species = 833, Ability = A4, Moves = new(055, 033, 044, 240), Index = 64 }, // Chewtle
new(17,01,1) { Species = 824, Ability = A4, Moves = new(522, 000, 000, 000), Index = 64 }, // Blipbug
new(17,01,1) { Species = 850, Ability = A4, Moves = new(172, 044, 035, 052), Index = 64 }, // Sizzlipede
new(17,01,1) { Species = 831, Ability = A4, Moves = new(033, 024, 029, 045), Index = 64 }, // Wooloo
new(30,03,2) { Species = 132, Ability = A4, Moves = new(144, 000, 000, 000), Index = 64 }, // Ditto
new(30,03,2) { Species = 822, Ability = A4, Moves = new(403, 263, 279, 681), Index = 64 }, // Corvisquire
new(30,03,2) { Species = 833, Ability = A4, Moves = new(055, 033, 044, 029), Index = 64 }, // Chewtle
new(30,03,2) { Species = 825, Ability = A4, Moves = new(522, 263, 371, 247), Index = 64 }, // Dottler
new(30,03,2) { Species = 850, Ability = A4, Moves = new(172, 044, 035, 052), Index = 64 }, // Sizzlipede
new(30,03,2) { Species = 831, Ability = A4, Moves = new(036, 024, 029, 086), Index = 64 }, // Wooloo
new(40,05,3) { Species = 132, Ability = A4, Moves = new(144, 000, 000, 000), Index = 64 }, // Ditto
new(40,05,3) { Species = 823, Ability = A4, Moves = new(403, 442, 034, 681), Index = 64 }, // Corviknight
new(40,05,3) { Species = 834, Ability = A4, Moves = new(157, 534, 317, 055), Index = 64 }, // Drednaw
new(40,05,3) { Species = 826, Ability = A4, Moves = new(405, 277, 371, 247), Index = 64 }, // Orbeetle
new(40,05,3) { Species = 851, Ability = A4, Moves = new(424, 404, 422, 044), Index = 64 }, // Centiskorch
new(40,05,3) { Species = 832, Ability = A4, Moves = new(036, 024, 428, 086), Index = 64 }, // Dubwool
new(50,08,4) { Species = 132, Ability = A4, Moves = new(144, 000, 000, 000), Index = 64 }, // Ditto
new(50,08,4) { Species = 823, Ability = A4, Moves = new(413, 442, 034, 681), Index = 64 }, // Corviknight
new(50,08,4) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 64 }, // Drednaw
new(50,08,4) { Species = 826, Ability = A4, Moves = new(405, 277, 776, 247), Index = 64 }, // Orbeetle
new(50,08,4) { Species = 851, Ability = A4, Moves = new(680, 404, 422, 044), Index = 64 }, // Centiskorch
new(50,08,4) { Species = 832, Ability = A4, Moves = new(038, 024, 428, 086), Index = 64 }, // Dubwool
new(60,10,5) { Species = 132, Ability = A4, Moves = new(144, 000, 000, 000), Index = 64 }, // Ditto
new(60,10,5) { Species = 823, Ability = A4, Moves = new(413, 442, 776, 372), Index = 64 }, // Corviknight
new(60,10,5) { Species = 834, Ability = A4, Moves = new(157, 710, 317, 334), Index = 64 }, // Drednaw
new(60,10,5) { Species = 826, Ability = A4, Moves = new(405, 277, 776, 412), Index = 64 }, // Orbeetle
new(60,10,5) { Species = 851, Ability = A4, Moves = new(680, 679, 422, 044), Index = 64 }, // Centiskorch
new(60,10,5) { Species = 832, Ability = A4, Moves = new(038, 776, 428, 086), Index = 64 }, // Dubwool
new(17,01,1) { Species = 183, Ability = A4, Moves = new(061, 204, 111, 205), Index = 63 }, // Marill
new(17,01,1) { Species = 427, Ability = A4, Moves = new(098, 608, 150, 111), Index = 63 }, // Buneary
new(17,01,1) { Species = 659, Ability = A4, Moves = new(098, 189, 280, 341), Index = 63 }, // Bunnelby
new(30,03,2) { Species = 184, Ability = A4, Moves = new(401, 583, 280, 205), Index = 63 }, // Azumarill
new(30,03,2) { Species = 428, Ability = A4, Moves = new(024, 204, 029, 111), Index = 63 }, // Lopunny
new(30,03,2) { Species = 660, Ability = A4, Moves = new(098, 523, 280, 341), Index = 63 }, // Diggersby
new(40,05,3) { Species = 184, Ability = A4, Moves = new(056, 583, 280, 205), Index = 63 }, // Azumarill
new(40,05,3) { Species = 428, Ability = A4, Moves = new(024, 204, 029, 129), Index = 63 }, // Lopunny
new(40,05,3) { Species = 660, Ability = A4, Moves = new(005, 523, 280, 036), Index = 63 }, // Diggersby
new(50,08,4) { Species = 184, Ability = A4, Moves = new(710, 583, 276, 205), Index = 63 }, // Azumarill
new(50,08,4) { Species = 428, Ability = A4, Moves = new(024, 583, 025, 129), Index = 63 }, // Lopunny
new(50,08,4) { Species = 660, Ability = A4, Moves = new(005, 089, 280, 162), Index = 63 }, // Diggersby
new(60,10,5) { Species = 184, Ability = A4, Moves = new(710, 583, 276, 523), Index = 63 }, // Azumarill
new(60,10,5) { Species = 184, Ability = A4, Moves = new(710, 583, 276, 523), Index = 63, Shiny = Shiny.Always }, // Azumarill
new(60,10,5) { Species = 428, Ability = A4, Moves = new(136, 583, 025, 693), Index = 63 }, // Lopunny
new(60,10,5) { Species = 660, Ability = A4, Moves = new(416, 089, 359, 162), Index = 63 }, // Diggersby
//new(60,10,5) { Species = 815, Ability = A2, Moves = new(780, 442, 279, 555), Index = 63, CanGigantamax = true }, // Cinderace
//new(17,01,1) { Species = 129, Ability = A4, Moves = new(150, 000, 000, 000), Index = 62 }, // Magikarp
//new(30,03,2) { Species = 129, Ability = A4, Moves = new(150, 000, 000, 000), Index = 62 }, // Magikarp
//new(40,05,3) { Species = 129, Ability = A4, Moves = new(150, 000, 000, 000), Index = 62 }, // Magikarp
//new(50,08,4) { Species = 129, Ability = A4, Moves = new(150, 000, 000, 000), Index = 62 }, // Magikarp
//new(60,10,5) { Species = 129, Ability = A4, Moves = new(150, 000, 000, 000), Index = 62 }, // Magikarp
new(17,01,1) { Species = 043, Ability = A4, Moves = new(331, 236, 051, 074), Index = 60 }, // Oddish
new(17,01,1) { Species = 420, Ability = A4, Moves = new(234, 572, 670, 033), Index = 60 }, // Cherubi
new(17,01,1) { Species = 549, Ability = A4, Moves = new(412, 298, 345, 263), Index = 60 }, // Lilligant
new(17,01,1) { Species = 753, Ability = A4, Moves = new(210, 074, 075, 275), Index = 60 }, // Fomantis
new(17,01,1) { Species = 764, Ability = A4, Moves = new(345, 579, 035, 074), Index = 60 }, // Comfey
new(30,03,2) { Species = 045, Ability = A4, Moves = new(572, 236, 051, 496), Index = 60 }, // Vileplume
new(30,03,2) { Species = 182, Ability = A4, Moves = new(572, 483, 074, 605), Index = 60 }, // Bellossom
new(30,03,2) { Species = 421, Ability = A4, Moves = new(579, 345, 670, 033), Index = 60 }, // Cherrim
new(30,03,2) { Species = 549, Ability = A4, Moves = new(412, 298, 345, 263), Index = 60 }, // Lilligant
new(30,03,2) { Species = 753, Ability = A4, Moves = new(210, 163, 075, 230), Index = 60 }, // Fomantis
new(30,03,2) { Species = 764, Ability = A4, Moves = new(345, 579, 035, 583), Index = 60 }, // Comfey
new(40,05,3) { Species = 045, Ability = A4, Moves = new(572, 585, 051, 496), Index = 60 }, // Vileplume
new(40,05,3) { Species = 182, Ability = A4, Moves = new(572, 483, 077, 605), Index = 60 }, // Bellossom
new(40,05,3) { Species = 421, Ability = A4, Moves = new(579, 345, 583, 036), Index = 60 }, // Cherrim
new(40,05,3) { Species = 549, Ability = A4, Moves = new(572, 298, 345, 483), Index = 60 }, // Lilligant
new(40,05,3) { Species = 754, Ability = A4, Moves = new(210, 572, 400, 530), Index = 60 }, // Lurantis
new(40,05,3) { Species = 764, Ability = A4, Moves = new(572, 579, 035, 583), Index = 60 }, // Comfey
new(50,08,4) { Species = 045, Ability = A4, Moves = new(572, 585, 092, 496), Index = 60 }, // Vileplume
new(50,08,4) { Species = 182, Ability = A4, Moves = new(080, 483, 051, 605), Index = 60 }, // Bellossom
new(50,08,4) { Species = 421, Ability = A4, Moves = new(579, 572, 583, 676), Index = 60 }, // Cherrim
new(50,08,4) { Species = 549, Ability = A4, Moves = new(572, 298, 241, 676), Index = 60 }, // Lilligant
new(50,08,4) { Species = 754, Ability = A4, Moves = new(404, 572, 400, 530), Index = 60 }, // Lurantis
new(50,08,4) { Species = 764, Ability = A4, Moves = new(572, 579, 035, 583), Index = 60 }, // Comfey
new(60,10,5) { Species = 045, Ability = A4, Moves = new(572, 585, 092, 034), Index = 60 }, // Vileplume
new(60,10,5) { Species = 549, Ability = A4, Moves = new(080, 298, 241, 676), Index = 60, Shiny = Shiny.Always }, // Lilligant
new(60,10,5) { Species = 421, Ability = A4, Moves = new(579, 572, 605, 676), Index = 60 }, // Cherrim
new(60,10,5) { Species = 549, Ability = A4, Moves = new(080, 298, 241, 676), Index = 60 }, // Lilligant
new(60,10,5) { Species = 754, Ability = A4, Moves = new(404, 572, 398, 530), Index = 60 }, // Lurantis
new(60,10,5) { Species = 764, Ability = A4, Moves = new(572, 579, 447, 583), Index = 60 }, // Comfey
new(17,01,1) { Species = 856, Ability = A4, Moves = new(312, 093, 574, 595), Index = 59 }, // Hatenna
new(17,01,1) { Species = 280, Ability = A4, Moves = new(574, 093, 104, 045), Index = 59 }, // Ralts
new(17,01,1) { Species = 109, Ability = A4, Moves = new(499, 053, 124, 372), Index = 59 }, // Koffing
new(17,01,1) { Species = 821, Ability = A4, Moves = new(403, 031, 043, 681), Index = 59 }, // Rookidee
new(17,01,1) { Species = 627, Ability = A4, Moves = new(043, 276, 017, 064), Index = 59 }, // Rufflet
new(17,01,1) { Species = 845, Ability = A4, Moves = new(055, 254, 064, 562), Index = 59 }, // Cramorant
new(30,03,2) { Species = 856, Ability = A4, Moves = new(605, 060, 574, 595), Index = 59 }, // Hatenna
new(30,03,2) { Species = 281, Ability = A4, Moves = new(574, 060, 104, 085), Index = 59 }, // Kirlia
new(30,03,2) { Species = 109, Ability = A4, Moves = new(499, 053, 482, 372), Index = 59 }, // Koffing
new(30,03,2) { Species = 822, Ability = A4, Moves = new(403, 263, 279, 681), Index = 59 }, // Corvisquire
new(30,03,2) { Species = 627, Ability = A4, Moves = new(184, 276, 017, 157), Index = 59 }, // Rufflet
new(30,03,2) { Species = 845, Ability = A4, Moves = new(055, 058, 064, 562), Index = 59 }, // Cramorant
new(40,05,3) { Species = 857, Ability = A4, Moves = new(605, 060, 595, 574), Index = 59, CanGigantamax = true }, // Hattrem
new(40,05,3) { Species = 282, Ability = A4, Moves = new(585, 060, 595, 085), Index = 59 }, // Gardevoir
new(40,05,3) { Species = 110, Ability = A4, Moves = new(790, 053, 482, 372), Index = 59, Form = 1 }, // Weezing-1
new(40,05,3) { Species = 823, Ability = A4, Moves = new(403, 442, 034, 681), Index = 59, CanGigantamax = true }, // Corviknight
new(40,05,3) { Species = 628, Ability = A4, Moves = new(403, 276, 163, 157), Index = 59 }, // Braviary
new(40,05,3) { Species = 845, Ability = A4, Moves = new(503, 058, 403, 065), Index = 59 }, // Cramorant
new(50,08,4) { Species = 858, Ability = A4, Moves = new(605, 094, 595, 247), Index = 59, CanGigantamax = true }, // Hatterene
new(50,08,4) { Species = 282, Ability = A4, Moves = new(585, 094, 595, 085), Index = 59 }, // Gardevoir
new(50,08,4) { Species = 110, Ability = A4, Moves = new(790, 126, 482, 372), Index = 59, Form = 1 }, // Weezing-1
new(50,08,4) { Species = 823, Ability = A4, Moves = new(413, 442, 034, 681), Index = 59, CanGigantamax = true }, // Corviknight
new(50,08,4) { Species = 628, Ability = A4, Moves = new(403, 276, 442, 157), Index = 59 }, // Braviary
new(50,08,4) { Species = 845, Ability = A4, Moves = new(056, 058, 403, 065), Index = 59 }, // Cramorant
new(60,10,5) { Species = 858, Ability = A4, Moves = new(605, 094, 438, 247), Index = 59, CanGigantamax = true }, // Hatterene
new(60,10,5) { Species = 282, Ability = A4, Moves = new(585, 094, 261, 085), Index = 59 }, // Gardevoir
new(60,10,5) { Species = 110, Ability = A4, Moves = new(790, 126, 482, 399), Index = 59, Form = 1 }, // Weezing-1
new(60,10,5) { Species = 823, Ability = A4, Moves = new(413, 442, 776, 372), Index = 59, CanGigantamax = true }, // Corviknight
new(60,10,5) { Species = 628, Ability = A4, Moves = new(413, 370, 442, 157), Index = 59 }, // Braviary
new(60,10,5) { Species = 845, Ability = A4, Moves = new(056, 058, 403, 057), Index = 59 }, // Cramorant
new(17,01,1) { Species = 067, Ability = A4, Moves = new(279, 009, 490, 067), Index = 58 }, // Machoke
new(17,01,1) { Species = 447, Ability = A4, Moves = new(280, 098, 317, 523), Index = 58 }, // Riolu
new(17,01,1) { Species = 870, Ability = A4, Moves = new(442, 029, 249, 157), Index = 58 }, // Falinks
new(17,01,1) { Species = 825, Ability = A4, Moves = new(522, 263, 371, 247), Index = 58 }, // Dottler
new(17,01,1) { Species = 577, Ability = A4, Moves = new(060, 086, 360, 283), Index = 58 }, // Solosis
new(17,01,1) { Species = 574, Ability = A4, Moves = new(060, 086, 412, 157), Index = 58 }, // Gothita
new(30,03,2) { Species = 068, Ability = A4, Moves = new(279, 009, 233, 372), Index = 58, CanGigantamax = true }, // Machamp
new(30,03,2) { Species = 447, Ability = A4, Moves = new(280, 232, 317, 523), Index = 58 }, // Riolu
new(30,03,2) { Species = 870, Ability = A4, Moves = new(442, 029, 179, 157), Index = 58 }, // Falinks
new(30,03,2) { Species = 826, Ability = A4, Moves = new(405, 277, 371, 109), Index = 58, CanGigantamax = true }, // Orbeetle
new(30,03,2) { Species = 577, Ability = A4, Moves = new(473, 086, 360, 283), Index = 58 }, // Solosis
new(30,03,2) { Species = 574, Ability = A4, Moves = new(473, 086, 412, 157), Index = 58 }, // Gothita
new(40,05,3) { Species = 068, Ability = A4, Moves = new(530, 009, 233, 372), Index = 58, CanGigantamax = true }, // Machamp
new(40,05,3) { Species = 448, Ability = A4, Moves = new(612, 232, 444, 089), Index = 58 }, // Lucario
new(40,05,3) { Species = 870, Ability = A4, Moves = new(442, 029, 179, 317), Index = 58 }, // Falinks
new(40,05,3) { Species = 826, Ability = A4, Moves = new(405, 277, 371, 247), Index = 58, CanGigantamax = true }, // Orbeetle
new(40,05,3) { Species = 578, Ability = A4, Moves = new(094, 086, 360, 247), Index = 58 }, // Duosion
new(40,05,3) { Species = 575, Ability = A4, Moves = new(094, 085, 412, 157), Index = 58 }, // Gothorita
new(50,08,4) { Species = 068, Ability = A4, Moves = new(223, 009, 370, 372), Index = 58, CanGigantamax = true }, // Machamp
new(50,08,4) { Species = 448, Ability = A4, Moves = new(612, 309, 444, 089), Index = 58 }, // Lucario
new(50,08,4) { Species = 870, Ability = A4, Moves = new(442, 224, 179, 317), Index = 58 }, // Falinks
new(50,08,4) { Species = 826, Ability = A4, Moves = new(405, 277, 776, 247), Index = 58, CanGigantamax = true }, // Orbeetle
new(50,08,4) { Species = 579, Ability = A4, Moves = new(094, 009, 411, 247), Index = 58 }, // Reuniclus
new(50,08,4) { Species = 576, Ability = A4, Moves = new(094, 085, 412, 322), Index = 58 }, // Gothitelle
new(60,10,5) { Species = 025, Ability = A4, Moves = new(804, 435, 057, 574), Index = 58, CanGigantamax = true, Shiny = Shiny.Always }, // Pikachu
new(60,10,5) { Species = 025, Ability = A4, Moves = new(344, 280, 583, 231), Index = 58, CanGigantamax = true, Shiny = Shiny.Always }, // Pikachu
new(60,10,5) { Species = 025, Ability = A4, Moves = new(804, 435, 057, 574), Index = 58, CanGigantamax = true }, // Pikachu
new(60,10,5) { Species = 025, Ability = A4, Moves = new(344, 280, 583, 231), Index = 58, CanGigantamax = true }, // Pikachu
new(17,01,1) { Species = 868, Ability = A4, Moves = new(033, 186, 577, 496), Index = 56, CanGigantamax = true }, // Milcery
new(30,03,2) { Species = 868, Ability = A4, Moves = new(577, 186, 263, 500), Index = 56, CanGigantamax = true }, // Milcery
new(40,05,3) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 213), Index = 56, CanGigantamax = true }, // Milcery
new(50,08,4) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 56, CanGigantamax = true }, // Milcery
new(60,10,5) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 56, CanGigantamax = true, Shiny = Shiny.Always }, // Milcery
new(60,10,5) { Species = 868, Ability = A4, Moves = new(577, 605, 496, 500), Index = 56, CanGigantamax = true }, // Milcery
new(17,01,1) { Species = 845, Ability = A4, Moves = new(057, 056, 503, 000), Index = 54 }, // Cramorant
new(17,01,1) { Species = 330, Ability = A4, Moves = new(225, 129, 693, 048), Index = 54 }, // Flygon
new(17,01,1) { Species = 623, Ability = A4, Moves = new(089, 157, 707, 009), Index = 54 }, // Golurk
new(17,01,1) { Species = 195, Ability = A4, Moves = new(055, 157, 281, 034), Index = 54 }, // Quagsire
new(17,01,1) { Species = 876, Ability = A4, Moves = new(574, 129, 304, 000), Index = 54, Form = 1 }, // Indeedee-1
new(30,03,2) { Species = 845, Ability = A4, Moves = new(057, 056, 503, 000), Index = 54 }, // Cramorant
new(30,03,2) { Species = 330, Ability = A4, Moves = new(225, 129, 693, 048), Index = 54 }, // Flygon
new(30,03,2) { Species = 623, Ability = A4, Moves = new(089, 157, 707, 009), Index = 54 }, // Golurk
new(30,03,2) { Species = 195, Ability = A4, Moves = new(055, 157, 281, 034), Index = 54 }, // Quagsire
new(30,03,2) { Species = 876, Ability = A4, Moves = new(574, 129, 304, 000), Index = 54, Form = 1 }, // Indeedee-1
new(40,05,3) { Species = 845, Ability = A4, Moves = new(057, 056, 503, 000), Index = 54 }, // Cramorant
new(40,05,3) { Species = 330, Ability = A4, Moves = new(225, 129, 693, 586), Index = 54 }, // Flygon
new(40,05,3) { Species = 623, Ability = A4, Moves = new(089, 157, 523, 009), Index = 54 }, // Golurk
new(40,05,3) { Species = 195, Ability = A4, Moves = new(330, 157, 281, 034), Index = 54 }, // Quagsire
new(40,05,3) { Species = 876, Ability = A4, Moves = new(574, 129, 304, 000), Index = 54, Form = 1 }, // Indeedee-1
new(50,08,4) { Species = 845, Ability = A4, Moves = new(057, 056, 503, 000), Index = 54 }, // Cramorant
new(50,08,4) { Species = 330, Ability = A4, Moves = new(225, 129, 693, 586), Index = 54 }, // Flygon
new(50,08,4) { Species = 623, Ability = A4, Moves = new(089, 157, 523, 009), Index = 54 }, // Golurk
new(50,08,4) { Species = 195, Ability = A4, Moves = new(330, 157, 281, 034), Index = 54 }, // Quagsire
new(50,08,4) { Species = 876, Ability = A4, Moves = new(574, 129, 304, 000), Index = 54, Form = 1 }, // Indeedee-1
new(60,10,5) { Species = 845, Ability = A4, Moves = new(057, 056, 503, 000), Index = 54 }, // Cramorant
new(60,10,5) { Species = 845, Ability = A4, Moves = new(057, 056, 503, 000), Index = 54, Shiny = Shiny.Always }, // Cramorant
new(60,10,5) { Species = 330, Ability = A4, Moves = new(225, 129, 693, 586), Index = 54 }, // Flygon
new(60,10,5) { Species = 623, Ability = A4, Moves = new(089, 157, 523, 009), Index = 54 }, // Golurk
new(60,10,5) { Species = 195, Ability = A4, Moves = new(330, 157, 281, 034), Index = 54 }, // Quagsire
new(60,10,5) { Species = 876, Ability = A4, Moves = new(574, 129, 304, 000), Index = 54, Form = 1 }, // Indeedee-1
new(17,01,1) { Species = 067, Ability = A4, Moves = new(279, 009, 490, 067), Index = 53 }, // Machoke
new(17,01,1) { Species = 447, Ability = A4, Moves = new(280, 098, 317, 523), Index = 53 }, // Riolu
new(17,01,1) { Species = 870, Ability = A4, Moves = new(442, 029, 249, 157), Index = 53 }, // Falinks
new(17,01,1) { Species = 825, Ability = A4, Moves = new(522, 263, 371, 247), Index = 53 }, // Dottler
new(17,01,1) { Species = 577, Ability = A4, Moves = new(060, 086, 360, 283), Index = 53 }, // Solosis
new(17,01,1) { Species = 574, Ability = A4, Moves = new(060, 086, 412, 157), Index = 53 }, // Gothita
new(30,03,2) { Species = 068, Ability = A4, Moves = new(279, 009, 233, 372), Index = 53, CanGigantamax = true }, // Machamp
new(30,03,2) { Species = 447, Ability = A4, Moves = new(280, 232, 317, 523), Index = 53 }, // Riolu
new(30,03,2) { Species = 870, Ability = A4, Moves = new(442, 029, 179, 157), Index = 53 }, // Falinks
new(30,03,2) { Species = 826, Ability = A4, Moves = new(405, 277, 371, 109), Index = 53, CanGigantamax = true }, // Orbeetle
new(30,03,2) { Species = 577, Ability = A4, Moves = new(473, 086, 360, 283), Index = 53 }, // Solosis
new(30,03,2) { Species = 574, Ability = A4, Moves = new(473, 086, 412, 157), Index = 53 }, // Gothita
new(40,05,3) { Species = 068, Ability = A4, Moves = new(530, 009, 233, 372), Index = 53, CanGigantamax = true }, // Machamp
new(40,05,3) { Species = 448, Ability = A4, Moves = new(612, 232, 444, 089), Index = 53 }, // Lucario
new(40,05,3) { Species = 870, Ability = A4, Moves = new(442, 029, 179, 317), Index = 53 }, // Falinks
new(40,05,3) { Species = 826, Ability = A4, Moves = new(405, 277, 371, 247), Index = 53, CanGigantamax = true }, // Orbeetle
new(40,05,3) { Species = 578, Ability = A4, Moves = new(094, 086, 360, 247), Index = 53 }, // Duosion
new(40,05,3) { Species = 575, Ability = A4, Moves = new(094, 085, 412, 157), Index = 53 }, // Gothorita
new(50,08,4) { Species = 068, Ability = A4, Moves = new(223, 009, 370, 372), Index = 53, CanGigantamax = true }, // Machamp
new(50,08,4) { Species = 448, Ability = A4, Moves = new(612, 309, 444, 089), Index = 53 }, // Lucario
new(50,08,4) { Species = 870, Ability = A4, Moves = new(442, 224, 179, 317), Index = 53 }, // Falinks
new(50,08,4) { Species = 826, Ability = A4, Moves = new(405, 277, 776, 247), Index = 53, CanGigantamax = true }, // Orbeetle
new(50,08,4) { Species = 579, Ability = A4, Moves = new(094, 009, 411, 247), Index = 53 }, // Reuniclus
new(50,08,4) { Species = 576, Ability = A4, Moves = new(094, 085, 412, 322), Index = 53 }, // Gothitelle
new(60,10,5) { Species = 068, Ability = A4, Moves = new(223, 009, 523, 372), Index = 53, CanGigantamax = true }, // Machamp
new(60,10,5) { Species = 448, Ability = A4, Moves = new(370, 309, 444, 089), Index = 53 }, // Lucario
new(60,10,5) { Species = 870, Ability = A4, Moves = new(442, 224, 370, 317), Index = 53 }, // Falinks
new(60,10,5) { Species = 826, Ability = A4, Moves = new(405, 277, 776, 412), Index = 53, CanGigantamax = true }, // Orbeetle
new(60,10,5) { Species = 579, Ability = A4, Moves = new(094, 087, 411, 247), Index = 53 }, // Reuniclus
new(60,10,5) { Species = 576, Ability = A4, Moves = new(094, 085, 412, 322), Index = 53 }, // Gothitelle
new(17,01,1) { Species = 128, Ability = A4, Moves = new(033, 157, 030, 371), Index = 51 }, // Tauros
new(17,01,1) { Species = 626, Ability = A4, Moves = new(033, 030, 031, 523), Index = 51 }, // Bouffalant
new(17,01,1) { Species = 241, Ability = A4, Moves = new(707, 033, 023, 205), Index = 51 }, // Miltank
new(30,03,2) { Species = 128, Ability = A4, Moves = new(033, 157, 030, 370), Index = 51 }, // Tauros
new(30,03,2) { Species = 626, Ability = A4, Moves = new(279, 030, 675, 523), Index = 51 }, // Bouffalant
new(30,03,2) { Species = 241, Ability = A4, Moves = new(707, 428, 023, 205), Index = 51 }, // Miltank
new(40,05,3) { Species = 128, Ability = A4, Moves = new(036, 157, 030, 370), Index = 51 }, // Tauros
new(40,05,3) { Species = 626, Ability = A4, Moves = new(279, 543, 675, 523), Index = 51 }, // Bouffalant
new(40,05,3) { Species = 241, Ability = A4, Moves = new(707, 428, 034, 205), Index = 51 }, // Miltank
new(50,08,4) { Species = 128, Ability = A4, Moves = new(034, 157, 030, 370), Index = 51 }, // Tauros
new(50,08,4) { Species = 626, Ability = A4, Moves = new(224, 543, 675, 523), Index = 51 }, // Bouffalant
new(50,08,4) { Species = 241, Ability = A4, Moves = new(707, 428, 034, 583), Index = 51 }, // Miltank
new(60,10,5) { Species = 128, Ability = A4, Moves = new(034, 157, 372, 370), Index = 51 }, // Tauros
new(60,10,5) { Species = 128, Ability = A4, Moves = new(034, 157, 372, 370), Index = 51, Shiny = Shiny.Always }, // Tauros
new(60,10,5) { Species = 626, Ability = A4, Moves = new(224, 543, 675, 089), Index = 51 }, // Bouffalant
new(60,10,5) { Species = 241, Ability = A4, Moves = new(667, 428, 034, 583), Index = 51 }, // Miltank
new(17,01,1) { Species = 420, Ability = A4, Moves = new(033, 572, 074, 670), Index = 49 }, // Cherubi
new(17,01,1) { Species = 590, Ability = A4, Moves = new(078, 492, 310, 412), Index = 49 }, // Foongus
new(17,01,1) { Species = 755, Ability = A4, Moves = new(402, 109, 605, 310), Index = 49 }, // Morelull
new(17,01,1) { Species = 819, Ability = A4, Moves = new(747, 231, 371, 033), Index = 49 }, // Skwovet
new(30,03,2) { Species = 420, Ability = A4, Moves = new(033, 572, 074, 402), Index = 49 }, // Cherubi
new(30,03,2) { Species = 590, Ability = A4, Moves = new(078, 492, 310, 412), Index = 49 }, // Foongus
new(30,03,2) { Species = 756, Ability = A4, Moves = new(402, 109, 605, 310), Index = 49 }, // Shiinotic
new(30,03,2) { Species = 819, Ability = A4, Moves = new(747, 231, 371, 033), Index = 49 }, // Skwovet
new(30,03,2) { Species = 820, Ability = A4, Moves = new(747, 231, 371, 034), Index = 49 }, // Greedent
new(40,05,3) { Species = 420, Ability = A4, Moves = new(311, 572, 074, 402), Index = 49 }, // Cherubi
new(40,05,3) { Species = 591, Ability = A4, Moves = new(078, 492, 092, 412), Index = 49 }, // Amoonguss
new(40,05,3) { Species = 756, Ability = A4, Moves = new(402, 585, 605, 310), Index = 49 }, // Shiinotic
new(40,05,3) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 044), Index = 49 }, // Skwovet
new(40,05,3) { Species = 820, Ability = A4, Moves = new(747, 360, 371, 424), Index = 49 }, // Greedent
new(50,08,4) { Species = 420, Ability = A4, Moves = new(311, 572, 605, 402), Index = 49 }, // Cherubi
new(50,08,4) { Species = 591, Ability = A4, Moves = new(188, 492, 092, 412), Index = 49 }, // Amoonguss
new(50,08,4) { Species = 756, Ability = A4, Moves = new(412, 585, 605, 188), Index = 49 }, // Shiinotic
new(50,08,4) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 331), Index = 49 }, // Skwovet
new(50,08,4) { Species = 820, Ability = A4, Moves = new(747, 360, 371, 424), Index = 49 }, // Greedent
new(60,10,5) { Species = 420, Ability = A4, Moves = new(311, 572, 605, 412), Index = 49 }, // Cherubi
new(60,10,5) { Species = 820, Ability = A4, Moves = new(747, 360, 371, 089), Index = 49, Shiny = Shiny.Always }, // Greedent
new(60,10,5) { Species = 756, Ability = A4, Moves = new(147, 585, 605, 188), Index = 49 }, // Shiinotic
new(60,10,5) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 034), Index = 49 }, // Skwovet
new(60,10,5) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 034), Index = 49, Shiny = Shiny.Always }, // Skwovet
new(60,10,5) { Species = 820, Ability = A4, Moves = new(747, 360, 371, 089), Index = 49 }, // Greedent
new(17,01,1) { Species = 884, Ability = A4, Moves = new(232, 043, 468, 249), Index = 48, CanGigantamax = true }, // Duraludon
new(17,01,1) { Species = 610, Ability = A4, Moves = new(044, 163, 372, 010), Index = 48 }, // Axew
new(17,01,1) { Species = 704, Ability = A4, Moves = new(225, 352, 033, 175), Index = 48 }, // Goomy
new(17,01,1) { Species = 446, Ability = A4, Moves = new(033, 044, 122, 111), Index = 48 }, // Munchlax
new(17,01,1) { Species = 759, Ability = A4, Moves = new(693, 371, 608, 033), Index = 48 }, // Stufful
new(17,01,1) { Species = 572, Ability = A4, Moves = new(497, 204, 402, 001), Index = 48 }, // Minccino
new(30,03,2) { Species = 884, Ability = A4, Moves = new(232, 784, 468, 249), Index = 48, CanGigantamax = true }, // Duraludon
new(30,03,2) { Species = 610, Ability = A4, Moves = new(337, 163, 242, 530), Index = 48 }, // Axew
new(30,03,2) { Species = 704, Ability = A4, Moves = new(225, 352, 033, 341), Index = 48 }, // Goomy
new(30,03,2) { Species = 143, Ability = A4, Moves = new(034, 242, 118, 111), Index = 48, CanGigantamax = true }, // Snorlax
new(30,03,2) { Species = 759, Ability = A4, Moves = new(693, 371, 359, 036), Index = 48 }, // Stufful
new(30,03,2) { Species = 572, Ability = A4, Moves = new(497, 231, 402, 129), Index = 48 }, // Minccino
new(40,05,3) { Species = 884, Ability = A4, Moves = new(232, 525, 085, 249), Index = 48, CanGigantamax = true }, // Duraludon
new(40,05,3) { Species = 611, Ability = A4, Moves = new(406, 231, 242, 530), Index = 48 }, // Fraxure
new(40,05,3) { Species = 705, Ability = A4, Moves = new(406, 352, 491, 341), Index = 48 }, // Sliggoo
new(40,05,3) { Species = 143, Ability = A4, Moves = new(034, 667, 242, 281), Index = 48, CanGigantamax = true }, // Snorlax
new(40,05,3) { Species = 760, Ability = A4, Moves = new(693, 034, 359, 036), Index = 48 }, // Bewear
new(40,05,3) { Species = 573, Ability = A4, Moves = new(331, 231, 350, 129), Index = 48 }, // Cinccino
new(50,08,4) { Species = 884, Ability = A4, Moves = new(232, 406, 085, 776), Index = 48, CanGigantamax = true }, // Duraludon
new(50,08,4) { Species = 612, Ability = A4, Moves = new(406, 231, 370, 530), Index = 48 }, // Haxorus
new(50,08,4) { Species = 706, Ability = A4, Moves = new(406, 034, 491, 126), Index = 48 }, // Goodra
new(50,08,4) { Species = 143, Ability = A4, Moves = new(034, 667, 280, 523), Index = 48, CanGigantamax = true }, // Snorlax
new(50,08,4) { Species = 760, Ability = A4, Moves = new(663, 034, 359, 009), Index = 48 }, // Bewear
new(50,08,4) { Species = 573, Ability = A4, Moves = new(331, 231, 350, 304), Index = 48 }, // Cinccino
new(60,10,5) { Species = 884, Ability = A4, Moves = new(430, 406, 085, 776), Index = 48, CanGigantamax = true }, // Duraludon
new(60,10,5) { Species = 612, Ability = A4, Moves = new(200, 231, 370, 089), Index = 48 }, // Haxorus
new(60,10,5) { Species = 706, Ability = A4, Moves = new(406, 438, 482, 126), Index = 48 }, // Goodra
new(60,10,5) { Species = 143, Ability = A4, Moves = new(034, 442, 242, 428), Index = 48, CanGigantamax = true }, // Snorlax
new(60,10,5) { Species = 760, Ability = A4, Moves = new(663, 038, 276, 009), Index = 48 }, // Bewear
new(60,10,5) { Species = 573, Ability = A4, Moves = new(402, 231, 350, 304), Index = 48 }, // Cinccino
new(17,01,1) { Species = 037, Ability = A4, Moves = new(420, 196, 039, 577), Index = 46, Form = 1 }, // Vulpix-1
new(17,01,1) { Species = 124, Ability = A4, Moves = new(181, 001, 093, 122), Index = 46 }, // Jynx
new(17,01,1) { Species = 225, Ability = A4, Moves = new(217, 229, 098, 420), Index = 46 }, // Delibird
new(17,01,1) { Species = 607, Ability = A4, Moves = new(310, 052, 506, 123), Index = 46 }, // Litwick
new(17,01,1) { Species = 873, Ability = A4, Moves = new(522, 078, 181, 432), Index = 46 }, // Frosmoth
new(30,03,2) { Species = 037, Ability = A4, Moves = new(420, 058, 326, 577), Index = 46, Form = 1 }, // Vulpix-1
new(30,03,2) { Species = 124, Ability = A4, Moves = new(181, 001, 093, 313), Index = 46 }, // Jynx
new(30,03,2) { Species = 225, Ability = A4, Moves = new(217, 065, 034, 693), Index = 46 }, // Delibird
new(30,03,2) { Species = 608, Ability = A4, Moves = new(310, 261, 083, 123), Index = 46 }, // Lampent
new(30,03,2) { Species = 873, Ability = A4, Moves = new(522, 078, 062, 432), Index = 46 }, // Frosmoth
new(40,05,3) { Species = 037, Ability = A4, Moves = new(062, 058, 326, 577), Index = 46, Form = 1 }, // Vulpix-1
new(40,05,3) { Species = 124, Ability = A4, Moves = new(058, 142, 094, 247), Index = 46 }, // Jynx
new(40,05,3) { Species = 225, Ability = A4, Moves = new(217, 065, 280, 196), Index = 46 }, // Delibird
new(40,05,3) { Species = 609, Ability = A4, Moves = new(247, 261, 257, 094), Index = 46 }, // Chandelure
new(40,05,3) { Species = 873, Ability = A4, Moves = new(405, 403, 062, 432), Index = 46 }, // Frosmoth
new(50,08,4) { Species = 037, Ability = A4, Moves = new(694, 058, 326, 577), Index = 46, Form = 1 }, // Vulpix-1
new(50,08,4) { Species = 124, Ability = A4, Moves = new(058, 142, 094, 247), Index = 46 }, // Jynx
new(50,08,4) { Species = 225, Ability = A4, Moves = new(217, 059, 034, 280), Index = 46 }, // Delibird
new(50,08,4) { Species = 609, Ability = A4, Moves = new(247, 261, 315, 094), Index = 46 }, // Chandelure
new(50,08,4) { Species = 873, Ability = A4, Moves = new(405, 403, 058, 297), Index = 46 }, // Frosmoth
new(60,10,5) { Species = 037, Ability = A4, Moves = new(694, 059, 326, 577), Index = 46, Form = 1 }, // Vulpix-1
new(60,10,5) { Species = 037, Ability = A4, Moves = new(694, 059, 326, 577), Index = 46, Form = 1, Shiny = Shiny.Always }, // Vulpix-1
new(60,10,5) { Species = 124, Ability = A4, Moves = new(058, 142, 094, 247), Index = 46 }, // Jynx
new(60,10,5) { Species = 225, Ability = A4, Moves = new(217, 059, 065, 280), Index = 46 }, // Delibird
new(60,10,5) { Species = 609, Ability = A4, Moves = new(247, 412, 315, 094), Index = 46 }, // Chandelure
new(60,10,5) { Species = 873, Ability = A4, Moves = new(405, 403, 058, 542), Index = 46 }, // Frosmoth
new(17,01,1) { Species = 131, Ability = A4, Moves = new(055, 420, 045, 047), Index = 45, CanGigantamax = true }, // Lapras
new(17,01,1) { Species = 712, Ability = A4, Moves = new(181, 196, 033, 106), Index = 45 }, // Bergmite
new(17,01,1) { Species = 461, Ability = A4, Moves = new(420, 372, 232, 279), Index = 45 }, // Weavile
new(17,01,1) { Species = 850, Ability = A4, Moves = new(172, 044, 035, 052), Index = 45 }, // Sizzlipede
new(17,01,1) { Species = 776, Ability = A4, Moves = new(175, 123, 033, 052), Index = 45 }, // Turtonator
new(17,01,1) { Species = 077, Ability = A4, Moves = new(488, 045, 039, 052), Index = 45 }, // Ponyta
new(30,03,2) { Species = 131, Ability = A4, Moves = new(352, 420, 109, 047), Index = 45, CanGigantamax = true }, // Lapras
new(30,03,2) { Species = 712, Ability = A4, Moves = new(157, 423, 033, 044), Index = 45 }, // Bergmite
new(30,03,2) { Species = 461, Ability = A4, Moves = new(420, 372, 232, 279), Index = 45 }, // Weavile
new(30,03,2) { Species = 851, Ability = A4, Moves = new(172, 404, 422, 044), Index = 45, CanGigantamax = true }, // Centiskorch
new(30,03,2) { Species = 776, Ability = A4, Moves = new(406, 123, 033, 052), Index = 45 }, // Turtonator
new(30,03,2) { Species = 077, Ability = A4, Moves = new(488, 023, 583, 097), Index = 45 }, // Ponyta
new(40,05,3) { Species = 131, Ability = A4, Moves = new(352, 196, 109, 047), Index = 45, CanGigantamax = true }, // Lapras
new(40,05,3) { Species = 713, Ability = A4, Moves = new(157, 423, 036, 044), Index = 45 }, // Avalugg
new(40,05,3) { Species = 461, Ability = A4, Moves = new(420, 468, 232, 279), Index = 45 }, // Weavile
new(40,05,3) { Species = 851, Ability = A4, Moves = new(424, 404, 422, 044), Index = 45, CanGigantamax = true }, // Centiskorch
new(40,05,3) { Species = 776, Ability = A4, Moves = new(406, 776, 034, 053), Index = 45 }, // Turtonator
new(40,05,3) { Species = 078, Ability = A4, Moves = new(172, 023, 583, 224), Index = 45 }, // Rapidash
new(50,08,4) { Species = 131, Ability = A4, Moves = new(057, 196, 058, 047), Index = 45, CanGigantamax = true }, // Lapras
new(50,08,4) { Species = 713, Ability = A4, Moves = new(776, 059, 036, 044), Index = 45 }, // Avalugg
new(50,08,4) { Species = 461, Ability = A4, Moves = new(420, 468, 232, 279), Index = 45 }, // Weavile
new(50,08,4) { Species = 851, Ability = A4, Moves = new(680, 404, 422, 044), Index = 45, CanGigantamax = true }, // Centiskorch
new(50,08,4) { Species = 776, Ability = A4, Moves = new(406, 776, 504, 053), Index = 45 }, // Turtonator
new(50,08,4) { Species = 078, Ability = A4, Moves = new(517, 528, 583, 224), Index = 45 }, // Rapidash
new(60,10,5) { Species = 131, Ability = A4, Moves = new(057, 196, 058, 329), Index = 45, CanGigantamax = true }, // Lapras
new(60,10,5) { Species = 713, Ability = A4, Moves = new(776, 059, 038, 044), Index = 45 }, // Avalugg
new(60,10,5) { Species = 461, Ability = A4, Moves = new(420, 400, 232, 279), Index = 45 }, // Weavile
new(60,10,5) { Species = 851, Ability = A4, Moves = new(680, 679, 422, 044), Index = 45, CanGigantamax = true }, // Centiskorch
new(60,10,5) { Species = 776, Ability = A4, Moves = new(434, 776, 504, 053), Index = 45 }, // Turtonator
new(60,10,5) { Species = 078, Ability = A4, Moves = new(394, 528, 583, 224), Index = 45 }, // Rapidash
new(17,01,1) { Species = 420, Ability = A4, Moves = new(033, 572, 074, 670), Index = 43 }, // Cherubi
new(17,01,1) { Species = 590, Ability = A4, Moves = new(078, 492, 310, 412), Index = 43 }, // Foongus
new(17,01,1) { Species = 755, Ability = A4, Moves = new(402, 109, 605, 310), Index = 43 }, // Morelull
new(17,01,1) { Species = 819, Ability = A4, Moves = new(747, 231, 371, 033), Index = 43 }, // Skwovet
new(30,03,2) { Species = 420, Ability = A4, Moves = new(033, 572, 074, 402), Index = 43 }, // Cherubi
new(30,03,2) { Species = 590, Ability = A4, Moves = new(078, 492, 310, 412), Index = 43 }, // Foongus
new(30,03,2) { Species = 756, Ability = A4, Moves = new(402, 109, 605, 310), Index = 43 }, // Shiinotic
new(30,03,2) { Species = 819, Ability = A4, Moves = new(747, 231, 371, 033), Index = 43 }, // Skwovet
new(30,03,2) { Species = 820, Ability = A4, Moves = new(747, 231, 371, 034), Index = 43 }, // Greedent
new(40,05,3) { Species = 420, Ability = A4, Moves = new(311, 572, 074, 402), Index = 43 }, // Cherubi
new(40,05,3) { Species = 591, Ability = A4, Moves = new(078, 492, 092, 412), Index = 43 }, // Amoonguss
new(40,05,3) { Species = 756, Ability = A4, Moves = new(402, 585, 605, 310), Index = 43 }, // Shiinotic
new(40,05,3) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 044), Index = 43 }, // Skwovet
new(40,05,3) { Species = 820, Ability = A4, Moves = new(747, 360, 371, 424), Index = 43 }, // Greedent
new(50,08,4) { Species = 420, Ability = A4, Moves = new(311, 572, 605, 402), Index = 43 }, // Cherubi
new(50,08,4) { Species = 591, Ability = A4, Moves = new(188, 492, 092, 412), Index = 43 }, // Amoonguss
new(50,08,4) { Species = 756, Ability = A4, Moves = new(412, 585, 605, 188), Index = 43 }, // Shiinotic
new(50,08,4) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 331), Index = 43 }, // Skwovet
new(50,08,4) { Species = 820, Ability = A4, Moves = new(747, 360, 371, 424), Index = 43 }, // Greedent
new(60,10,5) { Species = 420, Ability = A4, Moves = new(311, 572, 605, 412), Index = 43 }, // Cherubi
new(60,10,5) { Species = 591, Ability = A4, Moves = new(147, 492, 092, 412), Index = 43 }, // Amoonguss
new(60,10,5) { Species = 756, Ability = A4, Moves = new(147, 585, 605, 188), Index = 43 }, // Shiinotic
new(60,10,5) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 034), Index = 43 }, // Skwovet
new(60,10,5) { Species = 819, Ability = A4, Moves = new(747, 360, 371, 034), Index = 43, Shiny = Shiny.Always }, // Skwovet
new(60,10,5) { Species = 820, Ability = A4, Moves = new(747, 360, 371, 089), Index = 43 }, // Greedent
new(17,01,1) { Species = 012, Ability = A4, Moves = new(081, 060, 016, 079), Index = 42, CanGigantamax = true }, // Butterfree
new(17,01,1) { Species = 213, Ability = A4, Moves = new(088, 474, 414, 522), Index = 42 }, // Shuckle
new(17,01,1) { Species = 290, Ability = A4, Moves = new(189, 206, 010, 106), Index = 42 }, // Nincada
new(17,01,1) { Species = 568, Ability = A4, Moves = new(390, 133, 491, 001), Index = 42 }, // Trubbish
new(17,01,1) { Species = 043, Ability = A4, Moves = new(078, 077, 051, 230), Index = 42 }, // Oddish
new(17,01,1) { Species = 453, Ability = A4, Moves = new(040, 269, 279, 189), Index = 42 }, // Croagunk
new(30,03,2) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 079), Index = 42, CanGigantamax = true }, // Butterfree
new(30,03,2) { Species = 213, Ability = A4, Moves = new(088, 474, 414, 522), Index = 42 }, // Shuckle
new(30,03,2) { Species = 291, Ability = A4, Moves = new(210, 206, 332, 232), Index = 42 }, // Ninjask
new(30,03,2) { Species = 568, Ability = A4, Moves = new(092, 133, 491, 036), Index = 42 }, // Trubbish
new(30,03,2) { Species = 045, Ability = A4, Moves = new(080, 585, 051, 230), Index = 42 }, // Vileplume
new(30,03,2) { Species = 453, Ability = A4, Moves = new(474, 389, 279, 189), Index = 42 }, // Croagunk
new(40,05,3) { Species = 012, Ability = A4, Moves = new(405, 060, 016, 078), Index = 42, CanGigantamax = true }, // Butterfree
new(40,05,3) { Species = 213, Ability = A4, Moves = new(157, 188, 089, 522), Index = 42 }, // Shuckle
new(40,05,3) { Species = 291, Ability = A4, Moves = new(210, 206, 332, 232), Index = 42 }, // Ninjask
new(40,05,3) { Species = 569, Ability = A4, Moves = new(188, 133, 034, 707), Index = 42, CanGigantamax = true }, // Garbodor
new(40,05,3) { Species = 045, Ability = A4, Moves = new(080, 585, 051, 230), Index = 42 }, // Vileplume
new(40,05,3) { Species = 454, Ability = A4, Moves = new(188, 389, 279, 189), Index = 42 }, // Toxicroak
new(50,08,4) { Species = 012, Ability = A4, Moves = new(405, 403, 093, 078), Index = 42, CanGigantamax = true }, // Butterfree
new(50,08,4) { Species = 213, Ability = A4, Moves = new(157, 188, 089, 564), Index = 42 }, // Shuckle
new(50,08,4) { Species = 291, Ability = A4, Moves = new(210, 163, 332, 232), Index = 42 }, // Ninjask
new(50,08,4) { Species = 569, Ability = A4, Moves = new(188, 499, 034, 707), Index = 42, CanGigantamax = true }, // Garbodor
new(50,08,4) { Species = 045, Ability = A4, Moves = new(080, 585, 051, 034), Index = 42 }, // Vileplume
new(50,08,4) { Species = 454, Ability = A4, Moves = new(188, 389, 280, 189), Index = 42 }, // Toxicroak
new(60,10,5) { Species = 012, Ability = A4, Moves = new(405, 403, 527, 078), Index = 42, CanGigantamax = true }, // Butterfree
new(60,10,5) { Species = 213, Ability = A4, Moves = new(444, 188, 089, 564), Index = 42 }, // Shuckle
new(60,10,5) { Species = 291, Ability = A4, Moves = new(404, 163, 332, 232), Index = 42 }, // Ninjask
new(60,10,5) { Species = 569, Ability = A4, Moves = new(441, 499, 034, 707), Index = 42, CanGigantamax = true }, // Garbodor
new(60,10,5) { Species = 045, Ability = A4, Moves = new(080, 585, 051, 034), Index = 42 }, // Vileplume
new(60,10,5) { Species = 454, Ability = A4, Moves = new(188, 389, 280, 523), Index = 42 }, // Toxicroak
new(17,01,1) { Species = 562, Ability = A4, Moves = new(261, 114, 310, 101), Index = 41 }, // Yamask
new(17,01,1) { Species = 778, Ability = A4, Moves = new(086, 452, 425, 010), Index = 41 }, // Mimikyu
new(17,01,1) { Species = 709, Ability = A4, Moves = new(785, 421, 261, 310), Index = 41 }, // Trevenant
new(17,01,1) { Species = 855, Ability = A4, Moves = new(597, 110, 668, 310), Index = 41 }, // Polteageist
new(30,03,2) { Species = 710, Ability = A4, Moves = new(567, 425, 310, 331), Index = 41 }, // Pumpkaboo
new(30,03,2) { Species = 563, Ability = A4, Moves = new(578, 421, 310, 261), Index = 41 }, // Cofagrigus
new(30,03,2) { Species = 778, Ability = A4, Moves = new(086, 452, 425, 608), Index = 41 }, // Mimikyu
new(30,03,2) { Species = 709, Ability = A4, Moves = new(785, 506, 261, 310), Index = 41 }, // Trevenant
new(30,03,2) { Species = 855, Ability = A4, Moves = new(597, 110, 389, 310), Index = 41 }, // Polteageist
new(40,05,3) { Species = 710, Ability = A4, Moves = new(567, 247, 310, 402), Index = 41 }, // Pumpkaboo
new(40,05,3) { Species = 563, Ability = A4, Moves = new(578, 421, 310, 261), Index = 41 }, // Cofagrigus
new(40,05,3) { Species = 778, Ability = A4, Moves = new(085, 452, 421, 608), Index = 41 }, // Mimikyu
new(40,05,3) { Species = 709, Ability = A4, Moves = new(785, 506, 261, 310), Index = 41 }, // Trevenant
new(40,05,3) { Species = 855, Ability = A4, Moves = new(597, 110, 389, 310), Index = 41 }, // Polteageist
new(50,08,4) { Species = 711, Ability = A4, Moves = new(567, 247, 585, 402), Index = 41 }, // Gourgeist
new(50,08,4) { Species = 711, Ability = A4, Moves = new(567, 247, 585, 402), Index = 41, Form = 1 }, // Gourgeist-1
new(50,08,4) { Species = 711, Ability = A4, Moves = new(567, 247, 585, 402), Index = 41, Form = 2 }, // Gourgeist-2
new(50,08,4) { Species = 711, Ability = A4, Moves = new(567, 247, 585, 402), Index = 41, Form = 3 }, // Gourgeist-3
new(50,08,4) { Species = 563, Ability = A4, Moves = new(578, 247, 399, 261), Index = 41 }, // Cofagrigus
new(50,08,4) { Species = 778, Ability = A4, Moves = new(085, 452, 261, 204), Index = 41 }, // Mimikyu
new(50,08,4) { Species = 709, Ability = A4, Moves = new(452, 506, 261, 310), Index = 41 }, // Trevenant
new(50,08,4) { Species = 855, Ability = A4, Moves = new(247, 417, 389, 310), Index = 41 }, // Polteageist
new(60,10,5) { Species = 711, Ability = A4, Moves = new(567, 247, 433, 402), Index = 41 }, // Gourgeist
new(60,10,5) { Species = 711, Ability = A4, Moves = new(567, 247, 433, 402), Index = 41, Form = 1, Shiny = Shiny.Always }, // Gourgeist-1
new(60,10,5) { Species = 711, Ability = A4, Moves = new(567, 247, 433, 402), Index = 41, Form = 2 }, // Gourgeist-2
new(60,10,5) { Species = 711, Ability = A4, Moves = new(567, 247, 433, 402), Index = 41, Form = 3, Shiny = Shiny.Always }, // Gourgeist-3
new(60,10,5) { Species = 563, Ability = A4, Moves = new(578, 247, 399, 261), Index = 41 }, // Cofagrigus
new(60,10,5) { Species = 778, Ability = A4, Moves = new(087, 452, 261, 583), Index = 41 }, // Mimikyu
new(60,10,5) { Species = 709, Ability = A4, Moves = new(452, 506, 261, 310), Index = 41 }, // Trevenant
new(60,10,5) { Species = 855, Ability = A4, Moves = new(247, 417, 389, 310), Index = 41 }, // Polteageist
new(17,01,1) { Species = 093, Ability = A4, Moves = new(371, 122, 095, 325), Index = 40 }, // Haunter
new(17,01,1) { Species = 425, Ability = A4, Moves = new(016, 506, 310, 371), Index = 40 }, // Drifloon
new(17,01,1) { Species = 355, Ability = A4, Moves = new(310, 425, 043, 506), Index = 40 }, // Duskull
new(17,01,1) { Species = 859, Ability = A4, Moves = new(372, 313, 260, 044), Index = 40 }, // Impidimp
new(17,01,1) { Species = 633, Ability = A4, Moves = new(225, 033, 399, 044), Index = 40 }, // Deino
new(17,01,1) { Species = 877, Ability = A4, Moves = new(084, 098, 681, 043), Index = 40 }, // Morpeko
new(30,03,2) { Species = 094, Ability = A4, Moves = new(371, 389, 095, 325), Index = 40, CanGigantamax = true }, // Gengar
new(30,03,2) { Species = 426, Ability = A4, Moves = new(016, 247, 310, 371), Index = 40 }, // Drifblim
new(30,03,2) { Species = 355, Ability = A4, Moves = new(310, 425, 371, 506), Index = 40 }, // Duskull
new(30,03,2) { Species = 859, Ability = A4, Moves = new(259, 389, 207, 044), Index = 40 }, // Impidimp
new(30,03,2) { Species = 633, Ability = A4, Moves = new(225, 021, 399, 029), Index = 40 }, // Deino
new(30,03,2) { Species = 877, Ability = A4, Moves = new(209, 098, 044, 043), Index = 40 }, // Morpeko
new(40,05,3) { Species = 094, Ability = A4, Moves = new(506, 389, 095, 325), Index = 40, CanGigantamax = true }, // Gengar
new(40,05,3) { Species = 426, Ability = A4, Moves = new(016, 247, 360, 371), Index = 40 }, // Drifblim
new(40,05,3) { Species = 477, Ability = A4, Moves = new(247, 009, 371, 157), Index = 40 }, // Dusknoir
new(40,05,3) { Species = 860, Ability = A4, Moves = new(417, 793, 421, 399), Index = 40 }, // Morgrem
new(40,05,3) { Species = 633, Ability = A4, Moves = new(406, 021, 399, 423), Index = 40 }, // Deino
new(40,05,3) { Species = 877, Ability = A4, Moves = new(209, 098, 044, 402), Index = 40 }, // Morpeko
new(50,08,4) { Species = 094, Ability = A4, Moves = new(247, 399, 094, 085), Index = 40, CanGigantamax = true }, // Gengar
new(50,08,4) { Species = 426, Ability = A4, Moves = new(366, 247, 360, 371), Index = 40 }, // Drifblim
new(50,08,4) { Species = 477, Ability = A4, Moves = new(247, 009, 280, 157), Index = 40 }, // Dusknoir
new(50,08,4) { Species = 861, Ability = A4, Moves = new(789, 492, 421, 399), Index = 40, CanGigantamax = true }, // Grimmsnarl
new(50,08,4) { Species = 634, Ability = A4, Moves = new(406, 304, 399, 423), Index = 40 }, // Zweilous
new(50,08,4) { Species = 877, Ability = A4, Moves = new(783, 098, 242, 402), Index = 40 }, // Morpeko
new(60,10,5) { Species = 094, Ability = A4, Moves = new(247, 399, 605, 085), Index = 40, CanGigantamax = true }, // Gengar
new(60,10,5) { Species = 426, Ability = A4, Moves = new(366, 247, 360, 693), Index = 40 }, // Drifblim
new(60,10,5) { Species = 477, Ability = A4, Moves = new(247, 009, 280, 089), Index = 40 }, // Dusknoir
new(60,10,5) { Species = 861, Ability = A4, Moves = new(789, 492, 421, 417), Index = 40, CanGigantamax = true }, // Grimmsnarl
new(60,10,5) { Species = 635, Ability = A4, Moves = new(406, 304, 399, 056), Index = 40 }, // Hydreigon
new(60,10,5) { Species = 877, Ability = A4, Moves = new(783, 037, 242, 402), Index = 40 }, // Morpeko
};
}

View file

@ -1,288 +0,0 @@
namespace PKHeX.Core;
// Dynamax Adventures
internal static partial class Encounters8Nest
{
// These are encountered as never-shiny, but forced shiny (Star) if the 1:300 (1:100 w/charm) post-adventure roll activates.
// The game does try to gate specific entries to Sword / Shield, but this restriction is ignored for online battles.
// All captures share the same met location, so there is no way to distinguish an online-play result from a local-play result.
#region Dynamax Adventures Encounters (ROM)
internal static readonly EncounterStatic8U[] DynAdv_SWSH =
{
new(002,0,65) { Ability = A2, Moves = new(520,235,076,188) }, // Ivysaur
new(005,0,65) { Ability = A2, Moves = new(519,406,203,517) }, // Charmeleon
new(008,0,65) { Ability = A2, Moves = new(518,058,396,056) }, // Wartortle
new(012,0,65) { Ability = A2, Moves = new(676,474,476,202), CanGigantamax = true }, // Butterfree
new(026,0,65) { Ability = A2, Moves = new(804,683,113,411) }, // Raichu
new(026,1,65) { Ability = A0, Moves = new(085,604,094,496) }, // Raichu-1
new(028,0,65) { Ability = A0, Moves = new(306,707,444,141) }, // Sandslash
new(028,1,65) { Ability = A0, Moves = new(419,157,280,014) }, // Sandslash-1
new(031,0,65) { Ability = A0, Moves = new(815,474,204,247) }, // Nidoqueen
new(034,0,65) { Ability = A1, Moves = new(667,007,008,009) }, // Nidoking
new(035,0,65) { Ability = A2, Moves = new(791,595,345,115) }, // Clefairy
new(737,0,65) { Ability = A0, Moves = new(081,598,209,091) }, // Charjabug
new(743,0,65) { Ability = A2, Moves = new(676,577,312,313) }, // Ribombee
new(040,0,65) { Ability = A1, Moves = new(605,496,797,186) }, // Wigglytuff
new(553,0,65) { Ability = A2, Moves = new(414,207,663,201) }, // Krookodile
new(045,0,65) { Ability = A0, Moves = new(202,580,092,676) }, // Vileplume
new(051,0,65) { Ability = A2, Moves = new(667,164,189,157) }, // Dugtrio
new(051,1,65) { Ability = A0, Moves = new(442,667,389,103) }, // Dugtrio-1
new(053,0,65) { Ability = A1, Moves = new(263,583,364,496) }, // Persian
new(053,1,65) { Ability = A0, Moves = new(372,555,364,511) }, // Persian-1
new(055,0,65) { Ability = A2, Moves = new(453,103,025,362) }, // Golduck
new(062,0,65) { Ability = A0, Moves = new(409,034,811,710) }, // Poliwrath
new(064,0,65) { Ability = A2, Moves = new(473,496,203,605) }, // Kadabra
new(067,0,65) { Ability = A1, Moves = new(223,317,371,811) }, // Machoke
new(745,0,65) { Ability = A1, Moves = new(709,444,496,336) }, // Lycanroc
new(745,1,65) { Ability = A2, Moves = new(444,280,269,242) }, // Lycanroc-1
new(082,0,65) { Ability = A2, Moves = new(486,430,393,113) }, // Magneton
new(752,0,65) { Ability = A2, Moves = new(710,494,679,398) }, // Araquanid
new(754,0,65) { Ability = A2, Moves = new(437,311,404,496) }, // Lurantis
new(093,0,65) { Ability = A2, Moves = new(506,095,138,412) }, // Haunter
new(869,0,65) { Ability = A2, Moves = new(777,605,595,345), CanGigantamax = true }, // Alcremie
new(099,0,65) { Ability = A0, Moves = new(152,469,091,276), CanGigantamax = true }, // Kingler
new(105,0,65) { Ability = A2, Moves = new(155,675,442,103) }, // Marowak
new(105,1,65) { Ability = A2, Moves = new(394,708,261,442) }, // Marowak-1
new(106,0,65) { Ability = A0, Moves = new(370,469,299,490) }, // Hitmonlee
new(107,0,65) { Ability = A1, Moves = new(612,007,009,008) }, // Hitmonchan
new(108,0,65) { Ability = A1, Moves = new(496,059,087,330) }, // Lickitung
new(110,0,65) { Ability = A1, Moves = new(499,257,188,399) }, // Weezing
new(110,1,65) { Ability = A2, Moves = new(790,499,053,269) }, // Weezing-1
new(112,0,65) { Ability = A1, Moves = new(529,479,684,184) }, // Rhydon
new(113,0,65) { Ability = A2, Moves = new(496,505,270,113) }, // Chansey
new(114,0,65) { Ability = A1, Moves = new(438,078,803,034) }, // Tangela
new(115,0,65) { Ability = A0, Moves = new(034,389,091,200) }, // Kangaskhan
new(117,0,65) { Ability = A1, Moves = new(503,406,164,496) }, // Seadra
new(119,0,65) { Ability = A1, Moves = new(127,340,398,529) }, // Seaking
new(122,0,65) { Ability = A1, Moves = new(113,115,270,094) }, // Mr. Mime
new(122,1,65) { Ability = A2, Moves = new(113,115,196,094) }, // Mr. Mime-1
new(123,0,65) { Ability = A1, Moves = new(210,098,372,017) }, // Scyther
new(124,0,65) { Ability = A2, Moves = new(577,142,058,496) }, // Jynx
new(125,0,65) { Ability = A2, Moves = new(804,527,270,496) }, // Electabuzz
new(126,0,65) { Ability = A2, Moves = new(126,807,499,496) }, // Magmar
new(756,0,65) { Ability = A2, Moves = new(668,585,240,311) }, // Shiinotic
new(128,0,65) { Ability = A1, Moves = new(263,667,370,372) }, // Tauros
new(148,0,65) { Ability = A0, Moves = new(059,784,799,087) }, // Dragonair
new(164,0,65) { Ability = A2, Moves = new(497,115,143,095) }, // Noctowl
new(171,0,65) { Ability = A0, Moves = new(352,056,085,109) }, // Lanturn
new(176,0,65) { Ability = A1, Moves = new(791,266,583,595) }, // Togetic
new(178,0,65) { Ability = A2, Moves = new(094,493,403,109) }, // Xatu
new(182,0,65) { Ability = A2, Moves = new(580,202,270,605) }, // Bellossom
new(184,0,65) { Ability = A2, Moves = new(453,583,401,340) }, // Azumarill
new(185,0,65) { Ability = A0, Moves = new(707,444,334,776) }, // Sudowoodo
new(186,0,65) { Ability = A2, Moves = new(710,496,414,270) }, // Politoed
new(195,0,65) { Ability = A2, Moves = new(411,503,092,133) }, // Quagsire
new(206,0,65) { Ability = A0, Moves = new(806,814,247,058) }, // Dunsparce
new(211,0,65) { Ability = A2, Moves = new(014,398,710,798) }, // Qwilfish
new(758,0,65) { Ability = A0, Moves = new(092,053,440,599) }, // Salazzle
new(215,0,65) { Ability = A1, Moves = new(813,808,675,555) }, // Sneasel
new(221,0,65) { Ability = A2, Moves = new(059,317,420,276) }, // Piloswine
new(760,0,65) { Ability = A1, Moves = new(038,608,371,416) }, // Bewear
new(763,0,65) { Ability = A1, Moves = new(312,688,512,207) }, // Tsareena
new(224,0,65) { Ability = A1, Moves = new(806,430,503,491) }, // Octillery
new(226,0,65) { Ability = A1, Moves = new(403,291,469,352) }, // Mantine
new(227,0,65) { Ability = A2, Moves = new(372,211,404,019) }, // Skarmory
new(237,0,65) { Ability = A0, Moves = new(529,813,280,811) }, // Hitmontop
new(241,0,65) { Ability = A1, Moves = new(025,208,086,583) }, // Miltank
new(764,0,65) { Ability = A1, Moves = new(666,577,495,412) }, // Comfey
new(264,0,65) { Ability = A0, Moves = new(163,042,608,421) }, // Linoone
new(264,1,65) { Ability = A0, Moves = new(675,555,269,164) }, // Linoone-1
new(103,0,65) { Ability = A2, Moves = new(427,076,707,805) }, // Exeggutor
new(405,0,65) { Ability = A2, Moves = new(263,113,804,604) }, // Luxray
new(279,0,65) { Ability = A1, Moves = new(814,311,469,098) }, // Pelipper
new(291,0,65) { Ability = A0, Moves = new(210,164,189,806) }, // Ninjask
new(295,0,65) { Ability = A2, Moves = new(805,063,411,059) }, // Exploud
new(770,0,65) { Ability = A2, Moves = new(805,815,659,247) }, // Palossand
new(771,0,65) { Ability = A0, Moves = new(092,269,599,068) }, // Pyukumuku
new(305,0,65) { Ability = A0, Moves = new(798,231,157,319) }, // Lairon
new(310,0,65) { Ability = A1, Moves = new(804,129,315,706) }, // Manectric
new(315,0,65) { Ability = A1, Moves = new(437,326,311,791) }, // Roselia
new(319,0,65) { Ability = A2, Moves = new(453,372,207,799) }, // Sharpedo
new(320,0,65) { Ability = A0, Moves = new(362,798,340,203) }, // Wailmer
new(324,0,65) { Ability = A1, Moves = new(807,517,229,108) }, // Torkoal
new(862,0,65) { Ability = A0, Moves = new(808,085,263,103) }, // Obstagoon
new(334,0,65) { Ability = A2, Moves = new(605,257,538,406) }, // Altaria
new(844,0,65) { Ability = A0, Moves = new(815,799,806,137), CanGigantamax = true }, // Sandaconda
new(858,0,65) { Ability = A1, Moves = new(797,583,791,219), CanGigantamax = true }, // Hatterene
new(340,0,65) { Ability = A2, Moves = new(340,562,330,428) }, // Whiscash
new(342,0,65) { Ability = A2, Moves = new(808,263,330,014) }, // Crawdaunt
new(344,0,65) { Ability = A0, Moves = new(433,094,246,063) }, // Claydol
new(356,0,65) { Ability = A0, Moves = new(425,506,356,806) }, // Dusclops
new(359,0,65) { Ability = A0, Moves = new(059,400,163,126) }, // Absol
new(362,0,65) { Ability = A1, Moves = new(798,242,423,313) }, // Glalie
new(364,0,65) { Ability = A0, Moves = new(058,362,291,207) }, // Sealeo
new(369,0,65) { Ability = A1, Moves = new(710,457,175,799) }, // Relicanth
new(132,0,65) { Ability = A2, Moves = new(144,000,000,000) }, // Ditto
new(375,0,65) { Ability = A0, Moves = new(309,009,427,115) }, // Metang
new(416,0,65) { Ability = A0, Moves = new(454,207,814,279) }, // Vespiquen
new(421,0,65) { Ability = A0, Moves = new(076,388,241,311) }, // Cherrim
new(423,1,65) { Ability = A2, Moves = new(034,806,317,127) }, // Gastrodon-1
new(426,0,65) { Ability = A0, Moves = new(261,094,366,085) }, // Drifblim
new(428,0,65) { Ability = A0, Moves = new(409,025,204,340) }, // Lopunny
new(435,0,65) { Ability = A1, Moves = new(808,807,491,389) }, // Skuntank
new(537,0,65) { Ability = A0, Moves = new(497,048,188,103) }, // Seismitoad
new(452,0,65) { Ability = A0, Moves = new(808,404,367,231) }, // Drapion
new(777,0,65) { Ability = A2, Moves = new(609,398,527,442) }, // Togedemaru
new(460,0,65) { Ability = A2, Moves = new(419,694,496,803) }, // Abomasnow
new(478,0,65) { Ability = A0, Moves = new(813,524,694,247) }, // Froslass
new(479,0,65) { Ability = A0, Moves = new(486,261,417,506) }, // Rotom
new(508,0,65) { Ability = A2, Moves = new(416,263,496,608) }, // Stoutland
new(510,0,65) { Ability = A0, Moves = new(372,583,259,103) }, // Liepard
new(518,0,65) { Ability = A0, Moves = new(797,473,281,412) }, // Musharna
new(521,0,65) { Ability = A0, Moves = new(814,269,297,366) }, // Unfezant
new(528,0,65) { Ability = A2, Moves = new(493,683,094,403) }, // Swoobat
new(531,0,65) { Ability = A0, Moves = new(791,577,304,053) }, // Audino
new(533,0,65) { Ability = A0, Moves = new(264,811,280,667) }, // Gurdurr
new(536,0,65) { Ability = A0, Moves = new(497,503,414,340) }, // Palpitoad
new(778,0,65) { Ability = A0, Moves = new(421,163,608,174) }, // Mimikyu
new(884,0,65) { Ability = A0, Moves = new(784,086,442,085), CanGigantamax = true }, // Duraludon
new(545,0,65) { Ability = A1, Moves = new(798,092,675,224) }, // Scolipede
new(547,0,65) { Ability = A0, Moves = new(542,269,412,583) }, // Whimsicott
new(549,0,65) { Ability = A1, Moves = new(080,483,113,676) }, // Lilligant
new(550,0,65) { Ability = A1, Moves = new(710,291,706,423) }, // Basculin
new(550,1,65) { Ability = A1, Moves = new(503,291,242,164) }, // Basculin-1
new(828,0,65) { Ability = A1, Moves = new(492,555,269,807) }, // Thievul
new(834,0,65) { Ability = A0, Moves = new(534,806,684,157) }, // Drednaw
new(556,0,65) { Ability = A2, Moves = new(437,412,389,367) }, // Maractus
new(558,0,65) { Ability = A1, Moves = new(504,404,317,776) }, // Crustle
new(830,0,65) { Ability = A2, Moves = new(113,311,538,437) }, // Eldegoss
new(561,0,65) { Ability = A0, Moves = new(094,240,403,430) }, // Sigilyph
new(446,0,65) { Ability = A1, Moves = new(009,007,034,441) }, // Munchlax
new(855,0,65) { Ability = A0, Moves = new(312,389,473,202) }, // Polteageist
new(569,0,65) { Ability = A2, Moves = new(441,188,409,599), CanGigantamax = true }, // Garbodor
new(573,0,65) { Ability = A1, Moves = new(497,541,113,813) }, // Cinccino
new(836,0,65) { Ability = A0, Moves = new(804,242,204,270) }, // Boltund
new(820,0,65) { Ability = A0, Moves = new(360,706,014,034) }, // Greedent
new(583,0,65) { Ability = A0, Moves = new(054,058,059,304) }, // Vanillish
new(587,0,65) { Ability = A0, Moves = new(512,804,203,527) }, // Emolga
new(589,0,65) { Ability = A1, Moves = new(529,534,210,269) }, // Escavalier
new(591,0,65) { Ability = A0, Moves = new(499,476,202,474) }, // Amoonguss
new(593,0,65) { Ability = A0, Moves = new(605,291,433,196) }, // Jellicent
new(596,0,65) { Ability = A0, Moves = new(087,405,486,527) }, // Galvantula
new(601,0,65) { Ability = A0, Moves = new(544,508,416,319) }, // Klinklang
new(606,0,65) { Ability = A1, Moves = new(797,800,399,496) }, // Beheeyem
new(608,0,65) { Ability = A0, Moves = new(807,806,517,433) }, // Lampent
new(611,0,65) { Ability = A0, Moves = new(416,200,784,404) }, // Fraxure
new(614,0,65) { Ability = A1, Moves = new(776,059,524,362) }, // Beartic
new(615,0,65) { Ability = A0, Moves = new(059,058,115,076) }, // Cryogonal
new(617,0,65) { Ability = A0, Moves = new(522,491,240,405) }, // Accelgor
new(618,0,65) { Ability = A0, Moves = new(604,085,414,330) }, // Stunfisk
new(618,1,65) { Ability = A0, Moves = new(319,805,492,414) }, // Stunfisk-1
new(621,0,65) { Ability = A1, Moves = new(808,814,442,091) }, // Druddigon
new(623,0,65) { Ability = A0, Moves = new(264,325,815,219) }, // Golurk
new(625,0,65) { Ability = A1, Moves = new(400,398,427,319) }, // Bisharp
new(626,0,65) { Ability = A1, Moves = new(034,808,684,276) }, // Bouffalant
new(631,0,65) { Ability = A1, Moves = new(680,315,241,076) }, // Heatmor
new(632,0,65) { Ability = A0, Moves = new(422,404,319,232) }, // Durant
new(832,0,65) { Ability = A0, Moves = new(803,025,776,164) }, // Dubwool
new(660,0,65) { Ability = A2, Moves = new(444,707,091,098) }, // Diggersby
new(663,0,65) { Ability = A2, Moves = new(366,542,211,053) }, // Talonflame
new(675,0,65) { Ability = A0, Moves = new(418,359,663,811) }, // Pangoro
new(039,0,65) { Ability = A2, Moves = new(164,113,313,577) }, // Jigglypuff
new(525,0,65) { Ability = A0, Moves = new(444,334,776,707) }, // Boldore
new(680,0,65) { Ability = A0, Moves = new(442,014,533,332) }, // Doublade
new(687,0,65) { Ability = A0, Moves = new(576,797,400,085) }, // Malamar
new(689,0,65) { Ability = A0, Moves = new(534,059,130,398) }, // Barbaracle
new(695,0,65) { Ability = A0, Moves = new(486,097,496,189) }, // Heliolisk
new(702,0,65) { Ability = A2, Moves = new(494,087,605,164) }, // Dedenne
new(851,0,65) { Ability = A1, Moves = new(053,815,474,021), CanGigantamax = true }, // Centiskorch
new(707,0,65) { Ability = A0, Moves = new(113,578,430,583) }, // Klefki
new(709,0,65) { Ability = A2, Moves = new(532,115,409,433) }, // Trevenant
new(711,0,65) { Ability = A0, Moves = new(595,425,388,184) }, // Gourgeist
new(847,0,65) { Ability = A0, Moves = new(453,799,372,203) }, // Barraskewda
new(845,0,65) { Ability = A0, Moves = new(291,203,133,675) }, // Cramorant
new(620,0,65) { Ability = A0, Moves = new(396,469,317,025) }, // Mienshao
new(870,0,65) { Ability = A0, Moves = new(660,014,684,280) }, // Falinks
new(701,0,65) { Ability = A0, Moves = new(269,398,675,490) }, // Hawlucha
new(879,0,65) { Ability = A0, Moves = new(334,776,430,798) }, // Copperajah
new(826,0,65) { Ability = A0, Moves = new(495,094,060,522), CanGigantamax = true }, // Orbeetle
new(838,0,65) { Ability = A2, Moves = new(315,083,115,157) }, // Carkol
new(877,0,65) { Ability = A0, Moves = new(783,399,085,423) }, // Morpeko
new(563,0,65) { Ability = A0, Moves = new(247,114,094,472) }, // Cofagrigus
new(750,0,65) { Ability = A0, Moves = new(808,276,328,249) }, // Mudsdale
new(863,0,65) { Ability = A2, Moves = new(232,133,808,087) }, // Perrserker
new(871,0,65) { Ability = A2, Moves = new(056,087,367,599) }, // Pincurchin
new(873,0,65) { Ability = A2, Moves = new(311,366,522,542) }, // Frosmoth
new(839,0,65) { Ability = A0, Moves = new(108,800,053,503), CanGigantamax = true }, // Coalossal
new(853,0,65) { Ability = A0, Moves = new(576,409,330,411) }, // Grapploct
new(861,0,65) { Ability = A0, Moves = new(612,399,384,590), CanGigantamax = true }, // Grimmsnarl
new(886,0,65) { Ability = A0, Moves = new(407,372,261,247) }, // Drakloak
new(036,0,65) { Ability = A1, Moves = new(800,605,266,322) }, // Clefable
new(044,0,65) { Ability = A0, Moves = new(474,092,585,078) }, // Gloom
new(137,0,65) { Ability = A1, Moves = new(492,058,085,063) }, // Porygon
new(600,0,65) { Ability = A1, Moves = new(451,804,430,408) }, // Klang
new(738,0,65) { Ability = A0, Moves = new(209,189,398,405) }, // Vikavolt
new(254,0,65) { Ability = A2, Moves = new(520,784,437,404) }, // Sceptile
new(257,0,65) { Ability = A2, Moves = new(519,299,370,811) }, // Blaziken
new(260,0,65) { Ability = A2, Moves = new(518,059,414,133) }, // Swampert
new(073,0,65) { Ability = A0, Moves = new(352,056,398,014) }, // Tentacruel
new(080,0,65) { Ability = A1, Moves = new(797,244,053,473) }, // Slowbro
new(121,0,65) { Ability = A2, Moves = new(408,605,427,196) }, // Starmie
new(849,0,65) { Ability = A1, Moves = new(804,086,304,715), CanGigantamax = true }, // Toxtricity
new(134,0,65) { Ability = A0, Moves = new(352,204,311,114) }, // Vaporeon
new(135,0,65) { Ability = A0, Moves = new(085,129,247,270) }, // Jolteon
new(136,0,65) { Ability = A0, Moves = new(807,247,608,387) }, // Flareon
new(199,0,65) { Ability = A1, Moves = new(248,417,534,008) }, // Slowking
new(330,0,65) { Ability = A0, Moves = new(211,337,405,189) }, // Flygon
new(346,0,65) { Ability = A0, Moves = new(412,246,380,188) }, // Cradily
new(348,0,65) { Ability = A0, Moves = new(404,479,707,201) }, // Armaldo
new(437,0,65) { Ability = A0, Moves = new(428,319,798,285) }, // Bronzong
new(697,0,65) { Ability = A0, Moves = new(799,350,276,034) }, // Tyrantrum
new(253,0,65) { Ability = A0, Moves = new(520,103,280,203) }, // Grovyle
new(256,0,65) { Ability = A0, Moves = new(519,411,297,490) }, // Combusken
new(259,0,65) { Ability = A0, Moves = new(518,127,091,008) }, // Marshtomp
new(699,0,65) { Ability = A0, Moves = new(034,087,246,086) }, // Aurorus
new(765,0,65) { Ability = A2, Moves = new(689,113,094,473) }, // Oranguru
new(766,0,65) { Ability = A0, Moves = new(280,317,164,512) }, // Passimian
new(876,0,65) { Ability = A1, Moves = new(595,797,347,247) }, // Indeedee
new(145,0,70) { Ability = A0, Moves = new(087,065,413,097) }, // Zapdos
new(146,0,70) { Ability = A0, Moves = new(257,017,043,083) }, // Moltres
new(144,0,70) { Ability = A0, Moves = new(058,573,542,054) }, // Articuno
new(150,0,70) { Ability = A0, Moves = new(094,050,105,059) }, // Mewtwo
new(245,0,70) { Ability = A0, Moves = new(710,326,245,347) }, // Suicune
new(244,0,70) { Ability = A0, Moves = new(053,184,245,242) }, // Entei
new(243,0,70) { Ability = A0, Moves = new(085,336,245,311) }, // Raikou
new(249,0,70) { Ability = A0, Moves = new(406,326,250,246) }, // (SH) Lugia
new(250,0,70) { Ability = A0, Moves = new(394,326,241,246) }, // (SW) Ho-Oh
new(380,0,70) { Ability = A0, Moves = new(513,225,428,057) }, // (SH) Latias
new(381,0,70) { Ability = A0, Moves = new(349,406,428,396) }, // (SW) Latios
new(383,0,70) { Ability = A0, Moves = new(089,184,436,359) }, // (SW) Groudon
new(382,0,70) { Ability = A0, Moves = new(057,034,392,087) }, // (SH) Kyogre
new(384,0,70) { Ability = A0, Moves = new(620,693,245,239) }, // Rayquaza
new(480,0,70) { Ability = A0, Moves = new(094,248,478,247) }, // Uxie
new(482,0,70) { Ability = A0, Moves = new(094,605,417,263) }, // Azelf
new(481,0,70) { Ability = A0, Moves = new(094,204,577,161) }, // Mesprit
new(483,0,70) { Ability = A0, Moves = new(163,246,430,337) }, // (SW) Dialga
new(484,0,70) { Ability = A0, Moves = new(163,057,246,337) }, // (SH) Palkia
new(487,0,70) { Ability = A0, Moves = new(337,184,247,246) }, // Giratina
new(485,0,70) { Ability = A0, Moves = new(319,436,242,442) }, // Heatran
new(488,0,70) { Ability = A0, Moves = new(196,585,427,473) }, // Cresselia
new(641,0,70) { Ability = A0, Moves = new(542,097,196,257) }, // (SW) Tornadus
new(642,0,70) { Ability = A0, Moves = new(087,240,311,482) }, // (SH) Thundurus
new(645,0,70) { Ability = A0, Moves = new(328,157,523,411) }, // Landorus
new(643,0,70) { Ability = A0, Moves = new(568,326,558,406) }, // (SW) Reshiram
new(644,0,70) { Ability = A0, Moves = new(568,163,559,337) }, // (SH) Zekrom
new(646,0,70) { Ability = A0, Moves = new(058,304,247,184) }, // Kyurem
new(716,0,70) { Ability = A0, Moves = new(275,605,585,532) }, // (SW) Xerneas
new(717,0,70) { Ability = A0, Moves = new(269,613,407,389) }, // (SH) Yveltal
new(718,3,70) { Ability = A0, Moves = new(614,616,406,020) }, // Zygarde-3
new(785,0,70) { Ability = A0, Moves = new(085,098,413,269) }, // Tapu Koko
new(786,0,70) { Ability = A0, Moves = new(094,583,478,204) }, // Tapu Lele
new(787,0,70) { Ability = A0, Moves = new(276,224,452,184) }, // Tapu Bulu
new(788,0,70) { Ability = A0, Moves = new(250,352,362,585) }, // Tapu Fini
new(791,0,70) { Ability = A0, Moves = new(428,083,231,568) }, // (SW) Solgaleo
new(792,0,70) { Ability = A0, Moves = new(247,585,277,129) }, // (SH) Lunala
new(800,0,70) { Ability = A0, Moves = new(427,451,408,475) }, // Necrozma
new(793,0,70) { Ability = A0, Moves = new(472,482,693,491) }, // Nihilego
new(794,0,70) { Ability = A0, Moves = new(612,269,141,223) }, // Buzzwole
new(795,0,70) { Ability = A0, Moves = new(136,129,675,679) }, // Pheromosa
new(796,0,70) { Ability = A0, Moves = new(438,435,598,693) }, // Xurkitree
new(798,0,70) { Ability = A0, Moves = new(410,314,348,014) }, // Kartana
new(797,0,70) { Ability = A0, Moves = new(073,479,360,089) }, // Celesteela
new(799,0,70) { Ability = A0, Moves = new(407,707,693,005) }, // Guzzlord
new(806,0,70) { Ability = A0, Moves = new(421,269,126,428) }, // Blacephalon
new(805,0,70) { Ability = A0, Moves = new(157,038,693,475) }, // Stakataka
};
#endregion
}

View file

@ -0,0 +1,111 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.Shiny;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.AbilityPermission;
namespace PKHeX.Core;
/// <summary>
/// Generation 9 Encounters
/// </summary>
internal static class Encounters9
{
internal static readonly EncounterArea9[] Slots = EncounterArea9.GetAreas(Get("wild_paldea", "sv"), SV);
static Encounters9()
{
MarkEncounterTradeStrings(TradeGift_SV, TradeSV);
}
private static readonly EncounterStatic9[] Encounter_SV =
{
// Starters
new(SV) { Gift = true, Species = 906, Shiny = Never, Level = 05, Location = 080, Ability = OnlyFirst, Size = 128 }, // Sprigatito
new(SV) { Gift = true, Species = 909, Shiny = Never, Level = 05, Location = 080, Ability = OnlyFirst, Size = 128 }, // Fuecoco
new(SV) { Gift = true, Species = 912, Shiny = Never, Level = 05, Location = 080, Ability = OnlyFirst, Size = 128 }, // Quaxly
// Box Legendary (Ride Form)
new(SL) { Gift = true, Species = 998, Shiny = Never, Level = 68, Location = 070, Ability = OnlyFirst, Size = 128, Nature = Nature.Quirky, TeraType = GemType.Dragon, IVs = new(31,31,28,31,31,28), Moves = new(053,878,203,851) }, // Koraidon
new(VL) { Gift = true, Species = 999, Shiny = Never, Level = 68, Location = 070, Ability = OnlyFirst, Size = 128, Nature = Nature.Quirky, TeraType = GemType.Dragon, IVs = new(31,31,28,31,31,28), Moves = new(408,879,203,851) }, // Miraidon
// Galarian Meowth from Salvatore (Specific Met Location depending on game, inside Academy's Staff Quarters)
new(SL) { Gift = true, Species = 052, Shiny = Never, Level = 05, Location = 130, Form = 2, FlawlessIVCount = 3 }, // Meowth-2
new(VL) { Gift = true, Species = 052, Shiny = Never, Level = 05, Location = 131, Form = 2, FlawlessIVCount = 3 }, // Meowth-2
// Box Legendary (Battle Form)
new(SL) { Species = 998, Shiny = Never, Level = 72, Location = 124, Size = 128, Ability = OnlyFirst, Nature = Nature.Adamant, TeraType = GemType.Fighting, IVs = new(25,31,25,31,31,25), Moves = new(416,339,878,053) }, // Koraidon
new(VL) { Species = 999, Shiny = Never, Level = 72, Location = 124, Size = 128, Ability = OnlyFirst, Nature = Nature.Modest, TeraType = GemType.Electric, IVs = new(25,31,25,31,31,25), Moves = new(063,268,879,408) }, // Miraidon
// Treasures of Ruin
new(SV) { Species = 994, Shiny = Never, Level = 60, Location = 109, Size = 128, FlawlessIVCount = 3 }, // Ting-Lu
new(SV) { Species = 995, Shiny = Never, Level = 60, Location = 022, Size = 128, FlawlessIVCount = 3 }, // Chien-Pao
new(SV) { Species = 996, Shiny = Never, Level = 60, Location = 006, Size = 128, FlawlessIVCount = 3 }, // Wo-Chien
new(SV) { Species = 997, Shiny = Never, Level = 60, Location = 048, Size = 128, FlawlessIVCount = 3 }, // Chi-Yu
// Former Titans
new(SV) { Species = 944, Shiny = Never, Level = 29, Location = 032, Size = 255, Ability = OnlyFirst, Gender = 0, Nature = Nature.Quirky, IVs = new(30,30,30,30,30,30), Moves = new(231,029,035,201), IsTitan = true }, // Orthworm
new(SV) { Species = 952, Shiny = Never, Level = 57, Location = 040, Size = 255, Ability = OnlyFirst, Gender = 0, Nature = Nature.Quiet, IVs = new(30,30,30,30,30,30), Moves = new(330,196,269,406), IsTitan = true }, // Tatsugiri
new(SV) { Species = 959, Shiny = Never, Level = 20, Location = 022, Size = 255, Ability = OnlyHidden, Gender = 1, Nature = Nature.Jolly, IVs = new(30,30,30,30,30,30), Moves = new(088,017,365,259), IsTitan = true }, // Bombirdier
new(SV) { Species = 962, Shiny = Never, Level = 16, Location = 020, Size = 255, Ability = OnlyFirst, Gender = 1, Nature = Nature.Gentle, IVs = new(30,30,30,30,30,30), Moves = new(011,249,335,317), IsTitan = true }, // Klawf
new(SL) { Species = 978, Shiny = Never, Level = 45, Location = 024, Size = 255, Ability = OnlyFirst, Nature = Nature.Naughty, IVs = new(30,30,30,30,30,30), Moves = new(229,280,282,707), IsTitan = true }, // Great Tusk
new(VL) { Species = 986, Shiny = Never, Level = 45, Location = 024, Size = 255, Ability = OnlyFirst, Nature = Nature.Naughty, IVs = new(30,30,30,30,30,30), Moves = new(229,280,442,707), IsTitan = true }, // Iron Treads
// Dummy Tatsugiri
new(SV) { Species = 952, Shiny = Never, Level = 45, Location = 040, Size = 128, }, // Tatsugiri
new(SV) { Species = 952, Shiny = Never, Level = 45, Location = 040, Size = 128, Form = 1 }, // Tatsugiri-1
new(SV) { Species = 952, Shiny = Never, Level = 45, Location = 040, Size = 128, Form = 2 }, // Tatsugiri-2
#region Chest Form Gimmighoul
// Gimmighoul has 13 separate static encounter entries, all differing by Level. These can be placed in numerous parts of the map, so for now, manually define them all here.
//new(SV) { Species = 976, Shiny = Never, Level = 01, Location = -01 }, // Gimmighoul
new(SV) { Species = 976, Shiny = Never, Level = 05, Location = 006 }, // Gimmighoul - South Province (Area One)
new(SV) { Species = 976, Shiny = Never, Level = 10, Location = 012 }, // Gimmighoul - South Province (Area Two)
new(SV) { Species = 976, Shiny = Never, Level = 10, Location = 020 }, // Gimmighoul - South Province (Area Three)
new(SV) { Species = 976, Shiny = Never, Level = 15, Location = 014 }, // Gimmighoul - South Province (Area Four)
new(SV) { Species = 976, Shiny = Never, Level = 15, Location = 018 }, // Gimmighoul - South Province (Area Five)
new(SV) { Species = 976, Shiny = Never, Level = 15, Location = 022 }, // Gimmighoul - West Province (Area One)
new(SV) { Species = 976, Shiny = Never, Level = 15, Location = 034 }, // Gimmighoul - East Province (Area One)
new(SV) { Species = 976, Shiny = Never, Level = 20, Location = 024 }, // Gimmighoul - Asado Desert
new(SV) { Species = 976, Shiny = Never, Level = 25, Location = 032 }, // Gimmighoul - East Province (Area Three)
new(SV) { Species = 976, Shiny = Never, Level = 25, Location = 058 }, // Gimmighoul - West Paldean Sea
//new(SV) { Species = 976, Shiny = Never, Level = 30, Location = -01 }, // Gimmighoul
new(SV) { Species = 976, Shiny = Never, Level = 35, Location = 038 }, // Gimmighoul - Glaseado Mountain
new(SV) { Species = 976, Shiny = Never, Level = 40, Location = 016 }, // Gimmighoul - South Province (Area Six)
//new(SV) { Species = 976, Shiny = Never, Level = 45, Location = -01 }, // Gimmighoul
new(SV) { Species = 976, Shiny = Never, Level = 50, Location = 026 }, // Gimmighoul - West Province (Area Two)
new(SV) { Species = 976, Shiny = Never, Level = 50, Location = 040 }, // Gimmighoul - Casseroya Lake
new(SV) { Species = 976, Shiny = Never, Level = 50, Location = 046 }, // Gimmighoul - North Province (Area One)
new(SV) { Species = 976, Shiny = Never, Level = 50, Location = 048 }, // Gimmighoul - North Province (Area Two)
new(SV) { Species = 976, Shiny = Never, Level = 50, Location = 109 }, // Gimmighoul - Socarrat Trail
//new(SV) { Species = 976, Shiny = Never, Level = 55, Location = -01 }, // Gimmighoul
//new(SV) { Species = 976, Shiny = Never, Level = 60, Location = -01 }, // Gimmighoul
#endregion
};
private const string tradeSV = "tradesv";
private static readonly string[][] TradeSV = Util.GetLanguageStrings10(tradeSV, "zh2");
internal static readonly EncounterTrade9[] TradeGift_SV =
{
new(SV, 872,10) { TID7 = 050724, IVs = new(31,18,13,20,28,26), OTGender = 0, Gender = 1, Nature = Nature.Bashful, }, // Snom
new(SV, 194,18) { Ability = OnlySecond, TID7 = 033081, IVs = new(27,18,25,13,16,31), OTGender = 1, Gender = 0, Nature = Nature.Relaxed, }, // Wooper
new(SV, 093,25) { Ability = OnlyFirst, TID7 = 016519, IVs = new(14,20,25,31,28,16), OTGender = 1, Gender = 1, Nature = Nature.Lonely, EvolveOnTrade = true }, // Haunter
};
private static readonly EncounterTera9[] Tera = EncounterTera9.GetArray(Get("gem_paldea"));
private static readonly EncounterFixed9[] Fixed = EncounterFixed9.GetArray(Get("fixed_paldea"));
internal static readonly EncounterStatic[] StaticSL = ArrayUtil.ConcatAll<EncounterStatic>(GetEncounters(Encounter_SV, SL), Tera, Fixed);
internal static readonly EncounterStatic[] StaticVL = ArrayUtil.ConcatAll<EncounterStatic>(GetEncounters(Encounter_SV, VL), Tera, Fixed);
}

View file

@ -0,0 +1,106 @@
using static PKHeX.Core.Encounters3ColoTeams;
namespace PKHeX.Core;
internal static class Encounters3Colo
{
internal static readonly EncounterStatic3[] Encounter_ColoGift =
{
// Colosseum Starters: Gender locked to male
new(196, 25, GameVersion.COLO) { Gift = true, Location = 254, Gender = 0 }, // Espeon
new(197, 26, GameVersion.COLO) { Gift = true, Location = 254, Gender = 0, Moves = new(044) }, // Umbreon (Bite)
};
internal static readonly EncounterStaticShadow[] Encounter_Colo =
{
new(GameVersion.COLO, 01, 03000, ColoMakuhita) { Species = 296, Level = 30, Moves = new(193,116,233,238), Location = 005 }, // Makuhita: Miror B.Peon Trudly @ Phenac City
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 003 }, // Bayleef: Cipher Peon Verde @ Phenac City
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 069 }, // Bayleef: Cipher Peon Verde @ Shadow PKMN Lab
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 115 }, // Bayleef: Cipher Peon Verde @ Realgam Tower
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 132 }, // Bayleef: Cipher Peon Verde @ Snagem Hideout
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 003 }, // Quilava: Cipher Peon Rosso @ Phenac City
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 069 }, // Quilava: Cipher Peon Rosso @ Shadow PKMN Lab
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 115 }, // Quilava: Cipher Peon Rosso @ Realgam Tower
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 132 }, // Quilava: Cipher Peon Rosso @ Snagem Hideout
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 003 }, // Croconaw: Cipher Peon Bluno @ Phenac City
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 069 }, // Croconaw: Cipher Peon Bluno @ Shadow PKMN Lab
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 115 }, // Croconaw: Cipher Peon Bluno @ Realgam Tower
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 132 }, // Croconaw: Cipher Peon Bluno @ Snagem Hideout
new(GameVersion.COLO, 05, 03000, First) { Species = 164, Level = 30, Moves = new(211,095,115,019), Location = 015 }, // Noctowl: Rider Nover @ Pyrite Town
new(GameVersion.COLO, 06, 03000, First) { Species = 180, Level = 30, Moves = new(085,086,178,084), Location = 015 }, // Flaaffy: St.Performer Diogo @ Pyrite Town
new(GameVersion.COLO, 07, 03000, First) { Species = 188, Level = 30, Moves = new(235,079,178,072), Location = 015 }, // Skiploom: Rider Leba @ Pyrite Town
new(GameVersion.COLO, 08, 04000, First) { Species = 195, Level = 30, Moves = new(341,133,021,057), Location = 015 }, // Quagsire: Bandana Guy Divel @ Pyrite Town
new(GameVersion.COLO, 09, 04000, First) { Species = 200, Level = 30, Moves = new(060,109,212,247), Location = 015 }, // Misdreavus: Rider Vant @ Pyrite Town
new(GameVersion.COLO, 10, 05000, First) { Species = 193, Level = 33, Moves = new(197,048,049,253), Location = 025 }, // Yanma: Cipher Peon Nore @ Pyrite Bldg
new(GameVersion.COLO, 10, 05000, First) { Species = 193, Level = 33, Moves = new(197,048,049,253), Location = 132 }, // Yanma: Cipher Peon Nore @ Snagem Hideout
new(GameVersion.COLO, 11, 05000, First) { Species = 162, Level = 33, Moves = new(231,270,098,070), Location = 015 }, // Furret: Rogue Cail @ Pyrite Town
new(GameVersion.COLO, 12, 04000, First) { Species = 218, Level = 30, Moves = new(241,281,088,053), Location = 015 }, // Slugma: Roller Boy Lon @ Pyrite Town
new(GameVersion.COLO, 13, 04000, First) { Species = 223, Level = 20, Moves = new(061,199,060,062), Location = 028 }, // Remoraid: Miror B.Peon Reath @ Pyrite Bldg
new(GameVersion.COLO, 13, 04000, First) { Species = 223, Level = 20, Moves = new(061,199,060,062), Location = 030 }, // Remoraid: Miror B.Peon Reath @ Pyrite Cave
new(GameVersion.COLO, 14, 05000, First) { Species = 226, Level = 33, Moves = new(017,048,061,036), Location = 028 }, // Mantine: Miror B.Peon Ferma @ Pyrite Bldg
new(GameVersion.COLO, 14, 05000, First) { Species = 226, Level = 33, Moves = new(017,048,061,036), Location = 030 }, // Mantine: Miror B.Peon Ferma @ Pyrite Cave
new(GameVersion.COLO, 15, 05000, First) { Species = 211, Level = 33, Moves = new(042,107,040,057), Location = 015 }, // Qwilfish: Hunter Doken @ Pyrite Bldg
new(GameVersion.COLO, 16, 05000, First) { Species = 307, Level = 33, Moves = new(197,347,093,136), Location = 031 }, // Meditite: Rider Twan @ Pyrite Cave
new(GameVersion.COLO, 17, 05000, First) { Species = 206, Level = 33, Moves = new(180,137,281,036), Location = 029 }, // Dunsparce: Rider Sosh @ Pyrite Cave
new(GameVersion.COLO, 18, 05000, First) { Species = 333, Level = 33, Moves = new(119,047,219,019), Location = 032 }, // Swablu: Hunter Zalo @ Pyrite Cave
new(GameVersion.COLO, 19, 10000, First) { Species = 185, Level = 35, Moves = new(175,335,067,157), Location = 104 }, // Sudowoodo: Cipher Admin Miror B. @ Realgam Tower
new(GameVersion.COLO, 19, 10000, First) { Species = 185, Level = 35, Moves = new(175,335,067,157), Location = 125 }, // Sudowoodo: Cipher Admin Miror B. @ Deep Colosseum
new(GameVersion.COLO, 19, 10000, First) { Species = 185, Level = 35, Moves = new(175,335,067,157), Location = 030 }, // Sudowoodo: Cipher Admin Miror B. @ Pyrite Cave
new(GameVersion.COLO, 20, 06000, First) { Species = 237, Level = 38, Moves = new(097,116,167,229), Location = 039 }, // Hitmontop: Cipher Peon Skrub @ Agate Village
new(GameVersion.COLO, 20, 06000, First) { Species = 237, Level = 38, Moves = new(097,116,167,229), Location = 132 }, // Hitmontop: Cipher Peon Skrub @ Snagem Hideout
new(GameVersion.COLO, 20, 06000, First) { Species = 237, Level = 38, Moves = new(097,116,167,229), Location = 068 }, // Hitmontop: Cipher Peon Skrub @ Shadow PKMN Lab
new(GameVersion.COLO, 21, 13000, First) { Species = 244, Level = 40, Moves = new(241,043,044,126), Location = 106 }, // Entei: Cipher Admin Dakim @ Realgam Tower
new(GameVersion.COLO, 21, 13000, First) { Species = 244, Level = 40, Moves = new(241,043,044,126), Location = 125 }, // Entei: Cipher Admin Dakim @ Deep Colosseum
new(GameVersion.COLO, 21, 13000, First) { Species = 244, Level = 40, Moves = new(241,043,044,126), Location = 076 }, // Entei: Cipher Admin Dakim @ Mt. Battle
new(GameVersion.COLO, 22, 06000, First) { Species = 166, Level = 40, Moves = new(226,219,048,004), Location = 047 }, // Ledian: Cipher Peon Kloak @ The Under
new(GameVersion.COLO, 22, 06000, First) { Species = 166, Level = 40, Moves = new(226,219,048,004), Location = 132 }, // Ledian: Cipher Peon Kloak @ Snagem Hideout
new(GameVersion.COLO, 23, 13000, First) { Species = 245, Level = 40, Moves = new(240,043,016,057), Location = 110 }, // Suicune (Surf): Cipher Admin Venus @ Realgam Tower
new(GameVersion.COLO, 23, 13000, First) { Species = 245, Level = 40, Moves = new(240,043,016,056), Location = 125 }, // Suicune (Hydro Pump): Cipher Admin Venus @ Deep Colosseum
new(GameVersion.COLO, 23, 13000, First) { Species = 245, Level = 40, Moves = new(240,043,016,057), Location = 055 }, // Suicune (Surf): Cipher Admin Venus @ The Under
new(GameVersion.COLO, 24, 06000, Gligar) { Species = 207, Level = 43, Moves = new(185,028,040,163), Location = 058 }, // Gligar: Hunter Frena @ The Under Subway
new(GameVersion.COLO, 24, 06000, Gligar) { Species = 207, Level = 43, Moves = new(185,028,040,163), Location = 133 }, // Gligar: Hunter Frena @ Snagem Hideout
new(GameVersion.COLO, 25, 06000, First) { Species = 234, Level = 43, Moves = new(310,095,043,036), Location = 058 }, // Stantler: Chaser Liaks @ The Under Subway
new(GameVersion.COLO, 25, 06000, First) { Species = 234, Level = 43, Moves = new(310,095,043,036), Location = 133 }, // Stantler: Chaser Liaks @ Snagem Hideout
new(GameVersion.COLO, 25, 06000, First) { Species = 221, Level = 43, Moves = new(203,316,091,059), Location = 058 }, // Piloswine: Bodybuilder Lonia @ The Under Subway
new(GameVersion.COLO, 26, 06000, First) { Species = 221, Level = 43, Moves = new(203,316,091,059), Location = 134 }, // Piloswine: Bodybuilder Lonia @ Snagem Hideout
new(GameVersion.COLO, 27, 06000, First) { Species = 215, Level = 43, Moves = new(185,103,154,196), Location = 058 }, // Sneasel: Rider Nelis @ The Under Subway
new(GameVersion.COLO, 27, 06000, First) { Species = 215, Level = 43, Moves = new(185,103,154,196), Location = 134 }, // Sneasel: Rider Nelis @ Snagem Hideout
new(GameVersion.COLO, 28, 06000, First) { Species = 190, Level = 43, Moves = new(226,321,154,129), Location = 067 }, // Aipom: Cipher Peon Cole @ Shadow PKMN Lab
new(GameVersion.COLO, 29, 06000, Murkrow) { Species = 198, Level = 43, Moves = new(185,212,101,019), Location = 067 }, // Murkrow: Cipher Peon Lare @ Shadow PKMN Lab
new(GameVersion.COLO, 30, 06000, First) { Species = 205, Level = 43, Moves = new(153,182,117,229), Location = 067 }, // Forretress: Cipher Peon Vana @ Shadow PKMN Lab
new(GameVersion.COLO, 31, 06000, First) { Species = 210, Level = 43, Moves = new(044,184,046,070), Location = 069 }, // Granbull: Cipher Peon Tanie @ Shadow PKMN Lab
new(GameVersion.COLO, 32, 06000, First) { Species = 329, Level = 43, Moves = new(242,103,328,225), Location = 068 }, // Vibrava: Cipher Peon Remil @ Shadow PKMN Lab
new(GameVersion.COLO, 33, 06000, First) { Species = 168, Level = 43, Moves = new(169,184,141,188), Location = 069 }, // Ariados: Cipher Peon Lesar @ Shadow PKMN Lab
new(GameVersion.COLO, 34, 13000, First) { Species = 243, Level = 40, Moves = new(240,043,098,087), Location = 113 }, // Raikou: Cipher Admin Ein @ Realgam Tower
new(GameVersion.COLO, 34, 13000, First) { Species = 243, Level = 40, Moves = new(240,043,098,087), Location = 125 }, // Raikou: Cipher Admin Ein @ Deep Colosseum
new(GameVersion.COLO, 34, 13000, First) { Species = 243, Level = 40, Moves = new(240,043,098,087), Location = 069 }, // Raikou: Cipher Admin Ein @ Shadow PKMN Lab
new(GameVersion.COLO, 35, 07000, First) { Species = 192, Level = 45, Moves = new(241,074,275,076), Location = 109 }, // Sunflora: Cipher Peon Baila @ Realgam Tower
new(GameVersion.COLO, 35, 07000, First) { Species = 192, Level = 45, Moves = new(241,074,275,076), Location = 132 }, // Sunflora: Cipher Peon Baila @ Snagem Hideout
new(GameVersion.COLO, 36, 07000, First) { Species = 225, Level = 45, Moves = new(059,213,217,019), Location = 109 }, // Delibird: Cipher Peon Arton @ Realgam Tower
new(GameVersion.COLO, 36, 07000, First) { Species = 225, Level = 45, Moves = new(059,213,217,019), Location = 132 }, // Delibird: Cipher Peon Arton @ Snagem Hideout
new(GameVersion.COLO, 37, 07000, Heracross) { Species = 214, Level = 45, Moves = new(179,203,068,280), Location = 111 }, // Heracross: Cipher Peon Dioge @ Realgam Tower
new(GameVersion.COLO, 37, 07000, Heracross) { Species = 214, Level = 45, Moves = new(179,203,068,280), Location = 132 }, // Heracross: Cipher Peon Dioge @ Snagem Hideout
new(GameVersion.COLO, 38, 13000, First) { Species = 227, Level = 47, Moves = new(065,319,314,211), Location = 117 }, // Skarmory: Snagem Head Gonzap @ Realgam Tower
new(GameVersion.COLO, 38, 13000, First) { Species = 227, Level = 47, Moves = new(065,319,314,211), Location = 133 }, // Skarmory: Snagem Head Gonzap @ Snagem Hideout
new(GameVersion.COLO, 39, 07000, First) { Species = 241, Level = 48, Moves = new(208,111,205,034), Location = 118 }, // Miltank: Bodybuilder Jomas @ Tower Colosseum
new(GameVersion.COLO, 40, 07000, First) { Species = 359, Level = 48, Moves = new(195,014,163,185), Location = 118 }, // Absol: Rider Delan @ Tower Colosseum
new(GameVersion.COLO, 41, 07000, First) { Species = 229, Level = 48, Moves = new(185,336,123,053), Location = 118 }, // Houndoom: Cipher Peon Nella @ Tower Colosseum
new(GameVersion.COLO, 42, 07000, First) { Species = 357, Level = 49, Moves = new(076,235,345,019), Location = 118 }, // Tropius: Cipher Peon Ston @ Tower Colosseum
new(GameVersion.COLO, 43, 15000, First) { Species = 376, Level = 50, Moves = new(063,334,232,094), Location = 118 }, // Metagross: Cipher Nascour @ Tower Colosseum
new(GameVersion.COLO, 44, 20000, First) { Species = 248, Level = 55, Moves = new(242,087,157,059), Location = 118 }, // Tyranitar: Cipher Head Evice @ Tower Colosseum
new(GameVersion.COLO, 55, 07000, First) { Species = 235, Level = 45, Moves = new(166,039,003,231), Location = 132 }, // Smeargle: Team Snagem Biden @ Snagem Hideout
new(GameVersion.COLO, 56, 07000, Ursaring) { Species = 217, Level = 45, Moves = new(185,313,122,163), Location = 132 }, // Ursaring: Team Snagem Agrev @ Snagem Hideout
new(GameVersion.COLO, 57, 07000, First) { Species = 213, Level = 45, Moves = new(219,227,156,117), Location = 125 }, // Shuckle: Deep King Agnol @ Deep Colosseum
new(GameVersion.COLO, 67, 05000, First) { Species = 176, Level = 20, Moves = new(118,204,186,281), Location = 001 }, // Togetic: Cipher Peon Fein @ Outskirt Stand
new(GameVersion.COLO, 00, 00000, CTogepi) { Species = 175, Level = 20, Moves = new(118,204,186,281), Location = 128, IVs = new(0, 0, 0, 0, 0, 0) }, // Togepi: Chaser ボデス @ Card e Room (Japanese games only)
new(GameVersion.COLO, 00, 00000, CMareep) { Species = 179, Level = 37, Moves = new(087,084,086,178), Location = 128, IVs = new(0, 0, 0, 0, 0, 0) }, // Mareep: Hunter ホル @ Card e Room (Japanese games only)
new(GameVersion.COLO, 00, 00000, CScizor) { Species = 212, Level = 50, Moves = new(210,232,014,163), Location = 128, IVs = new(0, 0, 0, 0, 0, 0) }, // Scizor: Bodybuilder ワーバン @ Card e Room (Japanese games only)
};
}

View file

@ -1,10 +1,10 @@
// ReSharper disable StringLiteralTypo
// ReSharper disable StringLiteralTypo
namespace PKHeX.Core;
/// <summary>
/// Team listings for <see cref="GameVersion.CXD"/> that have a shadow Pokémon afterwards.
/// </summary>
public static class Encounters3Shadow
public static class Encounters3ColoShadow
{
#region Colosseum

View file

@ -0,0 +1,24 @@
using System;
using static PKHeX.Core.Encounters3ColoShadow;
namespace PKHeX.Core;
/// <summary>
/// Permutations of teams, where a team may have multiple shadow Pokémon or alternate/re-battle scenarios.
/// </summary>
public static class Encounters3ColoTeams
{
public static readonly TeamLock[] First = Array.Empty<TeamLock>();
// Colo
public static readonly TeamLock[] ColoMakuhita = { CMakuhita };
public static readonly TeamLock[] Gligar = { CGligar };
public static readonly TeamLock[] Murkrow = { CMurkrow };
public static readonly TeamLock[] Heracross = { CHeracross };
public static readonly TeamLock[] Ursaring = { CUrsaring };
// E-Reader
public static readonly TeamLock[] CTogepi = {ETogepi};
public static readonly TeamLock[] CMareep = {EMareep};
public static readonly TeamLock[] CScizor = {EScizor};
}

View file

@ -7,78 +7,14 @@ namespace PKHeX.Core;
/// <summary>
/// Generation 3 Encounters
/// </summary>
internal static class Encounters3
internal static class Encounters3FRLG
{
private static readonly EncounterArea3[] SlotsSwarmRSE = GetSwarm("rse_swarm", "rs", RSE);
internal static readonly EncounterArea3[] SlotsR = ArrayUtil.ConcatAll(GetRegular("r", "ru", R), SlotsSwarmRSE);
internal static readonly EncounterArea3[] SlotsS = ArrayUtil.ConcatAll(GetRegular("s", "sa", S), SlotsSwarmRSE);
internal static readonly EncounterArea3[] SlotsE = ArrayUtil.ConcatAll(GetRegular("e", "em", E), SlotsSwarmRSE);
internal static readonly EncounterArea3[] SlotsFR = GetRegular("fr", "fr", FR);
internal static readonly EncounterArea3[] SlotsLG = GetRegular("lg", "lg", LG);
private static EncounterArea3[] GetRegular(string resource, string ident, GameVersion game) => EncounterArea3.GetAreas(Get(resource, ident), game);
private static EncounterArea3[] GetSwarm(string resource, string ident, GameVersion game) => EncounterArea3.GetAreasSwarm(Get(resource, ident), game);
static Encounters3()
{
MarkEncounterTradeStrings(TradeGift_RSE, TradeRSE);
MarkEncounterTradeStrings(TradeGift_FRLG, TradeFRLG);
}
private static readonly EncounterStatic3[] Encounter_RSE_Roam =
{
new(380, 40, S) { Roaming = true, Location = 016 }, // Latias
new(380, 40, E) { Roaming = true, Location = 016 }, // Latias
new(381, 40, R) { Roaming = true, Location = 016 }, // Latios
new(381, 40, E) { Roaming = true, Location = 016 }, // Latios
};
private static readonly EncounterStatic3[] Encounter_RSE_Regular =
{
// Starters
new(152, 05, E ) { Gift = true, Location = 000 }, // Chikorita @ Littleroot Town
new(155, 05, E ) { Gift = true, Location = 000 }, // Cyndaquil
new(158, 05, E ) { Gift = true, Location = 000 }, // Totodile
new(252, 05, RSE) { Gift = true, Location = 016 }, // Treecko @ Route 101
new(255, 05, RSE) { Gift = true, Location = 016 }, // Torchic
new(258, 05, RSE) { Gift = true, Location = 016 }, // Mudkip
// Fossil @ Rustboro City
new(345, 20, RSE) { Gift = true, Location = 010 }, // Lileep
new(347, 20, RSE) { Gift = true, Location = 010 }, // Anorith
// Gift
new(351, 25, RSE) { Gift = true, Location = 034 }, // Castform @ Weather Institute
new(374, 05, RSE) { Gift = true, Location = 013 }, // Beldum @ Mossdeep City
new(360, 05, RSE) { Gift = true, EggLocation = 253 }, // Wynaut Egg
// Stationary
new(352, 30, RSE) { Location = 034 }, // Kecleon @ Route 119
new(352, 30, RSE) { Location = 035 }, // Kecleon @ Route 120
new(101, 30, RS ) { Location = 066 }, // Electrode @ Hideout (R:Magma Hideout/S:Aqua Hideout)
new(101, 30, E ) { Location = 197 }, // Electrode @ Aqua Hideout
new(185, 40, E ) { Location = 058 }, // Sudowoodo @ Battle Frontier
// Stationary Lengendary
new(377, 40, RSE) { Location = 082 }, // Regirock @ Desert Ruins
new(378, 40, RSE) { Location = 081 }, // Regice @ Island Cave
new(379, 40, RSE) { Location = 083 }, // Registeel @ Ancient Tomb
new(380, 50, R ) { Location = 073 }, // Latias @ Southern Island
new(380, 50, E) { Location = 073, Fateful = true }, // Latias @ Southern Island
new(381, 50, S ) { Location = 073 }, // Latios @ Southern Island
new(381, 50, E) { Location = 073, Fateful = true }, // Latios @ Southern Island
new(382, 45, S ) { Location = 072 }, // Kyogre @ Cave of Origin
new(382, 70, E) { Location = 203 }, // Kyogre @ Marine Cave
new(383, 45, R ) { Location = 072 }, // Groudon @ Cave of Origin
new(383, 70, E) { Location = 205 }, // Groudon @ Terra Cave
new(384, 70, RSE) { Location = 085 }, // Rayquaza @ Sky Pillar
// Event
new(151, 30, E) { Location = 201, Fateful = true }, // Mew @ Faraway Island (Unreleased outside of Japan)
new(249, 70, E) { Location = 211, Fateful = true }, // Lugia @ Navel Rock
new(250, 70, E) { Location = 211, Fateful = true }, // Ho-Oh @ Navel Rock
new(386, 30, E) { Location = 200, Fateful = true, Form = 3 }, // Deoxys @ Birth Island
};
static Encounters3FRLG() => MarkEncounterTradeStrings(TradeGift_FRLG, TradeFRLG);
private static readonly EncounterStatic3[] Encounter_FRLG_Roam =
{
@ -139,26 +75,13 @@ internal static class Encounters3
new(386, 30, LG) { Location = 187, Fateful = true, Form = 2 }, // Deoxys @ Birth Island
};
private static readonly EncounterStatic3[] Encounter_RSE = ArrayUtil.ConcatAll(Encounter_RSE_Roam, Encounter_RSE_Regular);
private static readonly EncounterStatic3[] Encounter_FRLG = ArrayUtil.ConcatAll(Encounter_FRLG_Roam, Encounter_FRLG_Stationary);
private static readonly byte[] TradeContest_Cool = { 30, 05, 05, 05, 05, 10 };
private static readonly byte[] TradeContest_Cool = { 30, 05, 05, 05, 05, 10 };
private static readonly byte[] TradeContest_Beauty = { 05, 30, 05, 05, 05, 10 };
private static readonly byte[] TradeContest_Cute = { 05, 05, 30, 05, 05, 10 };
private static readonly byte[] TradeContest_Cute = { 05, 05, 30, 05, 05, 10 };
private static readonly byte[] TradeContest_Clever = { 05, 05, 05, 30, 05, 10 };
private static readonly byte[] TradeContest_Tough = { 05, 05, 05, 05, 30, 10 };
internal static readonly EncounterTrade3[] TradeGift_RSE =
{
new(RS, 0x00009C40, 296, 05) { Ability = OnlySecond, TID = 49562, SID = 00000, OTGender = 0, Gender = 0, IVs = new(5,5,4,4,4,4), Contest = TradeContest_Tough }, // Slakoth (Level 5 Breeding) -> Makuhita
new(RS, 0x498A2E17, 300, 03) { Ability = OnlyFirst, TID = 02259, SID = 00000, OTGender = 1, Gender = 1, IVs = new(5,4,4,5,4,4), Contest = TradeContest_Cute }, // Pikachu (Level 3 Viridian Forest) -> Skitty
new(RS, 0x4C970B7F, 222, 21) { Ability = OnlySecond, TID = 50183, SID = 00000, OTGender = 1, Gender = 1, IVs = new(4,4,5,4,4,5), Contest = TradeContest_Beauty }, // Bellossom (Level 21 Oddish -> Gloom -> Bellossom) -> Corsola
new(E , 0x00000084, 273, 04) { Ability = OnlySecond, TID = 38726, SID = 00000, OTGender = 0, Gender = 0, IVs = new(5,4,5,4,4,4), Contest = TradeContest_Cool }, // Ralts (Level 4 Route 102) -> Seedot
new(E , 0x0000006F, 311, 05) { Ability = OnlyFirst, TID = 08460, SID = 00001, OTGender = 0, Gender = 1, IVs = new(4,4,4,5,5,4), Contest = TradeContest_Cute }, // Volbeat (Level 5 Breeding) -> Plusle
new(E , 0x0000007F, 116, 05) { Ability = OnlyFirst, TID = 46285, SID = 00000, OTGender = 0, Gender = 0, IVs = new(5,4,4,4,5,4), Contest = TradeContest_Tough }, // Bagon (Level 5 Breeding) -> Horsea*
new(E , 0x0000008B, 052, 03) { Ability = OnlyFirst, TID = 25945, SID = 00001, OTGender = 1, Gender = 0, IVs = new(4,5,4,5,4,4), Contest = TradeContest_Clever }, // 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.
};
private static readonly byte[] TradeContest_Tough = { 05, 05, 05, 05, 30, 10 };
internal static readonly EncounterTrade3[] TradeGift_FRLG =
{
@ -177,14 +100,9 @@ internal static class Encounters3
// If Pokémon with * is evolved in a Generation IV or V game, its Ability will become its second Ability.
};
private const string tradeRSE = "traderse";
private const string tradeFRLG = "tradefrlg";
private static readonly string[][] TradeRSE = Util.GetLanguageStrings7(tradeRSE);
private static readonly string[][] TradeFRLG = Util.GetLanguageStrings7(tradeFRLG);
internal static readonly EncounterStatic3[] StaticR = GetEncounters(Encounter_RSE, R);
internal static readonly EncounterStatic3[] StaticS = GetEncounters(Encounter_RSE, S);
internal static readonly EncounterStatic3[] StaticE = GetEncounters(Encounter_RSE, E);
internal static readonly EncounterStatic3[] StaticFR = GetEncounters(Encounter_FRLG, FR);
internal static readonly EncounterStatic3[] StaticLG = GetEncounters(Encounter_FRLG, LG);
}

View file

@ -0,0 +1,103 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.AbilityPermission;
namespace PKHeX.Core;
/// <summary>
/// Generation 3 Encounters
/// </summary>
internal static class Encounters3RSE
{
private static readonly EncounterArea3[] SlotsSwarmRSE = GetSwarm("rse_swarm", "rs", RSE);
internal static readonly EncounterArea3[] SlotsR = ArrayUtil.ConcatAll(GetRegular("r", "ru", R), SlotsSwarmRSE);
internal static readonly EncounterArea3[] SlotsS = ArrayUtil.ConcatAll(GetRegular("s", "sa", S), SlotsSwarmRSE);
internal static readonly EncounterArea3[] SlotsE = ArrayUtil.ConcatAll(GetRegular("e", "em", E), SlotsSwarmRSE);
private static EncounterArea3[] GetRegular(string resource, string ident, GameVersion game) => EncounterArea3.GetAreas(Get(resource, ident), game);
private static EncounterArea3[] GetSwarm(string resource, string ident, GameVersion game) => EncounterArea3.GetAreasSwarm(Get(resource, ident), game);
static Encounters3RSE() => MarkEncounterTradeStrings(TradeGift_RSE, TradeRSE);
private static readonly EncounterStatic3[] Encounter_RSE_Roam =
{
new(380, 40, S) { Roaming = true, Location = 016 }, // Latias
new(380, 40, E) { Roaming = true, Location = 016 }, // Latias
new(381, 40, R) { Roaming = true, Location = 016 }, // Latios
new(381, 40, E) { Roaming = true, Location = 016 }, // Latios
};
private static readonly EncounterStatic3[] Encounter_RSE_Regular =
{
// Starters
new(152, 05, E ) { Gift = true, Location = 000 }, // Chikorita @ Littleroot Town
new(155, 05, E ) { Gift = true, Location = 000 }, // Cyndaquil
new(158, 05, E ) { Gift = true, Location = 000 }, // Totodile
new(252, 05, RSE) { Gift = true, Location = 016 }, // Treecko @ Route 101
new(255, 05, RSE) { Gift = true, Location = 016 }, // Torchic
new(258, 05, RSE) { Gift = true, Location = 016 }, // Mudkip
// Fossil @ Rustboro City
new(345, 20, RSE) { Gift = true, Location = 010 }, // Lileep
new(347, 20, RSE) { Gift = true, Location = 010 }, // Anorith
// Gift
new(351, 25, RSE) { Gift = true, Location = 034 }, // Castform @ Weather Institute
new(374, 05, RSE) { Gift = true, Location = 013 }, // Beldum @ Mossdeep City
new(360, 05, RSE) { Gift = true, EggLocation = 253 }, // Wynaut Egg
// Stationary
new(352, 30, RSE) { Location = 034 }, // Kecleon @ Route 119
new(352, 30, RSE) { Location = 035 }, // Kecleon @ Route 120
new(101, 30, RS ) { Location = 066 }, // Electrode @ Hideout (R:Magma Hideout/S:Aqua Hideout)
new(101, 30, E ) { Location = 197 }, // Electrode @ Aqua Hideout
new(185, 40, E ) { Location = 058 }, // Sudowoodo @ Battle Frontier
// Stationary Lengendary
new(377, 40, RSE) { Location = 082 }, // Regirock @ Desert Ruins
new(378, 40, RSE) { Location = 081 }, // Regice @ Island Cave
new(379, 40, RSE) { Location = 083 }, // Registeel @ Ancient Tomb
new(380, 50, R ) { Location = 073 }, // Latias @ Southern Island
new(380, 50, E) { Location = 073, Fateful = true }, // Latias @ Southern Island
new(381, 50, S ) { Location = 073 }, // Latios @ Southern Island
new(381, 50, E) { Location = 073, Fateful = true }, // Latios @ Southern Island
new(382, 45, S ) { Location = 072 }, // Kyogre @ Cave of Origin
new(382, 70, E) { Location = 203 }, // Kyogre @ Marine Cave
new(383, 45, R ) { Location = 072 }, // Groudon @ Cave of Origin
new(383, 70, E) { Location = 205 }, // Groudon @ Terra Cave
new(384, 70, RSE) { Location = 085 }, // Rayquaza @ Sky Pillar
// Event
new(151, 30, E) { Location = 201, Fateful = true }, // Mew @ Faraway Island (Unreleased outside of Japan)
new(249, 70, E) { Location = 211, Fateful = true }, // Lugia @ Navel Rock
new(250, 70, E) { Location = 211, Fateful = true }, // Ho-Oh @ Navel Rock
new(386, 30, E) { Location = 200, Fateful = true, Form = 3 }, // Deoxys @ Birth Island
};
private static readonly EncounterStatic3[] Encounter_RSE = ArrayUtil.ConcatAll(Encounter_RSE_Roam, Encounter_RSE_Regular);
private static readonly byte[] TradeContest_Cool = { 30, 05, 05, 05, 05, 10 };
private static readonly byte[] TradeContest_Beauty = { 05, 30, 05, 05, 05, 10 };
private static readonly byte[] TradeContest_Cute = { 05, 05, 30, 05, 05, 10 };
private static readonly byte[] TradeContest_Clever = { 05, 05, 05, 30, 05, 10 };
private static readonly byte[] TradeContest_Tough = { 05, 05, 05, 05, 30, 10 };
internal static readonly EncounterTrade3[] TradeGift_RSE =
{
new(RS, 0x00009C40, 296, 05) { Ability = OnlySecond, TID = 49562, SID = 00000, OTGender = 0, Gender = 0, IVs = new(5,5,4,4,4,4), Contest = TradeContest_Tough }, // Slakoth (Level 5 Breeding) -> Makuhita
new(RS, 0x498A2E17, 300, 03) { Ability = OnlyFirst, TID = 02259, SID = 00000, OTGender = 1, Gender = 1, IVs = new(5,4,4,5,4,4), Contest = TradeContest_Cute }, // Pikachu (Level 3 Viridian Forest) -> Skitty
new(RS, 0x4C970B7F, 222, 21) { Ability = OnlySecond, TID = 50183, SID = 00000, OTGender = 1, Gender = 1, IVs = new(4,4,5,4,4,5), Contest = TradeContest_Beauty }, // Bellossom (Level 21 Oddish -> Gloom -> Bellossom) -> Corsola
new(E , 0x00000084, 273, 04) { Ability = OnlySecond, TID = 38726, SID = 00000, OTGender = 0, Gender = 0, IVs = new(5,4,5,4,4,4), Contest = TradeContest_Cool }, // Ralts (Level 4 Route 102) -> Seedot
new(E , 0x0000006F, 311, 05) { Ability = OnlyFirst, TID = 08460, SID = 00001, OTGender = 0, Gender = 1, IVs = new(4,4,4,5,5,4), Contest = TradeContest_Cute }, // Volbeat (Level 5 Breeding) -> Plusle
new(E , 0x0000007F, 116, 05) { Ability = OnlyFirst, TID = 46285, SID = 00000, OTGender = 0, Gender = 0, IVs = new(5,4,4,4,5,4), Contest = TradeContest_Tough }, // Bagon (Level 5 Breeding) -> Horsea*
new(E , 0x0000008B, 052, 03) { Ability = OnlyFirst, TID = 25945, SID = 00001, OTGender = 1, Gender = 0, IVs = new(4,5,4,5,4,4), Contest = TradeContest_Clever }, // 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.
};
private const string tradeRSE = "traderse";
private static readonly string[][] TradeRSE = Util.GetLanguageStrings7(tradeRSE);
internal static readonly EncounterStatic3[] StaticR = GetEncounters(Encounter_RSE, R);
internal static readonly EncounterStatic3[] StaticS = GetEncounters(Encounter_RSE, S);
internal static readonly EncounterStatic3[] StaticE = GetEncounters(Encounter_RSE, E);
}

View file

@ -1,114 +1,9 @@
using static PKHeX.Core.Encounters3Teams;
using static PKHeX.Core.Encounters3XDTeams;
namespace PKHeX.Core;
internal static class Encounters3GC
internal static class Encounters3XD
{
#region Colosseum
private static readonly EncounterStatic3[] Encounter_ColoGift =
{
// Colosseum Starters: Gender locked to male
new(196, 25, GameVersion.COLO) { Gift = true, Location = 254, Gender = 0 }, // Espeon
new(197, 26, GameVersion.COLO) { Gift = true, Location = 254, Gender = 0, Moves = new(044) }, // Umbreon (Bite)
};
private static readonly EncounterStaticShadow[] Encounter_Colo =
{
new(GameVersion.COLO, 01, 03000, ColoMakuhita) { Species = 296, Level = 30, Moves = new(193,116,233,238), Location = 005 }, // Makuhita: Miror B.Peon Trudly @ Phenac City
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 003 }, // Bayleef: Cipher Peon Verde @ Phenac City
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 069 }, // Bayleef: Cipher Peon Verde @ Shadow PKMN Lab
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 115 }, // Bayleef: Cipher Peon Verde @ Realgam Tower
new(GameVersion.COLO, 02, 03000, First) { Species = 153, Level = 30, Moves = new(241,235,075,034), Location = 132 }, // Bayleef: Cipher Peon Verde @ Snagem Hideout
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 003 }, // Quilava: Cipher Peon Rosso @ Phenac City
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 069 }, // Quilava: Cipher Peon Rosso @ Shadow PKMN Lab
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 115 }, // Quilava: Cipher Peon Rosso @ Realgam Tower
new(GameVersion.COLO, 03, 03000, First) { Species = 156, Level = 30, Moves = new(241,108,091,172), Location = 132 }, // Quilava: Cipher Peon Rosso @ Snagem Hideout
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 003 }, // Croconaw: Cipher Peon Bluno @ Phenac City
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 069 }, // Croconaw: Cipher Peon Bluno @ Shadow PKMN Lab
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 115 }, // Croconaw: Cipher Peon Bluno @ Realgam Tower
new(GameVersion.COLO, 04, 03000, First) { Species = 159, Level = 30, Moves = new(240,184,044,057), Location = 132 }, // Croconaw: Cipher Peon Bluno @ Snagem Hideout
new(GameVersion.COLO, 05, 03000, First) { Species = 164, Level = 30, Moves = new(211,095,115,019), Location = 015 }, // Noctowl: Rider Nover @ Pyrite Town
new(GameVersion.COLO, 06, 03000, First) { Species = 180, Level = 30, Moves = new(085,086,178,084), Location = 015 }, // Flaaffy: St.Performer Diogo @ Pyrite Town
new(GameVersion.COLO, 07, 03000, First) { Species = 188, Level = 30, Moves = new(235,079,178,072), Location = 015 }, // Skiploom: Rider Leba @ Pyrite Town
new(GameVersion.COLO, 08, 04000, First) { Species = 195, Level = 30, Moves = new(341,133,021,057), Location = 015 }, // Quagsire: Bandana Guy Divel @ Pyrite Town
new(GameVersion.COLO, 09, 04000, First) { Species = 200, Level = 30, Moves = new(060,109,212,247), Location = 015 }, // Misdreavus: Rider Vant @ Pyrite Town
new(GameVersion.COLO, 10, 05000, First) { Species = 193, Level = 33, Moves = new(197,048,049,253), Location = 025 }, // Yanma: Cipher Peon Nore @ Pyrite Bldg
new(GameVersion.COLO, 10, 05000, First) { Species = 193, Level = 33, Moves = new(197,048,049,253), Location = 132 }, // Yanma: Cipher Peon Nore @ Snagem Hideout
new(GameVersion.COLO, 11, 05000, First) { Species = 162, Level = 33, Moves = new(231,270,098,070), Location = 015 }, // Furret: Rogue Cail @ Pyrite Town
new(GameVersion.COLO, 12, 04000, First) { Species = 218, Level = 30, Moves = new(241,281,088,053), Location = 015 }, // Slugma: Roller Boy Lon @ Pyrite Town
new(GameVersion.COLO, 13, 04000, First) { Species = 223, Level = 20, Moves = new(061,199,060,062), Location = 028 }, // Remoraid: Miror B.Peon Reath @ Pyrite Bldg
new(GameVersion.COLO, 13, 04000, First) { Species = 223, Level = 20, Moves = new(061,199,060,062), Location = 030 }, // Remoraid: Miror B.Peon Reath @ Pyrite Cave
new(GameVersion.COLO, 14, 05000, First) { Species = 226, Level = 33, Moves = new(017,048,061,036), Location = 028 }, // Mantine: Miror B.Peon Ferma @ Pyrite Bldg
new(GameVersion.COLO, 14, 05000, First) { Species = 226, Level = 33, Moves = new(017,048,061,036), Location = 030 }, // Mantine: Miror B.Peon Ferma @ Pyrite Cave
new(GameVersion.COLO, 15, 05000, First) { Species = 211, Level = 33, Moves = new(042,107,040,057), Location = 015 }, // Qwilfish: Hunter Doken @ Pyrite Bldg
new(GameVersion.COLO, 16, 05000, First) { Species = 307, Level = 33, Moves = new(197,347,093,136), Location = 031 }, // Meditite: Rider Twan @ Pyrite Cave
new(GameVersion.COLO, 17, 05000, First) { Species = 206, Level = 33, Moves = new(180,137,281,036), Location = 029 }, // Dunsparce: Rider Sosh @ Pyrite Cave
new(GameVersion.COLO, 18, 05000, First) { Species = 333, Level = 33, Moves = new(119,047,219,019), Location = 032 }, // Swablu: Hunter Zalo @ Pyrite Cave
new(GameVersion.COLO, 19, 10000, First) { Species = 185, Level = 35, Moves = new(175,335,067,157), Location = 104 }, // Sudowoodo: Cipher Admin Miror B. @ Realgam Tower
new(GameVersion.COLO, 19, 10000, First) { Species = 185, Level = 35, Moves = new(175,335,067,157), Location = 125 }, // Sudowoodo: Cipher Admin Miror B. @ Deep Colosseum
new(GameVersion.COLO, 19, 10000, First) { Species = 185, Level = 35, Moves = new(175,335,067,157), Location = 030 }, // Sudowoodo: Cipher Admin Miror B. @ Pyrite Cave
new(GameVersion.COLO, 20, 06000, First) { Species = 237, Level = 38, Moves = new(097,116,167,229), Location = 039 }, // Hitmontop: Cipher Peon Skrub @ Agate Village
new(GameVersion.COLO, 20, 06000, First) { Species = 237, Level = 38, Moves = new(097,116,167,229), Location = 132 }, // Hitmontop: Cipher Peon Skrub @ Snagem Hideout
new(GameVersion.COLO, 20, 06000, First) { Species = 237, Level = 38, Moves = new(097,116,167,229), Location = 068 }, // Hitmontop: Cipher Peon Skrub @ Shadow PKMN Lab
new(GameVersion.COLO, 21, 13000, First) { Species = 244, Level = 40, Moves = new(241,043,044,126), Location = 106 }, // Entei: Cipher Admin Dakim @ Realgam Tower
new(GameVersion.COLO, 21, 13000, First) { Species = 244, Level = 40, Moves = new(241,043,044,126), Location = 125 }, // Entei: Cipher Admin Dakim @ Deep Colosseum
new(GameVersion.COLO, 21, 13000, First) { Species = 244, Level = 40, Moves = new(241,043,044,126), Location = 076 }, // Entei: Cipher Admin Dakim @ Mt. Battle
new(GameVersion.COLO, 22, 06000, First) { Species = 166, Level = 40, Moves = new(226,219,048,004), Location = 047 }, // Ledian: Cipher Peon Kloak @ The Under
new(GameVersion.COLO, 22, 06000, First) { Species = 166, Level = 40, Moves = new(226,219,048,004), Location = 132 }, // Ledian: Cipher Peon Kloak @ Snagem Hideout
new(GameVersion.COLO, 23, 13000, First) { Species = 245, Level = 40, Moves = new(240,043,016,057), Location = 110 }, // Suicune (Surf): Cipher Admin Venus @ Realgam Tower
new(GameVersion.COLO, 23, 13000, First) { Species = 245, Level = 40, Moves = new(240,043,016,056), Location = 125 }, // Suicune (Hydro Pump): Cipher Admin Venus @ Deep Colosseum
new(GameVersion.COLO, 23, 13000, First) { Species = 245, Level = 40, Moves = new(240,043,016,057), Location = 055 }, // Suicune (Surf): Cipher Admin Venus @ The Under
new(GameVersion.COLO, 24, 06000, Gligar) { Species = 207, Level = 43, Moves = new(185,028,040,163), Location = 058 }, // Gligar: Hunter Frena @ The Under Subway
new(GameVersion.COLO, 24, 06000, Gligar) { Species = 207, Level = 43, Moves = new(185,028,040,163), Location = 133 }, // Gligar: Hunter Frena @ Snagem Hideout
new(GameVersion.COLO, 25, 06000, First) { Species = 234, Level = 43, Moves = new(310,095,043,036), Location = 058 }, // Stantler: Chaser Liaks @ The Under Subway
new(GameVersion.COLO, 25, 06000, First) { Species = 234, Level = 43, Moves = new(310,095,043,036), Location = 133 }, // Stantler: Chaser Liaks @ Snagem Hideout
new(GameVersion.COLO, 25, 06000, First) { Species = 221, Level = 43, Moves = new(203,316,091,059), Location = 058 }, // Piloswine: Bodybuilder Lonia @ The Under Subway
new(GameVersion.COLO, 26, 06000, First) { Species = 221, Level = 43, Moves = new(203,316,091,059), Location = 134 }, // Piloswine: Bodybuilder Lonia @ Snagem Hideout
new(GameVersion.COLO, 27, 06000, First) { Species = 215, Level = 43, Moves = new(185,103,154,196), Location = 058 }, // Sneasel: Rider Nelis @ The Under Subway
new(GameVersion.COLO, 27, 06000, First) { Species = 215, Level = 43, Moves = new(185,103,154,196), Location = 134 }, // Sneasel: Rider Nelis @ Snagem Hideout
new(GameVersion.COLO, 28, 06000, First) { Species = 190, Level = 43, Moves = new(226,321,154,129), Location = 067 }, // Aipom: Cipher Peon Cole @ Shadow PKMN Lab
new(GameVersion.COLO, 29, 06000, Murkrow) { Species = 198, Level = 43, Moves = new(185,212,101,019), Location = 067 }, // Murkrow: Cipher Peon Lare @ Shadow PKMN Lab
new(GameVersion.COLO, 30, 06000, First) { Species = 205, Level = 43, Moves = new(153,182,117,229), Location = 067 }, // Forretress: Cipher Peon Vana @ Shadow PKMN Lab
new(GameVersion.COLO, 31, 06000, First) { Species = 210, Level = 43, Moves = new(044,184,046,070), Location = 069 }, // Granbull: Cipher Peon Tanie @ Shadow PKMN Lab
new(GameVersion.COLO, 32, 06000, First) { Species = 329, Level = 43, Moves = new(242,103,328,225), Location = 068 }, // Vibrava: Cipher Peon Remil @ Shadow PKMN Lab
new(GameVersion.COLO, 33, 06000, First) { Species = 168, Level = 43, Moves = new(169,184,141,188), Location = 069 }, // Ariados: Cipher Peon Lesar @ Shadow PKMN Lab
new(GameVersion.COLO, 34, 13000, First) { Species = 243, Level = 40, Moves = new(240,043,098,087), Location = 113 }, // Raikou: Cipher Admin Ein @ Realgam Tower
new(GameVersion.COLO, 34, 13000, First) { Species = 243, Level = 40, Moves = new(240,043,098,087), Location = 125 }, // Raikou: Cipher Admin Ein @ Deep Colosseum
new(GameVersion.COLO, 34, 13000, First) { Species = 243, Level = 40, Moves = new(240,043,098,087), Location = 069 }, // Raikou: Cipher Admin Ein @ Shadow PKMN Lab
new(GameVersion.COLO, 35, 07000, First) { Species = 192, Level = 45, Moves = new(241,074,275,076), Location = 109 }, // Sunflora: Cipher Peon Baila @ Realgam Tower
new(GameVersion.COLO, 35, 07000, First) { Species = 192, Level = 45, Moves = new(241,074,275,076), Location = 132 }, // Sunflora: Cipher Peon Baila @ Snagem Hideout
new(GameVersion.COLO, 36, 07000, First) { Species = 225, Level = 45, Moves = new(059,213,217,019), Location = 109 }, // Delibird: Cipher Peon Arton @ Realgam Tower
new(GameVersion.COLO, 36, 07000, First) { Species = 225, Level = 45, Moves = new(059,213,217,019), Location = 132 }, // Delibird: Cipher Peon Arton @ Snagem Hideout
new(GameVersion.COLO, 37, 07000, Heracross) { Species = 214, Level = 45, Moves = new(179,203,068,280), Location = 111 }, // Heracross: Cipher Peon Dioge @ Realgam Tower
new(GameVersion.COLO, 37, 07000, Heracross) { Species = 214, Level = 45, Moves = new(179,203,068,280), Location = 132 }, // Heracross: Cipher Peon Dioge @ Snagem Hideout
new(GameVersion.COLO, 38, 13000, First) { Species = 227, Level = 47, Moves = new(065,319,314,211), Location = 117 }, // Skarmory: Snagem Head Gonzap @ Realgam Tower
new(GameVersion.COLO, 38, 13000, First) { Species = 227, Level = 47, Moves = new(065,319,314,211), Location = 133 }, // Skarmory: Snagem Head Gonzap @ Snagem Hideout
new(GameVersion.COLO, 39, 07000, First) { Species = 241, Level = 48, Moves = new(208,111,205,034), Location = 118 }, // Miltank: Bodybuilder Jomas @ Tower Colosseum
new(GameVersion.COLO, 40, 07000, First) { Species = 359, Level = 48, Moves = new(195,014,163,185), Location = 118 }, // Absol: Rider Delan @ Tower Colosseum
new(GameVersion.COLO, 41, 07000, First) { Species = 229, Level = 48, Moves = new(185,336,123,053), Location = 118 }, // Houndoom: Cipher Peon Nella @ Tower Colosseum
new(GameVersion.COLO, 42, 07000, First) { Species = 357, Level = 49, Moves = new(076,235,345,019), Location = 118 }, // Tropius: Cipher Peon Ston @ Tower Colosseum
new(GameVersion.COLO, 43, 15000, First) { Species = 376, Level = 50, Moves = new(063,334,232,094), Location = 118 }, // Metagross: Cipher Nascour @ Tower Colosseum
new(GameVersion.COLO, 44, 20000, First) { Species = 248, Level = 55, Moves = new(242,087,157,059), Location = 118 }, // Tyranitar: Cipher Head Evice @ Tower Colosseum
new(GameVersion.COLO, 55, 07000, First) { Species = 235, Level = 45, Moves = new(166,039,003,231), Location = 132 }, // Smeargle: Team Snagem Biden @ Snagem Hideout
new(GameVersion.COLO, 56, 07000, Ursaring) { Species = 217, Level = 45, Moves = new(185,313,122,163), Location = 132 }, // Ursaring: Team Snagem Agrev @ Snagem Hideout
new(GameVersion.COLO, 57, 07000, First) { Species = 213, Level = 45, Moves = new(219,227,156,117), Location = 125 }, // Shuckle: Deep King Agnol @ Deep Colosseum
new(GameVersion.COLO, 67, 05000, First) { Species = 176, Level = 20, Moves = new(118,204,186,281), Location = 001 }, // Togetic: Cipher Peon Fein @ Outskirt Stand
new(GameVersion.COLO, 00, 00000, CTogepi) { Species = 175, Level = 20, Moves = new(118,204,186,281), Location = 128, IVs = new(0, 0, 0, 0, 0, 0) }, // Togepi: Chaser ボデス @ Card e Room (Japanese games only)
new(GameVersion.COLO, 00, 00000, CMareep) { Species = 179, Level = 37, Moves = new(087,084,086,178), Location = 128, IVs = new(0, 0, 0, 0, 0, 0) }, // Mareep: Hunter ホル @ Card e Room (Japanese games only)
new(GameVersion.COLO, 00, 00000, CScizor) { Species = 212, Level = 50, Moves = new(210,232,014,163), Location = 128, IVs = new(0, 0, 0, 0, 0, 0) }, // Scizor: Bodybuilder ワーバン @ Card e Room (Japanese games only)
};
#endregion
#region XD
private static readonly EncounterStatic3[] Encounter_XDGift =
{
new(133, 10, GameVersion.XD) { Fateful = true, Gift = true, Location = 000, Moves = new(044) }, // Eevee (Bite)
@ -218,7 +113,5 @@ internal static class Encounters3GC
new(92, 041, 21, 304, 21, 194, 21), // Cave (Zubat, Aron, Wooper)
};
internal static readonly EncounterStatic[] Encounter_CXD = ArrayUtil.ConcatAll<EncounterStatic>(Encounter_ColoGift, Encounter_Colo, Encounter_XDGift, Encounter_XD);
#endregion
internal static readonly EncounterStatic[] Encounter_CXD = ArrayUtil.ConcatAll<EncounterStatic>(Encounters3Colo.Encounter_ColoGift, Encounters3Colo.Encounter_Colo, Encounter_XDGift, Encounter_XD);
}

File diff suppressed because it is too large Load diff

View file

@ -1,27 +1,15 @@
using System;
using static PKHeX.Core.Encounters3Shadow;
using System;
using static PKHeX.Core.Encounters3XDShadow;
namespace PKHeX.Core;
/// <summary>
/// Permutations of teams, where a team may have multiple shadow Pokémon or alternate/re-battle scenarios.
/// </summary>
public static class Encounters3Teams
public static class Encounters3XDTeams
{
public static readonly TeamLock[] First = Array.Empty<TeamLock>();
// Colo
public static readonly TeamLock[] ColoMakuhita = { CMakuhita };
public static readonly TeamLock[] Gligar = { CGligar };
public static readonly TeamLock[] Murkrow = { CMurkrow };
public static readonly TeamLock[] Heracross = { CHeracross };
public static readonly TeamLock[] Ursaring = { CUrsaring };
// E-Reader
public static readonly TeamLock[] CTogepi = {ETogepi};
public static readonly TeamLock[] CMareep = {EMareep};
public static readonly TeamLock[] CScizor = {EScizor};
// XD
public static readonly TeamLock[] Spheal = { XSphealCipherLab, XSphealPhenacCityandPost };
public static readonly TeamLock[] Seedot = { XSeedotCipherLab, XSeedotPhenacCity, XSeedotPost };

View file

@ -8,21 +8,13 @@ namespace PKHeX.Core;
/// <summary>
/// Generation 4 Encounters
/// </summary>
internal static class Encounters4
internal static class Encounters4DPPt
{
internal static readonly EncounterArea4[] SlotsD = EncounterArea4.GetAreas(Get("d", "da"), D);
internal static readonly EncounterArea4[] SlotsP = EncounterArea4.GetAreas(Get("p", "pe"), P);
internal static readonly EncounterArea4[] SlotsPt = EncounterArea4.GetAreas(Get("pt", "pt"), Pt);
internal static readonly EncounterArea4[] SlotsHG = EncounterArea4.GetAreas(Get("hg", "hg"), HG);
internal static readonly EncounterArea4[] SlotsSS = EncounterArea4.GetAreas(Get("ss", "ss"), SS);
private static readonly EncounterStatic4Pokewalker[] Encounter_PokeWalker = EncounterStatic4Pokewalker.GetAll(Util.GetBinaryResource("encounter_walker4.pkl"));
static Encounters4()
{
MarkEncounterTradeStrings(TradeGift_DPPt, TradeDPPt);
MarkEncounterTradeStrings(TradeGift_HGSS, TradeHGSS);
}
static Encounters4DPPt() => MarkEncounterTradeStrings(TradeGift_DPPt, TradeDPPt);
#region Static Encounter/Gift Tables
private static readonly EncounterStatic4[] Encounter_DPPt =
@ -98,104 +90,6 @@ internal static class Encounters4
new(Pt) { Roaming = true, Location = 16, Species = 145, Level = 60, GroundTile = Grass | Water }, // Zapdos
new(Pt) { Roaming = true, Location = 16, Species = 146, Level = 60, GroundTile = Grass | Water }, // Moltres
};
private static readonly EncounterStatic4[] Encounter_HGSS =
{
// Starters
new(HGSS) { Gift = true, Species = 001, Level = 05, Location = 138, GroundTile = Max_Pt }, // Bulbasaur @ Pallet Town
new(HGSS) { Gift = true, Species = 004, Level = 05, Location = 138, GroundTile = Max_Pt }, // Charmander
new(HGSS) { Gift = true, Species = 007, Level = 05, Location = 138, GroundTile = Max_Pt }, // Squirtle
new(HGSS) { Gift = true, Species = 152, Level = 05, Location = 126, GroundTile = Max_DP }, // Chikorita @ New Bark Town
new(HGSS) { Gift = true, Species = 155, Level = 05, Location = 126, GroundTile = Max_DP }, // Cyndaquil
new(HGSS) { Gift = true, Species = 158, Level = 05, Location = 126, GroundTile = Max_DP }, // Totodile
new(HGSS) { Gift = true, Species = 252, Level = 05, Location = 148, GroundTile = Max_Pt }, // Treecko @ Saffron City
new(HGSS) { Gift = true, Species = 255, Level = 05, Location = 148, GroundTile = Max_Pt }, // Torchic
new(HGSS) { Gift = true, Species = 258, Level = 05, Location = 148, GroundTile = Max_Pt }, // Mudkip
// Fossils @ Pewter City
new(HGSS) { Gift = true, Species = 138, Level = 20, Location = 140, GroundTile = Max_Pt }, // Omanyte
new(HGSS) { Gift = true, Species = 140, Level = 20, Location = 140, GroundTile = Max_Pt }, // Kabuto
new(HGSS) { Gift = true, Species = 142, Level = 20, Location = 140, GroundTile = Max_Pt }, // Aerodactyl
new(HGSS) { Gift = true, Species = 345, Level = 20, Location = 140, GroundTile = Max_Pt }, // Lileep
new(HGSS) { Gift = true, Species = 347, Level = 20, Location = 140, GroundTile = Max_Pt }, // Anorith
new(HGSS) { Gift = true, Species = 408, Level = 20, Location = 140, GroundTile = Max_Pt }, // Cranidos
new(HGSS) { Gift = true, Species = 410, Level = 20, Location = 140, GroundTile = Max_Pt }, // Shieldon
// Gift
new(HGSS) { Gift = true, Species = 072, Level = 15, Location = 130, GroundTile = Max_Pt }, // Tentacool @ Cianwood City
new(HGSS) { Gift = true, Species = 133, Level = 05, Location = 131, GroundTile = Max_Pt }, // Eevee @ Goldenrod City
new(HGSS) { Gift = true, Species = 147, Level = 15, Location = 222, GroundTile = Max_Pt, Moves = new(245) }, // Dratini @ Dragon's Den (ExtremeSpeed)
new(HGSS) { Gift = true, Species = 236, Level = 10, Location = 216, GroundTile = Max_Pt }, // Tyrogue @ Mt. Mortar
new(HGSS) { Gift = true, Species = 175, Level = 01, EggLocation = 2013, Moves = new((int)Move.Growl, (int)Move.Charm, (int)Move.Extrasensory) }, // Togepi Egg from Mr. Pokemon (Extrasensory as Egg move)
new(HGSS) { Gift = true, Species = 179, Level = 01, EggLocation = 2014 }, // Mareep Egg from Primo
new(HGSS) { Gift = true, Species = 194, Level = 01, EggLocation = 2014 }, // Wooper Egg from Primo
new(HGSS) { Gift = true, Species = 218, Level = 01, EggLocation = 2014 }, // Slugma Egg from Primo
// Celadon City Game Corner
new(HGSS) { Gift = true, Species = 122, Level = 15, Location = 144, GroundTile = Max_Pt }, // Mr. Mime
new(HGSS) { Gift = true, Species = 133, Level = 15, Location = 144, GroundTile = Max_Pt }, // Eevee
new(HGSS) { Gift = true, Species = 137, Level = 15, Location = 144, GroundTile = Max_Pt }, // Porygon
// Goldenrod City Game Corner
new(HGSS) { Gift = true, Species = 063, Level = 15, Location = 131, GroundTile = Max_Pt }, // Abra
new(HG ) { Gift = true, Species = 023, Level = 15, Location = 131, GroundTile = Max_Pt }, // Ekans
new( SS) { Gift = true, Species = 027, Level = 15, Location = 131, GroundTile = Max_Pt }, // Sandshrew
new(HGSS) { Gift = true, Species = 147, Level = 15, Location = 131, GroundTile = Max_Pt }, // Dratini
// Team Rocket HQ Trap Floor
new(HGSS) { Species = 100, Level = 23, Location = 213, GroundTile = Building }, // Voltorb
new(HGSS) { Species = 074, Level = 21, Location = 213, GroundTile = Building }, // Geodude
new(HGSS) { Species = 109, Level = 21, Location = 213, GroundTile = Building }, // Koffing
// Stationary
new(HGSS) { Species = 130, Level = 30, Location = 135, GroundTile = Water, Shiny = Shiny.Always }, // Gyarados @ Lake of Rage
new(HGSS) { Species = 131, Level = 20, Location = 210, GroundTile = Water }, // Lapras @ Union Cave Friday Only
new(HGSS) { Species = 101, Level = 23, Location = 213, GroundTile = Building }, // Electrode @ Team Rocket HQ
new(HGSS) { Species = 143, Level = 50, Location = 159 }, // Snorlax @ Route 11
new(HGSS) { Species = 143, Level = 50, Location = 160 }, // Snorlax @ Route 12
new(HGSS) { Species = 185, Level = 20, Location = 184 }, // Sudowoodo @ Route 36, Encounter does not have type
new(HGSS) // Spiky-Eared Pichu @ Ilex Forest
{
Species = 172,
Level = 30,
Gender = 1,
Form = 1,
Nature = Nature.Naughty,
Location = 214,
Moves = new(344, 270, 207, 220),
GroundTile = Max_Pt,
Shiny = Shiny.Never,
},
// Stationary Legendary
new(HGSS) { Species = 144, Level = 50, Location = 203, GroundTile = Cave }, // Articuno @ Seafoam Islands
new(HGSS) { Species = 145, Level = 50, Location = 158 }, // Zapdos @ Route 10
new(HGSS) { Species = 146, Level = 50, Location = 219, GroundTile = Cave }, // Moltres @ Mt. Silver Cave
new(HGSS) { Species = 150, Level = 70, Location = 199, GroundTile = Cave }, // Mewtwo @ Cerulean Cave
new(HGSS) { Species = 245, Level = 40, Location = 173 }, // Suicune @ Route 25
new(HGSS) { Species = 245, Level = 40, Location = 206, GroundTile = Cave }, // Suicune @ Burned Tower
new( SS) { Species = 249, Level = 45, Location = 218, GroundTile = Water }, // Lugia @ Whirl Islands
new(HG ) { Species = 249, Level = 70, Location = 218, GroundTile = Water }, // Lugia @ Whirl Islands
new(HG ) { Species = 250, Level = 45, Location = 205, GroundTile = Building }, // Ho-Oh @ Bell Tower
new( SS) { Species = 250, Level = 70, Location = 205, GroundTile = Building }, // Ho-Oh @ Bell Tower
new( SS) { Species = 380, Level = 40, Location = 140, GroundTile = Building }, // Latias @ Pewter City
new(HG ) { Species = 381, Level = 40, Location = 140, GroundTile = Building }, // Latios @ Pewter City
new(HG ) { Species = 382, Level = 50, Location = 232, GroundTile = Cave }, // Kyogre @ Embedded Tower
new( SS) { Species = 383, Level = 50, Location = 232, GroundTile = Cave }, // Groudon @ Embedded Tower
new(HGSS) { Species = 384, Level = 50, Location = 232, GroundTile = Cave }, // Rayquaza @ Embedded Tower
new(HGSS) { Species = 483, Level = 01, Location = 231, Gift = true, GroundTile = Max_Pt }, // Dialga @ Sinjoh Ruins
new(HGSS) { Species = 484, Level = 01, Location = 231, Gift = true, GroundTile = Max_Pt }, // Palkia @ Sinjoh Ruins
new(HGSS) { Species = 487, Level = 01, Location = 231, Gift = true, GroundTile = Max_Pt, Form = 1, HeldItem = 112 }, // Giratina @ Sinjoh Ruins
// Johto Roamers
new(HGSS) { Roaming = true, Species = 243, Location = 177, Level = 40, GroundTile = Grass | Water }, // Raikou
new(HGSS) { Roaming = true, Species = 244, Location = 177, Level = 40, GroundTile = Grass | Water }, // Entei
// Kanto Roamers
new(HG ) { Roaming = true, Species = 380, Location = 149, Level = 35, GroundTile = Grass | Water }, // Latias
new( SS) { Roaming = true, Species = 381, Location = 149, Level = 35, GroundTile = Grass | Water }, // Latios
};
#endregion
#region Trade Tables
@ -235,33 +129,11 @@ internal static class Encounters4
internal static readonly EncounterTrade4[] TradeGift_DPPt = ArrayUtil.ConcatAll(TradeGift_DPPtIngame, RanchGifts);
internal static readonly EncounterTrade4PID[] TradeGift_HGSS =
{
new(HGSS, 0x000025EF, 095, 01) { Ability = OnlySecond, TID = 48926, SID = 00000, OTGender = 0, Gender = 0, IVs = new(25,20,25,15,15,15) }, // Bellsprout -> Onix
new(HGSS, 0x00002310, 066, 01) { Ability = OnlyFirst, TID = 37460, SID = 00000, OTGender = 0, Gender = 1, IVs = new(15,25,20,20,15,15) }, // Drowzee -> Machop
new(HGSS, 0x000001DB, 100, 01) { Ability = OnlySecond, TID = 29189, SID = 00000, OTGender = 0, Gender = 2, IVs = new(15,20,15,25,25,15) }, // Krabby -> Voltorb
new(HGSS, 0x0001FC0A, 085, 15) { Ability = OnlyFirst, TID = 00283, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,15,15,15) }, // Dragonair (15 from DPPt) -> Dodrio
new(HGSS, 0x0000D136, 082, 19) { Ability = OnlyFirst, TID = 50082, SID = 00000, OTGender = 0, Gender = 2, IVs = new(15,20,15,20,20,20) }, // Dugtrio (19 from Diglett's Cave) -> Magneton
new(HGSS, 0x000034E4, 178, 16) { Ability = OnlyFirst, TID = 15616, SID = 00000, OTGender = 0, Gender = 0, IVs = new(15,20,15,20,20,20) }, // Haunter (16 from Old Chateau) -> Xatu
new(HGSS, 0x00485876, 025, 02) { Ability = OnlyFirst, TID = 33038, SID = 00000, OTGender = 0, Gender = 1, IVs = new(20,25,18,31,25,13) }, // Pikachu
new(HGSS, 0x0012B6D4, 374, 31) { Ability = OnlyFirst, TID = 23478, SID = 00000, OTGender = 0, Gender = 2, IVs = new(28,29,24,23,24,25) }, // Forretress -> Beldum
new(HGSS, 0x0012971C, 111, 01) { Ability = OnlyFirst, TID = 06845, SID = 00000, OTGender = 0, Gender = 1, IVs = new(22,31,13,00,22,09), Moves = new(422) }, // Bonsly -> Rhyhorn
new(HGSS, 0x00101596, 208, 01) { Ability = OnlyFirst, TID = 26491, SID = 00000, OTGender = 1, Gender = 0, IVs = new(08,30,28,06,18,20) }, // Any -> Steelix
//Gift
new(HGSS, 0x00006B5E, 021, 20) { Ability = OnlyFirst, TID = 01001, SID = 00000, OTGender = 0, Gender = 1, IVs = new(15,20,15,20,20,20), MetLocation = 183, Moves = new(043,031,228,332) },// Webster's Spearow
new(HGSS, 0x000214D7, 213, 20) { Ability = OnlySecond, TID = 04336, SID = 00001, OTGender = 0, Gender = 0, IVs = new(15,20,15,20,20,20), MetLocation = 130, Moves = new(132,117,227,219) },// Kirk's Shuckle
};
private const string tradeDPPt = "tradedppt";
private const string tradeHGSS = "tradehgss";
private static readonly string[][] TradeDPPt = Util.GetLanguageStrings8(tradeDPPt);
private static readonly string[][] TradeHGSS = Util.GetLanguageStrings8(tradeHGSS);
#endregion
internal static readonly EncounterStatic4[] StaticD = GetEncounters(Encounter_DPPt, D);
internal static readonly EncounterStatic4[] StaticP = GetEncounters(Encounter_DPPt, P);
internal static readonly EncounterStatic4[] StaticPt = GetEncounters(Encounter_DPPt, Pt);
internal static readonly EncounterStatic[] StaticHG = GetEncounters(ArrayUtil.ConcatAll<EncounterStatic>(Encounter_HGSS, Encounter_PokeWalker), HG);
internal static readonly EncounterStatic[] StaticSS = GetEncounters(ArrayUtil.ConcatAll<EncounterStatic>(Encounter_HGSS, Encounter_PokeWalker), SS);
}

View file

@ -0,0 +1,144 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.GroundTileAllowed;
using static PKHeX.Core.AbilityPermission;
namespace PKHeX.Core;
/// <summary>
/// Generation 4 Encounters
/// </summary>
internal static class Encounters4HGSS
{
internal static readonly EncounterArea4[] SlotsHG = EncounterArea4.GetAreas(Get("hg", "hg"), HG);
internal static readonly EncounterArea4[] SlotsSS = EncounterArea4.GetAreas(Get("ss", "ss"), SS);
private static readonly EncounterStatic4Pokewalker[] Encounter_PokeWalker = EncounterStatic4Pokewalker.GetAll(Util.GetBinaryResource("encounter_walker4.pkl"));
static Encounters4HGSS() => MarkEncounterTradeStrings(TradeGift_HGSS, TradeHGSS);
#region Static Encounter/Gift Tables
private static readonly EncounterStatic4[] Encounter_HGSS =
{
// Starters
new(HGSS) { Gift = true, Species = 001, Level = 05, Location = 138, GroundTile = Max_Pt }, // Bulbasaur @ Pallet Town
new(HGSS) { Gift = true, Species = 004, Level = 05, Location = 138, GroundTile = Max_Pt }, // Charmander
new(HGSS) { Gift = true, Species = 007, Level = 05, Location = 138, GroundTile = Max_Pt }, // Squirtle
new(HGSS) { Gift = true, Species = 152, Level = 05, Location = 126, GroundTile = Max_DP }, // Chikorita @ New Bark Town
new(HGSS) { Gift = true, Species = 155, Level = 05, Location = 126, GroundTile = Max_DP }, // Cyndaquil
new(HGSS) { Gift = true, Species = 158, Level = 05, Location = 126, GroundTile = Max_DP }, // Totodile
new(HGSS) { Gift = true, Species = 252, Level = 05, Location = 148, GroundTile = Max_Pt }, // Treecko @ Saffron City
new(HGSS) { Gift = true, Species = 255, Level = 05, Location = 148, GroundTile = Max_Pt }, // Torchic
new(HGSS) { Gift = true, Species = 258, Level = 05, Location = 148, GroundTile = Max_Pt }, // Mudkip
// Fossils @ Pewter City
new(HGSS) { Gift = true, Species = 138, Level = 20, Location = 140, GroundTile = Max_Pt }, // Omanyte
new(HGSS) { Gift = true, Species = 140, Level = 20, Location = 140, GroundTile = Max_Pt }, // Kabuto
new(HGSS) { Gift = true, Species = 142, Level = 20, Location = 140, GroundTile = Max_Pt }, // Aerodactyl
new(HGSS) { Gift = true, Species = 345, Level = 20, Location = 140, GroundTile = Max_Pt }, // Lileep
new(HGSS) { Gift = true, Species = 347, Level = 20, Location = 140, GroundTile = Max_Pt }, // Anorith
new(HGSS) { Gift = true, Species = 408, Level = 20, Location = 140, GroundTile = Max_Pt }, // Cranidos
new(HGSS) { Gift = true, Species = 410, Level = 20, Location = 140, GroundTile = Max_Pt }, // Shieldon
// Gift
new(HGSS) { Gift = true, Species = 072, Level = 15, Location = 130, GroundTile = Max_Pt }, // Tentacool @ Cianwood City
new(HGSS) { Gift = true, Species = 133, Level = 05, Location = 131, GroundTile = Max_Pt }, // Eevee @ Goldenrod City
new(HGSS) { Gift = true, Species = 147, Level = 15, Location = 222, GroundTile = Max_Pt, Moves = new(245) }, // Dratini @ Dragon's Den (ExtremeSpeed)
new(HGSS) { Gift = true, Species = 236, Level = 10, Location = 216, GroundTile = Max_Pt }, // Tyrogue @ Mt. Mortar
new(HGSS) { Gift = true, Species = 175, Level = 01, EggLocation = 2013, Moves = new((int)Move.Growl, (int)Move.Charm, (int)Move.Extrasensory) }, // Togepi Egg from Mr. Pokemon (Extrasensory as Egg move)
new(HGSS) { Gift = true, Species = 179, Level = 01, EggLocation = 2014 }, // Mareep Egg from Primo
new(HGSS) { Gift = true, Species = 194, Level = 01, EggLocation = 2014 }, // Wooper Egg from Primo
new(HGSS) { Gift = true, Species = 218, Level = 01, EggLocation = 2014 }, // Slugma Egg from Primo
// Celadon City Game Corner
new(HGSS) { Gift = true, Species = 122, Level = 15, Location = 144, GroundTile = Max_Pt }, // Mr. Mime
new(HGSS) { Gift = true, Species = 133, Level = 15, Location = 144, GroundTile = Max_Pt }, // Eevee
new(HGSS) { Gift = true, Species = 137, Level = 15, Location = 144, GroundTile = Max_Pt }, // Porygon
// Goldenrod City Game Corner
new(HGSS) { Gift = true, Species = 063, Level = 15, Location = 131, GroundTile = Max_Pt }, // Abra
new(HG ) { Gift = true, Species = 023, Level = 15, Location = 131, GroundTile = Max_Pt }, // Ekans
new( SS) { Gift = true, Species = 027, Level = 15, Location = 131, GroundTile = Max_Pt }, // Sandshrew
new(HGSS) { Gift = true, Species = 147, Level = 15, Location = 131, GroundTile = Max_Pt }, // Dratini
// Team Rocket HQ Trap Floor
new(HGSS) { Species = 100, Level = 23, Location = 213, GroundTile = Building }, // Voltorb
new(HGSS) { Species = 074, Level = 21, Location = 213, GroundTile = Building }, // Geodude
new(HGSS) { Species = 109, Level = 21, Location = 213, GroundTile = Building }, // Koffing
// Stationary
new(HGSS) { Species = 130, Level = 30, Location = 135, GroundTile = Water, Shiny = Shiny.Always }, // Gyarados @ Lake of Rage
new(HGSS) { Species = 131, Level = 20, Location = 210, GroundTile = Water }, // Lapras @ Union Cave Friday Only
new(HGSS) { Species = 101, Level = 23, Location = 213, GroundTile = Building }, // Electrode @ Team Rocket HQ
new(HGSS) { Species = 143, Level = 50, Location = 159 }, // Snorlax @ Route 11
new(HGSS) { Species = 143, Level = 50, Location = 160 }, // Snorlax @ Route 12
new(HGSS) { Species = 185, Level = 20, Location = 184 }, // Sudowoodo @ Route 36, Encounter does not have type
new(HGSS) // Spiky-Eared Pichu @ Ilex Forest
{
Species = 172,
Level = 30,
Gender = 1,
Form = 1,
Nature = Nature.Naughty,
Location = 214,
Moves = new(344, 270, 207, 220),
GroundTile = Max_Pt,
Shiny = Shiny.Never,
},
// Stationary Legendary
new(HGSS) { Species = 144, Level = 50, Location = 203, GroundTile = Cave }, // Articuno @ Seafoam Islands
new(HGSS) { Species = 145, Level = 50, Location = 158 }, // Zapdos @ Route 10
new(HGSS) { Species = 146, Level = 50, Location = 219, GroundTile = Cave }, // Moltres @ Mt. Silver Cave
new(HGSS) { Species = 150, Level = 70, Location = 199, GroundTile = Cave }, // Mewtwo @ Cerulean Cave
new(HGSS) { Species = 245, Level = 40, Location = 173 }, // Suicune @ Route 25
new(HGSS) { Species = 245, Level = 40, Location = 206, GroundTile = Cave }, // Suicune @ Burned Tower
new( SS) { Species = 249, Level = 45, Location = 218, GroundTile = Water }, // Lugia @ Whirl Islands
new(HG ) { Species = 249, Level = 70, Location = 218, GroundTile = Water }, // Lugia @ Whirl Islands
new(HG ) { Species = 250, Level = 45, Location = 205, GroundTile = Building }, // Ho-Oh @ Bell Tower
new( SS) { Species = 250, Level = 70, Location = 205, GroundTile = Building }, // Ho-Oh @ Bell Tower
new( SS) { Species = 380, Level = 40, Location = 140, GroundTile = Building }, // Latias @ Pewter City
new(HG ) { Species = 381, Level = 40, Location = 140, GroundTile = Building }, // Latios @ Pewter City
new(HG ) { Species = 382, Level = 50, Location = 232, GroundTile = Cave }, // Kyogre @ Embedded Tower
new( SS) { Species = 383, Level = 50, Location = 232, GroundTile = Cave }, // Groudon @ Embedded Tower
new(HGSS) { Species = 384, Level = 50, Location = 232, GroundTile = Cave }, // Rayquaza @ Embedded Tower
new(HGSS) { Species = 483, Level = 01, Location = 231, Gift = true, GroundTile = Max_Pt }, // Dialga @ Sinjoh Ruins
new(HGSS) { Species = 484, Level = 01, Location = 231, Gift = true, GroundTile = Max_Pt }, // Palkia @ Sinjoh Ruins
new(HGSS) { Species = 487, Level = 01, Location = 231, Gift = true, GroundTile = Max_Pt, Form = 1, HeldItem = 112 }, // Giratina @ Sinjoh Ruins
// Johto Roamers
new(HGSS) { Roaming = true, Species = 243, Location = 177, Level = 40, GroundTile = Grass | Water }, // Raikou
new(HGSS) { Roaming = true, Species = 244, Location = 177, Level = 40, GroundTile = Grass | Water }, // Entei
// Kanto Roamers
new(HG ) { Roaming = true, Species = 380, Location = 149, Level = 35, GroundTile = Grass | Water }, // Latias
new( SS) { Roaming = true, Species = 381, Location = 149, Level = 35, GroundTile = Grass | Water }, // Latios
};
#endregion
#region Trade Tables
internal static readonly EncounterTrade4PID[] TradeGift_HGSS =
{
new(HGSS, 0x000025EF, 095, 01) { Ability = OnlySecond, TID = 48926, SID = 00000, OTGender = 0, Gender = 0, IVs = new(25,20,25,15,15,15) }, // Bellsprout -> Onix
new(HGSS, 0x00002310, 066, 01) { Ability = OnlyFirst, TID = 37460, SID = 00000, OTGender = 0, Gender = 1, IVs = new(15,25,20,20,15,15) }, // Drowzee -> Machop
new(HGSS, 0x000001DB, 100, 01) { Ability = OnlySecond, TID = 29189, SID = 00000, OTGender = 0, Gender = 2, IVs = new(15,20,15,25,25,15) }, // Krabby -> Voltorb
new(HGSS, 0x0001FC0A, 085, 15) { Ability = OnlyFirst, TID = 00283, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,15,15,15) }, // Dragonair (15 from DPPt) -> Dodrio
new(HGSS, 0x0000D136, 082, 19) { Ability = OnlyFirst, TID = 50082, SID = 00000, OTGender = 0, Gender = 2, IVs = new(15,20,15,20,20,20) }, // Dugtrio (19 from Diglett's Cave) -> Magneton
new(HGSS, 0x000034E4, 178, 16) { Ability = OnlyFirst, TID = 15616, SID = 00000, OTGender = 0, Gender = 0, IVs = new(15,20,15,20,20,20) }, // Haunter (16 from Old Chateau) -> Xatu
new(HGSS, 0x00485876, 025, 02) { Ability = OnlyFirst, TID = 33038, SID = 00000, OTGender = 0, Gender = 1, IVs = new(20,25,18,31,25,13) }, // Pikachu
new(HGSS, 0x0012B6D4, 374, 31) { Ability = OnlyFirst, TID = 23478, SID = 00000, OTGender = 0, Gender = 2, IVs = new(28,29,24,23,24,25) }, // Forretress -> Beldum
new(HGSS, 0x0012971C, 111, 01) { Ability = OnlyFirst, TID = 06845, SID = 00000, OTGender = 0, Gender = 1, IVs = new(22,31,13,00,22,09), Moves = new(422) }, // Bonsly -> Rhyhorn
new(HGSS, 0x00101596, 208, 01) { Ability = OnlyFirst, TID = 26491, SID = 00000, OTGender = 1, Gender = 0, IVs = new(08,30,28,06,18,20) }, // Any -> Steelix
//Gift
new(HGSS, 0x00006B5E, 021, 20) { Ability = OnlyFirst, TID = 01001, SID = 00000, OTGender = 0, Gender = 1, IVs = new(15,20,15,20,20,20), MetLocation = 183, Moves = new(043,031,228,332) },// Webster's Spearow
new(HGSS, 0x000214D7, 213, 20) { Ability = OnlySecond, TID = 04336, SID = 00001, OTGender = 0, Gender = 0, IVs = new(15,20,15,20,20,20), MetLocation = 130, Moves = new(132,117,227,219) },// Kirk's Shuckle
};
private const string tradeHGSS = "tradehgss";
private static readonly string[][] TradeHGSS = Util.GetLanguageStrings8(tradeHGSS);
#endregion
internal static readonly EncounterStatic[] StaticHG = GetEncounters(ArrayUtil.ConcatAll<EncounterStatic>(Encounter_HGSS, Encounter_PokeWalker), HG);
internal static readonly EncounterStatic[] StaticSS = GetEncounters(ArrayUtil.ConcatAll<EncounterStatic>(Encounter_HGSS, Encounter_PokeWalker), SS);
}

View file

@ -0,0 +1,230 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.AbilityPermission;
using static PKHeX.Core.Encounters5DR;
namespace PKHeX.Core;
/// <summary>
/// Generation 5 Encounters
/// </summary>
public static class Encounters5B2W2
{
internal static readonly EncounterArea5[] SlotsB2 = EncounterArea5.GetAreas(Get("b2", "52"), B2);
internal static readonly EncounterArea5[] SlotsW2 = EncounterArea5.GetAreas(Get("w2", "52"), W2);
static Encounters5B2W2() => MarkEncounterTradeStrings(TradeGift_B2W2_Regular, TradeB2W2);
#region DreamWorld Encounter
public static readonly EncounterStatic5[] DreamWorld_B2W2 = DreamWorldEntry.GetArray(B2W2, new DreamWorldEntry[]
{
// Pleasant Forest
new(535, 10, 496, 414, 352), // Tympole
new(546, 10, 073, 227, 388), // Cottonee
new(548, 10, 079, 204, 230), // Petilil
new(588, 10, 203, 224, 450), // Karrablast
new(616, 10, 051, 226, 227), // Shelmet
new(545, 30, 342, 390, 276), // Scolipede
// Windswept Sky
new(519, 10, 016, 095, 234), // Pidove
new(561, 10, 095, 500, 257), // Sigilyph
new(580, 10, 432, 362, 382), // Ducklett
new(587, 10, 098, 403, 204), // Emolga
// Sparkling Sea
new(550, 10, 029, 097, 428, Form: 0), // Basculin-Red
new(550, 10, 029, 097, 428, Form: 1), // Basculin-Blue
new(594, 10, 392, 243, 220), // Alomomola
new(618, 10, 189, 174, 281), // Stunfisk
new(564, 10, 205, 175, 334), // Tirtouga
// Spooky Manor
new(605, 10, 377, 112, 417), // Elgyem
new(624, 10, 210, 427, 389), // Pawniard
new(596, 36, 486, 050, 228), // Galvantula
new(578, 32, 105, 286, 271), // Duosion
new(622, 10, 205, 007, 009), // Golett
// Rugged Mountain
new(631, 10, 510, 257, 202), // Heatmor
new(632, 10, 210, 203, 422), // Durant
new(556, 10, 042, 073, 191), // Maractus
new(558, 34, 157, 068, 400), // Crustle
new(553, 40, 242, 068, 212), // Krookodile
// Icy Cave
new(529, 10, 229, 319, 431), // Drilbur
new(621, 10, 044, 424, 389), // Druddigon
new(525, 25, 479, 174, 484), // Boldore
new(583, 35, 429, 420, 286), // Vanillish
new(600, 38, 451, 356, 393), // Klang
new(610, 10, 082, 068, 400), // Axew
// Dream Park
new(531, 10, 270, 227, 281), // Audino
new(538, 10, 020, 008, 276), // Throh
new(539, 10, 249, 009, 530), // Sawk
new(559, 10, 067, 252, 409), // Scraggy
new(533, 25, 067, 183, 409), // Gurdurr
// PGL
new(575, 32, 243, Gender: 0), // Gothorita
new(025, 10, 029, Gender: 0), // Pikachu
new(511, 10, 437, Gender: 0), // Pansage
new(513, 10, 257, Gender: 0), // Pansear
new(515, 10, 056, Gender: 0), // Panpour
new(387, 10, 254, Gender: 0), // Turtwig
new(390, 10, 252, Gender: 0), // Chimchar
new(393, 10, 297, Gender: 0), // Piplup
new(575, 32, 286, Gender: 0), // Gothorita
});
#endregion
#region Static Encounter/Gift Tables
private static readonly EncounterStatic5[] Encounter_B2W2_Regular =
{
// Starters @ Aspertia City
new(B2W2) { Gift = true, Species = 495, Level = 05, Location = 117 }, // Snivy
new(B2W2) { Gift = true, Species = 498, Level = 05, Location = 117 }, // Tepig
new(B2W2) { Gift = true, Species = 501, Level = 05, Location = 117 }, // Oshawott
// Fossils @ Nacrene City
new(B2W2) { Gift = true, Species = 138, Level = 25, Location = 007 }, // Omanyte
new(B2W2) { Gift = true, Species = 140, Level = 25, Location = 007 }, // Kabuto
new(B2W2) { Gift = true, Species = 142, Level = 25, Location = 007 }, // Aerodactyl
new(B2W2) { Gift = true, Species = 345, Level = 25, Location = 007 }, // Lileep
new(B2W2) { Gift = true, Species = 347, Level = 25, Location = 007 }, // Anorith
new(B2W2) { Gift = true, Species = 408, Level = 25, Location = 007 }, // Cranidos
new(B2W2) { Gift = true, Species = 410, Level = 25, Location = 007 }, // Shieldon
new(B2W2) { Gift = true, Species = 564, Level = 25, Location = 007 }, // Tirtouga
new(B2W2) { Gift = true, Species = 566, Level = 25, Location = 007 }, // Archen
// Gift
new(B2W2) { Gift = true, Species = 133, Level = 10, Location = 008, Ability = OnlyHidden }, // HA Eevee @ Castelia City
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 0 }, // HA Deerling @ Route 6
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 1 }, // HA Deerling @ Route 6
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 2 }, // HA Deerling @ Route 6
new(B2W2) { Gift = true, Species = 585, Level = 30, Location = 019, Ability = OnlyHidden, Form = 3 }, // HA Deerling @ Route 6
new(B2 ) { Gift = true, Species = 443, Level = 01, Location = 122, Shiny = Shiny.Always, Gender = 0 }, // Shiny Gible @ Floccesy Town
new( W2) { Gift = true, Species = 147, Level = 01, Location = 122, Shiny = Shiny.Always, Gender = 0 }, // Shiny Dratini @ Floccesy Town
new(B2W2) { Gift = true, Species = 129, Level = 05, Location = 068 } , // Magikarp @ Marvelous Bridge
new(B2W2) { Gift = true, Species = 440, Level = 01, EggLocation = 60003 }, // Happiny Egg from PKMN Breeder
// Stationary
new(B2W2) { Species = 590, Level = 29, Location = 019 }, // Foongus @ Route 6
new(B2W2) { Species = 591, Level = 43, Location = 024 }, // Amoonguss @ Route 11
new(B2W2) { Species = 591, Level = 47, Location = 127 }, // Amoonguss @ Route 22
new(B2W2) { Species = 591, Level = 56, Location = 128 }, // Amoonguss @ Route 23
new(B2 ) { Species = 593, Level = 40, Location = 071, Ability = OnlyHidden, Gender = 0 }, // HA Jellicent @ Undella Bay Mon Only
new( W2) { Species = 593, Level = 40, Location = 071, Ability = OnlyHidden, Gender = 1 }, // HA Jellicent @ Undella Bay Thurs Only
new(B2W2) { Species = 593, Level = 40, Location = 071 }, // HA Jellicent @ Undella Bay EncounterSlot collision
new( W2) { Species = 628, Level = 25, Location = 017, Ability = OnlyHidden, Gender = 0 }, // HA Braviary @ Route 4 Mon Only
new(B2 ) { Species = 630, Level = 25, Location = 017, Ability = OnlyHidden, Gender = 1 }, // HA Mandibuzz @ Route 4 Thurs Only
new(B2W2) { Species = 637, Level = 35, Location = 035 }, // Volcarona @ Relic Castle
new(B2W2) { Species = 637, Level = 65, Location = 035 }, // Volcarona @ Relic Castle
new(B2W2) { Species = 558, Level = 42, Location = 141 }, // Crustle @ Seaside Cave
new(B2W2) { Species = 612, Level = 60, Location = 147, Shiny = Shiny.Always}, // Haxorus @ Nature Preserve
// Stationary Legendary
new(B2W2) { Species = 377, Level = 65, Location = 150 }, // Regirock @ Rock Peak Chamber
new(B2W2) { Species = 378, Level = 65, Location = 151 }, // Regice @ Iceberg Chamber
new(B2W2) { Species = 379, Level = 65, Location = 152 }, // Registeel @ Iron Chamber
new( W2) { Species = 380, Level = 68, Location = 032 }, // Latias @ Dreamyard
new(B2 ) { Species = 381, Level = 68, Location = 032 }, // Latios @ Dreamyard
new(B2W2) { Species = 480, Level = 65, Location = 007 }, // Uxie @ Nacrene City
new(B2W2) { Species = 481, Level = 65, Location = 056 }, // Mesprit @ Celestial Tower
new(B2W2) { Species = 482, Level = 65, Location = 128 }, // Azelf @ Route 23
new(B2W2) { Species = 485, Level = 68, Location = 132 }, // Heatran @ Reversal Mountain
new(B2W2) { Species = 486, Level = 68, Location = 038 }, // Regigigas @ Twist Mountain
new(B2W2) { Species = 488, Level = 68, Location = 068 }, // Cresselia @ Marvelous Bridge
new(B2W2) { Species = 638, Level = 45, Location = 026 }, // Cobalion @ Route 13
new(B2W2) { Species = 638, Level = 65, Location = 026 }, // Cobalion @ Route 13
new(B2W2) { Species = 639, Level = 45, Location = 127 }, // Terrakion @ Route 22
new(B2W2) { Species = 639, Level = 65, Location = 127 }, // Terrakion @ Route 22
new(B2W2) { Species = 640, Level = 45, Location = 024 }, // Virizion @ Route 11
new(B2W2) { Species = 640, Level = 65, Location = 024 }, // Virizion @ Route 11
new( W2) { Species = 643, Level = 70, Location = 039, Shiny = Shiny.Never }, // Reshiram @ Dragonspiral Tower
new(B2 ) { Species = 644, Level = 70, Location = 039, Shiny = Shiny.Never }, // Zekrom @ Dragonspiral Tower
new(B2W2) { Species = 646, Level = 70, Location = 061, Form = 0 }, // Kyurem @ Giant Chasm
};
private static readonly EncounterStatic5N[] Encounter_B2W2_N =
{
// N's Pokemon
new(0xFF01007F) { Species = 509, Level = 07, Location = 015, Ability = OnlySecond, Nature = Nature.Timid }, // Purloin @ Route 2
new(0xFF01007F) { Species = 519, Level = 13, Location = 033, Ability = OnlySecond, Nature = Nature.Sassy }, // Pidove @ Pinwheel Forest
new(0xFF00003F) { Species = 532, Level = 13, Location = 033, Ability = OnlyFirst, Nature = Nature.Rash }, // Timburr @ Pinwheel Forest
new(0xFF01007F) { Species = 535, Level = 13, Location = 033, Ability = OnlySecond, Nature = Nature.Modest }, // Tympole @ Pinwheel Forest
new(0xFF00007F) { Species = 527, Level = 55, Location = 053, Ability = OnlyFirst, Nature = Nature.Timid }, // Woobat @ Wellspring Cave
new(0xFF01007F) { Species = 551, Level = 22, Location = 034, Ability = OnlySecond, Nature = Nature.Docile }, // Sandile @ Desert Resort
new(0xFF00007F) { Species = 554, Level = 22, Location = 034, Ability = OnlyFirst, Nature = Nature.Naive }, // Darumaka @ Desert Resort
new(0xFF00007F) { Species = 555, Level = 35, Location = 034, Ability = OnlyHidden, Nature = Nature.Calm }, // Darmanitan @ Desert Resort
new(0xFF00007F) { Species = 559, Level = 22, Location = 034, Ability = OnlyFirst, Nature = Nature.Lax }, // Scraggy @ Desert Resort
new(0xFF01007F) { Species = 561, Level = 22, Location = 034, Ability = OnlySecond, Nature = Nature.Gentle }, // Sigilyph @ Desert Resort
new(0xFF00007F) { Species = 525, Level = 28, Location = 037, Ability = OnlyFirst, Nature = Nature.Naive }, // Boldore @ Chargestone Cave
new(0xFF01007F) { Species = 595, Level = 28, Location = 037, Ability = OnlySecond, Nature = Nature.Docile }, // Joltik @ Chargestone Cave
new(0xFF00007F) { Species = 597, Level = 28, Location = 037, Ability = OnlyFirst, Nature = Nature.Bashful }, // Ferroseed @ Chargestone Cave
new(0xFF000000) { Species = 599, Level = 28, Location = 037, Ability = OnlyFirst, Nature = Nature.Rash }, // Klink @ Chargestone Cave
new(0xFF00001F) { Species = 570, Level = 25, Location = 010, Ability = OnlyFirst, Nature = Nature.Hasty, Gift = true }, // N's Zorua @ Driftveil City
};
private static readonly EncounterStatic5[] Encounter_B2W2 = ArrayUtil.ConcatAll(Encounter_B2W2_Regular, Encounter_B2W2_N, Encounter_DreamRadar);
#endregion
#region Trade Tables
internal static readonly EncounterTrade5[] TradeGift_B2W2_Regular =
{
new(B2 ) { Species = 548, Level = 20, Ability = OnlySecond, TID = 65217, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,20,31,20), Nature = Nature.Timid }, // Petilil
new( W2) { Species = 546, Level = 20, Ability = OnlyFirst, TID = 05720, SID = 00001, OTGender = 0, Gender = 0, IVs = new(20,20,20,20,31,20), Nature = Nature.Modest }, // Cottonee
new(B2W2) { Species = 526, Level = 35, Ability = OnlyFirst, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,31,20,20,20,20), Nature = Nature.Adamant, IsNicknamed = false }, // Gigalith
new(B2W2) { Species = 465, Level = 45, Ability = OnlyFirst, TID = 27658, SID = 00001, OTGender = 0, Gender = 0, IVs = new(31,20,20,20,20,20), Nature = Nature.Hardy }, // Tangrowth
new(B2W2) { Species = 479, Level = 60, Ability = OnlyFirst, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new(20,20,20,20,20,31), Nature = Nature.Calm }, // Rotom
new(B2W2) { Species = 424, Level = 40, Ability = OnlySecond, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new(20,20,20,31,20,20), Nature = Nature.Jolly }, // Ambipom
new(B2W2) { Species = 065, Level = 40, Ability = OnlyFirst, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new(20,20,20,31,20,20), Nature = Nature.Timid }, // Alakazam
};
internal const int YancyTID = 10303;
internal const int CurtisTID = 54118;
private static readonly string[] TradeOT_B2W2_F = { string.Empty, "ルリ", "Yancy", "Brenda", "Lilì", "Sabine", string.Empty, "Belinda", "루리" };
private static readonly string[] TradeOT_B2W2_M = { string.Empty, "テツ", "Curtis", "Julien", "Dadi", "Markus", string.Empty, "Julián", "철권" };
private static readonly EncounterTrade5[] TradeGift_B2W2_YancyCurtis =
{
// Player is Male
new(B2W2) { Species = 052, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Meowth
new(B2W2) { Species = 202, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Wobbuffet
new(B2W2) { Species = 280, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Ralts
new(B2W2) { Species = 410, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Shieldon
new(B2W2) { Species = 111, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Rhyhorn
new(B2W2) { Species = 422, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F, Form = 0 }, // Shellos-West
new(B2W2) { Species = 303, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Mawile
new(B2W2) { Species = 442, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Spiritomb
new(B2W2) { Species = 143, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Snorlax
new(B2W2) { Species = 216, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Teddiursa
new(B2W2) { Species = 327, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Spinda
new(B2W2) { Species = 175, Level = 50, Ability = OnlyHidden, TID = 10303, SID = 00000, OTGender = 1, TrainerNames = TradeOT_B2W2_F }, // Togepi
// Player is Female
new(B2W2) { Species = 056, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Mankey
new(B2W2) { Species = 202, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Wobbuffet
new(B2W2) { Species = 280, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Ralts
new(B2W2) { Species = 408, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Cranidos
new(B2W2) { Species = 111, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Rhyhorn
new(B2W2) { Species = 422, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M, Form = 1 }, // Shellos-East
new(B2W2) { Species = 302, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Sableye
new(B2W2) { Species = 442, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Spiritomb
new(B2W2) { Species = 143, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Snorlax
new(B2W2) { Species = 231, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Phanpy
new(B2W2) { Species = 327, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Spinda
new(B2W2) { Species = 175, Level = 50, Ability = OnlyHidden, TID = 54118, SID = 00000, OTGender = 0, TrainerNames = TradeOT_B2W2_M }, // Togepi
};
private const string tradeB2W2 = "tradeb2w2";
private static readonly string[][] TradeB2W2 = Util.GetLanguageStrings8(tradeB2W2);
internal static readonly EncounterTrade5[] TradeGift_B2W2 = ArrayUtil.ConcatAll(TradeGift_B2W2_Regular, TradeGift_B2W2_YancyCurtis);
#endregion
internal static readonly EncounterStatic5[] StaticB2 = ArrayUtil.ConcatAll(GetEncounters(Encounter_B2W2, B2), DreamWorld_Common, DreamWorld_B2W2);
internal static readonly EncounterStatic5[] StaticW2 = ArrayUtil.ConcatAll(GetEncounters(Encounter_B2W2, W2), DreamWorld_Common, DreamWorld_B2W2);
}

View file

@ -0,0 +1,199 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.AbilityPermission;
using static PKHeX.Core.Encounters5DR;
namespace PKHeX.Core;
/// <summary>
/// Generation 5 Encounters
/// </summary>
public static class Encounters5BW
{
internal static readonly EncounterArea5[] SlotsB = EncounterArea5.GetAreas(Get("b", "51"), B);
internal static readonly EncounterArea5[] SlotsW = EncounterArea5.GetAreas(Get("w", "51"), W);
static Encounters5BW() => MarkEncounterTradeStrings(TradeGift_BW, TradeBW);
#region Dream Radar Tables
#endregion
#region DreamWorld Encounter
public static readonly EncounterStatic5[] DreamWorld_BW = DreamWorldEntry.GetArray(BW, new DreamWorldEntry[]
{
// Pleasant Forest
new(029, 10, 010, 389, 162), // Nidoran♀
new(032, 10, 064, 068, 162), // Nidoran♂
new(174, 10, 047, 313, 270), // Igglybuff
new(187, 10, 235, 270, 331), // Hoppip
new(270, 10, 071, 073, 352), // Lotad
new(276, 10, 064, 119, 366), // Taillow
new(309, 10, 086, 423, 324), // Electrike
new(351, 10, 052, 466, 352), // Castform
new(417, 10, 098, 343, 351), // Pachirisu
// Windswept Sky
new(012, 10, 093, 355, 314), // Butterfree
new(163, 10, 193, 101, 278), // Hoothoot
new(278, 10, 055, 239, 351), // Wingull
new(333, 10, 064, 297, 355), // Swablu
new(425, 10, 107, 095, 285), // Drifloon
new(441, 10, 119, 417, 272), // Chatot
// Sparkling Sea
new(079, 10, 281, 335, 362), // Slowpoke
new(098, 10, 011, 133, 290), // Krabby
new(119, 33, 352, 214, 203), // Seaking
new(120, 10, 055, 278, 196), // Staryu
new(222, 10, 145, 109, 446), // Corsola
new(422, 10, 189, 281, 290, Form: 0), // Shellos-West
new(422, 10, 189, 281, 290, Form: 1), // Shellos-East
// Spooky Manor
new(202, 15, 243, 204, 227), // Wobbuffet
new(238, 10, 186, 445, 285), // Smoochum
new(303, 10, 313, 424, 008), // Mawile
new(307, 10, 096, 409, 203), // Meditite
new(436, 10, 095, 285, 356), // Bronzor
new(052, 10, 010, 095, 290), // Meowth
new(479, 10, 086, 351, 324), // Rotom
new(280, 10, 093, 194, 270), // Ralts
new(302, 10, 193, 389, 180), // Sableye
new(442, 10, 180, 220, 196), // Spiritomb
// Rugged Mountain
new(056, 10, 067, 179, 009), // Mankey
new(111, 10, 030, 068, 038), // Rhyhorn
new(231, 10, 175, 484, 402), // Phanpy
new(451, 10, 044, 097, 401), // Skorupi
new(216, 10, 313, 242, 264), // Teddiursa
new(296, 10, 292, 270, 008), // Makuhita
new(327, 10, 383, 252, 276), // Spinda
new(374, 10, 036, 428, 442), // Beldum
new(447, 10, 203, 418, 264), // Riolu
// Icy Cave
new(173, 10, 227, 312, 214), // Cleffa
new(213, 10, 227, 270, 504), // Shuckle
new(299, 10, 033, 446, 246), // Nosepass
new(363, 10, 181, 090, 401), // Spheal
new(408, 10, 029, 442, 007), // Cranidos
new(206, 10, 111, 277, 446), // Dunsparce
new(410, 10, 182, 068, 090), // Shieldon
// Dream Park
new(048, 10, 050, 226, 285), // Venonat
new(088, 10, 139, 114, 425), // Grimer
new(415, 10, 016, 366, 314), // Combee
new(015, 10, 031, 314, 210), // Beedrill
new(335, 10, 098, 458, 067), // Zangoose
new(336, 10, 044, 034, 401), // Seviper
// PGL
new(134, 10, Gender: 0), // Vaporeon
new(135, 10, Gender: 0), // Jolteon
new(136, 10, Gender: 0), // Flareon
new(196, 10, Gender: 0), // Espeon
new(197, 10, Gender: 0), // Umbreon
new(470, 10, Gender: 0), // Leafeon
new(471, 10, Gender: 0), // Glaceon
new(001, 10, Gender: 0), // Bulbasaur
new(004, 10, Gender: 0), // Charmander
new(007, 10, Gender: 0), // Squirtle
new(453, 10, Gender: 0), // Croagunk
new(387, 10, Gender: 0), // Turtwig
new(390, 10, Gender: 0), // Chimchar
new(393, 10, Gender: 0), // Piplup
new(493, 100), // Arceus
new(252, 10, Gender: 0), // Treecko
new(255, 10, Gender: 0), // Torchic
new(258, 10, Gender: 0), // Mudkip
new(468, 10, 217, Gender: 0), // Togekiss
new(473, 34, Gender: 0), // Mamoswine
new(137, 10), // Porygon
new(384, 50), // Rayquaza
new(354, 37, 538, Gender: 1), // Banette
new(453, 10, 398, Gender: 0), // Croagunk
new(334, 35, 206, Gender: 0), // Altaria
new(242, 10), // Blissey
new(448, 10, 418, Gender: 0), // Lucario
new(189, 27, 206, Gender: 0), // Jumpluff
});
#endregion
#region Static Encounter/Gift Tables
private static readonly EncounterStatic5[] Encounter_BW =
{
// Starters @ Nuvema Town
new(BW) { Gift = true, Species = 495, Level = 05, Location = 004 }, // Snivy
new(BW) { Gift = true, Species = 498, Level = 05, Location = 004 }, // Tepig
new(BW) { Gift = true, Species = 501, Level = 05, Location = 004 }, // Oshawott
// Fossils @ Nacrene City
new(BW) { Gift = true, Species = 138, Level = 25, Location = 007 }, // Omanyte
new(BW) { Gift = true, Species = 140, Level = 25, Location = 007 }, // Kabuto
new(BW) { Gift = true, Species = 142, Level = 25, Location = 007 }, // Aerodactyl
new(BW) { Gift = true, Species = 345, Level = 25, Location = 007 }, // Lileep
new(BW) { Gift = true, Species = 347, Level = 25, Location = 007 }, // Anorith
new(BW) { Gift = true, Species = 408, Level = 25, Location = 007 }, // Cranidos
new(BW) { Gift = true, Species = 410, Level = 25, Location = 007 }, // Shieldon
new(BW) { Gift = true, Species = 564, Level = 25, Location = 007 }, // Tirtouga
new(BW) { Gift = true, Species = 566, Level = 25, Location = 007 }, // Archen
// Gift
new(BW) { Gift = true, Species = 511, Level = 10, Location = 032 }, // Pansage @ Dreamyard
new(BW) { Gift = true, Species = 513, Level = 10, Location = 032 }, // Pansear
new(BW) { Gift = true, Species = 515, Level = 10, Location = 032 }, // Panpour
new(BW) { Gift = true, Species = 129, Level = 05, Location = 068 }, // Magikarp @ Marvelous Bridge
new(BW) { Gift = true, Species = 636, Level = 01, EggLocation = 60003 }, // Larvesta Egg from Treasure Hunter
// Stationary
new(BW) { Species = 518, Level = 50, Location = 032, Ability = OnlyHidden }, // Musharna @ Dreamyard Friday Only
new(BW) { Species = 590, Level = 20, Location = 019 }, // Foongus @ Route 6
new(BW) { Species = 590, Level = 30, Location = 023 }, // Foongus @ Route 10
new(BW) { Species = 591, Level = 40, Location = 023 }, // Amoonguss @ Route 10
new(BW) { Species = 555, Level = 35, Location = 034, Ability = OnlyHidden }, // HA Darmanitan @ Desert Resort
new(BW) { Species = 637, Level = 70, Location = 035 }, // Volcarona @ Relic Castle
// Stationary Legendary
new(BW) { Species = 638, Level = 42, Location = 074 }, // Cobalion @ Guidance Chamber
new(BW) { Species = 639, Level = 42, Location = 073 }, // Terrakion @ Trial Chamber
new(BW) { Species = 640, Level = 42, Location = 055 }, // Virizion @ Rumination Field
new(B ) { Species = 643, Level = 50, Location = 045, Shiny = Shiny.Never }, // Reshiram @ N's Castle
new(B ) { Species = 643, Level = 50, Location = 039, Shiny = Shiny.Never }, // Reshiram @ Dragonspiral Tower
new( W) { Species = 644, Level = 50, Location = 045, Shiny = Shiny.Never }, // Zekrom @ N's Castle
new( W) { Species = 644, Level = 50, Location = 039, Shiny = Shiny.Never }, // Zekrom @ Dragonspiral Tower
new(BW) { Species = 645, Level = 70, Location = 070 }, // Landorus @ Abundant Shrine
new(BW) { Species = 646, Level = 75, Location = 061 }, // Kyurem @ Giant Chasm
// Event
new(BW) { Species = 494, Level = 15, Location = 062, Shiny = Shiny.Never}, // Victini @ Liberty Garden
new(BW) { Species = 570, Level = 10, Location = 008, Shiny = Shiny.Never, Gender = 0 }, // Zorua @ Castelia City
new(BW) { Species = 571, Level = 25, Location = 072, Shiny = Shiny.Never, Gender = 1 }, // Zoroark @ Lostlorn Forest
// Roamer
new(B ) { Roaming = true, Species = 641, Level = 40, Location = 25 }, // Tornadus
new( W) { Roaming = true, Species = 642, Level = 40, Location = 25 }, // Thundurus
};
#endregion
#region Trade Tables
internal static readonly EncounterTrade5PID[] TradeGift_BW =
{
new(B , 0x64000000) { Species = 548, Level = 15, Ability = OnlyFirst, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,20,31,20), Nature = Nature.Modest }, // Petilil
new( W, 0x6400007E) { Species = 546, Level = 15, Ability = OnlyFirst, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new(20,20,20,20,31,20), Nature = Nature.Modest }, // Cottonee
new(B , 0x9400007F) { Species = 550, Level = 25, Ability = OnlyFirst, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,31,20,20,20,20), Nature = Nature.Adamant, Form = 0 }, // Basculin-Red
new( W, 0x9400007F) { Species = 550, Level = 25, Ability = OnlyFirst, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,31,20,20,20,20), Nature = Nature.Adamant, Form = 1 }, // Basculin-Blue
new(BW, 0xD400007F) { Species = 587, Level = 30, Ability = OnlyFirst, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new(20,20,31,20,20,20), Nature = Nature.Lax }, // Emolga
new(BW, 0x2A000000) { Species = 479, Level = 60, Ability = OnlyFirst, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new(20,20,20,20,20,31), Nature = Nature.Gentle }, // Rotom
new(BW, 0x6200001F) { Species = 446, Level = 60, Ability = OnlySecond, TID = 40217, SID = 00000, OTGender = 0, Gender = 0, IVs = new(31,20,20,20,20,20), Nature = Nature.Serious }, // Munchlax
};
private const string tradeBW = "tradebw";
private static readonly string[][] TradeBW = Util.GetLanguageStrings8(tradeBW);
#endregion
internal static readonly EncounterStatic5[] StaticB = ArrayUtil.ConcatAll(GetEncounters(Encounter_BW, B), DreamWorld_Common, DreamWorld_BW);
internal static readonly EncounterStatic5[] StaticW = ArrayUtil.ConcatAll(GetEncounters(Encounter_BW, W), DreamWorld_Common, DreamWorld_BW);
}

View file

@ -0,0 +1,223 @@
using static PKHeX.Core.AbilityPermission;
using static PKHeX.Core.GameVersion;
namespace PKHeX.Core;
/// <summary>
/// Generation 5 Encounters
/// </summary>
public static class Encounters5DR
{
#region Dream Radar Tables
internal static readonly EncounterStatic5DR[] Encounter_DreamRadar =
{
new(079, 0), // Slowpoke
new(120, 0), // Staryu
new(137, 0), // Porygon
new(163, 0), // Hoothoot
new(174, 0), // Igglybuff
new(175, 0), // Togepi
new(213, 0), // Shuckle
new(238, 0), // Smoochum
new(249, 0), // Lugia (SoulSilver cart)
new(250, 0), // Ho-Oh (HeartGold cart)
new(280, 0), // Ralts
new(333, 0), // Swablu
new(374, 0), // Beldum
new(425, 0), // Drifloon
new(436, 0), // Bronzor
new(442, 0), // Spiritomb
new(447, 0), // Riolu
new(479, 0, Any12), // Rotom (no HA)
new(483, 0), // Dialga (Diamond cart)
new(484, 0), // Palkia (Pearl cart)
new(487, 0), // Giratina (Platinum cart)
new(517, 0), // Munna
new(561, 0), // Sigilyph
new(641, 1), // Therian Tornadus
new(642, 1), // Therian Thundurus
new(645, 1), // Therian Landorus
};
#endregion
#region DreamWorld Encounter
public static readonly EncounterStatic5[] DreamWorld_Common = DreamWorldEntry.GetArray(Gen5, new DreamWorldEntry[]
{
// Pleasant Forest
new(019, 10, 098, 382, 231), // Rattata
new(043, 10, 230, 298, 202), // Oddish
new(069, 10, 022, 235, 402), // Bellsprout
new(077, 10, 033, 037, 257), // Ponyta
new(083, 10, 210, 355, 348), // Farfetch'd
new(084, 10, 045, 175, 355), // Doduo
new(102, 10, 140, 235, 202), // Exeggcute
new(108, 10, 122, 214, 431), // Lickitung
new(114, 10, 079, 073, 402), // Tangela
new(115, 10, 252, 068, 409), // Kangaskhan
new(161, 10, 010, 203, 343), // Sentret
new(179, 10, 084, 115, 351), // Mareep
new(191, 10, 072, 230, 414), // Sunkern
new(234, 10, 033, 050, 285), // Stantler
new(261, 10, 336, 305, 399), // Poochyena
new(283, 10, 145, 056, 202), // Surskit
new(399, 10, 033, 401, 290), // Bidoof
new(403, 10, 268, 393, 400), // Shinx
new(431, 10, 252, 372, 290), // Glameow
new(054, 10, 346, 227, 362), // Psyduck
new(058, 10, 044, 034, 203), // Growlithe
new(123, 10, 098, 226, 366), // Scyther
new(128, 10, 099, 231, 431), // Tauros
new(183, 10, 111, 453, 008), // Marill
new(185, 10, 175, 205, 272), // Sudowoodo
new(203, 10, 093, 243, 285), // Girafarig
new(241, 10, 111, 174, 231), // Miltank
new(263, 10, 033, 271, 387), // Zigzagoon
new(427, 10, 193, 252, 409), // Buneary
new(037, 10, 046, 257, 399), // Vulpix
new(060, 10, 095, 054, 214), // Poliwag
new(177, 10, 101, 297, 202), // Natu
new(239, 10, 084, 238, 393), // Elekid
new(300, 10, 193, 321, 445), // Skitty
// Windswept Sky
new(016, 10, 016, 211, 290), // Pidgey
new(021, 10, 064, 185, 211), // Spearow
new(041, 10, 048, 095, 162), // Zubat
new(142, 10, 044, 372, 446), // Aerodactyl
new(165, 10, 004, 450, 009), // Ledyba
new(187, 10, 235, 227, 340), // Hoppip
new(193, 10, 098, 364, 202), // Yanma
new(198, 10, 064, 109, 355), // Murkrow
new(207, 10, 028, 364, 366), // Gligar
new(225, 10, 217, 420, 264), // Delibird
new(276, 10, 064, 203, 413), // Taillow
new(397, 14, 017, 297, 366), // Staravia
new(227, 10, 064, 065, 355), // Skarmory
new(357, 10, 016, 073, 318), // Tropius
// Sparkling Sea
new(086, 10, 029, 333, 214), // Seel
new(090, 10, 110, 112, 196), // Shellder
new(116, 10, 145, 190, 362), // Horsea
new(118, 10, 064, 060, 352), // Goldeen
new(129, 10, 150, 175, 340), // Magikarp
new(138, 10, 044, 330, 196), // Omanyte
new(140, 10, 071, 175, 446), // Kabuto
new(170, 10, 086, 133, 351), // Chinchou
new(194, 10, 055, 034, 401), // Wooper
new(211, 10, 040, 453, 290), // Qwilfish
new(223, 10, 199, 350, 362), // Remoraid
new(226, 10, 048, 243, 314), // Mantine
new(320, 10, 055, 214, 340), // Wailmer
new(339, 10, 189, 214, 209), // Barboach
new(366, 10, 250, 445, 392), // Clamperl
new(369, 10, 055, 214, 414), // Relicanth
new(370, 10, 204, 300, 196), // Luvdisc
new(418, 10, 346, 163, 352), // Buizel
new(456, 10, 213, 186, 352), // Finneon
new(072, 10, 048, 367, 202), // Tentacool
new(318, 10, 044, 037, 399), // Carvanha
new(341, 10, 106, 232, 283), // Corphish
new(345, 10, 051, 243, 202), // Lileep
new(347, 10, 010, 446, 440), // Anorith
new(349, 10, 150, 445, 243), // Feebas
new(131, 10, 109, 032, 196), // Lapras
new(147, 10, 086, 352, 225), // Dratini
// Spooky Manor
new(092, 10, 095, 050, 482), // Gastly
new(096, 10, 095, 427, 409), // Drowzee
new(122, 10, 112, 298, 285), // Mr. Mime
new(167, 10, 040, 527, 450), // Spinarak
new(200, 10, 149, 194, 517), // Misdreavus
new(228, 10, 336, 364, 399), // Houndour
new(325, 10, 149, 285, 278), // Spoink
new(353, 10, 101, 194, 220), // Shuppet
new(355, 10, 050, 220, 271), // Duskull
new(358, 10, 035, 095, 304), // Chimecho
new(434, 10, 103, 492, 389), // Stunky
new(209, 10, 204, 370, 038), // Snubbull
new(235, 10, 166, 445, 214), // Smeargle
new(313, 10, 148, 271, 366), // Volbeat
new(314, 10, 204, 313, 366), // Illumise
new(063, 10, 100, 285, 356), // Abra
// Rugged Mountain
new(066, 10, 067, 418, 270), // Machop
new(081, 10, 319, 278, 356), // Magnemite
new(109, 10, 123, 399, 482), // Koffing
new(218, 10, 052, 517, 257), // Slugma
new(246, 10, 044, 399, 446), // Larvitar
new(324, 10, 052, 090, 446), // Torkoal
new(328, 10, 044, 324, 202), // Trapinch
new(331, 10, 071, 298, 009), // Cacnea
new(412, 10, 182, 450, 173), // Burmy
new(449, 10, 044, 254, 276), // Hippopotas
new(240, 10, 052, 009, 257), // Magby
new(322, 10, 052, 034, 257), // Numel
new(359, 10, 364, 224, 276), // Absol
new(453, 10, 040, 409, 441), // Croagunk
new(236, 10, 252, 364, 183), // Tyrogue
new(371, 10, 044, 349, 200), // Bagon
// Icy Cave
new(027, 10, 028, 068, 162), // Sandshrew
new(074, 10, 111, 446, 431), // Geodude
new(095, 10, 020, 446, 431), // Onix
new(100, 10, 268, 324, 363), // Voltorb
new(104, 10, 125, 195, 067), // Cubone
new(293, 10, 253, 283, 428), // Whismur
new(304, 10, 106, 283, 457), // Aron
new(337, 10, 093, 414, 236), // Lunatone
new(338, 10, 093, 428, 234), // Solrock
new(343, 10, 229, 356, 428), // Baltoy
new(459, 10, 075, 419, 202), // Snover
new(050, 10, 028, 251, 446), // Diglett
new(215, 10, 269, 008, 067), // Sneasel
new(361, 10, 181, 311, 352), // Snorunt
new(220, 10, 316, 246, 333), // Swinub
new(443, 10, 082, 200, 203), // Gible
// Dream Park
new(046, 10, 078, 440, 235), // Paras
new(204, 10, 120, 390, 356), // Pineco
new(265, 10, 040, 450, 173), // Wurmple
new(273, 10, 074, 331, 492), // Seedot
new(287, 10, 281, 400, 389), // Slakoth
new(290, 10, 141, 203, 400), // Nincada
new(311, 10, 086, 435, 324), // Plusle
new(312, 10, 086, 435, 324), // Minun
new(316, 10, 139, 151, 202), // Gulpin
new(352, 10, 185, 285, 513), // Kecleon
new(401, 10, 522, 283, 253), // Kricketot
new(420, 10, 073, 505, 331), // Cherubi
new(455, 10, 044, 476, 380), // Carnivine
new(023, 10, 040, 251, 399), // Ekans
new(175, 10, 118, 381, 253), // Togepi
new(190, 10, 010, 252, 007), // Aipom
new(285, 10, 078, 331, 264), // Shroomish
new(315, 10, 074, 079, 129), // Roselia
new(113, 10, 045, 068, 270), // Chansey
new(127, 10, 011, 370, 382), // Pinsir
new(133, 10, 028, 204, 129), // Eevee
new(143, 10, 133, 007, 278), // Snorlax
new(214, 10, 030, 175, 264), // Heracross
// Pokémon Café Forest
new(061, 25, 240, 114, 352), // Poliwhirl
new(133, 10, 270, 204, 129), // Eevee
new(235, 10, 166, 445, 214), // Smeargle
new(412, 10, 182, 450, 173), // Burmy
// PGL
new(212, 10, 211, Gender: 0), // Scizor
new(445, 48, Gender: 0), // Garchomp
new(149, 55, 245, Gender: 0), // Dragonite
new(248, 55, 069, Gender: 0), // Tyranitar
new(376, 45, 038, Gender: 2), // Metagross
});
#endregion
}

View file

@ -7,87 +7,20 @@ namespace PKHeX.Core;
/// <summary>
/// Generation 6 Encounters
/// </summary>
internal static class Encounters6
internal static class Encounters6AO
{
private static readonly EncounterArea6XY FriendSafari = new();
internal static readonly EncounterArea6XY[] SlotsX = EncounterArea6XY.GetAreas(Get("x", "xy"), X, FriendSafari);
internal static readonly EncounterArea6XY[] SlotsY = EncounterArea6XY.GetAreas(Get("y", "xy"), Y, FriendSafari);
internal static readonly EncounterArea6AO[] SlotsA = EncounterArea6AO.GetAreas(Get("as", "ao"), AS);
internal static readonly EncounterArea6AO[] SlotsO = EncounterArea6AO.GetAreas(Get("or", "ao"), OR);
static Encounters6()
static Encounters6AO()
{
MarkEncounterTradeStrings(TradeGift_XY, TradeXY);
MarkEncounterTradeStrings(TradeGift_AO, TradeAO);
}
private const string tradeXY = "tradexy";
private const string tradeAO = "tradeao";
private static readonly string[][] TradeXY = Util.GetLanguageStrings8(tradeXY);
private static readonly string[][] TradeAO = Util.GetLanguageStrings8(tradeAO);
#region Static Encounter/Gift Tables
private static readonly EncounterStatic6[] Encounter_XY =
{
// Kalos Starters @ Aquacorde Town
new(XY) { Gift = true, Species = 650, Level = 5, Location = 10 }, // Chespin
new(XY) { Gift = true, Species = 653, Level = 5, Location = 10 }, // Fennekin
new(XY) { Gift = true, Species = 656, Level = 5, Location = 10 }, // Froakie
// Kanto Starters @ Lumiose City
new(XY) { Gift = true, Species = 1, Level = 10, Location = 22 }, // Bulbasaur
new(XY) { Gift = true, Species = 4, Level = 10, Location = 22 }, // Charmander
new(XY) { Gift = true, Species = 7, Level = 10, Location = 22 }, // Squirtle
// Fossils @ Ambrette Town
new(XY) { Gift = true, Species = 138, Level = 20, Location = 44 }, // Omanyte
new(XY) { Gift = true, Species = 140, Level = 20, Location = 44 }, // Kabuto
new(XY) { Gift = true, Species = 142, Level = 20, Location = 44 }, // Aerodactyl
new(XY) { Gift = true, Species = 345, Level = 20, Location = 44 }, // Lileep
new(XY) { Gift = true, Species = 347, Level = 20, Location = 44 }, // Anorith
new(XY) { Gift = true, Species = 408, Level = 20, Location = 44 }, // Cranidos
new(XY) { Gift = true, Species = 410, Level = 20, Location = 44 }, // Shieldon
new(XY) { Gift = true, Species = 564, Level = 20, Location = 44 }, // Tirtouga
new(XY) { Gift = true, Species = 566, Level = 20, Location = 44 }, // Archen
new(XY) { Gift = true, Species = 696, Level = 20, Location = 44 }, // Tyrunt
new(XY) { Gift = true, Species = 698, Level = 20, Location = 44 }, // Amaura
// Gift
new(XY) { Gift = true, Species = 448, Level = 32, Location = 60, Ability = OnlyFirst, IVs = new(06,25,16,31,25,19), Nature = Nature.Hasty, Gender = 0, Shiny = Shiny.Never }, // Lucario
new(XY) { Gift = true, Species = 131, Level = 30, Location = 62, Ability = OnlyFirst, IVs = new(31,20,20,20,20,20), Nature = Nature.Docile }, // Lapras
// Stationary
new(XY) { Species = 143, Level = 15, Location = 038, Shiny = Shiny.Never }, // Snorlax
// Shaking Trash Cans @ Lost Hotel
new(XY) { Species = 568, Level = 35, Location = 142 }, // Trubbish
new(XY) { Species = 569, Level = 36, Location = 142 }, // Garbodor
new(XY) { Species = 569, Level = 37, Location = 142 }, // Garbodor
new(XY) { Species = 569, Level = 38, Location = 142 }, // Garbodor
new(XY) { Species = 479, Level = 38, Location = 142 }, // Rotom
// Shaking Trash Cans @ Pokemon Village
new(XY) { Species = 569, Level = 46, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 47, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 48, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 49, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 50, Location = 98 }, // Garbodor
new(XY) { Species = 354, Level = 46, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 47, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 48, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 49, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 50, Location = 98 }, // Banette
// Stationary Legendary
new(X ) { Species = 716, Level = 50, Location = 138, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Xerneas
new( Y) { Species = 717, Level = 50, Location = 138, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Yveltal
new(XY) { Species = 718, Level = 70, Location = 140, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(XY) { Species = 150, Level = 70, Location = 168, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Mewtwo
new(XY) { Species = 144, Level = 70, Location = 146, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Articuno
new(XY) { Species = 145, Level = 70, Location = 146, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zapdos
new(XY) { Species = 146, Level = 70, Location = 146, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Moltres
};
private static readonly EncounterStatic6 BaseCosplay = new(ORAS)
{
Location = 178, // Or 180, 186, 194
@ -221,21 +154,6 @@ internal static class Encounters6
#endregion
#region Trade Tables
internal static readonly EncounterTrade6[] TradeGift_XY =
{
new(XY, 01,3,23,049) { Species = 129, Level = 05, Ability = OnlyFirst, TID = 44285, IVs = new(-1,31,-1,-1,31,-1), Gender = 0, Nature = Nature.Adamant }, // Magikarp
new(XY, 10,3,00,000) { Species = 133, Level = 05, Ability = OnlyFirst, TID = 29294, Gender = 1, Nature = Nature.Docile }, // Eevee
new(XY, 15,4,13,017) { Species = 083, Level = 10, Ability = OnlyFirst, TID = 00185, IVs = new(-1,-1,-1,31,-1,-1), Gender = 0, Nature = Nature.Jolly }, // Farfetch'd
new(XY, 17,5,08,025) { Species = 208, Level = 20, Ability = OnlyFirst, TID = 19250, IVs = new(-1,-1,31,-1,-1,-1), Gender = 1, Nature = Nature.Impish }, // Steelix
new(XY, 18,7,20,709) { Species = 625, Level = 50, Ability = OnlyFirst, TID = 03447, IVs = new(-1,31,-1,-1,-1,-1), Gender = 0, Nature = Nature.Adamant }, // Bisharp
new(XY, 02,3,11,005) { Species = 656, Level = 05, Ability = OnlyFirst, TID = 00037, IVs = new(20,20,20,31,20,20), Gender = 0, Nature = Nature.Jolly }, // Froakie
new(XY, 02,3,09,005) { Species = 650, Level = 05, Ability = OnlyFirst, TID = 00037, IVs = new(20,31,20,20,20,20), Gender = 0, Nature = Nature.Adamant }, // Chespin
new(XY, 02,3,18,005) { Species = 653, Level = 05, Ability = OnlyFirst, TID = 00037, IVs = new(20,20,20,20,31,20), Gender = 0, Nature = Nature.Modest }, // Fennekin
new(XY, 51,4,04,033) { Species = 280, Level = 05, Ability = OnlyFirst, TID = 37110, IVs = new(20,20,20,31,31,20), Gender = 1, Nature = Nature.Modest, IsNicknamed = false }, // Ralts
};
internal static readonly EncounterTrade6[] TradeGift_AO =
{
new(ORAS, 01,3,05,040) { Species = 296, Level = 09, Ability = OnlySecond, TID = 30724, IVs = new(-1,31,-1,-1,-1,-1), Gender = 0, Nature = Nature.Brave }, // Makuhita
@ -244,8 +162,6 @@ internal static class Encounters6
};
#endregion
internal static readonly EncounterStatic6[] StaticX = GetEncounters(Encounter_XY, X);
internal static readonly EncounterStatic6[] StaticY = GetEncounters(Encounter_XY, Y);
internal static readonly EncounterStatic6[] StaticA = GetEncounters(Encounter_AO, AS);
internal static readonly EncounterStatic6[] StaticO = GetEncounters(Encounter_AO, OR);
}

View file

@ -0,0 +1,102 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.AbilityPermission;
namespace PKHeX.Core;
/// <summary>
/// Generation 6 Encounters
/// </summary>
internal static class Encounters6XY
{
private static readonly EncounterArea6XY FriendSafari = new();
internal static readonly EncounterArea6XY[] SlotsX = EncounterArea6XY.GetAreas(Get("x", "xy"), X, FriendSafari);
internal static readonly EncounterArea6XY[] SlotsY = EncounterArea6XY.GetAreas(Get("y", "xy"), Y, FriendSafari);
static Encounters6XY() => MarkEncounterTradeStrings(TradeGift_XY, TradeXY);
private const string tradeXY = "tradexy";
private static readonly string[][] TradeXY = Util.GetLanguageStrings8(tradeXY);
#region Static Encounter/Gift Tables
private static readonly EncounterStatic6[] Encounter_XY =
{
// Kalos Starters @ Aquacorde Town
new(XY) { Gift = true, Species = 650, Level = 5, Location = 10 }, // Chespin
new(XY) { Gift = true, Species = 653, Level = 5, Location = 10 }, // Fennekin
new(XY) { Gift = true, Species = 656, Level = 5, Location = 10 }, // Froakie
// Kanto Starters @ Lumiose City
new(XY) { Gift = true, Species = 1, Level = 10, Location = 22 }, // Bulbasaur
new(XY) { Gift = true, Species = 4, Level = 10, Location = 22 }, // Charmander
new(XY) { Gift = true, Species = 7, Level = 10, Location = 22 }, // Squirtle
// Fossils @ Ambrette Town
new(XY) { Gift = true, Species = 138, Level = 20, Location = 44 }, // Omanyte
new(XY) { Gift = true, Species = 140, Level = 20, Location = 44 }, // Kabuto
new(XY) { Gift = true, Species = 142, Level = 20, Location = 44 }, // Aerodactyl
new(XY) { Gift = true, Species = 345, Level = 20, Location = 44 }, // Lileep
new(XY) { Gift = true, Species = 347, Level = 20, Location = 44 }, // Anorith
new(XY) { Gift = true, Species = 408, Level = 20, Location = 44 }, // Cranidos
new(XY) { Gift = true, Species = 410, Level = 20, Location = 44 }, // Shieldon
new(XY) { Gift = true, Species = 564, Level = 20, Location = 44 }, // Tirtouga
new(XY) { Gift = true, Species = 566, Level = 20, Location = 44 }, // Archen
new(XY) { Gift = true, Species = 696, Level = 20, Location = 44 }, // Tyrunt
new(XY) { Gift = true, Species = 698, Level = 20, Location = 44 }, // Amaura
// Gift
new(XY) { Gift = true, Species = 448, Level = 32, Location = 60, Ability = OnlyFirst, IVs = new(06,25,16,31,25,19), Nature = Nature.Hasty, Gender = 0, Shiny = Shiny.Never }, // Lucario
new(XY) { Gift = true, Species = 131, Level = 30, Location = 62, Ability = OnlyFirst, IVs = new(31,20,20,20,20,20), Nature = Nature.Docile }, // Lapras
// Stationary
new(XY) { Species = 143, Level = 15, Location = 038, Shiny = Shiny.Never }, // Snorlax
// Shaking Trash Cans @ Lost Hotel
new(XY) { Species = 568, Level = 35, Location = 142 }, // Trubbish
new(XY) { Species = 569, Level = 36, Location = 142 }, // Garbodor
new(XY) { Species = 569, Level = 37, Location = 142 }, // Garbodor
new(XY) { Species = 569, Level = 38, Location = 142 }, // Garbodor
new(XY) { Species = 479, Level = 38, Location = 142 }, // Rotom
// Shaking Trash Cans @ Pokemon Village
new(XY) { Species = 569, Level = 46, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 47, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 48, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 49, Location = 98 }, // Garbodor
new(XY) { Species = 569, Level = 50, Location = 98 }, // Garbodor
new(XY) { Species = 354, Level = 46, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 47, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 48, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 49, Location = 98 }, // Banette
new(XY) { Species = 354, Level = 50, Location = 98 }, // Banette
// Stationary Legendary
new(X ) { Species = 716, Level = 50, Location = 138, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Xerneas
new( Y) { Species = 717, Level = 50, Location = 138, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Yveltal
new(XY) { Species = 718, Level = 70, Location = 140, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(XY) { Species = 150, Level = 70, Location = 168, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Mewtwo
new(XY) { Species = 144, Level = 70, Location = 146, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Articuno
new(XY) { Species = 145, Level = 70, Location = 146, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zapdos
new(XY) { Species = 146, Level = 70, Location = 146, Ability = OnlyFirst, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Moltres
};
#endregion
#region Trade Tables
internal static readonly EncounterTrade6[] TradeGift_XY =
{
new(XY, 01,3,23,049) { Species = 129, Level = 05, Ability = OnlyFirst, TID = 44285, IVs = new(-1,31,-1,-1,31,-1), Gender = 0, Nature = Nature.Adamant }, // Magikarp
new(XY, 10,3,00,000) { Species = 133, Level = 05, Ability = OnlyFirst, TID = 29294, Gender = 1, Nature = Nature.Docile }, // Eevee
new(XY, 15,4,13,017) { Species = 083, Level = 10, Ability = OnlyFirst, TID = 00185, IVs = new(-1,-1,-1,31,-1,-1), Gender = 0, Nature = Nature.Jolly }, // Farfetch'd
new(XY, 17,5,08,025) { Species = 208, Level = 20, Ability = OnlyFirst, TID = 19250, IVs = new(-1,-1,31,-1,-1,-1), Gender = 1, Nature = Nature.Impish }, // Steelix
new(XY, 18,7,20,709) { Species = 625, Level = 50, Ability = OnlyFirst, TID = 03447, IVs = new(-1,31,-1,-1,-1,-1), Gender = 0, Nature = Nature.Adamant }, // Bisharp
new(XY, 02,3,11,005) { Species = 656, Level = 05, Ability = OnlyFirst, TID = 00037, IVs = new(20,20,20,31,20,20), Gender = 0, Nature = Nature.Jolly }, // Froakie
new(XY, 02,3,09,005) { Species = 650, Level = 05, Ability = OnlyFirst, TID = 00037, IVs = new(20,31,20,20,20,20), Gender = 0, Nature = Nature.Adamant }, // Chespin
new(XY, 02,3,18,005) { Species = 653, Level = 05, Ability = OnlyFirst, TID = 00037, IVs = new(20,20,20,20,31,20), Gender = 0, Nature = Nature.Modest }, // Fennekin
new(XY, 51,4,04,033) { Species = 280, Level = 05, Ability = OnlyFirst, TID = 37110, IVs = new(20,20,20,31,31,20), Gender = 1, Nature = Nature.Modest, IsNicknamed = false }, // Ralts
};
#endregion
internal static readonly EncounterStatic6[] StaticX = GetEncounters(Encounter_XY, X);
internal static readonly EncounterStatic6[] StaticY = GetEncounters(Encounter_XY, Y);
}

View file

@ -3,7 +3,7 @@ using static PKHeX.Core.GameVersion;
namespace PKHeX.Core;
internal static class Encounters7b
internal static class Encounters7GG
{
internal static readonly EncounterArea7b[] SlotsGP = EncounterArea7b.GetAreas(Get("gp", "gg"), GP);
internal static readonly EncounterArea7b[] SlotsGE = EncounterArea7b.GetAreas(Get("ge", "gg"), GE);

View file

@ -0,0 +1,137 @@
using static PKHeX.Core.EncounterUtil;
using static PKHeX.Core.GameVersion;
using static PKHeX.Core.AbilityPermission;
namespace PKHeX.Core;
/// <summary>
/// Generation 7 Encounters
/// </summary>
internal static class Encounters7SM
{
internal static readonly EncounterArea7[] SlotsSN = EncounterArea7.GetAreas(Get("sn", "sm"), SN);
internal static readonly EncounterArea7[] SlotsMN = EncounterArea7.GetAreas(Get("mn", "sm"), MN);
static Encounters7SM() => MarkEncounterTradeStrings(TradeGift_SM, TradeSM);
private static readonly EncounterStatic7[] Encounter_SM = // @ a\1\5\5
{
// Gifts - 0.bin
new(SM) { Gift = true, Species = 722, Level = 5, Location = 024 }, // Rowlet
new(SM) { Gift = true, Species = 725, Level = 5, Location = 024 }, // Litten
new(SM) { Gift = true, Species = 728, Level = 5, Location = 024 }, // Popplio
new(SM) { Gift = true, Species = 138, Level = 15, Location = 058 }, // Omanyte
new(SM) { Gift = true, Species = 140, Level = 15, Location = 058 }, // Kabuto
// new(SM) { Gift = true, Species = 142, Level = 15, Location = 058 }, // Aerodactyl
new(SM) { Gift = true, Species = 345, Level = 15, Location = 058 }, // Lileep
new(SM) { Gift = true, Species = 347, Level = 15, Location = 058 }, // Anorith
new(SM) { Gift = true, Species = 408, Level = 15, Location = 058 }, // Cranidos
new(SM) { Gift = true, Species = 410, Level = 15, Location = 058 }, // Shieldon
new(SM) { Gift = true, Species = 564, Level = 15, Location = 058 }, // Tirtouga
new(SM) { Gift = true, Species = 566, Level = 15, Location = 058 }, // Archen
new(SM) { Gift = true, Species = 696, Level = 15, Location = 058 }, // Tyrunt
new(SM) { Gift = true, Species = 698, Level = 15, Location = 058 }, // Amaura
new(SM) { Gift = true, Species = 137, Level = 30, Location = 116 }, // Porygon @ Route 15
new(SM) { Gift = true, Species = 133, Level = 1, EggLocation = 60002 }, // Eevee @ Nursery helpers
new(SM) { Gift = true, Species = 772, Level = 40, Location = 188, FlawlessIVCount = 3 }, // Type: Null
new(SN) { Gift = true, Species = 789, Level = 5, Location = 142, Shiny = Shiny.Never, Ability = OnlySecond, FlawlessIVCount = 3 }, // Cosmog
new(MN) { Gift = true, Species = 789, Level = 5, Location = 144, Shiny = Shiny.Never, Ability = OnlySecond, FlawlessIVCount = 3 }, // Cosmog
new(SM) { Gift = true, Species = 142, Level = 40, Location = 172 }, // Aerodactyl @ Seafolk Village
new(SM) { Gift = true, Species = 718, Form = 0, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 1, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 2, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 3, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 0, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 1, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 2, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 3, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) // Magearna (Bottle Cap) 00 FF
{
Gift = true, Species = 801, Level = 50, Location = 40001, Shiny = Shiny.Never, FlawlessIVCount = 3, HeldItem = 795, Ability = OnlySecond,
Fateful = true, Relearn = new(705, 430, 381, 270), Ball = 0x10, // Cherish
},
// Static Encounters - 1.bin
new(SM) { Species = 746, Level = 17, Location = 086, Shiny = Shiny.Never, Ability = OnlyFirst }, // Wishiwashi
new(SM) { Species = 746, Level = 18, Location = 086, Shiny = Shiny.Never, Ability = OnlyFirst }, // Wishiwashi
new(SN) { Species = 791, Level = 55, Location = 176, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3, Relearn = new(713, 322, 242, 428) }, // Solgaleo
new(MN) { Species = 792, Level = 55, Location = 178, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3, Relearn = new(714, 322, 539, 247) }, // Lunala
new(SM) { Species = 785, Level = 60, Location = 030, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Koko
new(SM) { Species = 786, Level = 60, Location = 092, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Lele
new(SM) { Species = 787, Level = 60, Location = 140, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Bulu
new(SM) { Species = 788, Level = 60, Location = 180, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Fini
new(SM) { Species = 793, Level = 55, Location = 082, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Nihilego @ Wela Volcano Park
new(SM) { Species = 793, Level = 55, Location = 100, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Nihilego @ Digletts Tunnel
new(SN) { Species = 794, Level = 65, Location = 040, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Buzzwole @ Melemele Meadow
new(MN) { Species = 795, Level = 60, Location = 046, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Pheromosa @ Verdant Cavern (Trial Site)
new(SM) { Species = 796, Level = 65, Location = 090, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Xurkitree @ Lush Jungle
new(SM) { Species = 796, Level = 65, Location = 076, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Xurkitree @ Memorial Hill
new(SN) { Species = 798, Level = 60, Location = 134, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Kartana @ Malie Garden
new(SN) { Species = 798, Level = 60, Location = 120, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Kartana @ Route 17
new(MN) { Species = 797, Level = 65, Location = 124, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Celesteela @ Haina Desert
new(MN) { Species = 797, Level = 65, Location = 134, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Celesteela @ Malie Garden
new(SM) { Species = 799, Level = 70, Location = 182, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Guzzlord @ Resolution Cave
new(SM) { Species = 800, Level = 75, Location = 036, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Necrozma @ Ten Carat Hill (Farthest Hollow)
// QR Scan: Su/M/Tu/W/Th/F/Sa
// Melemele Island
new(SM) { Species = 155, Level = 12, Location = 010, Relearn = new(024, 052, 108, 043) }, // Cyndaquil @ Route 3
new(SM) { Species = 158, Level = 12, Location = 042, Relearn = new(232, 099, 055, 043) }, // Totodile @ Seaward Cave
new(SM) { Species = 633, Level = 13, Location = 034, Relearn = new(372, 029, 044, 116) }, // Deino @ Ten Carat Hill
new(SM) { Species = 116, Level = 18, Location = 014, Relearn = new(225, 239, 055, 043) }, // Horsea @ Kala'e Bay
new(SM) { Species = 599, Level = 08, Location = 020, Relearn = new(268, 011, 000, 000) }, // Klink @ Hau'oli City
new(SM) { Species = 152, Level = 10, Location = 012, Relearn = new(073, 077, 075, 045) }, // Chikorita @ Route 2
new(SM) { Species = 607, Level = 10, Location = 038, Relearn = new(051, 109, 083, 123) }, // Litwick @ Hau'oli Cemetery
// Akala Island
new(SM) { Species = 574, Level = 17, Location = 054, Relearn = new(399, 060, 003, 313) }, // Gothita @ Route 6
new(SM) { Species = 363, Level = 19, Location = 056, Relearn = new(392, 362, 301, 227) }, // Spheal @ Route 7
new(SM) { Species = 404, Level = 20, Location = 058, Relearn = new(598, 044, 209, 268) }, // Luxio @ Route 8
new(SM) { Species = 679, Level = 23, Location = 094, Relearn = new(194, 332, 425, 475) }, // Honedge @ Akala Outskirts
new(SM) { Species = 543, Level = 14, Location = 050, Relearn = new(390, 228, 103, 040) }, // Venipede @ Route 4
new(SM) { Species = 069, Level = 16, Location = 052, Relearn = new(491, 077, 079, 035) }, // Bellsprout @ Route 5
new(SM) { Species = 183, Level = 17, Location = 086, Relearn = new(453, 270, 061, 205) }, // Marill @ Brooklet Hill
// Ula'ula Island
new(SM) { Species = 111, Level = 30, Location = 138, Relearn = new(130, 350, 498, 523) }, // Rhyhorn @ Blush Mountain
new(SM) { Species = 220, Level = 31, Location = 114, Relearn = new(573, 036, 420, 196) }, // Swinub @ Tapu Village
new(SM) { Species = 578, Level = 33, Location = 118, Relearn = new(101, 248, 283, 473) }, // Duosion @ Route 16
new(SM) { Species = 315, Level = 34, Location = 128, Relearn = new(437, 275, 230, 390) }, // Roselia @ Ula'ula Meadow
new(SM) { Species = 397, Level = 27, Location = 106, Relearn = new(355, 018, 283, 104) }, // Staravia @ Route 10
new(SM) { Species = 288, Level = 27, Location = 108, Relearn = new(359, 498, 163, 203) }, // Vigoroth @ Route 11
new(SM) { Species = 610, Level = 28, Location = 136, Relearn = new(231, 337, 206, 163) }, // Axew @ Mount Hokulani
// Poni Island
new(SM) { Species = 604, Level = 55, Location = 164, Relearn = new(435, 051, 029, 306) }, // Eelektross @ Poni Grove
new(SM) { Species = 534, Level = 57, Location = 166, Relearn = new(409, 276, 264, 444) }, // Conkeldurr @ Poni Plains
new(SM) { Species = 468, Level = 59, Location = 170, Relearn = new(248, 403, 396, 245) }, // Togekiss @ Poni Gauntlet
new(SM) { Species = 542, Level = 57, Location = 156, Relearn = new(382, 437, 014, 494) }, // Leavanny @ Poni Meadow
new(SM) { Species = 497, Level = 43, Location = 184, Relearn = new(137, 489, 348, 021) }, // Serperior @ Exeggutor Island
new(SM) { Species = 503, Level = 43, Location = 158, Relearn = new(362, 227, 453, 279) }, // Samurott @ Poni Wilds
new(SM) { Species = 500, Level = 43, Location = 160, Relearn = new(276, 053, 372, 535) }, // Emboar @ Ancient Poni Path
};
internal static readonly EncounterTrade7[] TradeGift_SM = // @ a\1\5\5
{
// Trades - 4.bin
new(SM) { Species = 066, Form = 0, Level = 09, Ability = OnlySecond, TID = 00410, SID = 00000, IVs = new(-1,31,-1,-1,-1,-1), OTGender = 1, Gender = 0, Nature = Nature.Brave }, // Machop
new(SM) { Species = 761, Form = 0, Level = 16, Ability = OnlyFirst, TID = 20683, SID = 00009, IVs = new(-1,31,-1,-1,-1,-1), OTGender = 0, Gender = 1, Nature = Nature.Adamant }, // Bounsweet
new(SM) { Species = 061, Form = 0, Level = 22, Ability = OnlySecond, TID = 01092, SID = 00009, IVs = new(31,-1,-1,-1,-1,-1), OTGender = 1, Gender = 1, Nature = Nature.Naughty }, // Poliwhirl
new(SM) { Species = 440, Form = 0, Level = 27, Ability = OnlySecond, TID = 10913, SID = 00000, IVs = new(-1,-1,-1,-1,31,-1), OTGender = 1, Gender = 1, Nature = Nature.Calm }, // Happiny
new(SM) { Species = 075, Form = 1, Level = 32, Ability = OnlyFirst, TID = 20778, SID = 00009, IVs = new(-1,-1,31,-1,-1,-1), OTGender = 0, Gender = 0, Nature = Nature.Impish, EvolveOnTrade = true }, // Graveler-1
new(SM) { Species = 762, Form = 0, Level = 43, Ability = OnlyFirst, TID = 20679, SID = 00009, IVs = new(-1,-1,-1,-1,-1,31), OTGender = 1, Gender = 1, Nature = Nature.Careful }, // Steenee
new(SM) { Species = 663, Form = 0, Level = 59, Ability = OnlyHidden, TID = 56734, SID = 00008, IVs = new(-1,-1,-1,31,-1,-1), OTGender = 0, Gender = 0, Nature = Nature.Jolly }, // Talonflame
};
private const string tradeSM = "tradesm";
private static readonly string[][] TradeSM = Util.GetLanguageStrings10(tradeSM);
internal static readonly EncounterStatic7[] StaticSN = GetEncounters(Encounter_SM, SN);
internal static readonly EncounterStatic7[] StaticMN = GetEncounters(Encounter_SM, MN);
}

View file

@ -7,133 +7,12 @@ namespace PKHeX.Core;
/// <summary>
/// Generation 7 Encounters
/// </summary>
internal static class Encounters7
internal static class Encounters7USUM
{
internal static readonly EncounterArea7[] SlotsSN = EncounterArea7.GetAreas(Get("sn", "sm"), SN);
internal static readonly EncounterArea7[] SlotsMN = EncounterArea7.GetAreas(Get("mn", "sm"), MN);
internal static readonly EncounterArea7[] SlotsUS = EncounterArea7.GetAreas(Get("us", "uu"), US);
internal static readonly EncounterArea7[] SlotsUM = EncounterArea7.GetAreas(Get("um", "uu"), UM);
static Encounters7()
{
MarkEncounterTradeStrings(TradeGift_SM, TradeSM);
MarkEncounterTradeStrings(TradeGift_USUM, TradeUSUM);
}
private static readonly EncounterStatic7[] Encounter_SM = // @ a\1\5\5
{
// Gifts - 0.bin
new(SM) { Gift = true, Species = 722, Level = 5, Location = 024 }, // Rowlet
new(SM) { Gift = true, Species = 725, Level = 5, Location = 024 }, // Litten
new(SM) { Gift = true, Species = 728, Level = 5, Location = 024 }, // Popplio
new(SM) { Gift = true, Species = 138, Level = 15, Location = 058 }, // Omanyte
new(SM) { Gift = true, Species = 140, Level = 15, Location = 058 }, // Kabuto
// new(SM) { Gift = true, Species = 142, Level = 15, Location = 058 }, // Aerodactyl
new(SM) { Gift = true, Species = 345, Level = 15, Location = 058 }, // Lileep
new(SM) { Gift = true, Species = 347, Level = 15, Location = 058 }, // Anorith
new(SM) { Gift = true, Species = 408, Level = 15, Location = 058 }, // Cranidos
new(SM) { Gift = true, Species = 410, Level = 15, Location = 058 }, // Shieldon
new(SM) { Gift = true, Species = 564, Level = 15, Location = 058 }, // Tirtouga
new(SM) { Gift = true, Species = 566, Level = 15, Location = 058 }, // Archen
new(SM) { Gift = true, Species = 696, Level = 15, Location = 058 }, // Tyrunt
new(SM) { Gift = true, Species = 698, Level = 15, Location = 058 }, // Amaura
new(SM) { Gift = true, Species = 137, Level = 30, Location = 116 }, // Porygon @ Route 15
new(SM) { Gift = true, Species = 133, Level = 1, EggLocation = 60002 }, // Eevee @ Nursery helpers
new(SM) { Gift = true, Species = 772, Level = 40, Location = 188, FlawlessIVCount = 3 }, // Type: Null
new(SN) { Gift = true, Species = 789, Level = 5, Location = 142, Shiny = Shiny.Never, Ability = OnlySecond, FlawlessIVCount = 3 }, // Cosmog
new(MN) { Gift = true, Species = 789, Level = 5, Location = 144, Shiny = Shiny.Never, Ability = OnlySecond, FlawlessIVCount = 3 }, // Cosmog
new(SM) { Gift = true, Species = 142, Level = 40, Location = 172 }, // Aerodactyl @ Seafolk Village
new(SM) { Gift = true, Species = 718, Form = 0, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 1, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 2, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 3, Level = 30, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 0, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 1, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 2, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) { Gift = true, Species = 718, Form = 3, Level = 50, Location = 118, Shiny = Shiny.Never, FlawlessIVCount = 3 }, // Zygarde
new(SM) // Magearna (Bottle Cap) 00 FF
{
Gift = true, Species = 801, Level = 50, Location = 40001, Shiny = Shiny.Never, FlawlessIVCount = 3, HeldItem = 795, Ability = OnlySecond,
Fateful = true, Relearn = new(705, 430, 381, 270), Ball = 0x10, // Cherish
},
// Static Encounters - 1.bin
new(SM) { Species = 746, Level = 17, Location = 086, Shiny = Shiny.Never, Ability = OnlyFirst }, // Wishiwashi
new(SM) { Species = 746, Level = 18, Location = 086, Shiny = Shiny.Never, Ability = OnlyFirst }, // Wishiwashi
new(SN) { Species = 791, Level = 55, Location = 176, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3, Relearn = new(713, 322, 242, 428) }, // Solgaleo
new(MN) { Species = 792, Level = 55, Location = 178, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3, Relearn = new(714, 322, 539, 247) }, // Lunala
new(SM) { Species = 785, Level = 60, Location = 030, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Koko
new(SM) { Species = 786, Level = 60, Location = 092, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Lele
new(SM) { Species = 787, Level = 60, Location = 140, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Bulu
new(SM) { Species = 788, Level = 60, Location = 180, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Tapu Fini
new(SM) { Species = 793, Level = 55, Location = 082, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Nihilego @ Wela Volcano Park
new(SM) { Species = 793, Level = 55, Location = 100, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Nihilego @ Digletts Tunnel
new(SN) { Species = 794, Level = 65, Location = 040, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Buzzwole @ Melemele Meadow
new(MN) { Species = 795, Level = 60, Location = 046, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Pheromosa @ Verdant Cavern (Trial Site)
new(SM) { Species = 796, Level = 65, Location = 090, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Xurkitree @ Lush Jungle
new(SM) { Species = 796, Level = 65, Location = 076, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Xurkitree @ Memorial Hill
new(SN) { Species = 798, Level = 60, Location = 134, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Kartana @ Malie Garden
new(SN) { Species = 798, Level = 60, Location = 120, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Kartana @ Route 17
new(MN) { Species = 797, Level = 65, Location = 124, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Celesteela @ Haina Desert
new(MN) { Species = 797, Level = 65, Location = 134, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Celesteela @ Malie Garden
new(SM) { Species = 799, Level = 70, Location = 182, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Guzzlord @ Resolution Cave
new(SM) { Species = 800, Level = 75, Location = 036, Shiny = Shiny.Never, Ability = OnlyFirst, FlawlessIVCount = 3 }, // Necrozma @ Ten Carat Hill (Farthest Hollow)
// QR Scan: Su/M/Tu/W/Th/F/Sa
// Melemele Island
new(SM) { Species = 155, Level = 12, Location = 010, Relearn = new(024, 052, 108, 043) }, // Cyndaquil @ Route 3
new(SM) { Species = 158, Level = 12, Location = 042, Relearn = new(232, 099, 055, 043) }, // Totodile @ Seaward Cave
new(SM) { Species = 633, Level = 13, Location = 034, Relearn = new(372, 029, 044, 116) }, // Deino @ Ten Carat Hill
new(SM) { Species = 116, Level = 18, Location = 014, Relearn = new(225, 239, 055, 043) }, // Horsea @ Kala'e Bay
new(SM) { Species = 599, Level = 08, Location = 020, Relearn = new(268, 011, 000, 000) }, // Klink @ Hau'oli City
new(SM) { Species = 152, Level = 10, Location = 012, Relearn = new(073, 077, 075, 045) }, // Chikorita @ Route 2
new(SM) { Species = 607, Level = 10, Location = 038, Relearn = new(051, 109, 083, 123) }, // Litwick @ Hau'oli Cemetery
// Akala Island
new(SM) { Species = 574, Level = 17, Location = 054, Relearn = new(399, 060, 003, 313) }, // Gothita @ Route 6
new(SM) { Species = 363, Level = 19, Location = 056, Relearn = new(392, 362, 301, 227) }, // Spheal @ Route 7
new(SM) { Species = 404, Level = 20, Location = 058, Relearn = new(598, 044, 209, 268) }, // Luxio @ Route 8
new(SM) { Species = 679, Level = 23, Location = 094, Relearn = new(194, 332, 425, 475) }, // Honedge @ Akala Outskirts
new(SM) { Species = 543, Level = 14, Location = 050, Relearn = new(390, 228, 103, 040) }, // Venipede @ Route 4
new(SM) { Species = 069, Level = 16, Location = 052, Relearn = new(491, 077, 079, 035) }, // Bellsprout @ Route 5
new(SM) { Species = 183, Level = 17, Location = 086, Relearn = new(453, 270, 061, 205) }, // Marill @ Brooklet Hill
// Ula'ula Island
new(SM) { Species = 111, Level = 30, Location = 138, Relearn = new(130, 350, 498, 523) }, // Rhyhorn @ Blush Mountain
new(SM) { Species = 220, Level = 31, Location = 114, Relearn = new(573, 036, 420, 196) }, // Swinub @ Tapu Village
new(SM) { Species = 578, Level = 33, Location = 118, Relearn = new(101, 248, 283, 473) }, // Duosion @ Route 16
new(SM) { Species = 315, Level = 34, Location = 128, Relearn = new(437, 275, 230, 390) }, // Roselia @ Ula'ula Meadow
new(SM) { Species = 397, Level = 27, Location = 106, Relearn = new(355, 018, 283, 104) }, // Staravia @ Route 10
new(SM) { Species = 288, Level = 27, Location = 108, Relearn = new(359, 498, 163, 203) }, // Vigoroth @ Route 11
new(SM) { Species = 610, Level = 28, Location = 136, Relearn = new(231, 337, 206, 163) }, // Axew @ Mount Hokulani
// Poni Island
new(SM) { Species = 604, Level = 55, Location = 164, Relearn = new(435, 051, 029, 306) }, // Eelektross @ Poni Grove
new(SM) { Species = 534, Level = 57, Location = 166, Relearn = new(409, 276, 264, 444) }, // Conkeldurr @ Poni Plains
new(SM) { Species = 468, Level = 59, Location = 170, Relearn = new(248, 403, 396, 245) }, // Togekiss @ Poni Gauntlet
new(SM) { Species = 542, Level = 57, Location = 156, Relearn = new(382, 437, 014, 494) }, // Leavanny @ Poni Meadow
new(SM) { Species = 497, Level = 43, Location = 184, Relearn = new(137, 489, 348, 021) }, // Serperior @ Exeggutor Island
new(SM) { Species = 503, Level = 43, Location = 158, Relearn = new(362, 227, 453, 279) }, // Samurott @ Poni Wilds
new(SM) { Species = 500, Level = 43, Location = 160, Relearn = new(276, 053, 372, 535) }, // Emboar @ Ancient Poni Path
};
internal static readonly EncounterTrade7[] TradeGift_SM = // @ a\1\5\5
{
// Trades - 4.bin
new(SM) { Species = 066, Form = 0, Level = 09, Ability = OnlySecond, TID = 00410, SID = 00000, IVs = new(-1,31,-1,-1,-1,-1), OTGender = 1, Gender = 0, Nature = Nature.Brave }, // Machop
new(SM) { Species = 761, Form = 0, Level = 16, Ability = OnlyFirst, TID = 20683, SID = 00009, IVs = new(-1,31,-1,-1,-1,-1), OTGender = 0, Gender = 1, Nature = Nature.Adamant }, // Bounsweet
new(SM) { Species = 061, Form = 0, Level = 22, Ability = OnlySecond, TID = 01092, SID = 00009, IVs = new(31,-1,-1,-1,-1,-1), OTGender = 1, Gender = 1, Nature = Nature.Naughty }, // Poliwhirl
new(SM) { Species = 440, Form = 0, Level = 27, Ability = OnlySecond, TID = 10913, SID = 00000, IVs = new(-1,-1,-1,-1,31,-1), OTGender = 1, Gender = 1, Nature = Nature.Calm }, // Happiny
new(SM) { Species = 075, Form = 1, Level = 32, Ability = OnlyFirst, TID = 20778, SID = 00009, IVs = new(-1,-1,31,-1,-1,-1), OTGender = 0, Gender = 0, Nature = Nature.Impish, EvolveOnTrade = true }, // Graveler-1
new(SM) { Species = 762, Form = 0, Level = 43, Ability = OnlyFirst, TID = 20679, SID = 00009, IVs = new(-1,-1,-1,-1,-1,31), OTGender = 1, Gender = 1, Nature = Nature.Careful }, // Steenee
new(SM) { Species = 663, Form = 0, Level = 59, Ability = OnlyHidden, TID = 56734, SID = 00008, IVs = new(-1,-1,-1,31,-1,-1), OTGender = 0, Gender = 0, Nature = Nature.Jolly }, // Talonflame
};
static Encounters7USUM() => MarkEncounterTradeStrings(TradeGift_USUM, TradeUSUM);
private static readonly EncounterStatic7[] Encounter_USUM =
{
@ -349,13 +228,9 @@ internal static class Encounters7
new(USUM) { Species = 128, Form = 0, Level = 59, Ability = OnlyFirst, TID = 56734, SID = 00008, IVs = new(-1,-1,-1,31,-1,-1), OTGender = 0, Gender = 0, Nature = Nature.Jolly }, // Tauros
};
private const string tradeSM = "tradesm";
private const string tradeUSUM = "tradeusum";
private static readonly string[][] TradeSM = Util.GetLanguageStrings10(tradeSM);
private static readonly string[][] TradeUSUM = Util.GetLanguageStrings10(tradeUSUM);
internal static readonly EncounterStatic7[] StaticSN = GetEncounters(Encounter_SM, SN);
internal static readonly EncounterStatic7[] StaticMN = GetEncounters(Encounter_SM, MN);
internal static readonly EncounterStatic7[] StaticUS = GetEncounters(Encounter_USUM, US);
internal static readonly EncounterStatic7[] StaticUM = GetEncounters(Encounter_USUM, UM);
}

View file

@ -0,0 +1,334 @@
using System;
using System.Collections.Generic;
using static PKHeX.Core.GameVersion;
namespace PKHeX.Core;
internal static class Encounters8Nest
{
internal static readonly IReadOnlyList<byte[]> NestLocations = new []
{
new byte[] {144, 134, 122}, // 000 : Stony Wilderness, South Lake Miloch, Rolling Fields
new byte[] {144, 126}, // 001 : Stony Wilderness, Watchtower Ruins
new byte[] {144, 122}, // 002 : Stony Wilderness, Rolling Fields
new byte[] {142, 124, 122}, // 003 : Bridge Field, Dappled Grove, Rolling Fields
new byte[] {142, 134}, // 004 : Bridge Field, South Lake Miloch
new byte[] {144, 126}, // 005 : Stony Wilderness, Watchtower Ruins
new byte[] {128, 130}, // 006 : East Lake Axewell, West Lake Axewell
new byte[] {154, 142, 134}, // 007 : Lake of Outrage, Bridge Field, South Lake Miloch
new byte[] {146, 130}, // 008 : Dusty Bowl, West Lake Axewell
new byte[] {146, 138}, // 009 : Dusty Bowl, North Lake Miloch
new byte[] {146, 136}, // 010 : Dusty Bowl, Giants Seat
new byte[] {150, 144, 136}, // 011 : Hammerlocke Hills, Stony Wilderness, Giants Seat
new byte[] {142}, // 012 : Bridge Field
new byte[] {150, 144, 140}, // 013 : Hammerlocke Hills, Stony Wilderness, Motostoke Riverbank
new byte[] {146, 136}, // 014 : Dusty Bowl, Giants Seat
new byte[] {142, 122}, // 015 : Bridge Field, Rolling Fields
new byte[] {146}, // 016 : Dusty Bowl
new byte[] {154, 152, 144}, // 017 : Lake of Outrage, Giants Cap, Stony Wilderness
new byte[] {150, 144}, // 018 : Hammerlocke Hills, Stony Wilderness
new byte[] {146}, // 019 : Dusty Bowl
new byte[] {146}, // 020 : Dusty Bowl
new byte[] {144}, // 021 : Stony Wilderness
new byte[] {150, 152}, // 022 : Hammerlocke Hills, Giants Cap
new byte[] {152, 140}, // 023 : Giants Cap, Motostoke Riverbank
new byte[] {154, 148}, // 024 : Lake of Outrage, Giants Mirror
new byte[] {124}, // 025 : Dappled Grove
new byte[] {148, 144, 142}, // 026 : Giants Mirror, Stony Wilderness, Bridge Field
new byte[] {148, 124, 146}, // 027 : Giants Mirror, Dappled Grove AND Dusty Bowl (Giant's Mirror load-line overlap)
new byte[] {138, 128}, // 028 : North Lake Miloch, East Lake Axewell
new byte[] {150, 152, 140}, // 029 : Hammerlocke Hills, Giants Cap, Motostoke Riverbank
new byte[] {128, 122}, // 030 : East Lake Axewell, Rolling Fields
new byte[] {150, 152}, // 031 : Hammerlocke Hills, Giants Cap
new byte[] {150, 122}, // 032 : Hammerlocke Hills, Rolling Fields
new byte[] {154, 142}, // 033 : Lake of Outrage, Bridge Field
new byte[] {144, 130}, // 034 : Stony Wilderness, West Lake Axewell
new byte[] {142, 146, 148}, // 035 : Bridge Field, Dusty Bowl, Giants Mirror
new byte[] {122}, // 036 : Rolling Fields
new byte[] {132}, // 037 : Axew's Eye
new byte[] {128, 122}, // 038 : East Lake Axewell, Rolling Fields
new byte[] {144, 142, 140}, // 039 : Stony Wilderness, Bridge Field, Motostoke Riverbank
new byte[] {134, 138}, // 040 : South Lake Miloch, North Lake Miloch
new byte[] {148, 130}, // 041 : Giants Mirror, West Lake Axewell
new byte[] {148, 144, 134, 146}, // 042 : Giants Mirror, Stony Wilderness, South Lake Miloch AND Dusty Bowl (Giant's Mirror load-line overlap)
new byte[] {154, 142, 128, 130}, // 043 : Lake of Outrage, Bridge Field, East Lake Axewell, West Lake Axewell
new byte[] {150, 136}, // 044 : Hammerlocke Hills, Giants Seat
new byte[] {142, 134, 122}, // 045 : Bridge Field, South Lake Miloch, Rolling Fields
new byte[] {126}, // 046 : Watchtower Ruins
new byte[] {146, 138, 122, 134}, // 047 : Dusty Bowl, North Lake Miloch, Rolling Fields, South Lake Miloch
new byte[] {146, 136}, // 048 : Dusty Bowl, Giants Seat
new byte[] {144, 140, 126}, // 049 : Stony Wilderness, Motostoke Riverbank, Watchtower Ruins
new byte[] {144, 136, 122}, // 050 : Stony Wilderness, Giants Seat, Rolling Fields
new byte[] {146, 142, 122}, // 051 : Dusty Bowl, Bridge Field, Rolling Fields
new byte[] {150}, // 052 : Hammerlocke Hills
new byte[] {146, 144}, // 053 : Dusty Bowl, Stony Wilderness
new byte[] {152, 146, 144}, // 054 : Giants Cap, Dusty Bowl, Stony Wilderness
new byte[] {154, 140}, // 055 : Lake of Outrage, Motostoke Riverbank
new byte[] {150}, // 056 : Hammerlocke Hills
new byte[] {124}, // 057 : Dappled Grove
new byte[] {144, 142, 124}, // 058 : Stony Wilderness, Bridge Field, Dappled Grove
new byte[] {152, 140, 138}, // 059 : Giants Cap, Motostoke Riverbank, North Lake Miloch
new byte[] {150, 128}, // 060 : Hammerlocke Hills, East Lake Axewell
new byte[] {150, 122}, // 061 : Hammerlocke Hills, Rolling Fields
new byte[] {144, 142, 130}, // 062 : Stony Wilderness, Bridge Field, West Lake Axewell
new byte[] {132, 122}, // 063 : Axew's Eye, Rolling Fields
new byte[] {142, 140, 128, 122}, // 064 : Bridge Field, Motostoke Riverbank, East Lake Axewell, Rolling Fields
new byte[] {144}, // 065 : Stony Wilderness
new byte[] {148}, // 066 : Giants Mirror
new byte[] {150}, // 067 : Hammerlocke Hills
new byte[] {148}, // 068 : Giants Mirror
new byte[] {148}, // 069 : Giants Mirror
new byte[] {152}, // 070 : Giants Cap
new byte[] {148}, // 071 : Giants Mirror
new byte[] {150}, // 072 : Hammerlocke Hills
new byte[] {154}, // 073 : Lake of Outrage
new byte[] {146, 130}, // 074 : Dusty Bowl, West Lake Axewell
new byte[] {138, 134}, // 075 : North Lake Miloch, South Lake Miloch
new byte[] {154}, // 076 : Lake of Outrage
new byte[] {152}, // 077 : Giants Cap
new byte[] {124}, // 078 : Dappled Grove
new byte[] {144}, // 079 : Stony Wilderness
new byte[] {144}, // 080 : Stony Wilderness
new byte[] {142}, // 081 : Bridge Field
new byte[] {136}, // 082 : Giants Seat
new byte[] {136}, // 083 : Giants Seat
new byte[] {144}, // 084 : Stony Wilderness
new byte[] {128}, // 085 : East Lake Axewell
new byte[] {142}, // 086 : Bridge Field
new byte[] {146}, // 087 : Dusty Bowl
new byte[] {152}, // 088 : Giants Cap
new byte[] {122}, // 089 : Rolling Fields
new byte[] {130, 134}, // 090 : West Lake Axewell, South Lake Miloch
new byte[] {142, 124}, // 091 : Bridge Field, Dappled Grove
new byte[] {146}, // 092 : Dusty Bowl
Array.Empty<byte>(), // 093 : None
Array.Empty<byte>(), // 094 : None
Array.Empty<byte>(), // 095 : None
Array.Empty<byte>(), // 096 : None
Array.Empty<byte>(), // 097 : None
new byte[] {164, 166, 188, 190}, // 098 : Fields of Honor, Soothing Wetlands, Stepping-Stone Sea, Insular Sea
new byte[] {164, 166, 188, 190}, // 099 : Fields of Honor, Soothing Wetlands, Stepping-Stone Sea, Insular Sea
new byte[] {166, 176, 180}, // 100 : Soothing Wetlands, Courageous Cavern, Training Lowlands
new byte[] {166, 176, 180}, // 101 : Soothing Wetlands, Courageous Cavern, Training Lowlands
new byte[] {170, 176, 184, 188}, // 102 : Challenge Beach, Courageous Cavern, Potbottom Desert, Stepping-Stone Sea
new byte[] {170, 176, 188}, // 103 : Challenge Beach, Courageous Cavern, Stepping-Stone Sea
new byte[] {164, 168, 170, 192}, // 104 : Fields of Honor, Forest of Focus, Challenge Beach, Honeycalm Sea
new byte[] {164, 168, 170, 192}, // 105 : Fields of Honor, Forest of Focus, Challenge Beach, Honeycalm Sea
new byte[] {174, 178, 186, 188}, // 106 : Challenge Road, Loop Lagoon, Workout Sea, Stepping-Stone Sea
new byte[] {174, 178, 186, 188}, // 107 : Challenge Road, Loop Lagoon, Workout Sea, Stepping-Stone Sea
new byte[] {164, 168, 180, 186}, // 108 : Fields of Honor, Forest of Focus, Training Lowlands, Workout Sea
new byte[] {164, 168, 186}, // 109 : Fields of Honor, Forest of Focus, Workout Sea
new byte[] {164, 166, 180, 190}, // 110 : Fields of Honor, Soothing Wetlands, Training Lowlands, Insular Sea
new byte[] {164, 166, 180, 190}, // 111 : Fields of Honor, Soothing Wetlands, Training Lowlands, Insular Sea
new byte[] {164, 170, 178, 184}, // 112 : Fields of Honor, Challenge Beach, Loop Lagoon, Potbottom Desert
new byte[] {164, 170, 178, 184}, // 113 : Fields of Honor, Challenge Beach, Loop Lagoon, Potbottom Desert
new byte[] {164, 180, 184}, // 114 : Fields of Honor, Training Lowlands, Potbottom Desert
new byte[] {164, 180, 184}, // 115 : Fields of Honor, Training Lowlands, Potbottom Desert
new byte[] {166, 170, 180, 188}, // 116 : Soothing Wetlands, Challenge Beach, Training Lowlands, Stepping-Stone Sea
new byte[] {166, 170, 180, 188}, // 117 : Soothing Wetlands, Challenge Beach, Training Lowlands, Stepping-Stone Sea
new byte[] {166, 168, 180, 188}, // 118 : Soothing Wetlands, Forest of Focus, Training Lowlands, Stepping-Stone Sea
new byte[] {166, 168, 180, 188}, // 119 : Soothing Wetlands, Forest of Focus, Training Lowlands, Stepping-Stone Sea
new byte[] {166, 174, 186, 192}, // 120 : Soothing Wetlands, Challenge Road, Workout Sea, Honeycalm Sea
new byte[] {166, 174, 186, 192}, // 121 : Soothing Wetlands, Challenge Road, Workout Sea, Honeycalm Sea
new byte[] {164, 170, 174, 192}, // 122 : Fields of Honor, Challenge Beach, Challenge Road, Honeycalm Sea
new byte[] {164, 170, 174, 192}, // 123 : Fields of Honor, Challenge Beach, Challenge Road, Honeycalm Sea
new byte[] {164, 166, 168, 190}, // 124 : Fields of Honor, Soothing Wetlands, Forest of Focus, Insular Sea
new byte[] {164, 166, 168, 190}, // 125 : Fields of Honor, Soothing Wetlands, Forest of Focus, Insular Sea
new byte[] {170, 176, 188}, // 126 : Challenge Beach, Courageous Cavern, Stepping-Stone Sea
new byte[] {170, 176, 188}, // 127 : Challenge Beach, Courageous Cavern, Stepping-Stone Sea
new byte[] {172, 176, 188}, // 128 : Brawlers' Cave, Courageous Cavern, Stepping-Stone Sea
new byte[] {172, 176, 188}, // 129 : Brawlers' Cave, Courageous Cavern, Stepping-Stone Sea
new byte[] {178, 186, 192}, // 130 : Loop Lagoon, Workout Sea, Honeycalm Sea
new byte[] {186, 192}, // 131 : Workout Sea, Honeycalm Sea
new byte[] {164, 166, 176}, // 132 : Fields of Honor, Soothing Wetlands, Courageous Cavern
new byte[] {164, 166, 176}, // 133 : Fields of Honor, Soothing Wetlands, Courageous Cavern
new byte[] {166, 168, 170, 176}, // 134 : Soothing Wetlands, Forest of Focus, Challenge Beach, Courageous Cavern
new byte[] {166, 168, 170}, // 135 : Soothing Wetlands, Forest of Focus, Challenge Beach
new byte[] {164, 170, 178, 190}, // 136 : Fields of Honor, Challenge Beach, Loop Lagoon, Insular Sea
new byte[] {164, 170, 178}, // 137 : Fields of Honor, Challenge Beach, Loop Lagoon
new byte[] {186, 188, 190, 192}, // 138 : Workout Sea, Stepping-Stone Sea, Insular Sea, Honeycalm Sea
new byte[] {186, 188, 190, 192}, // 139 : Workout Sea, Stepping-Stone Sea, Insular Sea, Honeycalm Sea
Array.Empty<byte>(), // 140 : None
Array.Empty<byte>(), // 141 : None
new byte[] {194}, // 142 : Honeycalm Island
new byte[] {194}, // 143 : Honeycalm Island
new byte[] {168, 180}, // 144 : Forest of Focus, Training Lowlands
new byte[] {186, 188}, // 145 : Workout Sea, Stepping-Stone Sea
new byte[] {190}, // 146 : Insular Sea
new byte[] {176}, // 147 : Courageous Cavern
new byte[] {180}, // 148 : Training Lowlands
new byte[] {184}, // 149 : Potbottom Desert
new byte[] {178}, // 150 : Loop Lagoon
new byte[] {186}, // 151 : Workout Sea
new byte[] {186}, // 152 : Workout Sea
new byte[] {168, 180}, // 153 : Forest of Focus, Training Lowlands
new byte[] {186, 188}, // 154 : Workout Sea, Stepping-Stone Sea
new byte[] {174}, // 155 : Challenge Road
new byte[] {174}, // 156 : Challenge Road
new byte[] {204,210,222,230}, // 157 : Slippery Slope, Giant's Bed, Giant's Foot, Ballimere Lake
new byte[] {204,210,222,230}, // 158 : Slippery Slope, Giant's Bed, Giant's Foot, Ballimere Lake
new byte[] {210,214,222,230}, // 159 : Giant's Bed, Snowslide Slope, Giant's Foot, Ballimere Lake
new byte[] {210,214,222,230}, // 160 : Giant's Bed, Snowslide Slope, Giant's Foot, Ballimere Lake
new byte[] {210,222,226,230}, // 161 : Giant's Bed, Giant's Foot, Frigid Sea, Ballimere Lake
new byte[] {210,222,226,230}, // 162 : Giant's Bed, Giant's Foot, Frigid Sea, Ballimere Lake
new byte[] {208,210,226,228,230},// 163 : Frostpoint Field, Giant's Bed, Frigid Sea, Three-Point Pass, Ballimere Lake
new byte[] {208,210,226,228,230},// 164 : Frostpoint Field, Giant's Bed, Frigid Sea, Three-Point Pass, Ballimere Lake
new byte[] {204,210,220,222,230},// 165 : Slippery Slope, Giant's Bed, Crown Shrine, Giant's Foot, Ballimere Lake
new byte[] {204,210,220,222,230},// 166 : Slippery Slope, Giant's Bed, Crown Shrine, Giant's Foot, Ballimere Lake
new byte[] {204,214,226}, // 167 : Slippery Slope, Snowslide Slope, Frigid Sea
new byte[] {204,214,226}, // 168 : Slippery Slope, Snowslide Slope, Frigid Sea
new byte[] {210,226}, // 169 : Giant's Bed, Frigid Sea
new byte[] {210,226}, // 170 : Giant's Bed, Frigid Sea
new byte[] {208,210,214,226,230},// 171 : Frostpoint Field, Giant's Bed, Snowslide Slope, Frigid Sea, Ballimere Lake
new byte[] {208,210,214,226,230},// 172 : Frostpoint Field, Giant's Bed, Snowslide Slope, Frigid Sea, Ballimere Lake
new byte[] {210,226,230}, // 173 : Giant's Bed, Frigid Sea, Ballimere Lake
new byte[] {210,226,230}, // 174 : Giant's Bed, Frigid Sea, Ballimere Lake
new byte[] {208,210,226,230,234},// 175 : Frostpoint Field, Giant's Bed, Frigid Sea, Ballimere Lake, Dyna Tree Hill
new byte[] {208,210,226,230,234},// 176 : Frostpoint Field, Giant's Bed, Frigid Sea, Ballimere Lake, Dyna Tree Hill
new byte[] {210,214,218,230}, // 177 : Giant's Bed, Snowslide Slope, Path to the Peak, Ballimere Lake
new byte[] {210,214,218,230}, // 178 : Giant's Bed, Snowslide Slope, Path to the Peak, Ballimere Lake
new byte[] {204,210,214,230}, // 179 : Slippery Slope, Giant's Bed, Snowslide Slope, Ballimere Lake
new byte[] {204,210,214,230}, // 180 : Slippery Slope, Giant's Bed, Snowslide Slope, Ballimere Lake
new byte[] {204,212,222,226,230},// 181 : Slippery Slope, Old Cemetery, Giant's Foot, Frigid Sea, Ballimere Lake
new byte[] {204,212,222,226,230},// 182 : Slippery Slope, Old Cemetery, Giant's Foot, Frigid Sea, Ballimere Lake
new byte[] {210,218,226,228,230},// 183 : Giant's Bed, Path to the Peak, Frigid Sea, Three-Point Pass, Ballimere Lake
new byte[] {210,218,226,228,230},// 184 : Giant's Bed, Path to the Peak, Frigid Sea, Three-Point Pass, Ballimere Lake
new byte[] {208,210,214,222,226},// 185 : Frostpoint Field, Giant's Bed, Snowslide Slope, Giant's Foot, Frigid Sea
new byte[] {208,210,214,222,226},// 186 : Frostpoint Field, Giant's Bed, Snowslide Slope, Giant's Foot, Frigid Sea
new byte[] {210,214,218,226}, // 187 : Giant's Bed, Snowslide Slope, Path to the Peak, Frigid Sea
new byte[] {210,214,218,226}, // 188 : Giant's Bed, Snowslide Slope, Path to the Peak, Frigid Sea
new byte[] {208,210,214,226,230},// 189 : Frostpoint Field, Giant's Bed, Snowslide Slope, Frigid Sea, Ballimere Lake
new byte[] {208,210,214,226,230},// 190 : Frostpoint Field, Giant's Bed, Snowslide Slope, Frigid Sea, Ballimere Lake
new byte[] {210,212,230}, // 191 : Giant's Bed, Old Cemetery, Ballimere Lake
new byte[] {210,212,230}, // 192 : Giant's Bed, Old Cemetery, Ballimere Lake
new byte[] {230}, // 193 : Ballimere Lake
new byte[] {230}, // 194 : Ballimere Lake
new byte[] {214}, // 195 : Snowslide Slope
new byte[] {214}, // 196 : Snowslide Slope
};
/// <summary>
/// Location IDs containing Dens that cannot be accessed without Rotom Bike's Water Mode.
/// </summary>
internal static readonly HashSet<byte> InaccessibleRank12DistributionLocations = new() {154,178,186,188,190,192,194,226,228,230,234}; // Areas that are entirely restricted to water
/// <summary>
/// Location IDs containing Dens that cannot be accessed without Rotom Bike's Water Mode.
/// </summary>
internal static readonly Dictionary<byte, byte[]> InaccessibleRank12Nests = new()
{
{128, new byte[] {6,43}}, // East Lake Axewell
{130, new byte[] {6,41,43}}, // West Lake Axewell
{132, new byte[] {37,63}}, // Axew's Eye
{134, new byte[] {7,40,75,90}}, // South Lake Miloch
{138, new byte[] {40,75}}, // North Lake Miloch
{142, new byte[] {7,43}}, // Bridge Field
{146, new byte[] {8,74}}, // Dusty Bowl
{148, new byte[] {41,66}}, // Giant's Mirror
{154, new byte[] {7,17,24,33,43,55,73,76}}, // Lake of Outrage
{164, new byte[] {136,137}}, // Fields of Honor
{168, new byte[] {124,125,134,135,144,153}}, // Forest of Focus
{170, new byte[] {126,127}}, // Challenge Beach
{176, new byte[] {132,133}}, // Courageous Cavern
{178, new byte[] {106,107,112,113,130,136,137,150}}, // Loop Lagoon
{180, new byte[] {116,117}}, // Training Lowlands
{186, new byte[] {106,107,108,109,120,121,130,131,138,139,145,151,152,154}}, // Workout Sea
{188, new byte[] {98,99,102,103,106,107,116,117,118,119,126,127,128,129,138,139,145,154}}, // Stepping-Stone Sea
{190, new byte[] {98,99,110,111,124,125,136,138,139,146}}, // Insular Sea
{192, new byte[] {104,105,120,121,122,123,130,131,138,139}}, // Honeycalm Sea
{194, new byte[] {142,143}}, // Honeycalm Island
{210, new byte[] {169,170,183,184}}, // Giant's Bed
{222, new byte[] {181,182,185,186}}, // Giant's Foot
{226, new byte[] {161,162,163,164,167,168,169,170,171,172,173,174,175,176,181,182,183,184,185,186,187,188,189,190}}, // Frigid Sea
{228, new byte[] {163,164,183,184}}, // Three-Point Pass
{230, new byte[] {157,158,159,160,161,162,163,164,165,166,171,172,173,174,175,176,177,178,179,180,181,182,183,184,189,190,191,192,193,194}}, // Ballimere Lake
{234, new byte[] {175,176}}, // Dyna Tree Hill
{162, new byte[] {6,7,37,40,41,43,66,73,75,76,130,131,138,139,142,143,145,146,150,151,152,154,169,170,193,194}}, // Completely inaccessible
};
// Abilities Allowed
private const AbilityPermission A0 = AbilityPermission.OnlyFirst;
//private const AbilityPermission A1 = AbilityPermission.OnlySecond;
private const AbilityPermission A2 = AbilityPermission.OnlyHidden;
private const AbilityPermission A3 = AbilityPermission.Any12;
//private const AbilityPermission A4 = AbilityPermission.Any12H;
internal const int SharedNest = 162;
internal const int Watchtower = 126;
internal const int MaxLair = 244;
internal static readonly EncounterStatic8N[] Nest_SW = GetBase("sw", SW);
internal static readonly EncounterStatic8N[] Nest_SH = GetBase("sh", SH);
internal static readonly EncounterStatic8ND[] Dist_SW = GetDist("sw", SW);
internal static readonly EncounterStatic8ND[] Dist_SH = GetDist("sh", SH);
internal static readonly EncounterStatic8U[] DynAdv_SWSH = GetUnderground();
internal static readonly EncounterStatic8NC[] Crystal_SWSH =
{
new(SWSH) { Species = 782, Level = 16, Ability = A3, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 2, Moves = new(033,029,525,043) }, // ★And458 Jangmo-o
new(SWSH) { Species = 246, Level = 16, Ability = A3, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 2, Moves = new(033,157,371,044) }, // ★And15 Larvitar
new(SWSH) { Species = 823, Level = 50, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,31), DynamaxLevel = 5, Moves = new(065,442,034,796), CanGigantamax = true }, // ★And337 Gigantamax Corviknight
new(SWSH) { Species = 875, Level = 15, Ability = A3, Location = 126, IVs = new(31,31,-1,31,-1,-1), DynamaxLevel = 2, Moves = new(181,311,054,556) }, // ★And603 Eiscue
new(SWSH) { Species = 874, Level = 15, Ability = A3, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 2, Moves = new(397,317,335,157) }, // ★And390 Stonjourner
new(SWSH) { Species = 879, Level = 35, Ability = A3, Location = 126, IVs = new(31,31,-1, 0,31,-1), DynamaxLevel = 4, Moves = new(484,174,776,583), CanGigantamax = true }, // ★Sgr6879 Gigantamax Copperajah
new(SWSH) { Species = 851, Level = 35, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(680,679,489,438), CanGigantamax = true }, // ★Sgr6859 Gigantamax Centiskorch
new(SW ) { Species = 842, Level = 40, Ability = A0, Location = 126, IVs = new(31,-1,31,-1,31,-1), DynamaxLevel = 5, Moves = new(787,412,406,076), CanGigantamax = true }, // ★Sgr6913 Gigantamax Appletun
new( SH) { Species = 841, Level = 40, Ability = A0, Location = 126, IVs = new(31,31,-1,31,-1,-1), DynamaxLevel = 5, Moves = new(788,491,412,406), CanGigantamax = true }, // ★Sgr6913 Gigantamax Flapple
new(SWSH) { Species = 844, Level = 40, Ability = A0, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(523,776,489,157), CanGigantamax = true }, // ★Sgr7348 Gigantamax Sandaconda
new(SWSH) { Species = 884, Level = 40, Ability = A2, Location = 126, IVs = new(31,-1,-1,31,31,-1), DynamaxLevel = 5, Moves = new(796,063,784,319), CanGigantamax = true }, // ★Sgr7121 Gigantamax Duraludon
new(SWSH) { Species = 025, Level = 25, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(606,273,104,085), CanGigantamax = true }, // ★Sgr6746 Gigantamax Pikachu
new(SWSH) { Species = 133, Level = 25, Ability = A2, Location = 126, IVs = new(31,31,31,-1,-1,-1), DynamaxLevel = 5, Moves = new(606,273,038,129), CanGigantamax = true }, // ★Sgr7194 Gigantamax Eevee
};
private static EncounterStatic8N[] GetBase(string name, GameVersion game)
{
var data = EncounterUtil.Get($"{name}_nest");
const int size = 10;
var result = new EncounterStatic8N[data.Length / size];
for (int i = 0; i < result.Length; i++)
{
var slice = data.Slice(i * size, size);
result[i] = EncounterStatic8N.Read(slice, game);
}
return result;
}
private static EncounterStatic8ND[] GetDist(string name, GameVersion game)
{
var data = EncounterUtil.Get($"{name}_dist");
const int size = 0x10;
var result = new EncounterStatic8ND[data.Length / size];
for (int i = 0; i < result.Length; i++)
{
var slice = data.Slice(i * size, size);
result[i] = EncounterStatic8ND.Read(slice, game);
}
return result;
}
// These are encountered as never-shiny, but forced shiny (Star) if the 1:300 (1:100 w/charm) post-adventure roll activates.
// The game does try to gate specific entries to Sword / Shield, but this restriction is ignored for online battles.
// All captures share the same met location, so there is no way to distinguish an online-play result from a local-play result.
private static EncounterStatic8U[] GetUnderground()
{
var data = EncounterUtil.Get("swsh_underground");
const int size = 14;
var result = new EncounterStatic8U[data.Length / size];
for (int i = 0; i < result.Length; i++)
{
var slice = data.Slice(i * size, size);
result[i] = EncounterStatic8U.Read(slice);
}
return result;
}
}

View file

@ -4,30 +4,6 @@ using static PKHeX.Core.EncounterServerDateCheck;
namespace PKHeX.Core;
/// <summary>
/// Provides indication that the encounter may or may not have a specific date range to consider.
/// </summary>
public interface IEncounterServerDate
{
/// <summary>
/// If true, the date range it may be acquired at is restricted to a specific date range.
/// </summary>
bool IsDateRestricted { get; }
}
/// <summary>
/// Enumeration indicating if a date range check is satisfied.
/// </summary>
public enum EncounterServerDateCheck
{
/// <summary> No need to consider date range. </summary>
None,
/// <summary> Date does fall within the range it was available. </summary>
Valid,
/// <summary> Date does NOT fall within the range it was available. </summary>
Invalid,
}
/// <summary>
/// Logic to check if a date obtained is within the date of availability.
/// </summary>
@ -109,4 +85,9 @@ public static class EncounterServerDate
{9016, (new(2022, 05, 18), Never)}, // Hidden Ability Chimchar
{9017, (new(2022, 05, 18), Never)}, // Hidden Ability Piplup
};
/// <summary>
/// Minimum date the gift can be received.
/// </summary>
public static Dictionary<int, (DateTime Start, DateTime? End)> WC9Gifts = new(0);
}

View file

@ -0,0 +1,14 @@
namespace PKHeX.Core;
/// <summary>
/// Enumeration indicating if a date range check is satisfied.
/// </summary>
public enum EncounterServerDateCheck
{
/// <summary> No need to consider date range. </summary>
None,
/// <summary> Date does fall within the range it was available. </summary>
Valid,
/// <summary> Date does NOT fall within the range it was available. </summary>
Invalid,
}

View file

@ -32,4 +32,4 @@ public static class EncountersGO
return BinLinkerAccessor.Get(data, ident);
}
}
#endif
#endif

View file

@ -0,0 +1,12 @@
namespace PKHeX.Core;
/// <summary>
/// Provides indication that the encounter may or may not have a specific date range to consider.
/// </summary>
public interface IEncounterServerDate
{
/// <summary>
/// If true, the date range it may be acquired at is restricted to a specific date range.
/// </summary>
bool IsDateRestricted { get; }
}

View file

@ -85,6 +85,8 @@ public sealed record EncounterEgg(ushort Species, byte Form, byte Level, int Gen
{
s.HeightScalar = PokeSizeUtil.GetRandomScalar();
s.WeightScalar = PokeSizeUtil.GetRandomScalar();
if (pk is IScaledSize3 s3)
s3.Scale = PokeSizeUtil.GetRandomScalar();
}
return pk;
@ -136,6 +138,9 @@ public sealed record EncounterEgg(ushort Species, byte Form, byte Level, int Gen
{
pk.Met_Level = EggStateLegality.GetEggLevelMet(Version, Generation);
pk.Met_Location = Math.Max(0, EggStateLegality.GetEggHatchLocation(Version, Generation));
if (pk is IObedienceLevel l)
l.Obedience_Level = (byte)pk.Met_Level;
}
private void SetEncounterMoves(PKM pk, GameVersion version)

View file

@ -6,7 +6,7 @@ namespace PKHeX.Core;
/// Encounter Slot found in <see cref="GameVersion.SWSH"/>.
/// </summary>
/// <inheritdoc cref="EncounterSlot"/>
public sealed record EncounterSlot8a : EncounterSlot, IAlpha, IMasteryInitialMoveShop8
public sealed record EncounterSlot8a : EncounterSlot, IAlphaReadOnly, IMasteryInitialMoveShop8
{
public override int Generation => 8;
public override EntityContext Context => EntityContext.Gen8a;
@ -32,7 +32,7 @@ public sealed record EncounterSlot8a : EncounterSlot, IAlpha, IMasteryInitialMov
var pa = (PA8)pk;
if (IsAlpha)
pa.HeightScalarCopy = pa.HeightScalar = pa.WeightScalar = 255;
pa.Scale = pa.HeightScalar = pa.WeightScalar = 255;
pa.ResetHeight();
pa.ResetWeight();
}
@ -97,7 +97,7 @@ public sealed record EncounterSlot8a : EncounterSlot, IAlpha, IMasteryInitialMov
var pa8 = (PA8)pk;
if (IsAlpha)
pa8.IsAlpha = true;
pa8.HeightScalarCopy = pa8.HeightScalar;
pa8.Scale = pa8.HeightScalar;
}
protected override void ApplyDetailsBall(PKM pk) => pk.Ball = (int)Ball.LAPoke;

View file

@ -0,0 +1,32 @@
namespace PKHeX.Core;
/// <summary>
/// Encounter Slot found in <see cref="GameVersion.SWSH"/>.
/// </summary>
/// <inheritdoc cref="EncounterSlot"/>
public sealed record EncounterSlot9 : EncounterSlot
{
public override int Generation => 9;
public override EntityContext Context => EntityContext.Gen9;
public sbyte Gender { get; }
public EncounterSlot9(EncounterArea9 area, ushort species, byte form, byte min, byte max, sbyte gender) : base(area, species, form, min, max)
{
Gender = gender;
}
protected override void ApplyDetails(ITrainerInfo sav, EncounterCriteria criteria, PKM pk)
{
base.ApplyDetails(sav, criteria, pk);
var pk9 = (PK9)pk;
pk9.Obedience_Level = (byte)pk.Met_Level;
var type = Tera9RNG.GetTeraTypeFromPersonal(Species, Form, Util.Rand.Rand64());
pk9.TeraTypeOriginal = (MoveType)type;
if (criteria.TeraType != -1 && type != criteria.TeraType)
pk9.SetTeraType(type); // sets the override type
if (Gender != -1)
pk.Gender = (byte)Gender;
pk9.Scale = PokeSizeUtil.GetRandomScalar();
}
}

View file

@ -1,4 +1,5 @@
using System;
using static PKHeX.Core.Species;
namespace PKHeX.Core;
@ -31,7 +32,7 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
public bool IsBallValid(Ball ball, ushort currentSpecies)
{
// GO does not natively produce Shedinja when evolving Nincada, and thus must be evolved in future games.
if (currentSpecies == (int)Core.Species.Shedinja && currentSpecies != Species)
if (currentSpecies == (int)Shedinja && currentSpecies != Species)
return ball == Ball.Poke;
return Type.IsBallValid(ball);
}
@ -42,6 +43,7 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
PogoImportFormat.PB7 => new PB7(),
PogoImportFormat.PK8 => new PK8(),
PogoImportFormat.PA8 => new PA8(),
PogoImportFormat.PK9 => new PK9(),
_ => throw new ArgumentOutOfRangeException(nameof(OriginFormat)),
};
@ -51,6 +53,7 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
PogoImportFormat.PB7 => PersonalTable.GG.GetFormEntry(Species, Form),
PogoImportFormat.PK8 => PersonalTable.SWSH.GetFormEntry(Species, Form),
PogoImportFormat.PA8 => PersonalTable.LA.GetFormEntry(Species, Form),
PogoImportFormat.PK9 => PersonalTable.SV.GetFormEntry(Species, Form),
_ => throw new ArgumentOutOfRangeException(nameof(OriginFormat)),
};
@ -60,6 +63,7 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
PogoImportFormat.PB7 => GameVersion.GG,
PogoImportFormat.PK8 => GameVersion.SWSH,
PogoImportFormat.PA8 => GameVersion.PLA,
PogoImportFormat.PK9 => GameVersion.SV,
_ => throw new ArgumentOutOfRangeException(nameof(OriginFormat)),
};
@ -72,6 +76,7 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
PogoImportFormat.PB7 => EntityContext.Gen7b,
PogoImportFormat.PK8 => EntityContext.Gen8,
PogoImportFormat.PA8 => EntityContext.Gen8a,
PogoImportFormat.PK9 => EntityContext.Gen9,
_ => throw new ArgumentOutOfRangeException(nameof(OriginFormat)),
};
@ -98,7 +103,7 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
var pa8 = (PA8)pk;
pa8.ResetHeight();
pa8.ResetWeight();
pa8.HeightScalarCopy = pa8.HeightScalar;
pa8.Scale = pa8.HeightScalar;
}
pk.OT_Friendship = OT_Friendship;
@ -146,9 +151,9 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
public byte OT_Friendship => Species switch
{
(int)Core.Species.Timburr when Form == 0 => 70,
(int)Core.Species.Stunfisk when Form == 0 => 70,
(int)Core.Species.Hoopa when Form == 1 => 50,
(int)Timburr when Form == 0 => 70,
(int)Stunfisk when Form == 0 => 70,
(int)Hoopa when Form == 1 => 50,
_ => GetHOMEFriendship(),
};
@ -172,23 +177,33 @@ public sealed record EncounterSlot8GO : EncounterSlotGO, IFixedOTFriendship
if (pk.OT_Friendship != OT_Friendship)
return true;
return Species switch
{
(int)Core.Species.Yamask when pk.Species != Species && Form == 1 => pk is IFormArgument { FormArgument: 0 },
(int)Core.Species.Milcery when pk.Species != Species => pk is IFormArgument { FormArgument: 0 },
(int)Core.Species.Qwilfish when pk.Species != Species && Form == 1 => pk is IFormArgument { FormArgument: 0 },
(int)Core.Species.Basculin when pk.Species != Species && Form == 2 => pk is IFormArgument { FormArgument: 0 },
(int)Core.Species.Stantler when pk.Species != Species => pk is IFormArgument { FormArgument: 0 },
(int)Core.Species.Runerigus => pk is IFormArgument { FormArgument: not 0 },
(int)Core.Species.Alcremie => pk is IFormArgument { FormArgument: not 0 },
(int)Core.Species.Wyrdeer => pk is IFormArgument { FormArgument: not 0 },
(int)Core.Species.Basculegion => pk is IFormArgument { FormArgument: not 0 },
(int)Core.Species.Overqwil => pk is IFormArgument { FormArgument: not 0 },
_ => false,
};
return IsFormArgIncorrect(pk);
}
private bool IsFormArgIncorrect(ISpeciesForm pk) => Species switch
{
// Evolved without Form Argument changing from default
(int)Yamask when pk.Species != Species && Form == 1 => pk is IFormArgument { FormArgument: 0 },
(int)Milcery when pk.Species != Species => pk is IFormArgument { FormArgument: 0 },
(int)Stantler when pk.Species != Species => pk is IFormArgument { FormArgument: 0 },
(int)Qwilfish when pk.Species != Species && Form == 1 => pk is IFormArgument { FormArgument: 0 },
(int)Basculin when pk.Species != Species && Form == 2 => pk is IFormArgument { FormArgument: 0 },
(int)Primeape when pk.Species != Species => pk is IFormArgument { FormArgument: 0 },
(int)Bisharp when pk.Species != Species => pk is IFormArgument { FormArgument: 0 },
// Not evolved, but Form Argument changed from default
(int)Runerigus => pk is IFormArgument { FormArgument: not 0 },
(int)Alcremie => pk is IFormArgument { FormArgument: not 0 },
(int)Wyrdeer => pk is IFormArgument { FormArgument: not 0 },
(int)Overqwil => pk is IFormArgument { FormArgument: not 0 },
(int)Basculegion => pk is IFormArgument { FormArgument: not 0 },
(int)Gholdengo => pk is IFormArgument { FormArgument: not 0 },
(int)Kingambit => pk is IFormArgument { FormArgument: not 0 },
(int)Annihilape => pk is IFormArgument { FormArgument: not 0 },
// No Form Argument relevant to check
_ => false,
};
}
/// <summary>
@ -200,4 +215,5 @@ public enum PogoImportFormat : byte
PB7 = 1,
PK8 = 2,
PA8 = 3,
PK9 = 4,
}

View file

@ -19,6 +19,8 @@ public enum PogoType : byte
Raid = 10,
/// <summary> Mythical Pokémon captured after completing Raid Battles. </summary>
RaidM,
/// <summary> Ultra Beasts captured after completing Raid Battles. Only Beast Balls can be used. </summary>
RaidUB,
/// <summary> Pokémon captured after completing Field Research. </summary>
Research = 20,
@ -52,6 +54,7 @@ public static class PogoTypeExtensions
PogoType.EggS => 8,
PogoType.Raid => 20,
PogoType.RaidM => 20,
PogoType.RaidUB => 20,
PogoType.Research => 15,
PogoType.ResearchM => 15,
PogoType.ResearchP => 15,
@ -104,6 +107,7 @@ public static class PogoTypeExtensions
PogoType.EggS => Ball.Poke,
PogoType.Raid => Ball.Premier,
PogoType.RaidM => Ball.Premier,
PogoType.RaidUB => Ball.Beast,
PogoType.ResearchP => Ball.Poke,
PogoType.ResearchUB => Ball.Beast,
PogoType.Shadow => Ball.Premier,

View file

@ -0,0 +1,79 @@
using System;
using System.Buffers.Binary;
namespace PKHeX.Core;
/// <summary>
/// Generation 9 Fixed Spawn Encounter
/// </summary>
public sealed record EncounterFixed9 : EncounterStatic, IGemType
{
public override int Generation => 9;
public override int Location => Location0;
public override EntityContext Context => EntityContext.Gen9;
public GemType TeraType { get; private init; }
private byte Location0 { get; init; }
private byte Location1 { get; init; }
private byte Location2 { get; init; }
public static EncounterFixed9[] GetArray(ReadOnlySpan<byte> data)
{
const int size = 0x14;
var count = data.Length / size;
var result = new EncounterFixed9[count];
for (int i = 0; i < result.Length; i++)
result[i] = ReadEncounter(data.Slice(i * size, size));
return result;
}
private EncounterFixed9() : base(GameVersion.SV) { }
private static EncounterFixed9 ReadEncounter(ReadOnlySpan<byte> data) => new()
{
Species = BinaryPrimitives.ReadUInt16LittleEndian(data),
Form = data[0x02],
Level = data[0x03],
FlawlessIVCount = data[0x04],
TeraType = (GemType)data[0x05],
// 2 bytes reserved
Moves = new Moveset(
BinaryPrimitives.ReadUInt16LittleEndian(data[0x08..]),
BinaryPrimitives.ReadUInt16LittleEndian(data[0x0A..]),
BinaryPrimitives.ReadUInt16LittleEndian(data[0x0C..]),
BinaryPrimitives.ReadUInt16LittleEndian(data[0x0E..])),
Location0 = data[0x10],
Location1 = data[0x11],
Location2 = data[0x12],
// 1 byte reserved
};
protected override bool IsMatchLocation(PKM pk)
{
if (!pk.HasOriginalMetLocation)
return true;
var loc = pk.Met_Location;
return loc == Location0 || loc == Location1 || loc == Location2;
}
public override bool IsMatchExact(PKM pk, EvoCriteria evo)
{
if (TeraType != GemType.Random && pk is ITeraType t && !Tera9RNG.IsMatchTeraType(TeraType, Species, Form, (byte)t.TeraTypeOriginal))
return false;
return base.IsMatchExact(pk, evo);
}
protected override void ApplyDetails(ITrainerInfo tr, EncounterCriteria criteria, PKM pk)
{
base.ApplyDetails(tr, criteria, pk);
var pk9 = (PK9)pk;
pk9.Obedience_Level = (byte)pk9.Met_Level;
var type = Tera9RNG.GetTeraType(Util.Rand.Rand64(), TeraType, Species, Form);
pk9.TeraTypeOriginal = (MoveType)type;
if (criteria.TeraType != -1 && type != criteria.TeraType)
pk9.SetTeraType(type); // sets the override type
pk9.HeightScalar = PokeSizeUtil.GetRandomScalar();
pk9.WeightScalar = PokeSizeUtil.GetRandomScalar();
pk9.Scale = PokeSizeUtil.GetRandomScalar();
}
}

View file

@ -107,9 +107,9 @@ public abstract record EncounterStatic(GameVersion Version) : IEncounterable, IM
s.HeightScalar = PokeSizeUtil.GetRandomScalar();
s.WeightScalar = PokeSizeUtil.GetRandomScalar();
}
if (this is IGigantamax g && pk is PK8 pg)
if (this is IGigantamaxReadOnly g && pk is PK8 pg)
pg.CanGigantamax = g.CanGigantamax;
if (this is IDynamaxLevel d && pk is PK8 pd)
if (this is IDynamaxLevelReadOnly d && pk is PK8 pd)
pd.DynamaxLevel = d.DynamaxLevel;
}
@ -250,7 +250,7 @@ public abstract record EncounterStatic(GameVersion Version) : IEncounterable, IM
if (!IsMatchIVs(pk))
return false;
if (this is IContestStats es && pk is IContestStats s && s.IsContestBelow(es))
if (this is IContestStatsReadOnly es && pk is IContestStatsReadOnly s && s.IsContestBelow(es))
return false;
// Defer to EC/PID check

View file

@ -4,7 +4,7 @@ namespace PKHeX.Core;
/// Generation 6 Static Encounter
/// </summary>
/// <inheritdoc cref="EncounterStatic"/>
public sealed record EncounterStatic6(GameVersion Version) : EncounterStatic(Version), IContestStats
public sealed record EncounterStatic6(GameVersion Version) : EncounterStatic(Version), IContestStatsReadOnly
{
public override int Generation => 6;
public override EntityContext Context => EntityContext.Gen6;

View file

@ -6,17 +6,17 @@ namespace PKHeX.Core;
/// Generation 8 Static Encounter
/// </summary>
/// <inheritdoc cref="EncounterStatic"/>
public sealed record EncounterStatic8(GameVersion Version) : EncounterStatic(Version), IDynamaxLevel, IGigantamax, IRelearn, IOverworldCorrelation8
public sealed record EncounterStatic8(GameVersion Version = GameVersion.SWSH) : EncounterStatic(Version), IDynamaxLevelReadOnly, IGigantamaxReadOnly, IRelearn, IOverworldCorrelation8
{
public override int Generation => 8;
public override EntityContext Context => EntityContext.Gen8;
public bool ScriptedNoMarks { get; init; }
public bool CanGigantamax { get; set; }
public byte DynamaxLevel { get; set; }
public bool CanGigantamax { get; init; }
public byte DynamaxLevel { get; init; }
public Moveset Relearn { get; init; }
public Crossover8 Crossover { get; init; }
public AreaWeather8 Weather {get; init; } = AreaWeather8.Normal;
public AreaWeather8 Weather { get; init; } = AreaWeather8.Normal;
protected override bool IsMatchLocation(PKM pk)
{

View file

@ -28,6 +28,15 @@ public sealed record EncounterStatic8N : EncounterStatic8Nest<EncounterStatic8N>
FlawlessIVCount = val;
}
public static EncounterStatic8N Read(ReadOnlySpan<byte> data, GameVersion game) => new(data[6], data[7], data[8], data[9], game)
{
Species = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data),
Form = data[2],
Gender = (sbyte)data[3],
Ability = (AbilityPermission)data[4],
CanGigantamax = data[5] != 0,
};
private static readonly byte[] LevelCaps =
{
15, 20, // 0

View file

@ -1,3 +1,4 @@
using System;
using static PKHeX.Core.Encounters8Nest;
namespace PKHeX.Core;
@ -11,13 +12,45 @@ public sealed record EncounterStatic8ND : EncounterStatic8Nest<EncounterStatic8N
/// <summary>
/// Distribution raid index for <see cref="GameVersion.SWSH"/>
/// </summary>
public byte Index { get; init; }
public byte Index { get; }
public EncounterStatic8ND(byte lvl, byte dyna, byte flawless, GameVersion game = GameVersion.SWSH) : base(game)
public EncounterStatic8ND(byte lvl, byte dyna, byte flawless, byte index, GameVersion game) : base(game)
{
Level = lvl;
DynamaxLevel = dyna;
FlawlessIVCount = flawless;
Index = index;
}
public static EncounterStatic8ND Read(ReadOnlySpan<byte> data, GameVersion game)
{
var d = data[13];
var dlvl = (byte)(d & 0x7F);
var gmax = d >= 0x80;
var f = data[14];
var flawless = (byte)(f & 0xF);
var shiny = (f >> 4) switch
{
1 => Shiny.Never,
2 => Shiny.Always,
_ => Shiny.Random,
};
var move1 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[4..]);
var move2 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[6..]);
var move3 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[8..]);
var move4 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[10..]);
var moves = new Moveset(move1, move2, move3, move4);
return new EncounterStatic8ND(data[12], dlvl, flawless, data[15], game)
{
Species = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data),
Form = data[2],
Ability = (AbilityPermission)data[3],
CanGigantamax = gmax,
Moves = moves,
Shiny = shiny,
};
}
protected override bool IsMatchLevel(PKM pk, EvoCriteria evo)
@ -52,13 +85,16 @@ public sealed record EncounterStatic8ND : EncounterStatic8Nest<EncounterStatic8N
return badges is 1 or 3 && !pk.IsShiny;
}
private const byte IndexMinDLC2 = 40;
private const byte IndexMinDLC1 = 25;
protected override bool IsMatchLocation(PKM pk)
{
var loc = pk.Met_Location;
return loc is SharedNest || Index switch
{
>= 40 => EncounterArea8.IsWildArea(loc),
>= 25 => EncounterArea8.IsWildArea8(loc) || EncounterArea8.IsWildArea8Armor(loc),
>= IndexMinDLC2 => EncounterArea8.IsWildArea(loc),
>= IndexMinDLC1 => EncounterArea8.IsWildArea8(loc) || EncounterArea8.IsWildArea8Armor(loc),
_ => EncounterArea8.IsWildArea8(loc),
};
}

View file

@ -8,15 +8,15 @@ namespace PKHeX.Core;
/// Generation 8 Nest Encounter (Raid)
/// </summary>
/// <inheritdoc cref="EncounterStatic"/>
public abstract record EncounterStatic8Nest<T>(GameVersion Version) : EncounterStatic(Version), IGigantamax, IDynamaxLevel where T : EncounterStatic8Nest<T>
public abstract record EncounterStatic8Nest<T>(GameVersion Version) : EncounterStatic(Version), IGigantamaxReadOnly, IDynamaxLevelReadOnly where T : EncounterStatic8Nest<T>
{
public sealed override int Generation => 8;
public override EntityContext Context => EntityContext.Gen8;
public static Func<PKM, T, bool>? VerifyCorrelation { private get; set; }
public static Action<PKM, T, EncounterCriteria>? GenerateData { private get; set; }
public bool CanGigantamax { get; set; }
public byte DynamaxLevel { get; set; }
public bool CanGigantamax { get; init; }
public byte DynamaxLevel { get; init; }
public override int Location { get => SharedNest; init { } }
public override bool IsMatchExact(PKM pk, EvoCriteria evo)

View file

@ -1,4 +1,5 @@
using static PKHeX.Core.Encounters8Nest;
using System;
using static PKHeX.Core.Encounters8Nest;
namespace PKHeX.Core;
@ -8,7 +9,7 @@ namespace PKHeX.Core;
/// <inheritdoc cref="EncounterStatic8Nest{T}"/>
public sealed record EncounterStatic8U : EncounterStatic8Nest<EncounterStatic8U>
{
public override int Location { get => MaxLair; init { } }
public override int Location => MaxLair;
public EncounterStatic8U(ushort species, byte form, byte level) : base(GameVersion.SWSH) // no difference in met location for hosted raids
{
@ -19,6 +20,23 @@ public sealed record EncounterStatic8U : EncounterStatic8Nest<EncounterStatic8U>
FlawlessIVCount = 4;
}
public static EncounterStatic8U Read(ReadOnlySpan<byte> data)
{
var spec = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data);
var move1 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[4..]);
var move2 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[6..]);
var move3 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[8..]);
var move4 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[10..]);
var moves = new Moveset(move1, move2, move3, move4);
return new EncounterStatic8U(spec, data[2], data[3])
{
Ability = (AbilityPermission)data[12],
CanGigantamax = data[13] != 0,
Moves = moves,
};
}
public override bool IsMatchExact(PKM pk, EvoCriteria evo)
{
if (pk.FlawlessIVCount < FlawlessIVCount)

View file

@ -6,14 +6,14 @@ namespace PKHeX.Core;
/// Generation 8 Static Encounter
/// </summary>
/// <inheritdoc cref="EncounterStatic"/>
public sealed record EncounterStatic8a(GameVersion Version) : EncounterStatic(Version), IAlpha, IMasteryInitialMoveShop8
public sealed record EncounterStatic8a(GameVersion Version) : EncounterStatic(Version), IAlphaReadOnly, IMasteryInitialMoveShop8, IScaledSizeReadOnly
{
public override int Generation => 8;
public override EntityContext Context => EntityContext.Gen8a;
public byte HeightScalar { get; }
public byte WeightScalar { get; }
public bool IsAlpha { get; set; }
public bool IsAlpha { get; init; }
public EncounterStatic8aCorrelation Method { get; init; }
public bool HasFixedHeight => HeightScalar != NoScalar;
@ -43,7 +43,7 @@ public sealed record EncounterStatic8a(GameVersion Version) : EncounterStatic(Ve
pa.HeightScalar = HeightScalar;
if (HasFixedWeight)
pa.WeightScalar = WeightScalar;
pa.HeightScalarCopy = pa.HeightScalar;
pa.Scale = pa.HeightScalar;
pa.ResetHeight();
pa.ResetWeight();

Some files were not shown because too many files have changed in this diff Show more