From 8f833d81718f32858ad398c07a85abdebfbc7655 Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 14 Jun 2017 18:43:28 -0700 Subject: [PATCH] Simplify max item count give/modify 999 is true max, set suggested give count to -4 from max (or 1). Apply giveAll's max value restriction to modifyAll Prevent giveall/modifyall for PCItems/FreeSpace due to mixed item types. Closes #1228 Closes #1227 --- PKHeX.Core/Saves/SAV3.cs | 2 +- PKHeX.Core/Saves/SAV3Colosseum.cs | 10 ++-- PKHeX.Core/Saves/SAV3XD.cs | 12 ++--- PKHeX.Core/Saves/SAV4.cs | 14 ++--- PKHeX.Core/Saves/SAV5.cs | 6 +-- PKHeX.Core/Saves/SAV6.cs | 6 +-- .../Subforms/Save Editors/SAV_Inventory.cs | 53 +++++++++++-------- 7 files changed, 56 insertions(+), 47 deletions(-) diff --git a/PKHeX.Core/Saves/SAV3.cs b/PKHeX.Core/Saves/SAV3.cs index 095e0af2a..0c28b34e0 100644 --- a/PKHeX.Core/Saves/SAV3.cs +++ b/PKHeX.Core/Saves/SAV3.cs @@ -383,7 +383,7 @@ public override InventoryPouch[] Inventory { get { - int max = Version == GameVersion.FRLG ? 995 : 95; + int max = Version == GameVersion.FRLG ? 999 : 99; var PCItems = new [] {LegalItems, LegalKeyItems, LegalKeyItems, LegalBalls, LegalTMHMs, LegalBerries}.SelectMany(a => a).ToArray(); InventoryPouch[] pouch = { diff --git a/PKHeX.Core/Saves/SAV3Colosseum.cs b/PKHeX.Core/Saves/SAV3Colosseum.cs index 754c85f55..85e802246 100644 --- a/PKHeX.Core/Saves/SAV3Colosseum.cs +++ b/PKHeX.Core/Saves/SAV3Colosseum.cs @@ -365,12 +365,12 @@ public override InventoryPouch[] Inventory { InventoryPouch[] pouch = { - new InventoryPouch(InventoryType.Items, LegalItems, 995, OFS_PouchHeldItem, 20), // 20 COLO, 30 XD + new InventoryPouch(InventoryType.Items, LegalItems, 999, OFS_PouchHeldItem, 20), // 20 COLO, 30 XD new InventoryPouch(InventoryType.KeyItems, LegalKeyItems, 1, OFS_PouchKeyItem, 43), - new InventoryPouch(InventoryType.Balls, LegalBalls, 995, OFS_PouchBalls, 16), - new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 995, OFS_PouchTMHM, 64), - new InventoryPouch(InventoryType.Berries, LegalBerries, 995, OFS_PouchBerry, 46), - new InventoryPouch(InventoryType.Medicine, LegalCologne, 995, OFS_PouchCologne, 3), // Cologne + new InventoryPouch(InventoryType.Balls, LegalBalls, 999, OFS_PouchBalls, 16), + new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 999, OFS_PouchTMHM, 64), + new InventoryPouch(InventoryType.Berries, LegalBerries, 999, OFS_PouchBerry, 46), + new InventoryPouch(InventoryType.Medicine, LegalCologne, 999, OFS_PouchCologne, 3), // Cologne }; foreach (var p in pouch) p.getPouchBigEndian(ref Data); diff --git a/PKHeX.Core/Saves/SAV3XD.cs b/PKHeX.Core/Saves/SAV3XD.cs index f9f3cf12e..f4c0d67bb 100644 --- a/PKHeX.Core/Saves/SAV3XD.cs +++ b/PKHeX.Core/Saves/SAV3XD.cs @@ -329,13 +329,13 @@ public override InventoryPouch[] Inventory { InventoryPouch[] pouch = { - new InventoryPouch(InventoryType.Items, LegalItems, 995, OFS_PouchHeldItem, 30), // 20 COLO, 30 XD + new InventoryPouch(InventoryType.Items, LegalItems, 999, OFS_PouchHeldItem, 30), // 20 COLO, 30 XD new InventoryPouch(InventoryType.KeyItems, LegalKeyItems, 1, OFS_PouchKeyItem, 43), - new InventoryPouch(InventoryType.Balls, LegalBalls, 995, OFS_PouchBalls, 16), - new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 995, OFS_PouchTMHM, 64), - new InventoryPouch(InventoryType.Berries, LegalBerries, 995, OFS_PouchBerry, 46), - new InventoryPouch(InventoryType.Medicine, LegalCologne, 995, OFS_PouchCologne, 3), // Cologne - new InventoryPouch(InventoryType.BattleItems, LegalDisc, 995, OFS_PouchDisc, 60) + new InventoryPouch(InventoryType.Balls, LegalBalls, 999, OFS_PouchBalls, 16), + new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 999, OFS_PouchTMHM, 64), + new InventoryPouch(InventoryType.Berries, LegalBerries, 999, OFS_PouchBerry, 46), + new InventoryPouch(InventoryType.Medicine, LegalCologne, 999, OFS_PouchCologne, 3), // Cologne + new InventoryPouch(InventoryType.BattleItems, LegalDisc, 999, OFS_PouchDisc, 60) }; foreach (var p in pouch) p.getPouchBigEndian(ref Data); diff --git a/PKHeX.Core/Saves/SAV4.cs b/PKHeX.Core/Saves/SAV4.cs index 8cdd963b0..9971198e9 100644 --- a/PKHeX.Core/Saves/SAV4.cs +++ b/PKHeX.Core/Saves/SAV4.cs @@ -286,14 +286,14 @@ public override InventoryPouch[] Inventory { InventoryPouch[] pouch = { - new InventoryPouch(InventoryType.Items, LegalItems, 995, OFS_PouchHeldItem), + new InventoryPouch(InventoryType.Items, LegalItems, 999, OFS_PouchHeldItem), new InventoryPouch(InventoryType.KeyItems, LegalKeyItems, 1, OFS_PouchKeyItem), - new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 95, OFS_PouchTMHM), - new InventoryPouch(InventoryType.Medicine, LegalMedicine, 995, OFS_PouchMedicine), - new InventoryPouch(InventoryType.Berries, LegalBerries, 995, OFS_PouchBerry), - new InventoryPouch(InventoryType.Balls, LegalBalls, 995, OFS_PouchBalls), - new InventoryPouch(InventoryType.BattleItems, LegalBattleItems, 995, OFS_BattleItems), - new InventoryPouch(InventoryType.MailItems, LegalMailItems, 995, OFS_MailItems), + new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 99, OFS_PouchTMHM), + new InventoryPouch(InventoryType.Medicine, LegalMedicine, 999, OFS_PouchMedicine), + new InventoryPouch(InventoryType.Berries, LegalBerries, 999, OFS_PouchBerry), + new InventoryPouch(InventoryType.Balls, LegalBalls, 999, OFS_PouchBalls), + new InventoryPouch(InventoryType.BattleItems, LegalBattleItems, 999, OFS_BattleItems), + new InventoryPouch(InventoryType.MailItems, LegalMailItems, 999, OFS_MailItems), }; foreach (var p in pouch) p.getPouch(ref Data); diff --git a/PKHeX.Core/Saves/SAV5.cs b/PKHeX.Core/Saves/SAV5.cs index 6123aa030..328dfa323 100644 --- a/PKHeX.Core/Saves/SAV5.cs +++ b/PKHeX.Core/Saves/SAV5.cs @@ -412,11 +412,11 @@ public override InventoryPouch[] Inventory { InventoryPouch[] pouch = { - new InventoryPouch(InventoryType.Items, LegalItems, 995, OFS_PouchHeldItem), + new InventoryPouch(InventoryType.Items, LegalItems, 999, OFS_PouchHeldItem), new InventoryPouch(InventoryType.KeyItems, LegalKeyItems, 1, OFS_PouchKeyItem), new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 1, OFS_PouchTMHM), - new InventoryPouch(InventoryType.Medicine, LegalMedicine, 995, OFS_PouchMedicine), - new InventoryPouch(InventoryType.Berries, LegalBerries, 995, OFS_PouchBerry), + new InventoryPouch(InventoryType.Medicine, LegalMedicine, 999, OFS_PouchMedicine), + new InventoryPouch(InventoryType.Berries, LegalBerries, 999, OFS_PouchBerry), }; foreach (var p in pouch) p.getPouch(ref Data); diff --git a/PKHeX.Core/Saves/SAV6.cs b/PKHeX.Core/Saves/SAV6.cs index 0be2d50ea..d332e9c0b 100644 --- a/PKHeX.Core/Saves/SAV6.cs +++ b/PKHeX.Core/Saves/SAV6.cs @@ -691,11 +691,11 @@ public override InventoryPouch[] Inventory ushort[] legalMedicine = ORAS ? Legal.Pouch_Medicine_AO : Legal.Pouch_Medicine_XY; InventoryPouch[] pouch = { - new InventoryPouch(InventoryType.Items, legalItems, 995, OFS_PouchHeldItem), + new InventoryPouch(InventoryType.Items, legalItems, 999, OFS_PouchHeldItem), new InventoryPouch(InventoryType.KeyItems, legalKey, 1, OFS_PouchKeyItem), new InventoryPouch(InventoryType.TMHMs, legalTMHM, 1, OFS_PouchTMHM), - new InventoryPouch(InventoryType.Medicine, legalMedicine, 995, OFS_PouchMedicine), - new InventoryPouch(InventoryType.Berries, Legal.Pouch_Berry_XY, 995, OFS_PouchBerry), + new InventoryPouch(InventoryType.Medicine, legalMedicine, 999, OFS_PouchMedicine), + new InventoryPouch(InventoryType.Berries, Legal.Pouch_Berry_XY, 999, OFS_PouchBerry), }; foreach (var p in pouch) p.getPouch(ref Data); diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs index 4c0ba53ba..00bbfbde5 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs @@ -248,7 +248,19 @@ private void switchBag(object sender, EventArgs e) else NUD_Count.Maximum = pouch.MaxCount; - NUD_Count.Value = pouch.Type == InventoryType.KeyItems ? 1 : pouch.MaxCount; + bool disable = pouch.Type == InventoryType.PCItems || pouch.Type == InventoryType.FreeSpace; + NUD_Count.Visible = L_Count.Visible = B_GiveAll.Visible = !disable; + if (disable && !Main.HaX) + { + giveMenu.Items.Remove(giveAll); + giveMenu.Items.Remove(giveModify); + } + else if (!giveMenu.Items.Contains(giveAll)) + { + giveMenu.Items.Insert(0, giveAll); + giveMenu.Items.Add(giveModify); + } + NUD_Count.Value = Math.Max(1, pouch.MaxCount - 4); } // Initialize String Tables @@ -297,30 +309,13 @@ private void giveAllItems(object sender, EventArgs e) int Count = (int)NUD_Count.Value; for (int i = 0; i < legalitems.Length; i++) { - int item = legalitems[i]; + ushort item = legalitems[i]; var itemname = itemlist[item]; int c = Count; // Override for HMs - switch (SAV.Generation) - { - case 1: - if (197 >= item && item <= 201) - c = 1; - break; - case 2: - if (item >= 244) - c = 1; - break; - case 3: - if (Legal.Pouch_HM_RS.Contains(legalitems[i])) - c = 1; - break; - default: - if (new[] { 420, 421, 422, 423, 423, 424, 425, 426, 427, 737 }.Contains(legalitems[i])) - c = 1; - break; - } + if (getIsCappedItemCount(item, SAV)) + c = 1; int l = 0; dgv.Rows[i].Cells[l++].Value = itemname; @@ -334,6 +329,20 @@ private void giveAllItems(object sender, EventArgs e) } System.Media.SystemSounds.Asterisk.Play(); } + private static bool getIsCappedItemCount(ushort item, SaveFile sav) + { + switch (sav.Generation) + { + case 1: + return 196 >= item && item <= 200; // HMs + case 2: + return item >= 244; + case 3: + return Legal.Pouch_HM_RS.Contains(item); + default: + return new[] {420, 421, 422, 423, 423, 424, 425, 426, 427, 737}.Contains(item); + } + } private void removeAllItems(object sender, EventArgs e) { // Get Current Pouch @@ -369,7 +378,7 @@ private void modifyAllItems(object sender, EventArgs e) string item = dgv.Rows[i].Cells[0].Value.ToString(); int itemindex = Array.IndexOf(itemlist, item); if (itemindex > 0) - dgv.Rows[i].Cells[1].Value = NUD_Count.Value; + dgv.Rows[i].Cells[1].Value = getIsCappedItemCount((ushort)itemindex, SAV) ? 1 : NUD_Count.Value; } WinFormsUtil.Alert("Item count modified.");