Skip to content

Commit

Permalink
Bounds check on invalid encounter
Browse files Browse the repository at this point in the history
Magmortar from Gen3 in Gen4+ somehow requests learnset; just give it species 0.
  • Loading branch information
kwsch committed Feb 26, 2024
1 parent 645d65b commit aa841ae
Show file tree
Hide file tree
Showing 8 changed files with 8 additions and 8 deletions.
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource1RB.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public sealed class LearnSource1RB : ILearnSource<PersonalInfo1>
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)
{
Expand Down
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource1YW.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public sealed class LearnSource1YW : ILearnSource<PersonalInfo1>
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)
{
Expand Down
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource2C.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public sealed class LearnSource2C : ILearnSource<PersonalInfo2>, 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)
{
Expand Down
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource2GS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public sealed class LearnSource2GS : ILearnSource<PersonalInfo2>, 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)
{
Expand Down
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource3E.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public sealed class LearnSource3E : LearnSource3, ILearnSource<PersonalInfo3>, 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)
Expand Down
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource3FR.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public sealed class LearnSource3FR : LearnSource3, ILearnSource<PersonalInfo3>,
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)
Expand Down
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource3LG.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public sealed class LearnSource3LG : LearnSource3, ILearnSource<PersonalInfo3>,
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)
Expand Down
2 changes: 1 addition & 1 deletion PKHeX.Core/Legality/LearnSource/Sources/LearnSource3RS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public sealed class LearnSource3RS : LearnSource3, ILearnSource<PersonalInfo3>,
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)
{
Expand Down

0 comments on commit aa841ae

Please sign in to comment.