mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-09-10 08:05:46 -05:00
Add GetEncounterMoves method
dictionary mapping common gameversions to their associated obj
This commit is contained in:
137
PKHeX.Core/Game/GameData.cs
Normal file
137
PKHeX.Core/Game/GameData.cs
Normal file
@@ -0,0 +1,137 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace PKHeX.Core
|
||||
{
|
||||
public static class GameData
|
||||
{
|
||||
public static Learnset[] GetLearnsets(GameVersion game) => Learnsets[game];
|
||||
public static PersonalTable GetPersonal(GameVersion game) => Personal[game];
|
||||
|
||||
private static readonly Dictionary<GameVersion, Learnset[]> Learnsets = new Dictionary<GameVersion, Learnset[]>
|
||||
{
|
||||
{ GameVersion.RD, Legal.LevelUpRB },
|
||||
{ GameVersion.BU, Legal.LevelUpRB },
|
||||
{ GameVersion.GN, Legal.LevelUpRB },
|
||||
{ GameVersion.YW, Legal.LevelUpY },
|
||||
{ GameVersion.GD, Legal.LevelUpGS },
|
||||
{ GameVersion.SV, Legal.LevelUpGS },
|
||||
{ GameVersion.C, Legal.LevelUpC },
|
||||
|
||||
{ GameVersion.R, Legal.LevelUpRS },
|
||||
{ GameVersion.S, Legal.LevelUpRS },
|
||||
{ GameVersion.E, Legal.LevelUpE },
|
||||
{ GameVersion.FR, Legal.LevelUpFR },
|
||||
{ GameVersion.LG, Legal.LevelUpLG },
|
||||
{ GameVersion.COLO, Legal.LevelUpE },
|
||||
{ GameVersion.XD, Legal.LevelUpE },
|
||||
|
||||
{ GameVersion.D, Legal.LevelUpDP },
|
||||
{ GameVersion.P, Legal.LevelUpDP },
|
||||
{ GameVersion.Pt, Legal.LevelUpPt },
|
||||
{ GameVersion.HG, Legal.LevelUpHGSS },
|
||||
{ GameVersion.SS, Legal.LevelUpHGSS },
|
||||
|
||||
{ GameVersion.B, Legal.LevelUpBW },
|
||||
{ GameVersion.W, Legal.LevelUpBW },
|
||||
{ GameVersion.B2, Legal.LevelUpB2W2 },
|
||||
{ GameVersion.W2, Legal.LevelUpB2W2 },
|
||||
|
||||
{ GameVersion.X, Legal.LevelUpXY },
|
||||
{ GameVersion.Y, Legal.LevelUpXY },
|
||||
{ GameVersion.AS, Legal.LevelUpAO },
|
||||
{ GameVersion.OR, Legal.LevelUpAO },
|
||||
|
||||
{ GameVersion.SN, Legal.LevelUpSM },
|
||||
{ GameVersion.MN, Legal.LevelUpSM },
|
||||
{ GameVersion.US, Legal.LevelUpUSUM },
|
||||
{ GameVersion.UM, Legal.LevelUpUSUM },
|
||||
|
||||
{ GameVersion.RB, Legal.LevelUpRB },
|
||||
{ GameVersion.RBY, Legal.LevelUpY },
|
||||
{ GameVersion.GSC, Legal.LevelUpC },
|
||||
{ GameVersion.RS, Legal.LevelUpRS },
|
||||
{ GameVersion.FRLG, Legal.LevelUpE },
|
||||
{ GameVersion.CXD, Legal.LevelUpE },
|
||||
{ GameVersion.DP, Legal.LevelUpDP },
|
||||
{ GameVersion.HGSS, Legal.LevelUpHGSS },
|
||||
{ GameVersion.BW, Legal.LevelUpBW },
|
||||
{ GameVersion.B2W2, Legal.LevelUpB2W2 },
|
||||
{ GameVersion.XY, Legal.LevelUpXY },
|
||||
{ GameVersion.ORAS, Legal.LevelUpAO },
|
||||
{ GameVersion.SM, Legal.LevelUpSM },
|
||||
{ GameVersion.USUM, Legal.LevelUpUSUM },
|
||||
|
||||
{ GameVersion.Gen1, Legal.LevelUpY },
|
||||
{ GameVersion.Gen2, Legal.LevelUpC },
|
||||
{ GameVersion.Gen3, Legal.LevelUpE },
|
||||
{ GameVersion.Gen4, Legal.LevelUpHGSS },
|
||||
{ GameVersion.Gen5, Legal.LevelUpB2W2 },
|
||||
{ GameVersion.Gen6, Legal.LevelUpAO },
|
||||
{ GameVersion.Gen7, Legal.LevelUpSM },
|
||||
{ GameVersion.VCEvents, Legal.LevelUpY },
|
||||
};
|
||||
private static readonly Dictionary<GameVersion, PersonalTable> Personal = new Dictionary<GameVersion, PersonalTable>
|
||||
{
|
||||
{ GameVersion.RD, PersonalTable.RB },
|
||||
{ GameVersion.BU, PersonalTable.RB },
|
||||
{ GameVersion.GN, PersonalTable.RB },
|
||||
{ GameVersion.YW, PersonalTable.Y },
|
||||
{ GameVersion.GD, PersonalTable.GS },
|
||||
{ GameVersion.SV, PersonalTable.GS },
|
||||
{ GameVersion.C, PersonalTable.C },
|
||||
|
||||
{ GameVersion.R, PersonalTable.RS },
|
||||
{ GameVersion.S, PersonalTable.RS },
|
||||
{ GameVersion.E, PersonalTable.E },
|
||||
{ GameVersion.FR, PersonalTable.FR },
|
||||
{ GameVersion.LG, PersonalTable.LG },
|
||||
{ GameVersion.COLO, PersonalTable.E },
|
||||
{ GameVersion.XD, PersonalTable.E },
|
||||
|
||||
{ GameVersion.D, PersonalTable.DP },
|
||||
{ GameVersion.P, PersonalTable.DP },
|
||||
{ GameVersion.Pt, PersonalTable.Pt },
|
||||
{ GameVersion.HG, PersonalTable.HGSS },
|
||||
{ GameVersion.SS, PersonalTable.HGSS },
|
||||
|
||||
{ GameVersion.B, PersonalTable.BW },
|
||||
{ GameVersion.W, PersonalTable.BW },
|
||||
{ GameVersion.B2, PersonalTable.B2W2 },
|
||||
{ GameVersion.W2, PersonalTable.B2W2 },
|
||||
|
||||
{ GameVersion.X, PersonalTable.XY },
|
||||
{ GameVersion.Y, PersonalTable.XY },
|
||||
{ GameVersion.AS, PersonalTable.AO },
|
||||
{ GameVersion.OR, PersonalTable.AO },
|
||||
|
||||
{ GameVersion.SN, PersonalTable.SM },
|
||||
{ GameVersion.MN, PersonalTable.SM },
|
||||
{ GameVersion.US, PersonalTable.USUM },
|
||||
{ GameVersion.UM, PersonalTable.USUM },
|
||||
|
||||
{ GameVersion.RB, PersonalTable.RB },
|
||||
{ GameVersion.RBY, PersonalTable.Y },
|
||||
{ GameVersion.GSC, PersonalTable.C },
|
||||
{ GameVersion.RS, PersonalTable.RS },
|
||||
{ GameVersion.FRLG, PersonalTable.E },
|
||||
{ GameVersion.CXD, PersonalTable.E },
|
||||
{ GameVersion.DP, PersonalTable.DP },
|
||||
{ GameVersion.HGSS, PersonalTable.HGSS },
|
||||
{ GameVersion.BW, PersonalTable.BW },
|
||||
{ GameVersion.B2W2, PersonalTable.B2W2 },
|
||||
{ GameVersion.XY, PersonalTable.XY },
|
||||
{ GameVersion.ORAS, PersonalTable.AO },
|
||||
{ GameVersion.SM, PersonalTable.SM },
|
||||
{ GameVersion.USUM, PersonalTable.USUM },
|
||||
|
||||
{ GameVersion.Gen1, PersonalTable.Y },
|
||||
{ GameVersion.Gen2, PersonalTable.C },
|
||||
{ GameVersion.Gen3, PersonalTable.E },
|
||||
{ GameVersion.Gen4, PersonalTable.HGSS },
|
||||
{ GameVersion.Gen5, PersonalTable.B2W2 },
|
||||
{ GameVersion.Gen6, PersonalTable.AO },
|
||||
{ GameVersion.Gen7, PersonalTable.SM },
|
||||
{ GameVersion.VCEvents, PersonalTable.Y },
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -40,45 +40,45 @@ public static partial class Legal
|
||||
public static GameVersion Savegame_Version { private get; set; } = GameVersion.Any;
|
||||
|
||||
// Gen 1
|
||||
private static readonly Learnset[] LevelUpRB = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_rb.pkl"), MaxSpeciesID_1);
|
||||
private static readonly Learnset[] LevelUpY = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_y.pkl"), MaxSpeciesID_1);
|
||||
internal static readonly Learnset[] LevelUpRB = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_rb.pkl"), MaxSpeciesID_1);
|
||||
internal static readonly Learnset[] LevelUpY = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_y.pkl"), MaxSpeciesID_1);
|
||||
|
||||
// Gen 2
|
||||
private static readonly EggMoves[] EggMovesGS = EggMoves2.GetArray(Util.GetBinaryResource("eggmove_gs.pkl"), MaxSpeciesID_2);
|
||||
private static readonly Learnset[] LevelUpGS = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_gs.pkl"), MaxSpeciesID_2);
|
||||
private static readonly EggMoves[] EggMovesC = EggMoves2.GetArray(Util.GetBinaryResource("eggmove_c.pkl"), MaxSpeciesID_2);
|
||||
private static readonly Learnset[] LevelUpC = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_c.pkl"), MaxSpeciesID_2);
|
||||
internal static readonly EggMoves[] EggMovesGS = EggMoves2.GetArray(Util.GetBinaryResource("eggmove_gs.pkl"), MaxSpeciesID_2);
|
||||
internal static readonly Learnset[] LevelUpGS = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_gs.pkl"), MaxSpeciesID_2);
|
||||
internal static readonly EggMoves[] EggMovesC = EggMoves2.GetArray(Util.GetBinaryResource("eggmove_c.pkl"), MaxSpeciesID_2);
|
||||
internal static readonly Learnset[] LevelUpC = Learnset1.GetArray(Util.GetBinaryResource("lvlmove_c.pkl"), MaxSpeciesID_2);
|
||||
|
||||
// Gen 3
|
||||
private static readonly Learnset[] LevelUpE = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_e.pkl"), "em"));
|
||||
private static readonly Learnset[] LevelUpRS = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_rs.pkl"), "rs"));
|
||||
private static readonly Learnset[] LevelUpFR = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_fr.pkl"), "fr"));
|
||||
private static readonly Learnset[] LevelUpLG = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_lg.pkl"), "lg"));
|
||||
private static readonly EggMoves[] EggMovesRS = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_rs.pkl"), "rs"));
|
||||
internal static readonly Learnset[] LevelUpE = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_e.pkl"), "em"));
|
||||
internal static readonly Learnset[] LevelUpRS = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_rs.pkl"), "rs"));
|
||||
internal static readonly Learnset[] LevelUpFR = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_fr.pkl"), "fr"));
|
||||
internal static readonly Learnset[] LevelUpLG = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_lg.pkl"), "lg"));
|
||||
internal static readonly EggMoves[] EggMovesRS = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_rs.pkl"), "rs"));
|
||||
|
||||
// Gen 4
|
||||
private static readonly Learnset[] LevelUpDP = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_dp.pkl"), "dp"));
|
||||
private static readonly Learnset[] LevelUpPt = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_pt.pkl"), "pt"));
|
||||
private static readonly Learnset[] LevelUpHGSS = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_hgss.pkl"), "hs"));
|
||||
private static readonly EggMoves[] EggMovesDPPt = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_dppt.pkl"), "dp"));
|
||||
private static readonly EggMoves[] EggMovesHGSS = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_hgss.pkl"), "hs"));
|
||||
internal static readonly Learnset[] LevelUpDP = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_dp.pkl"), "dp"));
|
||||
internal static readonly Learnset[] LevelUpPt = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_pt.pkl"), "pt"));
|
||||
internal static readonly Learnset[] LevelUpHGSS = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_hgss.pkl"), "hs"));
|
||||
internal static readonly EggMoves[] EggMovesDPPt = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_dppt.pkl"), "dp"));
|
||||
internal static readonly EggMoves[] EggMovesHGSS = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_hgss.pkl"), "hs"));
|
||||
|
||||
// Gen 5
|
||||
private static readonly Learnset[] LevelUpBW = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_bw.pkl"), "51"));
|
||||
private static readonly Learnset[] LevelUpB2W2 = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_b2w2.pkl"), "52"));
|
||||
private static readonly EggMoves[] EggMovesBW = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_bw.pkl"), "bw"));
|
||||
internal static readonly Learnset[] LevelUpBW = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_bw.pkl"), "51"));
|
||||
internal static readonly Learnset[] LevelUpB2W2 = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_b2w2.pkl"), "52"));
|
||||
internal static readonly EggMoves[] EggMovesBW = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_bw.pkl"), "bw"));
|
||||
|
||||
// Gen 6
|
||||
private static readonly EggMoves[] EggMovesXY = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_xy.pkl"), "xy"));
|
||||
private static readonly Learnset[] LevelUpXY = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_xy.pkl"), "xy"));
|
||||
private static readonly EggMoves[] EggMovesAO = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_ao.pkl"), "ao"));
|
||||
private static readonly Learnset[] LevelUpAO = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_ao.pkl"), "ao"));
|
||||
internal static readonly EggMoves[] EggMovesXY = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_xy.pkl"), "xy"));
|
||||
internal static readonly Learnset[] LevelUpXY = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_xy.pkl"), "xy"));
|
||||
internal static readonly EggMoves[] EggMovesAO = EggMoves6.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_ao.pkl"), "ao"));
|
||||
internal static readonly Learnset[] LevelUpAO = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_ao.pkl"), "ao"));
|
||||
|
||||
// Gen 7
|
||||
private static readonly EggMoves[] EggMovesSM = EggMoves7.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_sm.pkl"), "sm"));
|
||||
private static readonly Learnset[] LevelUpSM = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_sm.pkl"), "sm"));
|
||||
private static readonly EggMoves[] EggMovesUSUM = EggMoves7.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_uu.pkl"), "uu"));
|
||||
private static readonly Learnset[] LevelUpUSUM = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_uu.pkl"), "uu"));
|
||||
internal static readonly EggMoves[] EggMovesSM = EggMoves7.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_sm.pkl"), "sm"));
|
||||
internal static readonly Learnset[] LevelUpSM = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_sm.pkl"), "sm"));
|
||||
internal static readonly EggMoves[] EggMovesUSUM = EggMoves7.GetArray(Data.UnpackMini(Util.GetBinaryResource("eggmove_uu.pkl"), "uu"));
|
||||
internal static readonly Learnset[] LevelUpUSUM = Learnset6.GetArray(Data.UnpackMini(Util.GetBinaryResource("lvlmove_uu.pkl"), "uu"));
|
||||
|
||||
// Setup Help
|
||||
static Legal()
|
||||
@@ -2187,5 +2187,13 @@ internal static TreesArea GetCrystalTreeArea(EncounterSlot Slot)
|
||||
{
|
||||
return HeadbuttTreesC.FirstOrDefault(a => a.Location == Slot.Location);
|
||||
}
|
||||
|
||||
public static int[] GetEncounterMoves(PKM pk, int level, GameVersion version)
|
||||
{
|
||||
var learn = GameData.GetLearnsets(version);
|
||||
var table = GameData.GetPersonal(version);
|
||||
var index = table.GetFormeIndex(pk.Species, pk.AltForm);
|
||||
return learn[index].GetEncounterMoves(level);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user