From 5bb4c9e7fe9912f4079b1eecbb2148d8e9723751 Mon Sep 17 00:00:00 2001 From: Kurt Date: Fri, 5 Feb 2021 17:25:13 -0800 Subject: [PATCH] Update FormVerifier.cs --- PKHeX.Core/Legality/Verifiers/FormVerifier.cs | 54 ++++++++----------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/PKHeX.Core/Legality/Verifiers/FormVerifier.cs b/PKHeX.Core/Legality/Verifiers/FormVerifier.cs index 97221df47..e50684649 100644 --- a/PKHeX.Core/Legality/Verifiers/FormVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/FormVerifier.cs @@ -252,39 +252,10 @@ private CheckResult VerifyFormArgument(LegalityAnalysis data, in uint arg) var pkm = data.pkm; var enc = data.EncounterMatch; - static bool VerifyDayCounters(uint value, uint maxSeed, bool canRefresh = false) - { - // lowest byte is days remaining - // second lowest is days elapsed (lol) - var remain = value & 0xFF; - var elapsed = (value >> 8) & 0xFF; - if (canRefresh) - { - if (remain + elapsed < maxSeed) - return false; - } - else - { - if (remain + elapsed != maxSeed) - return false; - } - if (remain > maxSeed) - return false; - return remain != 0; - } - return (Species)pkm.Species switch { - Furfrou => arg switch - { - not 0 when pkm.Form != 0 || pkm.IsEgg => GetInvalid(LFormArgumentNotAllowed), - _ => VerifyDayCounters(arg, 5, true) ? GetValid(LFormArgumentValid) : GetInvalid(LFormArgumentInvalid), - }, - Hoopa => arg switch - { - not 0 when pkm.Form != 1 => GetInvalid(LFormArgumentNotAllowed), - _ => VerifyDayCounters(arg, 3) ? GetValid(LFormArgumentValid) : GetInvalid(LFormArgumentInvalid), - }, + Furfrou when pkm.Form != 0 => !IsFormArgumentDayCounterValid(arg, 5) ? GetInvalid(LFormArgumentInvalid) :GetValid(LFormArgumentValid), + Hoopa when pkm.Form == 1 => !IsFormArgumentDayCounterValid(arg, 3) ? GetInvalid(LFormArgumentInvalid) : GetValid(LFormArgumentValid), Yamask when pkm.Form == 1 => arg switch { not 0 when pkm.IsEgg => GetInvalid(LFormArgumentNotAllowed), @@ -319,5 +290,26 @@ static bool VerifyDayCounters(uint value, uint maxSeed, bool canRefresh = false) }, }; } + + private static bool IsFormArgumentDayCounterValid(uint value, uint maxSeed, bool canRefresh = false) + { + // lowest byte is days remaining + // second lowest is days elapsed (lol) + var remain = value & 0xFF; + var elapsed = (value >> 8) & 0xFF; + if (canRefresh) + { + if (remain + elapsed < maxSeed) + return false; + } + else + { + if (remain + elapsed != maxSeed) + return false; + } + if (remain > maxSeed) + return false; + return remain != 0; + } } }