HarbourMasters / HarbourMasters/Shipwright
[Feature Request] Assign ocarina songs to C-Buttons and the D-pad
- Dominant language
- C
- Stars
- 5.4k
- Forks
- 837
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 72
Description
### The idea
Let a learned ocarina song be assigned to a C-Button or a D-pad direction from the Quest screen, exactly the way an item is assigned from the Select Item screen or a tunic from the Equipment screen. Pressing that button plays the song: the warp prompt for a warp song, the wipe and its effect for the rest.
Where the pause-menu shortcut in #6951 answers "I can't remember the notes", this answers "I know exactly which song I want and I don't want to open a menu for it". They complement each other rather than compete - there are three C-Buttons, seven with **Equip Items on Dpad**, against twelve songs, so assignment can never replace the menu.
### How it behaves
- Quest screen, cursor on a song you know, press C-Left/C-Down/C-Right (or a D-pad direction with **Equip Items on Dpad** on). The note flies to the button like an item icon does.
- The button shows the song's note in the colour the Quest screen uses.
- A song you have not learned refuses with the same error sound an empty item slot gives.
- The button greys out and does nothing wherever the Ocarina itself would: the scene restrictions, no Ocarina in the inventory, swimming, on Epona, mid-air.
- Assignments live in `equips.buttonItems`, so they survive scene changes, age changes and saving, and the existing **Allow unequipping Items** enhancement clears them.
### Screenshots
From the branch, running. Apologies for the French UI - that is how I play.
The Quest screen with the cursor on a song. The prompt is the Select Item screen's "to equip" one, and the C-Buttons stay lit instead of greying out:

Once assigned, the button carries the song's coloured note - the Song of Time on C-Left, and Bolero of Fire on D-Up:


Pressing it plays the song for real - here Bolero of Fire straight from D-Up, warp prompt and all:

### Status
I have this working on a branch: https://github.com/bassdr/Shipwright/tree/enhancement/assignable-songs - **please don't start on it**, it is written and tested, not a wish.
It builds on the playback engine in #6951 (playing a song's real effect without the ocarina minigame), so it is stacked on that branch rather than on develop, and I will open the PR once #6951 lands. Filing this as an issue so the feature can be discussed on its own merits, and so the PR has something to close.
A possible follow-up, not part of the branch: while the Ocarina is out, a modifier could reach every song rather than only the assigned ones - see the sibling issue on modifier layers.
Contributor guide
No contributing guide indexed for this repository
Research direction
The work is already implemented on the enhancement/assignable-songs branch; do not start a separate implementation. For review or follow-up, begin with #6951, then inspect the Quest-screen assignment flow and equips.buttonItems persistence, including the Allow unequipping Items behavior. Done is the existing branch landing after #6951 with its stated input, restriction, save, and playback behavior verified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 15/100