summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEblo <7004497+Eblo@users.noreply.github.com>2025-08-30 22:42:54 -0400
committerGitHub <noreply@github.com>2025-08-30 20:42:54 -0600
commita07bf794af957c74f1516dbd59057f0a239adb7c (patch)
tree76924c34d140ba94b97b22e8c0e02be175d2cba2
parent31f18278e15fa23a9ef2bed20d5c56999200155d (diff)
[Rando] Reset cycle collectible flags on cycle save (#1254)
-rw-r--r--mm/2s2h/Rando/MiscBehavior/OnCycleSave.cpp13
-rw-r--r--mm/2s2h/Rando/StaticData/Checks.cpp2
2 files changed, 12 insertions, 3 deletions
diff --git a/mm/2s2h/Rando/MiscBehavior/OnCycleSave.cpp b/mm/2s2h/Rando/MiscBehavior/OnCycleSave.cpp
index 2dda00f7d..473a61c70 100644
--- a/mm/2s2h/Rando/MiscBehavior/OnCycleSave.cpp
+++ b/mm/2s2h/Rando/MiscBehavior/OnCycleSave.cpp
@@ -87,8 +87,17 @@ void Rando::MiscBehavior::AfterEndOfCycleSave() {
~(1 << (randoStaticCheck.flag & 0x1F));
}
break;
- // most of the others are handled by the game, with the exception of PERSISTENT_CYCLE_FLAGS_SET, not
- // sure if any of these cases affect us yet so ignoring for now
+ case FLAG_CYCL_SCENE_COLLECTIBLE:
+ // Clear the flag without triggering hook
+ if (gPlayState->sceneId == randoStaticCheck.sceneId) {
+ gPlayState->actorCtx.sceneFlags.collectible[(randoStaticCheck.flag & ~0x1F) >> 5] &=
+ ~(1 << (randoStaticCheck.flag & 0x1F));
+ }
+ gSaveContext.save.saveInfo.permanentSceneFlags[randoStaticCheck.sceneId].collectible &=
+ ~(1 << (randoStaticCheck.flag & 0x1F));
+ gSaveContext.cycleSceneFlags[randoStaticCheck.sceneId].collectible &=
+ ~(1 << (randoStaticCheck.flag & 0x1F));
+ break;
}
}
diff --git a/mm/2s2h/Rando/StaticData/Checks.cpp b/mm/2s2h/Rando/StaticData/Checks.cpp
index 3bc91fcea..31b6ca31a 100644
--- a/mm/2s2h/Rando/StaticData/Checks.cpp
+++ b/mm/2s2h/Rando/StaticData/Checks.cpp
@@ -51,7 +51,7 @@ std::map<RandoCheckId, RandoStaticCheck> Checks = {
RC(RC_CLOCK_TOWN_GREAT_FAIRY_ALT, RCTYPE_NPC, SCENE_YOUSEI_IZUMI, FLAG_NONE, 0x00, RI_MASK_GREAT_FAIRY),
RC(RC_CLOCK_TOWN_GREAT_FAIRY, RCTYPE_NPC, SCENE_YOUSEI_IZUMI, FLAG_NONE, 0x00, RI_PROGRESSIVE_MAGIC),
RC(RC_CLOCK_TOWN_LAUNDRY_GURU_GURU, RCTYPE_NPC, SCENE_ALLEY, FLAG_WEEK_EVENT_REG, WEEKEVENTREG_38_40, RI_MASK_BREMEN),
- RC(RC_CLOCK_TOWN_NORTH_BOMB_LADY, RCTYPE_NPC, SCENE_BACKTOWN, FLAG_CYCL_SCENE_COLLECTIBLE, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK, RI_MASK_BLAST),
+ RC(RC_CLOCK_TOWN_NORTH_BOMB_LADY, RCTYPE_NPC, SCENE_BACKTOWN, FLAG_WEEK_EVENT_REG, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK, RI_MASK_BLAST),
RC(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_01, RCTYPE_TINGLE_SHOP, SCENE_BACKTOWN, FLAG_NONE, 0x00, RI_TINGLE_MAP_CLOCK_TOWN),
RC(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_02, RCTYPE_TINGLE_SHOP, SCENE_BACKTOWN, FLAG_NONE, 0x00, RI_TINGLE_MAP_WOODFALL),
RC(RC_CLOCK_TOWN_NORTH_TREE_PIECE_OF_HEART, RCTYPE_HEART, SCENE_BACKTOWN, FLAG_CYCL_SCENE_COLLECTIBLE, 0x0A, RI_HEART_PIECE),