item cutscenes always play in rando

This commit is contained in:
MelonSpeedruns 2022-05-28 15:16:14 -04:00
commit 51152f8c4f
4 changed files with 14 additions and 1 deletions

View file

@ -707,6 +707,7 @@
<ClCompile Include="src\overlays\misc\ovl_kaleido_scope\z_lmap_mark_data.c" /> <ClCompile Include="src\overlays\misc\ovl_kaleido_scope\z_lmap_mark_data.c" />
<ClCompile Include="src\overlays\misc\ovl_map_mark_data\z_map_mark_data.c" /> <ClCompile Include="src\overlays\misc\ovl_map_mark_data\z_map_mark_data.c" />
<ClCompile Include="soh\Enhancements\randomizer.h" /> <ClCompile Include="soh\Enhancements\randomizer.h" />
<ClCompile Include="src\overlays\actors\ovl_Obj_RandoGetItem\z_rando_get_item.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="soh\frame_interpolation.h" /> <ClInclude Include="soh\frame_interpolation.h" />
@ -1231,6 +1232,7 @@
<ClInclude Include="src\overlays\effects\ovl_Effect_Ss_Stone1\z_eff_ss_stone1.h" /> <ClInclude Include="src\overlays\effects\ovl_Effect_Ss_Stone1\z_eff_ss_stone1.h" />
<ClInclude Include="src\overlays\misc\ovl_kaleido_scope\z_kaleido_scope.h" /> <ClInclude Include="src\overlays\misc\ovl_kaleido_scope\z_kaleido_scope.h" />
<ClInclude Include="randomizerTypes.h" /> <ClInclude Include="randomizerTypes.h" />
<ClInclude Include="src\overlays\actors\ovl_Obj_RandoGetItem\z_rando_get_item.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="Resource.rc" /> <ResourceCompile Include="Resource.rc" />

View file

@ -838,6 +838,8 @@ RandomizerCheck Randomizer::GetCheckFromSceneAndParams(s16 sceneNum, s16 actorPa
} }
case 96: case 96:
switch(actorParams) { switch(actorParams) {
case 6:
return DMT_FREESTANDING_POH;
case 23201: case 23201:
return DMT_CHEST; return DMT_CHEST;
} }

View file

@ -332,6 +332,11 @@ void EnItem00_SetupAction(EnItem00* this, EnItem00ActionFunc actionFunc) {
this->actionFunc = 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) { void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) {
EnItem00* this = (EnItem00*)thisx; EnItem00* this = (EnItem00*)thisx;
s32 pad; s32 pad;
@ -690,6 +695,7 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) {
} }
if ((getItemId != GI_NONE) && !Actor_HasParent(&this->actor, 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); func_8002F554(&this->actor, globalCtx, getItemId);
} }
@ -1049,6 +1055,9 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
params = &this->actor.params; params = &this->actor.params;
if ((getItemId != GI_NONE) && !Actor_HasParent(&this->actor, globalCtx)) { 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); func_8002F554(&this->actor, globalCtx, getItemId);
} }

View file

@ -6155,7 +6155,7 @@ s32 func_8083E5A8(Player* this, GlobalContext* globalCtx) {
iREG(67) = false; 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_808323B4(globalCtx, this);
func_8083AE40(this, giEntry->objectId); func_8083AE40(this, giEntry->objectId);