diff --git a/PKHeX.Core/Legality/Encounters/EncounterSuggestion.cs b/PKHeX.Core/Legality/Encounters/EncounterSuggestion.cs index 4721f606c..bde67c625 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterSuggestion.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterSuggestion.cs @@ -27,7 +27,7 @@ public static EncounterStatic GetSuggestedMetInfo(PKM pkm) return null; } - private static EncounterStatic GetSuggestedEncounterEgg(PKM pkm, int loc) + private static EncounterStatic GetSuggestedEncounterEgg(PKM pkm, int loc = -1) { int lvl = 1; // gen5+ if (!pkm.IsNative) @@ -41,21 +41,18 @@ private static EncounterStatic GetSuggestedEncounterEgg(PKM pkm, int loc) Level = lvl, }; } - private static EncounterStatic GetSuggestedEncounterWild(EncounterArea area, int loc) + private static EncounterStatic GetSuggestedEncounterWild(EncounterArea area, int loc = -1) { var slots = area.Slots.OrderBy(s => s.LevelMin); var first = slots.First(); - var encounter = new EncounterStatic + return new EncounterStatic { - Location = area.Location, + Location = loc != -1 ? loc : area.Location, Species = first.Species, Level = first.LevelMin, }; - if (loc != -1) // forced location - encounter.Location = loc; - return encounter; } - private static EncounterStatic GetSuggestedEncounterStatic(EncounterStatic s, int loc) + private static EncounterStatic GetSuggestedEncounterStatic(EncounterStatic s, int loc = -1) { if (loc == -1) loc = s.Location; diff --git a/PKHeX.Core/Legality/Tables.cs b/PKHeX.Core/Legality/Tables.cs index cc9fbdb1b..5f43e6f26 100644 --- a/PKHeX.Core/Legality/Tables.cs +++ b/PKHeX.Core/Legality/Tables.cs @@ -411,6 +411,14 @@ public static partial class Legal public static readonly int[] Games_3e = { 3 }; public static readonly int[] Games_3r = { 4, 5 }; public static readonly int[] Games_3s = { 15 }; + + public static readonly int[] Languages_GB = + { + (int) LanguageID.Japanese, (int) LanguageID.English, (int) LanguageID.French, (int) LanguageID.German, (int) LanguageID.Spanish, + (int) LanguageID.Korean // check Korean for the VC case, never possible to match string outside of this case + }; + public static readonly int[] Languages_36 = Languages_GB.Concat(new[] { (int)LanguageID.Italian }).ToArray(); + public static readonly int[] Languages_7 = Languages_36.Concat(new[] { (int)LanguageID.ChineseS, (int)LanguageID.ChineseT }).ToArray(); #endregion } diff --git a/PKHeX.Core/MysteryGifts/WC3.cs b/PKHeX.Core/MysteryGifts/WC3.cs index 2e51440af..eb4a9d06c 100644 --- a/PKHeX.Core/MysteryGifts/WC3.cs +++ b/PKHeX.Core/MysteryGifts/WC3.cs @@ -180,7 +180,7 @@ private static int GetRandomVersion(int version) if (version <= 15 && version > 0) // single game return version; - int rand = Util.Rand.Next(1); + int rand = Util.Rand.Next(2); // 0 or 1 switch (version) { case (int)GameVersion.FRLG: diff --git a/PKHeX.Core/MysteryGifts/WC6.cs b/PKHeX.Core/MysteryGifts/WC6.cs index 22a4ea106..6a03e0052 100644 --- a/PKHeX.Core/MysteryGifts/WC6.cs +++ b/PKHeX.Core/MysteryGifts/WC6.cs @@ -367,14 +367,14 @@ public override PKM ConvertToPKM(SaveFile SAV) pk.OT_Memory = 3; pk.OT_TextVar = 9; pk.OT_Intensity = 1; - pk.OT_Feeling = Util.Rand.Next(0, 9); + pk.OT_Feeling = Util.Rand.Next(0, 10); // 0-9 } else { pk.HT_Memory = 3; pk.HT_TextVar = 9; pk.HT_Intensity = 1; - pk.HT_Feeling = Util.Rand.Next(0, 9); + pk.HT_Feeling = Util.Rand.Next(0, 10); // 0-9 pk.HT_Friendship = pk.OT_Friendship; } pk.IsNicknamed = IsNicknamed; diff --git a/PKHeX.Core/PKM/PK6.cs b/PKHeX.Core/PKM/PK6.cs index ecc8a7164..dd475e951 100644 --- a/PKHeX.Core/PKM/PK6.cs +++ b/PKHeX.Core/PKM/PK6.cs @@ -566,7 +566,7 @@ public void TradeMemory(bool Bank) HT_Memory = 4; // Link trade to [VAR: General Location] HT_TextVar = Bank ? 0 : 9; // Somewhere (Bank) : Pokécenter (Trade) HT_Intensity = 1; - HT_Feeling = Util.Rand.Next(0, Bank ? 9 : 19); // 0-9 Bank, 0-19 Trade + HT_Feeling = Util.Rand.Next(0, Bank ? 10 : 20); // 0-9 Bank, 0-19 Trade } // Legality Properties diff --git a/PKHeX.Core/PKM/PK7.cs b/PKHeX.Core/PKM/PK7.cs index a35399698..f6b098dc3 100644 --- a/PKHeX.Core/PKM/PK7.cs +++ b/PKHeX.Core/PKM/PK7.cs @@ -618,7 +618,7 @@ public void TradeMemory(bool Bank) HT_Memory = 4; // Link trade to [VAR: General Location] HT_TextVar = 0; // Somewhere (Bank) HT_Intensity = 1; - HT_Feeling = Util.Rand.Next(0, 9); // 0-9 Bank + HT_Feeling = Util.Rand.Next(0, 10); // 0-9 Bank } // Legality Properties diff --git a/PKHeX.Core/PKM/PKX.cs b/PKHeX.Core/PKM/PKX.cs index 488f5240e..5aaa4c434 100644 --- a/PKHeX.Core/PKM/PKX.cs +++ b/PKHeX.Core/PKM/PKX.cs @@ -246,18 +246,13 @@ public static bool IsNicknamedAnyLanguage(int species, string nick, int generati var langs = GetAvailableGameLanguages(generation); return langs.All(lang => GetSpeciesNameGeneration(species, lang, generation) != nick); } - private static IEnumerable GetAvailableGameLanguages(int generation) + private static ICollection GetAvailableGameLanguages(int generation) { if (generation < 3) - return new[] - { - (int) LanguageID.Japanese, (int) LanguageID.English, (int) LanguageID.French, (int) LanguageID.German, (int) LanguageID.Spanish, - (int) LanguageID.Korean // check Korean for the VC case, never possible to match string outside of this case - }; + return Legal.Languages_GB; if (generation < 7) - return Enumerable.Range(1, 9 - 1); // chinese (CHS/CHT) introduced in Gen7 - - return Enumerable.Range(1, SpeciesLang.Length - 1); + return Legal.Languages_36; + return Legal.Languages_7; } /// diff --git a/PKHeX.Core/Util/RandUtil.cs b/PKHeX.Core/Util/RandUtil.cs index a71b9e047..645360857 100644 --- a/PKHeX.Core/Util/RandUtil.cs +++ b/PKHeX.Core/Util/RandUtil.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace PKHeX.Core { @@ -9,15 +10,21 @@ public static uint Rand32() { return (uint)Rand.Next(1 << 30) << 2 | (uint)Rand.Next(1 << 2); } - public static void Shuffle(T[] array) + + /// + /// Shuffles the order of items within a collection of items. + /// + /// Item type + /// Item collection + public static void Shuffle(IList items) { - int n = array.Length; + int n = items.Count; for (int i = 0; i < n; i++) { - int r = i + (int)(Rand.NextDouble() * (n - i)); - T t = array[r]; - array[r] = array[i]; - array[i] = t; + int r = i + Rand.Next(n-i); + T t = items[r]; + items[r] = items[i]; + items[i] = t; } } } diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index dc543eb46..086df03d3 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -779,11 +779,6 @@ private bool SetSuggestedMetLocation(bool silent = false) if (minlvl < level) minlvl = level; - if (pkm.VC1) - location = Legal.Transfer1; - else if (pkm.VC2) - location = Legal.Transfer2; - if (!silent) { var suggestion = new List { "Suggested:" }; @@ -814,7 +809,7 @@ private bool SetSuggestedMetLocation(bool silent = false) { pkm.OT_Memory = 2; pkm.OT_Affection = 0; - pkm.OT_Feeling = Util.Rand.Next(0, 9); + pkm.OT_Feeling = Util.Rand.Next(0, 10); pkm.OT_Intensity = 1; pkm.OT_TextVar = pkm.XY ? 43 : 27; // riverside road : battling spot }