mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-06-15 06:31:39 -04:00
fix halfmilk RBA (#6670)
This commit is contained in:
@@ -452,6 +452,11 @@ void DoRBA(uint8_t itemToPutInBottle) {
|
||||
}
|
||||
}
|
||||
|
||||
bool DoHalfMilkRBA(uint8_t item) {
|
||||
auto itemOnCRight = gSaveContext.equips.buttonItems[3];
|
||||
return (item == ITEM_BOTTLE) && (gSaveContext.inventory.items[itemOnCRight] == ITEM_MILK_BOTTLE);
|
||||
}
|
||||
|
||||
void RegisterBottleAdventure() {
|
||||
REGISTER_VB_SHOULD(VB_SET_BUTTON_ITEM_FROM_C_BUTTON_SLOT, {
|
||||
// if we aren't dealing with the b button, early return
|
||||
@@ -476,6 +481,17 @@ void RegisterBottleAdventure() {
|
||||
auto itemToPutInBottle = static_cast<uint8_t>(va_arg(args, int32_t));
|
||||
DoRBA(itemToPutInBottle);
|
||||
});
|
||||
|
||||
REGISTER_VB_SHOULD(VB_EMPTY_BOTTLE_TO_HALF_MILK, {
|
||||
// if we aren't dealing with a bottle on b, early return
|
||||
auto buttonBottleIsOn = static_cast<uint8_t>(va_arg(args, int32_t));
|
||||
if (buttonBottleIsOn != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto item = static_cast<uint8_t>(va_arg(args, int32_t));
|
||||
*should = DoHalfMilkRBA(item);
|
||||
});
|
||||
}
|
||||
|
||||
static RegisterShipInitFunc initFunc(RegisterBottleAdventure);
|
||||
|
||||
@@ -620,6 +620,16 @@ typedef enum {
|
||||
// - Player*
|
||||
VB_EMPTYING_BOTTLE,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// (gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] == ITEM_MILK_BOTTLE) &&
|
||||
// (item == ITEM_BOTTLE)
|
||||
// ```
|
||||
// #### `args`
|
||||
// - `int32_t` (button - promoted from `u8`)
|
||||
// - `int32_t` (item - promoted from `u8`)
|
||||
VB_EMPTY_BOTTLE_TO_HALF_MILK,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// (Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)
|
||||
|
||||
@@ -2671,8 +2671,11 @@ void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 button) {
|
||||
gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]]);
|
||||
|
||||
// Special case to only empty half of a Lon Lon Milk Bottle
|
||||
if ((gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] == ITEM_MILK_BOTTLE) &&
|
||||
(item == ITEM_BOTTLE)) {
|
||||
if (GameInteractor_Should(
|
||||
VB_EMPTY_BOTTLE_TO_HALF_MILK,
|
||||
(gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] == ITEM_MILK_BOTTLE) &&
|
||||
(item == ITEM_BOTTLE),
|
||||
button, item)) {
|
||||
item = ITEM_MILK_HALF;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user