diff --git a/PKHeX.Core/Editing/BattleTemplate/Showdown/ShowdownSet.cs b/PKHeX.Core/Editing/BattleTemplate/Showdown/ShowdownSet.cs index b05c2b32e..c8249051f 100644 --- a/PKHeX.Core/Editing/BattleTemplate/Showdown/ShowdownSet.cs +++ b/PKHeX.Core/Editing/BattleTemplate/Showdown/ShowdownSet.cs @@ -623,8 +623,8 @@ private void AddEVs(List result, in BattleTemplateExportSettings setting var nameEVs = cfg.GetStatDisplay(settings.StatsEVs); var line = token switch { - BattleTemplateToken.EVsWithNature => GetStringStatsNatureAmp(EVs, 0, nameEVs, Nature), - BattleTemplateToken.EVsAppendNature => GetStringStatsNatureAmp(EVs, 0, nameEVs, Nature), + BattleTemplateToken.EVsWithNature => GetStringStatsStatAlignmentAmp(EVs, 0, nameEVs, Nature), + BattleTemplateToken.EVsAppendNature => GetStringStatsStatAlignmentAmp(EVs, 0, nameEVs, Nature), _ => GetStringStats(EVs, 0, nameEVs), }; if (token is BattleTemplateToken.EVsAppendNature && Nature.IsFixed) @@ -654,7 +654,7 @@ private static string GetAbilityHeldItem(GameStrings strings, int ability, int i /// /// Appends the nature amplification to the stat values, if not a neutral nature. - public static string GetStringStatsNatureAmp(ReadOnlySpan stats, T ignoreValue, StatDisplayConfig statNames, Nature nature) where T : IEquatable + public static string GetStringStatsStatAlignmentAmp(ReadOnlySpan stats, T ignoreValue, StatDisplayConfig statNames, Nature nature) where T : IEquatable { var (plus, minus) = nature.GetNatureModification(); if (plus == minus) @@ -806,7 +806,7 @@ public ShowdownSet(PKM pk, BattleTemplateLocalization? localization = null) if (Moves.Contains((ushort)Move.HiddenPower)) HiddenPowerType = (sbyte)HiddenPower.GetType(IVs, Context); - Nature = pk.StatNature; + Nature = pk.StatAlignment; Gender = pk.Gender < 2 ? pk.Gender : (byte)2; Friendship = pk.CurrentFriendship; Level = pk.CurrentLevel; diff --git a/PKHeX.Core/Editing/Bulk/Entity/BatchMods.cs b/PKHeX.Core/Editing/Bulk/Entity/BatchMods.cs index 9db627c63..67830b48c 100644 --- a/PKHeX.Core/Editing/Bulk/Entity/BatchMods.cs +++ b/PKHeX.Core/Editing/Bulk/Entity/BatchMods.cs @@ -28,8 +28,8 @@ public static class BatchMods new TypeSuggestion(nameof(PKM.EggMetDate), p => p.EggMetDate = p.MetDate), new TypeSuggestion(nameof(PKM.MetDate), p => p.MetDate = p.EggMetDate), - new TypeSuggestion(nameof(PKM.Nature), p => p.Format >= 8, p => p.Nature = p.StatNature), - new TypeSuggestion(nameof(PKM.StatNature), p => p.Format >= 8, p => p.StatNature = p.Nature), + new TypeSuggestion(nameof(PKM.Nature), p => p.Format >= 8, p => p.Nature = p.StatAlignment), + new TypeSuggestion(nameof(PKM.StatAlignment), p => p.Format >= 8, p => p.StatAlignment = p.Nature), new TypeSuggestion(nameof(PKM.Stats), p => p.ResetPartyStats()), new TypeSuggestion(nameof(PKM.Ball), p => BallApplicator.ApplyBallLegalByColor(p)), new TypeSuggestion(nameof(PKM.Heal), p => p.Heal()), diff --git a/PKHeX.Core/Editing/CommonEdits.cs b/PKHeX.Core/Editing/CommonEdits.cs index 5856cfbd4..3dd887990 100644 --- a/PKHeX.Core/Editing/CommonEdits.cs +++ b/PKHeX.Core/Editing/CommonEdits.cs @@ -13,7 +13,7 @@ public static class CommonEdits public static bool ShowdownSetIVMarkings { get; set; } = true; /// - /// Setting which causes the to the in Gen8+ formats. + /// Setting which causes the to the in Gen8+ formats. /// public static bool ShowdownSetBehaviorNature { get; set; } @@ -144,7 +144,7 @@ public void SetNature(Nature nature) var format = pk.Format; if (format >= 8) - pk.StatNature = nature; + pk.StatAlignment = nature; else if (format is 3 or 4) pk.SetPIDNature(nature); else @@ -250,7 +250,7 @@ public void ApplySetDetails(IBattleTemplate set) s.SetMoveShopFlags(set.Moves, pk); if (ShowdownSetBehaviorNature && pk.Format >= 8) - pk.Nature = pk.StatNature; + pk.Nature = pk.StatAlignment; var legal = new LegalityAnalysis(pk); if (pk is ITechRecord t) diff --git a/PKHeX.Core/Editing/NatureAmp.cs b/PKHeX.Core/Editing/NatureAmp.cs index 486ef706b..c2af8dee1 100644 --- a/PKHeX.Core/Editing/NatureAmp.cs +++ b/PKHeX.Core/Editing/NatureAmp.cs @@ -13,7 +13,7 @@ public static class NatureAmp /// /// Mutate the nature amp indexes to match the request /// - /// Stat Index to mutate + /// Stat Index to mutate, internal order /// Current nature to derive the current amps from /// New nature value public Nature GetNewNature(int statIndex, Nature currentNature) @@ -26,6 +26,9 @@ public Nature GetNewNature(int statIndex, Nature currentNature) return type.GetNewNature(statIndex, up, dn); } + /// Stat Index to mutate, internal order + /// Current increased stat index, internal order + /// Current decreased stat index, internal order /// public Nature GetNewNature(int statIndex, int up, int dn) { @@ -54,6 +57,7 @@ public Nature GetNewNature(int statIndex, int up, int dn) /// /// Decompose the nature to the two stat indexes that are modified /// + /// Tuple containing the increased and decreased stat indexes, internal order public (int up, int dn) GetNatureModification() { var up = ((byte)nature / 5); @@ -71,8 +75,8 @@ public bool IsNeutralOrInvalid() /// /// Checks if the nature is out of range or the stat amplifications are not neutral. /// - /// Increased stat - /// Decreased stat + /// Increased stat, internal order + /// Decreased stat, internal order /// True if nature modification values are equal or the Nature is out of range. public bool IsNeutralOrInvalid(int up, int dn) { @@ -83,7 +87,7 @@ public bool IsNeutralOrInvalid(int up, int dn) /// Updates stats according to the specified nature. /// /// Current stats to amplify if appropriate - public void ModifyStatsForNature(Span stats) + public void ModifyStatsForAlignment(Span stats) { var (up, dn) = nature.GetNatureModification(); if (nature.IsNeutralOrInvalid(up, dn)) @@ -99,8 +103,8 @@ public void ModifyStatsForNature(Span stats) /// /// Recombine the stat amps into a nature value. /// - /// Increased stat - /// Decreased stat + /// Increased stat, internal order + /// Decreased stat, internal order /// Nature public static Nature CreateNatureFromAmps(int up, int dn) { @@ -110,7 +114,7 @@ public static Nature CreateNatureFromAmps(int up, int dn) } /// - /// Nature Amplification Table + /// Nature / Stat Alignment Amplification Table, speed last (visual order). /// /// -1 is 90%, 0 is 100%, 1 is 110%. public static ReadOnlySpan Table => @@ -145,6 +149,13 @@ public static Nature CreateNatureFromAmps(int up, int dn) private const byte NatureCount = 25; private const int AmpWidth = 5; + /// + /// Amplify the stat according to the nature. If the nature is out of range, it will be treated as neutral. + /// + /// Nature to use for amplification + /// Stat index to amplify (0-4), visual index + /// Initial stat value + /// Amplified stat value public static int AmplifyStat(Nature nature, int index, int initial) => GetNatureAmp(nature, index) switch { 1 => 110 * initial / 100, // 110% @@ -152,6 +163,12 @@ public static Nature CreateNatureFromAmps(int up, int dn) _ => initial, }; + /// + /// Get the nature amp for the specified stat index. If the nature is out of range, it will be treated as neutral. + /// + /// Nature to use for amplification + /// Stat index to amplify (0-4), visual index + /// Nature amp value: 1 for 110%, -1 for 90%, 0 for 100%. private static sbyte GetNatureAmp(Nature nature, int index) { if ((uint)nature >= NatureCount) @@ -160,6 +177,11 @@ private static sbyte GetNatureAmp(Nature nature, int index) return amps[index]; } + /// + /// Get the nature amps for all stats. If the nature is out of range, it will be treated as neutral. + /// + /// Nature to use for amplification + /// ReadOnlySpan of stat amps for all stats (visual order) public static ReadOnlySpan GetAmps(Nature nature) { if ((uint)nature >= NatureCount) diff --git a/PKHeX.Core/Editing/PKM/EntitySummary.cs b/PKHeX.Core/Editing/PKM/EntitySummary.cs index e1efd943e..d51a423af 100644 --- a/PKHeX.Core/Editing/PKM/EntitySummary.cs +++ b/PKHeX.Core/Editing/PKM/EntitySummary.cs @@ -19,7 +19,7 @@ public class EntitySummary : IFatefulEncounterReadOnly // do NOT seal, allow inh public virtual string Position => "???"; public string Nickname => Entity.Nickname; public string Species => Get(Strings.specieslist, Entity.Species); - public string Nature => Get(Strings.natures, (byte)Entity.StatNature); + public string Nature => Get(Strings.natures, (byte)Entity.StatAlignment); public string Gender => Get(GenderSymbols, Entity.Gender); public string ESV => Entity.PSV.ToString("0000"); public string HP_Type => GetSpan(Strings.HiddenPowerTypes, Entity.HPType); diff --git a/PKHeX.Core/Editing/Program/Settings/SetImportSettings.cs b/PKHeX.Core/Editing/Program/Settings/SetImportSettings.cs index f49e3f793..b5f3309a3 100644 --- a/PKHeX.Core/Editing/Program/Settings/SetImportSettings.cs +++ b/PKHeX.Core/Editing/Program/Settings/SetImportSettings.cs @@ -2,8 +2,9 @@ namespace PKHeX.Core; public sealed class SetImportSettings { - [LocalizedDescription("Apply StatNature to Nature on Import")] - public bool ApplyNature { get; set; } = true; + [LocalizedDescription("Apply Stat Alignment to Nature on Import")] + public bool ApplyStatAlignment { get; set; } = true; + [LocalizedDescription("Apply Markings on Import")] public bool ApplyMarkings { get; set; } = true; } diff --git a/PKHeX.Core/Editing/Program/StartupUtil.cs b/PKHeX.Core/Editing/Program/StartupUtil.cs index b87c61ae0..da2397ec7 100644 --- a/PKHeX.Core/Editing/Program/StartupUtil.cs +++ b/PKHeX.Core/Editing/Program/StartupUtil.cs @@ -23,7 +23,7 @@ public static void ReloadSettings(IProgramSettings settings) SaveFile.SetUpdatePKM = write.SetUpdatePKM ? EntityImportOption.Enable : EntityImportOption.Disable; SaveFile.SetUpdateRecords = write.SetUpdateRecords ? EntityImportOption.Enable : EntityImportOption.Disable; CommonEdits.ShowdownSetIVMarkings = settings.Import.ApplyMarkings; - CommonEdits.ShowdownSetBehaviorNature = settings.Import.ApplyNature; + CommonEdits.ShowdownSetBehaviorNature = settings.Import.ApplyStatAlignment; ParseSettings.Initialize(settings.Legality); var converter = settings.Converter; diff --git a/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot7GO.cs b/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot7GO.cs index 7d73b3755..9cb1e0254 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot7GO.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot7GO.cs @@ -88,7 +88,7 @@ private void SetPINGA(PB7 pk, in EncounterCriteria criteria) var ability = criteria.GetAbilityFromNumber(Ability); criteria.SetRandomIVsGO(pk, Type.MinimumIV); - pk.Nature = pk.StatNature = nature; + pk.Nature = pk.StatAlignment = nature; pk.Gender = gender; pk.RefreshAbility(ability); diff --git a/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot8GO.cs b/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot8GO.cs index 4f1194c4c..785323637 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot8GO.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/GO/EncounterSlot8GO.cs @@ -173,7 +173,7 @@ private void SetPINGA(PKM pk, in EncounterCriteria criteria) var nature = criteria.GetNature(); var ability = criteria.GetAbilityFromNumber(Ability); - pk.Nature = pk.StatNature = nature; + pk.Nature = pk.StatAlignment = nature; pk.Gender = gender; pk.AbilityNumber = 1 << ability; diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen6/EncounterEgg6.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen6/EncounterEgg6.cs index 017355030..8f6660e78 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen6/EncounterEgg6.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen6/EncounterEgg6.cs @@ -68,7 +68,7 @@ public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) Country = geo.Country, Region = geo.Region, }; - pk.StatNature = pk.Nature; + pk.StatAlignment = pk.Nature; pk.SetHatchMemory6(); if (Species is (int)Core.Species.Scatterbug) diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen7/EncounterEgg7.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen7/EncounterEgg7.cs index b4cd7474e..926d5787c 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen7/EncounterEgg7.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen7/EncounterEgg7.cs @@ -66,7 +66,7 @@ public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) Country = geo.Country, Region = geo.Region, }; - pk.StatNature = pk.Nature; + pk.StatAlignment = pk.Nature; if (Species is (int)Core.Species.Scatterbug) pk.Form = Vivillon3DS.GetPattern(pk.Country, pk.Region); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterEgg8.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterEgg8.cs index 229dfb3fa..af2ba09b8 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterEgg8.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterEgg8.cs @@ -59,7 +59,7 @@ public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) Nature = criteria.GetNature(), Gender = criteria.GetGender(pi), }; - pk.StatNature = pk.Nature; + pk.StatAlignment = pk.Nature; SetEncounterMoves(pk); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterSlot8.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterSlot8.cs index d93bec282..54f7745b8 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterSlot8.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterSlot8.cs @@ -94,7 +94,7 @@ private void SetPINGA(PK8 pk, in EncounterCriteria criteria, PersonalInfo8SWSH p { bool symbol = Parent.PermitCrossover; pk.RefreshAbility(criteria.GetAbilityFromNumber(Ability)); - pk.Nature = pk.StatNature = criteria.GetNature(); + pk.Nature = pk.StatAlignment = criteria.GetNature(); pk.Gender = criteria.GetGender(pi); var req = GetRequirement(pk); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterStatic8.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterStatic8.cs index c5563c96c..b80957dad 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterStatic8.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterStatic8.cs @@ -119,7 +119,7 @@ private void SetPINGA(PK8 pk, in EncounterCriteria criteria) var pi = PersonalTable.SWSH[Species, Form]; pk.RefreshAbility(criteria.GetAbilityFromNumber(Ability)); - pk.Nature = pk.StatNature = criteria.GetNature(); + pk.Nature = pk.StatAlignment = criteria.GetNature(); pk.Gender = criteria.GetGender(Gender, pi); var req = GetRequirement(pk); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterTrade8.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterTrade8.cs index a936f7197..fe4909937 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterTrade8.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen8/EncounterTrade8.cs @@ -154,7 +154,7 @@ private void SetPINGA(PK8 pk, in EncounterCriteria criteria, PersonalInfo8SWSH p var gender = criteria.GetGender(Gender, pi); var nature = criteria.GetNature(Nature); int ability = criteria.GetAbilityFromNumber(Ability); - pk.Nature = pk.StatNature = nature; + pk.Nature = pk.StatAlignment = nature; pk.Gender = gender; pk.RefreshAbility(ability); if (IVs.IsSpecified) diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterEgg8b.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterEgg8b.cs index 4538bbdf8..067b6f66d 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterEgg8b.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterEgg8b.cs @@ -179,7 +179,7 @@ private void SetPINGA(PB8 pk, in EncounterCriteria criteria, PersonalInfo8BDSP p // Set the rest of the values as per our generating via the egg seed. pk.EncryptionConstant = rng.NextUInt(); // PID would be re-rolled after here, but we aren't going to have re-rolls in our hypothetical setup. pk.SetIVs(ivs); - pk.StatNature = pk.Nature = criteria.GetNature(); // Everstone (see above) + pk.StatAlignment = pk.Nature = criteria.GetNature(); // Everstone (see above) pk.Gender = gender; pk.RefreshAbility(abilityIndex); return; diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterSlot8b.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterSlot8b.cs index 380fee297..b3fb5ed54 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterSlot8b.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterSlot8b.cs @@ -106,7 +106,7 @@ private void SetPINGA(PB8 pk, in EncounterCriteria criteria, PersonalInfo8BDSP p pk.PID = EncounterUtil.GetRandomPID(pk, rnd, criteria.Shiny); pk.EncryptionConstant = rnd.Rand32(); criteria.SetRandomIVs(pk); - pk.Nature = pk.StatNature = criteria.GetNature(); + pk.Nature = pk.StatAlignment = criteria.GetNature(); pk.Gender = criteria.GetGender(pi); pk.RefreshAbility(criteria.GetAbilityFromNumber(Ability)); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterTrade8b.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterTrade8b.cs index d3de9ae94..3f7301a0f 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterTrade8b.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen8b/EncounterTrade8b.cs @@ -88,7 +88,7 @@ public PB8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) MetDate = EncounterDate.GetDateSwitch(), Gender = Gender, Nature = Nature, - StatNature = Nature, + StatAlignment = Nature, Ball = (byte)FixedBall, ID32 = ID32, diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterEgg9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterEgg9.cs index 4500f86c4..b22ff96c5 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterEgg9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterEgg9.cs @@ -60,7 +60,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) Nature = criteria.GetNature(), Gender = criteria.GetGender(pi), }; - pk.StatNature = pk.Nature; + pk.StatAlignment = pk.Nature; SetEncounterMoves(pk); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterFixed9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterFixed9.cs index 269512213..2e19b4fad 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterFixed9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterFixed9.cs @@ -115,7 +115,7 @@ private void SetPINGA(PK9 pk, in EncounterCriteria criteria, PersonalInfo9SV pi) var rnd = Util.Rand; pk.PID = EncounterUtil.GetRandomPID(pk, rnd, criteria.Shiny); pk.EncryptionConstant = rnd.Rand32(); - pk.Nature = pk.StatNature = criteria.GetNature(); + pk.Nature = pk.StatAlignment = criteria.GetNature(); pk.Gender = criteria.GetGender(pi); pk.RefreshAbility(criteria.GetAbilityFromNumber(Ability)); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterOutbreak9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterOutbreak9.cs index 2d836f915..218e42b47 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterOutbreak9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterOutbreak9.cs @@ -116,7 +116,7 @@ private void SetPINGA(PK9 pk, in EncounterCriteria criteria, PersonalInfo9SV pi) var rnd = Util.Rand; pk.PID = EncounterUtil.GetRandomPID(pk, rnd, criteria.Shiny); pk.EncryptionConstant = rnd.Rand32(); - pk.Nature = pk.StatNature = criteria.GetNature(); + pk.Nature = pk.StatAlignment = criteria.GetNature(); pk.Gender = criteria.GetGender(pi); pk.RefreshAbility(criteria.GetAbilityFromNumber(Ability)); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterSlot9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterSlot9.cs index 7c67fb6ee..0437543b9 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterSlot9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterSlot9.cs @@ -88,7 +88,7 @@ private void SetPINGA(PK9 pk, in EncounterCriteria criteria, PersonalInfo9SV pi) pk.EncryptionConstant = rnd.Rand32(); criteria.SetRandomIVs(pk); - pk.Nature = pk.StatNature = criteria.GetNature(); + pk.Nature = pk.StatAlignment = criteria.GetNature(); pk.Gender = criteria.GetGender(Gender, pi); pk.RefreshAbility(criteria.GetAbilityFromNumber(Ability)); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterStatic9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterStatic9.cs index 6b83a47d2..26f92c39c 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterStatic9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterStatic9.cs @@ -155,7 +155,7 @@ private void SetPINGA(PK9 pk, in EncounterCriteria criteria, PersonalInfo9SV pi) if (Gender != FixedGenderUtil.GenderRandom) pk.Gender = Gender; if (Nature.IsFixed) - pk.Nature = pk.StatNature = Nature; + pk.Nature = pk.StatAlignment = Nature; } #endregion diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTrade9.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTrade9.cs index c61fc1b4e..8107eb3a6 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTrade9.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9/EncounterTrade9.cs @@ -84,7 +84,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) MetDate = EncounterDate.GetDateSwitch(), Gender = Gender, Nature = Nature, - StatNature = Nature, + StatAlignment = Nature, Ball = (byte)FixedBall, ID32 = ID32, @@ -130,7 +130,7 @@ private void SetPINGA(PK9 pk, in EncounterCriteria criteria, PersonalInfo9SV pi) var rnd = Util.Rand; pk.PID = EncounterUtil.GetRandomPID(pk, rnd, Shiny, criteria.Shiny); pk.EncryptionConstant = rnd.Rand32(); - pk.Nature = pk.StatNature = criteria.GetNature(Nature); + pk.Nature = pk.StatAlignment = criteria.GetNature(Nature); pk.Gender = criteria.GetGender(Gender, pi); pk.RefreshAbility(criteria.GetAbilityFromNumber(Ability)); criteria.SetRandomIVs(pk, IVs); diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9a/EncounterTrade9a.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9a/EncounterTrade9a.cs index e12339b71..6e35384a2 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9a/EncounterTrade9a.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9a/EncounterTrade9a.cs @@ -75,7 +75,7 @@ public PA9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria) MetDate = EncounterDate.GetDateSwitch(), Gender = Gender, Nature = Nature, - StatNature = Nature, + StatAlignment = Nature, Ball = (byte)FixedBall, ID32 = ID32, diff --git a/PKHeX.Core/Legality/Encounters/Templates/Gen9a/LumioseRNG.cs b/PKHeX.Core/Legality/Encounters/Templates/Gen9a/LumioseRNG.cs index 90a3737cf..be7f9574b 100644 --- a/PKHeX.Core/Legality/Encounters/Templates/Gen9a/LumioseRNG.cs +++ b/PKHeX.Core/Legality/Encounters/Templates/Gen9a/LumioseRNG.cs @@ -110,7 +110,7 @@ public static bool GenerateData(PA9 pk, in GenerateParam9a enc, in EncounterCrit // Compromise on Nature -- some are fixed, some are random. If the request wants a specific nature, just mint it. if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(nature)) return false; - pk.Nature = pk.StatNature = nature; + pk.Nature = pk.StatAlignment = nature; // If Hyperspace, the player can have an active Teensy/Humungo boost. The scale is pre-determined outside of the seed=>pa9, consider it not correlated or traceable. // When calling the method to verify the entity, pass SizeType9.VALUE instead. diff --git a/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs b/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs index 6e00d2aff..844d7cb55 100644 --- a/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs +++ b/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs @@ -94,7 +94,7 @@ public sealed class LegalityCheckLocalization public string EggLocationTrade { get; init; } = "Able to hatch a traded Egg at Met Location."; public string EggLocationTradeFail { get; init; } = "Invalid Egg Location, shouldn't be 'traded' while an Egg."; public string EggMetLocationFail { get; init; } = "Can't obtain Egg from Egg Location."; - public string EggNature { get; init; } = "Eggs cannot have their Stat Nature changed."; + public string EggNature { get; init; } = "Eggs cannot have their Stat Alignment changed."; public string EggPP { get; init; } = "Eggs cannot have modified move PP counts."; public string EggPPUp { get; init; } = "Cannot apply PP Ups to an Egg."; public string EggRelearnFlags { get; init; } = "Expected no Relearn Move Flags."; @@ -370,7 +370,7 @@ public sealed class LegalityCheckLocalization public string StatIncorrectCP { get; init; } = "Calculated CP does not match stored value."; public string StatGigantamaxInvalid { get; init; } = "Gigantamax Flag mismatch."; public string StatGigantamaxValid { get; init; } = "Gigantamax Flag was changed via Max Soup."; - public string StatNatureInvalid { get; init; } = "Stat Nature is not within the expected range."; + public string StatAlignmentInvalid { get; init; } = "Stat Alignment is not within the expected range."; public string StatBattleVersionInvalid { get; init; } = "Battle Version is not within the expected range."; public string StatNobleInvalid { get; init; } = "Noble Flag mismatch."; public string StatAlphaInvalid { get; init; } = "Alpha Flag mismatch."; diff --git a/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs b/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs index dd7308edc..3858d2ada 100644 --- a/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs +++ b/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs @@ -367,7 +367,7 @@ public static class LegalityCheckResultCodeExtensions StatIncorrectCP_0 => localization.StatIncorrectCP, StatGigantamaxInvalid => localization.StatGigantamaxInvalid, StatGigantamaxValid => localization.StatGigantamaxValid, - StatNatureInvalid => localization.StatNatureInvalid, + StatAlignmentInvalid => localization.StatAlignmentInvalid, StatBattleVersionInvalid => localization.StatBattleVersionInvalid, StatNobleInvalid => localization.StatNobleInvalid, StatAlphaInvalid => localization.StatAlphaInvalid, diff --git a/PKHeX.Core/Legality/RNG/Methods/Gen8/RaidRNG.cs b/PKHeX.Core/Legality/RNG/Methods/Gen8/RaidRNG.cs index 0650a992b..ba7a3c313 100644 --- a/PKHeX.Core/Legality/RNG/Methods/Gen8/RaidRNG.cs +++ b/PKHeX.Core/Legality/RNG/Methods/Gen8/RaidRNG.cs @@ -139,9 +139,13 @@ public static bool Verify(PKM pk, ulong seed, Span ivs, in GenerateParam8 p if (s.WeightScalar != weight) { if (height == 0 && s.WeightScalar == 0 && HomeQuirks.HasEnteredSetZeroScale(pk)) - { } // OK + { + // OK + } else + { return false; + } } } } @@ -251,7 +255,7 @@ public static bool TryApply(PK8 pk, ulong seed, Span ivs, in GenerateParam8 if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(nature)) return false; - pk.Nature = pk.StatNature = nature; + pk.Nature = pk.StatAlignment = nature; var height = rng.NextInt(0x81) + rng.NextInt(0x80); var weight = rng.NextInt(0x81) + rng.NextInt(0x80); diff --git a/PKHeX.Core/Legality/RNG/Methods/Gen8a/Overworld8aRNG.cs b/PKHeX.Core/Legality/RNG/Methods/Gen8a/Overworld8aRNG.cs index f6a9c1993..21d7b695e 100644 --- a/PKHeX.Core/Legality/RNG/Methods/Gen8a/Overworld8aRNG.cs +++ b/PKHeX.Core/Legality/RNG/Methods/Gen8a/Overworld8aRNG.cs @@ -176,7 +176,7 @@ public static bool TryApplyFromSeed(PA8 pk, in EncounterCriteria criteria, in Ov var nature = (Nature)rand.NextInt(25); if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(nature)) return false; - pk.Nature = pk.StatNature = nature; + pk.Nature = pk.StatAlignment = nature; var (height, weight) = para.IsAlpha ? (byte.MaxValue, byte.MaxValue) diff --git a/PKHeX.Core/Legality/RNG/Methods/Gen8b/Roaming8bRNG.cs b/PKHeX.Core/Legality/RNG/Methods/Gen8b/Roaming8bRNG.cs index 94f9634e1..0c01221c6 100644 --- a/PKHeX.Core/Legality/RNG/Methods/Gen8b/Roaming8bRNG.cs +++ b/PKHeX.Core/Legality/RNG/Methods/Gen8b/Roaming8bRNG.cs @@ -22,7 +22,7 @@ public static void ApplyDetails(PB8 pk, in EncounterCriteria criteria, Shiny shi // Since the inner methods do not set Gender (only fixed Genders are applicable) and Nature (assume Synchronize used), set them here. pk.Gender = (byte)(pk.Species == (int)Species.Cresselia ? 1 : 2); // Mesprit - pk.Nature = pk.StatNature = criteria.GetNature(); + pk.Nature = pk.StatAlignment = criteria.GetNature(); int ctr = 0; var rnd = Util.Rand; diff --git a/PKHeX.Core/Legality/RNG/Methods/Gen8b/Wild8bRNG.cs b/PKHeX.Core/Legality/RNG/Methods/Gen8b/Wild8bRNG.cs index 36f101b53..9e4d1f304 100644 --- a/PKHeX.Core/Legality/RNG/Methods/Gen8b/Wild8bRNG.cs +++ b/PKHeX.Core/Legality/RNG/Methods/Gen8b/Wild8bRNG.cs @@ -134,7 +134,7 @@ public static bool TryApplyFromSeed(PB8 pk, in EncounterCriteria criteria, Shiny if (!criteria.IsSatisfiedNature(nature)) return false; - pk.StatNature = pk.Nature = nature; + pk.StatAlignment = pk.Nature = nature; // Remainder pk.HeightScalar = (byte)(xors.NextUInt(0x81) + xors.NextUInt(0x80)); diff --git a/PKHeX.Core/Legality/RNG/Methods/Gen9/Encounter9RNG.cs b/PKHeX.Core/Legality/RNG/Methods/Gen9/Encounter9RNG.cs index 3a31316bb..0d7bbee60 100644 --- a/PKHeX.Core/Legality/RNG/Methods/Gen9/Encounter9RNG.cs +++ b/PKHeX.Core/Legality/RNG/Methods/Gen9/Encounter9RNG.cs @@ -128,7 +128,7 @@ public static bool GenerateData(PK9 pk, in GenerateParam9 enc, in EncounterCrite // Compromise on Nature -- some are fixed, some are random. If the request wants a specific nature, just mint it. if (criteria.IsSpecifiedNature() && !criteria.IsSatisfiedNature(nature)) return false; - pk.Nature = pk.StatNature = nature; + pk.Nature = pk.StatAlignment = nature; pk.HeightScalar = enc.Height != 0 ? enc.Height : (byte)(rand.NextInt(0x81) + rand.NextInt(0x80)); pk.WeightScalar = enc.Weight != 0 ? enc.Weight : (byte)(rand.NextInt(0x81) + rand.NextInt(0x80)); diff --git a/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs b/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs index 0263ed74b..de2afd9c0 100644 --- a/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs +++ b/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs @@ -311,7 +311,7 @@ public enum LegalityCheckResultCode : ushort StatInvalidHeightWeight, StatGigantamaxInvalid, StatGigantamaxValid, - StatNatureInvalid, + StatAlignmentInvalid, StatBattleVersionInvalid, StatNobleInvalid, StatAlphaInvalid, diff --git a/PKHeX.Core/Legality/Verifiers/Egg/EggVerifier.cs b/PKHeX.Core/Legality/Verifiers/Egg/EggVerifier.cs index 835e3079d..cb60fd444 100644 --- a/PKHeX.Core/Legality/Verifiers/Egg/EggVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/Egg/EggVerifier.cs @@ -57,7 +57,7 @@ internal void VerifyCommon(LegalityAnalysis data, PKM pk) { if (record.GetMoveRecordFlagAny()) data.AddLine(GetInvalid(Egg, EggRelearnFlags)); - if (pk.StatNature != pk.Nature) + if (pk.StatAlignment != pk.Nature) data.AddLine(GetInvalid(Egg, EggNature)); } } diff --git a/PKHeX.Core/Legality/Verifiers/Misc/ContestStatInfo.cs b/PKHeX.Core/Legality/Verifiers/Misc/ContestStatInfo.cs index f35a271c9..4bb048ec7 100644 --- a/PKHeX.Core/Legality/Verifiers/Misc/ContestStatInfo.cs +++ b/PKHeX.Core/Legality/Verifiers/Misc/ContestStatInfo.cs @@ -177,12 +177,12 @@ private static int GetAverageFeel(IContestStatsReadOnly s, Nature nature, IConte return (int)Math.Ceiling(sum / 5f); } - // Indexes into the NatureAmpTable - private const int AmpIndexCool = 0; // Spicy - private const int AmpIndexTough = 1; // Sour - private const int AmpIndexBeauty = 2; // Dry - private const int AmpIndexSmart = 3; // Bitter - private const int AmpIndexCute = 4; // Sweet + // Indexes into the NatureAmpTable (visual index) + private const int AmpIndexCool = 0; // Spicy (Attack) + private const int AmpIndexTough = 1; // Sour (Defense) + private const int AmpIndexBeauty = 2; // Dry (Sp. Attack) + private const int AmpIndexSmart = 3; // Bitter (Sp. Defense) + private const int AmpIndexCute = 4; // Sweet (Speed) private static int GetGainedSum(IContestStatsReadOnly s, Nature nature, IContestStatsReadOnly initial) { diff --git a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierHelpers.cs b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierHelpers.cs index 671c96996..49c93dc0d 100644 --- a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierHelpers.cs +++ b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierHelpers.cs @@ -8,17 +8,17 @@ namespace PKHeX.Core; internal static class MiscVerifierHelpers { - internal static void VerifyStatNature(LegalityAnalysis data, PKM pk) + internal static void VerifyStatAlignment(LegalityAnalysis data, PKM pk) { - // No encounters innately come with a different Stat Nature... + // No encounters innately come with a different Stat Alignment... // If it matches the Nature, it is valid. If it doesn't, it should be one of the mint natures. - var statNature = pk.StatNature; - if (statNature == pk.Nature) + var alignment = pk.StatAlignment; + if (alignment == pk.Nature) return; // Must be a valid mint nature. - if (!statNature.IsMint) - data.AddLine(Get(Invalid, Misc, StatNatureInvalid)); + if (!alignment.IsMint) + data.AddLine(Get(Invalid, Misc, StatAlignmentInvalid)); } internal static void VerifyAbsoluteSizes(LegalityAnalysis data, T pk) where T : IScaledSizeValue diff --git a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA8.cs b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA8.cs index d532f66d0..aa1404d10 100644 --- a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA8.cs +++ b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA8.cs @@ -18,7 +18,7 @@ public override void Verify(LegalityAnalysis data) internal void Verify(LegalityAnalysis data, PA8 pk) { Arceus.Verify(data); - MiscVerifierHelpers.VerifyStatNature(data, pk); + MiscVerifierHelpers.VerifyStatAlignment(data, pk); MiscVerifierHelpers.VerifyAbsoluteSizes(data, pk); MiscVerifierPK8.VerifyTechRecordFlags(data, pk); // copied from SW/SH via HOME FullnessRules.Verify(data, pk); diff --git a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA9.cs b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA9.cs index 71697b2b0..b0b6ae10d 100644 --- a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA9.cs +++ b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPA9.cs @@ -17,7 +17,7 @@ public override void Verify(LegalityAnalysis data) internal void Verify(LegalityAnalysis data, PA9 pa9) { - MiscVerifierHelpers.VerifyStatNature(data, pa9); + MiscVerifierHelpers.VerifyStatAlignment(data, pa9); LegendsZA.Verify(data); if (!pa9.IsBattleVersionValid(data.Info.EvoChainsAllGens)) diff --git a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPB8.cs b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPB8.cs index 6640a9528..24dccf574 100644 --- a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPB8.cs +++ b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPB8.cs @@ -15,7 +15,7 @@ public override void Verify(LegalityAnalysis data) internal void Verify(LegalityAnalysis data, PB8 pk) { - MiscVerifierHelpers.VerifyStatNature(data, pk); + MiscVerifierHelpers.VerifyStatAlignment(data, pk); MiscVerifierPK8.VerifyTechRecordFlags(data, pk); // copied from SW/SH via HOME FullnessRules.Verify(data, pk); diff --git a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK8.cs b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK8.cs index ee1d53f25..122fbc4c0 100644 --- a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK8.cs +++ b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK8.cs @@ -15,7 +15,7 @@ public override void Verify(LegalityAnalysis data) internal void Verify(LegalityAnalysis data, PK8 pk) { - MiscVerifierHelpers.VerifyStatNature(data, pk); + MiscVerifierHelpers.VerifyStatAlignment(data, pk); VerifyTechRecordFlags(data, pk); FullnessRules.Verify(data, pk); diff --git a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK9.cs b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK9.cs index f21ae1fc3..01a2eec39 100644 --- a/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK9.cs +++ b/PKHeX.Core/Legality/Verifiers/Misc/MiscVerifierPK9.cs @@ -16,7 +16,7 @@ public override void Verify(LegalityAnalysis data) internal void Verify(LegalityAnalysis data, PK9 pk) { - MiscVerifierHelpers.VerifyStatNature(data, pk); + MiscVerifierHelpers.VerifyStatAlignment(data, pk); VerifyTechRecordFlags(data, pk); if (!pk.IsBattleVersionValid(data.Info.EvoChainsAllGens)) diff --git a/PKHeX.Core/MysteryGifts/WA8.cs b/PKHeX.Core/MysteryGifts/WA8.cs index 980e331c0..6c38913e3 100644 --- a/PKHeX.Core/MysteryGifts/WA8.cs +++ b/PKHeX.Core/MysteryGifts/WA8.cs @@ -549,7 +549,7 @@ private void SetEggMetData(PA8 pk) private void SetPINGA(PA8 pk, in EncounterCriteria criteria) { var pi = pk.PersonalInfo; - pk.Nature = pk.StatNature = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); + pk.Nature = pk.StatAlignment = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); pk.Gender = criteria.GetGender(Gender, pi); var av = GetAbilityIndex(criteria); pk.RefreshAbility(av); diff --git a/PKHeX.Core/MysteryGifts/WA9.cs b/PKHeX.Core/MysteryGifts/WA9.cs index 25625d19a..5510af1ac 100644 --- a/PKHeX.Core/MysteryGifts/WA9.cs +++ b/PKHeX.Core/MysteryGifts/WA9.cs @@ -528,7 +528,7 @@ private void SetPINGA(PA9 pk, EncounterCriteria criteria, PersonalInfo9ZA pi) { if (IsHOMEGift) // Do not use LumioseRNG for HOME gifts { - pk.Nature = pk.StatNature = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); + pk.Nature = pk.StatAlignment = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); pk.Gender = criteria.GetGender(Gender, pi); var av = GetAbilityIndex(criteria, AbilityType); pk.RefreshAbility(av); diff --git a/PKHeX.Core/MysteryGifts/WB8.cs b/PKHeX.Core/MysteryGifts/WB8.cs index 141b914f8..395774110 100644 --- a/PKHeX.Core/MysteryGifts/WB8.cs +++ b/PKHeX.Core/MysteryGifts/WB8.cs @@ -549,7 +549,7 @@ private void SetEggMetData(PB8 pk, DateOnly date) private void SetPINGA(PB8 pk, in EncounterCriteria criteria) { var pi = pk.PersonalInfo; - pk.Nature = pk.StatNature = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); + pk.Nature = pk.StatAlignment = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); pk.Gender = criteria.GetGender(Gender, pi); var av = GetAbilityIndex(criteria); pk.RefreshAbility(av); diff --git a/PKHeX.Core/MysteryGifts/WC8.cs b/PKHeX.Core/MysteryGifts/WC8.cs index dc8381843..579692fa6 100644 --- a/PKHeX.Core/MysteryGifts/WC8.cs +++ b/PKHeX.Core/MysteryGifts/WC8.cs @@ -568,7 +568,7 @@ private void SetEggMetData(PK8 pk) private void SetPINGA(PK8 pk, in EncounterCriteria criteria) { var pi = pk.PersonalInfo; - pk.Nature = pk.StatNature = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); + pk.Nature = pk.StatAlignment = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); pk.Gender = criteria.GetGender(Gender, pi); var av = GetAbilityIndex(criteria); pk.RefreshAbility(av); diff --git a/PKHeX.Core/MysteryGifts/WC9.cs b/PKHeX.Core/MysteryGifts/WC9.cs index 3143804ea..e3becad66 100644 --- a/PKHeX.Core/MysteryGifts/WC9.cs +++ b/PKHeX.Core/MysteryGifts/WC9.cs @@ -570,7 +570,7 @@ private void SetEggMetData(PK9 pk) private void SetPINGA(PK9 pk, in EncounterCriteria criteria) { var pi = pk.PersonalInfo; - pk.Nature = pk.StatNature = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); + pk.Nature = pk.StatAlignment = criteria.GetNature((sbyte)Nature == -1 ? Nature.Random : Nature); pk.Gender = criteria.GetGender(Gender, pi); var av = GetAbilityIndex(criteria); pk.RefreshAbility(av); diff --git a/PKHeX.Core/PKM/HOME/GameDataCore.cs b/PKHeX.Core/PKM/HOME/GameDataCore.cs index a512b456b..cc2777f8b 100644 --- a/PKHeX.Core/PKM/HOME/GameDataCore.cs +++ b/PKHeX.Core/PKM/HOME/GameDataCore.cs @@ -43,7 +43,7 @@ public int WriteTo(Span result) public ushort MarkingValue { get => ReadUInt16LittleEndian(Data[0x18..]); set => WriteUInt16LittleEndian(Data[0x18..], value); } public uint PID { get => ReadUInt32LittleEndian(Data[0x1A..]); set => WriteUInt32LittleEndian(Data[0x1A..], value); } public Nature Nature { get => (Nature)Data[0x1E]; set => Data[0x1E] = (byte)value; } - public Nature StatNature { get => (Nature)Data[0x1F]; set => Data[0x1F] = (byte)value; } + public Nature StatAlignment { get => (Nature)Data[0x1F]; set => Data[0x1F] = (byte)value; } public bool FatefulEncounter { get => Data[0x20] != 0; set => Data[0x20] = (byte)(value ? 1 : 0); } public byte Gender { get => Data[0x21]; set => Data[0x21] = value; } public byte Form { get => Data[0x22]; set => WriteUInt16LittleEndian(Data[0x22..], value); } @@ -333,7 +333,7 @@ public void CopyFrom(PKM pk) EXP = pk.EXP; MarkingValue = pk is IAppliedMarkings7 m7 ? m7.MarkingValue : (ushort)0; Nature = pk.Nature; - StatNature = pk.StatNature; + StatAlignment = pk.StatAlignment; FatefulEncounter = pk.FatefulEncounter; // HeldItem = pk.HeldItem; IV_HP = pk.IV_HP; @@ -391,7 +391,7 @@ public void CopyTo(PKM pk) if (pk is IAppliedMarkings7 m7) m7.MarkingValue = MarkingValue; pk.Nature = Nature; - pk.StatNature = StatNature; + pk.StatAlignment = StatAlignment; pk.FatefulEncounter = FatefulEncounter; pk.HeldItem = HeldItem; pk.IV_HP = IV_HP; diff --git a/PKHeX.Core/PKM/HOME/PKH.cs b/PKHeX.Core/PKM/HOME/PKH.cs index 3f568d313..f82da580a 100644 --- a/PKHeX.Core/PKM/HOME/PKH.cs +++ b/PKHeX.Core/PKM/HOME/PKH.cs @@ -106,7 +106,7 @@ private static Memory DecryptHome(Memory data) public ushort MarkingValue { get => Core.MarkingValue; set => Core.MarkingValue = value; } public override uint PID { get => Core.PID; set => Core.PID = value; } public override Nature Nature { get => Core.Nature; set => Core.Nature = value; } - public override Nature StatNature { get => Core.StatNature; set => Core.StatNature = value; } + public override Nature StatAlignment { get => Core.StatAlignment; set => Core.StatAlignment = value; } public override bool FatefulEncounter { get => Core.FatefulEncounter; set => Core.FatefulEncounter = value; } public override byte Gender { get => Core.Gender; set => Core.Gender = value; } public override byte Form { get => Core.Form; set => Core.Form = value; } diff --git a/PKHeX.Core/PKM/PA8.cs b/PKHeX.Core/PKM/PA8.cs index 96292c1e8..c6ac77c64 100644 --- a/PKHeX.Core/PKM/PA8.cs +++ b/PKHeX.Core/PKM/PA8.cs @@ -138,7 +138,7 @@ public void FixRelearn() // 0x1B alignment unused public override uint PID { get => ReadUInt32LittleEndian(Data[0x1C..]); set => WriteUInt32LittleEndian(Data[0x1C..], value); } public override Nature Nature { get => (Nature)Data[0x20]; set => Data[0x20] = (byte)value; } - public override Nature StatNature { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } + public override Nature StatAlignment { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } public override bool FatefulEncounter { get => (Data[0x22] & 1) == 1; set => Data[0x22] = (byte)((Data[0x22] & ~0x01) | (value ? 1 : 0)); } public bool Flag2 { get => (Data[0x22] & 2) == 2; set => Data[0x22] = (byte)((Data[0x22] & ~0x02) | (value ? 2 : 0)); } public override byte Gender { get => (byte)((Data[0x22] >> 2) & 0x3); set => Data[0x22] = (byte)((Data[0x22] & 0xF3) | (value << 2)); } @@ -514,7 +514,7 @@ public ulong Tracker public override void LoadStats(IBaseStat p, Span stats) { var level = CurrentLevel; - var nature = StatNature; + var nature = StatAlignment; stats[0] = (ushort)(GetGanbaruStat(p.HP, HT_HP ? 31 : IV_HP, GV_HP, level) + GetStatHp(p.HP, level)); stats[1] = (ushort)(GetGanbaruStat(p.ATK, HT_ATK ? 31 : IV_ATK, GV_ATK, level) + GetStat(p.ATK, level, nature, 0)); diff --git a/PKHeX.Core/PKM/PA9.cs b/PKHeX.Core/PKM/PA9.cs index 8f208fd7b..84b3b83df 100644 --- a/PKHeX.Core/PKM/PA9.cs +++ b/PKHeX.Core/PKM/PA9.cs @@ -126,7 +126,7 @@ public void FixRelearn() // 0x1B alignment unused public override uint PID { get => ReadUInt32LittleEndian(Data[0x1C..]); set => WriteUInt32LittleEndian(Data[0x1C..], value); } public override Nature Nature { get => (Nature)Data[0x20]; set => Data[0x20] = (byte)value; } - public override Nature StatNature { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } + public override Nature StatAlignment { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } public override bool FatefulEncounter { get => (Data[0x22] & 1) == 1; set => Data[0x22] = (byte)((Data[0x22] & ~0x01) | (value ? 1 : 0)); } public override byte Gender { get => (byte)((Data[0x22] >> 1) & 0x3); set => Data[0x22] = (byte)((Data[0x22] & 0xF9) | (value << 1)); } public bool IsAlpha { get => Data[0x23] != 0; set => Data[0x23] = (byte)(value ? 1 : 0); } diff --git a/PKHeX.Core/PKM/PK9.cs b/PKHeX.Core/PKM/PK9.cs index 5f3fe4c75..3435e5213 100644 --- a/PKHeX.Core/PKM/PK9.cs +++ b/PKHeX.Core/PKM/PK9.cs @@ -131,7 +131,7 @@ public void FixRelearn() // 0x1B alignment unused public override uint PID { get => ReadUInt32LittleEndian(Data[0x1C..]); set => WriteUInt32LittleEndian(Data[0x1C..], value); } public override Nature Nature { get => (Nature)Data[0x20]; set => Data[0x20] = (byte)value; } - public override Nature StatNature { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } + public override Nature StatAlignment { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } public override bool FatefulEncounter { get => (Data[0x22] & 1) == 1; set => Data[0x22] = (byte)((Data[0x22] & ~0x01) | (value ? 1 : 0)); } public override byte Gender { get => (byte)((Data[0x22] >> 1) & 0x3); set => Data[0x22] = (byte)((Data[0x22] & 0xF9) | (value << 1)); } // 0x23 alignment unused diff --git a/PKHeX.Core/PKM/PKM.cs b/PKHeX.Core/PKM/PKM.cs index f184778ea..7355114e8 100644 --- a/PKHeX.Core/PKM/PKM.cs +++ b/PKHeX.Core/PKM/PKM.cs @@ -105,7 +105,7 @@ public virtual void WriteEncryptedDataParty(Span stored, Span party) public abstract int HeldItem { get; set; } public abstract byte Gender { get; set; } public abstract Nature Nature { get; set; } - public virtual Nature StatNature { get => Nature; set => Nature = value; } + public virtual Nature StatAlignment { get => Nature; set => Nature = value; } public abstract int Ability { get; set; } public abstract byte CurrentFriendship { get; set; } public abstract byte Form { get; set; } @@ -753,8 +753,8 @@ public virtual void LoadStats(IBaseStat p, Span stats) else LoadStats(stats, p, level); - // Amplify stats based on the stat nature. - StatNature.ModifyStatsForNature(stats); + // Amplify stats based on the stat alignment. + StatAlignment.ModifyStatsForAlignment(stats); } private void LoadStats(Span stats, IBaseStat p, IHyperTrain t, byte level) diff --git a/PKHeX.Core/PKM/Searching/SearchSettings.cs b/PKHeX.Core/PKM/Searching/SearchSettings.cs index 227a912d9..90fc035d0 100644 --- a/PKHeX.Core/PKM/Searching/SearchSettings.cs +++ b/PKHeX.Core/PKM/Searching/SearchSettings.cs @@ -168,7 +168,7 @@ private bool SearchSimple(PKM pk) return false; if (Ability > -1 && pk.Ability != Ability) return false; - if (Nature.IsFixed && pk.StatNature != Nature) + if (Nature.IsFixed && pk.StatAlignment != Nature) return false; if (Item > -1 && pk.HeldItem != Item) return false; diff --git a/PKHeX.Core/PKM/Shared/G8PKM.cs b/PKHeX.Core/PKM/Shared/G8PKM.cs index 58665458f..38f699bea 100644 --- a/PKHeX.Core/PKM/Shared/G8PKM.cs +++ b/PKHeX.Core/PKM/Shared/G8PKM.cs @@ -112,7 +112,7 @@ public void FixRelearn() // 0x1B alignment unused public override uint PID { get => ReadUInt32LittleEndian(Data[0x1C..]); set => WriteUInt32LittleEndian(Data[0x1C..], value); } public override Nature Nature { get => (Nature)Data[0x20]; set => Data[0x20] = (byte)value; } - public override Nature StatNature { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } + public override Nature StatAlignment { get => (Nature)Data[0x21]; set => Data[0x21] = (byte)value; } public override bool FatefulEncounter { get => (Data[0x22] & 1) == 1; set => Data[0x22] = (byte)((Data[0x22] & ~0x01) | (value ? 1 : 0)); } public bool Flag2 { get => (Data[0x22] & 2) == 2; set => Data[0x22] = (byte)((Data[0x22] & ~0x02) | (value ? 2 : 0)); } public override byte Gender { get => (byte)((Data[0x22] >> 2) & 0x3); set => Data[0x22] = (byte)((Data[0x22] & 0xF3) | (value << 2)); } diff --git a/PKHeX.Core/Resources/localize/legality/legality_de.json b/PKHeX.Core/Resources/localize/legality/legality_de.json index ce627c4d7..a5234a0e6 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_de.json +++ b/PKHeX.Core/Resources/localize/legality/legality_de.json @@ -53,7 +53,7 @@ "EggLocationTrade": "Ein getauschtes Ei kann am Fundort ausgebrütet werden.", "EggLocationTradeFail": "Ungültiger Ei-Ort, sollte im Ei-Status nicht 'getauscht' sein.", "EggMetLocationFail": "Ei kann an diesem Ei-Ort nicht erhalten werden.", - "EggNature": "Das Wesen (Statuswerte) eines Eis kann nicht geändert werden.", + "EggNature": "Statuswertanpassung eines Ei kann nicht geändert werden.", "EggPP": "Eier können keine modifizierten AP-Werte haben.", "EggPPUp": "AP-Plus kann nicht auf ein Ei angewendet werden.", "EggRelearnFlags": "Keine Markierungen für wiedererlernbare Attacken erwartet.", @@ -293,7 +293,7 @@ "StatIncorrectCP": "Berechnete WP stimmen nicht mit dem gespeicherten Wert überein.", "StatGigantamaxInvalid": "Gigadynamax-Markierung fehlerhaft.", "StatGigantamaxValid": "Gigadynamax-Markierung wurde durch Dyna-Suppe geändert.", - "StatNatureInvalid": "Status-Wesen liegt nicht im erwarteten Bereich.", + "StatAlignmentInvalid": "Statuswertanpassung liegt nicht im erwarteten Bereich.", "StatBattleVersionInvalid": "Kampf-Version liegt nicht im erwarteten Bereich.", "StatNobleInvalid": "Königliche-Markierung fehlerhaft.", "StatAlphaInvalid": "Elite-Markierung fehlerhaft.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_en.json b/PKHeX.Core/Resources/localize/legality/legality_en.json index 93cad188e..ca935356e 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_en.json +++ b/PKHeX.Core/Resources/localize/legality/legality_en.json @@ -53,7 +53,7 @@ "EggLocationTrade": "Able to hatch a traded Egg at Met Location.", "EggLocationTradeFail": "Invalid Egg Location, shouldn't be 'traded' while an Egg.", "EggMetLocationFail": "Can't obtain Egg from Egg Location.", - "EggNature": "Eggs cannot have their Stat Nature changed.", + "EggNature": "Eggs cannot have their Stat Alignment changed.", "EggPP": "Eggs cannot have modified move PP counts.", "EggPPUp": "Cannot apply PP Ups to an Egg.", "EggRelearnFlags": "Expected no Relearn Move Flags.", @@ -293,7 +293,7 @@ "StatIncorrectCP": "Calculated CP does not match stored value.", "StatGigantamaxInvalid": "Gigantamax Flag mismatch.", "StatGigantamaxValid": "Gigantamax Flag was changed via Max Soup.", - "StatNatureInvalid": "Stat Nature is not within the expected range.", + "StatAlignmentInvalid": "Stat Alignment is not within the expected range.", "StatBattleVersionInvalid": "Battle Version is not within the expected range.", "StatNobleInvalid": "Noble Flag mismatch.", "StatAlphaInvalid": "Alpha Flag mismatch.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_es-419.json b/PKHeX.Core/Resources/localize/legality/legality_es-419.json index 69bb3de80..552479c5e 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_es-419.json +++ b/PKHeX.Core/Resources/localize/legality/legality_es-419.json @@ -53,7 +53,7 @@ "EggLocationTrade": "Se puede eclosionar el Huevo intercambiado en la localización.", "EggLocationTradeFail": "Localización del Huevo inválida, no debería haber sido intercambiado mientras era un Huevo.", "EggMetLocationFail": "No se puede obtener el Huevo en la localización.", - "EggNature": "Los Huevos no pueden tener Naturaleza estadística.", + "EggNature": "Los Huevos no pueden tener ajustes de estadísticas.", "EggPP": "Los Huevos no pueden tener los contadores de PP modificados.", "EggPPUp": "No se puede aplicar Más PP a un huevo.", "EggRelearnFlags": "Los Huevos no pueden tener Discos Técnicos marcados.", @@ -293,7 +293,7 @@ "StatIncorrectCP": "Los PC calculados no coinciden con el valor almacenado.", "StatGigantamaxInvalid": "Gigamax incompatible.", "StatGigantamaxValid": "La marca de Gigamax fue cambiada por Maxisopa.", - "StatNatureInvalid": "La estadística de la naturaleza no está dentro del rango esperado.", + "StatAlignmentInvalid": "La variación de características no está dentro del rango esperado.", "StatBattleVersionInvalid": "La Versión de Batalla no está dentro del rango esperado.", "StatNobleInvalid": "Pokémon señorial incompatible.", "StatAlphaInvalid": "Alfa incompatible.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_es.json b/PKHeX.Core/Resources/localize/legality/legality_es.json index 60bd2c727..13d4c3596 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_es.json +++ b/PKHeX.Core/Resources/localize/legality/legality_es.json @@ -53,7 +53,7 @@ "EggLocationTrade": "Se puede eclosionar el Huevo intercambiado en la localización.", "EggLocationTradeFail": "Localización del Huevo inválida, no debería haber sido intercambiado mientras era un Huevo.", "EggMetLocationFail": "No se puede obtener el Huevo en la localización.", - "EggNature": "Los Huevos no pueden tener Naturaleza estadística.", + "EggNature": "Los Huevos no pueden tener ajustes de estadísticas.", "EggPP": "Los Huevos no pueden tener los contadores de PP modificados.", "EggPPUp": "No se puede aplicar Más PP a un huevo.", "EggRelearnFlags": "Los Huevos no pueden tener Discos Técnicos marcados.", @@ -293,7 +293,7 @@ "StatIncorrectCP": "Los PC calculados no coinciden con el valor almacenado.", "StatGigantamaxInvalid": "Gigamax incompatible.", "StatGigantamaxValid": "La marca de Gigamax fue cambiada por Maxisopa.", - "StatNatureInvalid": "La estadística de la naturaleza no está dentro del rango esperado.", + "StatAlignmentInvalid": "La variación de características no está dentro del rango esperado.", "StatBattleVersionInvalid": "La Versión de Batalla no está dentro del rango esperado.", "StatNobleInvalid": "Pokémon señorial incompatible.", "StatAlphaInvalid": "Alfa incompatible.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_fr.json b/PKHeX.Core/Resources/localize/legality/legality_fr.json index 5c6937350..06849c8a2 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_fr.json +++ b/PKHeX.Core/Resources/localize/legality/legality_fr.json @@ -53,7 +53,7 @@ "EggLocationTrade": "Œuf échangé peut éclore au Lieu de Rencontre.", "EggLocationTradeFail": "Lieu de Rencontre de l'Œuf non valide, ne devrait pas être « échangé » en Œuf.", "EggMetLocationFail": "L'Œuf ne peut pas être obtenu au Lieu de Rencontre.", - "EggNature": "Impossible de modifier la statistique de Nature d'un Œuf.", + "EggNature": "Impossible de modifier l'ajustement des statistiques d'un Œuf.", "EggPP": "Impossible de modifier les PP d'un Œuf.", "EggPPUp": "Impossible d'appliquer des PP Plus à un Œuf.", "EggRelearnFlags": "Aucun drapeau de Capacité Réapprise attendu.", @@ -293,7 +293,7 @@ "StatIncorrectCP": "Les PCs calculés ne correspondent pas à la valeur enregistrée.", "StatGigantamaxInvalid": "Le drapeau de Gigamax est incorrect.", "StatGigantamaxValid": "Le drapeau de Gigamax a été changé avec une Maxi Soupe.", - "StatNatureInvalid": "La Stat de la Nature n'est pas dans la plage attendue.", + "StatAlignmentInvalid": "La Ajust. de stats n'est pas dans la plage attendue.", "StatBattleVersionInvalid": "La Version de Combat n'est pas dans la plage attendue.", "StatNobleInvalid": "Le drapeau de Monarque est incorrect.", "StatAlphaInvalid": "Le drapeau de Baron est incorrect.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_it.json b/PKHeX.Core/Resources/localize/legality/legality_it.json index 323f04443..8dae98791 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_it.json +++ b/PKHeX.Core/Resources/localize/legality/legality_it.json @@ -53,7 +53,7 @@ "EggLocationTrade": "È possibile schiudere un Uovo scambiato nel luogo di incontro.", "EggLocationTradeFail": "Il luogo di incontro non dovrebbe essere 'Scambio', se è un Uovo.", "EggMetLocationFail": "Impossibile ottenre l'Uovo nel Luogo dell'Uovo.", - "EggNature": "Le Uova non possono avere la Natura delle Statistiche cambiata.", + "EggNature": "Le Uova non possono avere l'aggiustamento delle statistiche cambiato.", "EggPP": "Le Uova non possono avere modifiche ai PP.", "EggPPUp": "Non si possono applicare PP Up alle Uova.", "EggRelearnFlags": "Non sono previsti segnali di Mosse Ricordabili.", @@ -293,9 +293,9 @@ "StatIncorrectCP": "I PL calcolati non combaciano con il valore nei dati.", "StatGigantamaxInvalid": "Gigamax non corrispondente.", "StatGigantamaxValid": "Gigamax ottenuto con la Zuppamax.", - "StatNatureInvalid": "La Natura delle Statistiche non è in un range accettabile.", - "StatBattleVersionInvalid": "la Versione Lotta non è in un range accettabile.", - "StatNobleInvalid": "Sgnale Nobile non corrispondente.", + "StatAlignmentInvalid": "La calibrazione statistiche non è in un range accettabile.", + "StatBattleVersionInvalid": "La Versione Lotta non è in un range accettabile.", + "StatNobleInvalid": "Segnale Nobile non corrispondente.", "StatAlphaInvalid": "Alfa non corrispondente.", "StoredSourceEgg": "L'uovo deve trovarsi nei Box o in squadra.", "StoredSlotSourceInvalid_0": "Origine della fusione non valida: {0}", diff --git a/PKHeX.Core/Resources/localize/legality/legality_ja.json b/PKHeX.Core/Resources/localize/legality/legality_ja.json index e9bf71bf8..09dc6fb9f 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_ja.json +++ b/PKHeX.Core/Resources/localize/legality/legality_ja.json @@ -53,7 +53,7 @@ "EggLocationTrade": "出会った場所で交換したタマゴを孵化させることができます。", "EggLocationTradeFail": "もらった場所が無効です。タマゴの状態で交換してはいけません。", "EggMetLocationFail": "そのもらった場所では、タマゴを入手できません。", - "EggNature": "タマゴはミントで性格変更できません。", + "EggNature": "タマゴは能力調整を変更できません。", "EggPP": "タマゴは技のPPを変更することはできません。", "EggPPUp": "タマゴにポイントアップは使用できません", "EggRelearnFlags": "技を思い出すフラグがないと思われます。", @@ -293,7 +293,7 @@ "StatIncorrectCP": "計算されたCPが保存値と一致しません。", "StatGigantamaxInvalid": "キョダイマックスフラグの不一致。", "StatGigantamaxValid": "ダイスープによってキョダイマックスフラグが変更されました。", - "StatNatureInvalid": "ミント性格補正が予想の範囲内にありません。", + "StatAlignmentInvalid": "ミント能力補正予想の範囲内にありません。", "StatBattleVersionInvalid": "バトルバージョンは予想の範囲内ではありません。", "StatNobleInvalid": "キング/クイーンのフラグが不一致。", "StatAlphaInvalid": "オヤブンフラグ不一致。", diff --git a/PKHeX.Core/Resources/localize/legality/legality_ko.json b/PKHeX.Core/Resources/localize/legality/legality_ko.json index 845996fdf..c79a69ef6 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_ko.json +++ b/PKHeX.Core/Resources/localize/legality/legality_ko.json @@ -53,7 +53,7 @@ "EggLocationTrade": "만난 장소에서 교환한 알을 부화시킬 수 있습니다.", "EggLocationTradeFail": "알을 만난 장소가 잘못되었습니다. 부화 전 알을 교환할 수 없습니다.", "EggMetLocationFail": "알을 만난 장소에서 알을 얻을 수 없습니다.", - "EggNature": "알은 성격과 능력치 성격이 서로 다를 수 없습니다.", + "EggNature": "알은 능력치 조정을 변경할 수 없습니다.", "EggPP": "알은 PP를 수정할 수 없습니다.", "EggPPUp": "알에는 PP업을 적용할 수 없습니다.", "EggRelearnFlags": "떠올리기 기술 플래그가 없어야 합니다.", @@ -293,7 +293,7 @@ "StatIncorrectCP": "계산된 CP와 저장된 값이 일치하지 않습니다.", "StatGigantamaxInvalid": "거다이맥스 플래그가 일치하지 않습니다.", "StatGigantamaxValid": "거다이맥스 플래그가 다이수프를 통해 변경되었습니다.", - "StatNatureInvalid": "능력치 성격 수치가 예상 범위 내에 있지 않습니다.", + "StatAlignmentInvalid": "능력 보정 수치가 예상 범위 내에 있지 않습니다.", "StatBattleVersionInvalid": "배틀 버전 수치가 예상 범위 내에 있지 않습니다.", "StatNobleInvalid": "왕/여왕 플래그가 일치하지 않습니다.", "StatAlphaInvalid": "우두머리 플래그가 일치하지 않습니다.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json b/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json index cd705b17d..835096817 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json +++ b/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json @@ -53,7 +53,7 @@ "EggLocationTrade": "能在相遇地点孵化交易的蛋。", "EggLocationTradeFail": "非法蛋取得场所, 不能在还是蛋时“交换”", "EggMetLocationFail": "不能在蛋取得场所获得蛋。", - "EggNature": "不能改变蛋的能力性格(薄荷)。", + "EggNature": "不能改变蛋的能力调整(薄荷)。", "EggPP": "蛋不能有PP数变动。", "EggPPUp": "不能对蛋使用PP提升剂。", "EggRelearnFlags": "蛋没有回忆招式。", @@ -293,7 +293,7 @@ "StatIncorrectCP": "计算的CP值与存储值不匹配。", "StatGigantamaxInvalid": "超极巨标志不匹配。", "StatGigantamaxValid": "超极巨标志已被极巨汤修改。", - "StatNatureInvalid": "性格不在期望范围内。", + "StatAlignmentInvalid": "能力调整不在期望范围内。", "StatBattleVersionInvalid": "对战版本不在期望范围内。", "StatNobleInvalid": "王标记非法。", "StatAlphaInvalid": "头目标记不匹配。", diff --git a/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json b/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json index ddd455bc5..d5b0b78ae 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json +++ b/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json @@ -53,7 +53,7 @@ "EggLocationTrade": "可於遇見地點孵化「連線交換」所得蛋。", "EggLocationTradeFail": "不合法之蛋取得場所, 無法於寶可夢仍是蛋時「連線交換」。", "EggMetLocationFail": "無法於設定之蛋取得場所獲得該蛋。", - "EggNature": "無法使用「薄荷」修正蛋之性格。", + "EggNature": "無法使用「薄荷」修正蛋之能力調整。", "EggPP": "蛋不能修改 PP 值。", "EggPPUp": "不能對蛋使用 PP 提升劑。", "EggRelearnFlags": "預期不會重新學習技能標記。", @@ -293,7 +293,7 @@ "StatIncorrectCP": "計算之 CP 值與存儲值不匹配。", "StatGigantamaxInvalid": "超極巨標識不匹配。", "StatGigantamaxValid": "超極巨標識已被極巨湯修改。", - "StatNatureInvalid": "薄荷修正之性格表現不在期望範圍內。", + "StatAlignmentInvalid": "能力調整現不在期望範圍內。", "StatBattleVersionInvalid": "對戰版本不在期望範圍內。", "StatNobleInvalid": "王標識不合法。", "StatAlphaInvalid": "頭目標識不合法。", diff --git a/PKHeX.WinForms/Controls/PKM Editor/ExperienceBar.cs b/PKHeX.WinForms/Controls/PKM Editor/ExperienceBar.cs index 884f0b601..13272c399 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/ExperienceBar.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/ExperienceBar.cs @@ -15,7 +15,7 @@ public partial class ExperienceBar : UserControl private double CurrentPercent => Experience.GetEXPToLevelUpPercentage(Level, EXP, Growth); private void NotifyUpdate() => ValueChanged?.Invoke(this, EventArgs.Empty); - private int RealWidth => BorderStyle == BorderStyle.None ? Width : Width - SystemInformation.BorderSize.Width * 2; + private int RealWidth => BorderStyle == BorderStyle.None ? Width : Width - (SystemInformation.BorderSize.Width * 2); private int Border => BorderStyle == BorderStyle.None ? 0 : SystemInformation.BorderSize.Width; private uint GetEXPEdgeHigh() @@ -100,13 +100,21 @@ private void SetNewPixelPercent(int newWidth, bool scroll) var maxWidth = RealWidth; // Recalculate EXP, trigger the event, which will trigger another Update. if (newWidth < 0) + { Underflow(); + } else if (newWidth >= maxWidth) + { Overflow(); + } else if (newWidth >= maxWidth + 1) + { EdgeHigh(); + } else if (newWidth == 0) + { EdgeLow(); + } else // somewhere in between { var range = Experience.GetEXPToLevelUp(Level, Growth); diff --git a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs index c799dbc90..84e6e935a 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs @@ -423,7 +423,7 @@ private static int GetAbilityIndex4(PKM pk) private void LoadMisc8(PK8 pk8) { - CB_StatNature.SelectedValue = (int)pk8.StatNature; + CB_StatAlignment.SelectedValue = (int)pk8.StatAlignment; LoadClamp(Stats.CB_DynamaxLevel, pk8.DynamaxLevel); Stats.CHK_Gigantamax.Checked = pk8.CanGigantamax; CB_HTLanguage.SelectedValue = (int)pk8.HandlingTrainerLanguage; @@ -433,7 +433,7 @@ private void LoadMisc8(PK8 pk8) private void SaveMisc8(PK8 pk8) { - pk8.StatNature = (Nature)WinFormsUtil.GetIndex(CB_StatNature); + pk8.StatAlignment = (Nature)WinFormsUtil.GetIndex(CB_StatAlignment); pk8.DynamaxLevel = (byte)Math.Max(0, Stats.CB_DynamaxLevel.SelectedIndex); pk8.CanGigantamax = Stats.CHK_Gigantamax.Checked; pk8.HandlingTrainerLanguage = (byte)WinFormsUtil.GetIndex(CB_HTLanguage); @@ -442,7 +442,7 @@ private void SaveMisc8(PK8 pk8) private void LoadMisc8(PB8 pk8) { - CB_StatNature.SelectedValue = (int)pk8.StatNature; + CB_StatAlignment.SelectedValue = (int)pk8.StatAlignment; LoadClamp(Stats.CB_DynamaxLevel, pk8.DynamaxLevel); Stats.CHK_Gigantamax.Checked = pk8.CanGigantamax; CB_HTLanguage.SelectedValue = (int)pk8.HandlingTrainerLanguage; @@ -452,7 +452,7 @@ private void LoadMisc8(PB8 pk8) private void SaveMisc8(PB8 pk8) { - pk8.StatNature = (Nature)WinFormsUtil.GetIndex(CB_StatNature); + pk8.StatAlignment = (Nature)WinFormsUtil.GetIndex(CB_StatAlignment); pk8.DynamaxLevel = (byte)Math.Max(0, Stats.CB_DynamaxLevel.SelectedIndex); pk8.CanGigantamax = Stats.CHK_Gigantamax.Checked; pk8.HandlingTrainerLanguage = (byte)WinFormsUtil.GetIndex(CB_HTLanguage); @@ -461,7 +461,7 @@ private void SaveMisc8(PB8 pk8) private void LoadMisc8(PA8 pk8) { - CB_StatNature.SelectedValue = (int)pk8.StatNature; + CB_StatAlignment.SelectedValue = (int)pk8.StatAlignment; LoadClamp(Stats.CB_DynamaxLevel, pk8.DynamaxLevel); Stats.CHK_Gigantamax.Checked = pk8.CanGigantamax; CB_HTLanguage.SelectedValue = (int)pk8.HandlingTrainerLanguage; @@ -474,7 +474,7 @@ private void LoadMisc8(PA8 pk8) private void SaveMisc8(PA8 pk8) { - pk8.StatNature = (Nature)WinFormsUtil.GetIndex(CB_StatNature); + pk8.StatAlignment = (Nature)WinFormsUtil.GetIndex(CB_StatAlignment); pk8.DynamaxLevel = (byte)Math.Max(0, Stats.CB_DynamaxLevel.SelectedIndex); pk8.CanGigantamax = Stats.CHK_Gigantamax.Checked; pk8.HandlingTrainerLanguage = (byte)WinFormsUtil.GetIndex(CB_HTLanguage); @@ -486,7 +486,7 @@ private void SaveMisc8(PA8 pk8) private void LoadMisc9(PK9 pk9) { - CB_StatNature.SelectedValue = (int)pk9.StatNature; + CB_StatAlignment.SelectedValue = (int)pk9.StatAlignment; CB_HTLanguage.SelectedValue = (int)pk9.HandlingTrainerLanguage; TB_HomeTracker.Text = pk9.Tracker.ToString("X16"); CB_BattleVersion.SelectedValue = (int)pk9.BattleVersion; @@ -497,7 +497,7 @@ private void LoadMisc9(PK9 pk9) private void SaveMisc9(PK9 pk9) { - pk9.StatNature = (Nature)WinFormsUtil.GetIndex(CB_StatNature); + pk9.StatAlignment = (Nature)WinFormsUtil.GetIndex(CB_StatAlignment); pk9.HandlingTrainerLanguage = (byte)WinFormsUtil.GetIndex(CB_HTLanguage); pk9.BattleVersion = (GameVersion)WinFormsUtil.GetIndex(CB_BattleVersion); pk9.TeraTypeOriginal = (MoveType)WinFormsUtil.GetIndex(Stats.CB_TeraTypeOriginal); @@ -507,7 +507,7 @@ private void SaveMisc9(PK9 pk9) private void LoadMisc9(PA9 pk9) { - CB_StatNature.SelectedValue = (int)pk9.StatNature; + CB_StatAlignment.SelectedValue = (int)pk9.StatAlignment; CB_HTLanguage.SelectedValue = (int)pk9.HandlingTrainerLanguage; TB_HomeTracker.Text = pk9.Tracker.ToString("X16"); CB_BattleVersion.SelectedValue = (int)pk9.BattleVersion; @@ -517,7 +517,7 @@ private void LoadMisc9(PA9 pk9) private void SaveMisc9(PA9 pk9) { - pk9.StatNature = (Nature)WinFormsUtil.GetIndex(CB_StatNature); + pk9.StatAlignment = (Nature)WinFormsUtil.GetIndex(CB_StatAlignment); pk9.HandlingTrainerLanguage = (byte)WinFormsUtil.GetIndex(CB_HTLanguage); pk9.BattleVersion = (GameVersion)WinFormsUtil.GetIndex(CB_BattleVersion); pk9.ObedienceLevel = (byte)Util.ToInt32(TB_ObedienceLevel.Text); diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs index 845dc168d..f36ad6810 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs @@ -65,8 +65,8 @@ private void InitializeComponent() L_FormArgument = new System.Windows.Forms.Label(); CB_Form = new System.Windows.Forms.ComboBox(); Label_Form = new System.Windows.Forms.Label(); - CB_StatNature = new System.Windows.Forms.ComboBox(); - L_StatNature = new System.Windows.Forms.Label(); + CB_StatAlignment = new System.Windows.Forms.ComboBox(); + L_StatAlignment = new System.Windows.Forms.Label(); CB_Nature = new System.Windows.Forms.ComboBox(); Label_Nature = new System.Windows.Forms.Label(); FLP_EXPLevelRight = new System.Windows.Forms.FlowLayoutPanel(); @@ -92,6 +92,7 @@ private void InitializeComponent() PB_ShinyStar = new SelectablePictureBox(); PB_ShinySquare = new SelectablePictureBox(); NUD_ShadowID = new System.Windows.Forms.NumericUpDown(); + ExperienceBar = new ExperienceBar(); Hidden_Met = new System.Windows.Forms.TabPage(); FLP_Met = new System.Windows.Forms.FlowLayoutPanel(); FLP_OriginGame = new System.Windows.Forms.FlowLayoutPanel(); @@ -250,7 +251,6 @@ private void InitializeComponent() Tab_Moves = new System.Windows.Forms.TabPage(); Tab_Cosmetic = new System.Windows.Forms.TabPage(); Tab_OTMisc = new System.Windows.Forms.TabPage(); - ExperienceBar = new ExperienceBar(); Hidden_TC.SuspendLayout(); Hidden_Main.SuspendLayout(); TLP_Main.SuspendLayout(); @@ -391,8 +391,8 @@ private void InitializeComponent() TLP_Main.Controls.Add(L_FormArgument, 0, 8); TLP_Main.Controls.Add(CB_Form, 1, 7); TLP_Main.Controls.Add(Label_Form, 0, 7); - TLP_Main.Controls.Add(CB_StatNature, 1, 6); - TLP_Main.Controls.Add(L_StatNature, 0, 6); + TLP_Main.Controls.Add(CB_StatAlignment, 1, 6); + TLP_Main.Controls.Add(L_StatAlignment, 0, 6); TLP_Main.Controls.Add(CB_Nature, 1, 5); TLP_Main.Controls.Add(Label_Nature, 0, 5); TLP_Main.Controls.Add(FLP_EXPLevelRight, 1, 3); @@ -823,31 +823,31 @@ private void InitializeComponent() Label_Form.Text = "Form:"; Label_Form.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // CB_StatNature + // CB_StatAlignment // - CB_StatNature.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; - CB_StatNature.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - CB_StatNature.FormattingEnabled = true; - CB_StatNature.Location = new System.Drawing.Point(120, 158); - CB_StatNature.Margin = new System.Windows.Forms.Padding(0, 0, 0, 1); - CB_StatNature.Name = "CB_StatNature"; - CB_StatNature.Size = new System.Drawing.Size(144, 25); - CB_StatNature.TabIndex = 11; - CB_StatNature.SelectedIndexChanged += ValidateComboBox2; - CB_StatNature.Validating += ValidateComboBox; + CB_StatAlignment.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + CB_StatAlignment.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; + CB_StatAlignment.FormattingEnabled = true; + CB_StatAlignment.Location = new System.Drawing.Point(120, 158); + CB_StatAlignment.Margin = new System.Windows.Forms.Padding(0, 0, 0, 1); + CB_StatAlignment.Name = "CB_StatAlignment"; + CB_StatAlignment.Size = new System.Drawing.Size(144, 25); + CB_StatAlignment.TabIndex = 11; + CB_StatAlignment.SelectedIndexChanged += ValidateComboBox2; + CB_StatAlignment.Validating += ValidateComboBox; // - // L_StatNature + // L_StatAlignment // - L_StatNature.Anchor = System.Windows.Forms.AnchorStyles.Right; - L_StatNature.AutoSize = true; - L_StatNature.Location = new System.Drawing.Point(43, 161); - L_StatNature.Margin = new System.Windows.Forms.Padding(0, 0, 0, 2); - L_StatNature.Name = "L_StatNature"; - L_StatNature.Size = new System.Drawing.Size(77, 17); - L_StatNature.TabIndex = 10; - L_StatNature.Text = "Stat Nature:"; - L_StatNature.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - L_StatNature.Click += ClickNature; + L_StatAlignment.Anchor = System.Windows.Forms.AnchorStyles.Right; + L_StatAlignment.AutoSize = true; + L_StatAlignment.Location = new System.Drawing.Point(25, 161); + L_StatAlignment.Margin = new System.Windows.Forms.Padding(0, 0, 0, 2); + L_StatAlignment.Name = "L_StatAlignment"; + L_StatAlignment.Size = new System.Drawing.Size(95, 17); + L_StatAlignment.TabIndex = 10; + L_StatAlignment.Text = "Stat Alignment:"; + L_StatAlignment.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + L_StatAlignment.Click += ClickNature; // // CB_Nature // @@ -1177,6 +1177,15 @@ private void InitializeComponent() NUD_ShadowID.TabIndex = 29; NUD_ShadowID.ValueChanged += UpdateShadowID; // + // ExperienceBar + // + ExperienceBar.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + ExperienceBar.Location = new System.Drawing.Point(120, 118); + ExperienceBar.Margin = new System.Windows.Forms.Padding(0, 0, 0, 4); + ExperienceBar.Name = "ExperienceBar"; + ExperienceBar.Size = new System.Drawing.Size(144, 10); + ExperienceBar.TabIndex = 34; + // // Hidden_Met // Hidden_Met.AllowDrop = true; @@ -1692,10 +1701,10 @@ private void InitializeComponent() // // GB_CurrentMoves // - GB_CurrentMoves.Location = new System.Drawing.Point(56, 8); - GB_CurrentMoves.Margin = new System.Windows.Forms.Padding(56, 8, 0, 0); + GB_CurrentMoves.Location = new System.Drawing.Point(48, 8); + GB_CurrentMoves.Margin = new System.Windows.Forms.Padding(48, 8, 0, 0); GB_CurrentMoves.Name = "GB_CurrentMoves"; - GB_CurrentMoves.Size = new System.Drawing.Size(136, 24); + GB_CurrentMoves.Size = new System.Drawing.Size(158, 24); GB_CurrentMoves.TabIndex = 48; GB_CurrentMoves.Text = "Current Moves"; GB_CurrentMoves.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -1707,7 +1716,7 @@ private void InitializeComponent() FLP_PP.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; FLP_PP.Controls.Add(Label_CurPP); FLP_PP.Controls.Add(Label_PPups); - FLP_PP.Location = new System.Drawing.Point(192, 8); + FLP_PP.Location = new System.Drawing.Point(206, 8); FLP_PP.Margin = new System.Windows.Forms.Padding(0, 8, 0, 0); FLP_PP.Name = "FLP_PP"; FLP_PP.Size = new System.Drawing.Size(64, 24); @@ -1721,7 +1730,7 @@ private void InitializeComponent() Label_CurPP.Size = new System.Drawing.Size(24, 24); Label_CurPP.TabIndex = 2; Label_CurPP.Text = "PP"; - Label_CurPP.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + Label_CurPP.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; Label_CurPP.Click += ClickPP; // // Label_PPups @@ -1732,7 +1741,7 @@ private void InitializeComponent() Label_PPups.Size = new System.Drawing.Size(40, 24); Label_PPups.TabIndex = 12; Label_PPups.Text = "Ups"; - Label_PPups.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + Label_PPups.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; Label_PPups.Click += ClickPPUps; // // MC_Move1 @@ -1794,10 +1803,10 @@ private void InitializeComponent() // GB_RelearnMoves // FLP_Moves.SetFlowBreak(GB_RelearnMoves, true); - GB_RelearnMoves.Location = new System.Drawing.Point(56, 148); - GB_RelearnMoves.Margin = new System.Windows.Forms.Padding(56, 8, 0, 0); + GB_RelearnMoves.Location = new System.Drawing.Point(48, 148); + GB_RelearnMoves.Margin = new System.Windows.Forms.Padding(48, 8, 0, 0); GB_RelearnMoves.Name = "GB_RelearnMoves"; - GB_RelearnMoves.Size = new System.Drawing.Size(216, 24); + GB_RelearnMoves.Size = new System.Drawing.Size(224, 24); GB_RelearnMoves.TabIndex = 50; GB_RelearnMoves.Text = "Relearn Moves"; GB_RelearnMoves.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -3201,15 +3210,6 @@ private void InitializeComponent() Tab_OTMisc.Text = "OT/Misc"; Tab_OTMisc.UseVisualStyleBackColor = true; // - // ExperienceBar - // - ExperienceBar.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - ExperienceBar.Location = new System.Drawing.Point(120, 118); - ExperienceBar.Margin = new System.Windows.Forms.Padding(0, 0, 0, 4); - ExperienceBar.Name = "ExperienceBar"; - ExperienceBar.Size = new System.Drawing.Size(144, 10); - ExperienceBar.TabIndex = 34; - // // PKMEditor // AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; @@ -3460,8 +3460,8 @@ private void InitializeComponent() private CatchRate CR_PK1; public SizeCP SizeCP; private System.Windows.Forms.PictureBox PB_Favorite; - private System.Windows.Forms.Label L_StatNature; - private System.Windows.Forms.ComboBox CB_StatNature; + private System.Windows.Forms.Label L_StatAlignment; + private System.Windows.Forms.ComboBox CB_StatAlignment; private System.Windows.Forms.PictureBox PB_Origin; private System.Windows.Forms.ComboBox CB_HTLanguage; private System.Windows.Forms.Button B_RelearnFlags; diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index fa56b91f9..0e099cd34 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -48,7 +48,7 @@ public PKMEditor() new([CB_EggLocation], pk => pk.Format >= 4, Criteria), new([CB_Country, CB_SubRegion], pk => pk is PK6 or PK7, Criteria), new(Relearn, pk => pk.Format >= 6, Criteria), - new([CB_StatNature], pk => pk.Format >= 8, Criteria), + new([CB_StatAlignment], pk => pk.Format >= 8, Criteria), new([CB_AlphaMastered], pk => pk is PA8, Criteria), ]; @@ -118,7 +118,7 @@ public void InitializeBinding() { ComboBox[] cbs = [ - CB_Nature, CB_StatNature, + CB_Nature, CB_StatAlignment, CB_Country, CB_SubRegion, CB_3DSReg, CB_Language, CB_Ball, CB_HeldItem, CB_Species, DEV_Ability, CB_GroundTile, CB_GameOrigin, CB_BattleVersion, CB_Ability, CB_MetLocation, CB_EggLocation, CB_Language, CB_HTLanguage, CB_AlphaMastered, @@ -343,7 +343,7 @@ private void LoadFieldsFromPKM(PKM pk, bool focus = true, bool skipConversionChe Stats.UpdateIVs(this, EventArgs.Empty); UpdatePKRSInfected(this, EventArgs.Empty); UpdatePKRSCured(this, EventArgs.Empty); - UpdateNatureModification(CB_StatNature, Entity.StatNature); + UpdateNatureModification(CB_StatAlignment, Entity.StatAlignment); if (HaX) { @@ -766,9 +766,9 @@ private void ClickNature(object sender, EventArgs e) if (Entity.Format < 8) return; if (sender == Label_Nature) - CB_Nature.SelectedIndex = CB_StatNature.SelectedIndex; + CB_Nature.SelectedIndex = CB_StatAlignment.SelectedIndex; else - CB_StatNature.SelectedIndex = CB_Nature.SelectedIndex; + CB_StatAlignment.SelectedIndex = CB_Nature.SelectedIndex; } private void ClickMoves(object? sender, EventArgs e) @@ -1371,7 +1371,7 @@ public void ChangeNature(Nature newNature) if (Entity.Format < 3) return; - var cb = Entity.Format >= 8 ? CB_StatNature : CB_Nature; + var cb = Entity.Format >= 8 ? CB_StatAlignment : CB_Nature; cb.SelectedValue = (int)newNature; } @@ -1796,10 +1796,10 @@ private void ValidateComboBox2(object? sender, EventArgs e) Stats.UpdateIVs(sender, EventArgs.Empty); // updating Nature will trigger stats to update as well UpdateLegality(); } - else if (sender == CB_StatNature) + else if (sender == CB_StatAlignment) { - Entity.StatNature = (Nature)WinFormsUtil.GetIndex(CB_StatNature); - UpdateNatureModification(CB_StatNature, Entity.StatNature); + Entity.StatAlignment = (Nature)WinFormsUtil.GetIndex(CB_StatAlignment); + UpdateNatureModification(CB_StatAlignment, Entity.StatAlignment); Stats.UpdateIVs(sender, EventArgs.Empty); // updating Nature will trigger stats to update as well UpdateLegality(); } @@ -2103,7 +2103,7 @@ private void ToggleInterface(byte format) CB_Ability.Visible = CB_Ability.TabStop = !DEV_Ability.Enabled && format >= 3; Label_Nature.Visible = CB_Nature.Visible = format >= 3; - L_StatNature.Visible = CB_StatNature.Visible = format >= 8; + L_StatAlignment.Visible = CB_StatAlignment.Visible = format >= 8; Label_Ability.Visible = FLP_AbilityRight.Visible = format >= 3; FLP_ExtraBytes.Visible = format >= 3; GB_Markings.Visible = GB_Markings.TabStop = format >= 3; @@ -2296,7 +2296,7 @@ private void InitializeLanguage(ITrainerInfo sav) CB_GroundTile.DataSource = new BindingSource(source.G4GroundTiles, string.Empty); CB_Nature.DataSource = new BindingSource(source.Natures, string.Empty); - CB_StatNature.DataSource = new BindingSource(source.Natures, string.Empty); + CB_StatAlignment.DataSource = new BindingSource(source.Natures, string.Empty); // Sub-editors Stats.InitializeDataSources(); diff --git a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs index 285d42f01..364f53c47 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs @@ -351,7 +351,7 @@ private void ClickStatLabel(object sender, MouseEventArgs e) _ => NatureAmpRequest.Increase, }; - var newNature = request.GetNewNature(index, Entity.StatNature); + var newNature = request.GetNewNature(index, Entity.StatAlignment); if (newNature == Nature.Random) return; diff --git a/PKHeX.WinForms/Resources/text/lang_de.txt b/PKHeX.WinForms/Resources/text/lang_de.txt index 48e1a4a07..a367e994b 100644 --- a/PKHeX.WinForms/Resources/text/lang_de.txt +++ b/PKHeX.WinForms/Resources/text/lang_de.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=Erlaube Gen 1 Rücktausch LocalizedDescription.AllowGuessRejuvenateHOME=Erlaube der PKM Konvertierung, legale Begegnungs Daten, welche nicht im vorherigen Format gespeichert sind, zu erraten. LocalizedDescription.AllowIncompatibleConversion=Erlaube PKM Transfer Methoden, die nicht offiziell möglich sind. Einzelne Eigenschaften werden der Reihe nach kopiert. LocalizedDescription.ApplyMarkings=Markierungen beim Import anwenden -LocalizedDescription.ApplyNature=Statuswesen auf Wesen beim Import anwenden +LocalizedDescription.ApplyStatAlignment=Statuswertanpassung auf Wesen beim Import anwenden LocalizedDescription.AutoLoadSaveOnStartup=Spielstand beim Programmstart automatisch erkennen LocalizedDescription.BackupPath=Pfad zum Backup-Ordner, in dem Sicherungskopien der Spielstände aufbewahrt werden. LocalizedDescription.BAKEnabled=Automatische Spielstand Backups aktiviert @@ -519,7 +519,7 @@ Main.L_SaveSlot=Speicher-Slot: Main.L_Scale=Größe: Main.L_ShadowID=Crypto-ID: Main.L_Spirit7b=Elan: -Main.L_StatNature=Status-Wesen: +Main.L_StatAlignment=Stat‑Anp.: Main.L_TeraTypeOriginal=Original Tera Typ: Main.L_TeraTypeOverride=Überschr. Tera Typ: Main.L_WalkingMood=Lauf-Laune: diff --git a/PKHeX.WinForms/Resources/text/lang_en.txt b/PKHeX.WinForms/Resources/text/lang_en.txt index a8b2a93cf..ed3130c2c 100644 --- a/PKHeX.WinForms/Resources/text/lang_en.txt +++ b/PKHeX.WinForms/Resources/text/lang_en.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB: Allow Generation 2 tradeback learnse LocalizedDescription.AllowGuessRejuvenateHOME=Allow PKM file conversion paths to guess the legal original encounter data that is not stored in the format that it was converted from. LocalizedDescription.AllowIncompatibleConversion=Allow PKM file conversion paths that are not possible via official methods. Individual properties will be copied sequentially. LocalizedDescription.ApplyMarkings=Apply Markings on Import -LocalizedDescription.ApplyNature=Apply StatNature to Nature on Import +LocalizedDescription.ApplyStatAlignment=Apply Stat Alignment to Nature on Import LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup LocalizedDescription.BackupPath=Path to the backup folder for keeping save file backups. LocalizedDescription.BAKEnabled=Automatic Save File Backups Enabled @@ -519,7 +519,7 @@ Main.L_SaveSlot=Save Slot: Main.L_Scale=Scale: Main.L_ShadowID=Shadow ID: Main.L_Spirit7b=Spirit: -Main.L_StatNature=Stat Nature: +Main.L_StatAlignment=Stat Alignment: Main.L_TeraTypeOriginal=Original Tera Type: Main.L_TeraTypeOverride=Override Tera Type: Main.L_WalkingMood=Walking Mood: diff --git a/PKHeX.WinForms/Resources/text/lang_es-419.txt b/PKHeX.WinForms/Resources/text/lang_es-419.txt index e4c134a8a..e8d860c34 100644 --- a/PKHeX.WinForms/Resources/text/lang_es-419.txt +++ b/PKHeX.WinForms/Resources/text/lang_es-419.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB: Permitir intercambio de movimientos LocalizedDescription.AllowGuessRejuvenateHOME=Permitir adivinar a la ruta de conversión de archivos PKM los datos del encuentro original que no estén almacenados en el formato origen. LocalizedDescription.AllowIncompatibleConversion=Permitir direcciones de conversión de archivos PKM que no son posibles por métodos oficiales. Las propiedades individuales serán copiadas secuencialmente. LocalizedDescription.ApplyMarkings=Aplicar marcadores al importar -LocalizedDescription.ApplyNature=Aplicar Naturaleza Estadística a la naturaleza al importar +LocalizedDescription.ApplyStatAlignment=Aplicar Variación de características a la naturaleza al importar LocalizedDescription.AutoLoadSaveOnStartup=Detectar automáticamente el archivo de guardado al iniciar el programa LocalizedDescription.BackupPath=Ruta a la carpeta de respaldos para conservar las copias de seguridad de las partidas. LocalizedDescription.BAKEnabled=Respaldo Automático de archivos de guardado habilitado @@ -519,7 +519,7 @@ Main.L_SaveSlot=Ranura de guardado: Main.L_Scale=Escala: Main.L_ShadowID=ID Oscuro: Main.L_Spirit7b=Ánimo: -Main.L_StatNature=Naturaleza Estad.: +Main.L_StatAlignment=Var. carac.: Main.L_TeraTypeOriginal=Teratipo original: Main.L_TeraTypeOverride=Teratipo sobreescrito: Main.L_WalkingMood=Humor de Caminar: diff --git a/PKHeX.WinForms/Resources/text/lang_es.txt b/PKHeX.WinForms/Resources/text/lang_es.txt index 5ab4e464b..f35de7d13 100644 --- a/PKHeX.WinForms/Resources/text/lang_es.txt +++ b/PKHeX.WinForms/Resources/text/lang_es.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB: Permitir intercambio de movimientos LocalizedDescription.AllowGuessRejuvenateHOME=Permitir adivinar a la ruta de conversión de archivos PKM los datos del encuentro original que no estén almacenados en el formato origen. LocalizedDescription.AllowIncompatibleConversion=Permitir direcciones de conversión de archivos PKM que no son posibles por métodos oficiales. Las propiedades individuales serán copiadas secuencialmente. LocalizedDescription.ApplyMarkings=Aplicar marcadores al importar -LocalizedDescription.ApplyNature=Aplicar Naturaleza Estadística a la naturaleza al importar +LocalizedDescription.ApplyStatAlignment=Aplicar Variación de características a la naturaleza al importar LocalizedDescription.AutoLoadSaveOnStartup=Detectar automáticamente el archivo de guardado al iniciar el programa LocalizedDescription.BackupPath=Ruta a la carpeta de copias de seguridad para guardar los archivos de respaldo. LocalizedDescription.BAKEnabled=Respaldo Automático de archivos de guardado habilitado @@ -519,7 +519,7 @@ Main.L_SaveSlot=Ranura de guardado: Main.L_Scale=Escala: Main.L_ShadowID=ID Oscuro: Main.L_Spirit7b=Ánimo: -Main.L_StatNature=Naturaleza Estad.: +Main.L_StatAlignment=Var. carac.: Main.L_TeraTypeOriginal=Teratipo original: Main.L_TeraTypeOverride=Teratipo sobreescrito: Main.L_WalkingMood=Humor de Caminar: diff --git a/PKHeX.WinForms/Resources/text/lang_fr.txt b/PKHeX.WinForms/Resources/text/lang_fr.txt index 424a66dc1..81c0c2a0f 100644 --- a/PKHeX.WinForms/Resources/text/lang_fr.txt +++ b/PKHeX.WinForms/Resources/text/lang_fr.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB : Autorise les attaques de revenants LocalizedDescription.AllowGuessRejuvenateHOME=Autorise les chemins de conversion des fichiers PKM de deviner les données de rencontre originales légales qui ne sont pas stockées dans le format à partir duquel elles ont été converties. LocalizedDescription.AllowIncompatibleConversion=Autorise les chemins de conversion des fichiers PKM qui ne sont pas possibles via les méthodes officielles. Les propriétés individuelles seront copiées de manière séquentielle. LocalizedDescription.ApplyMarkings=Appliquer des Marques lors de l'import -LocalizedDescription.ApplyNature=Appliquer StatNature à la Nature lors de l'import +LocalizedDescription.ApplyStatAlignment=Appliquer Ajust. de stats à la Nature lors de l'import LocalizedDescription.AutoLoadSaveOnStartup=Détection automatique du fichier de sauvegarde au démarrage du programme LocalizedDescription.BackupPath=Chemin vers le dossier de secours (backup) pour conserver des copies des sauvegardes. LocalizedDescription.BAKEnabled=Sauvegarde automatique des fichiers activée @@ -519,7 +519,7 @@ Main.L_SaveSlot=Sauvegarde : Main.L_Scale=Échelle : Main.L_ShadowID=ID Obscur : Main.L_Spirit7b=Esprit : -Main.L_StatNature=Stat nature : +Main.L_StatAlignment=Stat alignement : Main.L_TeraTypeOriginal=Type Téra d'origine : Main.L_TeraTypeOverride=Type Téra remplaçant : Main.L_WalkingMood=Humeur de marche : diff --git a/PKHeX.WinForms/Resources/text/lang_it.txt b/PKHeX.WinForms/Resources/text/lang_it.txt index 2e11f54aa..494d645c3 100644 --- a/PKHeX.WinForms/Resources/text/lang_it.txt +++ b/PKHeX.WinForms/Resources/text/lang_it.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB:Consenti insieme di mosse tradeback d LocalizedDescription.AllowGuessRejuvenateHOME=Prova ad indovinare dati di incontro originali legali, quando questi non sono contenuti all'interno del file di origine. LocalizedDescription.AllowIncompatibleConversion=Consenti conversioni di file PKM via percorsi non possibili con metodi ufficiali. Le proprietà individuali verranno copiate in maniera sequenziale. LocalizedDescription.ApplyMarkings=Applica Segnalini durante l'importazione -LocalizedDescription.ApplyNature=Applica la Natura delle Statistiche alla Natura durante l'importazine. +LocalizedDescription.ApplyStatAlignment=Applica Calibrazione statistiche alla Natura durante l'importazione. LocalizedDescription.AutoLoadSaveOnStartup=Rileva automaticamente il tipo del Salvtaggio durante l'Avvio. LocalizedDescription.BackupPath=Percorso della cartella di backup per la conservazione dei salvataggi. LocalizedDescription.BAKEnabled=Backup automatico dei File di Salvataggio attivo. @@ -519,7 +519,7 @@ Main.L_SaveSlot=Slot Salvataggio: Main.L_Scale=Scala: Main.L_ShadowID=ID Ombra: Main.L_Spirit7b=Entusiasmo: -Main.L_StatNature=Natura Statistiche: +Main.L_StatAlignment=Calib. stat.: Main.L_TeraTypeOriginal=Teratipo originale: Main.L_TeraTypeOverride=Teratipo sostitutivo: Main.L_WalkingMood=Umore a spasso: diff --git a/PKHeX.WinForms/Resources/text/lang_ja.txt b/PKHeX.WinForms/Resources/text/lang_ja.txt index 4cd71ab3a..05efa6a49 100644 --- a/PKHeX.WinForms/Resources/text/lang_ja.txt +++ b/PKHeX.WinForms/Resources/text/lang_ja.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB: 第2世代からの逆輸入によ LocalizedDescription.AllowGuessRejuvenateHOME=PKMファイル変換時、変換元形式に保存されていない正規な元の出会い情報を推測することを許可します。 LocalizedDescription.AllowIncompatibleConversion=公式手段では不可能なPKMファイル変換経路を許可します。各プロパティは順番にコピーされます。 LocalizedDescription.ApplyMarkings=インポート時にマーキングを適用する。 -LocalizedDescription.ApplyNature=インポート時に、ミントによって変化した性格を元々の性格として適用します。 +LocalizedDescription.ApplyStatAlignment=インポート時に、ミントによって変化した能力補正を元々の能力補正として適用します。 LocalizedDescription.AutoLoadSaveOnStartup=起動時にセーブファイルを自動的に検出します。 LocalizedDescription.BackupPath=セーブファイルのバックアップを保存するためのバックアップフォルダーのパス。 LocalizedDescription.BAKEnabled=セーブデータの自動バックアップを有効にします。 @@ -519,7 +519,7 @@ Main.L_SaveSlot=セーブスロット: Main.L_Scale=サイズ Main.L_ShadowID=ダークポケモンID Main.L_Spirit7b=やるき: -Main.L_StatNature=ミント性格補正 +Main.L_StatAlignment=能力補正 Main.L_TeraTypeOriginal=元のテラスタイプ Main.L_TeraTypeOverride=変更テラスタイプ Main.L_WalkingMood=きげん: diff --git a/PKHeX.WinForms/Resources/text/lang_ko.txt b/PKHeX.WinForms/Resources/text/lang_ko.txt index 3590015d4..ee6c6348e 100644 --- a/PKHeX.WinForms/Resources/text/lang_ko.txt +++ b/PKHeX.WinForms/Resources/text/lang_ko.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB: 2세대에서 옮겨온 1세대 기 LocalizedDescription.AllowGuessRejuvenateHOME=변환된 형식에 저장되지 않은 합법적인 원래 출현 데이터를 PKM 파일 변환 경로가 추측하도록 허용. LocalizedDescription.AllowIncompatibleConversion=공식 방식으로는 불가능한 PKM 파일 변환 경로를 허용합니다. 개별 속성은 순차적으로 복사됩니다. LocalizedDescription.ApplyMarkings=가져오기 시 마킹하기 -LocalizedDescription.ApplyNature=임포트시 자연에 StatNature 적용 +LocalizedDescription.ApplyStatAlignment=임포트시 자연에 능력 보정 적용 LocalizedDescription.AutoLoadSaveOnStartup=프로그램 시작 시 저장 파일 자동 감지 LocalizedDescription.BackupPath=저장 파일 백업을 위한 백업 폴더 경로 LocalizedDescription.BAKEnabled=세이브 파일 자동 백업 사용 @@ -519,7 +519,7 @@ Main.L_SaveSlot=세이브 슬롯: Main.L_Scale=배율: Main.L_ShadowID=다크 ID: Main.L_Spirit7b=의욕: -Main.L_StatNature=능력치 성격: +Main.L_StatAlignment=능력 보정: Main.L_TeraTypeOriginal=원래 테라스탈타입: Main.L_TeraTypeOverride=변경된 테라스탈타입: Main.L_WalkingMood=걷는 기분: diff --git a/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt b/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt index a1fc5f1fe..b37ba715f 100644 --- a/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt +++ b/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB 允许二代传回的招式组合 LocalizedDescription.AllowGuessRejuvenateHOME=允许在PKM文件转换中猜测那些未在文件中存储的合法原始相遇数据。 LocalizedDescription.AllowIncompatibleConversion=允许在PKM文件使用非官方方法转换,其个体值将按顺序复制。 LocalizedDescription.ApplyMarkings=导入时标记。 -LocalizedDescription.ApplyNature=在导入时将修正性格应用于性格。 +LocalizedDescription.ApplyStatAlignment=在导入时将能力调整应用为原始的能力调整。 LocalizedDescription.AutoLoadSaveOnStartup=在程序启动时自动加载存档文件。 LocalizedDescription.BackupPath=用于保存存档备份的备份文件夹路径。 LocalizedDescription.BAKEnabled=自动保存文件备份已启用 @@ -519,7 +519,7 @@ Main.L_SaveSlot=存档槽: Main.L_Scale=大小: Main.L_ShadowID=黑暗ID: Main.L_Spirit7b=干劲: -Main.L_StatNature=薄荷修正: +Main.L_StatAlignment=能力调整: Main.L_TeraTypeOriginal=原始太晶属性: Main.L_TeraTypeOverride=修正太晶属性: Main.L_WalkingMood=跟随宝可梦心情: diff --git a/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt b/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt index 9afa22666..3396d70a3 100644 --- a/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt +++ b/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt @@ -272,7 +272,7 @@ LocalizedDescription.AllowGen1Tradeback=GB 允許從第二世代傳回之招式 LocalizedDescription.AllowGuessRejuvenateHOME=允許 PKM 檔轉換時猜測未於轉換格式存儲的合法原始遇見數據。 LocalizedDescription.AllowIncompatibleConversion=允許 PKM 檔依照非官方方法進行轉換。個體值將按順序複製。 LocalizedDescription.ApplyMarkings=導入時標記 -LocalizedDescription.ApplyNature=在導入時將修正性格應用於性格 +LocalizedDescription.ApplyStatAlignment=在導入時將能力調整套用為原始的能力調整。 LocalizedDescription.AutoLoadSaveOnStartup=在程式啟動時自動載入儲存資料檔 LocalizedDescription.BackupPath=用於保存存檔備份的備份資料夾路徑。 LocalizedDescription.BAKEnabled=自動保儲存資料案備份已啟用 @@ -519,7 +519,7 @@ Main.L_SaveSlot=儲存資料槽: Main.L_Scale=尺寸: Main.L_ShadowID=黑暗ID: Main.L_Spirit7b=幹勁: -Main.L_StatNature=薄荷修正性格: +Main.L_StatAlignment=能力調整: Main.L_TeraTypeOriginal=原始太晶屬性: Main.L_TeraTypeOverride=轉變太晶屬性: Main.L_WalkingMood=跟隨寶可夢心情: