namespace PKHeX.Core { /// /// Logic for applying a value. /// public static class CatchRateApplicator { public static int GetSuggestedCatchRate(PK1 pk1, SaveFile sav) { var la = new LegalityAnalysis(pk1); return GetSuggestedCatchRate(pk1, sav, la); } public static int GetSuggestedCatchRate(PK1 pk1, SaveFile sav, LegalityAnalysis la) { if (la.Valid) return pk1.Catch_Rate; if (la.Info.Generation == 2) return 0; var v = la.EncounterOriginal; switch (v) { case EncounterTrade1 c: return c.GetInitialCatchRate(); case EncounterStatic s when s.Version == GameVersion.Stadium && s.Species == (int)Species.Psyduck: return pk1.Japanese ? 167 : 168; // Amnesia Psyduck has different catch rates depending on language default: { if (sav.Version.Contains(v.Version) || v.Version.Contains(sav.Version)) return sav.Personal[v.Species].CatchRate; if (!GameVersion.RB.Contains(v.Version)) return PersonalTable.Y[v.Species].CatchRate; return PersonalTable.RB[v.Species].CatchRate; } } } } }