zelda & impa & malon fully working

This commit is contained in:
MelonSpeedruns 2022-05-31 11:10:56 -04:00
commit 7c748e74ed
4 changed files with 25 additions and 25 deletions

View file

@ -413,7 +413,7 @@ void Sram_OpenSave(SramContext* sramCtx) {
}
// if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter
if ((gSaveContext.eventChkInf[4] & 1) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) {
if ((gSaveContext.eventChkInf[4] & 1) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY) && !gSaveContext.n64ddFlag) {
i = gSaveContext.eventChkInf[4] & ~1;
gSaveContext.eventChkInf[4] = i;

View file

@ -901,7 +901,8 @@ void func_80986BF8(DemoIm* this, GlobalContext* globalCtx) {
u8 successImpa;
void GivePlayerRandoRewardImpa(Actor* impa, GlobalContext* globalCtx, RandomizerCheck check) {
if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) {
if (successImpa == 0) {
if (successImpa == 0 && (globalCtx->actorCtx.titleCtx.delayTimer == 0) &&
(globalCtx->actorCtx.titleCtx.alpha == 0)) {
GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_LETTER_ZELDA);
if (func_8002F434(impa, globalCtx, getItemId, 100.0f, 50.0f) == true) {

View file

@ -328,7 +328,6 @@ void func_80AA0EA0(EnMa1* this, GlobalContext* globalCtx) {
this->actor.parent = NULL;
this->actionFunc = func_80AA0EFC;
} else {
if (gSaveContext.n64ddFlag) {
GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(HC_GREAT_FAIRY_REWARD, GI_LETTER_ZELDA);
func_8002F434(&this->actor, globalCtx, getItemId, 120.0f, 10.0f);
@ -347,19 +346,20 @@ void func_80AA0EFC(EnMa1* this, GlobalContext* globalCtx) {
}
}
u8 malonSuccess;
void GivePlayerRandoRewardMalon(EnMa1* zelda, GlobalContext* globalCtx, RandomizerCheck check) {
if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) {
if (malonSuccess == 0) {
GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_LETTER_ZELDA);
void GivePlayerRandoRewardMalon(EnMa1* malon, GlobalContext* globalCtx, RandomizerCheck check) {
Player* player = GET_PLAYER(globalCtx);
if (func_8002F434(&zelda->actor, globalCtx, getItemId, 100.0f, 50.0f) == true) {
malonSuccess = 1;
}
} else if (malonSuccess == 1) {
gSaveContext.unk_13EE = 0x32;
gSaveContext.eventChkInf[4] |= 1;
if (!Flags_GetTreasure(globalCtx, 0x1F) &&
(INV_CONTENT(ITEM_OCARINA_FAIRY) != ITEM_NONE || INV_CONTENT(ITEM_OCARINA_TIME) != ITEM_NONE) &&
Actor_TextboxIsClosing(&malon->actor, globalCtx)) {
GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_LETTER_ZELDA);
if (func_8002F434(&malon->actor, globalCtx, getItemId, 100.0f, 50.0f) == true) {
Flags_SetTreasure(globalCtx, 0x1F);
}
} else if (Flags_GetTreasure(globalCtx, 0x1F) && !Player_InBlockingCsMode(globalCtx, player)) {
gSaveContext.unk_13EE = 0x32;
gSaveContext.eventChkInf[4] |= 1;
}
}
@ -376,6 +376,11 @@ void func_80AA0F44(EnMa1* this, GlobalContext* globalCtx) {
}
}
if (gSaveContext.n64ddFlag) {
GivePlayerRandoRewardMalon(this, globalCtx, HC_ZELDAS_LETTER);
return;
}
if (gSaveContext.eventChkInf[1] & 0x40) {
if (player->stateFlags2 & 0x1000000) {
player->stateFlags2 |= 0x2000000;
@ -420,13 +425,6 @@ void func_80AA1150(EnMa1* this, GlobalContext* globalCtx) {
}
}
/*
if (gSaveContext.n64ddFlag) {
GivePlayerRandoRewardMalon(this, globalCtx, HC_ZELDAS_LETTER);
return;
}
*/
void EnMa1_DoNothing(EnMa1* this, GlobalContext* globalCtx) {
}

View file

@ -227,16 +227,17 @@ u16 EnZl4_GetText(GlobalContext* globalCtx, Actor* thisx) {
return ret;
}
u8 zeldaSuccess;
void GivePlayerRandoRewardZeldaChild(EnZl4* zelda, GlobalContext* globalCtx, RandomizerCheck check) {
if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) {
if (zeldaSuccess == 0) {
if (!Flags_GetTreasure(globalCtx, 0x1F) && Actor_TextboxIsClosing(&zelda->actor, globalCtx) &&
gSaveContext.eventChkInf[4] != 1 && (globalCtx->actorCtx.titleCtx.delayTimer == 0) &&
(globalCtx->actorCtx.titleCtx.alpha == 0)) {
GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_LETTER_ZELDA);
if (func_8002F434(&zelda->actor, globalCtx, getItemId, 100.0f, 50.0f) == true) {
zeldaSuccess = 1;
Flags_SetTreasure(globalCtx, 0x1F);
}
} else if (zeldaSuccess == 1) {
} else if (Flags_GetTreasure(globalCtx, 0x1F)) {
gSaveContext.unk_13EE = 0x32;
gSaveContext.eventChkInf[4] |= 1;
}