Skip to content

Commit

Permalink
Merge pull request #12 from Z3DR/bottle-fixes
Browse files Browse the repository at this point in the history
Fix bottles not being able to be refilled over time.
  • Loading branch information
PhlexPlexico authored Jan 25, 2024
2 parents d4e9738 + b2eb0bc commit 34a85d6
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 6 deletions.
6 changes: 4 additions & 2 deletions code/include/rnd/item_override.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,10 @@ namespace rnd {
/* 0x8F */ GI_MASK_KAFEIS,
/* 0x90 */ // GI_ERROR_NOTHING_90, // ***ERROR TEXT Get Item Nothing in hand - Green Rupee with
// Ocarina in Inventory
/* 0x91 */ GI_BOTTLE_CHATEAU_ROMANI_REFILL =
0x91, // Sets it in a different slot if no bottle present. Second bottle?
// clang-format off
/* 0x91 */ GI_BOTTLE_CHATEAU_ROMANI_REFILL = 0x91,
// Sets it in a different slot if no bottle present. Second bottle?
// clang-format on
/* 0x92 */ GI_BOTTLE_MILK_REFILL, // Sets it in a different slot if no bottle present. Second
// bottle?
/* 0x93 */ GI_BOTTLE_GOLD_DUST_REFILL, // Sets it in a different slot if no bottle present. Second
Expand Down
32 changes: 28 additions & 4 deletions code/source/rnd/item_override.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ namespace rnd {
rItemOverrides[0].value.getItemId = 0x26;
rItemOverrides[0].value.looksLikeItemId = 0x26;
rItemOverrides[1].key.scene = 0x6F;
rItemOverrides[1].key.type = ItemOverride_Type::OVR_COLLECTABLE;
rItemOverrides[1].value.getItemId = 0x12;
rItemOverrides[1].value.looksLikeItemId = 0x12;
rItemOverrides[1].key.type = ItemOverride_Type::OVR_CHEST;
rItemOverrides[1].value.getItemId = 0x60;
rItemOverrides[1].value.looksLikeItemId = 0x60;
rItemOverrides[2].key.scene = 0x12;
rItemOverrides[2].key.type = ItemOverride_Type::OVR_COLLECTABLE;
rItemOverrides[2].value.getItemId = 0x37;
Expand Down Expand Up @@ -594,8 +594,32 @@ namespace rnd {
} else if (override.key.type == ItemOverride_Type::OVR_CHEST &&
gExtSaveData.chestRewarded[override.key.scene][override.key.flag] == 1) {
// Override was already given, use base game's item code
// If we're a bottled item in our override, we've been received before. Give a refill.
u16 refItemId = override.value.getItemId;
#if defined ENABLE_DEBUG || defined DEBUG_PRINT
rnd::util::Print("%s: Our ref item id is %#04x\n", __func__, refItemId);
#endif
ItemOverride_Clear();
player->get_item_id = -(s16)GetItemID::GI_RUPEE_BLUE;
switch (refItemId) {
case 0x60:
player->get_item_id = -(s16)GetItemID::GI_BOTTLE_MILK_REFILL;
break;
case 0x6A:
player->get_item_id = -(s16)GetItemID::GI_BOTTLE_GOLD_DUST_REFILL;
break;
case 0x6F:
player->get_item_id = -(s16)GetItemID::GI_BOTTLE_CHATEAU_ROMANI_REFILL;
break;
case 0x6E:
player->get_item_id = -(s16)GetItemID::GI_BOTTLE_SEAHORSE_REFILL;
break;
case 0x70:
player->get_item_id = -(s16)GetItemID::GI_BOTTLE_SEAHORSE_REFILL;
break;
default:
player->get_item_id = -(s16)GetItemID::GI_BOTTLE_MYSTERY_MILK_REFILL;
break;
}
return;
}
ItemOverride_Activate(override);
Expand Down

0 comments on commit 34a85d6

Please sign in to comment.