refactor some actors

This commit is contained in:
MelonSpeedruns 2022-06-01 20:22:22 -04:00
commit 2bd7914941
7 changed files with 57 additions and 66 deletions

View file

@ -1441,11 +1441,11 @@ GetItemID Randomizer::GetItemFromGet(RandomizerGet randoGet, GetItemID ogItemId)
case RG_RUTOS_LETTER: case RG_RUTOS_LETTER:
return GI_LETTER_RUTO; return GI_LETTER_RUTO;
case RG_ARROWS_5: case RG_ARROWS_5:
return GI_ARROWS_SMALL; return CUR_UPG_VALUE(UPG_QUIVER) ? GI_ARROWS_SMALL : GI_RUPEE_BLUE;
case RG_ARROWS_10: case RG_ARROWS_10:
return GI_ARROWS_MEDIUM; return CUR_UPG_VALUE(UPG_QUIVER) ? GI_ARROWS_MEDIUM : GI_RUPEE_BLUE;
case RG_ARROWS_30: case RG_ARROWS_30:
return GI_ARROWS_LARGE; return CUR_UPG_VALUE(UPG_QUIVER) ? GI_ARROWS_LARGE : GI_RUPEE_BLUE;
case RG_DEKU_STICK_1: case RG_DEKU_STICK_1:
return GI_STICKS_1; return GI_STICKS_1;

View file

@ -225,10 +225,7 @@ void BossDodongo_Init(Actor* thisx, GlobalContext* globalCtx) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_BG_BREAKWALL, -890.0f, -1523.76f, -3304.0f, 0, 0, 0, 0x6000); Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_BG_BREAKWALL, -890.0f, -1523.76f, -3304.0f, 0, 0, 0, 0x6000);
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_ITEM_B_HEART, -690.0f, -1523.76f, -3304.0f, 0, 0, 0, 0); Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_ITEM_B_HEART, -690.0f, -1523.76f, -3304.0f, 0, 0, 0, 0);
for (i = 0; i < 2048; i++) {
temp_v0 = i;
temp_s1_3[temp_v0] = temp_s2[temp_v0];
}
} }
this->actor.flags &= ~ACTOR_FLAG_0; this->actor.flags &= ~ACTOR_FLAG_0;

View file

