From 85fe76b5be993047346c9a9d47bd399fd397b33f Mon Sep 17 00:00:00 2001 From: CraftyBoss Date: Fri, 22 May 2026 23:03:06 -0700 Subject: [PATCH] add tracker_isStageItem for Freestanding Item checking --- src/dusk/imgui/ImGuiMenuRandomizer.cpp | 2 +- src/dusk/randomizer/game/tools.cpp | 8 ++++++++ src/dusk/randomizer/game/tools.h | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/dusk/imgui/ImGuiMenuRandomizer.cpp b/src/dusk/imgui/ImGuiMenuRandomizer.cpp index f8bc919ab1..e807481a34 100644 --- a/src/dusk/imgui/ImGuiMenuRandomizer.cpp +++ b/src/dusk/imgui/ImGuiMenuRandomizer.cpp @@ -378,7 +378,7 @@ namespace dusk { } else if (auto& freeStandingItemNode = locationMeta["Freestanding Item"]) { auto flag = freeStandingItemNode[0]["Flag"].as(); auto stageId = getStageSaveId(freeStandingItemNode[0]["Stage"].as()); - info.collected = tracker_isStageSwitch(stageId, flag); + info.collected = tracker_isStageItem(stageId, flag); } else if (auto& eventFlagNode = locationMeta["Event Flag"]) { auto flag = eventFlagNode.as(); info.collected = tracker_isEventBit(flag); diff --git a/src/dusk/randomizer/game/tools.cpp b/src/dusk/randomizer/game/tools.cpp index eb75ae521b..d666bbb0e5 100644 --- a/src/dusk/randomizer/game/tools.cpp +++ b/src/dusk/randomizer/game/tools.cpp @@ -590,4 +590,12 @@ bool tracker_isStageSwitch(int stage, int flag) { return dComIfGs_isStageSwitch(stage, flag) || (g_randomizerState.mTrackerTempSwitchFlag.flag == flag && g_randomizerState.mTrackerTempSwitchFlag.stage == stage); +} + +bool tracker_isStageItem(int stage, int flag) { + if (dComIfGp_getStageStagInfo() && stage == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { + return dComIfGs_isItem(flag, -1); + } else { + return g_dComIfG_gameInfo.info.getSavedata().getSave(stage).getBit().isItem(flag); + } } \ No newline at end of file diff --git a/src/dusk/randomizer/game/tools.h b/src/dusk/randomizer/game/tools.h index a19215fff4..49a965487d 100644 --- a/src/dusk/randomizer/game/tools.h +++ b/src/dusk/randomizer/game/tools.h @@ -29,4 +29,5 @@ int getStageSaveId(int id); int getStageSaveId(const char* stage); bool tracker_isEventBit(u16 flag); -bool tracker_isStageSwitch(int stage, int flag); \ No newline at end of file +bool tracker_isStageSwitch(int stage, int flag); +bool tracker_isStageItem(int stage, int flag); \ No newline at end of file