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, };