diff --git a/PKHeX.Core/Game/Enums/Move.cs b/PKHeX.Core/Game/Enums/Move.cs index 41120aed8..da0c8b780 100644 --- a/PKHeX.Core/Game/Enums/Move.cs +++ b/PKHeX.Core/Game/Enums/Move.cs @@ -880,8 +880,8 @@ public enum Move AquaStep, RagingBull, MakeItRain, - _875, - _876, + Psyblade, + HydroSteam, Ruination, CollisionCourse, ElectroDrift, diff --git a/PKHeX.Core/Game/Enums/Species.cs b/PKHeX.Core/Game/Enums/Species.cs index 9340cca8f..4edd17b8e 100644 --- a/PKHeX.Core/Game/Enums/Species.cs +++ b/PKHeX.Core/Game/Enums/Species.cs @@ -1014,7 +1014,7 @@ public enum Species : ushort IronValiant, Koraidon, Miraidon, - _980, - _987, + WalkingWake, + IronLeaves, MAX_COUNT, } diff --git a/PKHeX.Core/Game/GameStrings/GeoLocation.cs b/PKHeX.Core/Game/GameStrings/GeoLocation.cs index 52fb9c06e..a5773cdce 100644 --- a/PKHeX.Core/Game/GameStrings/GeoLocation.cs +++ b/PKHeX.Core/Game/GameStrings/GeoLocation.cs @@ -8,7 +8,7 @@ namespace PKHeX.Core; public static class GeoLocation { private static readonly string[]?[] CountryList = GetCountryList(); - internal static readonly string[] lang_geo = { "ja", "en", "fr", "de", "it", "es", "zh", "ko", "zh2" }; + private static readonly string[] lang_geo = { "ja", "en", "fr", "de", "it", "es", "zh", "ko", "zh2" }; private static readonly string[]?[]?[] RegionList = new string[CountryList.Length][][]; /// @@ -58,7 +58,7 @@ private static string GetCountryName(byte country, int l) if ((uint)country >= CountryList.Length) return INVALID; var countryNames = CountryList[country]; - if (countryNames is not null && l < countryNames.Length) + if (countryNames is not null && (uint)l < countryNames.Length) return countryNames[l + 1]; return INVALID; } @@ -73,7 +73,7 @@ private static string GetRegionName(byte country, byte region, int l) if ((uint)region >= regionNames.Length) return INVALID; var localized = regionNames[region]; - if (localized is not null && l < localized.Length) + if (localized is not null && (uint)l < localized.Length) return localized[l + 1]; return INVALID; } diff --git a/PKHeX.Core/Legality/Areas/EncounterArea9.cs b/PKHeX.Core/Legality/Areas/EncounterArea9.cs index 2742add6e..93a5ecd29 100644 --- a/PKHeX.Core/Legality/Areas/EncounterArea9.cs +++ b/PKHeX.Core/Legality/Areas/EncounterArea9.cs @@ -60,7 +60,7 @@ public override IEnumerable GetMatchingSlots(PKM pk, EvoCriteria { if (slot.Species != evo.Species) continue; - if (slot.Form != evo.Form && slot.Species is not ((int)Species.Rotom or (int)Species.Deerling or (int)Species.Sawsbuck or (int)Species.Oricorio)) + if (slot.Form != evo.Form && !IsFormOkayWild(slot.Species, evo.Form)) break; if (slot.Gender != -1 && pk.Gender != slot.Gender) break; @@ -80,4 +80,13 @@ public override IEnumerable GetMatchingSlots(PKM pk, EvoCriteria } } } + + private static bool IsFormOkayWild(ushort species, byte form) => species switch + { + (int)Species.Rotom => true, + (int)Species.Deerling or (int)Species.Sawsbuck => true, + (int)Species.Scatterbug or (int)Species.Spewpa or (int)Species.Vivillon => form < Vivillon3DS.FancyFormID, // GO Postcard + (int)Species.Oricorio => true, + _ => false, + }; } diff --git a/PKHeX.Core/Legality/Breeding.cs b/PKHeX.Core/Legality/Breeding.cs index b3be27712..239db484e 100644 --- a/PKHeX.Core/Legality/Breeding.cs +++ b/PKHeX.Core/Legality/Breeding.cs @@ -191,8 +191,8 @@ public static bool CanHatchAsEgg(ushort species, byte form, EntityContext contex // Gen9 (int)Gimmighoul, (int)Gholdengo, - (int)GreatTusk, (int)BruteBonnet, (int)_980, (int)SandyShocks, (int)ScreamTail, (int)FlutterMane, (int)SlitherWing, (int)RoaringMoon, - (int)IronTreads, (int)_987, (int)IronMoth, (int)IronHands, (int)IronJugulis, (int)IronThorns, (int)IronBundle, (int)IronValiant, + (int)GreatTusk, (int)BruteBonnet, (int)WalkingWake, (int)SandyShocks, (int)ScreamTail, (int)FlutterMane, (int)SlitherWing, (int)RoaringMoon, + (int)IronTreads, (int)IronLeaves, (int)IronMoth, (int)IronHands, (int)IronJugulis, (int)IronThorns, (int)IronBundle, (int)IronValiant, (int)TingLu, (int)ChienPao, (int)WoChien, (int)ChiYu, (int)Koraidon, (int)Miraidon, }; diff --git a/PKHeX.Core/Legality/Encounters/Data/Live/EncounterServerDate.cs b/PKHeX.Core/Legality/Encounters/Data/Live/EncounterServerDate.cs index 29cc70426..96331ac10 100644 --- a/PKHeX.Core/Legality/Encounters/Data/Live/EncounterServerDate.cs +++ b/PKHeX.Core/Legality/Encounters/Data/Live/EncounterServerDate.cs @@ -108,5 +108,6 @@ public static bool IsValidDateWC9(WC9 card , DateOnly obtained) => (WC9Gifts.Tr {0001, (new(2022, 11, 17), Never)}, // PokéCenter Flabébé {0006, (new(2022, 12, 16), new(2023, 02, 01))}, // Jump Festa Gyarados {0501, (new(2023, 02, 16), new(2023, 02, 21))}, // Jiseok's Garganacl + {1513, (new(2023, 02, 27), new(2024, 03, 01))}, // Hisuian Zoroark DLC Purchase Gift }; } diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterDist9.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterDist9.cs index 78a6a6739..9df3ac224 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterDist9.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterDist9.cs @@ -14,6 +14,11 @@ public sealed record EncounterDist9 : EncounterStatic, ITeraRaid9 public byte Stars { get; private init; } public byte RandRate { get; private init; } // weight chance of this encounter + /// Indicates how the value is used, if at all. + public SizeType9 ScaleType { get; private init; } + /// Used only for == + public byte Scale { get; private init; } + public ushort RandRate0MinScarlet { get; private init; } public ushort RandRate0MinViolet { get; private init; } public ushort RandRate0TotalScarlet { get; private init; } @@ -149,7 +154,7 @@ public static EncounterDist9[] GetArray(ReadOnlySpan data) private EncounterDist9() : base(GameVersion.SV) { } - private const int SerializedSize = WeightStart + (sizeof(ushort) * 2 * 2 * 4); + private const int SerializedSize = WeightStart + (sizeof(ushort) * 2 * 2 * 4) + 2; private const int WeightStart = 0x14; private static EncounterDist9 ReadEncounter(ReadOnlySpan data) => new() { @@ -189,6 +194,9 @@ private static EncounterDist9 ReadEncounter(ReadOnlySpan data) => new() RandRate3MinViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 13))..]), RandRate3TotalScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 14))..]), RandRate3TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 15))..]), + + ScaleType = (SizeType9)data[0x34], + Scale = data[0x35], }; private static AbilityPermission GetAbility(byte b) => b switch @@ -238,7 +246,7 @@ protected override bool IsMatchPartial(PKM pk) return true; var pi = PersonalTable.SV.GetFormEntry(Species, Form); - var param = new GenerateParam9(Species, pi.Gender, FlawlessIVCount, 1, 0, 0, 0, 0, Ability, Shiny); + var param = new GenerateParam9(Species, pi.Gender, FlawlessIVCount, 1, 0, 0, ScaleType, Scale, Ability, Shiny); if (!Encounter9RNG.IsMatch(pk, param, seed)) return true; return base.IsMatchPartial(pk); @@ -259,7 +267,7 @@ protected override void SetPINGA(PKM pk, EncounterCriteria criteria) const byte undefinedSize = 0; var pi = PersonalTable.SV.GetFormEntry(Species, Form); var param = new GenerateParam9(Species, pi.Gender, FlawlessIVCount, rollCount, - undefinedSize, undefinedSize, undefinedSize, undefinedSize, + undefinedSize, undefinedSize, ScaleType, Scale, Ability, Shiny); var init = Util.Rand.Rand64(); diff --git a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterMight9.cs b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterMight9.cs index c3d3f2e01..9f5d1ca1a 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterMight9.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterStatic/EncounterMight9.cs @@ -175,25 +175,25 @@ private static EncounterMight9 ReadEncounter(ReadOnlySpan data) => new() Stars = data[0x12], RandRate = data[0x13], - RandRate0MinScarlet = ReadUInt16LittleEndian(data[WeightStart..]), - RandRate0MinViolet = ReadUInt16LittleEndian(data[(WeightStart + sizeof(ushort))..]), + RandRate0MinScarlet = ReadUInt16LittleEndian(data[WeightStart..]), + RandRate0MinViolet = ReadUInt16LittleEndian(data[(WeightStart + sizeof(ushort))..]), RandRate0TotalScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 2))..]), - RandRate0TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 3))..]), + RandRate0TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 3))..]), - RandRate1MinScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 4))..]), - RandRate1MinViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 5))..]), + RandRate1MinScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 4))..]), + RandRate1MinViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 5))..]), RandRate1TotalScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 6))..]), - RandRate1TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 7))..]), + RandRate1TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 7))..]), - RandRate2MinScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 8))..]), - RandRate2MinViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 9))..]), + RandRate2MinScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 8))..]), + RandRate2MinViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 9))..]), RandRate2TotalScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 10))..]), - RandRate2TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 11))..]), + RandRate2TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 11))..]), - RandRate3MinScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 12))..]), - RandRate3MinViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 13))..]), + RandRate3MinScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 12))..]), + RandRate3MinViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 13))..]), RandRate3TotalScarlet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 14))..]), - RandRate3TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 15))..]), + RandRate3TotalViolet = ReadUInt16LittleEndian(data[(WeightStart + (sizeof(ushort) * 15))..]), Nature = (Nature)data[0x34], IVs = new IndividualValueSet((sbyte)data[0x35], (sbyte)data[0x36], (sbyte)data[0x37], (sbyte)data[0x38], (sbyte)data[0x39], (sbyte)data[0x3A], data[0x3B]), diff --git a/PKHeX.Core/Legality/Tables/Tables9.cs b/PKHeX.Core/Legality/Tables/Tables9.cs index e9f14a6ab..e3ad0b324 100644 --- a/PKHeX.Core/Legality/Tables/Tables9.cs +++ b/PKHeX.Core/Legality/Tables/Tables9.cs @@ -4,7 +4,7 @@ namespace PKHeX.Core; public static partial class Legal { - internal const int MaxSpeciesID_9 = (int)Species.Miraidon; + internal const int MaxSpeciesID_9 = (int)Species.IronLeaves; internal const int MaxMoveID_9 = (int)Move.MagicalTorque; internal const int MaxItemID_9 = 2400; // Yellow Dish internal const int MaxAbilityID_9 = (int)Ability.MyceliumMight; diff --git a/PKHeX.Core/Legality/Verifiers/MarkVerifier.cs b/PKHeX.Core/Legality/Verifiers/MarkVerifier.cs index 1bfa02356..ee3914b19 100644 --- a/PKHeX.Core/Legality/Verifiers/MarkVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/MarkVerifier.cs @@ -22,6 +22,10 @@ public override void Verify(LegalityAnalysis data) VerifyMarksPresent(data, m); VerifyAffixedRibbonMark(data, m); + + // temp logic to catch this case; in the future we will need more robust checks for encounters + if (data.EncounterMatch is WC9 { RibbonMarkCharismatic: true} && pk is IRibbonSetMark8 { RibbonMarkCharismatic: false}) + data.AddLine(GetInvalid(string.Format(LRibbonMarkingFInvalid_0, GetRibbonNameSafe(MarkCharismatic)))); } private void VerifyNoMarksPresent(LegalityAnalysis data, IRibbonIndex m) diff --git a/PKHeX.Core/Legality/Verifiers/MiscVerifier.cs b/PKHeX.Core/Legality/Verifiers/MiscVerifier.cs index eecc8faa5..c20ad483d 100644 --- a/PKHeX.Core/Legality/Verifiers/MiscVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/MiscVerifier.cs @@ -192,7 +192,6 @@ private static bool IsObedienceLevelValid(PKM pk, byte current, int expectObey) (int)Species.Sneasel | (1 << 11), // Sneasel-1 (int)Species.Oshawott, // Oshawott (int)Species.Basculin | (2 << 11), // Basculin-2 - (int)Species.Zorua | (1 << 11), // Zorua-1 (int)Species.Chespin, // Chespin (int)Species.Fennekin, // Fennekin (int)Species.Carbink, // Carbink diff --git a/PKHeX.Core/Legality/Verifiers/Ribbons/MarkRules.cs b/PKHeX.Core/Legality/Verifiers/Ribbons/MarkRules.cs index 58c37922c..4bb006c69 100644 --- a/PKHeX.Core/Legality/Verifiers/Ribbons/MarkRules.cs +++ b/PKHeX.Core/Legality/Verifiers/Ribbons/MarkRules.cs @@ -34,6 +34,7 @@ public static bool IsEncounterMarkLost(LegalityAnalysis data) { EncounterSlot8 or EncounterStatic8 { Gift: false, ScriptedNoMarks: false } => IsMarkAllowedSpecific8(mark, pk, enc), EncounterSlot9 s => IsMarkAllowedSpecific9(mark, s), + WC9 wc9 => wc9.GetRibbonIndex(mark), _ => false, }; diff --git a/PKHeX.Core/Moves/MoveInfo9.cs b/PKHeX.Core/Moves/MoveInfo9.cs index 15c860ab9..bf0737bbe 100644 --- a/PKHeX.Core/Moves/MoveInfo9.cs +++ b/PKHeX.Core/Moves/MoveInfo9.cs @@ -53,7 +53,7 @@ internal static class MoveInfo9 10, 10, 05, 20, 20, 10, 10, 05, 05, 05, 40, 10, 20, 10, 10, 10, 10, 05, 05, 15, 05, 10, 10, 10, 05, 05, 05, 15, 10, 10, 15, 05, 10, 10, 10, 05, 10, 10, 05, 10, 10, 10, 10, 10, 15, 15, 10, 10, 10, 05, 15, 10, 10, 10, 10, 10, 10, 15, 15, 05, - 10, 15, 05, 01, 15, 10, 15, 10, 10, 10, 10, 10, 10, 10, 05, 35, 35, 10, 05, 05, + 10, 15, 05, 01, 15, 10, 15, 10, 10, 10, 10, 10, 10, 10, 05, 15, 15, 10, 05, 05, 10, 10, 10, 10, 20, 20, 20, 05, 10, 10, 05, 10, 05, 05, 10, 20, 10, 10, 10, 10, 10, }; diff --git a/PKHeX.Core/Resources/byte/eggmove/eggmove_sv.pkl b/PKHeX.Core/Resources/byte/eggmove/eggmove_sv.pkl index cda14e02d..3c1b8bfb3 100644 Binary files a/PKHeX.Core/Resources/byte/eggmove/eggmove_sv.pkl and b/PKHeX.Core/Resources/byte/eggmove/eggmove_sv.pkl differ diff --git a/PKHeX.Core/Resources/byte/evolve/evos_sv.pkl b/PKHeX.Core/Resources/byte/evolve/evos_sv.pkl index 1344dbdc5..e1ecb6326 100644 Binary files a/PKHeX.Core/Resources/byte/evolve/evos_sv.pkl and b/PKHeX.Core/Resources/byte/evolve/evos_sv.pkl differ diff --git a/PKHeX.Core/Resources/byte/levelup/lvlmove_sv.pkl b/PKHeX.Core/Resources/byte/levelup/lvlmove_sv.pkl index f80308477..00b6e03bc 100644 Binary files a/PKHeX.Core/Resources/byte/levelup/lvlmove_sv.pkl and b/PKHeX.Core/Resources/byte/levelup/lvlmove_sv.pkl differ diff --git a/PKHeX.Core/Resources/byte/personal/personal_sv b/PKHeX.Core/Resources/byte/personal/personal_sv index a9f471e57..1be38dad4 100644 Binary files a/PKHeX.Core/Resources/byte/personal/personal_sv and b/PKHeX.Core/Resources/byte/personal/personal_sv differ diff --git a/PKHeX.Core/Resources/byte/personal/reminder_sv.pkl b/PKHeX.Core/Resources/byte/personal/reminder_sv.pkl index 48c9c599e..09389f093 100644 Binary files a/PKHeX.Core/Resources/byte/personal/reminder_sv.pkl and b/PKHeX.Core/Resources/byte/personal/reminder_sv.pkl differ diff --git a/PKHeX.Core/Resources/legality/mgdb/wc9.pkl b/PKHeX.Core/Resources/legality/mgdb/wc9.pkl index 3d2c2993f..300fd1741 100644 Binary files a/PKHeX.Core/Resources/legality/mgdb/wc9.pkl and b/PKHeX.Core/Resources/legality/mgdb/wc9.pkl differ diff --git a/PKHeX.Core/Resources/legality/wild/Gen9/encounter_dist_paldea.pkl b/PKHeX.Core/Resources/legality/wild/Gen9/encounter_dist_paldea.pkl index 6b1f5db61..4f768840c 100644 Binary files a/PKHeX.Core/Resources/legality/wild/Gen9/encounter_dist_paldea.pkl and b/PKHeX.Core/Resources/legality/wild/Gen9/encounter_dist_paldea.pkl differ diff --git a/PKHeX.Core/Resources/text/other/de/text_Moves_de.txt b/PKHeX.Core/Resources/text/other/de/text_Moves_de.txt index bcd45c417..dd25857c2 100644 --- a/PKHeX.Core/Resources/text/other/de/text_Moves_de.txt +++ b/PKHeX.Core/Resources/text/other/de/text_Moves_de.txt @@ -873,8 +873,8 @@ Loderlied Wogentanz Rasender Stier Goldrausch -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +Psychoschneide +Hydrodampf Verderben Kollisionskurs Blitztour diff --git a/PKHeX.Core/Resources/text/other/de/text_Species_de.txt b/PKHeX.Core/Resources/text/other/de/text_Species_de.txt index 5a84a75c2..10e19dde1 100644 --- a/PKHeX.Core/Resources/text/other/de/text_Species_de.txt +++ b/PKHeX.Core/Resources/text/other/de/text_Species_de.txt @@ -1007,5 +1007,5 @@ Donnersichel Eisenkrieger Koraidon Miraidon -AKETUBAN -BKETUBAN \ No newline at end of file +Windewoge +Eisenblatt \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/en/text_Moves_en.txt b/PKHeX.Core/Resources/text/other/en/text_Moves_en.txt index 9ec74bfa8..700594a24 100644 --- a/PKHeX.Core/Resources/text/other/en/text_Moves_en.txt +++ b/PKHeX.Core/Resources/text/other/en/text_Moves_en.txt @@ -873,8 +873,8 @@ Torch Song Aqua Step Raging Bull Make It Rain -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +Psyblade +Hydro Steam Ruination Collision Course Electro Drift diff --git a/PKHeX.Core/Resources/text/other/en/text_Species_en.txt b/PKHeX.Core/Resources/text/other/en/text_Species_en.txt index 82b95aea2..ccd56ae83 100644 --- a/PKHeX.Core/Resources/text/other/en/text_Species_en.txt +++ b/PKHeX.Core/Resources/text/other/en/text_Species_en.txt @@ -1007,5 +1007,5 @@ Roaring Moon Iron Valiant Koraidon Miraidon -AKETUBAN -BKETUBAN \ No newline at end of file +Walking Wake +Iron Leaves \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/es/text_Moves_es.txt b/PKHeX.Core/Resources/text/other/es/text_Moves_es.txt index 435537753..1d2dded5f 100644 --- a/PKHeX.Core/Resources/text/other/es/text_Moves_es.txt +++ b/PKHeX.Core/Resources/text/other/es/text_Moves_es.txt @@ -873,8 +873,8 @@ Canto Ardiente Danza Acuática Furia Taurina Fiebre Dorada -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +Psicohojas +Hidrovapor Calamidad Nitrochoque Electroderrape diff --git a/PKHeX.Core/Resources/text/other/es/text_Species_es.txt b/PKHeX.Core/Resources/text/other/es/text_Species_es.txt index 4e73156d7..012aff445 100644 --- a/PKHeX.Core/Resources/text/other/es/text_Species_es.txt +++ b/PKHeX.Core/Resources/text/other/es/text_Species_es.txt @@ -1007,5 +1007,5 @@ Bramaluna Ferropaladín Koraidon Miraidon -AKETUBAN -BKETUBAN \ No newline at end of file +Ondulagua +Ferroverdor \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/fr/text_Moves_fr.txt b/PKHeX.Core/Resources/text/other/fr/text_Moves_fr.txt index dfff18bd8..c7999a611 100644 --- a/PKHeX.Core/Resources/text/other/fr/text_Moves_fr.txt +++ b/PKHeX.Core/Resources/text/other/fr/text_Moves_fr.txt @@ -873,8 +873,8 @@ Chant Flamboyant Danse Aquatique Taurogne Ruée d’Or -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +Lame Psychique +Hydrovapeur Cataclysme Nitro Crash Turbo Volt diff --git a/PKHeX.Core/Resources/text/other/fr/text_Species_fr.txt b/PKHeX.Core/Resources/text/other/fr/text_Species_fr.txt index e0592624d..527d82138 100644 --- a/PKHeX.Core/Resources/text/other/fr/text_Species_fr.txt +++ b/PKHeX.Core/Resources/text/other/fr/text_Species_fr.txt @@ -1007,5 +1007,5 @@ Rugit-Lune Garde-de-Fer Koraidon Miraidon -AKETUBAN -BKETUBAN \ No newline at end of file +Serpente-Eau +Vert-de-Fer \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/it/text_Moves_it.txt b/PKHeX.Core/Resources/text/other/it/text_Moves_it.txt index d1788a80d..f4c053c8f 100644 --- a/PKHeX.Core/Resources/text/other/it/text_Moves_it.txt +++ b/PKHeX.Core/Resources/text/other/it/text_Moves_it.txt @@ -873,8 +873,8 @@ Canzone Ardente Idroballetto Scatenatoro Corsa all’Oro -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +Psicolama +Idrovapore Catastrofe Turboschianto Fulmiscatto diff --git a/PKHeX.Core/Resources/text/other/it/text_Species_it.txt b/PKHeX.Core/Resources/text/other/it/text_Species_it.txt index 8de1bfe70..315e815c3 100644 --- a/PKHeX.Core/Resources/text/other/it/text_Species_it.txt +++ b/PKHeX.Core/Resources/text/other/it/text_Species_it.txt @@ -1007,5 +1007,5 @@ Lunaruggente Eroeferreo Koraidon Miraidon -AKETUBAN -BKETUBAN \ No newline at end of file +Acquecrespe +Fogliaferrea \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/ja/text_Moves_ja.txt b/PKHeX.Core/Resources/text/other/ja/text_Moves_ja.txt index 3f584937a..d9bf9d6c1 100644 --- a/PKHeX.Core/Resources/text/other/ja/text_Moves_ja.txt +++ b/PKHeX.Core/Resources/text/other/ja/text_Moves_ja.txt @@ -873,8 +873,8 @@ アクアステップ レイジングブル ゴールドラッシュ -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +サイコブレイド +ハイドロスチーム カタストロフィ アクセルブレイク イナズマドライブ diff --git a/PKHeX.Core/Resources/text/other/ja/text_Species_ja.txt b/PKHeX.Core/Resources/text/other/ja/text_Species_ja.txt index 6a4fbf1bc..53a0efbe0 100644 --- a/PKHeX.Core/Resources/text/other/ja/text_Species_ja.txt +++ b/PKHeX.Core/Resources/text/other/ja/text_Species_ja.txt @@ -1007,5 +1007,5 @@ テツノブジン コライドン ミライドン -AKETUBAN -BKETUBAN \ No newline at end of file +ウネルミナモ +テツノイサハ \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/ko/text_Moves_ko.txt b/PKHeX.Core/Resources/text/other/ko/text_Moves_ko.txt index 8f6b51780..7f055c00a 100644 --- a/PKHeX.Core/Resources/text/other/ko/text_Moves_ko.txt +++ b/PKHeX.Core/Resources/text/other/ko/text_Moves_ko.txt @@ -873,8 +873,8 @@ G의힘 아쿠아스텝 레이징불 골드러시 -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +사이코블레이드 +하이드로스팀 카타스트로피 액셀브레이크 라이트닝드라이브 diff --git a/PKHeX.Core/Resources/text/other/ko/text_Species_ko.txt b/PKHeX.Core/Resources/text/other/ko/text_Species_ko.txt index ad53e8ab2..ea8e43e15 100644 --- a/PKHeX.Core/Resources/text/other/ko/text_Species_ko.txt +++ b/PKHeX.Core/Resources/text/other/ko/text_Species_ko.txt @@ -1007,5 +1007,5 @@ 무쇠무인 코라이돈 미라이돈 -AKETUBAN -BKETUBAN \ No newline at end of file +굽이치는물결 +무쇠잎새 \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/zh/text_Moves_zh.txt b/PKHeX.Core/Resources/text/other/zh/text_Moves_zh.txt index 7cade12c2..10e028f2f 100644 --- a/PKHeX.Core/Resources/text/other/zh/text_Moves_zh.txt +++ b/PKHeX.Core/Resources/text/other/zh/text_Moves_zh.txt @@ -873,8 +873,8 @@ 流水旋舞 怒牛 淘金潮 -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +精神剑 +水蒸气 大灾难 全开猛撞 闪电猛冲 diff --git a/PKHeX.Core/Resources/text/other/zh/text_Moves_zh2.txt b/PKHeX.Core/Resources/text/other/zh/text_Moves_zh2.txt index 804c489a9..1215dbb75 100644 --- a/PKHeX.Core/Resources/text/other/zh/text_Moves_zh2.txt +++ b/PKHeX.Core/Resources/text/other/zh/text_Moves_zh2.txt @@ -873,8 +873,8 @@ 流水旋舞 怒牛 淘金潮 -WAZA_SAIKOBUREIDO -WAZA_HAIDOROSUTIIMU +精神劍 +水蒸氣 大災難 全開猛撞 閃電猛衝 diff --git a/PKHeX.Core/Resources/text/other/zh/text_Species_zh.txt b/PKHeX.Core/Resources/text/other/zh/text_Species_zh.txt index e827c061c..d1f6ad4c1 100644 --- a/PKHeX.Core/Resources/text/other/zh/text_Species_zh.txt +++ b/PKHeX.Core/Resources/text/other/zh/text_Species_zh.txt @@ -1007,5 +1007,5 @@ 铁武者 故勒顿 密勒顿 -AKETUBAN -BKETUBAN \ No newline at end of file +波荡水 +铁斑叶 \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/zh/text_Species_zh2.txt b/PKHeX.Core/Resources/text/other/zh/text_Species_zh2.txt index 9569cd04b..565aef03d 100644 --- a/PKHeX.Core/Resources/text/other/zh/text_Species_zh2.txt +++ b/PKHeX.Core/Resources/text/other/zh/text_Species_zh2.txt @@ -1007,5 +1007,5 @@ 鐵武者 故勒頓 密勒頓 -AKETUBAN -BKETUBAN \ No newline at end of file +波盪水 +鐵斑葉 \ No newline at end of file diff --git a/PKHeX.Core/Saves/Access/SaveBlockAccessor9SV.cs b/PKHeX.Core/Saves/Access/SaveBlockAccessor9SV.cs index b01acabd1..901efa0d0 100644 --- a/PKHeX.Core/Saves/Access/SaveBlockAccessor9SV.cs +++ b/PKHeX.Core/Saves/Access/SaveBlockAccessor9SV.cs @@ -566,6 +566,10 @@ public SaveBlockAccessor9SV(SAV9SV sav) private const uint FSYS_RAID_DIFFICTLTY6_SURVEY = 0xAD1DC231; private const uint FSYS_NETCONTENTS_OFF = 0x9AB093F2; + private const uint FSYS_VIVILLON = 0x22F70BCF; // real name todo + private const uint FSYS_GO_LINK_ENABLED = 0x3ABC21E3; // real name todo + private const uint KGoTransfer = 0x7EE0A576; + #endregion #region FEVT diff --git a/PKHeX.Core/Saves/Util/SaveUtil.cs b/PKHeX.Core/Saves/Util/SaveUtil.cs index 0a4f7d965..02c420e00 100644 --- a/PKHeX.Core/Saves/Util/SaveUtil.cs +++ b/PKHeX.Core/Saves/Util/SaveUtil.cs @@ -26,6 +26,14 @@ public static class SaveUtil public const int SIZE_G9_1Ab = 0x31A2DD; // 1.0.0 -> 1.0.1 -> 1.0.1 after multiplayer -> 1.1.0 public const int SIZE_G9_2 = 0x31A2D0; // 1.0.0 -> 1.1.0 + // 1.2.0: add 0x2C9F; clean upgrade (1.1.0->1.2.0 is same as *1.2.0) + public const int SIZE_G9_3A0 = 0x31CF7C; // 1.0.0 -> 1.0.1 -> 1.1.0 -> 1.2.0 AM + public const int SIZE_G9_3A1 = 0x31CA6F; // 1.0.1 -> 1.1.0 -> 1.2.0 AM + public const int SIZE_G9_3B0 = SIZE_G9_3A0 - 0xD; // BM + public const int SIZE_G9_3B1 = SIZE_G9_3A1 - 0xD; // BM + public const int SIZE_G9_3G0 = SIZE_G9_3A0 + 0x5; // GO + public const int SIZE_G9_3G1 = SIZE_G9_3A1 + 0x5; // GO + public const int SIZE_G8LA = 0x136DDE; public const int SIZE_G8LA_1 = 0x13AD06; @@ -112,6 +120,10 @@ public static class SaveUtil SIZE_G9_1A, SIZE_G9_1Aa, SIZE_G9_1Ba, SIZE_G9_1Ab, SIZE_G9_2, SIZE_G9_3, + + SIZE_G9_3A0, SIZE_G9_3A1, + SIZE_G9_3B0, SIZE_G9_3B1, + SIZE_G9_3G0, SIZE_G9_3G1, }; private static readonly HashSet SizesSWSH = new() diff --git a/PKHeX.Drawing.PokeSprite/Properties/Resources.Designer.cs b/PKHeX.Drawing.PokeSprite/Properties/Resources.Designer.cs index 4b31c2b0c..9447d78e9 100644 --- a/PKHeX.Drawing.PokeSprite/Properties/Resources.Designer.cs +++ b/PKHeX.Drawing.PokeSprite/Properties/Resources.Designer.cs @@ -640,6 +640,16 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap a_1009 { + get { + object obj = ResourceManager.GetObject("a_1009", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -660,6 +670,16 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap a_1010 { + get { + object obj = ResourceManager.GetObject("a_1010", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/PKHeX.Drawing.PokeSprite/Properties/Resources.resx b/PKHeX.Drawing.PokeSprite/Properties/Resources.resx index 560b6d2b4..8b979290a 100644 --- a/PKHeX.Drawing.PokeSprite/Properties/Resources.resx +++ b/PKHeX.Drawing.PokeSprite/Properties/Resources.resx @@ -1357,12 +1357,18 @@ ..\Resources\img\Artwork Pokemon Sprites\a_1008-4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\img\Artwork Pokemon Sprites\a_1009.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\img\Artwork Pokemon Sprites\a_100-1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\img\Artwork Pokemon Sprites\a_101.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\img\Artwork Pokemon Sprites\a_1010.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\img\Artwork Pokemon Sprites\a_101-1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/PKHeX.Drawing.PokeSprite/Resources/img/Artwork Pokemon Sprites/a_1009.png b/PKHeX.Drawing.PokeSprite/Resources/img/Artwork Pokemon Sprites/a_1009.png new file mode 100644 index 000000000..da088195e Binary files /dev/null and b/PKHeX.Drawing.PokeSprite/Resources/img/Artwork Pokemon Sprites/a_1009.png differ diff --git a/PKHeX.Drawing.PokeSprite/Resources/img/Artwork Pokemon Sprites/a_1010.png b/PKHeX.Drawing.PokeSprite/Resources/img/Artwork Pokemon Sprites/a_1010.png new file mode 100644 index 000000000..6b640d50c Binary files /dev/null and b/PKHeX.Drawing.PokeSprite/Resources/img/Artwork Pokemon Sprites/a_1010.png differ diff --git a/Tests/PKHeX.Core.Tests/PKM/SpeciesConverterTests.cs b/Tests/PKHeX.Core.Tests/PKM/SpeciesConverterTests.cs index 95ad32fa6..93c588637 100644 --- a/Tests/PKHeX.Core.Tests/PKM/SpeciesConverterTests.cs +++ b/Tests/PKHeX.Core.Tests/PKM/SpeciesConverterTests.cs @@ -37,14 +37,14 @@ public class SpeciesConverterTests [Theory] [InlineData(0)] [InlineData(934, Palafin)] - [InlineData(980, _980)] - [InlineData(987, _987)] + [InlineData(980, WalkingWake)] + [InlineData(987, IronLeaves)] public void GetNational9(ushort raw, Species national = 0) => ((Species)SpeciesConverter.GetNational9(raw)).Should().Be(national); [Theory] [InlineData(0)] [InlineData(934, Palafin)] - [InlineData(980, _980)] - [InlineData(987, _987)] + [InlineData(980, WalkingWake)] + [InlineData(987, IronLeaves)] public void GetInternal9(ushort raw, Species national = 0) => SpeciesConverter.GetInternal9((ushort)national).Should().Be(raw); }