Severed-Chains icon indicating copy to clipboard operation
Severed-Chains copied to clipboard

Open Party Behaviours

Open Ink230 opened this issue 6 months ago • 9 comments

Problem

What do we do with retail forced party size limits and party specific character combinations with the new game play flows from Icarus's nodart fixes.

Solution 1

Idea

  • Add a Party Behaviour setting
    • Retail
    • Story
    • Open (maybe call it Unlocked)
  • Remove Unlock Party setting in menus
  • Add a Character Visibility setting
    • Retail
    • Story Unlocked
    • All Unlocked

Design

Character Select Popup The Character Select screen would pop-up when the game makes silent party changes for Story and Open settings. The cases for this not being done in retail is it would have been redundant or it is for story reasons. Other times, a Character Select menu does appear.

Most likely Retail would not need this Character Select menu to pop-up and retains vanilla experience (not seeing a pop-up on silent party changes).

Character Select Menu The Character Select menu would need to be reworked to handle the limitations (or no limitations) forced on by the Open Party Behaviour setting.

Open Party Behaviour Party Variables

  • Which characters are active in the bench
  • Which characters are selectable in the bench
  • Which characters are active in the frontline
  • Which characters are selectable in the frontline
  • Party size limit

Retail, Story and Open would have their own constraints on these Party Variables and affect how the pop-up menu would behave. Additional party behaviours can be added as needed to each option setting.

Retail considerations are still needed as retail does prompt the Character Select menu for non-silent party changes.

Open Party Behaviour Option Settings

  • Retail
    • Should be 1:1 with retail behaviour
    • Only retail story characters available
    • Only retail story party size limits at specific retail times
  • Story
    • Permits one to select any characters that are in the bench (or are active)
      • Ignores any retail restrictions for specific characters
    • Party size limits are still respected to retail (ex: Kongol I, 2 character limit)
  • Open
    • Permits one to select any characters that are in the bench (or are active)
    • Permits any party size (1 to 3)
      • Let mods override this setting to permit 1 to n active characters
      • Can future prepare the 1 to n check by having the default set to 3 as an eNUM or CONFIG option

Character Visibility in the Bench

  • Retail -> Visibility follows retail
  • Story Unlocked -> Once a character is unlocked, you have the character unlocked for the rest of the game (game can't hide it)
  • All Unlocked -> All characters are unlocked at all times

For instance, if someone wants to use Meru the whole time w/o relying on mods, they would need to see Meru as visible in the bench at all times. Further, with Shana, if you want to use Shana during the White Dragoon arc, you'd need to make her visible again. Same for the replaced characters Lavitz/Shana.

This also lets mods 'unlock a character' at various times and can be sure with the 'Story Unlocked' setting, that the game will not hide them, and hiding them will be up to the mod to ?override?.

Character Select UI Note, that if we permit all characters for the Character Visibility setting Story Unlocked or All Unlocked the menu UI can not fit all characters. We can redesign the character portraits to be smaller to fit while retaining the same info.

We could also support 2 versions of the screen so that Retail still displays the retail screen, but if someone is using a non-Retail Character Visibility or Character Select setting, then the non-retail but still LoD-esque character portraits will be displayed instead.

Party Size Limitations The game currently restricts party size by only showing you that number of active/visible characters. So if you can only have 2 characters, the game only shows 2 characters to you in the bench/party.

With an open party, or any combination of Character Visibility, you will be able to override these limits by just selecting extra characters to fill the remaining slots.

We can add the 'Can't Select' text to the Slots that are restricted but we will need some hardcoded checks for Retail or Story settings.

Party Size Slot #s Do we want to accomodate handling Slots 1 and Slots 3 being permitted, but once you select those 2 and have a party size limit of 2, that the Slot 2 renders 'Can't Select'.

There may be some encounter AI to consider when selecting which slots to place characters in when there are party size limits but all slots are open.

Alternatively, we keep the slots restricted from backwards order at all times (matches retail). No idea this impact on mods.

Remove Unlock Party setting

  • Story or Open permit the same functionality while also not leaving the game open to crashes / unexpected behaviour
  • Could be retained in the debugger for fringe Retail mode in Open Party Behaviour in the debugger or config file
    • Would have to be a last check override in specific places
  • Don't see how retaining the setting in menus would be useful

Mods I think all of this lends to an easy way to add modding events for party behaviours and doesn't create any limitations for modders.

Work Items

  • Script work
    • Permit a game action (opening a menu) from a script or when a specific script is executed or script callbacks to Java land
    • Permit the game action side-effects to override and/or influence the specific script data in use
  • Implement the Party Check
    • Find where in the scripts/encounters/submaps the Character Select screen needs to pop up (where the game does it silently)
    • Hook this into the Script work above
    • Add functionality/callback
  • Implement the functionality/callback
    • Specifically handle Character Select menu popups (other menu pop-ups, other non-menu interrupts out of scope?)
    • Handle the implementation details of pushing the Character Select to the stack and tying up the side-effects
      • Side-effects handled directly in the menu, with the script then parsing from the target side-effect destination?
    • Logic handling for the 3 option settings Retail, Story and Open as the user uses the menu's functionality
  • Test

Solution 2

Pending ideas from others.

Ink230 avatar Aug 12 '24 18:08 Ink230