diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs
index 0b39e9b98..e92251a28 100644
--- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs
+++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterStatic.cs
@@ -302,9 +302,7 @@ private bool IsMatchForm(PKM pkm)
var expectForm = pkm.Format == 7 ? Form : FormConverter.GetTotemBaseForm(Species, Form);
return expectForm == pkm.AltForm;
}
- if (Form != pkm.AltForm && !Legal.IsFormChangeable(pkm, Species, Form))
- return false;
- return true;
+ return Form == pkm.AltForm || Legal.IsFormChangeable(pkm, Species, Form);
}
private bool IsMatchEggLocation(PKM pkm, ref int lvl)
@@ -413,14 +411,12 @@ protected virtual bool IsMatchLevel(PKM pkm, int lvl)
if (!pkm.HasOriginalMetLocation)
return lvl >= Level;
- if (lvl == Level)
- return true;
- if (!(pkm.Format == 3 && EggEncounter && lvl == 0))
- return false;
-
- return true;
+ return lvl == Level || IsGen3EggEncounter(pkm, lvl);
}
+ // met level 0, origin level 5
+ private bool IsGen3EggEncounter(PKM pkm, int lvl) => pkm.Format == 3 && EggEncounter && lvl == 0;
+
public virtual bool IsMatchDeferred(PKM pkm)
{
if (pkm.FatefulEncounter != Fateful)
diff --git a/PKHeX.Core/Legality/Moves/LearnLookup.cs b/PKHeX.Core/Legality/Moves/LearnLookup.cs
index 2f8bb1788..0b58caf61 100644
--- a/PKHeX.Core/Legality/Moves/LearnLookup.cs
+++ b/PKHeX.Core/Legality/Moves/LearnLookup.cs
@@ -6,7 +6,7 @@
namespace PKHeX.Core
{
///
- /// LevelUp Lookup object
+ /// Level-Up Lookup object
///
public sealed class LearnLookup
{
@@ -92,7 +92,7 @@ public LearnVersion GetIsLevelUpG1(int species, int form, int move, int max, int
if (index == 0)
return LearnNONE;
- // No relearner -- have to be learned on levelup
+ // No Move re-learner -- have to be learned on level-up
var lv = Learn[index].GetLevelLearnMove(move, min);
if (lv >= 0 && lv <= max)
return new LearnVersion(lv, Version);
diff --git a/PKHeX.Core/Legality/RNG/Frame/SlotRange.cs b/PKHeX.Core/Legality/RNG/Frame/SlotRange.cs
index 207bfe17e..b6acd8920 100644
--- a/PKHeX.Core/Legality/RNG/Frame/SlotRange.cs
+++ b/PKHeX.Core/Legality/RNG/Frame/SlotRange.cs
@@ -139,7 +139,9 @@ public static int GetLevel(EncounterSlot slot, LeadRequired lead, uint lvlrand)
return slot.LevelMin + adjust;
}
+#pragma warning disable IDE0060, RCS1163 // Unused parameter.
public static bool GetIsEncounterable(EncounterSlot slot, FrameType frameType, int rand, LeadRequired lead)
+#pragma warning restore IDE0060, RCS1163 // Unused parameter.
{
if (slot.Type.IsSweetScentType())
return true;
@@ -147,7 +149,8 @@ public static bool GetIsEncounterable(EncounterSlot slot, FrameType frameType, i
//return GetCanEncounter(slot, frameType, rand, lead);
}
- private static bool GetCanEncounter(EncounterSlot slot, FrameType frameType, int rand, LeadRequired lead)
+ // ReSharper disable once UnusedMember.Global
+ public static bool GetCanEncounter(EncounterSlot slot, FrameType frameType, int rand, LeadRequired lead)
{
int proc = frameType == FrameType.MethodJ ? rand / 656 : rand % 100;
if ((slot.Type & SlotType.Rock_Smash) != 0)
diff --git a/PKHeX.Core/MysteryGifts/WC8.cs b/PKHeX.Core/MysteryGifts/WC8.cs
index 5b3bb9919..7ad4018bd 100644
--- a/PKHeX.Core/MysteryGifts/WC8.cs
+++ b/PKHeX.Core/MysteryGifts/WC8.cs
@@ -393,8 +393,8 @@ public override PKM ConvertToPKM(ITrainerInfo SAV, EncounterCriteria criteria)
SetEggMetData(pk);
pk.CurrentFriendship = pk.IsEgg ? pi.HatchCycles : pi.BaseFriendship;
- pk.HeightScalar = PokeSizeExtensions.GetRandomScalar();
- pk.WeightScalar = PokeSizeExtensions.GetRandomScalar();
+ pk.HeightScalar = PokeSizeUtil.GetRandomScalar();
+ pk.WeightScalar = PokeSizeUtil.GetRandomScalar();
pk.RefreshChecksum();
return pk;
diff --git a/PKHeX.Core/PKM/BK4.cs b/PKHeX.Core/PKM/BK4.cs
index 2a3f2c2ce..90bda4f5f 100644
--- a/PKHeX.Core/PKM/BK4.cs
+++ b/PKHeX.Core/PKM/BK4.cs
@@ -50,7 +50,7 @@ public BK4(byte[] data)
public override PKM Clone() => new BK4((byte[])Data.Clone()){Identifier = Identifier};
public string GetString(int Offset, int Count) => StringConverter4.GetBEString4(Data, Offset, Count);
- public byte[] SetString(string value, int maxLength) => StringConverter4.SetBEString4(value, maxLength);
+ private static byte[] SetString(string value, int maxLength) => StringConverter4.SetBEString4(value, maxLength);
// Structure
public override uint PID { get => BigEndian.ToUInt32(Data, 0x00); set => BigEndian.GetBytes(value).CopyTo(Data, 0x00); }
@@ -137,7 +137,7 @@ public override uint EXP
public override int Move2_PPUps { get => Data[0x35]; set => Data[0x35] = (byte)value; }
public override int Move3_PPUps { get => Data[0x36]; set => Data[0x36] = (byte)value; }
public override int Move4_PPUps { get => Data[0x37]; set => Data[0x37] = (byte)value; }
- public uint IV32 { get => BigEndian.ToUInt32(Data, 0x38); set => BigEndian.GetBytes(value).CopyTo(Data, 0x38); }
+ private uint IV32 { get => BigEndian.ToUInt32(Data, 0x38); set => BigEndian.GetBytes(value).CopyTo(Data, 0x38); }
public override int IV_SPD { get => (int)(IV32 >> 02) & 0x1F; set => IV32 = ((IV32 & ~(0x1Fu << 02)) | ((value > 31 ? 31u : (uint)value) << 02)); }
public override int IV_SPA { get => (int)(IV32 >> 07) & 0x1F; set => IV32 = ((IV32 & ~(0x1Fu << 07)) | ((value > 31 ? 31u : (uint)value) << 07)); }
public override int IV_SPE { get => (int)(IV32 >> 12) & 0x1F; set => IV32 = ((IV32 & ~(0x1Fu << 12)) | ((value > 31 ? 31u : (uint)value) << 12)); }
diff --git a/PKHeX.Core/PKM/CK3.cs b/PKHeX.Core/PKM/CK3.cs
index 89ec7af8c..0359d4f6e 100644
--- a/PKHeX.Core/PKM/CK3.cs
+++ b/PKHeX.Core/PKM/CK3.cs
@@ -55,8 +55,8 @@ public sealed class CK3 : G3PKM, IShadowPKM
public override int SID { get => BigEndian.ToUInt16(Data, 0x14); set => BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x14); }
public override int TID { get => BigEndian.ToUInt16(Data, 0x16); set => BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x16); }
public override string OT_Name { get => GetString(0x18, 20); set => SetString(value, 10).CopyTo(Data, 0x18); } // +2 terminator
- public override string Nickname { get => GetString(0x2E, 20); set { SetString(value, 10).CopyTo(Data, 0x2E); Nickname2 = value; } } // +2 terminator
- private string Nickname2 { get => GetString(0x44, 20); set => SetString(value, 10).CopyTo(Data, 0x44); } // +2 terminator
+ public override string Nickname { get => GetString(0x2E, 20); set { SetString(value, 10).CopyTo(Data, 0x2E); NicknameCopy = value; } } // +2 terminator
+ public string NicknameCopy { get => GetString(0x44, 20); set => SetString(value, 10).CopyTo(Data, 0x44); } // +2 terminator
public override uint EXP { get => BigEndian.ToUInt32(Data, 0x5C); set => BigEndian.GetBytes(value).CopyTo(Data, 0x5C); }
public override int Stat_Level { get => Data[0x60]; set => Data[0x60] = (byte)value; }
diff --git a/PKHeX.Core/PKM/PB7.cs b/PKHeX.Core/PKM/PB7.cs
index 98cfae585..c43220829 100644
--- a/PKHeX.Core/PKM/PB7.cs
+++ b/PKHeX.Core/PKM/PB7.cs
@@ -120,13 +120,13 @@ public override uint PID
public int AV_SPE { get => Data[0x27]; set => Data[0x27] = (byte)value; }
public int AV_SPA { get => Data[0x28]; set => Data[0x28] = (byte)value; }
public int AV_SPD { get => Data[0x29]; set => Data[0x29] = (byte)value; }
- public byte _0x2A { get => Data[0x2A]; set => Data[0x2A] = value; }
+ // 0x2A Unused
private byte PKRS { get => Data[0x2B]; set => Data[0x2B] = value; }
public override int PKRS_Days { get => PKRS & 0xF; set => PKRS = (byte)((PKRS & ~0xF) | value); }
public override int PKRS_Strain { get => PKRS >> 4; set => PKRS = (byte)((PKRS & 0xF) | value << 4); }
public float HeightAbsolute { get => BitConverter.ToSingle(Data, 0x2C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x2C); }
- public byte _0x38 { get => Data[0x38]; set => Data[0x38] = value; }
- public byte _0x39 { get => Data[0x39]; set => Data[0x39] = value; }
+ // 0x38 Unused
+ // 0x39 Unused
public int HeightScalar { get => Data[0x3A]; set => Data[0x3A] = (byte)value; }
public int WeightScalar { get => Data[0x3B]; set => Data[0x3B] = (byte)value; }
public uint FormArgument { get => BitConverter.ToUInt32(Data, 0x3C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x3C); }
@@ -195,8 +195,8 @@ public override int RelearnMove4
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x70);
}
- public byte _0x72 { get => Data[0x72]; set => Data[0x72] = value; }
- public byte _0x73 { get => Data[0x73]; set => Data[0x73] = value; }
+ // 0x72 Unused
+ // 0x73 Unused
private uint IV32 { get => BitConverter.ToUInt32(Data, 0x74); set => BitConverter.GetBytes(value).CopyTo(Data, 0x74); }
public override int IV_HP { get => (int)(IV32 >> 00) & 0x1F; set => IV32 = (IV32 & ~(0x1Fu << 00)) | ((value > 31 ? 31u : (uint)value) << 00); }
public override int IV_ATK { get => (int)(IV32 >> 05) & 0x1F; set => IV32 = (IV32 & ~(0x1Fu << 05)) | ((value > 31 ? 31u : (uint)value) << 05); }
@@ -211,29 +211,29 @@ public override int RelearnMove4
public override string HT_Name { get => GetString(0x78, 24); set => SetString(value, 12).CopyTo(Data, 0x78); }
public override int HT_Gender { get => Data[0x92]; set => Data[0x92] = (byte)value; }
public override int CurrentHandler { get => Data[0x93]; set => Data[0x93] = (byte)value; }
- public byte _0x94 { get => Data[0x94]; set => Data[0x94] = value; }
- public byte _0x95 { get => Data[0x95]; set => Data[0x95] = value; }
- public byte _0x96 { get => Data[0x96]; set => Data[0x96] = value; }
- public byte _0x97 { get => Data[0x97]; set => Data[0x97] = value; }
- public byte _0x98 { get => Data[0x98]; set => Data[0x98] = value; }
- public byte _0x99 { get => Data[0x99]; set => Data[0x99] = value; }
- public byte _0x9A { get => Data[0x9A]; set => Data[0x9A] = value; }
- public byte _0x9B { get => Data[0x9B]; set => Data[0x9B] = value; }
- public byte _0x9C { get => Data[0x9C]; set => Data[0x9C] = value; }
- public byte _0x9D { get => Data[0x9D]; set => Data[0x9D] = value; }
- public byte _0x9E { get => Data[0x9E]; set => Data[0x9E] = value; }
- public byte _0x9F { get => Data[0x9F]; set => Data[0x9F] = value; }
- public byte _0xA0 { get => Data[0xA0]; set => Data[0xA0] = value; }
- public byte _0xA1 { get => Data[0xA1]; set => Data[0xA1] = value; }
+ // 0x94 Unused
+ // 0x95 Unused
+ // 0x96 Unused
+ // 0x97 Unused
+ // 0x98 Unused
+ // 0x99 Unused
+ // 0x9A Unused
+ // 0x9B Unused
+ // 0x9C Unused
+ // 0x9D Unused
+ // 0x9E Unused
+ // 0x9F Unused
+ // 0xA0 Unused
+ // 0xA1 Unused
public override int HT_Friendship { get => Data[0xA2]; set => Data[0xA2] = (byte)value; }
public override int HT_Affection { get => Data[0xA3]; set => Data[0xA3] = (byte)value; }
public override int HT_Intensity { get => Data[0xA4]; set => Data[0xA4] = (byte)value; }
public override int HT_Memory { get => Data[0xA5]; set => Data[0xA5] = (byte)value; }
public override int HT_Feeling { get => Data[0xA6]; set => Data[0xA6] = (byte)value; }
- public byte _0xA7 { get => Data[0xA7]; set => Data[0xA7] = value; }
+ // 0xA7 Unused
public override int HT_TextVar { get => BitConverter.ToUInt16(Data, 0xA8); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0xA8); }
- public byte _0xAA { get => Data[0xAA]; set => Data[0xAA] = value; }
- public byte _0xAB { get => Data[0xAB]; set => Data[0xAB] = value; }
+ // 0xAA Unused
+ // 0xAB Unused
public byte FieldEventFatigue1 { get => Data[0xAC]; set => Data[0xAC] = value; }
public byte FieldEventFatigue2 { get => Data[0xAD]; set => Data[0xAD] = value; }
public override byte Fullness { get => Data[0xAE]; set => Data[0xAE] = value; }
@@ -242,12 +242,12 @@ public override int RelearnMove4
#region Block D
public override string OT_Name { get => GetString(0xB0, 24); set => SetString(value, 12).CopyTo(Data, 0xB0); }
public override int OT_Friendship { get => Data[0xCA]; set => Data[0xCA] = (byte)value; }
- public int _0xCB { get => Data[0xCB]; set => Data[0xCB] = (byte)value; }
- public int _0xCC { get => Data[0xCC]; set => Data[0xCC] = (byte)value; }
- public int _0xCD { get => Data[0xCD]; set => Data[0xCD] = (byte)value; }
- public int _0xCE { get => Data[0xCE]; set => Data[0xCE] = (byte)value; }
- public int _0xCF { get => Data[0xCF]; set => Data[0xCF] = (byte)value; }
- public int _0xD0 { get => Data[0xD0]; set => Data[0xD0] = (byte)value; }
+ // 0xCB Unused
+ // 0xCC Unused
+ // 0xCD Unused
+ // 0xCE Unused
+ // 0xCF Unused
+ // 0xD0 Unused
public override int Egg_Year { get => Data[0xD1]; set => Data[0xD1] = (byte)value; }
public override int Egg_Month { get => Data[0xD2]; set => Data[0xD2] = (byte)value; }
public override int Egg_Day { get => Data[0xD3]; set => Data[0xD3] = (byte)value; }
@@ -268,9 +268,9 @@ public override int RelearnMove4
public bool HT_SPD { get => ((HyperTrainFlags >> 4) & 1) == 1; set => HyperTrainFlags = (HyperTrainFlags & ~(1 << 4)) | ((value ? 1 : 0) << 4); }
public bool HT_SPE { get => ((HyperTrainFlags >> 5) & 1) == 1; set => HyperTrainFlags = (HyperTrainFlags & ~(1 << 5)) | ((value ? 1 : 0) << 5); }
public override int Version { get => Data[0xDF]; set => Data[0xDF] = (byte)value; }
- public int _0xE0 { get => Data[0xE0]; set => Data[0xE0] = (byte)value; }
- public int _0xE1 { get => Data[0xE1]; set => Data[0xE1] = (byte)value; }
- public int _0xE2 { get => Data[0xE2]; set => Data[0xE2] = (byte)value; }
+ // 0xE0 Unused
+ // 0xE1 Unused
+ // 0xE2 Unused
public override int Language { get => Data[0xE3]; set => Data[0xE3] = (byte)value; }
public float WeightAbsolute { get => BitConverter.ToSingle(Data, 0xE4); set => BitConverter.GetBytes(value).CopyTo(Data, 0xE4); }
#endregion
diff --git a/PKHeX.Core/PKM/PK6.cs b/PKHeX.Core/PKM/PK6.cs
index f6d8ddcfc..3a0e7f338 100644
--- a/PKHeX.Core/PKM/PK6.cs
+++ b/PKHeX.Core/PKM/PK6.cs
@@ -280,7 +280,7 @@ public override int RelearnMove4
public bool SecretSuperTrainingUnlocked { get => (Data[0x72] & 1) == 1; set => Data[0x72] = (byte)((Data[0x72] & ~1) | (value ? 1 : 0)); }
public bool SecretSuperTrainingComplete { get => (Data[0x72] & 2) == 2; set => Data[0x72] = (byte)((Data[0x72] & ~2) | (value ? 2 : 0)); }
- public byte _0x73 { get => Data[0x73]; set => Data[0x73] = value; }
+ // 0x73 Unused
private uint IV32 { get => BitConverter.ToUInt32(Data, 0x74); set => BitConverter.GetBytes(value).CopyTo(Data, 0x74); }
public override int IV_HP { get => (int)(IV32 >> 00) & 0x1F; set => IV32 = (IV32 & ~(0x1Fu << 00)) | ((value > 31 ? 31u : (uint)value) << 00); }
public override int IV_ATK { get => (int)(IV32 >> 05) & 0x1F; set => IV32 = (IV32 & ~(0x1Fu << 05)) | ((value > 31 ? 31u : (uint)value) << 05); }
@@ -305,21 +305,21 @@ public override int RelearnMove4
public int Geo4_Country { get => Data[0x9B]; set => Data[0x9B] = (byte)value; }
public int Geo5_Region { get => Data[0x9C]; set => Data[0x9C] = (byte)value; }
public int Geo5_Country { get => Data[0x9D]; set => Data[0x9D] = (byte)value; }
- public byte _0x9E { get => Data[0x9E]; set => Data[0x9E] = value; }
- public byte _0x9F { get => Data[0x9F]; set => Data[0x9F] = value; }
- public byte _0xA0 { get => Data[0xA0]; set => Data[0xA0] = value; }
- public byte _0xA1 { get => Data[0xA1]; set => Data[0xA1] = value; }
+ // 0x9E Unused
+ // 0x9F Unused
+ // 0xA0 Unused
+ // 0xA1 Unused
public override int HT_Friendship { get => Data[0xA2]; set => Data[0xA2] = (byte)value; }
public override int HT_Affection { get => Data[0xA3]; set => Data[0xA3] = (byte)value; }
public override int HT_Intensity { get => Data[0xA4]; set => Data[0xA4] = (byte)value; }
public override int HT_Memory { get => Data[0xA5]; set => Data[0xA5] = (byte)value; }
public override int HT_Feeling { get => Data[0xA6]; set => Data[0xA6] = (byte)value; }
- public byte _0xA7 { get => Data[0xA7]; set => Data[0xA7] = value; }
+ // 0xA7 Unused
public override int HT_TextVar { get => BitConverter.ToUInt16(Data, 0xA8); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0xA8); }
- public byte _0xAA { get => Data[0xAA]; set => Data[0xAA] = value; }
- public byte _0xAB { get => Data[0xAB]; set => Data[0xAB] = value; }
- public byte _0xAC { get => Data[0xAC]; set => Data[0xAC] = value; }
- public byte _0xAD { get => Data[0xAD]; set => Data[0xAD] = value; }
+ // 0xAA Unused
+ // 0xAB Unused
+ // 0xAC Unused
+ // 0xAD Unused
public override byte Fullness { get => Data[0xAE]; set => Data[0xAE] = value; }
public override byte Enjoyment { get => Data[0xAF]; set => Data[0xAF] = value; }
#endregion
@@ -337,7 +337,7 @@ public override int RelearnMove4
public override int Met_Year { get => Data[0xD4]; set => Data[0xD4] = (byte)value; }
public override int Met_Month { get => Data[0xD5]; set => Data[0xD5] = (byte)value; }
public override int Met_Day { get => Data[0xD6]; set => Data[0xD6] = (byte)value; }
- public byte _0xD7 { get => Data[0xD7]; set => Data[0xD7] = value; }
+ // 0xD7 Unused
public override int Egg_Location { get => BitConverter.ToUInt16(Data, 0xD8); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0xD8); }
public override int Met_Location { get => BitConverter.ToUInt16(Data, 0xDA); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0xDA); }
public override int Ball { get => Data[0xDC]; set => Data[0xDC] = (byte)value; }
diff --git a/PKHeX.Core/PKM/PK7.cs b/PKHeX.Core/PKM/PK7.cs
index b7b7a4beb..aa6036956 100644
--- a/PKHeX.Core/PKM/PK7.cs
+++ b/PKHeX.Core/PKM/PK7.cs
@@ -306,7 +306,7 @@ public override int RelearnMove4
public bool SecretSuperTrainingUnlocked { get => (Data[0x72] & 1) == 1; set => Data[0x72] = (byte)((Data[0x72] & ~1) | (value ? 1 : 0)); }
public bool SecretSuperTrainingComplete { get => (Data[0x72] & 2) == 2; set => Data[0x72] = (byte)((Data[0x72] & ~2) | (value ? 2 : 0)); }
- public byte _0x73 { get => Data[0x73]; set => Data[0x73] = value; }
+ // 0x73 Unused
private uint IV32 { get => BitConverter.ToUInt32(Data, 0x74); set => BitConverter.GetBytes(value).CopyTo(Data, 0x74); }
public override int IV_HP { get => (int)(IV32 >> 00) & 0x1F; set => IV32 = (IV32 & ~(0x1Fu << 00)) | ((value > 31 ? 31u : (uint)value) << 00); }
public override int IV_ATK { get => (int)(IV32 >> 05) & 0x1F; set => IV32 = (IV32 & ~(0x1Fu << 05)) | ((value > 31 ? 31u : (uint)value) << 05); }
@@ -331,21 +331,21 @@ public override int RelearnMove4
public int Geo4_Country { get => Data[0x9B]; set => Data[0x9B] = (byte)value; }
public int Geo5_Region { get => Data[0x9C]; set => Data[0x9C] = (byte)value; }
public int Geo5_Country { get => Data[0x9D]; set => Data[0x9D] = (byte)value; }
- public byte _0x9E { get => Data[0x9E]; set => Data[0x9E] = value; }
- public byte _0x9F { get => Data[0x9F]; set => Data[0x9F] = value; }
- public byte _0xA0 { get => Data[0xA0]; set => Data[0xA0] = value; }
- public byte _0xA1 { get => Data[0xA1]; set => Data[0xA1] = value; }
+ // 0x9E Unused
+ // 0x9F Unused
+ // 0xA0 Unused
+ // 0xA1 Unused
public override int HT_Friendship { get => Data[0xA2]; set => Data[0xA2] = (byte)value; }
public override int HT_Affection { get => Data[0xA3]; set => Data[0xA3] = (byte)value; }
public override int HT_Intensity { get => Data[0xA4]; set => Data[0xA4] = (byte)value; }
public override int HT_Memory { get => Data[0xA5]; set => Data[0xA5] = (byte)value; }
public override int HT_Feeling { get => Data[0xA6]; set => Data[0xA6] = (byte)value; }
- public byte _0xA7 { get => Data[0xA7]; set => Data[0xA7] = value; }
+ // 0xA7 Unused
public override int HT_TextVar { get => BitConverter.ToUInt16(Data, 0xA8); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0xA8); }
- public byte _0xAA { get => Data[0xAA]; set => Data[0xAA] = value; }
- public byte _0xAB { get => Data[0xAB]; set => Data[0xAB] = value; }
- public byte _0xAC { get => Data[0xAC]; set => Data[0xAC] = value; }
- public byte _0xAD { get => Data[0xAD]; set => Data[0xAD] = value; }
+ // 0xAA Unused
+ // 0xAB Unused
+ // 0xAC Unused
+ // 0xAD Unused
public override byte Fullness { get => Data[0xAE]; set => Data[0xAE] = value; }
public override byte Enjoyment { get => Data[0xAF]; set => Data[0xAF] = value; }
#endregion
@@ -363,7 +363,7 @@ public override int RelearnMove4
public override int Met_Year { get => Data[0xD4]; set => Data[0xD4] = (byte)value; }
public override int Met_Month { get => Data[0xD5]; set => Data[0xD5] = (byte)value; }
public override int Met_Day { get => Data[0xD6]; set => Data[0xD6] = (byte)value; }
- public byte _0xD7 { get => Data[0xD7]; set => Data[0xD7] = value; }
+ // Unused 0xD7
public override int Egg_Location { get => BitConverter.ToUInt16(Data, 0xD8); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0xD8); }
public override int Met_Location { get => BitConverter.ToUInt16(Data, 0xDA); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0xDA); }
public override int Ball { get => Data[0xDC]; set => Data[0xDC] = (byte)value; }
diff --git a/PKHeX.Core/PKM/Shared/PokeSize.cs b/PKHeX.Core/PKM/Shared/PokeSize.cs
index 323aadb82..77a65beab 100644
--- a/PKHeX.Core/PKM/Shared/PokeSize.cs
+++ b/PKHeX.Core/PKM/Shared/PokeSize.cs
@@ -9,7 +9,7 @@ public enum PokeSize
XL,
}
- public static class PokeSizeExtensions
+ public static class PokeSizeUtil
{
///
/// Compares the sizing scalar to different thresholds to determine the size rating.
diff --git a/PKHeX.Core/PKM/XK3.cs b/PKHeX.Core/PKM/XK3.cs
index 48fc5b386..1fb67c746 100644
--- a/PKHeX.Core/PKM/XK3.cs
+++ b/PKHeX.Core/PKM/XK3.cs
@@ -94,8 +94,8 @@ public override bool FatefulEncounter
public int OriginalRegion { get => Data[0x36]; set => Data[0x36] = (byte)value; }
public override int Language { get => Core.Language.GetMainLangIDfromGC(Data[0x37]); set => Data[0x37] = Core.Language.GetGCLangIDfromMain((byte)value); }
public override string OT_Name { get => GetString(0x38, 20); set => SetString(value, 10).CopyTo(Data, 0x38); } // +2 terminator
- public override string Nickname { get => GetString(0x4E, 20); set { SetString(value, 10).CopyTo(Data, 0x4E); Nickname2 = value; } } // +2 terminator
- private string Nickname2 { get => GetString(0x64, 20); set => SetString(value, 10).CopyTo(Data, 0x64); } // +2 terminator
+ public override string Nickname { get => GetString(0x4E, 20); set { SetString(value, 10).CopyTo(Data, 0x4E); NicknameCopy = value; } } // +2 terminator
+ public string NicknameCopy { get => GetString(0x64, 20); set => SetString(value, 10).CopyTo(Data, 0x64); } // +2 terminator
// 0x7A-0x7B Unknown
private ushort RIB0 { get => BigEndian.ToUInt16(Data, 0x7C); set => BigEndian.GetBytes(value).CopyTo(Data, 0x7C); }
public override bool RibbonChampionG3Hoenn { get => (RIB0 & (1 << 15)) == 1 << 15; set => RIB0 = (ushort)((RIB0 & ~(1 << 15)) | (ushort)(value ? 1 << 15 : 0)); }
diff --git a/PKHeX.Core/Saves/SAV4DP.cs b/PKHeX.Core/Saves/SAV4DP.cs
index d8b7807d4..236c67405 100644
--- a/PKHeX.Core/Saves/SAV4DP.cs
+++ b/PKHeX.Core/Saves/SAV4DP.cs
@@ -85,28 +85,26 @@ public override InventoryPouch[] Inventory
private const uint MysteryGiftDPSlotActive = 0xEDB88320;
- private bool[] MysteryGiftDPSlotActiveFlags
+ public bool[] GetMysteryGiftDPSlotActiveFlags()
{
- get
- {
- int ofs = WondercardFlags + 0x100; // skip over flags
- bool[] active = new bool[GiftCountMax]; // 8 PGT, 3 PCD
- for (int i = 0; i < active.Length; i++)
- active[i] = BitConverter.ToUInt32(General, ofs + (4 * i)) == MysteryGiftDPSlotActive;
+ int ofs = WondercardFlags + 0x100; // skip over flags
+ bool[] active = new bool[GiftCountMax]; // 8 PGT, 3 PCD
+ for (int i = 0; i < active.Length; i++)
+ active[i] = BitConverter.ToUInt32(General, ofs + (4 * i)) == MysteryGiftDPSlotActive;
- return active;
- }
- set
- {
- if (value.Length != GiftCountMax)
- return;
+ return active;
+ }
- int ofs = WondercardFlags + 0x100; // skip over flags
- for (int i = 0; i < value.Length; i++)
- {
- byte[] magic = BitConverter.GetBytes(value[i] ? MysteryGiftDPSlotActive : 0); // 4 bytes
- SetData(General, magic, ofs + (4 * i));
- }
+ public void SetMysteryGiftDPSlotActiveFlags(bool[] value)
+ {
+ if (value.Length != GiftCountMax)
+ return;
+
+ int ofs = WondercardFlags + 0x100; // skip over flags
+ for (int i = 0; i < value.Length; i++)
+ {
+ byte[] magic = BitConverter.GetBytes(value[i] ? MysteryGiftDPSlotActive : 0); // 4 bytes
+ SetData(General, magic, ofs + (4 * i));
}
}
@@ -120,12 +118,12 @@ public override MysteryGiftAlbum GiftAlbum
}
}
- private void SetActiveGiftFlags(MysteryGift[] gifts)
+ private void SetActiveGiftFlags(IReadOnlyList gifts)
{
- var arr = new bool[gifts.Length];
+ var arr = new bool[gifts.Count];
for (int i = 0; i < arr.Length; i++)
arr[i] = !gifts[i].Empty;
- MysteryGiftDPSlotActiveFlags = arr;
+ SetMysteryGiftDPSlotActiveFlags(arr);
}
}
}
\ No newline at end of file
diff --git a/PKHeX.Core/Saves/Substructures/Gen12/G1OverworldSpawner.cs b/PKHeX.Core/Saves/Substructures/Gen12/G1OverworldSpawner.cs
index bf10af2c4..12c810a4c 100644
--- a/PKHeX.Core/Saves/Substructures/Gen12/G1OverworldSpawner.cs
+++ b/PKHeX.Core/Saves/Substructures/Gen12/G1OverworldSpawner.cs
@@ -51,6 +51,7 @@ public G1OverworldSpawner(SAV1 sav)
}
}
+#pragma warning disable IDE0052 // Remove unread private members
private FlagPairG1 FlagMewtwo { get; }
private FlagPairG1 FlagArticuno { get; }
private FlagPairG1 FlagZapdos { get; }
@@ -72,6 +73,7 @@ public G1OverworldSpawner(SAV1 sav)
private FlagPairG1? FlagBulbasaur { get; }
private FlagPairG1? FlagSquirtle { get; }
private FlagPairG1? FlagCharmander { get; }
+#pragma warning restore IDE0052 // Remove unread private members
public void Save()
{
diff --git a/PKHeX.Core/Saves/Substructures/Gen3/DecorationInventory3.cs b/PKHeX.Core/Saves/Substructures/Gen3/DecorationInventory3.cs
index a9dce1043..da6bceb03 100644
--- a/PKHeX.Core/Saves/Substructures/Gen3/DecorationInventory3.cs
+++ b/PKHeX.Core/Saves/Substructures/Gen3/DecorationInventory3.cs
@@ -1,5 +1,6 @@
using System.Runtime.InteropServices;
+#pragma warning disable CA1815 // Override equals and operator equals on value types
namespace PKHeX.Core
{
[StructLayout(LayoutKind.Sequential)]
diff --git a/PKHeX.Drawing/ImageUtil.cs b/PKHeX.Drawing/ImageUtil.cs
index 784f46778..d0bb8c21b 100644
--- a/PKHeX.Drawing/ImageUtil.cs
+++ b/PKHeX.Drawing/ImageUtil.cs
@@ -28,9 +28,6 @@ public static Bitmap LayerImage(Image? baseLayer, Image overLayer, int x, int y)
public static Bitmap ChangeOpacity(Image img, double trans)
{
- if (img.PixelFormat.HasFlag(PixelFormat.Indexed))
- return (Bitmap)img;
-
var bmp = (Bitmap)img.Clone();
GetBitmapData(bmp, out BitmapData bmpData, out IntPtr ptr, out byte[] data);
@@ -44,9 +41,6 @@ public static Bitmap ChangeOpacity(Image img, double trans)
public static Bitmap ChangeAllColorTo(Image img, Color c)
{
- if (img.PixelFormat.HasFlag(PixelFormat.Indexed))
- return (Bitmap)img;
-
var bmp = (Bitmap)img.Clone();
GetBitmapData(bmp, out BitmapData bmpData, out IntPtr ptr, out byte[] data);
@@ -60,9 +54,6 @@ public static Bitmap ChangeAllColorTo(Image img, Color c)
public static Bitmap ToGrayscale(Image img)
{
- if (img.PixelFormat.HasFlag(PixelFormat.Indexed))
- return (Bitmap)img;
-
var bmp = (Bitmap)img.Clone();
GetBitmapData(bmp, out BitmapData bmpData, out IntPtr ptr, out byte[] data);
diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
index 7d8770ee9..a6e5ba1fb 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
@@ -580,7 +580,7 @@ private void ClickPP(object sender, EventArgs e)
private void ClickPPUps(object sender, EventArgs e)
{
- bool min = ModifierKeys.HasFlag(Keys.Control);
+ bool min = (ModifierKeys & Keys.Control) != 0;
static int getValue(ListControl cb, bool zero) => zero || WinFormsUtil.GetIndex(cb) == 0 ? 0 : 3;
CB_PPu1.SelectedIndex = getValue(CB_Move1, min);
CB_PPu2.SelectedIndex = getValue(CB_Move2, min);
@@ -620,12 +620,12 @@ private void ClickTRGender(object sender, EventArgs e)
private void ClickBall(object sender, EventArgs e)
{
Entity.Ball = WinFormsUtil.GetIndex(CB_Ball);
- if (ModifierKeys.HasFlag(Keys.Alt))
+ if ((ModifierKeys & Keys.Alt) != 0)
{
CB_Ball.SelectedValue = (int)Ball.Poke;
return;
}
- if (ModifierKeys.HasFlag(Keys.Shift))
+ if ((ModifierKeys & Keys.Shift) != 0)
{
CB_Ball.SelectedValue = BallApplicator.ApplyBallLegalByColor(Entity);
return;
diff --git a/PKHeX.WinForms/Controls/PKM Editor/SizeCP.cs b/PKHeX.WinForms/Controls/PKM Editor/SizeCP.cs
index c6f186bd7..25bb2fb8e 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/SizeCP.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/SizeCP.cs
@@ -73,7 +73,7 @@ private void MT_CP_TextChanged(object sender, EventArgs e)
private void NUD_HeightScalar_ValueChanged(object sender, EventArgs e)
{
ss.HeightScalar = (byte) NUD_HeightScalar.Value;
- L_SizeH.Text = SizeClass[(int)PokeSizeExtensions.GetSizeRating(ss.HeightScalar)];
+ L_SizeH.Text = SizeClass[(int)PokeSizeUtil.GetSizeRating(ss.HeightScalar)];
if (!CHK_Auto.Checked || Loading || pkm == null)
return;
@@ -84,7 +84,7 @@ private void NUD_HeightScalar_ValueChanged(object sender, EventArgs e)
private void NUD_WeightScalar_ValueChanged(object sender, EventArgs e)
{
ss.WeightScalar = (byte) NUD_WeightScalar.Value;
- L_SizeW.Text = SizeClass[(int)PokeSizeExtensions.GetSizeRating(ss.WeightScalar)];
+ L_SizeW.Text = SizeClass[(int)PokeSizeUtil.GetSizeRating(ss.WeightScalar)];
if (!CHK_Auto.Checked || Loading || pkm == null)
return;
diff --git a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs
index f2046439f..45abfa04d 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs
@@ -63,21 +63,27 @@ private void ClickIV(object sender, EventArgs e)
if (!(sender is MaskedTextBox t))
return;
- if (ModifierKeys.HasFlag(Keys.Alt)) // Min
+ switch (ModifierKeys)
{
- t.Text = 0.ToString();
- }
- else if (ModifierKeys.HasFlag(Keys.Control))
- {
- var index = Array.IndexOf(MT_IVs, t);
- t.Text = Entity.GetMaximumIV(index, true).ToString();
- }
- else if (Entity is IHyperTrain h && ModifierKeys.HasFlag(Keys.Shift))
- {
- var index = Array.IndexOf(MT_IVs, t);
- bool flag = h.HyperTrainInvert(index);
- UpdateHyperTrainingFlag(index, flag);
- UpdateStats();
+ case Keys.Alt: // Min
+ t.Text = 0.ToString();
+ break;
+
+ case Keys.Control: // Max
+ {
+ var index = Array.IndexOf(MT_IVs, t);
+ t.Text = Entity.GetMaximumIV(index, true).ToString();
+ break;
+ }
+
+ case Keys.Shift when Entity is IHyperTrain h: // HT
+ {
+ var index = Array.IndexOf(MT_IVs, t);
+ bool flag = h.HyperTrainInvert(index);
+ UpdateHyperTrainingFlag(index, flag);
+ UpdateStats();
+ break;
+ }
}
}
@@ -86,16 +92,16 @@ private void ClickEV(object sender, EventArgs e)
if (!(sender is MaskedTextBox t))
return;
- if (!ModifierKeys.HasFlag(Keys.Control)) // Max
+ if ((ModifierKeys & Keys.Control) != 0) // Max
{
- if (ModifierKeys.HasFlag(Keys.Alt)) // Min
- t.Text = 0.ToString();
- return;
+ int index = Array.IndexOf(MT_EVs, t);
+ int newEV = Entity.GetMaximumEV(index);
+ t.Text = newEV.ToString();
+ }
+ else if ((ModifierKeys & Keys.Alt) != 0) // Min
+ {
+ t.Text = 0.ToString();
}
-
- int index = Array.IndexOf(MT_EVs, t);
- int newEV = Entity.GetMaximumEV(index);
- t.Text = newEV.ToString();
}
private void ClickAV(object sender, EventArgs e)
@@ -103,14 +109,15 @@ private void ClickAV(object sender, EventArgs e)
if (!(sender is MaskedTextBox t))
return;
- if (!ModifierKeys.HasFlag(Keys.Control)) // Max
+ if ((ModifierKeys & Keys.Control) != 0) // Max
{
- if (ModifierKeys.HasFlag(Keys.Alt)) // Min
- t.Text = 0.ToString();
- return;
+ var max = Legal.AwakeningMax.ToString();
+ t.Text = t.Text == max ? 0.ToString() : max;
+ }
+ else if ((ModifierKeys & Keys.Alt) != 0) // Min
+ {
+ t.Text = 0.ToString();
}
- var max = Legal.AwakeningMax.ToString();
- t.Text = t.Text == max ? 0.ToString() : max;
}
public void UpdateIVs(object sender, EventArgs e)
@@ -205,7 +212,7 @@ private void UpdateAVs(object sender, EventArgs e)
private void UpdateRandomEVs(object sender, EventArgs e)
{
- bool zero = ModifierKeys.HasFlag(Keys.Control);
+ bool zero = (ModifierKeys & Keys.Control) != 0;
var evs = zero ? new int[6] : PKX.GetRandomEVs(Entity.Format);
LoadEVs(evs);
UpdateEVs(null, EventArgs.Empty);
@@ -256,7 +263,7 @@ private void ClickStatLabel(object sender, MouseEventArgs e)
sender = Label_SPA;
int index = Array.IndexOf(L_Stats, sender as Label);
- if (ModifierKeys.HasFlag(Keys.Alt)) // EV
+ if ((ModifierKeys & Keys.Alt) != 0) // EV
{
bool min = e.Button != MouseButtons.Left;
if (Entity is PB7)
@@ -270,7 +277,7 @@ private void ClickStatLabel(object sender, MouseEventArgs e)
MT_EVs[index].Text = value.ToString();
}
}
- else if (ModifierKeys.HasFlag(Keys.Control)) // IV
+ else if ((ModifierKeys & Keys.Control) != 0) // IV
{
var value = e.Button != MouseButtons.Left ? 0 : Entity.GetMaximumIV(index, true);
MT_IVs[index].Text = value.ToString();
@@ -345,8 +352,8 @@ private void LoadBST(PersonalInfo pi)
public void UpdateRandomIVs(object sender, EventArgs e)
{
- int? flawless = ModifierKeys.HasFlag(Keys.Control) ? (int?)6 : null;
- var IVs = Entity.SetRandomIVs(flawless);
+ var flawless = (ModifierKeys & Keys.Control) != 0;
+ var IVs = flawless ? Entity.SetRandomIVs(6) : Entity.SetRandomIVs();
LoadIVs(IVs);
}
diff --git a/PKHeX.WinForms/Controls/SAV Editor/PartyEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/PartyEditor.cs
index 8cf874e4c..be1f11b5c 100644
--- a/PKHeX.WinForms/Controls/SAV Editor/PartyEditor.cs
+++ b/PKHeX.WinForms/Controls/SAV Editor/PartyEditor.cs
@@ -127,6 +127,10 @@ public void ResetSlots()
private void BoxSlot_QueryContinueDrag(object sender, QueryContinueDragEventArgs e) => M?.QueryContinueDrag(sender, e);
private void BoxSlot_DragDrop(object sender, DragEventArgs e) => M?.DragDrop(sender, e);
- public bool InitializeFromSAV(SaveFile sav) => InitializeGrid();
+ public bool InitializeFromSAV(SaveFile sav)
+ {
+ Visible = sav.HasParty;
+ return InitializeGrid();
+ }
}
}
diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs
index 16668b3b9..d1c6b6519 100644
--- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs
+++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs
@@ -355,11 +355,11 @@ private void ClickBoxSort(object sender, MouseEventArgs e)
return;
if (!tabBoxMulti.GetTabRect(tabBoxMulti.SelectedIndex).Contains(PointToClient(MousePosition)))
return;
- if (!e.Button.HasFlag(MouseButtons.Right))
+ if ((e.Button & MouseButtons.Right) == 0)
{
- if (ModifierKeys.HasFlag(Keys.Alt))
+ if ((ModifierKeys & Keys.Alt) != 0)
SortMenu.Clear();
- else if (ModifierKeys.HasFlag(Keys.Control))
+ else if ((ModifierKeys & Keys.Control) != 0)
SortMenu.Sort();
return;
}
diff --git a/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs b/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs
index 2983d006a..9e336d20d 100644
--- a/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs
+++ b/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs
@@ -78,7 +78,7 @@ public void QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
public void DragEnter(object sender, DragEventArgs e)
{
- if (e.AllowedEffect.HasFlag(DragDropEffects.Copy)) // external file
+ if ((e.AllowedEffect & DragDropEffects.Copy) != 0) // external file
e.Effect = DragDropEffects.Copy;
else if (e.Data != null) // within
e.Effect = DragDropEffects.Move;
diff --git a/PKHeX.WinForms/Misc/ErrorWindow.cs b/PKHeX.WinForms/Misc/ErrorWindow.cs
index c39300763..b59fdc73e 100644
--- a/PKHeX.WinForms/Misc/ErrorWindow.cs
+++ b/PKHeX.WinForms/Misc/ErrorWindow.cs
@@ -38,7 +38,6 @@ private ErrorWindow(string lang) : this()
/// For application exceptions, continuing is not possible, so the button should not be shown.
private bool ShowContinue
{
- get => B_Continue.Visible;
set => B_Continue.Visible = value;
}
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen8/SAV_Raid8.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen8/SAV_Raid8.cs
index 04a509755..b34d9c2c7 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen8/SAV_Raid8.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen8/SAV_Raid8.cs
@@ -38,7 +38,7 @@ private void B_Save_Click(object sender, EventArgs e)
private void B_ActivateAll_Click(object sender, EventArgs e)
{
- bool export = ModifierKeys.HasFlag(Keys.Alt);
+ bool export = (ModifierKeys & Keys.Alt) != 0;
if (export)
{
var txt = Raids.DumpAll();
@@ -48,8 +48,8 @@ private void B_ActivateAll_Click(object sender, EventArgs e)
return;
}
- bool rare = ModifierKeys.HasFlag(Keys.Control);
- bool isEvent = ModifierKeys.HasFlag(Keys.Shift);
+ bool rare = (ModifierKeys & Keys.Control) != 0;
+ bool isEvent = (ModifierKeys & Keys.Shift) != 0;
Raids.ActivateAllRaids(rare, isEvent);
LoadDen(CB_Den.SelectedIndex);
}