mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-08-24 04:54:07 -05:00
Extract item restrictions to separate class
Move similar classes to folder
This commit is contained in:
@@ -448,39 +448,6 @@ internal static int GetMaxLanguageID(int generation)
|
||||
};
|
||||
}
|
||||
|
||||
private static bool[] GetReleasedHeldItems(int generation)
|
||||
{
|
||||
return generation switch
|
||||
{
|
||||
2 => ReleasedHeldItems_2,
|
||||
3 => ReleasedHeldItems_3,
|
||||
4 => ReleasedHeldItems_4,
|
||||
5 => ReleasedHeldItems_5,
|
||||
6 => ReleasedHeldItems_6,
|
||||
7 => ReleasedHeldItems_7,
|
||||
8 => ReleasedHeldItems_8,
|
||||
_ => Array.Empty<bool>()
|
||||
};
|
||||
}
|
||||
|
||||
internal static bool IsHeldItemAllowed(PKM pkm)
|
||||
{
|
||||
if (pkm is PB7)
|
||||
return pkm.HeldItem == 0;
|
||||
return IsHeldItemAllowed(pkm.HeldItem, pkm.Format);
|
||||
}
|
||||
|
||||
private static bool IsHeldItemAllowed(int item, int generation)
|
||||
{
|
||||
if (item == 0)
|
||||
return true;
|
||||
if (item < 0)
|
||||
return false;
|
||||
|
||||
var items = GetReleasedHeldItems(generation);
|
||||
return items.Length > item && items[item];
|
||||
}
|
||||
|
||||
private static bool IsEvolvedFormChange(PKM pkm)
|
||||
{
|
||||
if (pkm.IsEgg)
|
||||
|
||||
57
PKHeX.Core/Legality/Restrictions/ItemRestrictions.cs
Normal file
57
PKHeX.Core/Legality/Restrictions/ItemRestrictions.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using static PKHeX.Core.Legal;
|
||||
|
||||
namespace PKHeX.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Information about Held Item Restrictions
|
||||
/// </summary>
|
||||
public static class ItemRestrictions
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks if a <see cref="PKM.HeldItem"/> is available to be held in the current <see cref="PKM.Format"/>.
|
||||
/// </summary>
|
||||
/// <param name="pk">Entity data</param>
|
||||
/// <returns>True if able to be held, false if not</returns>
|
||||
public static bool IsHeldItemAllowed(PKM pk)
|
||||
{
|
||||
if (pk is PB7)
|
||||
return pk.HeldItem == 0;
|
||||
return IsHeldItemAllowed(pk.HeldItem, pk.Format);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if an <see cref="item"/> is available to be held in <see cref="generation"/>.
|
||||
/// </summary>
|
||||
/// <param name="item">Held Item ID</param>
|
||||
/// <param name="generation">Generation Number</param>
|
||||
/// <returns>True if able to be held, false if not</returns>
|
||||
public static bool IsHeldItemAllowed(int item, int generation)
|
||||
{
|
||||
if (item == 0)
|
||||
return true;
|
||||
if (item < 0)
|
||||
return false;
|
||||
|
||||
var items = GetReleasedHeldItems(generation);
|
||||
return items.Count > item && items[item];
|
||||
}
|
||||
|
||||
private static IReadOnlyList<bool> GetReleasedHeldItems(int generation)
|
||||
{
|
||||
return generation switch
|
||||
{
|
||||
2 => ReleasedHeldItems_2,
|
||||
3 => ReleasedHeldItems_3,
|
||||
4 => ReleasedHeldItems_4,
|
||||
5 => ReleasedHeldItems_5,
|
||||
6 => ReleasedHeldItems_6,
|
||||
7 => ReleasedHeldItems_7,
|
||||
8 => ReleasedHeldItems_8,
|
||||
_ => Array.Empty<bool>()
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ public sealed class ItemVerifier : Verifier
|
||||
public override void Verify(LegalityAnalysis data)
|
||||
{
|
||||
var pkm = data.pkm;
|
||||
if (!Legal.IsHeldItemAllowed(pkm))
|
||||
if (!ItemRestrictions.IsHeldItemAllowed(pkm))
|
||||
data.AddLine(GetInvalid(LItemUnreleased));
|
||||
|
||||
if (pkm.Format == 3 && pkm.HeldItem == 175) // Enigma Berry
|
||||
|
||||
Reference in New Issue
Block a user