diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic6.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic6.cs index f37d44ec3..40e5eaa28 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic6.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic6.cs @@ -6,17 +6,29 @@ namespace PKHeX.Core /// Generation 6 Static Encounter /// /// - public sealed record EncounterStatic6 : EncounterStatic, IContestStats + public sealed record EncounterStatic6 : EncounterStatic, IContestStats, IContestStatsRecord { public override int Generation => 6; - internal IReadOnlyList Contest { init => this.SetContestStats(value); } - public int CNT_Cool { get; set; } - public int CNT_Beauty { get; set; } - public int CNT_Cute { get; set; } - public int CNT_Smart { get; set; } - public int CNT_Tough { get; set; } - public int CNT_Sheen { get; set; } + public int CNT_Cool { get; init; } + public int CNT_Beauty { get; init; } + public int CNT_Cute { get; init; } + public int CNT_Smart { get; init; } + public int CNT_Tough { get; init; } + public int CNT_Sheen { get; init; } + + public IReadOnlyList Contest + { + init + { + CNT_Cool = value[0]; + CNT_Beauty = value[1]; + CNT_Cute = value[2]; + CNT_Smart = value[3]; + CNT_Tough = value[4]; + CNT_Sheen = value[5]; + } + } protected override bool IsMatchLocation(PKM pkm) { diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8.cs index 69c11486a..95c421517 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8.cs @@ -13,6 +13,7 @@ namespace PKHeX.Core public bool ScriptedNoMarks { get; init; } public bool CanGigantamax { get; set; } public byte DynamaxLevel { get; set; } + public IReadOnlyList Relearn { get; init; } = Array.Empty(); protected override bool IsMatchLevel(PKM pkm, DexLevel evo) { @@ -31,7 +32,5 @@ namespace PKHeX.Core return false; return base.IsMatch(pkm, evo); } - - public IReadOnlyList Relearn { get; init; } = Array.Empty(); } } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs index 04249d584..0966986ac 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs @@ -10,7 +10,7 @@ namespace PKHeX.Core /// /// Trade data is fixed level in all cases except for the first few generations of games. /// - public abstract class EncounterTrade : IEncounterable, IMoveset, ILocation, IVersionSet + public abstract record EncounterTrade : IEncounterable, IMoveset, ILocation, IVersionSet { public int Species { get; init; } public int Form { get; init; } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs index 03d6dfccf..d573d0c22 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade1.cs @@ -9,7 +9,7 @@ namespace PKHeX.Core /// Generation 1 specific value used in detecting unmodified/un-traded Generation 1 Trade Encounter data. /// Species & Minimum level (legal) possible to acquire at. /// - public sealed class EncounterTrade1 : EncounterTradeGB + public sealed record EncounterTrade1 : EncounterTradeGB { public override int Generation => 1; public override int LevelMin => CanObtainMinGSC() ? LevelMinGSC : LevelMinRBY; diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs index eddbb961c..f3e9ce027 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs @@ -2,7 +2,7 @@ namespace PKHeX.Core { - public sealed class EncounterTrade2 : EncounterTradeGB + public sealed record EncounterTrade2 : EncounterTradeGB { public override int Generation => 2; diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs index e1d691bf3..97f4f10cb 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade3.cs @@ -2,7 +2,7 @@ namespace PKHeX.Core { - public sealed class EncounterTrade3 : EncounterTrade, IContestStats + public sealed record EncounterTrade3 : EncounterTrade, IContestStats, IContestStatsRecord { public override int Generation => 3; @@ -11,13 +11,25 @@ namespace PKHeX.Core /// public readonly uint PID; - internal IReadOnlyList Contest { init => this.SetContestStats(value); } - public int CNT_Cool { get; set; } - public int CNT_Beauty { get; set; } - public int CNT_Cute { get; set; } - public int CNT_Smart { get; set; } - public int CNT_Tough { get; set; } - public int CNT_Sheen { get; set; } + public int CNT_Cool { get; init; } + public int CNT_Beauty { get; init; } + public int CNT_Cute { get; init; } + public int CNT_Smart { get; init; } + public int CNT_Tough { get; init; } + public int CNT_Sheen { get; init; } + + public IReadOnlyList Contest + { + init + { + CNT_Cool = value[0]; + CNT_Beauty = value[1]; + CNT_Cute = value[2]; + CNT_Smart = value[3]; + CNT_Tough = value[4]; + CNT_Sheen = value[5]; + } + } public EncounterTrade3(uint pid) { diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4PID.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4PID.cs index 60013c639..cefffb06d 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4PID.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade4PID.cs @@ -2,7 +2,7 @@ namespace PKHeX.Core { - public sealed class EncounterTrade4PID : EncounterTrade, IContestStats + public sealed record EncounterTrade4PID : EncounterTrade, IContestStats, IContestStatsRecord { public override int Generation => 4; @@ -17,13 +17,25 @@ namespace PKHeX.Core Shiny = Shiny.FixedValue; } - internal IReadOnlyList Contest { init => this.SetContestStats(value); } - public int CNT_Cool { get; set; } - public int CNT_Beauty { get; set; } - public int CNT_Cute { get; set; } - public int CNT_Smart { get; set; } - public int CNT_Tough { get; set; } - public int CNT_Sheen { get; set; } + public int CNT_Cool { get; init; } + public int CNT_Beauty { get; init; } + public int CNT_Cute { get; init; } + public int CNT_Smart { get; init; } + public int CNT_Tough { get; init; } + public int CNT_Sheen { get; init; } + + public IReadOnlyList Contest + { + init + { + CNT_Cool = value[0]; + CNT_Beauty = value[1]; + CNT_Cute = value[2]; + CNT_Smart = value[3]; + CNT_Tough = value[4]; + CNT_Sheen = value[5]; + } + } public override bool IsMatch(PKM pkm, DexLevel evo) { @@ -63,7 +75,7 @@ namespace PKHeX.Core } } - public sealed class EncounterTrade4Ranch : EncounterTrade + public sealed record EncounterTrade4Ranch : EncounterTrade { public override int Generation => 4; diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs index 285bd2cd8..b3c4479e2 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade5.cs @@ -1,11 +1,11 @@ namespace PKHeX.Core { - public sealed class EncounterTrade5 : EncounterTrade + public sealed record EncounterTrade5 : EncounterTrade { public override int Generation => 5; } - public sealed class EncounterTrade5PID : EncounterTrade + public sealed record EncounterTrade5PID : EncounterTrade { public override int Generation => 5; diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade6.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade6.cs index 8b97efed0..48c3c5d83 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade6.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade6.cs @@ -1,6 +1,6 @@ namespace PKHeX.Core { - public sealed class EncounterTrade6 : EncounterTrade, IMemoryOT + public sealed record EncounterTrade6 : EncounterTrade, IMemoryOT { public override int Generation => 6; public int OT_Memory { get; set; } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7.cs index 93b4211f7..368c869fd 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7.cs @@ -2,7 +2,7 @@ namespace PKHeX.Core { - public sealed class EncounterTrade7 : EncounterTrade, IMemoryOT + public sealed record EncounterTrade7 : EncounterTrade, IMemoryOT { public override int Generation => 7; // immutable setters diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs index 44f59762c..4a5e66c34 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade7b.cs @@ -1,6 +1,6 @@ namespace PKHeX.Core { - public sealed class EncounterTrade7b : EncounterTrade + public sealed record EncounterTrade7b : EncounterTrade { public override int Generation => 7; } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs index 9274f4aa1..414ed5408 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs @@ -3,12 +3,12 @@ using System.Collections.Generic; namespace PKHeX.Core { - public sealed class EncounterTrade8 : EncounterTrade, IDynamaxLevel, IRelearn, IMemoryOT + public sealed record EncounterTrade8 : EncounterTrade, IDynamaxLevel, IRelearn, IMemoryOT { public override int Generation => 8; public byte DynamaxLevel { get; set; } - public IReadOnlyList Relearn { get; set; } = Array.Empty(); + public IReadOnlyList Relearn { get; init; } = Array.Empty(); public int OT_Memory { get; set; } public int OT_TextVar { get; set; } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTradeGB.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTradeGB.cs index 7b2869b8f..2072ff951 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTradeGB.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTradeGB.cs @@ -1,6 +1,6 @@ namespace PKHeX.Core { - public abstract class EncounterTradeGB : EncounterTrade + public abstract record EncounterTradeGB : EncounterTrade { protected EncounterTradeGB(int species, int level) { diff --git a/PKHeX.Core/MysteryGifts/PGF.cs b/PKHeX.Core/MysteryGifts/PGF.cs index fd1d94c06..1e7198881 100644 --- a/PKHeX.Core/MysteryGifts/PGF.cs +++ b/PKHeX.Core/MysteryGifts/PGF.cs @@ -7,7 +7,7 @@ namespace PKHeX.Core /// /// Generation 5 Mystery Gift Template File /// - public sealed class PGF : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, INature + public sealed class PGF : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, IContestStatsMutable, INature { public const int Size = 0xCC; public override int Generation => 5; diff --git a/PKHeX.Core/MysteryGifts/WC6.cs b/PKHeX.Core/MysteryGifts/WC6.cs index 6b2ab4c7d..a5296e07c 100644 --- a/PKHeX.Core/MysteryGifts/WC6.cs +++ b/PKHeX.Core/MysteryGifts/WC6.cs @@ -8,7 +8,7 @@ namespace PKHeX.Core /// /// Generation 6 Mystery Gift Template File /// - public sealed class WC6 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, INature, IMemoryOT + public sealed class WC6 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, IContestStatsMutable, INature, IMemoryOT { public const int Size = 0x108; public const uint EonTicketConst = 0x225D73C2; diff --git a/PKHeX.Core/MysteryGifts/WC7.cs b/PKHeX.Core/MysteryGifts/WC7.cs index 75bb7721a..ac2923838 100644 --- a/PKHeX.Core/MysteryGifts/WC7.cs +++ b/PKHeX.Core/MysteryGifts/WC7.cs @@ -8,7 +8,7 @@ namespace PKHeX.Core /// /// Generation 7 Mystery Gift Template File /// - public sealed class WC7 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, INature, IMemoryOT + public sealed class WC7 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, IContestStatsMutable, INature, IMemoryOT { public const int Size = 0x108; public override int Generation => 7; diff --git a/PKHeX.Core/PKM/PK5.cs b/PKHeX.Core/PKM/PK5.cs index 0c6367a36..189bf721f 100644 --- a/PKHeX.Core/PKM/PK5.cs +++ b/PKHeX.Core/PKM/PK5.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; namespace PKHeX.Core { /// Generation 5 format. - public sealed class PK5 : PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetUnique3, IRibbonSetUnique4, IRibbonSetCommon3, IRibbonSetCommon4, IContestStats + public sealed class PK5 : PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetUnique3, IRibbonSetUnique4, IRibbonSetCommon3, IRibbonSetCommon4, IContestStats, IContestStatsMutable { private static readonly ushort[] Unused = { diff --git a/PKHeX.Core/PKM/PK6.cs b/PKHeX.Core/PKM/PK6.cs index 7ed05f396..7e40ce710 100644 --- a/PKHeX.Core/PKM/PK6.cs +++ b/PKHeX.Core/PKM/PK6.cs @@ -5,7 +5,7 @@ namespace PKHeX.Core { /// Generation 6 format. public sealed class PK6 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, - IContestStats, IGeoTrack, ISuperTrain, IFormArgument, ITrainerMemories, IAffection + IContestStats, IContestStatsMutable, IGeoTrack, ISuperTrain, IFormArgument, ITrainerMemories, IAffection { private static readonly ushort[] Unused = { diff --git a/PKHeX.Core/PKM/PK7.cs b/PKHeX.Core/PKM/PK7.cs index 49b8a1e10..bdf167845 100644 --- a/PKHeX.Core/PKM/PK7.cs +++ b/PKHeX.Core/PKM/PK7.cs @@ -5,7 +5,7 @@ namespace PKHeX.Core { /// Generation 7 format. public sealed class PK7 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IRibbonSetCommon7, - IContestStats, IHyperTrain, IGeoTrack, ISuperTrain, IFormArgument, ITrainerMemories, IAffection + IContestStats, IContestStatsMutable, IHyperTrain, IGeoTrack, ISuperTrain, IFormArgument, ITrainerMemories, IAffection { private static readonly ushort[] Unused = { diff --git a/PKHeX.Core/PKM/PK8.cs b/PKHeX.Core/PKM/PK8.cs index fe92c4cfc..dc3e8482d 100644 --- a/PKHeX.Core/PKM/PK8.cs +++ b/PKHeX.Core/PKM/PK8.cs @@ -6,7 +6,7 @@ namespace PKHeX.Core /// Generation 8 format. public sealed class PK8 : PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IRibbonSetCommon7, IRibbonSetCommon8, IRibbonSetMark8, - IContestStats, IHyperTrain, IScaledSize, IGigantamax, IFavorite, IDynamaxLevel, IRibbonIndex, IHandlerLanguage, IFormArgument, IHomeTrack, IBattleVersion, ITrainerMemories + IContestStats, IContestStatsMutable, IHyperTrain, IScaledSize, IGigantamax, IFavorite, IDynamaxLevel, IRibbonIndex, IHandlerLanguage, IFormArgument, IHomeTrack, IBattleVersion, ITrainerMemories { private static readonly ushort[] Unused = { diff --git a/PKHeX.Core/PKM/Shared/G3PKM.cs b/PKHeX.Core/PKM/Shared/G3PKM.cs index 0ff6c36c2..b6eb310de 100644 --- a/PKHeX.Core/PKM/Shared/G3PKM.cs +++ b/PKHeX.Core/PKM/Shared/G3PKM.cs @@ -3,7 +3,7 @@ /// /// Generation 3 Base Class /// - public abstract class G3PKM : PKM, IRibbonSetEvent3, IRibbonSetCommon3, IRibbonSetUnique3, IRibbonSetOnly3, IContestStats + public abstract class G3PKM : PKM, IRibbonSetEvent3, IRibbonSetCommon3, IRibbonSetUnique3, IRibbonSetOnly3, IContestStats, IContestStatsMutable { protected G3PKM(byte[] data) : base(data) { } protected G3PKM(int size) : base(size) { } diff --git a/PKHeX.Core/PKM/Shared/G4PKM.cs b/PKHeX.Core/PKM/Shared/G4PKM.cs index cd6f19728..9d8adb943 100644 --- a/PKHeX.Core/PKM/Shared/G4PKM.cs +++ b/PKHeX.Core/PKM/Shared/G4PKM.cs @@ -1,6 +1,6 @@ namespace PKHeX.Core { - public abstract class G4PKM : PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetUnique3, IRibbonSetUnique4, IRibbonSetCommon3, IRibbonSetCommon4, IContestStats + public abstract class G4PKM : PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetUnique3, IRibbonSetUnique4, IRibbonSetCommon3, IRibbonSetCommon4, IContestStats, IContestStatsMutable { protected G4PKM(byte[] data) : base(data) { } protected G4PKM(int size) : base(size) { } diff --git a/PKHeX.Core/PKM/Shared/IContestStats.cs b/PKHeX.Core/PKM/Shared/IContestStats.cs index f0bdda8fa..b752553ae 100644 --- a/PKHeX.Core/PKM/Shared/IContestStats.cs +++ b/PKHeX.Core/PKM/Shared/IContestStats.cs @@ -4,29 +4,38 @@ namespace PKHeX.Core { public interface IContestStats { - int CNT_Cool { get; set; } - int CNT_Beauty { get; set; } - int CNT_Cute { get; set; } - int CNT_Smart { get; set; } - int CNT_Tough { get; set; } - int CNT_Sheen { get; set; } + int CNT_Cool { get; } + int CNT_Beauty { get; } + int CNT_Cute { get; } + int CNT_Smart { get; } + int CNT_Tough { get; } + int CNT_Sheen { get; } + } + + public interface IContestStatsMutable + { + int CNT_Cool { set; } + int CNT_Beauty { set; } + int CNT_Cute { set; } + int CNT_Smart { set; } + int CNT_Tough { set; } + int CNT_Sheen { set; } + } + + public interface IContestStatsRecord + { + // int CNT_Cool { init; } + // int CNT_Beauty { init; } + // int CNT_Cute { init; } + // int CNT_Smart { init; } + // int CNT_Tough { init; } + // int CNT_Sheen { init; } + + IReadOnlyList Contest { init; } } public static partial class Extensions { - public static void SetContestStats(this IContestStats dest, IReadOnlyList stats) - { - if (stats.Count != 6) - return; - - dest.CNT_Cool = stats[0]; - dest.CNT_Beauty = stats[1]; - dest.CNT_Cute = stats[2]; - dest.CNT_Smart = stats[3]; - dest.CNT_Tough = stats[4]; - dest.CNT_Sheen = stats[5]; - } - public static int[] GetContestStats(this IContestStats stats) => new[] { stats.CNT_Cool, @@ -78,7 +87,7 @@ namespace PKHeX.Core return true; } - public static void CopyContestStatsTo(this IContestStats source, IContestStats dest) + public static void CopyContestStatsTo(this IContestStats source, IContestStatsMutable dest) { dest.CNT_Cool = source.CNT_Cool; dest.CNT_Beauty = source.CNT_Beauty; diff --git a/PKHeX.Core/Saves/Substructures/Gen3/Roamer3.cs b/PKHeX.Core/Saves/Substructures/Gen3/Roamer3.cs index 4ab540ae0..27934f7ea 100644 --- a/PKHeX.Core/Saves/Substructures/Gen3/Roamer3.cs +++ b/PKHeX.Core/Saves/Substructures/Gen3/Roamer3.cs @@ -2,7 +2,7 @@ namespace PKHeX.Core { - public sealed class Roamer3 : IContestStats + public sealed class Roamer3 : IContestStats, IContestStatsMutable { private readonly SaveFile SAV; private readonly int Offset; diff --git a/PKHeX.WinForms/Controls/PKM Editor/ContestStat.cs b/PKHeX.WinForms/Controls/PKM Editor/ContestStat.cs index 991d1f6ba..61e3ca5d6 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/ContestStat.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/ContestStat.cs @@ -4,7 +4,7 @@ using PKHeX.Core; namespace PKHeX.WinForms.Controls { - public partial class ContestStat : UserControl, IContestStats + public partial class ContestStat : UserControl, IContestStats, IContestStatsMutable { public ContestStat() { diff --git a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs index 70f2470a8..0d22df02d 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs @@ -219,7 +219,7 @@ namespace PKHeX.WinForms.Controls pk.Nature = WinFormsUtil.GetIndex(CB_Nature); pk.Gender = PKX.GetGenderFromString(Label_Gender.Text); - if (pk is IContestStats s) + if (pk is IContestStatsMutable s) Contest.CopyContestStatsTo(s); pk.FatefulEncounter = CHK_Fateful.Checked;