From aa841aebe99d832839cd65c08a290497ee61bdf9 Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 26 Feb 2024 00:02:46 -0600 Subject: [PATCH] Bounds check on invalid encounter Magmortar from Gen3 in Gen4+ somehow requests learnset; just give it species 0. --- PKHeX.Core/Legality/LearnSource/Sources/LearnSource1RB.cs | 2 +- PKHeX.Core/Legality/LearnSource/Sources/LearnSource1YW.cs | 2 +- PKHeX.Core/Legality/LearnSource/Sources/LearnSource2C.cs | 2 +- PKHeX.Core/Legality/LearnSource/Sources/LearnSource2GS.cs | 2 +- PKHeX.Core/Legality/LearnSource/Sources/LearnSource3E.cs | 2 +- PKHeX.Core/Legality/LearnSource/Sources/LearnSource3FR.cs | 2 +- PKHeX.Core/Legality/LearnSource/Sources/LearnSource3LG.cs | 2 +- PKHeX.Core/Legality/LearnSource/Sources/LearnSource3RS.cs | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1RB.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1RB.cs index 320bdcc55..3e235456f 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1RB.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1RB.cs @@ -17,7 +17,7 @@ public sealed class LearnSource1RB : ILearnSource private const LearnEnvironment Game = RB; private const int MaxSpecies = Legal.MaxSpeciesID_1; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo1? pi) { diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1YW.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1YW.cs index 1619b16f2..5fb072244 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1YW.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource1YW.cs @@ -17,7 +17,7 @@ public sealed class LearnSource1YW : ILearnSource private const LearnEnvironment Game = YW; private const int MaxSpecies = Legal.MaxSpeciesID_1; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo1? pi) { diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2C.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2C.cs index 1c0fd2a7a..4b7754dda 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2C.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2C.cs @@ -18,7 +18,7 @@ public sealed class LearnSource2C : ILearnSource, IEggSource private const int MaxSpecies = Legal.MaxSpeciesID_2; private const LearnEnvironment Game = C; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo2? pi) { diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2GS.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2GS.cs index 12700f73c..b6b7b5f72 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2GS.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource2GS.cs @@ -18,7 +18,7 @@ public sealed class LearnSource2GS : ILearnSource, IEggSource private const int MaxSpecies = Legal.MaxSpeciesID_2; private const LearnEnvironment Game = GS; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo2? pi) { diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3E.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3E.cs index 61f08bce2..dd46755bd 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3E.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3E.cs @@ -18,7 +18,7 @@ public sealed class LearnSource3E : LearnSource3, ILearnSource, I private const byte Generation = 3; private const int CountTM = 50; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; internal PersonalInfo3 this[ushort species] => Personal[species]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo3? pi) diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3FR.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3FR.cs index 9f411e401..e1f585ef8 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3FR.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3FR.cs @@ -18,7 +18,7 @@ public sealed class LearnSource3FR : LearnSource3, ILearnSource, private const byte Generation = 3; private const int CountTM = 50; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; internal PersonalInfo3 this[ushort species] => Personal[species]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo3? pi) diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3LG.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3LG.cs index ee298a871..08e8dfe0e 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3LG.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3LG.cs @@ -18,7 +18,7 @@ public sealed class LearnSource3LG : LearnSource3, ILearnSource, private const byte Generation = 3; private const int CountTM = 50; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; internal PersonalInfo3 this[ushort species] => Personal[species]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo3? pi) diff --git a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3RS.cs b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3RS.cs index d4d05e5f7..877fe3d4d 100644 --- a/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3RS.cs +++ b/PKHeX.Core/Legality/LearnSource/Sources/LearnSource3RS.cs @@ -18,7 +18,7 @@ public sealed class LearnSource3RS : LearnSource3, ILearnSource, private const byte Generation = 3; private const int CountTM = 50; - public Learnset GetLearnset(ushort species, byte form) => Learnsets[species]; + public Learnset GetLearnset(ushort species, byte form) => Learnsets[species < Learnsets.Length ? species : 0]; public bool TryGetPersonal(ushort species, byte form, [NotNullWhen(true)] out PersonalInfo3? pi) {