From 51152f8c4f628d5a3e32e147406d64c5102c7e3e Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Sat, 28 May 2022 15:16:14 -0400 Subject: [PATCH] item cutscenes always play in rando --- soh/soh.vcxproj.filters | 2 ++ soh/soh/Enhancements/randomizer.cpp | 2 ++ soh/src/code/z_en_item00.c | 9 +++++++++ soh/src/overlays/actors/ovl_player_actor/z_player.c | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/soh/soh.vcxproj.filters b/soh/soh.vcxproj.filters index 24b65d11f..a759f2cf2 100644 --- a/soh/soh.vcxproj.filters +++ b/soh/soh.vcxproj.filters @@ -707,6 +707,7 @@ + @@ -1231,6 +1232,7 @@ + diff --git a/soh/soh/Enhancements/randomizer.cpp b/soh/soh/Enhancements/randomizer.cpp index 213e79d31..37972e356 100644 --- a/soh/soh/Enhancements/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer.cpp @@ -838,6 +838,8 @@ RandomizerCheck Randomizer::GetCheckFromSceneAndParams(s16 sceneNum, s16 actorPa } case 96: switch(actorParams) { + case 6: + return DMT_FREESTANDING_POH; case 23201: return DMT_CHEST; } diff --git a/soh/src/code/z_en_item00.c b/soh/src/code/z_en_item00.c index d0179a5e1..78c144209 100644 --- a/soh/src/code/z_en_item00.c +++ b/soh/src/code/z_en_item00.c @@ -332,6 +332,11 @@ void EnItem00_SetupAction(EnItem00* this, EnItem00ActionFunc actionFunc) { this->actionFunc = actionFunc; } +s32 Item00_GetRandomizedItemId(EnItem00* this, s16 sceneNum, s16 actorParams) { + s32 itemId = GetItemFromSceneAndParams(sceneNum, this->actor.params, this->getItemId); + return itemId; +} + void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) { EnItem00* this = (EnItem00*)thisx; s32 pad; @@ -690,6 +695,7 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) { } if ((getItemId != GI_NONE) && !Actor_HasParent(&this->actor, globalCtx)) { + getItemId = Item00_GetRandomizedItemId(this, globalCtx->sceneNum, this->actor.params); func_8002F554(&this->actor, globalCtx, getItemId); } @@ -1049,6 +1055,9 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) { params = &this->actor.params; if ((getItemId != GI_NONE) && !Actor_HasParent(&this->actor, globalCtx)) { + if (gSaveContext.n64ddFlag) { + getItemId = Item00_GetRandomizedItemId(this, globalCtx->sceneNum, this->actor.params); + } func_8002F554(&this->actor, globalCtx, getItemId); } diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index d6154bfde..66cd1e3d6 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -6155,7 +6155,7 @@ s32 func_8083E5A8(Player* this, GlobalContext* globalCtx) { iREG(67) = false; - if ((Item_CheckObtainability(giEntry->itemId) == ITEM_NONE) || (globalCtx->sceneNum == SCENE_BOWLING)) { + if ((Item_CheckObtainability(giEntry->itemId) == ITEM_NONE) || (globalCtx->sceneNum == SCENE_BOWLING) || gSaveContext.n64ddFlag) { func_808323B4(globalCtx, this); func_8083AE40(this, giEntry->objectId);