@ -898,17 +898,15 @@ void func_80986BF8(DemoIm* this, GlobalContext* globalCtx) {
} }
} }
u8 successImpa;
void GivePlayerRandoRewardImpa(Actor* impa, GlobalContext* globalCtx, RandomizerCheck check) { void GivePlayerRandoRewardImpa(Actor* impa, GlobalContext* globalCtx, RandomizerCheck check) {
if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) { GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_ZELDAS_LULLABY);
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) { if (impa->parent != NULL && impa->parent->id == GET_PLAYER(globalCtx)->actor.id &&
successImpa = 1; !Flags_GetTreasure(globalCtx, 0x1F)) {
} Flags_SetTreasure(globalCtx, 0x1F);
} else if (successImpa == 1) { } else if (!Flags_GetTreasure(globalCtx, 0x1F)) {
func_8002F434(impa, globalCtx, getItemId, 75.0f, 50.0f);
} else if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) {
gSaveContext.eventChkInf[5] |= 0x200; gSaveContext.eventChkInf[5] |= 0x200;
globalCtx->sceneLoadFlag = 0x14; globalCtx->sceneLoadFlag = 0x14;
globalCtx->fadeTransition = 3; globalCtx->fadeTransition = 3;
@ -916,7 +914,6 @@ void GivePlayerRandoRewardImpa(Actor* impa, GlobalContext* globalCtx, Randomizer
globalCtx->nextEntranceIndex = 0x0594; globalCtx->nextEntranceIndex = 0x0594;
gSaveContext.nextCutsceneIndex = 0; gSaveContext.nextCutsceneIndex = 0;
} }
}
} }
void func_80986C30(DemoIm* this, GlobalContext* globalCtx) { void func_80986C30(DemoIm* this, GlobalContext* globalCtx) {

View file

@ -95,9 +95,11 @@ u16 EnMa1_GetText(GlobalContext* globalCtx, Actor* thisx) {
if (faceReaction != 0) { if (faceReaction != 0) {
return faceReaction; return faceReaction;
} }
if (!gSaveContext.n64ddFlag) {
if (CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) { if (CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) {
return 0x204A; return 0x204A;
} }
}
if (gSaveContext.eventChkInf[1] & 0x40) { if (gSaveContext.eventChkInf[1] & 0x40) {
return 0x2049; return 0x2049;
} }
@ -289,7 +291,7 @@ void EnMa1_Init(Actor* thisx, GlobalContext* globalCtx) {
this->actionFunc = func_80AA0D88; this->actionFunc = func_80AA0D88;
EnMa1_ChangeAnim(this, ENMA1_ANIM_2); EnMa1_ChangeAnim(this, ENMA1_ANIM_2);
} else { } else {
if (gSaveContext.n64ddFlag) { if (gSaveContext.n64ddFlag) { // Straight to singing textbox
gSaveContext.eventChkInf[1] |= 0x40; gSaveContext.eventChkInf[1] |= 0x40;
} }
@ -318,7 +320,8 @@ void func_80AA0D88(EnMa1* this, GlobalContext* globalCtx) {
if ((globalCtx->sceneNum == SCENE_SPOT15) && (gSaveContext.eventChkInf[1] & 0x10)) { if ((globalCtx->sceneNum == SCENE_SPOT15) && (gSaveContext.eventChkInf[1] & 0x10)) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
} else if (!(gSaveContext.eventChkInf[1] & 0x10) || CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) { } else if (!(gSaveContext.eventChkInf[1] & 0x10) || CHECK_QUEST_ITEM(QUEST_SONG_EPONA) ||
(gSaveContext.n64ddFlag && Flags_GetTreasure(globalCtx, 0x1F))) {
if (this->unk_1E8.unk_00 == 2) { if (this->unk_1E8.unk_00 == 2) {
this->actionFunc = func_80AA0EA0; this->actionFunc = func_80AA0EA0;
globalCtx->msgCtx.stateTimer = 4; globalCtx->msgCtx.stateTimer = 4;
@ -351,19 +354,16 @@ void func_80AA0EFC(EnMa1* this, GlobalContext* globalCtx) {
} }
void GivePlayerRandoRewardMalon(EnMa1* malon, GlobalContext* globalCtx, RandomizerCheck check) { void GivePlayerRandoRewardMalon(EnMa1* malon, GlobalContext* globalCtx, RandomizerCheck check) {
Player* player = GET_PLAYER(globalCtx);
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_EPONAS_SONG); GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_EPONAS_SONG);
if (func_8002F434(&malon->actor, globalCtx, getItemId, 100.0f, 50.0f) == true) { if (malon->actor.parent != NULL && malon->actor.parent->id == GET_PLAYER(globalCtx)->actor.id &&
!Flags_GetTreasure(globalCtx, 0x1F)) {
Flags_SetTreasure(globalCtx, 0x1F); Flags_SetTreasure(globalCtx, 0x1F);
} } else if (!Flags_GetTreasure(globalCtx, 0x1F) &&
} else if (Flags_GetTreasure(globalCtx, 0x1F) && !Player_InBlockingCsMode(globalCtx, player)) { (INV_CONTENT(ITEM_OCARINA_FAIRY) != ITEM_NONE || INV_CONTENT(ITEM_OCARINA_TIME) != ITEM_NONE) &&
gSaveContext.unk_13EE = 0x32; Actor_TextboxIsClosing(&malon->actor, globalCtx) &&
gSaveContext.eventChkInf[4] |= 1; (globalCtx->msgCtx.textId == 0x2049 || globalCtx->msgCtx.textId == 0x204A)) {
func_8002F434(&malon->actor, globalCtx, getItemId, 10000.0f, 100.0f);
} }
} }

View file

@ -305,7 +305,7 @@ void func_80ABA654(EnNiwLady* this, GlobalContext* globalCtx) {
this->actor.parent = NULL; this->actor.parent = NULL;
if (gSaveContext.n64ddFlag) { if (gSaveContext.n64ddFlag) {
s32 itemId = GetRandomizedItemIdFromKnownCheck(KAK_ANJU_AS_CHILD, GI_BOTTLE); s32 itemId = GetRandomizedItemIdFromKnownCheck(RC_KAK_ANJU_AS_CHILD, GI_BOTTLE);
func_8002F434(&this->actor, globalCtx, itemId, 100.0f, 50.0f); func_8002F434(&this->actor, globalCtx, itemId, 100.0f, 50.0f);
} else { } else {
this->getItemId = GI_BOTTLE; this->getItemId = GI_BOTTLE;
@ -395,7 +395,7 @@ void func_80ABA9B8(EnNiwLady* this, GlobalContext* globalCtx) {
this->actor.parent = NULL; this->actor.parent = NULL;
if (gSaveContext.n64ddFlag) { if (gSaveContext.n64ddFlag) {
s32 itemId = GetRandomizedItemIdFromKnownCheck(KAK_ANJU_AS_ADULT, GI_POCKET_EGG); s32 itemId = GetRandomizedItemIdFromKnownCheck(RC_KAK_ANJU_AS_ADULT, GI_POCKET_EGG);
func_8002F434(&this->actor, globalCtx, itemId, 200.0f, 100.0f); func_8002F434(&this->actor, globalCtx, itemId, 200.0f, 100.0f);
} else { } else {
func_8002F434(&this->actor, globalCtx, GI_POCKET_EGG, 200.0f, 100.0f); func_8002F434(&this->actor, globalCtx, GI_POCKET_EGG, 200.0f, 100.0f);
@ -455,7 +455,7 @@ void func_80ABAC00(EnNiwLady* this, GlobalContext* globalCtx) {
getItemId = !(gSaveContext.itemGetInf[2] & 0x1000) ? GI_POCKET_EGG : GI_COJIRO; getItemId = !(gSaveContext.itemGetInf[2] & 0x1000) ? GI_POCKET_EGG : GI_COJIRO;
if (gSaveContext.n64ddFlag && getItemId == GI_POCKET_EGG) { if (gSaveContext.n64ddFlag && getItemId == GI_POCKET_EGG) {
getItemId = GetRandomizedItemIdFromKnownCheck(KAK_ANJU_AS_ADULT, GI_POCKET_EGG); getItemId = GetRandomizedItemIdFromKnownCheck(RC_KAK_ANJU_AS_ADULT, GI_POCKET_EGG);
} }
} }
func_8002F434(&this->actor, globalCtx, getItemId, 200.0f, 100.0f); func_8002F434(&this->actor, globalCtx, getItemId, 200.0f, 100.0f);

View file

@ -618,17 +618,16 @@ void func_80AF67D0(EnSa* this, GlobalContext* globalCtx) {
} }
void GivePlayerRandoRewardSaria(EnSa* saria, GlobalContext* globalCtx, RandomizerCheck check) { void GivePlayerRandoRewardSaria(EnSa* saria, GlobalContext* globalCtx, RandomizerCheck check) {
Player* player = GET_PLAYER(globalCtx); GetItemID getItemId =
GetRandomizedItemIdFromKnownCheck(check, GI_SARIAS_SONG);
if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) { if (saria->actor.parent != NULL && saria->actor.parent->id == GET_PLAYER(globalCtx)->actor.id &&
if (!Flags_GetTreasure(globalCtx, 0x1F) && !Flags_GetTreasure(globalCtx, 0x1F)) {
gSaveContext.eventChkInf[4] & 1) { Flags_SetTreasure(globalCtx, 0x1F);
GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_SARIAS_SONG); } else if (!Flags_GetTreasure(globalCtx, 0x1F)) {
func_8002F434(&saria->actor, globalCtx, getItemId, 10000.0f, 100.0f);
if (func_8002F434(&saria->actor, globalCtx, getItemId, 100000.0f, 100000.0f) == true) { } else if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) {
Flags_SetTreasure(globalCtx, 0x1F); Flags_SetTreasure(globalCtx, 0x1F);
}
}
} }
} }
@ -637,7 +636,7 @@ void func_80AF683C(EnSa* this, GlobalContext* globalCtx) {
if (!(player->actor.world.pos.z >= -2220.0f) && !Gameplay_InCsMode(globalCtx)) { if (!(player->actor.world.pos.z >= -2220.0f) && !Gameplay_InCsMode(globalCtx)) {
if (gSaveContext.n64ddFlag) { if (gSaveContext.n64ddFlag) {
GivePlayerRandoRewardSaria(this, globalCtx, SONG_FROM_SARIA); GivePlayerRandoRewardSaria(this, globalCtx, RC_SONG_FROM_SARIA);
return; return;
} }

View file

@ -228,20 +228,18 @@ u16 EnZl4_GetText(GlobalContext* globalCtx, Actor* thisx) {
} }
void GivePlayerRandoRewardZeldaChild(EnZl4* zelda, GlobalContext* globalCtx, RandomizerCheck check) { void GivePlayerRandoRewardZeldaChild(EnZl4* zelda, GlobalContext* globalCtx, RandomizerCheck check) {
if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) {
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); GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(check, GI_LETTER_ZELDA);
if (func_8002F434(&zelda->actor, globalCtx, getItemId, 100.0f, 50.0f) == true) { if (zelda->actor.parent != NULL && zelda->actor.parent->id == GET_PLAYER(globalCtx)->actor.id &&
Flags_SetTreasure(globalCtx, 0x1F); !Flags_GetTreasure(globalCtx, 0x1E)) {
} Flags_SetTreasure(globalCtx, 0x1E);
} else if (Flags_GetTreasure(globalCtx, 0x1F)) { } else if (!Flags_GetTreasure(globalCtx, 0x1E) && Actor_TextboxIsClosing(&zelda->actor, globalCtx) &&
globalCtx->msgCtx.textId == 0x703C) {
func_8002F434(&zelda->actor, globalCtx, getItemId, 10000.0f, 100.0f);
} else if (!Player_InBlockingCsMode(globalCtx, GET_PLAYER(globalCtx))) {
gSaveContext.unk_13EE = 0x32; gSaveContext.unk_13EE = 0x32;
gSaveContext.eventChkInf[4] |= 1; gSaveContext.eventChkInf[4] |= 1;
} }
}
} }
s16 func_80B5B9B0(GlobalContext* globalCtx, Actor* thisx) { s16 func_80B5B9B0(GlobalContext* globalCtx, Actor* thisx) {
@ -1228,7 +1226,7 @@ void EnZl4_Idle(EnZl4* this, GlobalContext* globalCtx) {
func_80B5BB78(this, globalCtx); func_80B5BB78(this, globalCtx);
if (gSaveContext.n64ddFlag) { if (gSaveContext.n64ddFlag) {
GivePlayerRandoRewardZeldaChild(this, globalCtx, HC_ZELDAS_LETTER); GivePlayerRandoRewardZeldaChild(this, globalCtx, RC_HC_ZELDAS_LETTER);
return; return;
} }
} }