diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/DreamWorldEntry.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/DreamWorldEntry.cs
index 3cc6c7602..279848bd1 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterStatic/DreamWorldEntry.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/DreamWorldEntry.cs
@@ -6,7 +6,7 @@ namespace PKHeX.Core
///
/// Intermediary Representation of Dream World Data
///
- internal record DreamWorldEntry(int Species, int Level, int Move1 = 0, int Move2 = 0, int Move3 = 0, int Form = 0, int Gender = -1)
+ internal record DreamWorldEntry(int Species, int Level, ushort Move1 = 0, ushort Move2 = 0, ushort Move3 = 0, byte Form = 0, sbyte Gender = -1)
{
private int EntryCount => Move1 == 0 ? 1 : Move2 == 0 ? 1 : Move3 == 0 ? 2 : 3;
diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs
index 66d1f862b..797d63f29 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs
@@ -21,22 +21,24 @@ public abstract record EncounterStatic(GameVersion Version) : IEncounterable, IM
public virtual int Location { get; init; }
public AbilityPermission Ability { get; init; }
public Shiny Shiny { get; init; } = Shiny.Random;
- public int Gender { get; init; } = -1;
- public int EggLocation { get; init; }
public Nature Nature { get; init; } = Nature.Random;
+ public sbyte Gender { get; init; } = -1;
+
+ public ushort HeldItem { get; init; }
public bool Gift { get; init; }
- public int Ball { get; init; } = 4; // Only checked when is Gift
+ public bool Fateful { get; init; }
+
+ public byte EggCycles { get; init; }
+ public byte FlawlessIVCount { get; init; }
+ public byte Ball { get; init; } = 4; // Only checked when is Gift
+
+ public int EggLocation { get; init; }
public Ball FixedBall => Gift ? (Ball)Ball : Core.Ball.None;
public IReadOnlyList Moves { get; init; } = Array.Empty();
public IReadOnlyList IVs { get; init; } = Array.Empty();
- public int FlawlessIVCount { get; init; }
- public int HeldItem { get; init; }
- public int EggCycles { get; init; }
-
- public bool Fateful { get; init; }
public bool EggEncounter => EggLocation > 0;
private const string _name = "Static Encounter";
diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic4Pokewalker.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic4Pokewalker.cs
index a73dd0e67..19e9d2a8e 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic4Pokewalker.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic4Pokewalker.cs
@@ -8,7 +8,7 @@ public sealed record EncounterStatic4Pokewalker : EncounterStatic
{
public override int Generation => 4;
- public EncounterStatic4Pokewalker(int species, int gender, int level) : base(GameVersion.HGSS)
+ public EncounterStatic4Pokewalker(int species, sbyte gender, int level) : base(GameVersion.HGSS)
{
Species = species;
Gender = gender;
diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic7.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic7.cs
index 6fa3cd0cb..74e0242f0 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic7.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic7.cs
@@ -70,7 +70,7 @@ internal static EncounterStatic7 GetVC1(int species, int metLevel)
Fateful = mew,
Location = Locations.Transfer1,
Level = metLevel,
- FlawlessIVCount = mew ? 5 : 3,
+ FlawlessIVCount = mew ? (byte)5 : (byte)3,
};
}
@@ -87,7 +87,7 @@ internal static EncounterStatic7 GetVC2(int species, int metLevel)
Fateful = fateful,
Location = Locations.Transfer2,
Level = metLevel,
- FlawlessIVCount = fateful ? 5 : 3,
+ FlawlessIVCount = fateful ? (byte)5 : (byte)3,
};
}
}
diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8a.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8a.cs
index 9ef2ec7fd..733640e4a 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8a.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic8a.cs
@@ -152,7 +152,7 @@ private OverworldParam8a GetParams()
return new OverworldParam8a
{
IsAlpha = IsAlpha,
- FlawlessIVs = (byte)FlawlessIVCount,
+ FlawlessIVs = FlawlessIVCount,
Shiny = Shiny,
RollCount = 1, // Everything is shiny locked anyways
GenderRatio = gender,
diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs
index 5340aacba..a507db42d 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade.cs
@@ -17,42 +17,44 @@ public abstract record EncounterTrade(GameVersion Version) : IEncounterable, IMo
public int Level { get; init; }
public virtual int LevelMin => Level;
public int LevelMax => 100;
- public IReadOnlyList Moves { get; init; } = Array.Empty();
public abstract int Generation { get; }
public int CurrentLevel { get; init; } = -1;
public abstract int Location { get; }
+
public AbilityPermission Ability { get; init; }
- public int Gender { get; init; } = -1;
public Nature Nature { get; init; } = Nature.Random;
public Shiny Shiny { get; init; } = Shiny.Never;
- public int Ball { get; init; } = 4;
+ public sbyte Gender { get; init; } = -1;
- public Ball FixedBall => (Ball)Ball;
+ public sbyte OTGender { get; init; } = -1;
+ public bool IsNicknamed { get; init; } = true;
+ public bool EvolveOnTrade { get; init; }
+ public byte Ball { get; init; } = 4;
- public int TID { get; init; }
- public int SID { get; init; }
- public int OTGender { get; init; } = -1;
+ public int EggLocation { get; init; }
+ public ushort TID { get; init; }
+ public ushort SID { get; init; }
+
+ public IReadOnlyList Moves { get; init; } = Array.Empty();
public IReadOnlyList IVs { get; init; } = Array.Empty();
+ public Ball FixedBall => (Ball)Ball;
public bool EggEncounter => false;
- public int EggLocation { get; init; }
- public bool EvolveOnTrade { get; init; }
public int TID7
{
init
{
TID = (ushort) value;
- SID = value >> 16;
+ SID = (ushort)(value >> 16);
}
}
private const string _name = "In-game Trade";
public string Name => _name;
public string LongName => _name;
- public bool IsNicknamed { get; init; } = true;
public bool IsShiny => Shiny.IsShiny();
public IReadOnlyList Nicknames { get; internal set; } = Array.Empty();
@@ -90,7 +92,7 @@ protected virtual void ApplyDetails(ITrainerInfo sav, EncounterCriteria criteria
pk.Form = Form;
pk.Language = lang;
pk.OT_Name = pk.Format == 1 ? StringConverter12.G1TradeOTStr : HasTrainerName ? GetOT(lang) : sav.OT;
- pk.OT_Gender = HasTrainerName ? Math.Max(0, OTGender) : sav.Gender;
+ pk.OT_Gender = HasTrainerName ? Math.Max(0, (int)OTGender) : sav.Gender;
pk.SetNickname(HasNickname ? GetNickname(lang) : string.Empty);
pk.CurrentLevel = level;
diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs
index 18d3c699c..960c04902 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade2.cs
@@ -11,7 +11,7 @@ public sealed record EncounterTrade2 : EncounterTradeGB
public override int Generation => 2;
public override int Location => Locations.LinkTrade2NPC;
- public EncounterTrade2(int species, int level, int tid) : base(species, level, GameVersion.GSC)
+ public EncounterTrade2(int species, int level, ushort tid) : base(species, level, GameVersion.GSC)
{
TID = tid;
}
diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs
index 851b38e05..66aeeae83 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterTrade/EncounterTrade8.cs
@@ -11,10 +11,10 @@ public sealed record EncounterTrade8 : EncounterTrade, IDynamaxLevel, IRelearn,
{
public override int Generation => 8;
public override int Location => Locations.LinkTrade6NPC;
+ public IReadOnlyList Relearn { get; init; } = Array.Empty();
public byte DynamaxLevel { get; set; }
- public int FlawlessIVCount { get; init; }
- public IReadOnlyList Relearn { get; init; } = Array.Empty();
+ public byte FlawlessIVCount { get; init; }
public int OT_Memory { get; set; }
public int OT_TextVar { get; set; }
diff --git a/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs b/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs
index 71eb9402f..4b636cb51 100644
--- a/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs
+++ b/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs
@@ -215,8 +215,8 @@ public static Image Sprite(this IEncounterTemplate enc)
public static int GetDisplayGender(IEncounterTemplate enc) => enc switch
{
EncounterSlotGO g => (int)g.Gender & 1,
- EncounterStatic s => Math.Max(0, s.Gender),
- EncounterTrade t => Math.Max(0, t.Gender),
+ EncounterStatic s => Math.Max(0, (int)s.Gender),
+ EncounterTrade t => Math.Max(0, (int)t.Gender),
_ => 0,
};