diff --git a/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c b/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c index 7570cc0e0..1be0c6351 100644 --- a/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c +++ b/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c @@ -898,13 +898,33 @@ void func_80986BF8(DemoIm* this, GlobalContext* globalCtx) { } } +u8 successImpa; +void GivePlayerRandoRewardImpa(Actor* actor, GlobalContext* globalCtx, RandomizerCheck check) { + GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_NONE); + + if (successImpa && !Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) { + gSaveContext.eventChkInf[5] |= 0x200; + globalCtx->sceneLoadFlag = 0x14; + globalCtx->fadeTransition = 7; + gSaveContext.nextTransition = 3; + globalCtx->nextEntranceIndex = 0x0594; + gSaveContext.nextCutsceneIndex = 0; + } else if (!successImpa) { + successImpa = func_8002F434(&actor, globalCtx, getItemId, 10000.0f, 100.0f); + } +} + void func_80986C30(DemoIm* this, GlobalContext* globalCtx) { if (func_80986A5C(this, globalCtx)) { - globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardLullabyCs); - gSaveContext.cutsceneTrigger = 1; - gSaveContext.eventChkInf[5] |= 0x200; - Item_Give(globalCtx, ITEM_SONG_LULLABY); - func_80985F54(this); + if (gSaveContext.n64ddFlag) { + GivePlayerRandoRewardImpa(this, globalCtx, SONG_FROM_IMPA); + } else { + globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardLullabyCs); + gSaveContext.cutsceneTrigger = 1; + gSaveContext.eventChkInf[5] |= 0x200; + Item_Give(globalCtx, ITEM_SONG_LULLABY); + func_80985F54(this); + } } } diff --git a/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index 004897e4f..ebd7f9fd2 100644 --- a/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -461,12 +461,11 @@ s32 DoorWarp1_PlayerInRange(DoorWarp1* this, GlobalContext* globalCtx) { return ret; } -u8 success = 0; - +u8 successWarp = 0; void GivePlayerRandoReward(DoorWarp1* this, Player* player, GlobalContext* globalCtx, u8 ruto, u8 adult) { GetItemID getItemId = GetRandomizedItemId(GI_NONE, this->actor.id, this->actor.params, globalCtx->sceneNum); - if (success && !Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) { + if (successWarp && !Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) { if (adult) { OnePointCutscene_Init(globalCtx, 0x25E8, 999, &this->actor, MAIN_CAM); func_8002DF54(globalCtx, &this->actor, 10); @@ -494,9 +493,9 @@ void GivePlayerRandoReward(DoorWarp1* this, Player* player, GlobalContext* globa } } - success = 0; - } else if (!success) { - success = func_8002F434(&this->actor, globalCtx, getItemId, 10000.0f, 100.0f); + successWarp = 0; + } else if (!successWarp) { + successWarp = func_8002F434(&this->actor, globalCtx, getItemId, 10000.0f, 100.0f); } } diff --git a/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c b/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c index a11fcd2f1..93a57561d 100644 --- a/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c +++ b/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c @@ -304,8 +304,14 @@ void func_80ABA654(EnNiwLady* this, GlobalContext* globalCtx) { if (!(gSaveContext.itemGetInf[0] & 0x1000)) { this->actor.parent = NULL; - this->getItemId = GetRandomizedItemId(GI_BOTTLE, this->actor.id, this->actor.params, globalCtx->sceneNum); - func_8002F434(&this->actor, globalCtx, this->getItemId, 100.0f, 50.0f); + if (gSaveContext.n64ddFlag) { + s32 itemId = GetRandomizedItemIdFromKnownCheck(GI_BOTTLE, KAK_ANJU_AS_CHILD); + func_8002F434(&this->actor, globalCtx, itemId, 100.0f, 50.0f); + } else { + this->getItemId = GI_BOTTLE; + func_8002F434(&this->actor, globalCtx, GI_BOTTLE, 100.0f, 50.0f); + } + this->actionFunc = func_80ABAC00; return; } @@ -387,9 +393,14 @@ void func_80ABA9B8(EnNiwLady* this, GlobalContext* globalCtx) { case 0: Message_CloseTextbox(globalCtx); this->actor.parent = NULL; - s32 itemId = - GetRandomizedItemId(GI_POCKET_EGG, this->actor.id, this->actor.params, globalCtx->sceneNum); - func_8002F434(&this->actor, globalCtx, itemId, 200.0f, 100.0f); + + if (gSaveContext.n64ddFlag) { + s32 itemId = GetRandomizedItemIdFromKnownCheck(GI_POCKET_EGG, KAK_ANJU_AS_ADULT); + func_8002F434(&this->actor, globalCtx, itemId, 200.0f, 100.0f); + } else { + func_8002F434(&this->actor, globalCtx, GI_POCKET_EGG, 200.0f, 100.0f); + } + this->actionFunc = func_80ABAC00; break; case 1: @@ -441,8 +452,11 @@ void func_80ABAC00(EnNiwLady* this, GlobalContext* globalCtx) { } else { getItemId = this->getItemId; if (LINK_IS_ADULT) { - getItemId = !(gSaveContext.itemGetInf[2] & 0x1000) - ? GetRandomizedItemId(GI_POCKET_EGG, this->actor.id, this->actor.params, globalCtx->sceneNum) : GI_COJIRO; + getItemId = !(gSaveContext.itemGetInf[2] & 0x1000) ? GI_POCKET_EGG : GI_COJIRO; + + if (gSaveContext.n64ddFlag && getItemId == GI_POCKET_EGG) { + getItemId = GetRandomizedItemIdFromKnownCheck(GI_POCKET_EGG, KAK_ANJU_AS_ADULT); + } } func_8002F434(&this->actor, globalCtx, getItemId, 200.0f, 100.0f); } @@ -586,4 +600,4 @@ void EnNiwLady_Draw(Actor* thisx, GlobalContext* globalCtx) { this->skelAnime.dListCount, EnNiwLady_OverrideLimbDraw, NULL, this); } CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_niw_lady.c", 1370); -} +} \ No newline at end of file