diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterDist9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterDist9.cs index 1fb7e73e9..0326c7d93 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterDist9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterDist9.cs @@ -5,8 +5,7 @@ namespace PKHeX.Core; -public sealed record EncounterDist9 - : IEncounterable, IEncounterMatch, IEncounterConvertible, ITeraRaid9, IMoveset, IFlawlessIVCount, IFixedGender, IFixedNature +public sealed record EncounterDist9 : ITeraRaid9, IFixedNature { public byte Generation => 9; ushort ILocation.Location => Location; @@ -235,14 +234,12 @@ private static EncounterDist9 ReadEncounter(ReadOnlySpan data) => new() }; #region Generating - PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) => ConvertToPKM(tr, criteria); - PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr); public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted); public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) { int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language); var version = this.GetCompatibleVersion(tr.Version); - var pi = PersonalTable.SV[Species, Form]; + var pi = GetPersonal(); var pk = new PK9 { Language = language, @@ -269,19 +266,33 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) return pk; } + private PersonalInfo9SV GetPersonal() => PersonalTable.SV[Species, Form]; + private void SetPINGA(PK9 pk, EncounterCriteria criteria, PersonalInfo9SV pi) { - const byte rollCount = 1; - const byte undefinedSize = 0; - var param = new GenerateParam9(Species, pi.Gender, FlawlessIVCount, rollCount, - undefinedSize, undefinedSize, ScaleType, Scale, - Ability, Shiny, Nature, IVs: IVs); - + var param = GetParam(pi); var init = Util.Rand.Rand64(); var success = this.TryApply32(pk, init, param, criteria); if (!success && !this.TryApply32(pk, init, param, criteria.WithoutIVs())) this.TryApply32(pk, init, param, EncounterCriteria.Unrestricted); } + + private GenerateParam9 GetParam(PersonalInfo9SV pi) + { + const byte rollCount = 1; + const byte undefinedSize = 0; + return new GenerateParam9(Species, pi.Gender, FlawlessIVCount, rollCount, + undefinedSize, undefinedSize, ScaleType, Scale, + Ability, Shiny, Nature, IVs: IVs); + } + + public bool GenerateSeed32(PKM pk, uint seed) + { + var pk9 = (PK9)pk; + var param = GetParam(GetPersonal()); + Encounter9RNG.GenerateData(pk9, param, EncounterCriteria.Unrestricted, seed); + return true; + } #endregion #region Matching diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterMight9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterMight9.cs index f09e48fcb..9d7064028 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterMight9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterMight9.cs @@ -3,8 +3,7 @@ namespace PKHeX.Core; -public sealed record EncounterMight9 - : IEncounterable, IEncounterMatch, IEncounterConvertible, ITeraRaid9, IMoveset, IFlawlessIVCount, IFixedGender, IFixedNature +public sealed record EncounterMight9 : ITeraRaid9, IFixedNature { public byte Generation => 9; ushort ILocation.Location => Location; @@ -249,8 +248,6 @@ private static EncounterMight9 ReadEncounter(ReadOnlySpan data) => new() }; #region Generating - PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) => ConvertToPKM(tr, criteria); - PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr); public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted); public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) { @@ -285,20 +282,34 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) return pk; } + private PersonalInfo9SV GetPersonal() => PersonalTable.SV[Species, Form]; + private void SetPINGA(PK9 pk, EncounterCriteria criteria, PersonalInfo9SV pi) { - const byte rollCount = 1; - const byte undefinedSize = 0; - byte gender = GetGender(pi); - var param = new GenerateParam9(Species, gender, FlawlessIVCount, rollCount, - undefinedSize, undefinedSize, ScaleType, Scale, - Ability, Shiny, Nature, IVs); - + var param = GetParam(pi); var init = Util.Rand.Rand64(); var success = this.TryApply32(pk, init, param, criteria); if (!success && !this.TryApply32(pk, init, param, criteria.WithoutIVs())) this.TryApply32(pk, init, param, EncounterCriteria.Unrestricted); } + + private GenerateParam9 GetParam(PersonalInfo9SV pi) + { + const byte rollCount = 1; + const byte undefinedSize = 0; + byte gender = GetGender(pi); + return new GenerateParam9(Species, gender, FlawlessIVCount, rollCount, + undefinedSize, undefinedSize, ScaleType, Scale, + Ability, Shiny, Nature, IVs); + } + + public bool GenerateSeed32(PKM pk, uint seed) + { + var pk9 = (PK9)pk; + var param = GetParam(GetPersonal()); + Encounter9RNG.GenerateData(pk9, param, EncounterCriteria.Unrestricted, seed); + return true; + } #endregion #region Matching diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTera9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTera9.cs index e48834c51..b0dc3f6fd 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTera9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTera9.cs @@ -7,9 +7,7 @@ namespace PKHeX.Core; /// /// Generation 9 Tera Raid Encounter /// -public sealed record EncounterTera9 - : IEncounterable, IEncounterMatch, IEncounterConvertible, IGenerateSeed32, - ITeraRaid9, IMoveset, IFlawlessIVCount, IFixedGender, IEncounterFormRandom +public sealed record EncounterTera9 : ITeraRaid9, IEncounterFormRandom { public byte Generation => 9; public EntityContext Context => EntityContext.Gen9; @@ -173,8 +171,6 @@ private static EncounterTera9 ReadEncounter(ReadOnlySpan data, TeraRaidMap }; #region Generating - PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) => ConvertToPKM(tr, criteria); - PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr); public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted); public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) { diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/ITeraRaid9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/ITeraRaid9.cs index e4fa64ac1..5f7345d39 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/ITeraRaid9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/ITeraRaid9.cs @@ -3,7 +3,7 @@ namespace PKHeX.Core; /// /// Properties shared for all Tera Crystal raids. /// -public interface ITeraRaid9 : IGemType +public interface ITeraRaid9 : IEncounterable, IEncounterMatch, IGemType, IGenerateSeed32, IMoveset, IFixedGender, IFlawlessIVCount, IEncounterConvertible { /// /// Is a BCAT raid. @@ -29,4 +29,9 @@ public interface ITeraRaid9 : IGemType /// Checks if the provided will pick this object by random choice. /// bool CanBeEncountered(uint seed); + + PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) => ConvertToPKM(tr, criteria); + PKM IEncounterConvertible.ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr); + new PK9 ConvertToPKM(ITrainerInfo tr); + new PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria); }