From 41d2dd9294e39b98fab9dafdf5668e26349d89f9 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 5 Mar 2022 21:04:18 -0800 Subject: [PATCH] Update EncounterTrade for Shiny metadata Doesn't need to be stored in most cases Now permits EncounterTrade1 to be shiny --- .../Legality/Encounters/Data/Encounters8.cs | 22 +++++++++---------- .../EncounterTrade/EncounterTrade.cs | 2 +- .../EncounterTrade/EncounterTrade1.cs | 1 + .../EncounterTrade/EncounterTrade3.cs | 3 ++- .../EncounterTrade/EncounterTrade4.cs | 5 +++-- .../EncounterTrade/EncounterTrade5.cs | 15 ++++--------- .../EncounterTrade/EncounterTrade7b.cs | 7 ++---- .../EncounterTrade/EncounterTrade8.cs | 4 +++- 8 files changed, 27 insertions(+), 32 deletions(-) diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs index efbb71515..d9ae0d06b 100644 --- a/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs @@ -782,17 +782,17 @@ static Encounters8() private static readonly EncounterTrade8[] TradeGift_R1 = { - new(SWSH, 052,15,01,033,04,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {387,000,000,000} }, // Meowth - new(SW , 083,15,01,013,10,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {098,000,000,000} }, // Farfetch’d - new( SH, 222,15,01,069,12,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {457,000,000,000} }, // Corsola - new( SH, 077,15,01,047,06,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {234,000,000,000} }, // Ponyta - new(SWSH, 122,15,01,005,04,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {252,000,000,000} }, // Mr. Mime - new(SW , 554,15,01,040,12,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {326,000,000,000} }, // Darumaka - new(SWSH, 263,15,01,045,04,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {245,000,000,000} }, // Zigzagoon - new(SWSH, 618,15,01,050,05,2) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {281,000,000,000} }, // Stunfisk - new(SWSH, 110,15,01,040,12,2) { Ability = Any12H, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {220,000,000,000} }, // Weezing - new(SWSH, 103,15,01,038,06,2) { TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {246,000,000,000}, Form = 1 }, // Exeggutor-1 - new(SWSH, 105,15,01,038,06,2) { TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, Shiny = Random, IsNicknamed = false, Relearn = new[] {174,000,000,000}, Form = 1 }, // Marowak-1 + new(SWSH, 052,15,01,033,04,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {387,000,000,000} }, // Meowth + new(SW , 083,15,01,013,10,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {098,000,000,000} }, // Farfetch’d + new( SH, 222,15,01,069,12,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {457,000,000,000} }, // Corsola + new( SH, 077,15,01,047,06,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {234,000,000,000} }, // Ponyta + new(SWSH, 122,15,01,005,04,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {252,000,000,000} }, // Mr. Mime + new(SW , 554,15,01,040,12,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {326,000,000,000} }, // Darumaka + new(SWSH, 263,15,01,045,04,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {245,000,000,000} }, // Zigzagoon + new(SWSH, 618,15,01,050,05,2, Random) { Ability = OnlyHidden, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {281,000,000,000} }, // Stunfisk + new(SWSH, 110,15,01,040,12,2, Random) { Ability = Any12H, TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {220,000,000,000} }, // Weezing + new(SWSH, 103,15,01,038,06,2, Random) { TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {246,000,000,000}, Form = 1 }, // Exeggutor-1 + new(SWSH, 105,15,01,038,06,2, Random) { TID7 = 101141, FlawlessIVCount = 3, DynamaxLevel = 5, OTGender = 1, IsNicknamed = false, Relearn = new[] {174,000,000,000}, Form = 1 }, // Marowak-1 }; internal static readonly EncounterTrade8[] TradeGift_SWSH = ArrayUtil.ConcatAll(TradeGift_Regular, TradeGift_R1); diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs index a507db42d..793ee1fa9 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs @@ -24,7 +24,7 @@ public abstract record EncounterTrade(GameVersion Version) : IEncounterable, IMo public AbilityPermission Ability { get; init; } public Nature Nature { get; init; } = Nature.Random; - public Shiny Shiny { get; init; } = Shiny.Never; + public virtual Shiny Shiny => Shiny.Never; public sbyte Gender { get; init; } = -1; public sbyte OTGender { get; init; } = -1; diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs index c1bcb7916..27e1cc64e 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs @@ -17,6 +17,7 @@ public sealed record EncounterTrade1 : EncounterTradeGB private readonly int LevelMinRBY; private readonly int LevelMinGSC; public override int Location => 0; + public override Shiny Shiny => Shiny.Random; public EncounterTrade1(int species, GameVersion game, int rby, int gsc) : base(species, gsc, game) { diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs index a59c25ed8..7db0d5a34 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs @@ -16,6 +16,8 @@ public sealed record EncounterTrade3 : EncounterTrade, IContestStats /// public readonly uint PID; + public override Shiny Shiny => Shiny.FixedValue; + public byte CNT_Cool { get; private init; } public byte CNT_Beauty { get; private init; } public byte CNT_Cute { get; private init; } @@ -39,7 +41,6 @@ public IReadOnlyList Contest public EncounterTrade3(GameVersion game, uint pid, int species, int level) : base(game) { PID = pid; - Shiny = Shiny.FixedValue; Species = species; Level = level; } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4.cs index 61b0a331d..0e7e7eb2b 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4.cs @@ -22,10 +22,11 @@ public sealed record EncounterTrade4PID : EncounterTrade4, IContestStats /// public readonly uint PID; + public override Shiny Shiny => Shiny.FixedValue; + public EncounterTrade4PID(GameVersion game, uint pid, int species, int level) : base(game) { PID = pid; - Shiny = Shiny.FixedValue; Species = species; Level = level; } @@ -116,11 +117,11 @@ public sealed record EncounterTrade4RanchGift : EncounterTrade4 public int MetLocation { private get; init; } public override int Location => MetLocation; + public override Shiny Shiny => Shiny.FixedValue; public EncounterTrade4RanchGift(uint pid, int species, int level) : base(GameVersion.D) { PID = pid; - Shiny = Shiny.FixedValue; Species = species; Level = level; TrainerNames = RanchOTNames; diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs index 98eedc6b2..be188f8d4 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs @@ -10,21 +10,14 @@ public sealed record EncounterTrade5(GameVersion Version) : EncounterTrade(Versi public override int Location => Locations.LinkTrade5NPC; } - public sealed record EncounterTrade5PID : EncounterTrade + /// Generation 5 Trade with Fixed PID + /// Fixed value the encounter must have. + public sealed record EncounterTrade5PID(GameVersion Version, uint PID) : EncounterTrade(Version) { public override int Generation => 5; public override int Location => Locations.LinkTrade5NPC; - /// - /// Fixed value the encounter must have. - /// - public readonly uint PID; - - public EncounterTrade5PID(GameVersion game, uint pid) : base(game) - { - PID = pid; - Shiny = Shiny.FixedValue; - } + public override Shiny Shiny => Shiny.FixedValue; protected override void ApplyDetails(ITrainerInfo sav, EncounterCriteria criteria, PKM pk) { diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs index 99cbdeee0..4288b2b6c 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs @@ -8,12 +8,9 @@ public sealed record EncounterTrade7b : EncounterTrade { public override int Generation => 7; public override int Location => Locations.LinkTrade6NPC; + public override Shiny Shiny => Shiny.Random; - public EncounterTrade7b(GameVersion game) : base(game) - { - Shiny = Shiny.Random; - IsNicknamed = false; - } + public EncounterTrade7b(GameVersion game) : base(game) => IsNicknamed = false; protected override void ApplyDetails(ITrainerInfo sav, EncounterCriteria criteria, PKM pk) { diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs index 66aeeae83..d9b2dac27 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs @@ -20,11 +20,13 @@ public sealed record EncounterTrade8 : EncounterTrade, IDynamaxLevel, IRelearn, public int OT_TextVar { get; set; } public int OT_Feeling { get; set; } public int OT_Intensity { get; set; } + public override Shiny Shiny { get; } - public EncounterTrade8(GameVersion game, int species, int level, int memory, int arg, int feel, int intensity) : base(game) + public EncounterTrade8(GameVersion game, int species, int level, int memory, int arg, int feel, int intensity, Shiny shiny = Shiny.Never) : base(game) { Species = species; Level = level; + Shiny = shiny; OT_Memory = memory; OT_TextVar = arg;