Skip to content

[Enhancement] Port Faster Empty Bottle and Skip Bottle Pickup Message from SoH#1531

Open
Patrick12115 wants to merge 2 commits intoHarbourMasters:developfrom
Patrick12115:Faster-Bottles
Open

[Enhancement] Port Faster Empty Bottle and Skip Bottle Pickup Message from SoH#1531
Patrick12115 wants to merge 2 commits intoHarbourMasters:developfrom
Patrick12115:Faster-Bottles

Conversation

@Patrick12115
Copy link
Copy Markdown
Contributor

@Patrick12115 Patrick12115 commented Feb 1, 2026

Ported both from SoH, with slight differences in the skip pickup message due to difference in how the cutscene works in 2Ship.

Build Artifacts

Copy link
Copy Markdown
Contributor

@Eblo Eblo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Miscellaneous items:

  • The faster emptying enhancement does not seem to work for drinkable items or fairies. Indeed, the point in code handled only deals with bottle items defined in D_8085D80C, which does not include those things
  • Skipping the message for Deku Princess seems to incidentally also skip the NPC dialog with the invisible actor that normally occurs. This does not seem to break anything, but it seemed worth noting down

Comment on lines +18269 to +18276
if (!CVarGetInteger("gEnhancements.Timesavers.SkipBottlePickupMessages", 0)) {
this->stateFlags1 |= PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000;
}
interactRangeActor->parent = &this->actor;
Player_UpdateBottleHeld(play, this, entry->itemId, entry->itemAction);
Player_Anim_PlayOnceAdjusted(play, this, sp24->unk_4);
if (!CVarGetInteger("gEnhancements.Timesavers.SkipBottlePickupMessages", 0)) {
Player_Anim_PlayOnceAdjusted(play, this, sp24->unk_4);
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could these inline CVars be converted to VBs instead?

Comment on lines +18302 to +18309
if (!CVarGetInteger("gEnhancements.Timesavers.SkipBottlePickupMessages", 0)) {
this->stateFlags1 |= PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000;
}
interactRangeActor->parent = &this->actor;
Player_UpdateBottleHeld(play, this, entry->itemId, entry->itemAction);
Player_Anim_PlayOnceAdjusted(play, this, sp24->unk_4);
if (!CVarGetInteger("gEnhancements.Timesavers.SkipBottlePickupMessages", 0)) {
Player_Anim_PlayOnceAdjusted(play, this, sp24->unk_4);
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.


if (PlayerAnimation_Update(play, &this->skelAnime)) {
if (this->av1.actionVar1 != 0) {
if (CVarGetInteger("gEnhancements.Timesavers.SkipBottlePickupMessages", 0)) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This introduces new behavior and should ideally be wrapped in a GameInteractor call, with the new behavior in an enhancement file. You might have to wrap the entire if (this->av1.actionVar1 != 0) { ... else ... block with the call to achieve the desired code flow.

@garrettjoecox garrettjoecox mentioned this pull request Feb 27, 2026
50 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants