From 13474a2dcc2352dd6fda74e4bca39b74795d5509 Mon Sep 17 00:00:00 2001 From: aMannus Date: Sat, 4 Nov 2023 14:53:04 +0100 Subject: [PATCH] Updated tree & updated GBK --- .../objects/object_xmas_tree/LeavesAlpha_64 | Bin 8284 -> 8284 bytes .../object_xmas_tree/LeavesAlpha_shaded_64 | Bin 0 -> 8284 bytes .../objects/object_xmas_tree/gXmasTreeDL | 2 + .../object_xmas_tree/gXmasTreeDL_tri_1 | 188 ++++++++---------- .../object_xmas_tree/gXmasTreeDL_tri_2 | 16 ++ .../object_xmas_tree/gXmasTreeDL_vtx_1 | 47 +---- .../object_xmas_tree/gXmasTreeDL_vtx_2 | 29 +++ .../mat_gXmasTreeDL_f3dlite_TreeGreen | 7 +- .../mat_gXmasTreeDL_f3dlite_TreeTip | 21 ++ .../Enhancements/debugger/debugSaveEditor.cpp | 5 - .../Enhancements/debugger/debugSaveEditor.h | 1 + soh/soh/Enhancements/mods.cpp | 20 +- .../Enhancements/randomizer/randomizer_inf.h | 1 + .../ovl_En_ChristmasTree/z_en_christmastree.c | 2 +- 14 files changed, 184 insertions(+), 155 deletions(-) create mode 100644 soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_shaded_64 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 create mode 100644 soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip diff --git a/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 b/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 index 47ca211a96b664bf352a1740c1e797501521ad57..e33491d5af58d9b450ea8450096b392f2cdcba37 100644 GIT binary patch delta 623 zcmah{L2AP=5EM$Rn218aArv;yhUV5DLdY#Sp zmTkS8xAwxci!E&_S-hcSjCY0eEF@ddUbq#WPioEAdi#OI!BHhCe6cY0wE;4^#tp=; zVsNf;5e7ABEr^XU#s!V~hOEHXx5=Dq>3>>Y(uUgl8P ziwv&#ucX|-xD5={o2Po0J!2FFZ-+zgvto^<>#a|77WJNW3AL M(1-u%eVqo`FY+8rF8}}l delta 1065 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 + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 index 889e5aa4f5..ff4e066a5b 100644 --- a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 @@ -1,104 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -112,7 +14,7 @@ - + @@ -125,7 +27,93 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 new file mode 100644 index 0000000000..561d3ac5ef --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 index bec46bbab6..01ed88a145 100644 --- a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 @@ -1,39 +1,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -44,12 +15,12 @@ + + - - @@ -60,12 +31,12 @@ + + - - @@ -79,9 +50,7 @@ - - @@ -94,10 +63,10 @@ - - + + @@ -110,10 +79,10 @@ - - + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 new file mode 100644 index 0000000000..fd03778f89 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen index 69c9c11e5f..119341c701 100644 --- a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen @@ -1,20 +1,21 @@ - + - + - + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip new file mode 100644 index 0000000000..9baaadbf55 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp index 2762b5a1b0..b357363ac9 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp @@ -517,11 +517,6 @@ void DrawInfoTab() { if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT)) { ImGui::InputScalar("Triforce Pieces", ImGuiDataType_U8, &gSaveContext.triforcePiecesCollected); UIWidgets::InsertHelpHoverText("Currently obtained Triforce Pieces. For Triforce Hunt."); - - bool thFlag = gSaveContext.grantBossKey != 0; - if (ImGui::Checkbox("Finished Triforce Hunt", &thFlag)) { - gSaveContext.grantBossKey = thFlag; - } } ImGui::PushItemWidth(ImGui::GetFontSize() * 10); diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index 42c9c91c0f..01557efefe 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -505,6 +505,7 @@ const std::vector flagTables = { { RAND_INF_CHILD_FISHING, "RAND_INF_CHILD_FISHING" }, { RAND_INF_ADULT_FISHING, "RAND_INF_ADULT_FISHING" }, { RAND_INF_10_BIG_POES, "RAND_INF_10_BIG_POES" }, + { RAND_INF_GRANT_GANONS_BOSSKEY, "RAND_INF_GRANT_GANONS_BOSSKEY" }, } }, }; diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index 9bb8aefb23..f4b62363d4 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -665,13 +665,6 @@ void RegisterTriforceHunt() { triforcePieceScale = 0.0f; GameInteractor::State::TriforceHuntPieceGiven = 0; } - - // Give Boss Key when player loads back into the savefile. - if (gSaveContext.grantBossKey && - (1 << 0 & gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER]) == 0) { - GetItemEntry getItemEntry = ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); - GiveItemEntryWithoutActor(gPlayState, getItemEntry); - } } if (currentPieces >= requiredPieces && eventTimer >= 1 && eventTimer <= 30) { @@ -711,6 +704,18 @@ void RegisterTriforceHunt() { }); } +void RegisterGrantGanonsBossKey() { + GameInteractor::Instance->RegisterGameHook([]() { + // Triforce Hunt needs the check if the player isn't being teleported to the credits scene. + if (!GameInteractor::IsGameplayPaused() && Flags_GetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY) && + gPlayState->sceneLoadFlag != 0x14 && (1 << 0 & gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER]) == 0) { + GetItemEntry getItemEntry = + ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); + GiveItemEntryWithoutActor(gPlayState, getItemEntry); + } + }); +} + //this map is used for enemies that can be uniquely identified by their id //and that are always counted //enemies that can't be uniquely identified by their id @@ -1096,6 +1101,7 @@ void InitMods() { RegisterMenuPathFix(); RegisterMirrorModeHandler(); RegisterTriforceHunt(); + RegisterGrantGanonsBossKey(); RegisterEnemyDefeatCounts(); RegisterAltTrapTypes(); RegisterRandomizerSheikSpawn(); diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index 33c206b470..8d4ec98012 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -159,6 +159,7 @@ typedef enum { RAND_INF_CHILD_FISHING, RAND_INF_ADULT_FISHING, RAND_INF_10_BIG_POES, + RAND_INF_GRANT_GANONS_BOSSKEY, // If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16) diff --git a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c index fdc58fb27d..9d9f65190b 100644 --- a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c @@ -77,7 +77,7 @@ void EnChristmasTree_Talk(EnChristmasTree* this, PlayState* play) { if (gSaveContext.triforcePiecesCollected >= Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED)) { gSaveContext.sohStats.itemTimestamp[TIMESTAMP_TRIFORCE_COMPLETED] = GAMEPLAYSTAT_TOTAL_TIME; gSaveContext.sohStats.gameComplete = 1; - gSaveContext.grantBossKey = 1; + Flags_SetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY); Play_PerformSave(play); GameInteractor_SetTriforceHuntCreditsWarpActive(true); }