Key-based party roster, show party member names in battle UI

- party.jsonc's "members" is now a key/value object (e.g. "hero",
  "companion") instead of an array - partyInit seeds party_t.keys
  alongside members, and partyGetMemberIndexByKey/partyGetMemberKey do the
  lookups. Cutscene items (PARTY_ADD_MEMBER/PARTY_REMOVE_MEMBER/
  PARTY_HEAL_MEMBER) now take a "key" JSON field, resolved to a roster
  index at load time, instead of a raw index.
- Battle UI shows who's acting: uibattlemenu.c draws the current fighter's
  party key above the action menu, and uibattlehud.c draws each ally
  fighter's key as an extra line above their HP/MP.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
2026-09-21 22:38:04 -05:00
co-authored by Claude Sonnet 5
parent 7a9a2b9832
commit 8dbd3e1dd2
13 changed files with 146 additions and 52 deletions
+7 -4
View File
@@ -1,13 +1,16 @@
{
// Starting party roster, loaded by partyInit into a fresh save slot.
"members": [
{
// Each key is a stable identifier cutscene content can reference
// directly (see PARTY_ADD_MEMBER/PARTY_REMOVE_MEMBER/PARTY_HEAL_MEMBER's
// "key" field) instead of a fragile positional index.
"members": {
"hero": {
"attack": 10, "defense": 5, "magic": 0, "speed": 10, "luck": 0,
"healthMax": 30, "mpMax": 10
},
{
"companion": {
"attack": 8, "defense": 6, "magic": 4, "speed": 8, "luck": 1,
"healthMax": 25, "mpMax": 15
}
]
}
}