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;