From f5fae6df32307e19b7451fd460979178626950eb Mon Sep 17 00:00:00 2001 From: lil David <1337lilDavid@gmail.com> Date: Sat, 3 Sep 2022 07:51:28 -0500 Subject: [PATCH 1/3] Reimplement progressive Bombchus --- soh/soh/Enhancements/randomizer/randomizer.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index a81fdb839..cd8cd61f9 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -1323,15 +1323,15 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe case RG_BUY_BOMBCHU_10: case RG_BUY_BOMBCHU_20: case RG_BUY_BOMBCHU_5: + case RG_BOMBCHU_DROP: // If Bombchus aren't in logic, you need a bomb bag to purchase them // If they are in logic, you need to have already obtained them somewhere else + // Bombchu Drop is only used as a bowling reward, so it needs the same logic if (GetRandoSettingValue(RSK_BOMBCHUS_IN_LOGIC)) { return INV_CONTENT(ITEM_BOMBCHU) == ITEM_BOMBCHU ? CAN_OBTAIN : CANT_OBTAIN_NEED_UPGRADE; } else { return CUR_UPG_VALUE(UPG_BOMB_BAG) ? CAN_OBTAIN : CANT_OBTAIN_NEED_UPGRADE; } - case RG_BOMBCHU_DROP: - return INV_CONTENT(ITEM_BOMBCHU) == ITEM_BOMBCHU ? CAN_OBTAIN : CANT_OBTAIN_NEED_UPGRADE; case RG_PROGRESSIVE_HOOKSHOT: switch (INV_CONTENT(ITEM_HOOKSHOT)) { case ITEM_NONE: @@ -1690,7 +1690,13 @@ GetItemID Randomizer::GetItemIdFromRandomizerGet(RandomizerGet randoGet, GetItem return GI_OCARINA_OOT; } case RG_PROGRESSIVE_BOMBCHUS: - return GI_BOMBCHUS_20; + if (INV_CONTENT(ITEM_BOMBCHU) == ITEM_NONE) { + return GI_BOMBCHUS_20; + } + if (AMMO(ITEM_BOMBCHU) < 5) { + return GI_BOMBCHUS_10; + } + return GI_BOMBCHUS_5; case RG_BOMBCHU_5: case RG_BUY_BOMBCHU_5: case RG_BOMBCHU_DROP: From 5421ad27c99699597baca039cc1d0e570d18ebaa Mon Sep 17 00:00:00 2001 From: Christopher Leggett Date: Sat, 3 Sep 2022 09:24:37 -0400 Subject: [PATCH 2/3] Rando-next: Deku Nut and Seed ammo gives a blue rupee Fixes #1390 --- soh/soh/OTRGlobals.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 2781d6a6e..b70533a77 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1637,6 +1637,10 @@ extern "C" GetItemEntry ItemTable_RetrieveEntry(s16 tableID, s16 getItemID) { extern "C" GetItemEntry Randomizer_GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogId) { s16 getItemModIndex; RandomizerCheck randomizerCheck = OTRGlobals::Instance->gRandomizer->GetCheckFromActor(actorId, sceneNum, actorParams); + // if we got unknown check here, we don't need to do anything else, just return the ogId. + if (randomizerCheck == RC_UNKNOWN_CHECK) { + return ItemTable_RetrieveEntry(MOD_NONE, ogId); + } if (OTRGlobals::Instance->gRandomizer->CheckContainsVanillaItem(randomizerCheck)) { getItemModIndex = MOD_NONE; } else { @@ -1653,6 +1657,11 @@ extern "C" GetItemEntry Randomizer_GetItemFromActor(s16 actorId, s16 sceneNum, s extern "C" GetItemEntry Randomizer_GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId) { s16 getItemModIndex; + + // if we got unknown check here, we don't need to do anything else, just return the ogId. + if (randomizerCheck == RC_UNKNOWN_CHECK) { + return ItemTable_RetrieveEntry(MOD_NONE, ogId); + } if (OTRGlobals::Instance->gRandomizer->CheckContainsVanillaItem(randomizerCheck)) { getItemModIndex = MOD_NONE; } else { From e079c254f1ad7cb705141b1f0f12fa22744a0e18 Mon Sep 17 00:00:00 2001 From: Christopher Leggett Date: Sat, 3 Sep 2022 09:39:03 -0400 Subject: [PATCH 3/3] Fixes Link starting with BGS --- soh/src/code/z_sram.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/soh/src/code/z_sram.c b/soh/src/code/z_sram.c index 20d255bca..9a9407277 100644 --- a/soh/src/code/z_sram.c +++ b/soh/src/code/z_sram.c @@ -101,6 +101,9 @@ void GiveLinksPocketItem() { GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_LINKS_POCKET, RG_NONE); if (getItemEntry.modIndex == MOD_NONE) { + if (getItemEntry.getItemId == GI_SWORD_BGS) { + gSaveContext.bgsFlag = true; + } Item_Give(NULL, getItemEntry.itemId); } else if (getItemEntry.modIndex == MOD_RANDOMIZER) { Randomizer_Item_Give(NULL, getItemEntry); @@ -400,6 +403,9 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) { s32 giid = getItem.getItemId; if (getItem.modIndex == MOD_NONE) { + if (getItem.getItemId == GI_SWORD_BGS) { + gSaveContext.bgsFlag = true; + } Item_Give(NULL, getItem.itemId); } else if (getItem.modIndex == MOD_RANDOMIZER) { Randomizer_Item_Give(NULL, getItem);