From b80b28cda23699343408b5384c6bc330b65f4857 Mon Sep 17 00:00:00 2001 From: briaguya Date: Mon, 30 May 2022 13:24:20 -0400 Subject: [PATCH] trying to figure out fairy get item animations --- soh/soh/Enhancements/randomizer.cpp | 5 ++ .../ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c | 51 +++++++++++++++---- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/soh/soh/Enhancements/randomizer.cpp b/soh/soh/Enhancements/randomizer.cpp index f95e650cd..6fa707df8 100644 --- a/soh/soh/Enhancements/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer.cpp @@ -1828,6 +1828,11 @@ RandomizerCheck Randomizer::GetCheckFromActor(s16 sceneNum, s16 actorId, s16 act case 262: return ZF_ICEBERG_FREESTANDING_POH; } + case 61: + switch(actorId) { + case 11: + return HC_GREAT_FAIRY_REWARD; + } } return UNKNOWN_CHECK; diff --git a/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c b/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c index 2e1e5fe1b..dfe246fd8 100644 --- a/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c +++ b/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c @@ -211,19 +211,37 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, GlobalContext* globalCtx) { // todo ensure we're seting givingReward based on if the check has been checked, // not based on if the spell is in inventory case FAIRY_SPELL_FARORES_WIND: - if (!(gSaveContext.itemGetInf[1] & 0x100)) { - givingReward = true; - } + // if (gSaveContext.n64ddFlag) { + // s32 getItemId = GetRandomizedItemId(GI_FARORES_WIND, this->actor.id, this->actor.params, globalCtx->sceneNum); + // func_8002F434(&this->actor, globalCtx, getItemId, 100.0f, 50.0f); + // return; + // } else { + if (!(gSaveContext.itemGetInf[1] & 0x100)) { + givingReward = true; + } + // } break; case FAIRY_SPELL_DINS_FIRE: - if (!(gSaveContext.itemGetInf[1] & 0x200)) { - givingReward = true; - } + // if (gSaveContext.n64ddFlag) { + // s32 getItemId = GetRandomizedItemId(GI_DINS_FIRE, this->actor.id, this->actor.params, globalCtx->sceneNum); + // func_8002F434(&this->actor, globalCtx, getItemId, 100.0f, 50.0f); + // return; + // } else { + if (!(gSaveContext.itemGetInf[1] & 0x200)) { + givingReward = true; + } + // } break; case FAIRY_SPELL_NAYRUS_LOVE: - if (!(gSaveContext.itemGetInf[1] & 0x400)) { - givingReward = true; - } + // if (gSaveContext.n64ddFlag) { + // s32 getItemId = GetRandomizedItemId(GI_NAYRUS_LOVE, this->actor.id, this->actor.params, globalCtx->sceneNum); + // func_8002F434(&this->actor, globalCtx, getItemId, 100.0f, 50.0f); + // return; + // } else { + if (!(gSaveContext.itemGetInf[1] & 0x400)) { + givingReward = true; + } + // } break; } } else { @@ -262,14 +280,29 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, GlobalContext* globalCtx) { if (globalCtx->sceneNum != SCENE_DAIYOUSEI_IZUMI) { switch (this->fountainType) { case FAIRY_SPELL_FARORES_WIND: + if (gSaveContext.n64ddFlag) { + s32 getItemId = GetRandomizedItemId(GI_FARORES_WIND, this->actor.id, this->actor.params, globalCtx->sceneNum); + func_8002F434(&this->actor, globalCtx, getItemId, 100.0f, 50.0f); + return; + } globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyFaroresWindCs); gSaveContext.cutsceneTrigger = 1; break; case FAIRY_SPELL_DINS_FIRE: + if (gSaveContext.n64ddFlag) { + s32 getItemId = GetRandomizedItemId(GI_DINS_FIRE, this->actor.id, this->actor.params, globalCtx->sceneNum); + func_8002F434(&this->actor, globalCtx, getItemId, 100.0f, 50.0f); + return; + } globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyDinsFireCs); gSaveContext.cutsceneTrigger = 1; break; case FAIRY_SPELL_NAYRUS_LOVE: + if (gSaveContext.n64ddFlag) { + s32 getItemId = GetRandomizedItemId(GI_NAYRUS_LOVE, this->actor.id, this->actor.params, globalCtx->sceneNum); + func_8002F434(&this->actor, globalCtx, getItemId, 100.0f, 50.0f); + return; + } globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyNayrusLoveCs); gSaveContext.cutsceneTrigger = 1; break;