diff options
| author | Garrett Cox <garrettjcox@gmail.com> | 2022-11-02 13:09:25 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-02 14:09:25 -0400 |
| commit | 3b7b4913ebc954d47c3378d7dfc4aada89edd4c1 (patch) | |
| tree | b5586ef04c039d38ff3fbcc08653fcf507d50c81 /soh/src/code | |
| parent | 897e70b6fcef8360c06848deb61257e49b4269f3 (diff) | |
Track keys, heart pieces, and heart containers collected (#1849)
* Track keys, heart pieces, and heart containers collected
* Update soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp
Diffstat (limited to 'soh/src/code')
| -rw-r--r-- | soh/src/code/z_parameter.c | 6 | ||||
| -rw-r--r-- | soh/src/code/z_sram.c | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index b19ba1631..c37586cce 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -1760,6 +1760,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { // but we check for a globalCtx here so the game won't crash if we do somehow get here. if (gSaveContext.n64ddFlag && globalCtx != NULL) { if (globalCtx->sceneNum == 10) { // ganon's tower -> ganon's castle + gSaveContext.sohStats.dungeonKeys[13]++; if (gSaveContext.inventory.dungeonKeys[13] < 0) { gSaveContext.inventory.dungeonKeys[13] = 1; PerformAutosave(globalCtx, item); @@ -1772,6 +1773,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } if (globalCtx->sceneNum == 92) { // Desert Colossus -> Spirit Temple. + gSaveContext.sohStats.dungeonKeys[6]++; if (gSaveContext.inventory.dungeonKeys[6] < 0) { gSaveContext.inventory.dungeonKeys[6] = 1; PerformAutosave(globalCtx, item); @@ -1783,6 +1785,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } } + gSaveContext.sohStats.dungeonKeys[gSaveContext.mapIndex]++; if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) { gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = 1; PerformAutosave(globalCtx, item); @@ -2132,11 +2135,13 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { gSaveContext.inventory.questItems += 1 << (QUEST_HEART_PIECE + 4); + gSaveContext.sohStats.heartPieces++; PerformAutosave(globalCtx, item); return ITEM_NONE; } else if (item == ITEM_HEART_CONTAINER) { gSaveContext.healthCapacity += 0x10; gSaveContext.health += 0x10; + gSaveContext.sohStats.heartContainers++; PerformAutosave(globalCtx, item); return ITEM_NONE; } else if (item == ITEM_HEART) { @@ -2447,6 +2452,7 @@ u16 Randomizer_Item_Give(GlobalContext* globalCtx, GetItemEntry giEntry) { } if ((item >= RG_FOREST_TEMPLE_SMALL_KEY) && (item <= RG_GANONS_CASTLE_SMALL_KEY)) { + gSaveContext.sohStats.dungeonKeys[mapIndex]++; if (gSaveContext.inventory.dungeonKeys[mapIndex] < 0) { gSaveContext.inventory.dungeonKeys[mapIndex] = 1; return RG_NONE; diff --git a/soh/src/code/z_sram.c b/soh/src/code/z_sram.c index 61e8fecbb..b43515386 100644 --- a/soh/src/code/z_sram.c +++ b/soh/src/code/z_sram.c @@ -461,13 +461,21 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) { if(Randomizer_GetSettingValue(RSK_KEYSANITY) == 0) { // TODO: If master quest there are different key counts gSaveContext.inventory.dungeonKeys[SCENE_BMORI1] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest + gSaveContext.sohStats.dungeonKeys[SCENE_BMORI1] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest gSaveContext.inventory.dungeonKeys[SCENE_HIDAN] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire + gSaveContext.sohStats.dungeonKeys[SCENE_HIDAN] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire gSaveContext.inventory.dungeonKeys[SCENE_MIZUSIN] = WATER_TEMPLE_SMALL_KEY_MAX; // Water + gSaveContext.sohStats.dungeonKeys[SCENE_MIZUSIN] = WATER_TEMPLE_SMALL_KEY_MAX; // Water gSaveContext.inventory.dungeonKeys[SCENE_JYASINZOU] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit + gSaveContext.sohStats.dungeonKeys[SCENE_JYASINZOU] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit gSaveContext.inventory.dungeonKeys[SCENE_HAKADAN] = SHADOW_TEMPLE_SMALL_KEY_MAX; // Shadow + gSaveContext.sohStats.dungeonKeys[SCENE_HAKADAN] = SHADOW_TEMPLE_SMALL_KEY_MAX; // Shadow gSaveContext.inventory.dungeonKeys[SCENE_HAKADANCH] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; // BotW + gSaveContext.sohStats.dungeonKeys[SCENE_HAKADANCH] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; // BotW gSaveContext.inventory.dungeonKeys[SCENE_MEN] = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX; // GTG + gSaveContext.sohStats.dungeonKeys[SCENE_MEN] = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX; // GTG gSaveContext.inventory.dungeonKeys[SCENE_GANONTIKA] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon + gSaveContext.sohStats.dungeonKeys[SCENE_GANONTIKA] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon } // "Start with" == 0 for Boss Kesanity |
