From 0b3ebd584d1e8d5b7669f3f3ba09e110dd8e9e17 Mon Sep 17 00:00:00 2001 From: chartergirl64 Date: Sun, 29 Mar 2026 03:32:40 -0400 Subject: [PATCH] [bug fix] Changes item tracker capacity to recognize progressive chu bag limits (#6436) --- .../randomizer/randomizer_item_tracker.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index c2d6cf3be..0ccc205a6 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -537,11 +537,24 @@ ItemTrackerNumbers GetItemCurrentAndMax(ItemTrackerItem item) { : 500; result.currentAmmo = gSaveContext.rupees; break; - case ITEM_BOMBCHU: - result.currentCapacity = INV_CONTENT(ITEM_BOMBCHU) == ITEM_BOMBCHU ? 50 : 0; + case ITEM_BOMBCHU: { + auto bombchuBag = RAND_GET_OPTION(RSK_BOMBCHU_BAG); + + uint8_t capacity = 0; + + if (INV_CONTENT(ITEM_BOMBCHU) == ITEM_BOMBCHU) { + if (bombchuBag.Is(RO_BOMBCHU_BAG_PROGRESSIVE)) { + capacity = OTRGlobals::Instance->gRandoContext->GetBombchuCapacity(); + } else { + capacity = 50; + } + } + + result.currentCapacity = capacity; result.maxCapacity = 50; result.currentAmmo = AMMO(ITEM_BOMBCHU); break; + } case ITEM_BEAN: result.currentCapacity = INV_CONTENT(ITEM_BEAN) == ITEM_BEAN ? 10 : 0; result.maxCapacity = 10; @@ -702,7 +715,7 @@ void DrawItemCount(ItemTrackerItem item, bool hideMax) { bool shouldDisplayAmmo = trackerNumberDisplayMode == ITEM_TRACKER_NUMBER_AMMO || trackerNumberDisplayMode == ITEM_TRACKER_NUMBER_CURRENT_AMMO_ONLY || // These items have a static capacity, so display ammo instead - item.id == ITEM_BOMBCHU || item.id == ITEM_BEAN || item.id == QUEST_SKULL_TOKEN || + item.id == ITEM_BEAN || item.id == QUEST_SKULL_TOKEN || item.id == ITEM_HEART_CONTAINER || item.id == ITEM_HEART_PIECE; bool shouldDisplayMax = !(trackerNumberDisplayMode == ITEM_TRACKER_NUMBER_CURRENT_CAPACITY_ONLY ||