From cbda6379817a410104ecf25ffd2256b56c46ecda Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 6 Sep 2017 09:12:56 -0700 Subject: [PATCH] Remove old (GF fixed) shiny correlation Transporter was updated --- PKHeX.Core/Legality/Checks.cs | 4 +++ PKHeX.Core/PKM/PK1.cs | 34 +++++++++++++++++-- PKHeX.Core/PKM/PK2.cs | 2 +- PKHeX.Core/PKM/PKM.cs | 21 ++++-------- PKHeX.Core/PersonalInfo/PersonalInfoG1.cs | 2 +- PKHeX.Core/PersonalInfo/PersonalTable.cs | 8 +++-- .../Controls/PKM Editor/PKMEditor.cs | 7 ++-- 7 files changed, 53 insertions(+), 25 deletions(-) diff --git a/PKHeX.Core/Legality/Checks.cs b/PKHeX.Core/Legality/Checks.cs index 296e9767c..7051e2460 100644 --- a/PKHeX.Core/Legality/Checks.cs +++ b/PKHeX.Core/Legality/Checks.cs @@ -1918,6 +1918,10 @@ private void VerifyMiscG1() if (pkm.PKRS_Cured || pkm.PKRS_Infected) AddLine(Severity.Invalid, V368, CheckIdentifier.Egg); } + + if (pkm.Format > 2 && pkm.VC2 && pkm.Gender == 1 && pkm.PersonalInfo.Gender == 31 && pkm.IsShiny) + AddLine(Severity.Invalid, V209, CheckIdentifier.PID); + if (!(pkm is PK1 pk1)) return; diff --git a/PKHeX.Core/PKM/PK1.cs b/PKHeX.Core/PKM/PK1.cs index 691e766f4..d19afaece 100644 --- a/PKHeX.Core/PKM/PK1.cs +++ b/PKHeX.Core/PKM/PK1.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.Linq; namespace PKHeX.Core @@ -234,10 +235,9 @@ public override bool IsGenderValid() public override int Nature { get => 0; set { } } public override int AltForm { get => 0; set { } } public override bool IsEgg { get => false; set { } } - public override int Gender { get => 0; set { } } public override int HeldItem { get => 0; set { } } public override bool CanHoldItem(ushort[] ValidArray) => false; - public override bool IsShiny => IV_ATK == 10 && IV_SPE == 10 && IV_SPC == 10 && (IV_DEF & 2) == 2; + public override bool IsShiny => IV_DEF == 10 && IV_SPE == 10 && IV_SPC == 10 && (IV_ATK & 2) == 2; public override ushort Sanity { get => 0; set { } } public override bool ChecksumValid => true; public override ushort Checksum { get => 0; set { } } @@ -268,6 +268,34 @@ public override bool IsGenderValid() #endregion public bool CatchRateIsItem = false; + public override int Gender + { + get + { + int gv = PersonalInfo.Gender; + if (gv == 255) + return 2; + if (gv == 254) + return 1; + if (gv == 0) + return 0; + switch (gv) + { + case 31: + return IV_ATK >= 2 ? 0 : 1; + case 63: + return IV_ATK >= 5 ? 0 : 1; + case 127: + return IV_ATK >= 7 ? 0 : 1; + case 191: + return IV_ATK >= 12 ? 0 : 1; + } + Debug.WriteLine("Unknown Gender value: " + gv); + return 0; + } + set { } + } + // Maximums public override int MaxMoveID => Legal.MaxMoveID_1; public override int MaxSpeciesID => Legal.MaxSpeciesID_1; @@ -347,7 +375,7 @@ public PK7 ConvertToPK7() Move3_PP = Move3_PP, Move4_PP = Move4_PP, Met_Location = 30013, // "Kanto region", hardcoded. - Gender = PersonalTable.SM[Species].RandomGender, + Gender = Gender, OT_Name = StringConverter.GetG1ConvertedString(otname, Japanese), IsNicknamed = false, diff --git a/PKHeX.Core/PKM/PK2.cs b/PKHeX.Core/PKM/PK2.cs index f166a7dee..048c0d9af 100644 --- a/PKHeX.Core/PKM/PK2.cs +++ b/PKHeX.Core/PKM/PK2.cs @@ -395,7 +395,7 @@ public PK7 ConvertToPK7() Move3_PP = Move3_PP, Move4_PP = Move4_PP, Met_Location = 30004, - Gender = PersonalTable.SM[Species].RandomGender, + Gender = Gender, OT_Name = StringConverter.GetG1ConvertedString(otname, Japanese), IsNicknamed = false, diff --git a/PKHeX.Core/PKM/PKM.cs b/PKHeX.Core/PKM/PKM.cs index 13ee709c9..6281a7005 100644 --- a/PKHeX.Core/PKM/PKM.cs +++ b/PKHeX.Core/PKM/PKM.cs @@ -777,23 +777,14 @@ protected int GetBasePP(int move) /// public void SetShinyIVs() { - int[] and2 = { 2, 3, 6, 7, 10, 11, 14, 15 }; - switch (Format) - { - default: - return; - case 1: - IV_ATK = 10; // an attempt was made - IV_DEF = randIV(); - break; - case 2: - IV_DEF = 10; - IV_ATK = randIV(); - break; - } + if (Format > 2) + return; + + int[] and2 = {2, 3, 6, 7, 10, 11, 14, 15}; + IV_ATK = and2[Util.Rand32() & 7]; + IV_DEF = 10; IV_SPE = 10; IV_SPA = 10; - int randIV() => and2[Util.Rand32() & 7]; } /// diff --git a/PKHeX.Core/PersonalInfo/PersonalInfoG1.cs b/PKHeX.Core/PersonalInfo/PersonalInfoG1.cs index 657ec8c2f..3b45e3eea 100644 --- a/PKHeX.Core/PersonalInfo/PersonalInfoG1.cs +++ b/PKHeX.Core/PersonalInfo/PersonalInfoG1.cs @@ -59,7 +59,7 @@ public override int[] Types public override int[] Items { get => new[] { 0, 0 }; set { } } public override int[] EggGroups { get => new[] { 0, 0 }; set { } } public override int[] Abilities { get => new[] { 0, 0 }; set { } } - public override int Gender { get => 0; set { } } + public override int Gender { get; set; } public override int HatchCycles { get => 0; set { } } public override int BaseFriendship { get => 0; set { } } public override int EscapeRate { get => 0; set { } } diff --git a/PKHeX.Core/PersonalInfo/PersonalTable.cs b/PKHeX.Core/PersonalInfo/PersonalTable.cs index dc8c5a674..99b04b116 100644 --- a/PKHeX.Core/PersonalInfo/PersonalTable.cs +++ b/PKHeX.Core/PersonalInfo/PersonalTable.cs @@ -91,15 +91,19 @@ private static int GetEntrySize(GameVersion format) } static PersonalTable() // Finish Setup { - FixPersonalTableY(); + FixPersonalTableG1(); PopulateGen3Tutors(); PopulateGen4Tutors(); } - private static void FixPersonalTableY() + private static void FixPersonalTableG1() { // Update Yellow's catch rates; currently matches Red/Blue's values. Y[25].CatchRate = 163; // Pikachu Y[64].CatchRate = 96; // Kadabra + + // Load Gen2 Gender Ratios into Gen1 + for (int i = 0; i < 151; i++) + RB[i].Gender = Y[i].Gender = GS[i].Gender; } private static void PopulateGen3Tutors() { diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index 107388210..6358afa0d 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -530,7 +530,7 @@ private void ClickGender(object sender, EventArgs e) // If not a single gender(less) species: (should be <254 but whatever, 255 never happens) int newGender = PKX.GetGender(Label_Gender.Text) ^ 1; - if (pkm.Format == 2) + if (pkm.Format <= 2) do { TB_ATKIV.Text = (Util.Rand32() & pkm.MaxIV).ToString(); } while (PKX.GetGender(Label_Gender.Text) != newGender); else if (pkm.Format <= 4) { @@ -879,7 +879,7 @@ private void UpdateIVs(object sender, EventArgs e) { TB_HPIV.Text = pkm.IV_HP.ToString(); TB_SPDIV.Text = TB_SPAIV.Text; - if (pkm.Format == 2) + if (pkm.Format <= 2) { Label_Gender.Text = gendersymbols[pkm.Gender]; Label_Gender.ForeColor = GetGenderColor(pkm.Gender); @@ -1823,9 +1823,10 @@ private void ToggleInterface(int gen) FLP_FriendshipForm.Visible = gen >= 2; FLP_HeldItem.Visible = gen >= 2; - CHK_IsEgg.Visible = Label_Gender.Visible = gen >= 2; + CHK_IsEgg.Visible = gen >= 2; FLP_PKRS.Visible = FLP_EggPKRSRight.Visible = gen >= 2; Label_OTGender.Visible = gen >= 2; + Label_Gender.Visible = gen >= 1; // HaX override, needs to be after DEV_Ability enabled assignment. TB_AbilityNumber.Visible = gen >= 6 && DEV_Ability.Enabled;