mirror of
https://github.com/kwsch/PKHeX
synced 2024-12-04 17:59:16 +00:00
fa9a809751
* Extract/encapsulate inventory legal arrays to interface+class Hiding them behind methods allows these to be left as ReadOnlySpan<ushort> and thus never allocate on the heap. Also refactors out some logic for checking if an item is legal. End result feels more maintainable and is less bloaty (no more passing in a nullable func) Batch editing * Add HasType filter ``` =HasType=11 .HeldItem=Meadow Plate ``` slaps a meadow plate on any pkm with grass type Use `=PersonalType1=11` for only primary grass types; only-secondary-type grass will not match it.
32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace PKHeX.Core;
|
|
|
|
public sealed class MyItem5B2W2 : MyItem
|
|
{
|
|
// offsets/pouch sizes are the same for both BW and B2W2, but Key Item permissions are different
|
|
private const int HeldItem = 0x000; // 0
|
|
private const int KeyItem = 0x4D8; // 1
|
|
private const int TMHM = 0x624; // 2
|
|
private const int Medicine = 0x7D8; // 3
|
|
private const int Berry = 0x898; // 4
|
|
public MyItem5B2W2(SaveFile SAV, int offset) : base(SAV) => Offset = offset;
|
|
|
|
public override IReadOnlyList<InventoryPouch> Inventory
|
|
{
|
|
get
|
|
{
|
|
var info = ItemStorage5B2W2.Instance;
|
|
InventoryPouch4[] pouch =
|
|
{
|
|
new(InventoryType.Items, info, 999, Offset + HeldItem),
|
|
new(InventoryType.KeyItems, info, 1, Offset + KeyItem),
|
|
new(InventoryType.TMHMs, info, 1, Offset + TMHM),
|
|
new(InventoryType.Medicine, info, 999, Offset + Medicine),
|
|
new(InventoryType.Berries, info, 999, Offset + Berry),
|
|
};
|
|
return pouch.LoadAll(Data);
|
|
}
|
|
set => value.SaveAll(Data);
|
|
}
|
|
}
|