Misc dex state fixes

Closes #4739
Closes #4740
Closes #4741

Co-Authored-By: Michael Bond <michael@bondcodes.com>
This commit is contained in:
Kurt 2026-03-02 17:36:24 -06:00
parent c64bc65359
commit dd0d1fc07a
2 changed files with 12 additions and 4 deletions

View File

@ -60,10 +60,18 @@ namespace PKHeX.Core;
public bool IsSeen => GetState() >= 2;
public bool IsCaught => GetState() >= 3;
public void SetCaught(bool value) => SetState(value ? 3u : 2u);
public void SetCaught(bool value)
{
if (value)
SetState(3u);
else if (GetState() == 3u) // only lower if currently caught
SetState(2u);
// state 0 or 1 or 2: no change
}
public void SetSeen(bool value)
{
var newValue = !value ? 1 : Math.Min(GetState(), 2);
var newValue = !value ? 1 : Math.Max(GetState(), 2);
SetState(newValue);
}

View File

@ -211,8 +211,8 @@ private bool GetIsSpeciesFormAnyDisplayed(int baseBit, int formBit)
// Bulk Manipulation
public override void SeenNone() => SetDexEntriesAll(false, shinyToo: true);
public override void CaughtNone() => SetAllCaught(false, true);
public override void SeenAll(bool shinyToo = false) => SetAllSeen(shinyToo);
public override void CaughtNone() => SetAllCaught(false, shinyToo: true);
public override void SeenAll(bool shinyToo = false) => SetAllSeen(shinyToo: shinyToo);
public override void CompleteDex(bool shinyToo = false) => SetDexEntriesAll(shinyToo: shinyToo);
public override void CaughtAll(bool shinyToo = false)