diff options
| author | Eblo <7004497+Eblo@users.noreply.github.com> | 2025-08-30 22:42:54 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-30 20:42:54 -0600 |
| commit | a07bf794af957c74f1516dbd59057f0a239adb7c (patch) | |
| tree | 76924c34d140ba94b97b22e8c0e02be175d2cba2 | |
| parent | 31f18278e15fa23a9ef2bed20d5c56999200155d (diff) | |
[Rando] Reset cycle collectible flags on cycle save (#1254)
| -rw-r--r-- | mm/2s2h/Rando/MiscBehavior/OnCycleSave.cpp | 13 | ||||
| -rw-r--r-- | mm/2s2h/Rando/StaticData/Checks.cpp | 2 |
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), |
